@nocobase/app-plugin-agents 0.1.0-beta.1 → 0.1.0-beta.10

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 (594) hide show
  1. package/CHANGELOG.md +355 -0
  2. package/README.md +107 -67
  3. package/dist/client/api/client.d.ts +25 -17
  4. package/dist/client/api/client.d.ts.map +1 -1
  5. package/dist/client/api/client.js +29 -27
  6. package/dist/client/api/client.js.map +1 -1
  7. package/dist/client/api/keys.d.ts +1 -1
  8. package/dist/client/api/keys.d.ts.map +1 -1
  9. package/dist/client/api/keys.js +1 -1
  10. package/dist/client/api/keys.js.map +1 -1
  11. package/dist/client/chat/api.d.ts +2 -7
  12. package/dist/client/chat/api.d.ts.map +1 -1
  13. package/dist/client/chat/api.js +0 -7
  14. package/dist/client/chat/api.js.map +1 -1
  15. package/dist/client/chat/consultation-identity.d.ts +7 -0
  16. package/dist/client/chat/consultation-identity.d.ts.map +1 -0
  17. package/dist/client/chat/consultation-identity.js +39 -0
  18. package/dist/client/chat/consultation-identity.js.map +1 -0
  19. package/dist/client/chat/message-model.d.ts +4 -2
  20. package/dist/client/chat/message-model.d.ts.map +1 -1
  21. package/dist/client/chat/message-model.js +28 -3
  22. package/dist/client/chat/message-model.js.map +1 -1
  23. package/dist/client/chat/use-chat.d.ts +2 -10
  24. package/dist/client/chat/use-chat.d.ts.map +1 -1
  25. package/dist/client/chat/use-chat.js +3 -10
  26. package/dist/client/chat/use-chat.js.map +1 -1
  27. package/dist/client/chat.d.ts +4 -1
  28. package/dist/client/chat.d.ts.map +1 -1
  29. package/dist/client/chat.js +3 -0
  30. package/dist/client/chat.js.map +1 -1
  31. package/dist/client/components/agent-picker.d.ts +6 -23
  32. package/dist/client/components/agent-picker.d.ts.map +1 -1
  33. package/dist/client/components/agent-picker.js +19 -39
  34. package/dist/client/components/agent-picker.js.map +1 -1
  35. package/dist/client/components/variables/variable-dialogs.d.ts +6 -1
  36. package/dist/client/components/variables/variable-dialogs.d.ts.map +1 -1
  37. package/dist/client/components/variables/variable-dialogs.js +27 -11
  38. package/dist/client/components/variables/variable-dialogs.js.map +1 -1
  39. package/dist/client/components/variables/variables-panel.d.ts.map +1 -1
  40. package/dist/client/components/variables/variables-panel.js +9 -2
  41. package/dist/client/components/variables/variables-panel.js.map +1 -1
  42. package/dist/client/hooks/use-agent-picker-labels.d.ts.map +1 -1
  43. package/dist/client/hooks/use-agent-picker-labels.js +3 -12
  44. package/dist/client/hooks/use-agent-picker-labels.js.map +1 -1
  45. package/dist/client/kit.d.ts +9 -12
  46. package/dist/client/kit.d.ts.map +1 -1
  47. package/dist/client/kit.js +12 -14
  48. package/dist/client/kit.js.map +1 -1
  49. package/dist/client/lib/agents.d.ts +5 -13
  50. package/dist/client/lib/agents.d.ts.map +1 -1
  51. package/dist/client/lib/agents.js +17 -32
  52. package/dist/client/lib/agents.js.map +1 -1
  53. package/dist/client/lib/install.js +1 -1
  54. package/dist/client/locales/chat.en-US.d.ts +9 -22
  55. package/dist/client/locales/chat.en-US.d.ts.map +1 -1
  56. package/dist/client/locales/chat.en-US.js +13 -25
  57. package/dist/client/locales/chat.en-US.js.map +1 -1
  58. package/dist/client/locales/chat.zh-CN.d.ts.map +1 -1
  59. package/dist/client/locales/chat.zh-CN.js +10 -22
  60. package/dist/client/locales/chat.zh-CN.js.map +1 -1
  61. package/dist/client/locales/en-US.d.ts +100 -219
  62. package/dist/client/locales/en-US.d.ts.map +1 -1
  63. package/dist/client/locales/en-US.js +105 -219
  64. package/dist/client/locales/en-US.js.map +1 -1
  65. package/dist/client/locales/runWait.en-US.d.ts +38 -0
  66. package/dist/client/locales/runWait.en-US.d.ts.map +1 -0
  67. package/dist/client/locales/runWait.en-US.js +37 -0
  68. package/dist/client/locales/runWait.en-US.js.map +1 -0
  69. package/dist/client/locales/runWait.zh-CN.d.ts +5 -0
  70. package/dist/client/locales/runWait.zh-CN.d.ts.map +1 -0
  71. package/dist/client/locales/runWait.zh-CN.js +32 -0
  72. package/dist/client/locales/runWait.zh-CN.js.map +1 -0
  73. package/dist/client/locales/runtimes.en-US.d.ts +55 -0
  74. package/dist/client/locales/runtimes.en-US.d.ts.map +1 -1
  75. package/dist/client/locales/runtimes.en-US.js +58 -3
  76. package/dist/client/locales/runtimes.en-US.js.map +1 -1
  77. package/dist/client/locales/runtimes.zh-CN.d.ts.map +1 -1
  78. package/dist/client/locales/runtimes.zh-CN.js +58 -3
  79. package/dist/client/locales/runtimes.zh-CN.js.map +1 -1
  80. package/dist/client/locales/zh-CN.d.ts.map +1 -1
  81. package/dist/client/locales/zh-CN.js +107 -221
  82. package/dist/client/locales/zh-CN.js.map +1 -1
  83. package/dist/client/online/services.d.ts.map +1 -1
  84. package/dist/client/online/services.js +5 -6
  85. package/dist/client/online/services.js.map +1 -1
  86. package/dist/client/pages/agents/agent-dialog.d.ts +9 -0
  87. package/dist/client/pages/agents/agent-dialog.d.ts.map +1 -0
  88. package/dist/client/pages/agents/agent-dialog.js +106 -0
  89. package/dist/client/pages/agents/agent-dialog.js.map +1 -0
  90. package/dist/client/pages/agents/agent-state.d.ts +11 -0
  91. package/dist/client/pages/agents/agent-state.d.ts.map +1 -0
  92. package/dist/client/pages/agents/agent-state.js +28 -0
  93. package/dist/client/pages/agents/agent-state.js.map +1 -0
  94. package/dist/client/pages/agents/index.d.ts +1 -1
  95. package/dist/client/pages/agents/index.d.ts.map +1 -1
  96. package/dist/client/pages/agents/index.js +6 -100
  97. package/dist/client/pages/agents/index.js.map +1 -1
  98. package/dist/client/pages/agents/runner-agents.d.ts +3 -0
  99. package/dist/client/pages/agents/runner-agents.d.ts.map +1 -0
  100. package/dist/client/pages/agents/runner-agents.js +172 -0
  101. package/dist/client/pages/agents/runner-agents.js.map +1 -0
  102. package/dist/client/pages/runtimes/connect.js +1 -1
  103. package/dist/client/pages/runtimes/connect.js.map +1 -1
  104. package/dist/client/pages/runtimes/index.d.ts.map +1 -1
  105. package/dist/client/pages/runtimes/index.js +3 -2
  106. package/dist/client/pages/runtimes/index.js.map +1 -1
  107. package/dist/client/pages/runtimes/runner-cells.d.ts +1 -1
  108. package/dist/client/pages/runtimes/runner-cells.d.ts.map +1 -1
  109. package/dist/client/pages/runtimes/runner-cells.js +4 -1
  110. package/dist/client/pages/runtimes/runner-cells.js.map +1 -1
  111. package/dist/client/pages/runtimes/runner-sheet.d.ts.map +1 -1
  112. package/dist/client/pages/runtimes/runner-sheet.js +12 -3
  113. package/dist/client/pages/runtimes/runner-sheet.js.map +1 -1
  114. package/dist/client/pages/runtimes/workspace-diagnostics.d.ts +9 -0
  115. package/dist/client/pages/runtimes/workspace-diagnostics.d.ts.map +1 -0
  116. package/dist/client/pages/runtimes/workspace-diagnostics.js +70 -0
  117. package/dist/client/pages/runtimes/workspace-diagnostics.js.map +1 -0
  118. package/dist/client/pages/usage/index.js +2 -2
  119. package/dist/client/pages/usage/index.js.map +1 -1
  120. package/dist/client/profile/default-agent.d.ts.map +1 -1
  121. package/dist/client/profile/default-agent.js +2 -4
  122. package/dist/client/profile/default-agent.js.map +1 -1
  123. package/dist/client/routes.d.ts +1 -1
  124. package/dist/client/routes.d.ts.map +1 -1
  125. package/dist/client/routes.js +1 -13
  126. package/dist/client/routes.js.map +1 -1
  127. package/dist/client/runs/format-wait.d.ts +21 -0
  128. package/dist/client/runs/format-wait.d.ts.map +1 -0
  129. package/dist/client/runs/format-wait.js +90 -0
  130. package/dist/client/runs/format-wait.js.map +1 -0
  131. package/dist/client/runs/subject-runs.d.ts +5 -0
  132. package/dist/client/runs/subject-runs.d.ts.map +1 -1
  133. package/dist/client/runs/subject-runs.js +13 -7
  134. package/dist/client/runs/subject-runs.js.map +1 -1
  135. package/dist/client/runs.d.ts +3 -1
  136. package/dist/client/runs.d.ts.map +1 -1
  137. package/dist/client/runs.js +3 -1
  138. package/dist/client/runs.js.map +1 -1
  139. package/dist/database/migrations/.manifest.json +48 -0
  140. package/dist/database/migrations/202610090001_ag_add_team_runner_variables.d.ts +9 -0
  141. package/dist/database/migrations/202610090001_ag_add_team_runner_variables.d.ts.map +1 -0
  142. package/dist/database/migrations/202610090001_ag_add_team_runner_variables.js +28 -0
  143. package/dist/database/migrations/202610090001_ag_add_team_runner_variables.js.map +1 -0
  144. package/dist/database/migrations/202610090002_ag_create_run_requests.d.ts +10 -0
  145. package/dist/database/migrations/202610090002_ag_create_run_requests.d.ts.map +1 -0
  146. package/dist/database/migrations/202610090002_ag_create_run_requests.js +105 -0
  147. package/dist/database/migrations/202610090002_ag_create_run_requests.js.map +1 -0
  148. package/dist/database/migrations/202610090003_ag_add_execution_history.d.ts +4 -0
  149. package/dist/database/migrations/202610090003_ag_add_execution_history.d.ts.map +1 -0
  150. package/dist/database/migrations/202610090003_ag_add_execution_history.js +17 -0
  151. package/dist/database/migrations/202610090003_ag_add_execution_history.js.map +1 -0
  152. package/dist/database/migrations/202610090004_ag_add_runner_workspace_usage.d.ts +9 -0
  153. package/dist/database/migrations/202610090004_ag_add_runner_workspace_usage.d.ts.map +1 -0
  154. package/dist/database/migrations/202610090004_ag_add_runner_workspace_usage.js +22 -0
  155. package/dist/database/migrations/202610090004_ag_add_runner_workspace_usage.js.map +1 -0
  156. package/dist/database/migrations/202610090005_ag_add_runner_variables.d.ts +10 -0
  157. package/dist/database/migrations/202610090005_ag_add_runner_variables.d.ts.map +1 -0
  158. package/dist/database/migrations/202610090005_ag_add_runner_variables.js +36 -0
  159. package/dist/database/migrations/202610090005_ag_add_runner_variables.js.map +1 -0
  160. package/dist/database/migrations/202610100001_ag_index_run_event_types.d.ts +4 -0
  161. package/dist/database/migrations/202610100001_ag_index_run_event_types.d.ts.map +1 -0
  162. package/dist/database/migrations/202610100001_ag_index_run_event_types.js +17 -0
  163. package/dist/database/migrations/202610100001_ag_index_run_event_types.js.map +1 -0
  164. package/dist/database/migrations/202610100002_ag_add_run_git_credentials.d.ts +9 -0
  165. package/dist/database/migrations/202610100002_ag_add_run_git_credentials.d.ts.map +1 -0
  166. package/dist/database/migrations/202610100002_ag_add_run_git_credentials.js +30 -0
  167. package/dist/database/migrations/202610100002_ag_add_run_git_credentials.js.map +1 -0
  168. package/dist/database/migrations/202610110001_ag_add_fresh_sessions.d.ts +4 -0
  169. package/dist/database/migrations/202610110001_ag_add_fresh_sessions.d.ts.map +1 -0
  170. package/dist/database/migrations/202610110001_ag_add_fresh_sessions.js +23 -0
  171. package/dist/database/migrations/202610110001_ag_add_fresh_sessions.js.map +1 -0
  172. package/dist/database/migrations/202610120001_ag_index_run_retries.d.ts +4 -0
  173. package/dist/database/migrations/202610120001_ag_index_run_retries.d.ts.map +1 -0
  174. package/dist/database/migrations/202610120001_ag_index_run_retries.js +17 -0
  175. package/dist/database/migrations/202610120001_ag_index_run_retries.js.map +1 -0
  176. package/dist/database/migrations/202610120002_ag_add_queue_entered_at.d.ts +4 -0
  177. package/dist/database/migrations/202610120002_ag_add_queue_entered_at.d.ts.map +1 -0
  178. package/dist/database/migrations/202610120002_ag_add_queue_entered_at.js +50 -0
  179. package/dist/database/migrations/202610120002_ag_add_queue_entered_at.js.map +1 -0
  180. package/dist/database/migrations/202610240020_ag_runner_agents.d.ts +4 -0
  181. package/dist/database/migrations/202610240020_ag_runner_agents.d.ts.map +1 -0
  182. package/dist/database/migrations/202610240020_ag_runner_agents.js +115 -0
  183. package/dist/database/migrations/202610240020_ag_runner_agents.js.map +1 -0
  184. package/dist/database/migrations/202610240040_ag_discovery_preferences.d.ts +4 -0
  185. package/dist/database/migrations/202610240040_ag_discovery_preferences.d.ts.map +1 -0
  186. package/dist/database/migrations/202610240040_ag_discovery_preferences.js +18 -0
  187. package/dist/database/migrations/202610240040_ag_discovery_preferences.js.map +1 -0
  188. package/dist/package.json +8 -10
  189. package/dist/server/cli/run-credential.js +1 -1
  190. package/dist/server/composition.d.ts +39 -37
  191. package/dist/server/composition.d.ts.map +1 -1
  192. package/dist/server/composition.js +53 -65
  193. package/dist/server/composition.js.map +1 -1
  194. package/dist/server/core/agents/agent.service.d.ts +51 -43
  195. package/dist/server/core/agents/agent.service.d.ts.map +1 -1
  196. package/dist/server/core/agents/agent.service.js +342 -317
  197. package/dist/server/core/agents/agent.service.js.map +1 -1
  198. package/dist/server/core/agents/agent.store.d.ts +24 -12
  199. package/dist/server/core/agents/agent.store.d.ts.map +1 -1
  200. package/dist/server/core/agents/agent.store.js +65 -64
  201. package/dist/server/core/agents/agent.store.js.map +1 -1
  202. package/dist/server/core/agents/agent.views.d.ts +29 -0
  203. package/dist/server/core/agents/agent.views.d.ts.map +1 -0
  204. package/dist/server/core/agents/agent.views.js +86 -0
  205. package/dist/server/core/agents/agent.views.js.map +1 -0
  206. package/dist/server/core/agents/discovery.d.ts +12 -0
  207. package/dist/server/core/agents/discovery.d.ts.map +1 -0
  208. package/dist/server/core/agents/discovery.js +39 -0
  209. package/dist/server/core/agents/discovery.js.map +1 -0
  210. package/dist/server/core/agents/index.d.ts +2 -1
  211. package/dist/server/core/agents/index.d.ts.map +1 -1
  212. package/dist/server/core/agents/index.js +2 -1
  213. package/dist/server/core/agents/index.js.map +1 -1
  214. package/dist/server/core/brief/brief.js +1 -1
  215. package/dist/server/core/brief/brief.js.map +1 -1
  216. package/dist/server/core/callers/index.d.ts +1 -1
  217. package/dist/server/core/conversations/availability.d.ts +11 -10
  218. package/dist/server/core/conversations/availability.d.ts.map +1 -1
  219. package/dist/server/core/conversations/availability.js +14 -32
  220. package/dist/server/core/conversations/availability.js.map +1 -1
  221. package/dist/server/core/conversations/chat-settings.d.ts.map +1 -1
  222. package/dist/server/core/conversations/chat-settings.js +5 -3
  223. package/dist/server/core/conversations/chat-settings.js.map +1 -1
  224. package/dist/server/core/conversations/conversation.service.d.ts +3 -5
  225. package/dist/server/core/conversations/conversation.service.d.ts.map +1 -1
  226. package/dist/server/core/conversations/conversation.service.js +161 -221
  227. package/dist/server/core/conversations/conversation.service.js.map +1 -1
  228. package/dist/server/core/conversations/ports.d.ts +3 -17
  229. package/dist/server/core/conversations/ports.d.ts.map +1 -1
  230. package/dist/server/core/reports/report.service.d.ts.map +1 -1
  231. package/dist/server/core/reports/report.service.js +5 -2
  232. package/dist/server/core/reports/report.service.js.map +1 -1
  233. package/dist/server/core/runs/availability.d.ts +18 -7
  234. package/dist/server/core/runs/availability.d.ts.map +1 -1
  235. package/dist/server/core/runs/availability.js +35 -24
  236. package/dist/server/core/runs/availability.js.map +1 -1
  237. package/dist/server/core/runs/claim.d.ts +33 -65
  238. package/dist/server/core/runs/claim.d.ts.map +1 -1
  239. package/dist/server/core/runs/claim.js +566 -307
  240. package/dist/server/core/runs/claim.js.map +1 -1
  241. package/dist/server/core/runs/eligibility.d.ts +51 -0
  242. package/dist/server/core/runs/eligibility.d.ts.map +1 -0
  243. package/dist/server/core/runs/eligibility.js +44 -0
  244. package/dist/server/core/runs/eligibility.js.map +1 -0
  245. package/dist/server/core/runs/execution-view.d.ts +10 -0
  246. package/dist/server/core/runs/execution-view.d.ts.map +1 -0
  247. package/dist/server/core/runs/execution-view.js +25 -0
  248. package/dist/server/core/runs/execution-view.js.map +1 -0
  249. package/dist/server/core/runs/execution.d.ts +13 -0
  250. package/dist/server/core/runs/execution.d.ts.map +1 -0
  251. package/dist/server/core/runs/execution.js +85 -0
  252. package/dist/server/core/runs/execution.js.map +1 -0
  253. package/dist/server/core/runs/extensions.d.ts +59 -4
  254. package/dist/server/core/runs/extensions.d.ts.map +1 -1
  255. package/dist/server/core/runs/extensions.js +45 -9
  256. package/dist/server/core/runs/extensions.js.map +1 -1
  257. package/dist/server/core/runs/git-credentials.d.ts +43 -0
  258. package/dist/server/core/runs/git-credentials.d.ts.map +1 -0
  259. package/dist/server/core/runs/git-credentials.js +129 -0
  260. package/dist/server/core/runs/git-credentials.js.map +1 -0
  261. package/dist/server/core/runs/identity.d.ts +6 -0
  262. package/dist/server/core/runs/identity.d.ts.map +1 -0
  263. package/dist/server/core/runs/identity.js +49 -0
  264. package/dist/server/core/runs/identity.js.map +1 -0
  265. package/dist/server/core/runs/index.d.ts +9 -5
  266. package/dist/server/core/runs/index.d.ts.map +1 -1
  267. package/dist/server/core/runs/index.js +9 -5
  268. package/dist/server/core/runs/index.js.map +1 -1
  269. package/dist/server/core/runs/input-gate.d.ts +34 -0
  270. package/dist/server/core/runs/input-gate.d.ts.map +1 -0
  271. package/dist/server/core/runs/input-gate.js +54 -0
  272. package/dist/server/core/runs/input-gate.js.map +1 -0
  273. package/dist/server/core/runs/lifecycle.d.ts +9 -19
  274. package/dist/server/core/runs/lifecycle.d.ts.map +1 -1
  275. package/dist/server/core/runs/lifecycle.js +76 -34
  276. package/dist/server/core/runs/lifecycle.js.map +1 -1
  277. package/dist/server/core/runs/policy.d.ts +8 -0
  278. package/dist/server/core/runs/policy.d.ts.map +1 -1
  279. package/dist/server/core/runs/policy.js +10 -0
  280. package/dist/server/core/runs/policy.js.map +1 -1
  281. package/dist/server/core/runs/ports.d.ts +84 -28
  282. package/dist/server/core/runs/ports.d.ts.map +1 -1
  283. package/dist/server/core/runs/ports.js +2 -13
  284. package/dist/server/core/runs/ports.js.map +1 -1
  285. package/dist/server/core/runs/preview.d.ts.map +1 -1
  286. package/dist/server/core/runs/preview.js +3 -3
  287. package/dist/server/core/runs/preview.js.map +1 -1
  288. package/dist/server/core/runs/run-requests.d.ts +220 -0
  289. package/dist/server/core/runs/run-requests.d.ts.map +1 -0
  290. package/dist/server/core/runs/run-requests.js +475 -0
  291. package/dist/server/core/runs/run-requests.js.map +1 -0
  292. package/dist/server/core/runs/run.service.d.ts +84 -11
  293. package/dist/server/core/runs/run.service.d.ts.map +1 -1
  294. package/dist/server/core/runs/run.service.js +433 -93
  295. package/dist/server/core/runs/run.service.js.map +1 -1
  296. package/dist/server/core/runs/run.store.d.ts +20 -3
  297. package/dist/server/core/runs/run.store.d.ts.map +1 -1
  298. package/dist/server/core/runs/run.store.js +49 -2
  299. package/dist/server/core/runs/run.store.js.map +1 -1
  300. package/dist/server/core/runs/runner-view.d.ts +6 -4
  301. package/dist/server/core/runs/runner-view.d.ts.map +1 -1
  302. package/dist/server/core/runs/runner-view.js +13 -11
  303. package/dist/server/core/runs/runner-view.js.map +1 -1
  304. package/dist/server/core/runs/selection.d.ts +13 -0
  305. package/dist/server/core/runs/selection.d.ts.map +1 -0
  306. package/dist/server/core/runs/selection.js +21 -0
  307. package/dist/server/core/runs/selection.js.map +1 -0
  308. package/dist/server/core/runs/sweeper.d.ts.map +1 -1
  309. package/dist/server/core/runs/sweeper.js +54 -10
  310. package/dist/server/core/runs/sweeper.js.map +1 -1
  311. package/dist/server/core/runs/transitions.d.ts +1 -1
  312. package/dist/server/core/runs/transitions.d.ts.map +1 -1
  313. package/dist/server/core/runs/transitions.js +69 -5
  314. package/dist/server/core/runs/transitions.js.map +1 -1
  315. package/dist/server/core/runs/workload.d.ts +3 -3
  316. package/dist/server/core/runs/workload.d.ts.map +1 -1
  317. package/dist/server/core/runs/workload.js +154 -45
  318. package/dist/server/core/runs/workload.js.map +1 -1
  319. package/dist/server/core/variables/index.d.ts +1 -1
  320. package/dist/server/core/variables/index.d.ts.map +1 -1
  321. package/dist/server/core/variables/index.js +1 -1
  322. package/dist/server/core/variables/index.js.map +1 -1
  323. package/dist/server/core/variables/variable.service.d.ts +38 -6
  324. package/dist/server/core/variables/variable.service.d.ts.map +1 -1
  325. package/dist/server/core/variables/variable.service.js +201 -30
  326. package/dist/server/core/variables/variable.service.js.map +1 -1
  327. package/dist/server/distribution/dist.service.d.ts +27 -5
  328. package/dist/server/distribution/dist.service.d.ts.map +1 -1
  329. package/dist/server/distribution/dist.service.js +41 -5
  330. package/dist/server/distribution/dist.service.js.map +1 -1
  331. package/dist/server/distribution/download-tokens.d.ts +1 -1
  332. package/dist/server/distribution/download-tokens.d.ts.map +1 -1
  333. package/dist/server/distribution/download-tokens.js +7 -4
  334. package/dist/server/distribution/download-tokens.js.map +1 -1
  335. package/dist/server/distribution/index.d.ts +11 -3
  336. package/dist/server/distribution/index.d.ts.map +1 -1
  337. package/dist/server/distribution/index.js +31 -8
  338. package/dist/server/distribution/index.js.map +1 -1
  339. package/dist/server/jobs/index.d.ts +1 -1
  340. package/dist/server/jobs/index.d.ts.map +1 -1
  341. package/dist/server/jobs/index.js +1 -1
  342. package/dist/server/jobs/index.js.map +1 -1
  343. package/dist/server/jobs/job.service.d.ts +3 -1
  344. package/dist/server/jobs/job.service.d.ts.map +1 -1
  345. package/dist/server/jobs/job.service.js +11 -3
  346. package/dist/server/jobs/job.service.js.map +1 -1
  347. package/dist/server/jobs/spec.d.ts +4 -0
  348. package/dist/server/jobs/spec.d.ts.map +1 -1
  349. package/dist/server/jobs/spec.js +6 -0
  350. package/dist/server/jobs/spec.js.map +1 -1
  351. package/dist/server/kernel/errors.d.ts +1 -1
  352. package/dist/server/kernel/errors.d.ts.map +1 -1
  353. package/dist/server/kernel/errors.js +1 -0
  354. package/dist/server/kernel/errors.js.map +1 -1
  355. package/dist/server/kernel/events.d.ts +34 -9
  356. package/dist/server/kernel/events.d.ts.map +1 -1
  357. package/dist/server/kernel/events.js.map +1 -1
  358. package/dist/server/kernel/redaction.d.ts +2 -0
  359. package/dist/server/kernel/redaction.d.ts.map +1 -1
  360. package/dist/server/kernel/redaction.js +17 -0
  361. package/dist/server/kernel/redaction.js.map +1 -1
  362. package/dist/server/online/index.d.ts +0 -5
  363. package/dist/server/online/index.d.ts.map +1 -1
  364. package/dist/server/online/index.js +0 -5
  365. package/dist/server/online/index.js.map +1 -1
  366. package/dist/server/online/routes.d.ts.map +1 -1
  367. package/dist/server/online/routes.js +6 -35
  368. package/dist/server/online/routes.js.map +1 -1
  369. package/dist/server/providers/agents.d.ts +4 -25
  370. package/dist/server/providers/agents.d.ts.map +1 -1
  371. package/dist/server/providers/agents.js +8 -75
  372. package/dist/server/providers/agents.js.map +1 -1
  373. package/dist/server/routes/admin.d.ts.map +1 -1
  374. package/dist/server/routes/admin.js +140 -201
  375. package/dist/server/routes/admin.js.map +1 -1
  376. package/dist/server/routes/chat.d.ts.map +1 -1
  377. package/dist/server/routes/chat.js +12 -70
  378. package/dist/server/routes/chat.js.map +1 -1
  379. package/dist/server/routes/index.d.ts.map +1 -1
  380. package/dist/server/routes/index.js +11 -1
  381. package/dist/server/routes/index.js.map +1 -1
  382. package/dist/server/routes/roster.d.ts.map +1 -1
  383. package/dist/server/routes/roster.js +6 -21
  384. package/dist/server/routes/roster.js.map +1 -1
  385. package/dist/server/routes/run-requests.d.ts +6 -0
  386. package/dist/server/routes/run-requests.d.ts.map +1 -0
  387. package/dist/server/routes/run-requests.js +216 -0
  388. package/dist/server/routes/run-requests.js.map +1 -0
  389. package/dist/server/routes/runners/admin.d.ts +9 -1
  390. package/dist/server/routes/runners/admin.d.ts.map +1 -1
  391. package/dist/server/routes/runners/admin.js +62 -24
  392. package/dist/server/routes/runners/admin.js.map +1 -1
  393. package/dist/server/routes/runners/dist.d.ts +5 -1
  394. package/dist/server/routes/runners/dist.d.ts.map +1 -1
  395. package/dist/server/routes/runners/dist.js +36 -9
  396. package/dist/server/routes/runners/dist.js.map +1 -1
  397. package/dist/server/routes/runners/install.d.ts.map +1 -1
  398. package/dist/server/routes/runners/install.js +98 -15
  399. package/dist/server/routes/runners/install.js.map +1 -1
  400. package/dist/server/routes/runners/runner.d.ts.map +1 -1
  401. package/dist/server/routes/runners/runner.js +25 -7
  402. package/dist/server/routes/runners/runner.js.map +1 -1
  403. package/dist/server/routes/runners/runs.d.ts +1 -1
  404. package/dist/server/routes/runners/runs.d.ts.map +1 -1
  405. package/dist/server/routes/runners/runs.js +23 -3
  406. package/dist/server/routes/runners/runs.js.map +1 -1
  407. package/dist/server/routes/schemas.d.ts +37 -8
  408. package/dist/server/routes/schemas.d.ts.map +1 -1
  409. package/dist/server/routes/schemas.js +367 -82
  410. package/dist/server/routes/schemas.js.map +1 -1
  411. package/dist/server/runners/index.d.ts +1 -0
  412. package/dist/server/runners/index.d.ts.map +1 -1
  413. package/dist/server/runners/index.js +1 -0
  414. package/dist/server/runners/index.js.map +1 -1
  415. package/dist/server/runners/runner.service.d.ts +22 -8
  416. package/dist/server/runners/runner.service.d.ts.map +1 -1
  417. package/dist/server/runners/runner.service.js +112 -14
  418. package/dist/server/runners/runner.service.js.map +1 -1
  419. package/dist/server/runners/runner.store.d.ts +10 -1
  420. package/dist/server/runners/runner.store.d.ts.map +1 -1
  421. package/dist/server/runners/runner.store.js +117 -4
  422. package/dist/server/runners/runner.store.js.map +1 -1
  423. package/dist/server/runners/sweeper.d.ts +5 -0
  424. package/dist/server/runners/sweeper.d.ts.map +1 -1
  425. package/dist/server/runners/sweeper.js +4 -2
  426. package/dist/server/runners/sweeper.js.map +1 -1
  427. package/dist/server/runners/workspaces.d.ts +33 -0
  428. package/dist/server/runners/workspaces.d.ts.map +1 -0
  429. package/dist/server/runners/workspaces.js +248 -0
  430. package/dist/server/runners/workspaces.js.map +1 -0
  431. package/dist/server/testing.d.ts +0 -2
  432. package/dist/server/testing.d.ts.map +1 -1
  433. package/dist/server/testing.js +1 -4
  434. package/dist/server/testing.js.map +1 -1
  435. package/dist/server/tokens.d.ts +12 -9
  436. package/dist/server/tokens.d.ts.map +1 -1
  437. package/dist/server/tokens.js +6 -2
  438. package/dist/server/tokens.js.map +1 -1
  439. package/dist/shared/access.d.ts +2 -6
  440. package/dist/shared/access.d.ts.map +1 -1
  441. package/dist/shared/access.js +2 -6
  442. package/dist/shared/access.js.map +1 -1
  443. package/dist/shared/agents.d.ts +128 -165
  444. package/dist/shared/agents.d.ts.map +1 -1
  445. package/dist/shared/agents.js +46 -97
  446. package/dist/shared/agents.js.map +1 -1
  447. package/dist/shared/conversations.d.ts +43 -89
  448. package/dist/shared/conversations.d.ts.map +1 -1
  449. package/dist/shared/conversations.js +5 -24
  450. package/dist/shared/conversations.js.map +1 -1
  451. package/dist/shared/model-catalog.d.ts +48 -0
  452. package/dist/shared/model-catalog.d.ts.map +1 -0
  453. package/dist/shared/model-catalog.js +148 -0
  454. package/dist/shared/model-catalog.js.map +1 -0
  455. package/dist/shared/models.js +1 -1
  456. package/dist/shared/models.js.map +1 -1
  457. package/dist/shared/runners.d.ts +107 -17
  458. package/dist/shared/runners.d.ts.map +1 -1
  459. package/dist/shared/runners.js +49 -7
  460. package/dist/shared/runners.js.map +1 -1
  461. package/dist/shared/runs.d.ts +203 -1
  462. package/dist/shared/runs.d.ts.map +1 -1
  463. package/dist/shared/runs.js +24 -0
  464. package/dist/shared/runs.js.map +1 -1
  465. package/dist/shared/variables.d.ts +22 -0
  466. package/dist/shared/variables.d.ts.map +1 -1
  467. package/dist/shared/variables.js +9 -1
  468. package/dist/shared/variables.js.map +1 -1
  469. package/package.json +24 -26
  470. package/skills/nocobase-app-plugin-agents/SKILL.md +8 -7
  471. package/skills/nocobase-app-plugin-agents/references/agents.md +30 -0
  472. package/skills/nocobase-app-plugin-agents/references/distribution.md +21 -4
  473. package/skills/nocobase-app-plugin-agents/references/extension-points.md +30 -20
  474. package/skills/nocobase-app-plugin-agents/references/model-services.md +17 -0
  475. package/skills/nocobase-app-plugin-agents/references/runners.md +15 -1
  476. package/skills/nocobase-app-plugin-agents/references/setup-and-config.md +4 -7
  477. package/skills/nocobase-app-plugin-agents/references/variables-skills-usage.md +4 -4
  478. package/skills/nocobase-app-plugin-agents/references/verification-and-troubleshooting.md +33 -32
  479. package/dist/client/chat/settings-section.d.ts +0 -5
  480. package/dist/client/chat/settings-section.d.ts.map +0 -1
  481. package/dist/client/chat/settings-section.js +0 -76
  482. package/dist/client/chat/settings-section.js.map +0 -1
  483. package/dist/client/components/agent-fields.d.ts +0 -45
  484. package/dist/client/components/agent-fields.d.ts.map +0 -1
  485. package/dist/client/components/agent-fields.js +0 -83
  486. package/dist/client/components/agent-fields.js.map +0 -1
  487. package/dist/client/components/agent-type.d.ts +0 -32
  488. package/dist/client/components/agent-type.d.ts.map +0 -1
  489. package/dist/client/components/agent-type.js +0 -80
  490. package/dist/client/components/agent-type.js.map +0 -1
  491. package/dist/client/components/model-entries.d.ts +0 -35
  492. package/dist/client/components/model-entries.d.ts.map +0 -1
  493. package/dist/client/components/model-entries.js +0 -82
  494. package/dist/client/components/model-entries.js.map +0 -1
  495. package/dist/client/hooks/use-agent-save.d.ts +0 -9
  496. package/dist/client/hooks/use-agent-save.d.ts.map +0 -1
  497. package/dist/client/hooks/use-agent-save.js +0 -40
  498. package/dist/client/hooks/use-agent-save.js.map +0 -1
  499. package/dist/client/hooks/use-model-catalog.d.ts +0 -9
  500. package/dist/client/hooks/use-model-catalog.d.ts.map +0 -1
  501. package/dist/client/hooks/use-model-catalog.js +0 -27
  502. package/dist/client/hooks/use-model-catalog.js.map +0 -1
  503. package/dist/client/lib/tool-policy.d.ts +0 -5
  504. package/dist/client/lib/tool-policy.d.ts.map +0 -1
  505. package/dist/client/lib/tool-policy.js +0 -10
  506. package/dist/client/lib/tool-policy.js.map +0 -1
  507. package/dist/client/online/default-model.d.ts +0 -5
  508. package/dist/client/online/default-model.d.ts.map +0 -1
  509. package/dist/client/online/default-model.js +0 -65
  510. package/dist/client/online/default-model.js.map +0 -1
  511. package/dist/client/pages/agents/agent-model.d.ts +0 -73
  512. package/dist/client/pages/agents/agent-model.d.ts.map +0 -1
  513. package/dist/client/pages/agents/agent-model.js +0 -172
  514. package/dist/client/pages/agents/agent-model.js.map +0 -1
  515. package/dist/client/pages/agents/detail/brief-preview.d.ts +0 -7
  516. package/dist/client/pages/agents/detail/brief-preview.d.ts.map +0 -1
  517. package/dist/client/pages/agents/detail/brief-preview.js +0 -43
  518. package/dist/client/pages/agents/detail/brief-preview.js.map +0 -1
  519. package/dist/client/pages/agents/detail/history.d.ts +0 -11
  520. package/dist/client/pages/agents/detail/history.d.ts.map +0 -1
  521. package/dist/client/pages/agents/detail/history.js +0 -149
  522. package/dist/client/pages/agents/detail/history.js.map +0 -1
  523. package/dist/client/pages/agents/detail/index.d.ts +0 -3
  524. package/dist/client/pages/agents/detail/index.d.ts.map +0 -1
  525. package/dist/client/pages/agents/detail/index.js +0 -241
  526. package/dist/client/pages/agents/detail/index.js.map +0 -1
  527. package/dist/client/pages/agents/detail/sections.d.ts +0 -22
  528. package/dist/client/pages/agents/detail/sections.d.ts.map +0 -1
  529. package/dist/client/pages/agents/detail/sections.js +0 -311
  530. package/dist/client/pages/agents/detail/sections.js.map +0 -1
  531. package/dist/client/pages/agents/detail/tab-draft.d.ts +0 -43
  532. package/dist/client/pages/agents/detail/tab-draft.d.ts.map +0 -1
  533. package/dist/client/pages/agents/detail/tab-draft.js +0 -115
  534. package/dist/client/pages/agents/detail/tab-draft.js.map +0 -1
  535. package/dist/client/pages/agents/detail/unsaved-bar.d.ts +0 -13
  536. package/dist/client/pages/agents/detail/unsaved-bar.d.ts.map +0 -1
  537. package/dist/client/pages/agents/detail/unsaved-bar.js +0 -21
  538. package/dist/client/pages/agents/detail/unsaved-bar.js.map +0 -1
  539. package/dist/client/pages/agents/new.d.ts +0 -3
  540. package/dist/client/pages/agents/new.d.ts.map +0 -1
  541. package/dist/client/pages/agents/new.js +0 -149
  542. package/dist/client/pages/agents/new.js.map +0 -1
  543. package/dist/client/pages/agents/preset-picker.d.ts +0 -8
  544. package/dist/client/pages/agents/preset-picker.d.ts.map +0 -1
  545. package/dist/client/pages/agents/preset-picker.js +0 -41
  546. package/dist/client/pages/agents/preset-picker.js.map +0 -1
  547. package/dist/server/core/consultations/consultation.service.d.ts +0 -59
  548. package/dist/server/core/consultations/consultation.service.d.ts.map +0 -1
  549. package/dist/server/core/consultations/consultation.service.js +0 -195
  550. package/dist/server/core/consultations/consultation.service.js.map +0 -1
  551. package/dist/server/core/consultations/index.d.ts +0 -3
  552. package/dist/server/core/consultations/index.d.ts.map +0 -1
  553. package/dist/server/core/consultations/index.js +0 -3
  554. package/dist/server/core/consultations/index.js.map +0 -1
  555. package/dist/server/core/consultations/prompt.d.ts +0 -41
  556. package/dist/server/core/consultations/prompt.d.ts.map +0 -1
  557. package/dist/server/core/consultations/prompt.js +0 -64
  558. package/dist/server/core/consultations/prompt.js.map +0 -1
  559. package/dist/server/core/presets/index.d.ts +0 -19
  560. package/dist/server/core/presets/index.d.ts.map +0 -1
  561. package/dist/server/core/presets/index.js +0 -28
  562. package/dist/server/core/presets/index.js.map +0 -1
  563. package/dist/server/online/cli-command.d.ts +0 -20
  564. package/dist/server/online/cli-command.d.ts.map +0 -1
  565. package/dist/server/online/cli-command.js +0 -345
  566. package/dist/server/online/cli-command.js.map +0 -1
  567. package/dist/server/online/consult-tool.d.ts +0 -54
  568. package/dist/server/online/consult-tool.d.ts.map +0 -1
  569. package/dist/server/online/consult-tool.js +0 -177
  570. package/dist/server/online/consult-tool.js.map +0 -1
  571. package/dist/server/online/executor.d.ts +0 -83
  572. package/dist/server/online/executor.d.ts.map +0 -1
  573. package/dist/server/online/executor.js +0 -714
  574. package/dist/server/online/executor.js.map +0 -1
  575. package/dist/server/online/sandbox.d.ts +0 -32
  576. package/dist/server/online/sandbox.d.ts.map +0 -1
  577. package/dist/server/online/sandbox.js +0 -246
  578. package/dist/server/online/sandbox.js.map +0 -1
  579. package/dist/server/online/scripted.d.ts +0 -12
  580. package/dist/server/online/scripted.d.ts.map +0 -1
  581. package/dist/server/online/scripted.js +0 -176
  582. package/dist/server/online/scripted.js.map +0 -1
  583. package/dist/server/online/tools.d.ts +0 -17
  584. package/dist/server/online/tools.d.ts.map +0 -1
  585. package/dist/server/online/tools.js +0 -31
  586. package/dist/server/online/tools.js.map +0 -1
  587. package/dist/server/vendor/THIRD_PARTY_LICENSES.txt +0 -782
  588. package/dist/server/vendor/just-bash.d.ts +0 -83
  589. package/dist/server/vendor/just-bash.js +0 -2102
  590. package/dist/shared/presets.d.ts +0 -30
  591. package/dist/shared/presets.d.ts.map +0 -1
  592. package/dist/shared/presets.js +0 -2
  593. package/dist/shared/presets.js.map +0 -1
  594. package/skills/nocobase-app-plugin-agents/references/online-agents.md +0 -31
