@burdenoff/microfe-botmanor 2026.1108.1 → 2026.1109.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (334) hide show
  1. package/dist/botlit/BotlitRoutes.d.ts +2 -0
  2. package/dist/botlit/BotlitRoutes.js +24 -25
  3. package/dist/botlit/BotlitRoutes.js.map +1 -1
  4. package/dist/botlit/BotmanorRoot.d.ts +3 -0
  5. package/dist/botlit/BotmanorRoot.js +1 -2
  6. package/dist/botlit/BotmanorRoot.js.map +1 -1
  7. package/dist/botlit/BotmanorRootInner.d.ts +3 -0
  8. package/dist/botlit/BotmanorRootInner.js +9 -10
  9. package/dist/botlit/BotmanorRootInner.js.map +1 -1
  10. package/dist/botlit/components/AgentApprovalPanel.d.ts +20 -0
  11. package/dist/botlit/components/AgentApprovalPanel.js +49 -50
  12. package/dist/botlit/components/AgentApprovalPanel.js.map +1 -1
  13. package/dist/botlit/components/AiOperationsPanel.d.ts +14 -0
  14. package/dist/botlit/components/AiOperationsPanel.js +54 -55
  15. package/dist/botlit/components/AiOperationsPanel.js.map +1 -1
  16. package/dist/botlit/components/AssistantChannelPanel.d.ts +3 -0
  17. package/dist/botlit/components/AssistantChannelPanel.js +12 -13
  18. package/dist/botlit/components/AssistantChannelPanel.js.map +1 -1
  19. package/dist/botlit/components/AssistantRuntimeSetupPanel.d.ts +4 -0
  20. package/dist/botlit/components/AssistantRuntimeSetupPanel.js +14 -14
  21. package/dist/botlit/components/AssistantRuntimeSetupPanel.js.map +1 -1
  22. package/dist/botlit/components/AssistantWebsitePanel.d.ts +5 -0
  23. package/dist/botlit/components/AssistantWebsitePanel.js +15 -16
  24. package/dist/botlit/components/AssistantWebsitePanel.js.map +1 -1
  25. package/dist/botlit/components/Badge.d.ts +9 -0
  26. package/dist/botlit/components/Badge.js +1 -2
  27. package/dist/botlit/components/Badge.js.map +1 -1
  28. package/dist/botlit/components/Button.d.ts +10 -0
  29. package/dist/botlit/components/Button.js +1 -2
  30. package/dist/botlit/components/Button.js.map +1 -1
  31. package/dist/botlit/components/Card.d.ts +16 -0
  32. package/dist/botlit/components/Card.js +1 -2
  33. package/dist/botlit/components/Card.js.map +1 -1
  34. package/dist/botlit/components/ChannelSelectorSheet.d.ts +23 -0
  35. package/dist/botlit/components/ChannelSelectorSheet.js +1 -2
  36. package/dist/botlit/components/ChannelSelectorSheet.js.map +1 -1
  37. package/dist/botlit/components/EmptyState.d.ts +12 -0
  38. package/dist/botlit/components/EmptyState.js +1 -2
  39. package/dist/botlit/components/EmptyState.js.map +1 -1
  40. package/dist/botlit/components/ErrorState.d.ts +10 -0
  41. package/dist/botlit/components/ErrorState.js +5 -6
  42. package/dist/botlit/components/ErrorState.js.map +1 -1
  43. package/dist/botlit/components/Input.d.ts +27 -0
  44. package/dist/botlit/components/Input.js +1 -2
  45. package/dist/botlit/components/Input.js.map +1 -1
  46. package/dist/botlit/components/KnowledgeSourceImportPanel.d.ts +3 -0
  47. package/dist/botlit/components/KnowledgeSourceImportPanel.js +12 -13
  48. package/dist/botlit/components/KnowledgeSourceImportPanel.js.map +1 -1
  49. package/dist/botlit/components/ModelRegistrationPanel.d.ts +5 -0
  50. package/dist/botlit/components/ModelRegistrationPanel.js +1 -2
  51. package/dist/botlit/components/ModelRegistrationPanel.js.map +1 -1
  52. package/dist/botlit/components/PageLayout.d.ts +12 -0
  53. package/dist/botlit/components/PageLayout.js +1 -2
  54. package/dist/botlit/components/PageLayout.js.map +1 -1
  55. package/dist/botlit/components/QuotaExhaustedDialog.d.ts +9 -0
  56. package/dist/botlit/components/QuotaExhaustedDialog.js +1 -2
  57. package/dist/botlit/components/QuotaExhaustedDialog.js.map +1 -1
  58. package/dist/botlit/components/RetentionStatusPanel.d.ts +2 -0
  59. package/dist/botlit/components/RetentionStatusPanel.js +18 -19
  60. package/dist/botlit/components/RetentionStatusPanel.js.map +1 -1
  61. package/dist/botlit/components/RouteLoader.d.ts +23 -0
  62. package/dist/botlit/components/RouteLoader.js +1 -2
  63. package/dist/botlit/components/RouteLoader.js.map +1 -1
  64. package/dist/botlit/components/VersionHistoryPanel.d.ts +12 -0
  65. package/dist/botlit/components/VersionHistoryPanel.js +23 -24
  66. package/dist/botlit/components/VersionHistoryPanel.js.map +1 -1
  67. package/dist/botlit/components/WorkspaceRequired.d.ts +18 -0
  68. package/dist/botlit/components/WorkspaceRequired.js +1 -2
  69. package/dist/botlit/components/WorkspaceRequired.js.map +1 -1
  70. package/dist/botlit/components/index.d.ts +14 -0
  71. package/dist/botlit/hooks/index.d.ts +36 -0
  72. package/dist/botlit/hooks/index.js +15 -14
  73. package/dist/botlit/hooks/internal/mutationInput.d.ts +56 -0
  74. package/dist/botlit/hooks/internal/mutationInput.js +1 -2
  75. package/dist/botlit/hooks/internal/mutationInput.js.map +1 -1
  76. package/dist/botlit/hooks/internal/workspaceGateway.d.ts +54 -0
  77. package/dist/botlit/hooks/internal/workspaceGateway.js +17 -19
  78. package/dist/botlit/hooks/internal/workspaceGateway.js.map +1 -1
  79. package/dist/botlit/hooks/useA2A.d.ts +104 -0
  80. package/dist/botlit/hooks/useA2A.js +45 -45
  81. package/dist/botlit/hooks/useA2A.js.map +1 -1
  82. package/dist/botlit/hooks/useAgentApprovals.d.ts +62 -0
  83. package/dist/botlit/hooks/useAgentApprovals.js +38 -39
  84. package/dist/botlit/hooks/useAgentApprovals.js.map +1 -1
  85. package/dist/botlit/hooks/useAgents.d.ts +105 -0
  86. package/dist/botlit/hooks/useAgents.js +53 -54
  87. package/dist/botlit/hooks/useAgents.js.map +1 -1
  88. package/dist/botlit/hooks/useAiOperations.d.ts +95 -0
  89. package/dist/botlit/hooks/useAiOperations.js +20 -19
  90. package/dist/botlit/hooks/useAiOperations.js.map +1 -1
  91. package/dist/botlit/hooks/useAssistantChannels.d.ts +16 -0
  92. package/dist/botlit/hooks/useAssistantChannels.js +1 -2
  93. package/dist/botlit/hooks/useAssistantChannels.js.map +1 -1
  94. package/dist/botlit/hooks/useAssistantRuntimeSetup.d.ts +17 -0
  95. package/dist/botlit/hooks/useAssistantRuntimeSetup.js +1 -2
  96. package/dist/botlit/hooks/useAssistantRuntimeSetup.js.map +1 -1
  97. package/dist/botlit/hooks/useAssistantWebsites.d.ts +18 -0
  98. package/dist/botlit/hooks/useAssistantWebsites.js +1 -2
  99. package/dist/botlit/hooks/useAssistantWebsites.js.map +1 -1
  100. package/dist/botlit/hooks/useBotWorkflow.d.ts +22 -0
  101. package/dist/botlit/hooks/useBotWorkflow.js +1 -2
  102. package/dist/botlit/hooks/useBotWorkflow.js.map +1 -1
  103. package/dist/botlit/hooks/useBots.d.ts +68 -0
  104. package/dist/botlit/hooks/useBots.js +32 -33
  105. package/dist/botlit/hooks/useBots.js.map +1 -1
  106. package/dist/botlit/hooks/useBuckets.d.ts +57 -0
  107. package/dist/botlit/hooks/useBuckets.js +38 -39
  108. package/dist/botlit/hooks/useBuckets.js.map +1 -1
  109. package/dist/botlit/hooks/useChannels.d.ts +87 -0
  110. package/dist/botlit/hooks/useChannels.js +73 -73
  111. package/dist/botlit/hooks/useChannels.js.map +1 -1
  112. package/dist/botlit/hooks/useConversations.d.ts +42 -0
  113. package/dist/botlit/hooks/useConversations.js +1 -2
  114. package/dist/botlit/hooks/useConversations.js.map +1 -1
  115. package/dist/botlit/hooks/useExecutions.d.ts +87 -0
  116. package/dist/botlit/hooks/useExecutions.js +37 -37
  117. package/dist/botlit/hooks/useExecutions.js.map +1 -1
  118. package/dist/botlit/hooks/useKnowledgeBases.d.ts +79 -0
  119. package/dist/botlit/hooks/useKnowledgeBases.js +40 -39
  120. package/dist/botlit/hooks/useKnowledgeBases.js.map +1 -1
  121. package/dist/botlit/hooks/useKnowledgeSourceImports.d.ts +21 -0
  122. package/dist/botlit/hooks/useKnowledgeSourceImports.js +1 -2
  123. package/dist/botlit/hooks/useKnowledgeSourceImports.js.map +1 -1
  124. package/dist/botlit/hooks/useLLMProviders.d.ts +66 -0
  125. package/dist/botlit/hooks/useLLMProviders.js +25 -26
  126. package/dist/botlit/hooks/useLLMProviders.js.map +1 -1
  127. package/dist/botlit/hooks/useMCPServers.d.ts +71 -0
  128. package/dist/botlit/hooks/useMCPServers.js +40 -38
  129. package/dist/botlit/hooks/useMCPServers.js.map +1 -1
  130. package/dist/botlit/hooks/usePolicies.d.ts +60 -0
  131. package/dist/botlit/hooks/usePolicies.js +49 -49
  132. package/dist/botlit/hooks/usePolicies.js.map +1 -1
  133. package/dist/botlit/hooks/usePromptTemplates.d.ts +88 -0
  134. package/dist/botlit/hooks/usePromptTemplates.js +57 -57
  135. package/dist/botlit/hooks/usePromptTemplates.js.map +1 -1
  136. package/dist/botlit/hooks/useRetention.d.ts +26 -0
  137. package/dist/botlit/hooks/useRetention.js +3 -3
  138. package/dist/botlit/hooks/useRetention.js.map +1 -1
  139. package/dist/botlit/hooks/useRetrievalProfiles.d.ts +75 -0
  140. package/dist/botlit/hooks/useRetrievalProfiles.js +47 -47
  141. package/dist/botlit/hooks/useRetrievalProfiles.js.map +1 -1
  142. package/dist/botlit/hooks/useSkills.d.ts +64 -0
  143. package/dist/botlit/hooks/useSkills.js +53 -53
  144. package/dist/botlit/hooks/useSkills.js.map +1 -1
  145. package/dist/botlit/hooks/useStore.d.ts +112 -0
  146. package/dist/botlit/hooks/useStore.js +55 -55
  147. package/dist/botlit/hooks/useStore.js.map +1 -1
  148. package/dist/botlit/hooks/useUserPlatformConnection.d.ts +80 -0
  149. package/dist/botlit/hooks/useUserPlatformConnection.js +19 -19
  150. package/dist/botlit/hooks/useUserPlatformConnection.js.map +1 -1
  151. package/dist/botlit/index.d.ts +16 -0
  152. package/dist/botlit/index.js +12 -11
  153. package/dist/botlit/pages/A2AAgentDetailPage.d.ts +6 -0
  154. package/dist/botlit/pages/A2AAgentDetailPage.js +171 -178
  155. package/dist/botlit/pages/A2AAgentDetailPage.js.map +1 -1
  156. package/dist/botlit/pages/A2ARegistryPage.d.ts +2 -0
  157. package/dist/botlit/pages/A2ARegistryPage.js +25 -26
  158. package/dist/botlit/pages/A2ARegistryPage.js.map +1 -1
  159. package/dist/botlit/pages/AgentApprovalsPage.d.ts +2 -0
  160. package/dist/botlit/pages/AgentApprovalsPage.js +32 -33
  161. package/dist/botlit/pages/AgentApprovalsPage.js.map +1 -1
  162. package/dist/botlit/pages/AgentBuilderPage.d.ts +2 -0
  163. package/dist/botlit/pages/AgentBuilderPage.js +59 -60
  164. package/dist/botlit/pages/AgentBuilderPage.js.map +1 -1
  165. package/dist/botlit/pages/AgentDetailPage.d.ts +2 -0
  166. package/dist/botlit/pages/AgentDetailPage.js +83 -84
  167. package/dist/botlit/pages/AgentDetailPage.js.map +1 -1
  168. package/dist/botlit/pages/AgentsListPage.d.ts +2 -0
  169. package/dist/botlit/pages/AgentsListPage.js +71 -72
  170. package/dist/botlit/pages/AgentsListPage.js.map +1 -1
  171. package/dist/botlit/pages/AiOperationsPage.d.ts +2 -0
  172. package/dist/botlit/pages/AiOperationsPage.js +52 -53
  173. package/dist/botlit/pages/AiOperationsPage.js.map +1 -1
  174. package/dist/botlit/pages/BotChannelsTab.d.ts +7 -0
  175. package/dist/botlit/pages/BotChannelsTab.js +120 -122
  176. package/dist/botlit/pages/BotChannelsTab.js.map +1 -1
  177. package/dist/botlit/pages/BotDetailPage.d.ts +7 -0
  178. package/dist/botlit/pages/BotDetailPage.js +353 -358
  179. package/dist/botlit/pages/BotDetailPage.js.map +1 -1
  180. package/dist/botlit/pages/BotWorkflowTab.d.ts +11 -0
  181. package/dist/botlit/pages/BotWorkflowTab.js +20 -21
  182. package/dist/botlit/pages/BotWorkflowTab.js.map +1 -1
  183. package/dist/botlit/pages/BotsListPage.d.ts +2 -0
  184. package/dist/botlit/pages/BotsListPage.js +52 -53
  185. package/dist/botlit/pages/BotsListPage.js.map +1 -1
  186. package/dist/botlit/pages/BucketsPage.d.ts +2 -0
  187. package/dist/botlit/pages/BucketsPage.js +260 -261
  188. package/dist/botlit/pages/BucketsPage.js.map +1 -1
  189. package/dist/botlit/pages/ChannelDetailPage.d.ts +6 -0
  190. package/dist/botlit/pages/ChannelDetailPage.js +97 -96
  191. package/dist/botlit/pages/ChannelDetailPage.js.map +1 -1
  192. package/dist/botlit/pages/ChannelRoutesPage.d.ts +2 -0
  193. package/dist/botlit/pages/ChannelRoutesPage.js +23 -24
  194. package/dist/botlit/pages/ChannelRoutesPage.js.map +1 -1
  195. package/dist/botlit/pages/ChannelsPage.d.ts +2 -0
  196. package/dist/botlit/pages/ChannelsPage.js +44 -45
  197. package/dist/botlit/pages/ChannelsPage.js.map +1 -1
  198. package/dist/botlit/pages/ChatPage.d.ts +1 -0
  199. package/dist/botlit/pages/ChatPage.js +10 -11
  200. package/dist/botlit/pages/ChatPage.js.map +1 -1
  201. package/dist/botlit/pages/ConversationDetailPage.d.ts +2 -0
  202. package/dist/botlit/pages/ConversationsPage.d.ts +2 -0
  203. package/dist/botlit/pages/DashboardPage.d.ts +2 -0
  204. package/dist/botlit/pages/DashboardPage.js +37 -38
  205. package/dist/botlit/pages/DashboardPage.js.map +1 -1
  206. package/dist/botlit/pages/ExecutionDetailPage.d.ts +2 -0
  207. package/dist/botlit/pages/ExecutionDetailPage.js +47 -48
  208. package/dist/botlit/pages/ExecutionDetailPage.js.map +1 -1
  209. package/dist/botlit/pages/ExecutionsPage.d.ts +2 -0
  210. package/dist/botlit/pages/ExecutionsPage.js +72 -70
  211. package/dist/botlit/pages/ExecutionsPage.js.map +1 -1
  212. package/dist/botlit/pages/InstalledPackagesPage.d.ts +2 -0
  213. package/dist/botlit/pages/InstalledPackagesPage.js +77 -78
  214. package/dist/botlit/pages/InstalledPackagesPage.js.map +1 -1
  215. package/dist/botlit/pages/KnowledgeBaseDetailPage.d.ts +6 -0
  216. package/dist/botlit/pages/KnowledgeBaseDetailPage.js +171 -181
  217. package/dist/botlit/pages/KnowledgeBaseDetailPage.js.map +1 -1
  218. package/dist/botlit/pages/KnowledgeBasesPage.d.ts +2 -0
  219. package/dist/botlit/pages/KnowledgeBasesPage.js +30 -31
  220. package/dist/botlit/pages/KnowledgeBasesPage.js.map +1 -1
  221. package/dist/botlit/pages/MCPServerDetailPage.d.ts +6 -0
  222. package/dist/botlit/pages/MCPServerDetailPage.js +82 -83
  223. package/dist/botlit/pages/MCPServerDetailPage.js.map +1 -1
  224. package/dist/botlit/pages/MCPServersPage.d.ts +2 -0
  225. package/dist/botlit/pages/MCPServersPage.js +54 -55
  226. package/dist/botlit/pages/MCPServersPage.js.map +1 -1
  227. package/dist/botlit/pages/PoliciesPage.d.ts +2 -0
  228. package/dist/botlit/pages/PoliciesPage.js +25 -26
  229. package/dist/botlit/pages/PoliciesPage.js.map +1 -1
  230. package/dist/botlit/pages/PolicyDetailPage.d.ts +6 -0
  231. package/dist/botlit/pages/PolicyDetailPage.js +257 -259
  232. package/dist/botlit/pages/PolicyDetailPage.js.map +1 -1
  233. package/dist/botlit/pages/PromptStudioPage.d.ts +2 -0
  234. package/dist/botlit/pages/PromptStudioPage.js +35 -35
  235. package/dist/botlit/pages/PromptStudioPage.js.map +1 -1
  236. package/dist/botlit/pages/PromptTemplateDetailPage.d.ts +6 -0
  237. package/dist/botlit/pages/PromptTemplateDetailPage.js +363 -362
  238. package/dist/botlit/pages/PromptTemplateDetailPage.js.map +1 -1
  239. package/dist/botlit/pages/PromptTemplatesPage.d.ts +2 -0
  240. package/dist/botlit/pages/PromptTemplatesPage.js +26 -27
  241. package/dist/botlit/pages/PromptTemplatesPage.js.map +1 -1
  242. package/dist/botlit/pages/RetrievalProfileDetailPage.d.ts +6 -0
  243. package/dist/botlit/pages/RetrievalProfileDetailPage.js +150 -158
  244. package/dist/botlit/pages/RetrievalProfileDetailPage.js.map +1 -1
  245. package/dist/botlit/pages/RetrievalProfilesPage.d.ts +2 -0
  246. package/dist/botlit/pages/RetrievalProfilesPage.js +24 -25
  247. package/dist/botlit/pages/RetrievalProfilesPage.js.map +1 -1
  248. package/dist/botlit/pages/SettingsPage.d.ts +2 -0
  249. package/dist/botlit/pages/SettingsPage.js +124 -125
  250. package/dist/botlit/pages/SettingsPage.js.map +1 -1
  251. package/dist/botlit/pages/SkillDetailPage.d.ts +6 -0
  252. package/dist/botlit/pages/SkillDetailPage.js +216 -217
  253. package/dist/botlit/pages/SkillDetailPage.js.map +1 -1
  254. package/dist/botlit/pages/SkillsPage.d.ts +2 -0
  255. package/dist/botlit/pages/SkillsPage.js +24 -25
  256. package/dist/botlit/pages/SkillsPage.js.map +1 -1
  257. package/dist/botlit/pages/StorePackageDetailPage.d.ts +2 -0
  258. package/dist/botlit/pages/StorePackageDetailPage.js +38 -39
  259. package/dist/botlit/pages/StorePackageDetailPage.js.map +1 -1
  260. package/dist/botlit/pages/StorePage.d.ts +2 -0
  261. package/dist/botlit/pages/StorePage.js +135 -136
  262. package/dist/botlit/pages/StorePage.js.map +1 -1
  263. package/dist/botlit/pages/index.d.ts +39 -0
  264. package/dist/botlit/permissions/PermissionRequired.d.ts +20 -0
  265. package/dist/botlit/permissions/PermissionRequired.js +10 -11
  266. package/dist/botlit/permissions/PermissionRequired.js.map +1 -1
  267. package/dist/botlit/permissions/botmanorPermissions.d.ts +82 -0
  268. package/dist/botlit/permissions/botmanorPermissions.js +1 -2
  269. package/dist/botlit/permissions/botmanorPermissions.js.map +1 -1
  270. package/dist/botlit/permissions/index.d.ts +7 -0
  271. package/dist/botlit/permissions/index.js +4 -3
  272. package/dist/botlit/permissions/useBotmanorPermissions.d.ts +41 -0
  273. package/dist/botlit/permissions/useBotmanorPermissions.js +1 -2
  274. package/dist/botlit/permissions/useBotmanorPermissions.js.map +1 -1
  275. package/dist/botlit/providers/BotlitProvider.d.ts +14 -0
  276. package/dist/botlit/providers/BotlitProvider.js +3 -3
  277. package/dist/botlit/providers/BotlitProvider.js.map +1 -1
  278. package/dist/botlit/store/botlitStore.d.ts +85 -0
  279. package/dist/botlit/store/botlitStore.js +1 -2
  280. package/dist/botlit/store/botlitStore.js.map +1 -1
  281. package/dist/botlit/store/renamedKeyStorage.d.ts +13 -0
  282. package/dist/botlit/store/renamedKeyStorage.js +1 -2
  283. package/dist/botlit/store/renamedKeyStorage.js.map +1 -1
  284. package/dist/botlit/types/index.d.ts +1008 -0
  285. package/dist/botlit/utils/cn.d.ts +2 -0
  286. package/dist/botlit/utils/cn.js +1 -2
  287. package/dist/botlit/utils/cn.js.map +1 -1
  288. package/dist/botlit/utils/embedding-models.d.ts +9 -0
  289. package/dist/botlit/utils/embedding-models.js +1 -2
  290. package/dist/botlit/utils/embedding-models.js.map +1 -1
  291. package/dist/botlit/utils/errors.d.ts +19 -0
  292. package/dist/botlit/utils/errors.js +1 -2
  293. package/dist/botlit/utils/errors.js.map +1 -1
  294. package/dist/botlit/utils/formatters.d.ts +38 -0
  295. package/dist/botlit/utils/formatters.js +0 -1
  296. package/dist/botlit/utils/formatters.js.map +1 -1
  297. package/dist/botlit/utils/navigation.d.ts +19 -0
  298. package/dist/botlit/utils/navigation.js +1 -2
  299. package/dist/botlit/utils/navigation.js.map +1 -1
  300. package/dist/botlit/utils/policyConfig.d.ts +68 -0
  301. package/dist/botlit/utils/policyConfig.js +2 -3
  302. package/dist/botlit/utils/policyConfig.js.map +1 -1
  303. package/dist/botlit/utils/unions.d.ts +25 -0
  304. package/dist/botlit/utils/unions.js +1 -2
  305. package/dist/botlit/utils/unions.js.map +1 -1
  306. package/dist/dev/App.d.ts +2 -0
  307. package/dist/dev/main.d.ts +0 -0
  308. package/dist/generated/global-operations.d.ts +197 -0
  309. package/dist/generated/global-operations.js +1 -2
  310. package/dist/generated/global-operations.js.map +1 -1
  311. package/dist/generated/global-types.d.ts +27678 -0
  312. package/dist/generated/global-types.js +1 -2
  313. package/dist/generated/global-types.js.map +1 -1
  314. package/dist/generated/wspace-operations.d.ts +5489 -0
  315. package/dist/generated/wspace-operations.js +64 -60
  316. package/dist/generated/wspace-operations.js.map +1 -1
  317. package/dist/generated/wspace-types.d.ts +152017 -0
  318. package/dist/generated/wspace-types.js +1 -2
  319. package/dist/generated/wspace-types.js.map +1 -1
  320. package/dist/index.d.ts +5 -0
  321. package/dist/shared/hooks/useTr.d.ts +16 -0
  322. package/dist/shared/hooks/useTr.js +1 -2
  323. package/dist/shared/hooks/useTr.js.map +1 -1
  324. package/dist/stories/Badge.stories.d.ts +11 -0
  325. package/dist/stories/Button.stories.d.ts +13 -0
  326. package/dist/stories/EmptyState.stories.d.ts +8 -0
  327. package/dist/stories/StatusBadge.stories.d.ts +9 -0
  328. package/dist/test/fixtures.d.ts +39 -0
  329. package/dist/test/happydom.d.ts +1 -0
  330. package/dist/test/renderPage.d.ts +18 -0
  331. package/dist/test/setup.d.ts +9 -0
  332. package/dist/utils/nativeBridge.d.ts +2 -0
  333. package/dist/utils/nativeBridge.js +1 -2
  334. package/package.json +87 -60