@@ -1,241 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { usePageBreadcrumb } from '@nocobase/app-client';
3
- /**
4
- * Route `/agents/:agentId`: a covering child page over the agent list. Its header sums the agent up in one line (type,
5
- * coding tool or model, where it runs, whether it is busy); below, four tabs, the chosen one kept in `?tab=`:
6
- *
7
- * - General: basics and instructions (with "Preview brief"), and who may use it.
8
- * - Capabilities: the coding tool and model (an online agent's model and where it runs), skills, business capabilities
9
- * and whether it confirms before changing data.
10
- * - Runtime (runner agents only): where it runs, the commands it may run there, and its environment variables.
11
- * - History: who changed what and when (`history.tsx`).
12
- *
13
- * Each tab is saved as a whole: a bar appears while any of its sections holds unsaved changes and saves them in one
14
- * request (`tab-draft.ts`); switching tabs or leaving the page asks first. Environment variables save row by row.
15
- *
16
- * Read-only for anyone the server says may not change it (`canEdit`: managers of agents, and its owner at the related
17
- * level). Every save names the revision the page shows; when someone else saved the agent meanwhile, the page reloads
18
- * and a dialog shows what they changed.
19
- */
20
- import { useTranslation } from '@nocobase/i18n/client';
21
- import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
22
- import { ArchiveIcon, ArchiveRestoreIcon, CopyIcon, Trash2Icon, } from 'lucide-react';
23
- import { useCallback, useState } from 'react';
24
- import { AgentAvatar } from '../../../components/agent-avatar.js';
25
- import { Link, useNavigate, useParams, useSearchParams } from 'react-router';
26
- import { agentsKeys } from '../../../api/keys.js';
27
- import { chatKeys } from '../../../chat/keys.js';
28
- import { useChatApi } from '../../../chat/use-chat.js';
29
- import { AgListSkeleton, AgLoadError } from '../../../components/ag-states.js';
30
- import { AgTag } from '../../../components/ag-tag.js';
31
- import { PageContainer } from '../../../components/page-container.js';
32
- import { PageHeader } from '../../../components/page-header.js';
33
- import { RouteChildPage } from '../../../components/route-child-page.js';
34
- import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, } from '../../../components/ui/alert-dialog.js';
35
- import { Alert, AlertDescription } from '../../../components/ui/alert.js';
36
- import { Button } from '../../../components/ui/button.js';
37
- import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from '../../../components/ui/dialog.js';
38
- import { Skeleton } from '../../../components/ui/skeleton.js';
39
- import { Spinner } from '../../../components/ui/spinner.js';
40
- import { Tabs, TabsContent, TabsList, TabsTrigger, } from '../../../components/ui/tabs.js';
41
- import { VariablesPanel } from '../../../components/variables/variables-panel.js';
42
- import { useAgentSave } from '../../../hooks/use-agent-save.js';
43
- import { useAgentsApi } from '../../../hooks/use-agents-api.js';
44
- import { useNotify } from '../../../hooks/use-notify.js';
45
- import { useAgentText } from '../../../hooks/use-vocabulary.js';
46
- import { entryText } from '../../../lib/agents.js';
47
- import { AccessSection, ActionsSection, BasicsSection, CommandPolicySection, ConfirmSection, ModelSection, PlacementSection, SkillsSection, ToolSection, } from './sections.js';
48
- import { AgentTypeTag } from '../../../components/agent-type.js';
49
- import { useDefaultModelText } from '../../../hooks/use-model-catalog.js';
50
- import { AgentChangeList, AgentHistory } from './history.js';
51
- import { useDiscardGuard, useTabDrafts } from './tab-draft.js';
52
- import { DiscardDialog, UnsavedBar } from './unsaved-bar.js';
53
- const TABS = ['general', 'capabilities', 'runtime', 'history'];
54
- export default function AgentDetailPage() {
55
- const { agentId = '' } = useParams();
56
- return (_jsx(RouteChildPage, { children: _jsx(AgentDetailView, { agentId: agentId }, agentId) }));
57
- }
58
- function AgentDetailView({ agentId, }) {
59
- const { t } = useTranslation();
60
- const agentText = useAgentText();
61
- const api = useAgentsApi();
62
- const queryClient = useQueryClient();
63
- const [params, setParams] = useSearchParams();
64
- // The revision the page held when a save was refused: the dialog shows what changed after it.
65
- const [conflictSince, setConflictSince] = useState(null);
66
- // Raised by "Discard": every section starts again from the saved agent.
67
- const [generation, setGeneration] = useState(0);
68
- const reportConflict = useCallback((revision) => {
69
- setConflictSince(revision);
70
- void queryClient.invalidateQueries({
71
- queryKey: agentsKeys.agent(agentId),
72
- });
73
- }, [queryClient, agentId]);
74
- const agent = useQuery({
75
- queryKey: agentsKeys.agent(agentId),
76
- queryFn: () => api.agent(agentId),
77
- });
78
- const runners = useQuery({
79
- queryKey: agentsKeys.runners,
80
- queryFn: () => api.runners(),
81
- });
82
- const save = useAgentSave({ id: agentId, revision: agent.data?.revision ?? 0 }, reportConflict);
83
- const drafts = useTabDrafts(save.isPending);
84
- const guard = useDiscardGuard(drafts.dirty);
85
- const levels = [
86
- { label: t('agents.title'), to: '/agents' },
87
- {
88
- label: agent.data
89
- ? agentText.name(agent.data)
90
- : t('agentDetail.breadcrumb'),
91
- },
92
- ];
93
- // The header's trail (the shell renders it): the list, then this agent.
94
- usePageBreadcrumb(levels);
95
- if (agent.isError && !agent.data)
96
- return (_jsxs(PageContainer, { children: [_jsx(AgLoadError, { title: t('agentDetail.loadFailed'), error: agent.error, onRetry: () => void agent.refetch() }), _jsx(Button, { variant: 'outline', size: 'sm', nativeButton: false, render: _jsx(Link, { to: '/agents' }), children: t('agentDetail.backToList') })] }));
97
- if (!agent.data)
98
- return (_jsx(PageContainer, { children: _jsx(AgListSkeleton, { rows: 6 }) }));
99
- const current = agent.data;
100
- const { canEdit } = current;
101
- const online = current.type === 'online';
102
- const tabs = TABS.filter((item) => !(online && item === 'runtime'));
103
- const requested = params.get('tab');
104
- const tab = tabs.find((item) => item === requested) ?? 'general';
105
- const showTab = (next) => setParams((previous) => {
106
- const nextParams = new URLSearchParams(previous);
107
- if (next === 'general')
108
- nextParams.delete('tab');
109
- else
110
- nextParams.set('tab', next);
111
- return nextParams;
112
- }, { replace: true });
113
- // Keyed by the revision, so a save elsewhere reseeds each section instead of keeping a stale draft.
114
- const key = (name) => `${name}:${current.revision}:${generation}`;
115
- const saveTab = () => {
116
- const patch = drafts.collect();
117
- if (!patch || Object.keys(patch).length === 0)
118
- return;
119
- save.mutate(patch, {
120
- // The sections start again from what was saved at once, rather than once the agent is fetched again.
121
- onSuccess: (saved) => queryClient.setQueryData(agentsKeys.agent(agentId), (old) => (old ? { ...old, ...saved } : old)),
122
- });
123
- };
124
- return (_jsx(drafts.Provider, { value: drafts.registry, children: _jsxs(PageContainer, { children: [_jsx(PageHeader, { title: _jsxs("span", { className: 'inline-flex flex-wrap items-center gap-3', children: [_jsx(AgentAvatar, { name: agentText.name(current) }), agentText.name(current), current.archivedAt ? (_jsx(AgTag, { tone: 'grey', children: t('agents.archivedTag') })) : null] }), description: _jsx(AgentSummaryLine, { agent: current, runners: runners.data }), actions: canEdit || current.canCopy ? (_jsxs(_Fragment, { children: [current.canCopy ? _jsx(CopyAsMine, { agent: current }) : null, canEdit ? _jsx(HeaderActions, { agent: current }) : null] })) : undefined }), _jsxs(Tabs, { value: tab, onValueChange: (value) => {
125
- const next = tabs.find((item) => item === value);
126
- if (next && next !== tab)
127
- guard.confirm(() => showTab(next));
128
- }, children: [_jsx(TabsList, { variant: 'line', "aria-label": t('agentDetail.tabs.label'), children: tabs.map((item) => (_jsx(TabsTrigger, { value: item, children: t(`agentDetail.tabs.${item}`) }, item))) }), canEdit || tab === 'history' ? null : (_jsx(Alert, { children: _jsx(AlertDescription, { children: t('agentDetail.readOnly') }) })), _jsx(TabsContent, { value: 'general', className: 'space-y-8 pt-4', children: tab === 'general' ? (_jsxs(_Fragment, { children: [_jsx(BasicsSection, { agent: current, canEdit: canEdit }, key('basics')), _jsx(AccessSection, { agent: current, canEdit: canEdit }, key('access'))] })) : null }), _jsx(TabsContent, { value: 'capabilities', className: 'space-y-8 pt-4', children: tab === 'capabilities' ? (_jsxs(_Fragment, { children: [online ? (_jsx(ModelSection, { agent: current, canEdit: canEdit }, key('model'))) : (_jsx(ToolSection, { agent: current, runners: runners.data, canEdit: canEdit }, key('tool'))), _jsx(SkillsSection, { agent: current, canEdit: canEdit }, key('skills')), _jsx(ActionsSection, { agent: current, canEdit: canEdit }, key('actions')), _jsx(ConfirmSection, { agent: current, canEdit: canEdit }, key('confirm')), online ? (_jsx(PlacementSection, { agent: current, runners: runners.data, canEdit: canEdit }, key('placement'))) : null] })) : null }), online ? null : (_jsx(TabsContent, { value: 'runtime', className: 'space-y-8 pt-4', children: tab === 'runtime' ? (_jsxs(_Fragment, { children: [_jsx(PlacementSection, { agent: current, runners: runners.data, canEdit: canEdit }, key('placement')), _jsx(CommandPolicySection, { agent: current, canEdit: canEdit }, key('commands')), _jsx(VariablesPanel, { scope: 'agent', scopeId: current.id, canEdit: canEdit, title: t('envVars.title'), description: t('envVars.description') })] })) : null })), _jsx(TabsContent, { value: 'history', className: 'pt-4', children: tab === 'history' ? _jsx(AgentHistory, { agentId: current.id }) : null })] }), drafts.dirty ? (_jsx(UnsavedBar, { pending: save.isPending, onDiscard: () => setGeneration((value) => value + 1), onSave: saveTab })) : null, _jsx(DiscardDialog, { guard: guard }), _jsx(ConflictDialog, { agentId: current.id, since: conflictSince, onClose: () => setConflictSince(null) })] }) }));
129
- }
130
- /**
131
- * The header's one line about the agent: its type, its coding tool (and model) or model, where it runs, whether it is
132
- * working now, and its owner.
133
- */
134
- function AgentSummaryLine({ agent, runners, }) {
135
- const { t } = useTranslation();
136
- const online = agent.type === 'online';
137
- const runnerName = (id) => runners?.find((runner) => runner.id === id)?.name ?? id;
138
- const defaultModel = useDefaultModelText();
139
- const [first, ...others] = agent.modelEntries;
140
- const engine = first
141
- ? `${entryText(first, t)}${others.length > 0 ? ` +${others.length}` : ''}`
142
- : online && defaultModel
143
- ? t('agents.defaultModelShort', { model: defaultModel })
144
- : t('agents.needsModel');
145
- const placement = online
146
- ? t('agentTypes.onServer')
147
- : agent.runnerIds.length === 0
148
- ? t('agents.anyRunner')
149
- : agent.runnerIds.map(runnerName).join(', ');
150
- const busy = agent.activeRuns > 0;
151
- return (_jsxs("span", { "data-testid": 'agent-summary', className: 'flex flex-wrap items-center gap-x-2 gap-y-1', children: [_jsx(AgentTypeTag, { type: agent.type }), _jsx("span", { children: engine }), _jsx("span", { "aria-hidden": 'true', children: "\u00B7" }), _jsx("span", { children: placement }), _jsx("span", { "aria-hidden": 'true', children: "\u00B7" }), _jsx(AgTag, { tone: busy ? 'blue' : 'green', dot: true, children: busy
152
- ? t('agentDetail.busy', { count: agent.activeRuns })
153
- : t('agentDetail.free') }), agent.onlineRunners === 0 ? (_jsx(AgTag, { tone: 'red', dot: true, children: online
154
- ? agent.modelEntries.length === 0
155
- ? t('agents.needsModel')
156
- : t('agents.modelUnavailable')
157
- : t('agents.onlineCount', { count: 0 }) })) : null, _jsx("span", { "aria-hidden": 'true', children: "\u00B7" }), _jsx("span", { children: t('agentDetail.owner', { name: agent.ownerName ?? '—' }) })] }));
158
- }
159
- /** What changed since the revision a refused save was made against; the page behind has already reloaded. */
160
- function ConflictDialog({ agentId, since, onClose, }) {
161
- const { t } = useTranslation();
162
- const api = useAgentsApi();
163
- const changes = useQuery({
164
- queryKey: [...agentsKeys.agentHistory(agentId), 'since', since],
165
- queryFn: () => api.agentHistory(agentId, since ?? 0),
166
- enabled: since !== null,
167
- });
168
- return (_jsx(Dialog, { open: since !== null, onOpenChange: (open) => {
169
- if (!open)
170
- onClose();
171
- }, children: _jsxs(DialogContent, { className: 'flex max-h-[calc(100dvh-2rem)] flex-col sm:max-w-2xl', children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { children: t('agentDetail.conflict.title') }), _jsx(DialogDescription, { children: t('agentDetail.conflict.description') })] }), _jsx("div", { className: '-mx-4 min-h-0 flex-1 overflow-y-auto px-4', children: changes.data ? (_jsx(AgentChangeList, { entries: changes.data })) : (_jsx(Skeleton, { className: 'h-24 w-full' })) }), _jsx(DialogFooter, { children: _jsx(Button, { onClick: onClose, children: t('agentDetail.conflict.ok') }) })] }) }));
172
- }
173
- /**
174
- * "Copy as my agent": a private copy of the agent that only the caller may use, with its instructions, business actions
175
- * and settings (`ChatApi.copyAgent`); the page then opens the copy, to edit it. Making it the default chat agent is the
176
- * Preferences page's choice.
177
- */
178
- function CopyAsMine({ agent }) {
179
- const { t } = useTranslation();
180
- const agentText = useAgentText();
181
- const chat = useChatApi();
182
- const notify = useNotify();
183
- const navigate = useNavigate();
184
- const queryClient = useQueryClient();
185
- const copy = useMutation({
186
- mutationFn: () => chat.copyAgent(agent.id, {
187
- name: t('agentDetail.copyName', { name: agentText.name(agent) }),
188
- }),
189
- onSuccess: (copied) => {
190
- void queryClient.invalidateQueries({ queryKey: agentsKeys.agents });
191
- void queryClient.invalidateQueries({ queryKey: chatKeys.all });
192
- notify.success(t('agentDetail.copied', { name: copied.name }));
193
- void navigate(`/agents/${encodeURIComponent(copied.id)}`);
194
- },
195
- onError: (error) => notify.error(error),
196
- });
197
- return (_jsxs(Button, { variant: 'outline', disabled: copy.isPending, onClick: () => copy.mutate(), children: [copy.isPending ? (_jsx(Spinner, { "data-icon": 'inline-start' })) : (_jsx(CopyIcon, { "data-icon": 'inline-start' })), t('agentDetail.copyAsMine')] }));
198
- }
199
- /** Archive or restore, and delete once archived (an application may archive first). */
200
- function HeaderActions({ agent, }) {
201
- const { t } = useTranslation();
202
- const agentText = useAgentText();
203
- const api = useAgentsApi();
204
- const notify = useNotify();
205
- const navigate = useNavigate();
206
- const queryClient = useQueryClient();
207
- const [deleting, setDeleting] = useState(false);
208
- const refresh = () => {
209
- void queryClient.invalidateQueries({ queryKey: agentsKeys.agents });
210
- void queryClient.invalidateQueries({
211
- queryKey: agentsKeys.agent(agent.id),
212
- });
213
- void queryClient.invalidateQueries({
214
- queryKey: agentsKeys.agentHistory(agent.id),
215
- });
216
- };
217
- const archive = useMutation({
218
- mutationFn: () => agent.archivedAt
219
- ? api.restoreAgent(agent.id)
220
- : api.archiveAgent(agent.id),
221
- onSuccess: (saved) => notify.success(t(saved.archivedAt ? 'agents.archived' : 'agents.restored', {
222
- name: agentText.name(saved),
223
- })),
224
- onError: (error) => notify.error(error),
225
- onSettled: refresh,
226
- });
227
- const remove = useMutation({
228
- mutationFn: () => api.deleteAgent(agent.id),
229
- onSuccess: () => {
230
- notify.success(t('agentDetail.deleted', { name: agentText.name(agent) }));
231
- void queryClient.invalidateQueries({ queryKey: agentsKeys.agents });
232
- void navigate('/agents');
233
- },
234
- onError: (error) => notify.error(error, t('agentDetail.activeRuns')),
235
- });
236
- return (_jsxs(_Fragment, { children: [_jsxs(Button, { variant: 'outline', disabled: archive.isPending, onClick: () => archive.mutate(), children: [agent.archivedAt ? (_jsx(ArchiveRestoreIcon, { "data-icon": 'inline-start' })) : (_jsx(ArchiveIcon, { "data-icon": 'inline-start' })), agent.archivedAt ? t('agents.restore') : t('agents.archive')] }), agent.archivedAt ? (_jsxs(Button, { variant: 'outline', disabled: remove.isPending, onClick: () => setDeleting(true), children: [_jsx(Trash2Icon, { "data-icon": 'inline-start' }), t('agentDetail.delete')] })) : null, _jsx(AlertDialog, { open: deleting, onOpenChange: setDeleting, children: _jsxs(AlertDialogContent, { children: [_jsxs(AlertDialogHeader, { children: [_jsx(AlertDialogTitle, { children: t('agentDetail.deleteTitle', { name: agentText.name(agent) }) }), _jsx(AlertDialogDescription, { children: t('agentDetail.deleteDescription') })] }), _jsxs(AlertDialogFooter, { children: [_jsx(AlertDialogCancel, { children: t('actions.cancel') }), _jsx(AlertDialogAction, { variant: 'destructive', onClick: () => {
237
- setDeleting(false);
238
- remove.mutate();
239
- }, children: t('agentDetail.delete') })] })] }) })] }));
240
- }
241
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../client/pages/agents/detail/index.tsx"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- import { type ReactElement } from 'react';
2
- import { type AgentSummary } from '../../../../shared/agents.js';
3
- import { type RunnerSummary } from '../../../../shared/runners.js';
4
- interface SectionProps {
5
- readonly agent: AgentSummary;
6
- readonly canEdit: boolean;
7
- }
8
- export declare function BasicsSection({ agent, canEdit }: SectionProps): ReactElement;
9
- export declare function AccessSection({ agent, canEdit }: SectionProps): ReactElement;
10
- export declare function ToolSection({ agent, runners, canEdit, }: SectionProps & {
11
- readonly runners: readonly RunnerSummary[] | undefined;
12
- }): ReactElement;
13
- export declare function ModelSection({ agent, canEdit }: SectionProps): ReactElement;
14
- export declare function SkillsSection({ agent, canEdit }: SectionProps): ReactElement;
15
- export declare function ActionsSection({ agent, canEdit }: SectionProps): ReactElement;
16
- export declare function ConfirmSection({ agent, canEdit }: SectionProps): ReactElement;
17
- export declare function PlacementSection({ agent, runners, canEdit, }: SectionProps & {
18
- readonly runners: readonly RunnerSummary[] | undefined;
19
- }): ReactElement;
20
- export declare function CommandPolicySection({ agent, canEdit, }: SectionProps): ReactElement;
21
- export {};
22
- //# sourceMappingURL=sections.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sections.d.ts","sourceRoot":"","sources":["../../../../../client/pages/agents/detail/sections.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAGpD,OAAO,EAML,KAAK,YAAY,EAElB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAmDhF,UAAU,YAAY;IACpB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAoBD,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,YAAY,GAAG,YAAY,CAgG5E;AAID,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,YAAY,GAAG,YAAY,CAiF5E;AAID,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,OAAO,EACP,OAAO,GACR,EAAE,YAAY,GAAG;IAChB,QAAQ,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,GAAG,SAAS,CAAC;CACxD,GAAG,YAAY,CAkGf;AAID,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,YAAY,GAAG,YAAY,CAkF3E;AAID,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,YAAY,GAAG,YAAY,CAiC5E;AAID,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,YAAY,GAAG,YAAY,CAuB7E;AAID,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,YAAY,GAAG,YAAY,CAwC7E;AAID,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,OAAO,EACP,OAAO,GACR,EAAE,YAAY,GAAG;IAChB,QAAQ,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,GAAG,SAAS,CAAC;CACxD,GAAG,YAAY,CA2Hf;AAID,wBAAgB,oBAAoB,CAAC,EACnC,KAAK,EACL,OAAO,GACR,EAAE,YAAY,GAAG,YAAY,CAmF7B"}
@@ -1,311 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { useTranslation } from '@nocobase/i18n/client';
3
- import { useMutation, useQuery } from '@tanstack/react-query';
4
- import { EyeIcon } from 'lucide-react';
5
- import { useState } from 'react';
6
- import { Link } from 'react-router';
7
- import { AGENT_ACCESS, CONFIRM_CHANGES, entryTools, onlineEntries, } from '../../../../shared/agents.js';
8
- import { offersEntry } from '../../../../shared/models.js';
9
- import { toolEnabled } from '../../../../shared/runners.js';
10
- import { agentsKeys } from '../../../api/keys.js';
11
- import { AgMultiSelect } from '../../../components/ag-multi-select.js';
12
- import { AgSection } from '../../../components/ag-section.js';
13
- import { ActionCheckboxes } from '../../../components/agent-fields.js';
14
- import { DefaultModelNote, NoModels } from '../../../components/agent-type.js';
15
- import { ModelEntriesEditor } from '../../../components/model-entries.js';
16
- import { SkillScriptsNotice, SkillsSelect, } from '../../../components/skills-select.js';
17
- import { Alert, AlertDescription } from '../../../components/ui/alert.js';
18
- import { Button } from '../../../components/ui/button.js';
19
- import { Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, } from '../../../components/ui/field.js';
20
- import { Input } from '../../../components/ui/input.js';
21
- import { RadioGroup, RadioGroupItem, } from '../../../components/ui/radio-group.js';
22
- import { Textarea } from '../../../components/ui/textarea.js';
23
- import { useAgentsApi } from '../../../hooks/use-agents-api.js';
24
- import { useModelCatalog } from '../../../hooks/use-model-catalog.js';
25
- import { errorText, useNotify } from '../../../hooks/use-notify.js';
26
- import { useAgentText } from '../../../hooks/use-vocabulary.js';
27
- import { offersTool } from '../../../lib/agents.js';
28
- import { DEFAULT_ALLOWED_COMMANDS, DEFAULT_DENIED_PATTERNS, DEFAULT_IDLE_TIMEOUT_MS, } from '../../../lib/tool-policy.js';
29
- import { draftEntries, entriesError, entryDrafts, invalidPattern, patternLines, sameEntries, sameItems, wholeNumber, } from '../agent-model.js';
30
- import { BriefPreviewDialog } from './brief-preview.js';
31
- import { useDraftPending, useSectionDraft } from './tab-draft.js';
32
- /** The agent's overrides with `changes` applied; a key set to undefined goes back to the default. */
33
- function policyWith(current, changes) {
34
- const next = {
35
- ...(current ?? {}),
36
- };
37
- for (const key of Object.keys(changes)) {
38
- const value = changes[key];
39
- if (value === undefined)
40
- delete next[key];
41
- else
42
- Object.assign(next, { [key]: value });
43
- }
44
- return Object.keys(next).length > 0 ? next : null;
45
- }
46
- // General: basics and instructions
47
- export function BasicsSection({ agent, canEdit }) {
48
- const { t } = useTranslation();
49
- const pending = useDraftPending();
50
- const text = useAgentText();
51
- // A built-in agent's name and description show translated; only a field someone changes is sent, and then shows as
52
- // written.
53
- const shownName = text.name(agent);
54
- const shownDescription = text.description(agent) ?? '';
55
- const [name, setName] = useState(shownName);
56
- const [description, setDescription] = useState(shownDescription);
57
- const [instructions, setInstructions] = useState(agent.instructions ?? '');
58
- const [nameError, setNameError] = useState();
59
- const [previewing, setPreviewing] = useState(false);
60
- const dirty = name !== shownName ||
61
- description !== shownDescription ||
62
- instructions !== (agent.instructions ?? '');
63
- const disabled = !canEdit || pending;
64
- useSectionDraft('basics', dirty, () => {
65
- if (!name.trim()) {
66
- setNameError(t('agentForm.nameRequired'));
67
- return null;
68
- }
69
- setNameError(undefined);
70
- return {
71
- ...(name !== shownName ? { name: name.trim() } : {}),
72
- ...(description !== shownDescription
73
- ? { description: description.trim() || null }
74
- : {}),
75
- ...(instructions !== (agent.instructions ?? '')
76
- ? { instructions: instructions.trim() || null }
77
- : {}),
78
- };
79
- });
80
- return (_jsxs(AgSection, { id: 'ag-agent-basics', title: t('agentDetail.basics'), actions: _jsxs(Button, { variant: 'outline', size: 'sm', onClick: () => setPreviewing(true), children: [_jsx(EyeIcon, { "data-icon": 'inline-start' }), t('brief.preview')] }), children: [_jsxs(FieldGroup, { children: [_jsxs(Field, { "data-invalid": nameError ? true : undefined, children: [_jsx(FieldLabel, { htmlFor: 'ag-agent-edit-name', children: t('agentForm.name') }), _jsx(Input, { id: 'ag-agent-edit-name', value: name, maxLength: 200, disabled: disabled, "aria-invalid": nameError ? true : undefined, onChange: (event) => setName(event.target.value) }), nameError ? _jsx(FieldError, { children: nameError }) : null] }), _jsxs(Field, { children: [_jsx(FieldLabel, { htmlFor: 'ag-agent-edit-description', children: t('agentForm.descriptionLabel') }), _jsx(Input, { id: 'ag-agent-edit-description', value: description, maxLength: 300, disabled: disabled, onChange: (event) => setDescription(event.target.value) })] }), _jsxs(Field, { children: [_jsx(FieldLabel, { htmlFor: 'ag-agent-edit-instructions', children: t('agentForm.instructions') }), _jsx(Textarea, { id: 'ag-agent-edit-instructions', rows: 8, value: instructions, disabled: disabled, placeholder: t('agentForm.instructionsPlaceholder'), onChange: (event) => setInstructions(event.target.value) }), _jsx(FieldDescription, { children: t('agentForm.instructionsHint') })] })] }), _jsx(BriefPreviewDialog, { agentId: agent.id, open: previewing, onClose: () => setPreviewing(false) })] }));
81
- }
82
- // General: who can use it
83
- export function AccessSection({ agent, canEdit }) {
84
- const { t } = useTranslation();
85
- const api = useAgentsApi();
86
- const pending = useDraftPending();
87
- const users = useQuery({
88
- queryKey: agentsKeys.users,
89
- queryFn: () => api.users(),
90
- });
91
- const [access, setAccess] = useState(agent.access);
92
- const [userIds, setUserIds] = useState([...agent.userIds]);
93
- const [usersError, setUsersError] = useState();
94
- const dirty = access !== agent.access ||
95
- (access === 'users' && !sameItems(userIds, agent.userIds));
96
- const disabled = !canEdit || pending;
97
- useSectionDraft('access', dirty, () => {
98
- if (access === 'users' && userIds.length === 0) {
99
- setUsersError(t('agentDetail.accessUsersRequired'));
100
- return null;
101
- }
102
- setUsersError(undefined);
103
- return { access, userIds: access === 'users' ? userIds : [] };
104
- });
105
- return (_jsx(AgSection, { id: 'ag-agent-access', title: t('agentDetail.access'), description: t('agentDetail.accessHint'), children: _jsxs(FieldGroup, { children: [_jsx(RadioGroup, { value: access, disabled: disabled, onValueChange: (value) => {
106
- const next = AGENT_ACCESS.find((level) => level === value);
107
- if (next)
108
- setAccess(next);
109
- }, children: AGENT_ACCESS.map((level) => (_jsxs(Field, { orientation: 'horizontal', children: [_jsx(RadioGroupItem, { value: level, id: `ag-agent-access-${level}` }), _jsx(FieldContent, { children: _jsx(FieldLabel, { htmlFor: `ag-agent-access-${level}`, children: t(`agents.access.${level}`) }) })] }, level))) }), access === 'users' ? (_jsxs(Field, { "data-invalid": usersError ? true : undefined, children: [_jsx(FieldLabel, { htmlFor: 'ag-agent-access-users', children: t('agentDetail.accessUsers') }), _jsx(AgMultiSelect, { id: 'ag-agent-access-users', options: [
110
- ...(users.data ?? []).map((user) => ({
111
- value: user.id,
112
- label: user.name,
113
- })),
114
- // Someone the directory no longer lists stays visible, by id.
115
- ...userIds
116
- .filter((id) => !(users.data ?? []).some((user) => user.id === id))
117
- .map((id) => ({ value: id, label: id })),
118
- ], value: userIds, disabled: disabled, placeholder: t('agentDetail.accessUsersPlaceholder'), onChange: setUserIds }), usersError ? _jsx(FieldError, { children: usersError }) : null] })) : null] }) }));
119
- }
120
- // Capabilities: tool and model
121
- export function ToolSection({ agent, runners, canEdit, }) {
122
- const { t } = useTranslation();
123
- const pending = useDraftPending();
124
- const [entries, setEntries] = useState(() => entryDrafts(agent.modelEntries));
125
- const [entriesErrorKey, setEntriesErrorKey] = useState(null);
126
- const initialTurns = agent.toolPolicy?.maxTurns
127
- ? String(agent.toolPolicy.maxTurns)
128
- : '';
129
- const initialIdle = String(Math.round((agent.toolPolicy?.idleTimeoutMs ?? DEFAULT_IDLE_TIMEOUT_MS) / 60_000));
130
- const [maxTurns, setMaxTurns] = useState(initialTurns);
131
- const [idle, setIdle] = useState(initialIdle);
132
- const [errors, setErrors] = useState({});
133
- const dirty = !sameEntries('runner', entries, agent.modelEntries) ||
134
- maxTurns !== initialTurns ||
135
- idle !== initialIdle;
136
- const disabled = !canEdit || pending;
137
- useSectionDraft('tool', dirty, () => {
138
- const turns = maxTurns.trim()
139
- ? wholeNumber(maxTurns, 1, 10_000)
140
- : undefined;
141
- const minutes = wholeNumber(idle, 1, 1440);
142
- setErrors({
143
- ...(turns === null ? { turns: t('toolSection.turnsInvalid') } : {}),
144
- ...(minutes === null ? { idle: t('toolSection.idleInvalid') } : {}),
145
- });
146
- const entriesProblem = entriesError('runner', entries);
147
- setEntriesErrorKey(entriesProblem);
148
- if (turns === null || minutes === null || entriesProblem)
149
- return null;
150
- const idleMs = minutes * 60_000;
151
- return {
152
- modelEntries: draftEntries('runner', entries),
153
- toolPolicy: policyWith(agent.toolPolicy, {
154
- maxTurns: turns,
155
- idleTimeoutMs: idleMs === DEFAULT_IDLE_TIMEOUT_MS ? undefined : idleMs,
156
- }),
157
- };
158
- });
159
- return (_jsx(AgSection, { id: 'ag-agent-tool', title: t('toolSection.title'), description: t('modelEntries.hintRunner'), children: _jsxs(FieldGroup, { children: [_jsx(ModelEntriesEditor, { idPrefix: 'ag-agent-edit-entry', type: 'runner', value: entries, runners: runners, disabled: disabled, onChange: setEntries }), entriesErrorKey ? _jsx(FieldError, { children: t(entriesErrorKey) }) : null, _jsxs("div", { className: 'grid gap-4 sm:grid-cols-2', children: [_jsxs(Field, { "data-invalid": errors.turns ? true : undefined, children: [_jsx(FieldLabel, { htmlFor: 'ag-agent-edit-turns', children: t('toolSection.maxTurns') }), _jsx(Input, { id: 'ag-agent-edit-turns', inputMode: 'numeric', value: maxTurns, disabled: disabled, placeholder: t('toolSection.unlimited'), onChange: (event) => setMaxTurns(event.target.value) }), errors.turns ? _jsx(FieldError, { children: errors.turns }) : null] }), _jsxs(Field, { "data-invalid": errors.idle ? true : undefined, children: [_jsx(FieldLabel, { htmlFor: 'ag-agent-edit-idle', children: t('toolSection.idleTimeout') }), _jsx(Input, { id: 'ag-agent-edit-idle', inputMode: 'numeric', value: idle, disabled: disabled, onChange: (event) => setIdle(event.target.value) }), errors.idle ? (_jsx(FieldError, { children: errors.idle })) : (_jsx(FieldDescription, { children: t('toolSection.idleHint') }))] })] })] }) }));
160
- }
161
- // Capabilities: an online agent's model
162
- export function ModelSection({ agent, canEdit }) {
163
- const { t } = useTranslation();
164
- const api = useAgentsApi();
165
- const notify = useNotify();
166
- const pending = useDraftPending();
167
- const catalog = useModelCatalog();
168
- const [entries, setEntries] = useState(() => entryDrafts(agent.modelEntries));
169
- const [problem, setProblem] = useState(null);
170
- const dirty = !sameEntries('online', entries, agent.modelEntries);
171
- const disabled = !canEdit || pending;
172
- const check = useMutation({
173
- mutationFn: (entry) => api.checkModel({ modelService: entry.modelService, model: entry.model }),
174
- onSuccess: (result) => {
175
- if (result.ok)
176
- notify.success(t('modelSection.testOk'));
177
- else
178
- notify.error(null, t('modelSection.testFailed', { message: result.message ?? '' }));
179
- },
180
- onError: (error) => notify.error(null, t('modelSection.testFailed', {
181
- message: errorText(t, error, t('common.requestFailed')),
182
- })),
183
- });
184
- const unavailable = catalog.data
185
- ? onlineEntries(agent).filter((entry) => !offersEntry(catalog.data, entry))
186
- : [];
187
- useSectionDraft('model', dirty, () => {
188
- const error = entriesError('online', entries);
189
- setProblem(error);
190
- if (error)
191
- return null;
192
- return {
193
- modelEntries: draftEntries('online', entries),
194
- };
195
- });
196
- return (_jsx(AgSection, { id: 'ag-agent-model', title: t('modelSection.title'), description: t('modelEntries.hintOnline'), children: _jsxs(FieldGroup, { children: [unavailable.length > 0 ? (_jsx(Alert, { variant: 'destructive', children: _jsx(AlertDescription, { children: t('modelEntries.unavailable', {
197
- models: unavailable
198
- .map((entry) => `${entry.modelService} · ${entry.model}`)
199
- .join(', '),
200
- }) }) })) : null, _jsx(ModelEntriesEditor, { idPrefix: 'ag-agent-edit-online', type: 'online', value: entries, catalog: catalog.data, disabled: disabled, onChange: setEntries, onTest: (entry) => check.mutate(entry), testing: check.isPending ? (check.variables?.key ?? null) : null, empty: _jsx(DefaultModelNote, {}) }), problem ? _jsx(FieldError, { children: t(problem) }) : null, entries.length > 0 &&
201
- catalog.data &&
202
- catalog.data.services.length === 0 ? (_jsx(NoModels, {})) : null] }) }));
203
- }
204
- // Capabilities: skills
205
- export function SkillsSection({ agent, canEdit }) {
206
- const { t } = useTranslation();
207
- const pending = useDraftPending();
208
- const [selected, setSelected] = useState([...agent.skillIds]);
209
- const dirty = !sameItems(selected, agent.skillIds);
210
- useSectionDraft('skills', dirty, () => ({ skillIds: selected }));
211
- return (_jsxs(AgSection, { id: 'ag-agent-skills', title: t('agentSkills.title'), description: _jsxs(_Fragment, { children: [agent.type === 'online'
212
- ? t('agentSkills.descriptionOnline')
213
- : t('agentSkills.description'), ' ', _jsx(Link, { to: '/skills', className: 'font-medium text-primary underline-offset-4 hover:underline', children: t('agentSkills.manage') })] }), children: [_jsx(SkillsSelect, { id: 'ag-agent-skills-select', value: selected, disabled: !canEdit || pending, onChange: setSelected }), agent.type === 'online' ? _jsx(SkillScriptsNotice, { value: selected }) : null] }));
214
- }
215
- // Capabilities: business capabilities
216
- export function ActionsSection({ agent, canEdit }) {
217
- const { t } = useTranslation();
218
- const pending = useDraftPending();
219
- const [actions, setActions] = useState([...agent.actions]);
220
- const dirty = !sameItems(actions, agent.actions);
221
- useSectionDraft('actions', dirty, () => ({ actions }));
222
- return (_jsx(AgSection, { id: 'ag-agent-actions', title: t('capabilities.title'), description: t('capabilities.hint'), className: 'max-w-4xl', children: _jsx(ActionCheckboxes, { idPrefix: 'ag-agent-edit-action', value: actions, type: agent.type, disabled: !canEdit || pending, detailed: true, onChange: setActions }) }));
223
- }
224
- // Capabilities: whether it asks before changing data
225
- export function ConfirmSection({ agent, canEdit }) {
226
- const { t } = useTranslation();
227
- const pending = useDraftPending();
228
- const [confirmChanges, setConfirmChanges] = useState(agent.confirmChanges);
229
- const dirty = confirmChanges !== agent.confirmChanges;
230
- useSectionDraft('confirm', dirty, () => ({ confirmChanges }));
231
- return (_jsx(AgSection, { id: 'ag-agent-confirm', title: t('capabilities.confirmChanges'), description: t('capabilities.confirmChangesHint'), children: _jsx(RadioGroup, { value: confirmChanges, disabled: !canEdit || pending, onValueChange: (value) => {
232
- const next = CONFIRM_CHANGES.find((level) => level === value);
233
- if (next)
234
- setConfirmChanges(next);
235
- }, children: CONFIRM_CHANGES.map((level) => (_jsxs(Field, { orientation: 'horizontal', children: [_jsx(RadioGroupItem, { value: level, id: `ag-agent-confirm-${level}` }), _jsxs(FieldContent, { children: [_jsx(FieldLabel, { htmlFor: `ag-agent-confirm-${level}`, children: t(`capabilities.confirm.${level}`) }), level === 'larger' ? (_jsx(FieldDescription, { children: t('capabilities.confirm.largerHint') })) : null] })] }, level))) }) }));
236
- }
237
- // Runtime: where it runs (an online agent shows it under Capabilities: on the server, with its attempts)
238
- export function PlacementSection({ agent, runners, canEdit, }) {
239
- const { t } = useTranslation();
240
- const pending = useDraftPending();
241
- const [runnerIds, setRunnerIds] = useState([...agent.runnerIds]);
242
- const [concurrency, setConcurrency] = useState(String(agent.maxConcurrentRuns));
243
- const [attempts, setAttempts] = useState(String(agent.maxAttempts));
244
- const [errors, setErrors] = useState({});
245
- const dirty = !sameItems(runnerIds, agent.runnerIds) ||
246
- concurrency !== String(agent.maxConcurrentRuns) ||
247
- attempts !== String(agent.maxAttempts);
248
- const disabled = !canEdit || pending;
249
- // An online agent runs on the server: no runners, and no concurrency limit.
250
- const chat = agent.type === 'online';
251
- const agentTools = entryTools(agent);
252
- const toolName = agentTools.map((tool) => t(`tools.${tool}`)).join(' / ');
253
- const candidates = (runners ?? []).filter((runner) => runner.status !== 'revoked' &&
254
- (agentTools.some((agentTool) => toolEnabled(runner, agentTool) &&
255
- runner.tools.some((tool) => tool.kind === agentTool)) ||
256
- agent.runnerIds.includes(runner.id)));
257
- const online = runners
258
- ? runners.filter((runner) => agentTools.some((tool) => offersTool(runner, tool))).length
259
- : 0;
260
- useSectionDraft('placement', dirty, () => {
261
- const max = chat
262
- ? agent.maxConcurrentRuns
263
- : wholeNumber(concurrency, 1, 100);
264
- const tries = wholeNumber(attempts, 1, 10);
265
- setErrors({
266
- ...(max === null ? { concurrency: t('agentForm.maxInvalid') } : {}),
267
- ...(tries === null ? { attempts: t('placement.attemptsInvalid') } : {}),
268
- });
269
- if (max === null || tries === null)
270
- return null;
271
- return chat
272
- ? { maxAttempts: tries }
273
- : { runnerIds, maxConcurrentRuns: max, maxAttempts: tries };
274
- });
275
- return (_jsx(AgSection, { id: 'ag-agent-placement', title: t('placement.title'), children: _jsxs(FieldGroup, { children: [chat ? _jsx("p", { className: 'text-sm', children: t('agentTypes.onServer') }) : null, _jsxs("p", { className: 'text-sm', hidden: chat, children: [t('placement.online', { tool: toolName, count: online }), runners && online === 0 ? (_jsxs(_Fragment, { children: [' ', _jsx(Link, { to: '/runtimes/connect', className: 'underline', children: t('runtimes.add') })] })) : null] }), _jsxs(Field, { hidden: chat, children: [_jsx(FieldLabel, { htmlFor: 'ag-agent-runners', children: t('placement.runners') }), _jsx(AgMultiSelect, { id: 'ag-agent-runners', options: candidates.map((runner) => ({
276
- value: runner.id,
277
- label: `${runner.name} · ${t(`runtimes.status.${runner.status}`)}`,
278
- })), value: runnerIds, disabled: disabled, placeholder: t('placement.anyRunner'), emptyText: t('placement.noCandidates', { tool: toolName }), onChange: setRunnerIds }), _jsx(FieldDescription, { children: t('placement.runnersHint') })] }), _jsxs("div", { className: 'grid gap-4 sm:grid-cols-2', children: [_jsxs(Field, { hidden: chat, "data-invalid": errors.concurrency ? true : undefined, children: [_jsx(FieldLabel, { htmlFor: 'ag-agent-concurrency', children: t('agentForm.maxConcurrentRuns') }), _jsx(Input, { id: 'ag-agent-concurrency', inputMode: 'numeric', value: concurrency, disabled: disabled, onChange: (event) => setConcurrency(event.target.value) }), errors.concurrency ? (_jsx(FieldError, { children: errors.concurrency })) : null] }), _jsxs(Field, { "data-invalid": errors.attempts ? true : undefined, children: [_jsx(FieldLabel, { htmlFor: 'ag-agent-attempts', children: t('placement.attempts') }), _jsx(Input, { id: 'ag-agent-attempts', inputMode: 'numeric', value: attempts, disabled: disabled, onChange: (event) => setAttempts(event.target.value) }), errors.attempts ? (_jsx(FieldError, { children: errors.attempts })) : null] })] })] }) }));
279
- }
280
- // Runtime: the commands it may run on the runner's machine
281
- export function CommandPolicySection({ agent, canEdit, }) {
282
- const { t } = useTranslation();
283
- const pending = useDraftPending();
284
- const initialAllowed = (agent.toolPolicy?.allowedCommands ?? DEFAULT_ALLOWED_COMMANDS).join('\n');
285
- const initialDenied = (agent.toolPolicy?.deniedPatterns ?? DEFAULT_DENIED_PATTERNS).join('\n');
286
- const [allowed, setAllowed] = useState(initialAllowed);
287
- const [denied, setDenied] = useState(initialDenied);
288
- const [patternError, setPatternError] = useState();
289
- const dirty = allowed !== initialAllowed || denied !== initialDenied;
290
- const disabled = !canEdit || pending;
291
- useSectionDraft('commands', dirty, () => {
292
- const allowedLines = patternLines(allowed);
293
- const deniedLines = patternLines(denied);
294
- const bad = invalidPattern([...allowedLines, ...deniedLines]);
295
- setPatternError(bad ? t('capabilities.patternInvalid', { pattern: bad }) : undefined);
296
- if (bad)
297
- return null;
298
- return {
299
- toolPolicy: policyWith(agent.toolPolicy, {
300
- allowedCommands: sameItems(allowedLines, DEFAULT_ALLOWED_COMMANDS)
301
- ? undefined
302
- : allowedLines,
303
- deniedPatterns: sameItems(deniedLines, DEFAULT_DENIED_PATTERNS)
304
- ? undefined
305
- : deniedLines,
306
- }),
307
- };
308
- });
309
- return (_jsx(AgSection, { id: 'ag-agent-commands', title: t('commandPolicy.title'), description: t('commandPolicy.hint'), children: _jsxs(FieldGroup, { children: [_jsxs(Field, { children: [_jsx(FieldLabel, { htmlFor: 'ag-agent-allowed', children: t('capabilities.allowedCommands') }), _jsx(Textarea, { id: 'ag-agent-allowed', rows: 4, spellCheck: false, className: 'font-mono text-xs', value: allowed, disabled: disabled, onChange: (event) => setAllowed(event.target.value) }), _jsx(FieldDescription, { children: t('capabilities.allowedCommandsHint') })] }), _jsxs(Field, { "data-invalid": patternError ? true : undefined, children: [_jsx(FieldLabel, { htmlFor: 'ag-agent-denied', children: t('capabilities.deniedPatterns') }), _jsx(Textarea, { id: 'ag-agent-denied', rows: 4, spellCheck: false, className: 'font-mono text-xs', value: denied, disabled: disabled, onChange: (event) => setDenied(event.target.value) }), patternError ? (_jsx(FieldError, { children: patternError })) : (_jsx(FieldDescription, { children: t('capabilities.deniedPatternsHint') }))] })] }) }));
310
- }
311
- //# sourceMappingURL=sections.js.map