@@ -1 +1 @@
1
- {"version":3,"file":"AgentDetailPage.js","names":[],"sources":["../../../src/botlit/pages/AgentDetailPage.tsx"],"sourcesContent":["/**\n * Agent Detail Page\n * @module botlit/pages\n *\n * Displays agent details using flat API fields from the real GraphQL backend.\n * Maps flat fields (systemPrompt, llmModelId, mcpConnectionIds, knowledgeBaseIds, capabilities[])\n * to a rich detail view with tabs.\n */\n\nimport type { FC, ReactNode } from 'react';\nimport { useState } from 'react';\nimport { useParams } from 'react-router';\nimport {\n ArrowLeft,\n Play,\n Settings,\n BarChart3,\n BookOpen,\n Wrench,\n Shield,\n Brain,\n MessageSquare,\n Edit,\n Share2,\n FileText,\n Trash2,\n History,\n ShieldCheck,\n} from 'lucide-react';\nimport { useTr } from '../../shared/hooks/useTr';\nimport { toast } from 'sonner';\nimport { PagePurpose, NextSteps, GlassCard } from '@burdenoff/fe-libs/ui';\nimport { PageLayout } from '../components/PageLayout';\nimport { Card, CardHeader, CardTitle, CardContent, CardDescription } from '../components/Card';\nimport { Button } from '../components/Button';\nimport { Badge, StatusBadge } from '../components/Badge';\nimport { EmptyState } from '../components/EmptyState';\nimport { VersionHistoryPanel } from '../components/VersionHistoryPanel';\nimport { AgentApprovalPanel } from '../components/AgentApprovalPanel';\nimport { useAgentApprovalSettings } from '../hooks/useAgentApprovals';\nimport { AssistantRuntimeSetupPanel } from '../components/AssistantRuntimeSetupPanel';\nimport { AssistantChannelPanel } from '../components/AssistantChannelPanel';\nimport { AssistantWebsitePanel } from '../components/AssistantWebsitePanel';\nimport { AiOperationsPanel } from '../components/AiOperationsPanel';\nimport { useAgent, useUpdateAgent, useDeleteAgent } from '../hooks/useAgents';\nimport { useBotlit } from '../providers/BotlitProvider';\nimport { formatRelativeTime } from '../utils/formatters';\nimport { cn } from '../utils/cn';\nimport { BOTMANOR_PERMISSIONS, BotmanorPermissionGate, useBotmanorCan } from '../permissions';\n\ntype TabType =\n | 'overview'\n | 'prompt'\n | 'llm'\n | 'tools'\n | 'knowledge'\n | 'guardrails'\n | 'aiOperations'\n | 'a2a'\n | 'versions'\n | 'assistant';\n\nexport const AgentDetailPage: FC = () => {\n const t = useTr();\n const { agentId } = useParams();\n const { navigateTo } = useBotlit();\n const can = useBotmanorCan();\n const { data: agent, loading, refetch: refetchAgent } = useAgent(agentId);\n const [updateAgent, updateAgentResult] = useUpdateAgent();\n const [deleteAgent, deleteAgentResult] = useDeleteAgent();\n const [activeTab, setActiveTab] = useState<TabType>('overview');\n // BOFF-9682: when the workspace requires activation approval, an agent that\n // has never been published goes live through a reviewer, not this button.\n const approvalSettings = useAgentApprovalSettings();\n\n if (loading) {\n return (\n <PageLayout title={t('botlit.common.loading', 'Loading...')}>\n <div className=\"h-96 bg-bg-sunken motion-safe:animate-vc-shimmer rounded-lg\" />\n </PageLayout>\n );\n }\n\n if (!agent) {\n return (\n <PageLayout title={t('botlit.agentDetail.notFound.title', 'Agent Not Found')}>\n <EmptyState\n illustration=\"empty-agents\"\n title={t('botlit.agentDetail.notFound.title', 'Agent Not Found')}\n description={t(\n 'botlit.agentDetail.notFound.description',\n \"The agent you're looking for doesn't exist.\"\n )}\n action={\n <Button onClick={() => navigateTo('agents')}>\n {t('botlit.agentDetail.notFound.backAction', 'Back to Agents')}\n </Button>\n }\n />\n </PageLayout>\n );\n }\n\n // `AgentRecord` declares every field the agent query selects — read directly.\n const systemPrompt = agent.systemPrompt || '';\n const llmModelId = agent.llmModelId || '';\n const temperature = agent.temperature;\n const maxTokens = agent.maxTokens;\n const mcpConnectionIds = agent.mcpConnectionIds ?? [];\n const knowledgeBaseIds = agent.knowledgeBaseIds ?? [];\n const workflowIds = agent.workflowIds ?? [];\n const capabilities = agent.capabilities ?? [];\n const tagIds = agent.tagIds ?? [];\n const maxConcurrentExecutions = agent.maxConcurrentExecutions || 10;\n const metadata = agent.metadata ?? null;\n\n const tabs: { id: TabType; label: string; icon: ReactNode }[] = [\n { id: 'assistant', label: 'Assistant setup', icon: <Settings size={16} /> },\n {\n id: 'overview',\n label: t('botlit.agentDetail.tabs.overview', 'Overview'),\n icon: <BarChart3 size={16} />,\n },\n {\n id: 'prompt',\n label: t('botlit.agentDetail.tabs.prompt', 'Prompt'),\n icon: <FileText size={16} />,\n },\n {\n id: 'llm',\n label: t('botlit.agentDetail.tabs.llmConfig', 'LLM Config'),\n icon: <Brain size={16} />,\n },\n { id: 'tools', label: t('botlit.agentDetail.tabs.tools', 'Tools'), icon: <Wrench size={16} /> },\n {\n id: 'knowledge',\n label: t('botlit.agentDetail.tabs.knowledge', 'Knowledge'),\n icon: <BookOpen size={16} />,\n },\n {\n id: 'guardrails',\n label: t('botlit.agentDetail.tabs.guardrails', 'Guardrails'),\n icon: <Shield size={16} />,\n },\n {\n id: 'aiOperations',\n label: t('botlit.agentDetail.tabs.aiOperations', 'AI Operations'),\n icon: <ShieldCheck size={16} />,\n },\n { id: 'a2a', label: t('botlit.agentDetail.tabs.a2a', 'A2A'), icon: <Share2 size={16} /> },\n {\n id: 'versions',\n label: t('botlit.agentDetail.tabs.versions', 'Versions'),\n icon: <History size={16} />,\n },\n ];\n\n return (\n <PageLayout\n title={\n <div className=\"flex items-center gap-3\">\n <Button variant=\"ghost\" size=\"icon\" onClick={() => navigateTo('agents')}>\n <ArrowLeft size={20} />\n </Button>\n <span className=\"text-3xl\">{'🤖'}</span>\n <div>\n <div className=\"flex items-center gap-2\">\n <span>{agent.name}</span>\n <StatusBadge status={agent.status} />\n <Badge variant=\"outline\">{agent.slug}</Badge>\n </div>\n <p className=\"text-sm font-normal text-text-secondary\">{agent.description}</p>\n </div>\n </div>\n }\n actions={\n <div className=\"flex gap-2\">\n {approvalSettings.data?.requireActivationApproval &&\n (agent.status === 'DRAFT' || agent.status === 'ARCHIVED') &&\n !agent.currentVersionId ? (\n <BotmanorPermissionGate permission={BOTMANOR_PERMISSIONS.AGENT_UPDATE}>\n <Button\n variant=\"default\"\n onClick={() => {\n setActiveTab('overview');\n requestAnimationFrame(() =>\n document\n .querySelector('[data-testid=\"agent-approval-panel\"]')\n ?.scrollIntoView({ behavior: 'smooth', block: 'start' })\n );\n }}\n >\n {t('botlit.agentApproval.requestAction', 'Request activation')}\n </Button>\n </BotmanorPermissionGate>\n ) : agent.status === 'DRAFT' || agent.status === 'ARCHIVED' ? (\n <BotmanorPermissionGate permission={BOTMANOR_PERMISSIONS.AGENT_UPDATE}>\n <Button\n variant=\"default\"\n isLoading={updateAgentResult.loading}\n onClick={async () => {\n try {\n if (!agentId) return;\n await updateAgent({ agentId, input: { status: 'ACTIVE' } });\n await refetchAgent();\n toast.success(\n `${t('botlit.agentDetail.activate.successPrefix', 'Agent')} \"${agent.name}\" ${t('botlit.agentDetail.activate.successSuffix', 'activated')}`\n );\n } catch (err: unknown) {\n toast.error(\n err instanceof Error\n ? err.message\n : t('botlit.agentDetail.activate.error', 'Failed to activate agent')\n );\n }\n }}\n >\n {t('botlit.agentDetail.actions.activate', 'Activate')}\n </Button>\n </BotmanorPermissionGate>\n ) : (\n <BotmanorPermissionGate permission={BOTMANOR_PERMISSIONS.AGENT_UPDATE}>\n <Button\n variant=\"outline\"\n isLoading={updateAgentResult.loading}\n onClick={async () => {\n try {\n if (!agentId) return;\n await updateAgent({ agentId, input: { status: 'DRAFT' } });\n await refetchAgent();\n toast.success(\n `${t('botlit.agentDetail.deactivate.successPrefix', 'Agent')} \"${agent.name}\" ${t('botlit.agentDetail.deactivate.successSuffix', 'deactivated')}`\n );\n } catch (err: unknown) {\n toast.error(\n err instanceof Error\n ? err.message\n : t('botlit.agentDetail.deactivate.error', 'Failed to deactivate agent')\n );\n }\n }}\n >\n {t('botlit.agentDetail.actions.deactivate', 'Deactivate')}\n </Button>\n </BotmanorPermissionGate>\n )}\n <BotmanorPermissionGate permission={BOTMANOR_PERMISSIONS.AGENT_UPDATE}>\n <Button\n variant=\"outline\"\n leftIcon={<Edit size={16} />}\n onClick={() => navigateTo(`agents/${agentId}/edit`)}\n >\n {t('botlit.agentDetail.actions.editAgent', 'Edit Agent')}\n </Button>\n </BotmanorPermissionGate>\n <BotmanorPermissionGate permission={BOTMANOR_PERMISSIONS.AGENT_EXECUTE}>\n <Button leftIcon={<Play size={16} />} onClick={() => navigateTo(`chat/${agentId}`)}>\n {t('botlit.agentDetail.actions.testAgent', 'Test Agent')}\n </Button>\n </BotmanorPermissionGate>\n <BotmanorPermissionGate permission={BOTMANOR_PERMISSIONS.AGENT_DELETE}>\n <Button\n variant=\"destructive\"\n leftIcon={<Trash2 size={16} />}\n isLoading={deleteAgentResult.loading}\n onClick={async () => {\n if (!agentId) return;\n if (\n !confirm(\n `${t('botlit.agentDetail.delete.confirmPrefix', 'Are you sure you want to delete')} \"${agent.name}\"? ${t('botlit.agentDetail.delete.confirmSuffix', 'This action cannot be undone.')}`\n )\n )\n return;\n try {\n await deleteAgent(agentId);\n toast.success(\n `${t('botlit.agentDetail.delete.successPrefix', 'Agent')} \"${agent.name}\" ${t('botlit.agentDetail.delete.successSuffix', 'deleted successfully')}`\n );\n navigateTo('agents');\n } catch (err: unknown) {\n toast.error(\n err instanceof Error\n ? err.message\n : t('botlit.agentDetail.delete.error', 'Failed to delete agent')\n );\n }\n }}\n >\n {t('botlit.common.delete', 'Delete')}\n </Button>\n </BotmanorPermissionGate>\n </div>\n }\n >\n <div className=\"space-y-6\">\n {activeTab === 'assistant' && agentId && (\n <div className=\"space-y-5\">\n {/* Each panel is setup work: runtime configuration needs update, and\n publishing (whose listings are publish-gated too) needs publish. */}\n {can(BOTMANOR_PERMISSIONS.AGENT_UPDATE) && (\n <AssistantRuntimeSetupPanel\n agentId={agentId}\n onConfigured={() => void refetchAgent()}\n />\n )}\n {can(BOTMANOR_PERMISSIONS.AGENT_PUBLISH) && (\n <>\n <AssistantWebsitePanel agentId={agentId} knowledgeBaseIds={knowledgeBaseIds} />\n <AssistantChannelPanel agentId={agentId} />\n </>\n )}\n {!can(BOTMANOR_PERMISSIONS.AGENT_UPDATE) &&\n !can(BOTMANOR_PERMISSIONS.AGENT_PUBLISH) && (\n <p role=\"status\" className=\"text-sm text-text-secondary\">\n {t(\n 'botlit.agentDetail.assistant.readOnly',\n 'Assistant setup and publishing are available to members who can edit or publish agents in this workspace.'\n )}\n </p>\n )}\n </div>\n )}\n <PagePurpose icon={<Brain size={18} />}>\n {t(\n 'botlit.agentDetail.purpose',\n 'This is the full configuration for a single agent — its prompt, model settings, the tools and knowledge it can use, its guardrails and how it talks to other agents. Use the tabs to inspect or change any part, and test the agent in chat to confirm it behaves the way you expect before going live.'\n )}\n </PagePurpose>\n\n {/* Tabs */}\n <div className=\"flex gap-1 border-b border-border-subtle overflow-x-auto\">\n {tabs.map((tab) => (\n <button\n key={tab.id}\n onClick={() => setActiveTab(tab.id)}\n className={cn(\n 'flex items-center gap-2 px-4 py-2 text-sm font-medium border-b-2 transition-colors whitespace-nowrap',\n activeTab === tab.id\n ? 'border-primary text-primary'\n : 'border-transparent text-text-secondary hover:text-text-primary'\n )}\n >\n {tab.icon}\n {tab.label}\n </button>\n ))}\n </div>\n\n {/* Overview Tab */}\n {activeTab === 'overview' && (\n <div className=\"space-y-6\">\n <NextSteps\n storageKey={`botlit-agent-${agentId}`}\n steps={[\n {\n id: 'test',\n label: t('botlit.agentDetail.nextSteps.test', 'Test the agent in chat'),\n description: t(\n 'botlit.agentDetail.nextSteps.testDesc',\n 'Send it a few real prompts to see how it responds.'\n ),\n icon: <Play size={16} />,\n onClick: () => navigateTo(`chat/${agentId}`),\n },\n {\n id: 'prompt',\n label: t('botlit.agentDetail.nextSteps.prompt', 'Refine the system prompt'),\n description: t(\n 'botlit.agentDetail.nextSteps.promptDesc',\n 'Tune its instructions and behaviour.'\n ),\n icon: <FileText size={16} />,\n onClick: () => setActiveTab('prompt'),\n },\n {\n id: 'tools',\n label: t('botlit.agentDetail.nextSteps.tools', 'Connect tools & knowledge'),\n description: t(\n 'botlit.agentDetail.nextSteps.toolsDesc',\n 'Give it MCP tools and knowledge bases to work with.'\n ),\n icon: <Wrench size={16} />,\n onClick: () => setActiveTab('tools'),\n },\n {\n id: 'activate',\n label: t('botlit.agentDetail.nextSteps.activate', 'Activate and attach to a bot'),\n description: t(\n 'botlit.agentDetail.nextSteps.activateDesc',\n 'Put it live so a bot can route conversations to it.'\n ),\n icon: <Share2 size={16} />,\n onClick: () => navigateTo(`agents/${agentId}/edit`),\n done: agent.status === 'ACTIVE',\n },\n ]}\n />\n {agentId && (\n <AgentApprovalPanel\n agentId={agentId}\n agentStatus={agent.status}\n onChanged={() => void refetchAgent()}\n />\n )}\n <div className=\"grid grid-cols-1 lg:grid-cols-3 gap-6\">\n {/* Quick Info */}\n <Card className=\"lg:col-span-1\">\n <CardHeader>\n <CardTitle>Details</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div>\n <p className=\"text-sm text-text-secondary\">Status</p>\n <StatusBadge status={agent.status} />\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Type</p>\n <Badge variant=\"outline\">{agent.type}</Badge>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Visibility</p>\n <Badge variant=\"outline\">{agent.visibility}</Badge>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">LLM Model</p>\n <p className=\"font-medium font-mono text-sm\">\n {llmModelId || 'Not configured'}\n </p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">MCP Connections</p>\n <p className=\"font-medium\">{mcpConnectionIds.length} servers</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Knowledge Bases</p>\n <p className=\"font-medium\">{knowledgeBaseIds.length} KBs</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Max Concurrent</p>\n <p className=\"font-medium\">{maxConcurrentExecutions}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Executions</p>\n <p className=\"font-medium\">{agent.executionCount ?? 0}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Created</p>\n <p className=\"font-medium\">{formatRelativeTime(agent.createdAt)}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Updated</p>\n <p className=\"font-medium\">{formatRelativeTime(agent.updatedAt)}</p>\n </div>\n </CardContent>\n </Card>\n\n {/* Capabilities */}\n <GlassCard treatment=\"glass\" glow className=\"lg:col-span-2 p-6\">\n <h3 className=\"mb-4 text-lg font-semibold tracking-tight text-text-primary\">\n {t('botlit.agentDetail.capabilities.title', 'Capabilities')}\n </h3>\n <div>\n {capabilities.length > 0 ? (\n <div className=\"grid grid-cols-2 md:grid-cols-3 gap-4\">\n {capabilities.map((cap: string) => (\n <div\n key={cap}\n className=\"p-3 rounded-lg border border-green-500 bg-green-500/10\"\n >\n <p className=\"font-medium\">{cap}</p>\n <Badge variant=\"success\">\n {t('botlit.agentDetail.capabilities.enabled', 'Enabled')}\n </Badge>\n </div>\n ))}\n </div>\n ) : (\n <p className=\"text-text-secondary\">\n {t('botlit.agentDetail.capabilities.empty', 'No capabilities configured')}\n </p>\n )}\n </div>\n </GlassCard>\n\n {/* Tags */}\n {tagIds.length > 0 && (\n <Card className=\"lg:col-span-3\">\n <CardHeader>\n <CardTitle>{t('botlit.agentDetail.tags.title', 'Tags')}</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"flex flex-wrap gap-2\">\n {tagIds.map((tag: string) => (\n <Badge key={tag} variant=\"outline\">\n {tag}\n </Badge>\n ))}\n </div>\n </CardContent>\n </Card>\n )}\n </div>\n </div>\n )}\n\n {/* Prompt Tab */}\n {activeTab === 'prompt' && (\n <div className=\"space-y-6\">\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <FileText size={18} />\n {t('botlit.agentDetail.prompt.title', 'System Prompt')}\n </CardTitle>\n <CardDescription>\n {t(\n 'botlit.agentDetail.prompt.description',\n \"The system prompt that defines this agent's behavior\"\n )}\n </CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n {systemPrompt ? (\n <pre className=\"p-4 bg-bg-sunken rounded-lg text-sm whitespace-pre-wrap font-mono\">\n {systemPrompt}\n </pre>\n ) : (\n <p className=\"text-text-secondary\">\n {t('botlit.agentDetail.prompt.empty', 'No system prompt configured')}\n </p>\n )}\n </CardContent>\n </Card>\n </div>\n )}\n\n {/* LLM Config Tab */}\n {activeTab === 'llm' && (\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-6\">\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Brain size={18} />\n {t('botlit.agentDetail.llm.title', 'Model Configuration')}\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div>\n <p className=\"text-sm text-text-secondary\">LLM Model ID</p>\n <p className=\"font-medium font-mono\">{llmModelId || 'Not configured'}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Temperature</p>\n <p className=\"font-medium\">{temperature != null ? temperature : 'Default'}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Max Tokens</p>\n <p className=\"font-medium\">{maxTokens != null ? maxTokens : 'Default'}</p>\n </div>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <MessageSquare size={18} />\n {t('botlit.agentDetail.executionLimits.title', 'Execution Limits')}\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div>\n <p className=\"text-sm text-text-secondary\">Max Concurrent Executions</p>\n <p className=\"font-medium\">{maxConcurrentExecutions}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Total Executions</p>\n <p className=\"font-medium\">{agent.executionCount ?? 0}</p>\n </div>\n {agent.lastExecutedAt && (\n <div>\n <p className=\"text-sm text-text-secondary\">Last Executed</p>\n <p className=\"font-medium\">{formatRelativeTime(agent.lastExecutedAt)}</p>\n </div>\n )}\n </CardContent>\n </Card>\n </div>\n )}\n\n {/* Tools Tab */}\n {activeTab === 'tools' && (\n <div className=\"space-y-6\">\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Wrench size={18} />\n MCP Server Connections\n </CardTitle>\n <CardDescription>Connected MCP servers providing tools</CardDescription>\n </CardHeader>\n <CardContent>\n {mcpConnectionIds.length > 0 ? (\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {mcpConnectionIds.map((mcpId: string) => (\n <div\n key={mcpId}\n className=\"flex items-center gap-3 p-4 border border-border-subtle rounded-lg\"\n >\n <div className=\"p-2 bg-action-primary-bg/10 rounded-lg\">\n <Wrench size={18} className=\"text-primary\" />\n </div>\n <div>\n <p className=\"font-medium\">MCP Server</p>\n <p className=\"text-sm text-text-secondary font-mono\">{mcpId}</p>\n </div>\n </div>\n ))}\n </div>\n ) : (\n <p className=\"text-text-secondary\">No MCP servers connected</p>\n )}\n </CardContent>\n </Card>\n\n {workflowIds.length > 0 && (\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Settings size={18} />\n Workflows\n </CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {workflowIds.map((wfId: string) => (\n <div key={wfId} className=\"p-4 border border-border-subtle rounded-lg\">\n <p className=\"font-mono text-sm\">{wfId}</p>\n </div>\n ))}\n </div>\n </CardContent>\n </Card>\n )}\n </div>\n )}\n\n {/* Knowledge Tab */}\n {activeTab === 'knowledge' && (\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <BookOpen size={18} />\n Knowledge Bases\n </CardTitle>\n <CardDescription>Connected knowledge bases for RAG</CardDescription>\n </CardHeader>\n <CardContent>\n {knowledgeBaseIds.length > 0 ? (\n <div className=\"space-y-4\">\n {knowledgeBaseIds.map((kbId: string, index: number) => (\n <div\n key={index}\n className=\"p-4 border border-border-subtle rounded-lg space-y-2\"\n >\n <div className=\"flex items-center justify-between\">\n <p className=\"font-medium\">Knowledge Base</p>\n <Badge variant=\"outline\">#{index + 1}</Badge>\n </div>\n <p className=\"font-mono text-sm\">{kbId}</p>\n </div>\n ))}\n </div>\n ) : (\n <p className=\"text-text-secondary\">No knowledge bases connected</p>\n )}\n </CardContent>\n </Card>\n )}\n\n {/* Guardrails Tab */}\n {activeTab === 'guardrails' && (\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Shield size={18} />\n Guardrails & Policies\n </CardTitle>\n <CardDescription>Security and policy configurations</CardDescription>\n </CardHeader>\n <CardContent>\n {metadata ? (\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {Object.entries(metadata)\n .filter(([_, value]) => value)\n .map(([key, value]) => (\n <div key={key} className=\"p-4 border border-border-subtle rounded-lg\">\n <p className=\"text-sm text-text-secondary capitalize\">\n {key\n .replace('Id', '')\n .replace(/([A-Z])/g, ' $1')\n .trim()}\n </p>\n <p className=\"font-mono text-sm\">{String(value)}</p>\n </div>\n ))}\n </div>\n ) : (\n <p className=\"text-text-secondary\">No policy bindings configured</p>\n )}\n </CardContent>\n </Card>\n )}\n\n {/* AI Operations Tab (supervisor findings for this agent, BOFF-3839) */}\n {activeTab === 'aiOperations' && agentId && (\n <AiOperationsPanel\n filter={{ subjectType: 'AGENT', subjectId: agentId }}\n description={t(\n 'botlit.agentDetail.aiOperationsDescription',\n 'What the supervisor flagged for this agent — drift, evidence and the recommended action.'\n )}\n />\n )}\n\n {/* A2A Tab */}\n {activeTab === 'a2a' && (\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Share2 size={18} />\n A2A Configuration\n </CardTitle>\n <CardDescription>Agent-to-Agent communication settings</CardDescription>\n </CardHeader>\n <CardContent>\n <p className=\"text-text-secondary\">A2A is not enabled for this agent</p>\n </CardContent>\n </Card>\n )}\n\n {/* Versions Tab (BOFF-4381) */}\n {activeTab === 'versions' && agentId && (\n <VersionHistoryPanel\n agentId={agentId}\n draftVersionId={agent.draftVersionId}\n currentVersionId={agent.currentVersionId}\n onChanged={() => void refetchAgent()}\n />\n )}\n </div>\n </PageLayout>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"AgentDetailPage.js","names":["_Fragment","AgentDetailPage","t","useTr","useParams","useBotlit","can","useBotmanorCan","agent","refetchAgent","useAgent","agentId","updateAgent","updateAgentResult","useUpdateAgent","deleteAgent","deleteAgentResult","useDeleteAgent","activeTab","setActiveTab","useState","approvalSettings","useAgentApprovalSettings","loading","PageLayout","EmptyState","Button","navigateTo","systemPrompt","llmModelId","temperature","maxTokens","mcpConnectionIds","knowledgeBaseIds","workflowIds","capabilities","tagIds","maxConcurrentExecutions","metadata","tabs","Settings","BarChart3","FileText","Brain","Wrench","BookOpen","Shield","ShieldCheck","Share2","History","ArrowLeft","StatusBadge","Badge","BotmanorPermissionGate","BOTMANOR_PERMISSIONS","toast","err","Edit","Play","Trash2","AssistantRuntimeSetupPanel","Fragment","AssistantWebsitePanel","AssistantChannelPanel","PagePurpose","tab","cn","NextSteps","AgentApprovalPanel","Card","CardHeader","CardTitle","CardContent","formatRelativeTime","GlassCard","cap","tag","CardDescription","MessageSquare","mcpId","wfId","index","kbId","_","value","key","AiOperationsPanel","VersionHistoryPanel"],"sources":["../../../src/botlit/pages/AgentDetailPage.tsx"],"sourcesContent":["/**\n * Agent Detail Page\n * @module botlit/pages\n *\n * Displays agent details using flat API fields from the real GraphQL backend.\n * Maps flat fields (systemPrompt, llmModelId, mcpConnectionIds, knowledgeBaseIds, capabilities[])\n * to a rich detail view with tabs.\n */\n\nimport type { FC, ReactNode } from 'react';\nimport { useState } from 'react';\nimport { useParams } from 'react-router';\nimport {\n ArrowLeft,\n Play,\n Settings,\n BarChart3,\n BookOpen,\n Wrench,\n Shield,\n Brain,\n MessageSquare,\n Edit,\n Share2,\n FileText,\n Trash2,\n History,\n ShieldCheck,\n} from 'lucide-react';\nimport { useTr } from '../../shared/hooks/useTr';\nimport { toast } from 'sonner';\nimport { PagePurpose, NextSteps, GlassCard } from '@burdenoff/fe-libs/ui';\nimport { PageLayout } from '../components/PageLayout';\nimport { Card, CardHeader, CardTitle, CardContent, CardDescription } from '../components/Card';\nimport { Button } from '../components/Button';\nimport { Badge, StatusBadge } from '../components/Badge';\nimport { EmptyState } from '../components/EmptyState';\nimport { VersionHistoryPanel } from '../components/VersionHistoryPanel';\nimport { AgentApprovalPanel } from '../components/AgentApprovalPanel';\nimport { useAgentApprovalSettings } from '../hooks/useAgentApprovals';\nimport { AssistantRuntimeSetupPanel } from '../components/AssistantRuntimeSetupPanel';\nimport { AssistantChannelPanel } from '../components/AssistantChannelPanel';\nimport { AssistantWebsitePanel } from '../components/AssistantWebsitePanel';\nimport { AiOperationsPanel } from '../components/AiOperationsPanel';\nimport { useAgent, useUpdateAgent, useDeleteAgent } from '../hooks/useAgents';\nimport { useBotlit } from '../providers/BotlitProvider';\nimport { formatRelativeTime } from '../utils/formatters';\nimport { cn } from '../utils/cn';\nimport { BOTMANOR_PERMISSIONS, BotmanorPermissionGate, useBotmanorCan } from '../permissions';\n\ntype TabType =\n | 'overview'\n | 'prompt'\n | 'llm'\n | 'tools'\n | 'knowledge'\n | 'guardrails'\n | 'aiOperations'\n | 'a2a'\n | 'versions'\n | 'assistant';\n\nexport const AgentDetailPage: FC = () => {\n const t = useTr();\n const { agentId } = useParams();\n const { navigateTo } = useBotlit();\n const can = useBotmanorCan();\n const { data: agent, loading, refetch: refetchAgent } = useAgent(agentId);\n const [updateAgent, updateAgentResult] = useUpdateAgent();\n const [deleteAgent, deleteAgentResult] = useDeleteAgent();\n const [activeTab, setActiveTab] = useState<TabType>('overview');\n // BOFF-9682: when the workspace requires activation approval, an agent that\n // has never been published goes live through a reviewer, not this button.\n const approvalSettings = useAgentApprovalSettings();\n\n if (loading) {\n return (\n <PageLayout title={t('botlit.common.loading', 'Loading...')}>\n <div className=\"h-96 bg-bg-sunken motion-safe:animate-vc-shimmer rounded-lg\" />\n </PageLayout>\n );\n }\n\n if (!agent) {\n return (\n <PageLayout title={t('botlit.agentDetail.notFound.title', 'Agent Not Found')}>\n <EmptyState\n illustration=\"empty-agents\"\n title={t('botlit.agentDetail.notFound.title', 'Agent Not Found')}\n description={t(\n 'botlit.agentDetail.notFound.description',\n \"The agent you're looking for doesn't exist.\"\n )}\n action={\n <Button onClick={() => navigateTo('agents')}>\n {t('botlit.agentDetail.notFound.backAction', 'Back to Agents')}\n </Button>\n }\n />\n </PageLayout>\n );\n }\n\n // `AgentRecord` declares every field the agent query selects — read directly.\n const systemPrompt = agent.systemPrompt || '';\n const llmModelId = agent.llmModelId || '';\n const temperature = agent.temperature;\n const maxTokens = agent.maxTokens;\n const mcpConnectionIds = agent.mcpConnectionIds ?? [];\n const knowledgeBaseIds = agent.knowledgeBaseIds ?? [];\n const workflowIds = agent.workflowIds ?? [];\n const capabilities = agent.capabilities ?? [];\n const tagIds = agent.tagIds ?? [];\n const maxConcurrentExecutions = agent.maxConcurrentExecutions || 10;\n const metadata = agent.metadata ?? null;\n\n const tabs: { id: TabType; label: string; icon: ReactNode }[] = [\n { id: 'assistant', label: 'Assistant setup', icon: <Settings size={16} /> },\n {\n id: 'overview',\n label: t('botlit.agentDetail.tabs.overview', 'Overview'),\n icon: <BarChart3 size={16} />,\n },\n {\n id: 'prompt',\n label: t('botlit.agentDetail.tabs.prompt', 'Prompt'),\n icon: <FileText size={16} />,\n },\n {\n id: 'llm',\n label: t('botlit.agentDetail.tabs.llmConfig', 'LLM Config'),\n icon: <Brain size={16} />,\n },\n { id: 'tools', label: t('botlit.agentDetail.tabs.tools', 'Tools'), icon: <Wrench size={16} /> },\n {\n id: 'knowledge',\n label: t('botlit.agentDetail.tabs.knowledge', 'Knowledge'),\n icon: <BookOpen size={16} />,\n },\n {\n id: 'guardrails',\n label: t('botlit.agentDetail.tabs.guardrails', 'Guardrails'),\n icon: <Shield size={16} />,\n },\n {\n id: 'aiOperations',\n label: t('botlit.agentDetail.tabs.aiOperations', 'AI Operations'),\n icon: <ShieldCheck size={16} />,\n },\n { id: 'a2a', label: t('botlit.agentDetail.tabs.a2a', 'A2A'), icon: <Share2 size={16} /> },\n {\n id: 'versions',\n label: t('botlit.agentDetail.tabs.versions', 'Versions'),\n icon: <History size={16} />,\n },\n ];\n\n return (\n <PageLayout\n title={\n <div className=\"flex items-center gap-3\">\n <Button variant=\"ghost\" size=\"icon\" onClick={() => navigateTo('agents')}>\n <ArrowLeft size={20} />\n </Button>\n <span className=\"text-3xl\">{'🤖'}</span>\n <div>\n <div className=\"flex items-center gap-2\">\n <span>{agent.name}</span>\n <StatusBadge status={agent.status} />\n <Badge variant=\"outline\">{agent.slug}</Badge>\n </div>\n <p className=\"text-sm font-normal text-text-secondary\">{agent.description}</p>\n </div>\n </div>\n }\n actions={\n <div className=\"flex gap-2\">\n {approvalSettings.data?.requireActivationApproval &&\n (agent.status === 'DRAFT' || agent.status === 'ARCHIVED') &&\n !agent.currentVersionId ? (\n <BotmanorPermissionGate permission={BOTMANOR_PERMISSIONS.AGENT_UPDATE}>\n <Button\n variant=\"default\"\n onClick={() => {\n setActiveTab('overview');\n requestAnimationFrame(() =>\n document\n .querySelector('[data-testid=\"agent-approval-panel\"]')\n ?.scrollIntoView({ behavior: 'smooth', block: 'start' })\n );\n }}\n >\n {t('botlit.agentApproval.requestAction', 'Request activation')}\n </Button>\n </BotmanorPermissionGate>\n ) : agent.status === 'DRAFT' || agent.status === 'ARCHIVED' ? (\n <BotmanorPermissionGate permission={BOTMANOR_PERMISSIONS.AGENT_UPDATE}>\n <Button\n variant=\"default\"\n isLoading={updateAgentResult.loading}\n onClick={async () => {\n try {\n if (!agentId) return;\n await updateAgent({ agentId, input: { status: 'ACTIVE' } });\n await refetchAgent();\n toast.success(\n `${t('botlit.agentDetail.activate.successPrefix', 'Agent')} \"${agent.name}\" ${t('botlit.agentDetail.activate.successSuffix', 'activated')}`\n );\n } catch (err: unknown) {\n toast.error(\n err instanceof Error\n ? err.message\n : t('botlit.agentDetail.activate.error', 'Failed to activate agent')\n );\n }\n }}\n >\n {t('botlit.agentDetail.actions.activate', 'Activate')}\n </Button>\n </BotmanorPermissionGate>\n ) : (\n <BotmanorPermissionGate permission={BOTMANOR_PERMISSIONS.AGENT_UPDATE}>\n <Button\n variant=\"outline\"\n isLoading={updateAgentResult.loading}\n onClick={async () => {\n try {\n if (!agentId) return;\n await updateAgent({ agentId, input: { status: 'DRAFT' } });\n await refetchAgent();\n toast.success(\n `${t('botlit.agentDetail.deactivate.successPrefix', 'Agent')} \"${agent.name}\" ${t('botlit.agentDetail.deactivate.successSuffix', 'deactivated')}`\n );\n } catch (err: unknown) {\n toast.error(\n err instanceof Error\n ? err.message\n : t('botlit.agentDetail.deactivate.error', 'Failed to deactivate agent')\n );\n }\n }}\n >\n {t('botlit.agentDetail.actions.deactivate', 'Deactivate')}\n </Button>\n </BotmanorPermissionGate>\n )}\n <BotmanorPermissionGate permission={BOTMANOR_PERMISSIONS.AGENT_UPDATE}>\n <Button\n variant=\"outline\"\n leftIcon={<Edit size={16} />}\n onClick={() => navigateTo(`agents/${agentId}/edit`)}\n >\n {t('botlit.agentDetail.actions.editAgent', 'Edit Agent')}\n </Button>\n </BotmanorPermissionGate>\n <BotmanorPermissionGate permission={BOTMANOR_PERMISSIONS.AGENT_EXECUTE}>\n <Button leftIcon={<Play size={16} />} onClick={() => navigateTo(`chat/${agentId}`)}>\n {t('botlit.agentDetail.actions.testAgent', 'Test Agent')}\n </Button>\n </BotmanorPermissionGate>\n <BotmanorPermissionGate permission={BOTMANOR_PERMISSIONS.AGENT_DELETE}>\n <Button\n variant=\"destructive\"\n leftIcon={<Trash2 size={16} />}\n isLoading={deleteAgentResult.loading}\n onClick={async () => {\n if (!agentId) return;\n if (\n !confirm(\n `${t('botlit.agentDetail.delete.confirmPrefix', 'Are you sure you want to delete')} \"${agent.name}\"? ${t('botlit.agentDetail.delete.confirmSuffix', 'This action cannot be undone.')}`\n )\n )\n return;\n try {\n await deleteAgent(agentId);\n toast.success(\n `${t('botlit.agentDetail.delete.successPrefix', 'Agent')} \"${agent.name}\" ${t('botlit.agentDetail.delete.successSuffix', 'deleted successfully')}`\n );\n navigateTo('agents');\n } catch (err: unknown) {\n toast.error(\n err instanceof Error\n ? err.message\n : t('botlit.agentDetail.delete.error', 'Failed to delete agent')\n );\n }\n }}\n >\n {t('botlit.common.delete', 'Delete')}\n </Button>\n </BotmanorPermissionGate>\n </div>\n }\n >\n <div className=\"space-y-6\">\n {activeTab === 'assistant' && agentId && (\n <div className=\"space-y-5\">\n {/* Each panel is setup work: runtime configuration needs update, and\n publishing (whose listings are publish-gated too) needs publish. */}\n {can(BOTMANOR_PERMISSIONS.AGENT_UPDATE) && (\n <AssistantRuntimeSetupPanel\n agentId={agentId}\n onConfigured={() => void refetchAgent()}\n />\n )}\n {can(BOTMANOR_PERMISSIONS.AGENT_PUBLISH) && (\n <>\n <AssistantWebsitePanel agentId={agentId} knowledgeBaseIds={knowledgeBaseIds} />\n <AssistantChannelPanel agentId={agentId} />\n </>\n )}\n {!can(BOTMANOR_PERMISSIONS.AGENT_UPDATE) &&\n !can(BOTMANOR_PERMISSIONS.AGENT_PUBLISH) && (\n <p role=\"status\" className=\"text-sm text-text-secondary\">\n {t(\n 'botlit.agentDetail.assistant.readOnly',\n 'Assistant setup and publishing are available to members who can edit or publish agents in this workspace.'\n )}\n </p>\n )}\n </div>\n )}\n <PagePurpose icon={<Brain size={18} />}>\n {t(\n 'botlit.agentDetail.purpose',\n 'This is the full configuration for a single agent — its prompt, model settings, the tools and knowledge it can use, its guardrails and how it talks to other agents. Use the tabs to inspect or change any part, and test the agent in chat to confirm it behaves the way you expect before going live.'\n )}\n </PagePurpose>\n\n {/* Tabs */}\n <div className=\"flex gap-1 border-b border-border-subtle overflow-x-auto\">\n {tabs.map((tab) => (\n <button\n key={tab.id}\n onClick={() => setActiveTab(tab.id)}\n className={cn(\n 'flex items-center gap-2 px-4 py-2 text-sm font-medium border-b-2 transition-colors whitespace-nowrap',\n activeTab === tab.id\n ? 'border-primary text-primary'\n : 'border-transparent text-text-secondary hover:text-text-primary'\n )}\n >\n {tab.icon}\n {tab.label}\n </button>\n ))}\n </div>\n\n {/* Overview Tab */}\n {activeTab === 'overview' && (\n <div className=\"space-y-6\">\n <NextSteps\n storageKey={`botlit-agent-${agentId}`}\n steps={[\n {\n id: 'test',\n label: t('botlit.agentDetail.nextSteps.test', 'Test the agent in chat'),\n description: t(\n 'botlit.agentDetail.nextSteps.testDesc',\n 'Send it a few real prompts to see how it responds.'\n ),\n icon: <Play size={16} />,\n onClick: () => navigateTo(`chat/${agentId}`),\n },\n {\n id: 'prompt',\n label: t('botlit.agentDetail.nextSteps.prompt', 'Refine the system prompt'),\n description: t(\n 'botlit.agentDetail.nextSteps.promptDesc',\n 'Tune its instructions and behaviour.'\n ),\n icon: <FileText size={16} />,\n onClick: () => setActiveTab('prompt'),\n },\n {\n id: 'tools',\n label: t('botlit.agentDetail.nextSteps.tools', 'Connect tools & knowledge'),\n description: t(\n 'botlit.agentDetail.nextSteps.toolsDesc',\n 'Give it MCP tools and knowledge bases to work with.'\n ),\n icon: <Wrench size={16} />,\n onClick: () => setActiveTab('tools'),\n },\n {\n id: 'activate',\n label: t('botlit.agentDetail.nextSteps.activate', 'Activate and attach to a bot'),\n description: t(\n 'botlit.agentDetail.nextSteps.activateDesc',\n 'Put it live so a bot can route conversations to it.'\n ),\n icon: <Share2 size={16} />,\n onClick: () => navigateTo(`agents/${agentId}/edit`),\n done: agent.status === 'ACTIVE',\n },\n ]}\n />\n {agentId && (\n <AgentApprovalPanel\n agentId={agentId}\n agentStatus={agent.status}\n onChanged={() => void refetchAgent()}\n />\n )}\n <div className=\"grid grid-cols-1 lg:grid-cols-3 gap-6\">\n {/* Quick Info */}\n <Card className=\"lg:col-span-1\">\n <CardHeader>\n <CardTitle>Details</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div>\n <p className=\"text-sm text-text-secondary\">Status</p>\n <StatusBadge status={agent.status} />\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Type</p>\n <Badge variant=\"outline\">{agent.type}</Badge>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Visibility</p>\n <Badge variant=\"outline\">{agent.visibility}</Badge>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">LLM Model</p>\n <p className=\"font-medium font-mono text-sm\">\n {llmModelId || 'Not configured'}\n </p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">MCP Connections</p>\n <p className=\"font-medium\">{mcpConnectionIds.length} servers</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Knowledge Bases</p>\n <p className=\"font-medium\">{knowledgeBaseIds.length} KBs</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Max Concurrent</p>\n <p className=\"font-medium\">{maxConcurrentExecutions}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Executions</p>\n <p className=\"font-medium\">{agent.executionCount ?? 0}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Created</p>\n <p className=\"font-medium\">{formatRelativeTime(agent.createdAt)}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Updated</p>\n <p className=\"font-medium\">{formatRelativeTime(agent.updatedAt)}</p>\n </div>\n </CardContent>\n </Card>\n\n {/* Capabilities */}\n <GlassCard treatment=\"glass\" glow className=\"lg:col-span-2 p-6\">\n <h3 className=\"mb-4 text-lg font-semibold tracking-tight text-text-primary\">\n {t('botlit.agentDetail.capabilities.title', 'Capabilities')}\n </h3>\n <div>\n {capabilities.length > 0 ? (\n <div className=\"grid grid-cols-2 md:grid-cols-3 gap-4\">\n {capabilities.map((cap: string) => (\n <div\n key={cap}\n className=\"p-3 rounded-lg border border-green-500 bg-green-500/10\"\n >\n <p className=\"font-medium\">{cap}</p>\n <Badge variant=\"success\">\n {t('botlit.agentDetail.capabilities.enabled', 'Enabled')}\n </Badge>\n </div>\n ))}\n </div>\n ) : (\n <p className=\"text-text-secondary\">\n {t('botlit.agentDetail.capabilities.empty', 'No capabilities configured')}\n </p>\n )}\n </div>\n </GlassCard>\n\n {/* Tags */}\n {tagIds.length > 0 && (\n <Card className=\"lg:col-span-3\">\n <CardHeader>\n <CardTitle>{t('botlit.agentDetail.tags.title', 'Tags')}</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"flex flex-wrap gap-2\">\n {tagIds.map((tag: string) => (\n <Badge key={tag} variant=\"outline\">\n {tag}\n </Badge>\n ))}\n </div>\n </CardContent>\n </Card>\n )}\n </div>\n </div>\n )}\n\n {/* Prompt Tab */}\n {activeTab === 'prompt' && (\n <div className=\"space-y-6\">\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <FileText size={18} />\n {t('botlit.agentDetail.prompt.title', 'System Prompt')}\n </CardTitle>\n <CardDescription>\n {t(\n 'botlit.agentDetail.prompt.description',\n \"The system prompt that defines this agent's behavior\"\n )}\n </CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n {systemPrompt ? (\n <pre className=\"p-4 bg-bg-sunken rounded-lg text-sm whitespace-pre-wrap font-mono\">\n {systemPrompt}\n </pre>\n ) : (\n <p className=\"text-text-secondary\">\n {t('botlit.agentDetail.prompt.empty', 'No system prompt configured')}\n </p>\n )}\n </CardContent>\n </Card>\n </div>\n )}\n\n {/* LLM Config Tab */}\n {activeTab === 'llm' && (\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-6\">\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Brain size={18} />\n {t('botlit.agentDetail.llm.title', 'Model Configuration')}\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div>\n <p className=\"text-sm text-text-secondary\">LLM Model ID</p>\n <p className=\"font-medium font-mono\">{llmModelId || 'Not configured'}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Temperature</p>\n <p className=\"font-medium\">{temperature != null ? temperature : 'Default'}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Max Tokens</p>\n <p className=\"font-medium\">{maxTokens != null ? maxTokens : 'Default'}</p>\n </div>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <MessageSquare size={18} />\n {t('botlit.agentDetail.executionLimits.title', 'Execution Limits')}\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div>\n <p className=\"text-sm text-text-secondary\">Max Concurrent Executions</p>\n <p className=\"font-medium\">{maxConcurrentExecutions}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Total Executions</p>\n <p className=\"font-medium\">{agent.executionCount ?? 0}</p>\n </div>\n {agent.lastExecutedAt && (\n <div>\n <p className=\"text-sm text-text-secondary\">Last Executed</p>\n <p className=\"font-medium\">{formatRelativeTime(agent.lastExecutedAt)}</p>\n </div>\n )}\n </CardContent>\n </Card>\n </div>\n )}\n\n {/* Tools Tab */}\n {activeTab === 'tools' && (\n <div className=\"space-y-6\">\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Wrench size={18} />\n MCP Server Connections\n </CardTitle>\n <CardDescription>Connected MCP servers providing tools</CardDescription>\n </CardHeader>\n <CardContent>\n {mcpConnectionIds.length > 0 ? (\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {mcpConnectionIds.map((mcpId: string) => (\n <div\n key={mcpId}\n className=\"flex items-center gap-3 p-4 border border-border-subtle rounded-lg\"\n >\n <div className=\"p-2 bg-action-primary-bg/10 rounded-lg\">\n <Wrench size={18} className=\"text-primary\" />\n </div>\n <div>\n <p className=\"font-medium\">MCP Server</p>\n <p className=\"text-sm text-text-secondary font-mono\">{mcpId}</p>\n </div>\n </div>\n ))}\n </div>\n ) : (\n <p className=\"text-text-secondary\">No MCP servers connected</p>\n )}\n </CardContent>\n </Card>\n\n {workflowIds.length > 0 && (\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Settings size={18} />\n Workflows\n </CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {workflowIds.map((wfId: string) => (\n <div key={wfId} className=\"p-4 border border-border-subtle rounded-lg\">\n <p className=\"font-mono text-sm\">{wfId}</p>\n </div>\n ))}\n </div>\n </CardContent>\n </Card>\n )}\n </div>\n )}\n\n {/* Knowledge Tab */}\n {activeTab === 'knowledge' && (\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <BookOpen size={18} />\n Knowledge Bases\n </CardTitle>\n <CardDescription>Connected knowledge bases for RAG</CardDescription>\n </CardHeader>\n <CardContent>\n {knowledgeBaseIds.length > 0 ? (\n <div className=\"space-y-4\">\n {knowledgeBaseIds.map((kbId: string, index: number) => (\n <div\n key={index}\n className=\"p-4 border border-border-subtle rounded-lg space-y-2\"\n >\n <div className=\"flex items-center justify-between\">\n <p className=\"font-medium\">Knowledge Base</p>\n <Badge variant=\"outline\">#{index + 1}</Badge>\n </div>\n <p className=\"font-mono text-sm\">{kbId}</p>\n </div>\n ))}\n </div>\n ) : (\n <p className=\"text-text-secondary\">No knowledge bases connected</p>\n )}\n </CardContent>\n </Card>\n )}\n\n {/* Guardrails Tab */}\n {activeTab === 'guardrails' && (\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Shield size={18} />\n Guardrails & Policies\n </CardTitle>\n <CardDescription>Security and policy configurations</CardDescription>\n </CardHeader>\n <CardContent>\n {metadata ? (\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {Object.entries(metadata)\n .filter(([_, value]) => value)\n .map(([key, value]) => (\n <div key={key} className=\"p-4 border border-border-subtle rounded-lg\">\n <p className=\"text-sm text-text-secondary capitalize\">\n {key\n .replace('Id', '')\n .replace(/([A-Z])/g, ' $1')\n .trim()}\n </p>\n <p className=\"font-mono text-sm\">{String(value)}</p>\n </div>\n ))}\n </div>\n ) : (\n <p className=\"text-text-secondary\">No policy bindings configured</p>\n )}\n </CardContent>\n </Card>\n )}\n\n {/* AI Operations Tab (supervisor findings for this agent, BOFF-3839) */}\n {activeTab === 'aiOperations' && agentId && (\n <AiOperationsPanel\n filter={{ subjectType: 'AGENT', subjectId: agentId }}\n description={t(\n 'botlit.agentDetail.aiOperationsDescription',\n 'What the supervisor flagged for this agent — drift, evidence and the recommended action.'\n )}\n />\n )}\n\n {/* A2A Tab */}\n {activeTab === 'a2a' && (\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Share2 size={18} />\n A2A Configuration\n </CardTitle>\n <CardDescription>Agent-to-Agent communication settings</CardDescription>\n </CardHeader>\n <CardContent>\n <p className=\"text-text-secondary\">A2A is not enabled for this agent</p>\n </CardContent>\n </Card>\n )}\n\n {/* Versions Tab (BOFF-4381) */}\n {activeTab === 'versions' && agentId && (\n <VersionHistoryPanel\n agentId={agentId}\n draftVersionId={agent.draftVersionId}\n currentVersionId={agent.currentVersionId}\n onChanged={() => void refetchAgent()}\n />\n )}\n </div>\n </PageLayout>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA8DA,IAAaC,UAA4B;CACvC,IAAMC,IAAIC,EAAM,GACV,EAAE,eAAYC,GAAU,GACxB,EAAE,kBAAeC,GAAU,GAC3BC,IAAMC,EAAe,GACrB,EAAE,MAAMC,GAAO,aAAS,SAASC,MAAiBC,EAASC,CAAO,GAClE,CAACC,GAAaC,KAAqBC,EAAe,GAClD,CAACC,IAAaC,MAAqBC,EAAe,GAClD,CAACC,GAAWC,KAAgBC,GAAkB,UAAU,GAGxDC,KAAmBC,EAAyB;CAElD,IAAIC,IACF,OACE,kBAACC,GAAD;EAAY,OAAOtB,EAAE,yBAAyB,YAAY;EACxD,UAAA,kBAAC,OAAD,EAAK,WAAU,8DAA+D,CAAA;CACpE,CAAA;CAIhB,IAAI,CAACM,GACH,OACE,kBAACgB,GAAD;EAAY,OAAOtB,EAAE,qCAAqC,iBAAiB;EACzE,UAAA,kBAACuB,GAAD;GACE,cAAa;GACb,OAAOvB,EAAE,qCAAqC,iBAAiB;GAC/D,aAAaA,EACX,2CACA,6CACF;GACA,QACE,kBAACwB,GAAD;IAAQ,eAAeC,EAAW,QAAQ;IACvC,UAAAzB,EAAE,0CAA0C,gBAAgB;GACvD,CAAA;EAEX,CAAA;CACS,CAAA;CAKhB,IAAM0B,IAAepB,EAAM,gBAAgB,IACrCqB,IAAarB,EAAM,cAAc,IACjCsB,KAActB,EAAM,aACpBuB,KAAYvB,EAAM,WAClBwB,IAAmBxB,EAAM,oBAAoB,CAAC,GAC9CyB,IAAmBzB,EAAM,oBAAoB,CAAC,GAC9C0B,IAAc1B,EAAM,eAAe,CAAC,GACpC2B,IAAe3B,EAAM,gBAAgB,CAAC,GACtC4B,IAAS5B,EAAM,UAAU,CAAC,GAC1B6B,IAA0B7B,EAAM,2BAA2B,IAC3D8B,IAAW9B,EAAM,YAAY,MAE7B+B,KAA0D;EAC9D;GAAE,IAAI;GAAa,OAAO;GAAmB,MAAM,kBAACC,GAAD,EAAU,MAAM,GAAK,CAAA;EAAE;EAC1E;GACE,IAAI;GACJ,OAAOtC,EAAE,oCAAoC,UAAU;GACvD,MAAM,kBAACuC,IAAD,EAAW,MAAM,GAAK,CAAA;EAC9B;EACA;GACE,IAAI;GACJ,OAAOvC,EAAE,kCAAkC,QAAQ;GACnD,MAAM,kBAACwC,GAAD,EAAU,MAAM,GAAK,CAAA;EAC7B;EACA;GACE,IAAI;GACJ,OAAOxC,EAAE,qCAAqC,YAAY;GAC1D,MAAM,kBAACyC,GAAD,EAAO,MAAM,GAAK,CAAA;EAC1B;EACA;GAAE,IAAI;GAAS,OAAOzC,EAAE,iCAAiC,OAAO;GAAG,MAAM,kBAAC0C,GAAD,EAAQ,MAAM,GAAK,CAAA;EAAE;EAC9F;GACE,IAAI;GACJ,OAAO1C,EAAE,qCAAqC,WAAW;GACzD,MAAM,kBAAC2C,GAAD,EAAU,MAAM,GAAK,CAAA;EAC7B;EACA;GACE,IAAI;GACJ,OAAO3C,EAAE,sCAAsC,YAAY;GAC3D,MAAM,kBAAC4C,GAAD,EAAQ,MAAM,GAAK,CAAA;EAC3B;EACA;GACE,IAAI;GACJ,OAAO5C,EAAE,wCAAwC,eAAe;GAChE,MAAM,kBAAC6C,GAAD,EAAa,MAAM,GAAK,CAAA;EAChC;EACA;GAAE,IAAI;GAAO,OAAO7C,EAAE,+BAA+B,KAAK;GAAG,MAAM,kBAAC8C,GAAD,EAAQ,MAAM,GAAK,CAAA;EAAE;EACxF;GACE,IAAI;GACJ,OAAO9C,EAAE,oCAAoC,UAAU;GACvD,MAAM,kBAAC+C,IAAD,EAAS,MAAM,GAAK,CAAA;EAC5B;CACF;CAEA,OACE,kBAACzB,GAAD;EACE,OACE,kBAAC,OAAD;GAAK,WAAU;GAAf,UAAA;IACE,kBAACE,GAAD;KAAQ,SAAQ;KAAQ,MAAK;KAAO,eAAeC,EAAW,QAAQ;KACpE,UAAA,kBAACuB,IAAD,EAAW,MAAM,GAAK,CAAA;IAChB,CAAA;IACR,kBAAC,QAAD;KAAM,WAAU;KAAY,UAAA;IAAW,CAAA;IACvC,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,OAAD;KAAK,WAAU;KAAf,UAAA;MACE,kBAAC,QAAD,EAAA,UAAO1C,EAAM,KAAW,CAAA;MACxB,kBAAC2C,GAAD,EAAa,QAAQ3C,EAAM,OAAS,CAAA;MACpC,kBAAC4C,GAAD;OAAO,SAAQ;OAAW,UAAA5C,EAAM;MAAY,CAAA;KACzC;IACL,CAAA,GAAA,kBAAC,KAAD;KAAG,WAAU;KAA2C,UAAAA,EAAM;IAAe,CAAA,CAC1E,EAAA,CAAA;GACF;;EAEP,SACE,kBAAC,OAAD;GAAK,WAAU;GAAf,UAAA;IACGa,GAAiB,MAAM,8BACvBb,EAAM,WAAW,WAAWA,EAAM,WAAW,eAC9C,CAACA,EAAM,mBACL,kBAAC6C,GAAD;KAAwB,YAAYC,EAAqB;KACvD,UAAA,kBAAC5B,GAAD;MACE,SAAQ;MACR,eAAe;OAEb,AADAP,EAAa,UAAU,GACvB,4BACE,SACG,cAAc,wCAAsC,CAAC,EACpD,eAAe;QAAE,UAAU;QAAU,OAAO;OAAQ,CAAC,CAC3D;MACF;MAEC,UAAAjB,EAAE,sCAAsC,oBAAoB;KACvD,CAAA;IACc,CAAA,IACtBM,EAAM,WAAW,WAAWA,EAAM,WAAW,aAC/C,kBAAC6C,GAAD;KAAwB,YAAYC,EAAqB;KACvD,UAAA,kBAAC5B,GAAD;MACE,SAAQ;MACR,WAAWb,EAAkB;MAC7B,SAAS,YAAY;OACnB,IAAI;QACF,IAAI,CAACF,GAAS;QAGd,AAFA,MAAMC,EAAY;SAAE;SAAS,OAAO,EAAE,QAAQ,SAAS;QAAE,CAAC,GAC1D,MAAMH,EAAa,GACnB8C,EAAM,QACJ,GAAGrD,EAAE,6CAA6C,OAAO,EAAE,IAAIM,EAAM,KAAK,IAAIN,EAAE,6CAA6C,WAAW,GAC1I;OACF,SAASsD,GAAc;QACrB,EAAM,MACJA,aAAe,QACXA,EAAI,UACJtD,EAAE,qCAAqC,0BAA0B,CACvE;OACF;MACF;MAEC,UAAAA,EAAE,uCAAuC,UAAU;KAC9C,CAAA;IACc,CAAA,IAExB,kBAACmD,GAAD;KAAwB,YAAYC,EAAqB;KACvD,UAAA,kBAAC5B,GAAD;MACE,SAAQ;MACR,WAAWb,EAAkB;MAC7B,SAAS,YAAY;OACnB,IAAI;QACF,IAAI,CAACF,GAAS;QAGd,AAFA,MAAMC,EAAY;SAAE;SAAS,OAAO,EAAE,QAAQ,QAAQ;QAAE,CAAC,GACzD,MAAMH,EAAa,GACnB8C,EAAM,QACJ,GAAGrD,EAAE,+CAA+C,OAAO,EAAE,IAAIM,EAAM,KAAK,IAAIN,EAAE,+CAA+C,aAAa,GAChJ;OACF,SAASsD,GAAc;QACrB,EAAM,MACJA,aAAe,QACXA,EAAI,UACJtD,EAAE,uCAAuC,4BAA4B,CAC3E;OACF;MACF;MAEC,UAAAA,EAAE,yCAAyC,YAAY;KAClD,CAAA;IACc,CAAA;IAE1B,kBAACmD,GAAD;KAAwB,YAAYC,EAAqB;KACvD,UAAA,kBAAC5B,GAAD;MACE,SAAQ;MACR,UAAU,kBAAC+B,IAAD,EAAM,MAAM,GAAK,CAAA;MAC3B,eAAe9B,EAAW,UAAUhB,EAAQ,MAAM;MAEjD,UAAAT,EAAE,wCAAwC,YAAY;KACjD,CAAA;IACc,CAAA;IACxB,kBAACmD,GAAD;KAAwB,YAAYC,EAAqB;KACvD,UAAA,kBAAC5B,GAAD;MAAQ,UAAU,kBAACgC,GAAD,EAAM,MAAM,GAAK,CAAA;MAAG,eAAe/B,EAAW,QAAQhB,GAAS;MAC9E,UAAAT,EAAE,wCAAwC,YAAY;KACjD,CAAA;IACc,CAAA;IACxB,kBAACmD,GAAD;KAAwB,YAAYC,EAAqB;KACvD,UAAA,kBAAC5B,GAAD;MACE,SAAQ;MACR,UAAU,kBAACiC,GAAD,EAAQ,MAAM,GAAK,CAAA;MAC7B,WAAW3C,GAAkB;MAC7B,SAAS,YAAY;OACnB,IAAKL,KAEF,QACC,GAAGT,EAAE,2CAA2C,iCAAiC,EAAE,IAAIM,EAAM,KAAK,KAAKN,EAAE,2CAA2C,+BAA+B,GACrL,GAGF,IAAI;QAKF,AAJA,MAAMa,GAAYJ,CAAO,GACzB4C,EAAM,QACJ,GAAGrD,EAAE,2CAA2C,OAAO,EAAE,IAAIM,EAAM,KAAK,IAAIN,EAAE,2CAA2C,sBAAsB,GACjJ,GACAyB,EAAW,QAAQ;OACrB,SAAS6B,GAAc;QACrB,EAAM,MACJA,aAAe,QACXA,EAAI,UACJtD,EAAE,mCAAmC,wBAAwB,CACnE;OACF;MACF;MAEC,UAAAA,EAAE,wBAAwB,QAAQ;KAC7B,CAAA;IACc,CAAA;GACrB;;EAGP,UAAA,kBAAC,OAAD;GAAK,WAAU;GAAf,UAAA;IACGgB,MAAc,eAAeP,KAC5B,kBAAC,OAAD;KAAK,WAAU;KAAf,UAAA;MAGGL,EAAIgD,EAAqB,YAAY,KACpC,kBAACM,IAAD;OACW;OACT,oBAAoB,KAAKnD,EAAa;MACvC,CAAA;MAEFH,EAAIgD,EAAqB,aAAa,KACrC,kBAAAtD,IAAA,EAAA,UAAA,CACE,kBAAC8D,IAAD;OAAgC;OAA2B;MAAmB,CAAA,GAC9E,kBAACC,IAAD,EAAgC,WAAU,CAAA,CAC1C,EAAA,CAAA;MAEH,CAACzD,EAAIgD,EAAqB,YAAY,KACrC,CAAChD,EAAIgD,EAAqB,aAAa,KACrC,kBAAC,KAAD;OAAG,MAAK;OAAS,WAAU;OACxB,UAAApD,EACC,yCACA,2GACF;MACC,CAAA;KAEJ;;IAEP,kBAAC8D,IAAD;KAAa,MAAM,kBAACrB,GAAD,EAAO,MAAM,GAAK,CAAA;KAClC,UAAAzC,EACC,8BACA,ySACF;IACW,CAAA;IAGb,kBAAC,OAAD;KAAK,WAAU;KACZ,UAAAqC,GAAK,KAAK,MACT,kBAAC,UAAD;MAEE,eAAepB,EAAa8C,EAAI,EAAE;MAClC,WAAWC,EACT,wGACAhD,MAAc+C,EAAI,KACd,gCACA,gEACN;MARF,UAAA,CAUGA,EAAI,MACJA,EAAI,KACC;KAXD,GAAAA,EAAI,EAWH,CACT;IACE,CAAA;IAGJ/C,MAAc,cACb,kBAAC,OAAD;KAAK,WAAU;KAAf,UAAA;MACE,kBAACiD,IAAD;OACE,YAAY,gBAAgBxD;OAC5B,OAAO;QACL;SACE,IAAI;SACJ,OAAOT,EAAE,qCAAqC,wBAAwB;SACtE,aAAaA,EACX,yCACA,oDACF;SACA,MAAM,kBAACwD,GAAD,EAAM,MAAM,GAAK,CAAA;SACvB,eAAe/B,EAAW,QAAQhB,GAAS;QAC7C;QACA;SACE,IAAI;SACJ,OAAOT,EAAE,uCAAuC,0BAA0B;SAC1E,aAAaA,EACX,2CACA,sCACF;SACA,MAAM,kBAACwC,GAAD,EAAU,MAAM,GAAK,CAAA;SAC3B,eAAevB,EAAa,QAAQ;QACtC;QACA;SACE,IAAI;SACJ,OAAOjB,EAAE,sCAAsC,2BAA2B;SAC1E,aAAaA,EACX,0CACA,qDACF;SACA,MAAM,kBAAC0C,GAAD,EAAQ,MAAM,GAAK,CAAA;SACzB,eAAezB,EAAa,OAAO;QACrC;QACA;SACE,IAAI;SACJ,OAAOjB,EAAE,yCAAyC,8BAA8B;SAChF,aAAaA,EACX,6CACA,qDACF;SACA,MAAM,kBAAC8C,GAAD,EAAQ,MAAM,GAAK,CAAA;SACzB,eAAerB,EAAW,UAAUhB,EAAQ,MAAM;SAClD,MAAMH,EAAM,WAAW;QACzB;OACF;MACD,CAAA;MACAG,KACC,kBAACyD,GAAD;OACW;OACT,aAAa5D,EAAM;OACnB,iBAAiB,KAAKC,EAAa;MACpC,CAAA;MAEH,kBAAC,OAAD;OAAK,WAAU;OAAf,UAAA;QAEE,kBAAC4D,GAAD;SAAM,WAAU;SAAhB,UAAA,CACE,kBAACC,GAAD,EAAA,UACE,kBAACC,GAAD,EAAA,UAAW,UAAkB,CAAA,EACnB,CAAA,GACZ,kBAACC,GAAD;UAAa,WAAU;UAAvB,UAAA;WACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;YAAG,WAAU;YAA8B,UAAA;WAAS,CAAA,GACpD,kBAACrB,GAAD,EAAa,QAAQ3C,EAAM,OAAS,CAAA,CACjC,EAAA,CAAA;WACL,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;YAAG,WAAU;YAA8B,UAAA;WAAO,CAAA,GAClD,kBAAC4C,GAAD;YAAO,SAAQ;YAAW,UAAA5C,EAAM;WAAY,CAAA,CACzC,EAAA,CAAA;WACL,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;YAAG,WAAU;YAA8B,UAAA;WAAa,CAAA,GACxD,kBAAC4C,GAAD;YAAO,SAAQ;YAAW,UAAA5C,EAAM;WAAkB,CAAA,CAC/C,EAAA,CAAA;WACL,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;YAAG,WAAU;YAA8B,UAAA;WAAY,CAAA,GACvD,kBAAC,KAAD;YAAG,WAAU;YACV,UAAAqB,KAAc;WACd,CAAA,CACA,EAAA,CAAA;WACL,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;YAAG,WAAU;YAA8B,UAAA;WAAkB,CAAA,GAC7D,kBAAC,KAAD;YAAG,WAAU;YAAb,UAAA,CAA4BG,EAAiB,QAAO,UAAW;WAC5D,CAAA,CAAA,EAAA,CAAA;WACL,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;YAAG,WAAU;YAA8B,UAAA;WAAkB,CAAA,GAC7D,kBAAC,KAAD;YAAG,WAAU;YAAb,UAAA,CAA4BC,EAAiB,QAAO,MAAO;WACxD,CAAA,CAAA,EAAA,CAAA;WACL,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;YAAG,WAAU;YAA8B,UAAA;WAAiB,CAAA,GAC5D,kBAAC,KAAD;YAAG,WAAU;YAAe,UAAAI;WAA2B,CAAA,CACpD,EAAA,CAAA;WACL,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;YAAG,WAAU;YAA8B,UAAA;WAAa,CAAA,GACxD,kBAAC,KAAD;YAAG,WAAU;YAAe,UAAA7B,EAAM,kBAAkB;WAAK,CAAA,CACtD,EAAA,CAAA;WACL,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;YAAG,WAAU;YAA8B,UAAA;WAAU,CAAA,GACrD,kBAAC,KAAD;YAAG,WAAU;YAAe,UAAAiE,EAAmBjE,EAAM,SAAS;WAAK,CAAA,CAChE,EAAA,CAAA;WACL,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;YAAG,WAAU;YAA8B,UAAA;WAAU,CAAA,GACrD,kBAAC,KAAD;YAAG,WAAU;YAAe,UAAAiE,EAAmBjE,EAAM,SAAS;WAAK,CAAA,CAChE,EAAA,CAAA;UACM;SACT,CAAA,CAAA;;QAGN,kBAACkE,IAAD;SAAW,WAAU;SAAQ,MAAA;SAAK,WAAU;SAA5C,UAAA,CACE,kBAAC,MAAD;UAAI,WAAU;UACX,UAAAxE,EAAE,yCAAyC,cAAc;SACxD,CAAA,GACJ,kBAAC,OAAD,EAAA,UACGiC,EAAa,SAAS,IACrB,kBAAC,OAAD;UAAK,WAAU;UACZ,UAAAA,EAAa,KAAK,MACjB,kBAAC,OAAD;WAEE,WAAU;WAFZ,UAAA,CAIE,kBAAC,KAAD;YAAG,WAAU;YAAe,UAAAwC;WAAO,CAAA,GACnC,kBAACvB,GAAD;YAAO,SAAQ;YACZ,UAAAlD,EAAE,2CAA2C,SAAS;WAClD,CAAA,CACJ;UAPE,GAAAyE,CAOF,CACN;SACE,CAAA,IAEL,kBAAC,KAAD;UAAG,WAAU;UACV,UAAAzE,EAAE,yCAAyC,4BAA4B;SACvE,CAAA,EAEF,CAAA,CACI;;QAGVkC,EAAO,SAAS,KACf,kBAACiC,GAAD;SAAM,WAAU;SAAhB,UAAA,CACE,kBAACC,GAAD,EAAA,UACE,kBAACC,GAAD,EAAA,UAAYrE,EAAE,iCAAiC,MAAM,EAAa,CAAA,EACxD,CAAA,GACZ,kBAACsE,GAAD,EAAA,UACE,kBAAC,OAAD;UAAK,WAAU;UACZ,UAAApC,EAAO,KAAK,MACX,kBAACgB,GAAD;WAAiB,SAAQ;WACtB,UAAAwB;UACI,GAFKA,CAEL,CACR;SACE,CAAA,EACM,CAAA,CACT;;OAEL;;KACF;;IAIN1D,MAAc,YACb,kBAAC,OAAD;KAAK,WAAU;KACb,UAAA,kBAACmD,GAAD,EAAA,UAAA,CACE,kBAACC,GAAD,EAAA,UAAA,CACE,kBAACC,GAAD;MAAW,WAAU;MAArB,UAAA,CACE,kBAAC7B,GAAD,EAAU,MAAM,GAAK,CAAA,GACpBxC,EAAE,mCAAmC,eAAe,CAC5C;KACX,CAAA,GAAA,kBAAC2E,GAAD,EAAA,UACG3E,EACC,yCACA,sDACF,EACe,CAAA,CACP,EAAA,CAAA,GACZ,kBAACsE,GAAD;MAAa,WAAU;MACpB,UAAA5C,IACC,kBAAC,OAAD;OAAK,WAAU;OACZ,UAAAA;MACE,CAAA,IAEL,kBAAC,KAAD;OAAG,WAAU;OACV,UAAA1B,EAAE,mCAAmC,6BAA6B;MAClE,CAAA;KAEM,CAAA,CACT,EAAA,CAAA;IACH,CAAA;IAINgB,MAAc,SACb,kBAAC,OAAD;KAAK,WAAU;KAAf,UAAA,CACE,kBAACmD,GAAD,EAAA,UAAA,CACE,kBAACC,GAAD,EAAA,UACE,kBAACC,GAAD;MAAW,WAAU;MAArB,UAAA,CACE,kBAAC5B,GAAD,EAAO,MAAM,GAAK,CAAA,GACjBzC,EAAE,gCAAgC,qBAAqB,CAC/C;KACD,CAAA,EAAA,CAAA,GACZ,kBAACsE,GAAD;MAAa,WAAU;MAAvB,UAAA;OACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;QAAG,WAAU;QAA8B,UAAA;OAAe,CAAA,GAC1D,kBAAC,KAAD;QAAG,WAAU;QAAyB,UAAA3C,KAAc;OAAoB,CAAA,CACrE,EAAA,CAAA;OACL,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;QAAG,WAAU;QAA8B,UAAA;OAAc,CAAA,GACzD,kBAAC,KAAD;QAAG,WAAU;QAAe,UAAAC,MAAoC;OAAa,CAAA,CAC1E,EAAA,CAAA;OACL,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;QAAG,WAAU;QAA8B,UAAA;OAAa,CAAA,GACxD,kBAAC,KAAD;QAAG,WAAU;QAAe,UAAAC,MAAgC;OAAa,CAAA,CACtE,EAAA,CAAA;MACM;KACT,CAAA,CAAA,EAAA,CAAA,GAEN,kBAACsC,GAAD,EAAA,UAAA,CACE,kBAACC,GAAD,EAAA,UACE,kBAACC,GAAD;MAAW,WAAU;MAArB,UAAA,CACE,kBAACO,IAAD,EAAe,MAAM,GAAK,CAAA,GACzB5E,EAAE,4CAA4C,kBAAkB,CACxD;KACD,CAAA,EAAA,CAAA,GACZ,kBAACsE,GAAD;MAAa,WAAU;MAAvB,UAAA;OACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;QAAG,WAAU;QAA8B,UAAA;OAA4B,CAAA,GACvE,kBAAC,KAAD;QAAG,WAAU;QAAe,UAAAnC;OAA2B,CAAA,CACpD,EAAA,CAAA;OACL,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;QAAG,WAAU;QAA8B,UAAA;OAAmB,CAAA,GAC9D,kBAAC,KAAD;QAAG,WAAU;QAAe,UAAA7B,EAAM,kBAAkB;OAAK,CAAA,CACtD,EAAA,CAAA;OACJA,EAAM,kBACL,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;QAAG,WAAU;QAA8B,UAAA;OAAgB,CAAA,GAC3D,kBAAC,KAAD;QAAG,WAAU;QAAe,UAAAiE,EAAmBjE,EAAM,cAAc;OAAK,CAAA,CACrE,EAAA,CAAA;MAEI;KACT,CAAA,CAAA,EAAA,CAAA,CACH;;IAINU,MAAc,WACb,kBAAC,OAAD;KAAK,WAAU;KAAf,UAAA,CACE,kBAACmD,GAAD,EAAA,UAAA,CACE,kBAACC,GAAD,EAAA,UAAA,CACE,kBAACC,GAAD;MAAW,WAAU;MAArB,UAAA,CACE,kBAAC3B,GAAD,EAAQ,MAAM,GAAK,CAAA,GAAC,wBAEX;KACX,CAAA,GAAA,kBAACiC,GAAD,EAAA,UAAiB,wCAAsD,CAAA,CAC7D,EAAA,CAAA,GACZ,kBAACL,GAAD,EAAA,UACGxC,EAAiB,SAAS,IACzB,kBAAC,OAAD;MAAK,WAAU;MACZ,UAAAA,EAAiB,KAAK,MACrB,kBAAC,OAAD;OAEE,WAAU;OAFZ,UAAA,CAIE,kBAAC,OAAD;QAAK,WAAU;QACb,UAAA,kBAACY,GAAD;SAAQ,MAAM;SAAI,WAAU;QAAgB,CAAA;OACzC,CAAA,GACL,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;QAAG,WAAU;QAAc,UAAA;OAAa,CAAA,GACxC,kBAAC,KAAD;QAAG,WAAU;QAAyC,UAAAmC;OAAS,CAAA,CAC5D,EAAA,CAAA,CACF;MAVE,GAAAA,CAUF,CACN;KACE,CAAA,IAEL,kBAAC,KAAD;MAAG,WAAU;MAAsB,UAAA;KAA2B,CAAA,EAErD,CAAA,CACT,EAAA,CAAA,GAEL7C,EAAY,SAAS,KACpB,kBAACmC,GAAD,EAAA,UAAA,CACE,kBAACC,GAAD,EAAA,UACE,kBAACC,GAAD;MAAW,WAAU;MAArB,UAAA,CACE,kBAAC/B,GAAD,EAAU,MAAM,GAAK,CAAA,GAAC,WAEb;KACD,CAAA,EAAA,CAAA,GACZ,kBAACgC,GAAD,EAAA,UACE,kBAAC,OAAD;MAAK,WAAU;MACZ,UAAAtC,EAAY,KAAK,MAChB,kBAAC,OAAD;OAAgB,WAAU;OACxB,UAAA,kBAAC,KAAD;QAAG,WAAU;QAAqB,UAAA8C;OAAQ,CAAA;MACvC,GAFKA,CAEL,CACN;KACE,CAAA,EACM,CAAA,CACT,EAAA,CAAA,CAEL;;IAIN9D,MAAc,eACb,kBAACmD,GAAD,EAAA,UAAA,CACE,kBAACC,GAAD,EAAA,UAAA,CACE,kBAACC,GAAD;KAAW,WAAU;KAArB,UAAA,CACE,kBAAC1B,GAAD,EAAU,MAAM,GAAK,CAAA,GAAC,iBAEb;IACX,CAAA,GAAA,kBAACgC,GAAD,EAAA,UAAiB,oCAAkD,CAAA,CACzD,EAAA,CAAA,GACZ,kBAACL,GAAD,EAAA,UACGvC,EAAiB,SAAS,IACzB,kBAAC,OAAD;KAAK,WAAU;KACZ,UAAAA,EAAiB,KAAK,GAAc,MACnC,kBAAC,OAAD;MAEE,WAAU;MAFZ,UAAA,CAIE,kBAAC,OAAD;OAAK,WAAU;OAAf,UAAA,CACE,kBAAC,KAAD;QAAG,WAAU;QAAc,UAAA;OAAiB,CAAA,GAC5C,kBAACmB,GAAD;QAAO,SAAQ;QAAf,UAAA,CAAyB,KAAE6B,IAAQ,CAAS;OACzC,CAAA,CAAA;MACL,CAAA,GAAA,kBAAC,KAAD;OAAG,WAAU;OAAqB,UAAAC;MAAQ,CAAA,CACvC;KARE,GAAAD,CAQF,CACN;IACE,CAAA,IAEL,kBAAC,KAAD;KAAG,WAAU;KAAsB,UAAA;IAA+B,CAAA,EAEzD,CAAA,CACT,EAAA,CAAA;IAIP/D,MAAc,gBACb,kBAACmD,GAAD,EAAA,UAAA,CACE,kBAACC,GAAD,EAAA,UAAA,CACE,kBAACC,GAAD;KAAW,WAAU;KAArB,UAAA,CACE,kBAACzB,GAAD,EAAQ,MAAM,GAAK,CAAA,GAAC,uBAEX;IACX,CAAA,GAAA,kBAAC+B,GAAD,EAAA,UAAiB,qCAAmD,CAAA,CAC1D,EAAA,CAAA,GACZ,kBAACL,GAAD,EAAA,UACGlC,IACC,kBAAC,OAAD;KAAK,WAAU;KACZ,UAAA,OAAO,QAAQA,CAAQ,CAAC,CACtB,QAAQ,CAAC6C,GAAGC,OAAWA,CAAK,CAAC,CAC7B,KAAK,CAACC,GAAKD,OACV,kBAAC,OAAD;MAAe,WAAU;MAAzB,UAAA,CACE,kBAAC,KAAD;OAAG,WAAU;OACV,UAAAC,EACE,QAAQ,MAAM,EAAE,CAAC,CACjB,QAAQ,YAAY,KAAK,CAAC,CAC1B,KAAK;MACP,CAAA,GACH,kBAAC,KAAD;OAAG,WAAU;OAAqB,UAAA,OAAOD,CAAK;MAAK,CAAA,CAChD;KARK,GAAAC,CAQL,CACN;IACA,CAAA,IAEL,kBAAC,KAAD;KAAG,WAAU;KAAsB,UAAA;IAAgC,CAAA,EAE1D,CAAA,CACT,EAAA,CAAA;IAIPnE,MAAc,kBAAkBP,KAC/B,kBAAC2E,IAAD;KACE,QAAQ;MAAE,aAAa;MAAS,WAAW3E;KAAQ;KACnD,aAAaT,EACX,8CACA,0FACF;IACD,CAAA;IAIFgB,MAAc,SACb,kBAACmD,GAAD,EAAA,UAAA,CACE,kBAACC,GAAD,EAAA,UAAA,CACE,kBAACC,GAAD;KAAW,WAAU;KAArB,UAAA,CACE,kBAACvB,GAAD,EAAQ,MAAM,GAAK,CAAA,GAAC,mBAEX;IACX,CAAA,GAAA,kBAAC6B,GAAD,EAAA,UAAiB,wCAAsD,CAAA,CAC7D,EAAA,CAAA,GACZ,kBAACL,GAAD,EAAA,UACE,kBAAC,KAAD;KAAG,WAAU;KAAsB,UAAA;IAAoC,CAAA,EAC5D,CAAA,CACT,EAAA,CAAA;IAIPtD,MAAc,cAAcP,KAC3B,kBAAC4E,GAAD;KACW;KACT,gBAAgB/E,EAAM;KACtB,kBAAkBA,EAAM;KACxB,iBAAiB,KAAKC,EAAa;IACpC,CAAA;GAEA;;CACK,CAAA;AAEhB"}
@@ -0,0 +1,2 @@
1
+ import { FC } from 'react';
2
+ export declare const AgentsListPage: FC;
@@ -1,44 +1,44 @@
1
- import { useTr as e } from "../../shared/hooks/useTr.js";
2
- import { useBotlit as t } from "../providers/BotlitProvider.js";
3
- import { useBotlitStore as n } from "../store/botlitStore.js";
4
- import { useAgents as r, useDeleteAgent as i } from "../hooks/useAgents.js";
5
- import { cn as a } from "../utils/cn.js";
6
- import { formatNumber as o, formatRelativeTime as s } from "../utils/formatters.js";
7
- import { BOTMANOR_PERMISSIONS as c } from "../permissions/botmanorPermissions.js";
8
- import { BotmanorPermissionGate as l } from "../permissions/useBotmanorPermissions.js";
9
- import { PageLayout as u } from "../components/PageLayout.js";
10
- import { Button as d } from "../components/Button.js";
1
+ import { isNative as e, nativeConfirm as t, nativeImpact as n, nativeNotify as r } from "../../utils/nativeBridge.js";
2
+ import { useTr as i } from "../../shared/hooks/useTr.js";
3
+ import { PageLayout as a } from "../components/PageLayout.js";
4
+ import { Card as o, CardContent as s } from "../components/Card.js";
5
+ import { Button as c } from "../components/Button.js";
6
+ import { Input as l } from "../components/Input.js";
7
+ import { BOTMANOR_PERMISSIONS as u } from "../permissions/botmanorPermissions.js";
8
+ import { BotmanorPermissionGate as d } from "../permissions/useBotmanorPermissions.js";
9
+ import { StatusBadge as f } from "../components/Badge.js";
10
+ import { EmptyState as p } from "../components/EmptyState.js";
11
+ import { ErrorState as m } from "../components/ErrorState.js";
12
+ import { useAgents as h, useDeleteAgent as g } from "../hooks/useAgents.js";
13
+ import { useBotlitStore as _ } from "../store/botlitStore.js";
14
+ import { useBotlit as v } from "../providers/BotlitProvider.js";
15
+ import { formatNumber as y, formatRelativeTime as b } from "../utils/formatters.js";
16
+ import { cn as x } from "../utils/cn.js";
11
17
  import "../permissions/index.js";
12
- import { Card as f, CardContent as p } from "../components/Card.js";
13
- import { StatusBadge as m } from "../components/Badge.js";
14
- import { isNative as h, nativeConfirm as g, nativeImpact as _, nativeNotify as v } from "../../utils/nativeBridge.js";
15
- import { EmptyState as y } from "../components/EmptyState.js";
16
- import { Input as b } from "../components/Input.js";
17
- import { ErrorState as x } from "../components/ErrorState.js";
18
18
  import { useState as S } from "react";
19
19
  import { GlassCard as C, PagePurpose as w } from "@burdenoff/fe-libs/ui";
20
20
  import { jsx as T, jsxs as E } from "react/jsx-runtime";
21
- import { Link as ee, useParams as te } from "react-router";
22
- import { Bot as ne, Grid3X3 as D, List as O, MessageSquare as k, MoreVertical as A, Play as j, Plus as M, Search as N, Settings as P, ShieldCheck as F, Trash2 as I } from "lucide-react";
21
+ import { Link as D, useParams as O } from "react-router";
22
+ import { Bot as ee, Grid3X3 as te, List as ne, MessageSquare as k, MoreVertical as A, Play as j, Plus as M, Search as N, Settings as P, ShieldCheck as F, Trash2 as I } from "lucide-react";
23
23
  import { toast as L } from "sonner";
24
- //#region src/botlit/pages/AgentsListPage.tsx
24
+ // src/botlit/pages/AgentsListPage.tsx
25
25
  var R = () => {
26
- let R = e(), { botId: z } = te(), { navigateTo: B, getPath: V } = t(), { data: H, loading: U, error: W, refetch: G } = r(), [K] = i(), { viewMode: q, setViewMode: J, agentFilter: Y, updateAgentFilter: X } = n(), [Z, Q] = S(null), re = (e) => {
26
+ let R = i(), { botId: z } = O(), { navigateTo: B, getPath: V } = v(), { data: H, loading: U, error: W, refetch: G } = h(), [K] = g(), { viewMode: q, setViewMode: J, agentFilter: Y, updateAgentFilter: X } = _(), [Z, Q] = S(null), re = (e) => {
27
27
  X({ search: e.target.value });
28
- }, ie = async (e) => {
29
- let t = await g({
28
+ }, ie = async (i) => {
29
+ let a = await t({
30
30
  title: R("botlit.agentsList.delete.title", "Delete agent?"),
31
- message: R("botlit.agentsList.delete.message", "Are you sure you want to delete \"{{name}}\"?", { name: e.name }),
31
+ message: R("botlit.agentsList.delete.message", "Are you sure you want to delete \"{{name}}\"?", { name: i.name }),
32
32
  okButtonTitle: R("botlit.agentsList.delete.okButton", "Delete"),
33
33
  cancelButtonTitle: R("botlit.agentsList.delete.cancelButton", "Cancel")
34
34
  });
35
- if (t === null ? confirm(R("botlit.agentsList.delete.message", "Are you sure you want to delete \"{{name}}\"?", { name: e.name })) : t) {
36
- _("medium");
35
+ if (a === null ? confirm(R("botlit.agentsList.delete.message", "Are you sure you want to delete \"{{name}}\"?", { name: i.name })) : a) {
36
+ n("medium");
37
37
  try {
38
- await K(e.id), L.success(R("botlit.agentsList.delete.success", "Agent \"{{name}}\" deleted successfully", { name: e.name })), h() && v("success");
39
- } catch (e) {
40
- let t = e instanceof Error ? e.message : R("botlit.agentsList.delete.error", "Failed to delete agent");
41
- L.error(t), h() && v("error");
38
+ await K(i.id), L.success(R("botlit.agentsList.delete.success", "Agent \"{{name}}\" deleted successfully", { name: i.name })), e() && r("success");
39
+ } catch (t) {
40
+ let n = t instanceof Error ? t.message : R("botlit.agentsList.delete.error", "Failed to delete agent");
41
+ L.error(n), e() && r("error");
42
42
  }
43
43
  }
44
44
  Q(null);
@@ -49,19 +49,19 @@ var R = () => {
49
49
  }
50
50
  return !0;
51
51
  });
52
- return /* @__PURE__ */ T(u, {
52
+ return /* @__PURE__ */ T(a, {
53
53
  title: z ? R("botlit.agentsList.titleBot", "Bot Agents") : R("botlit.agentsList.title", "All Agents"),
54
54
  description: z ? R("botlit.agentsList.descriptionBot", "Manage agents for this bot") : R("botlit.agentsList.description", "View and manage all your AI agents"),
55
55
  actions: /* @__PURE__ */ E("div", {
56
56
  className: "flex gap-2",
57
- children: [/* @__PURE__ */ T(d, {
57
+ children: [/* @__PURE__ */ T(c, {
58
58
  variant: "outline",
59
59
  leftIcon: /* @__PURE__ */ T(F, { size: 16 }),
60
60
  onClick: () => B("agents/approvals"),
61
61
  children: R("botlit.agentsList.actions.approvals", "Approvals")
62
- }), /* @__PURE__ */ T(l, {
63
- permission: c.AGENT_CREATE,
64
- children: /* @__PURE__ */ T(d, {
62
+ }), /* @__PURE__ */ T(d, {
63
+ permission: u.AGENT_CREATE,
64
+ children: /* @__PURE__ */ T(c, {
65
65
  leftIcon: /* @__PURE__ */ T(M, { size: 16 }),
66
66
  onClick: () => B(z ? `bots/${z}/agents/new` : "agents/new"),
67
67
  children: R("botlit.agentsList.actions.createAgent", "Create Agent")
@@ -72,7 +72,7 @@ var R = () => {
72
72
  className: "space-y-6",
73
73
  children: [
74
74
  /* @__PURE__ */ T(w, {
75
- icon: /* @__PURE__ */ T(ne, { size: 18 }),
75
+ icon: /* @__PURE__ */ T(ee, { size: 18 }),
76
76
  children: R("botlit.agentsList.purpose", "Agents are the reasoning workers behind your bots — each one bundles a model, a system prompt, tools and knowledge into a callable AI. Build an agent here to handle a specific job (answer support questions, summarise documents, run a workflow), then test it in chat and connect it to a bot or channel.")
77
77
  }),
78
78
  H.length > 0 ? /* @__PURE__ */ E("div", {
@@ -109,7 +109,7 @@ var R = () => {
109
109
  children: R("botlit.agentsList.summary.executions", "Total executions")
110
110
  }), /* @__PURE__ */ T("p", {
111
111
  className: "mt-1 text-2xl font-semibold tabular-nums text-text-primary",
112
- children: o(H.reduce((e, t) => e + (t.executionCount ?? 0), 0))
112
+ children: y(H.reduce((e, t) => e + (t.executionCount ?? 0), 0))
113
113
  })]
114
114
  })
115
115
  ]
@@ -118,7 +118,7 @@ var R = () => {
118
118
  className: "flex items-center justify-between gap-4",
119
119
  children: [/* @__PURE__ */ E("div", {
120
120
  className: "relative flex-1 max-w-md",
121
- children: [/* @__PURE__ */ T(N, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary" }), /* @__PURE__ */ T(b, {
121
+ children: [/* @__PURE__ */ T(N, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary" }), /* @__PURE__ */ T(l, {
122
122
  placeholder: R("botlit.agentsList.searchPlaceholder", "Search agents..."),
123
123
  value: Y.search || "",
124
124
  onChange: re,
@@ -126,21 +126,21 @@ var R = () => {
126
126
  })]
127
127
  }), /* @__PURE__ */ E("div", {
128
128
  className: "flex items-center gap-2",
129
- children: [/* @__PURE__ */ T(d, {
129
+ children: [/* @__PURE__ */ T(c, {
130
130
  variant: q === "grid" ? "secondary" : "ghost",
131
131
  size: "icon",
132
132
  onClick: () => J("grid"),
133
- children: /* @__PURE__ */ T(D, { size: 18 })
134
- }), /* @__PURE__ */ T(d, {
133
+ children: /* @__PURE__ */ T(te, { size: 18 })
134
+ }), /* @__PURE__ */ T(c, {
135
135
  variant: q === "list" ? "secondary" : "ghost",
136
136
  size: "icon",
137
137
  onClick: () => J("list"),
138
- children: /* @__PURE__ */ T(O, { size: 18 })
138
+ children: /* @__PURE__ */ T(ne, { size: 18 })
139
139
  })]
140
140
  })]
141
141
  }),
142
142
  U ? /* @__PURE__ */ T("div", {
143
- className: a("gap-4", q === "grid" ? "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3" : "flex flex-col"),
143
+ className: x("gap-4", q === "grid" ? "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3" : "flex flex-col"),
144
144
  children: [
145
145
  1,
146
146
  2,
@@ -149,16 +149,16 @@ var R = () => {
149
149
  5,
150
150
  6
151
151
  ].map((e) => /* @__PURE__ */ T("div", { className: "h-48 bg-bg-sunken motion-safe:animate-vc-shimmer rounded-lg" }, e))
152
- }) : W ? /* @__PURE__ */ T(x, {
152
+ }) : W ? /* @__PURE__ */ T(m, {
153
153
  resource: "agents",
154
154
  error: W,
155
155
  onRetry: () => void G()
156
156
  }) : $.length > 0 ? q === "grid" ? /* @__PURE__ */ T("div", {
157
157
  className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",
158
- children: $.map((e) => /* @__PURE__ */ T(f, {
158
+ children: $.map((e) => /* @__PURE__ */ T(o, {
159
159
  className: "group hover:shadow-md transition-shadow cursor-pointer relative",
160
160
  onClick: () => B(`agents/${e.id}`),
161
- children: /* @__PURE__ */ E(p, {
161
+ children: /* @__PURE__ */ E(s, {
162
162
  className: "pt-6",
163
163
  children: [
164
164
  /* @__PURE__ */ E("div", {
@@ -173,11 +173,11 @@ var R = () => {
173
173
  children: e.name
174
174
  }), /* @__PURE__ */ T("div", {
175
175
  className: "flex items-center gap-2 mt-1",
176
- children: /* @__PURE__ */ T(m, { status: e.status })
176
+ children: /* @__PURE__ */ T(f, { status: e.status })
177
177
  })] })]
178
178
  }), /* @__PURE__ */ E("div", {
179
179
  className: "relative",
180
- children: [/* @__PURE__ */ T(d, {
180
+ children: [/* @__PURE__ */ T(c, {
181
181
  variant: "ghost",
182
182
  size: "icon",
183
183
  className: "opacity-0 group-hover:opacity-100 transition-opacity",
@@ -188,8 +188,8 @@ var R = () => {
188
188
  }), Z === e.id && /* @__PURE__ */ E("div", {
189
189
  className: "absolute right-0 top-full mt-1 w-48 bg-popover border border-border-subtle rounded-md shadow-lg z-10",
190
190
  children: [
191
- /* @__PURE__ */ T(l, {
192
- permission: c.AGENT_EXECUTE,
191
+ /* @__PURE__ */ T(d, {
192
+ permission: u.AGENT_EXECUTE,
193
193
  children: /* @__PURE__ */ E("button", {
194
194
  className: "w-full px-4 py-2 text-left text-sm hover:bg-accent flex items-center gap-2",
195
195
  onClick: (t) => {
@@ -198,8 +198,8 @@ var R = () => {
198
198
  children: [/* @__PURE__ */ T(j, { size: 16 }), R("botlit.agentsList.menu.testAgent", "Test Agent")]
199
199
  })
200
200
  }),
201
- /* @__PURE__ */ T(l, {
202
- permission: c.AGENT_UPDATE,
201
+ /* @__PURE__ */ T(d, {
202
+ permission: u.AGENT_UPDATE,
203
203
  children: /* @__PURE__ */ E("button", {
204
204
  className: "w-full px-4 py-2 text-left text-sm hover:bg-accent flex items-center gap-2",
205
205
  onClick: (t) => {
@@ -208,8 +208,8 @@ var R = () => {
208
208
  children: [/* @__PURE__ */ T(P, { size: 16 }), R("botlit.agentsList.menu.editAgent", "Edit Agent")]
209
209
  })
210
210
  }),
211
- /* @__PURE__ */ T(l, {
212
- permission: c.AGENT_DELETE,
211
+ /* @__PURE__ */ T(d, {
212
+ permission: u.AGENT_DELETE,
213
213
  children: /* @__PURE__ */ E("button", {
214
214
  className: "w-full px-4 py-2 text-left text-sm hover:bg-accent text-status-error-text flex items-center gap-2",
215
215
  onClick: (t) => {
@@ -232,7 +232,7 @@ var R = () => {
232
232
  className: "flex items-center gap-1",
233
233
  children: [
234
234
  /* @__PURE__ */ T(k, { size: 14 }),
235
- o(e.executionCount),
235
+ y(e.executionCount),
236
236
  " ",
237
237
  R("botlit.agentsList.card.executions", "executions")
238
238
  ]
@@ -245,11 +245,11 @@ var R = () => {
245
245
  children: [
246
246
  R("botlit.agentsList.card.created", "Created"),
247
247
  " ",
248
- s(e.createdAt)
248
+ b(e.createdAt)
249
249
  ]
250
- }), /* @__PURE__ */ T(l, {
251
- permission: c.AGENT_EXECUTE,
252
- children: /* @__PURE__ */ T(d, {
250
+ }), /* @__PURE__ */ T(d, {
251
+ permission: u.AGENT_EXECUTE,
252
+ children: /* @__PURE__ */ T(c, {
253
253
  size: "sm",
254
254
  variant: "ghost",
255
255
  leftIcon: /* @__PURE__ */ T(j, { size: 14 }),
@@ -265,10 +265,10 @@ var R = () => {
265
265
  }, e.id))
266
266
  }) : /* @__PURE__ */ T("div", {
267
267
  className: "space-y-2",
268
- children: $.map((e) => /* @__PURE__ */ T(f, {
268
+ children: $.map((e) => /* @__PURE__ */ T(o, {
269
269
  className: "hover:shadow-md transition-shadow cursor-pointer",
270
270
  onClick: () => B(`agents/${e.id}`),
271
- children: /* @__PURE__ */ T(p, {
271
+ children: /* @__PURE__ */ T(s, {
272
272
  className: "py-4",
273
273
  children: /* @__PURE__ */ E("div", {
274
274
  className: "flex items-center justify-between",
@@ -282,7 +282,7 @@ var R = () => {
282
282
  children: [/* @__PURE__ */ T("h3", {
283
283
  className: "font-semibold text-text-primary",
284
284
  children: e.name
285
- }), /* @__PURE__ */ T(m, { status: e.status })]
285
+ }), /* @__PURE__ */ T(f, { status: e.status })]
286
286
  }), /* @__PURE__ */ T("p", {
287
287
  className: "text-sm text-text-secondary line-clamp-1",
288
288
  children: e.description
@@ -290,15 +290,15 @@ var R = () => {
290
290
  }), /* @__PURE__ */ E("div", {
291
291
  className: "flex items-center gap-4 text-sm text-text-secondary",
292
292
  children: [
293
- /* @__PURE__ */ E("span", { children: [o(e.executionCount), " executions"] }),
294
- /* @__PURE__ */ T("span", { children: s(e.createdAt) }),
295
- /* @__PURE__ */ T(l, {
296
- permission: c.AGENT_EXECUTE,
297
- children: /* @__PURE__ */ T(d, {
293
+ /* @__PURE__ */ E("span", { children: [y(e.executionCount), " executions"] }),
294
+ /* @__PURE__ */ T("span", { children: b(e.createdAt) }),
295
+ /* @__PURE__ */ T(d, {
296
+ permission: u.AGENT_EXECUTE,
297
+ children: /* @__PURE__ */ T(c, {
298
298
  variant: "outline",
299
299
  size: "sm",
300
300
  leftIcon: /* @__PURE__ */ T(j, { size: 14 }),
301
- children: /* @__PURE__ */ T(ee, {
301
+ children: /* @__PURE__ */ T(D, {
302
302
  to: V(`agents/${e.id}/chat`),
303
303
  children: "Test"
304
304
  })
@@ -309,13 +309,13 @@ var R = () => {
309
309
  })
310
310
  })
311
311
  }, e.id))
312
- }) : /* @__PURE__ */ T(y, {
312
+ }) : /* @__PURE__ */ T(p, {
313
313
  illustration: "empty-agents",
314
314
  title: R("botlit.agentsList.empty.title", "No agents yet"),
315
315
  description: R("botlit.agentsList.empty.description", "Create your first AI agent to start building intelligent automations."),
316
- action: /* @__PURE__ */ T(l, {
317
- permission: c.AGENT_CREATE,
318
- children: /* @__PURE__ */ T(d, {
316
+ action: /* @__PURE__ */ T(d, {
317
+ permission: u.AGENT_CREATE,
318
+ children: /* @__PURE__ */ T(c, {
319
319
  leftIcon: /* @__PURE__ */ T(M, { size: 16 }),
320
320
  onClick: () => B(z ? `bots/${z}/agents/new` : "agents/new"),
321
321
  children: R("botlit.agentsList.actions.createAgent", "Create Agent")
@@ -326,7 +326,6 @@ var R = () => {
326
326
  })
327
327
  });
328
328
  };
329
- //#endregion
330
329
  export { R as AgentsListPage };
331
330
 
332
331
  //# sourceMappingURL=AgentsListPage.js.map