@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
@@ -0,0 +1,62 @@
1
+ export type AgentApprovalStatus = 'PENDING' | 'APPROVED' | 'REJECTED' | 'CANCELLED';
2
+ export interface AgentApprovalSettingsRecord {
3
+ workspaceId: string;
4
+ requireActivationApproval: boolean;
5
+ updatedAt?: string | null;
6
+ updatedById?: string | null;
7
+ }
8
+ export interface AgentApprovalRequestRecord {
9
+ id: string;
10
+ agentId: string;
11
+ versionId?: string | null;
12
+ status: AgentApprovalStatus;
13
+ requestedById: string;
14
+ requestNote?: string | null;
15
+ reviewerId?: string | null;
16
+ decisionReason?: string | null;
17
+ decidedAt?: string | null;
18
+ isStale: boolean;
19
+ createdAt: string;
20
+ }
21
+ export interface AgentApprovalFilter {
22
+ agentId?: string;
23
+ status?: AgentApprovalStatus;
24
+ }
25
+ /** The workspace's approval requirement, with a setter for reviewers. */
26
+ export declare function useAgentApprovalSettings(): {
27
+ data: AgentApprovalSettingsRecord | null;
28
+ loading: boolean;
29
+ saving: boolean;
30
+ error: Error | undefined;
31
+ refetch: () => Promise<void>;
32
+ update: (requireActivationApproval: boolean) => Promise<AgentApprovalSettingsRecord>;
33
+ };
34
+ /** Activation requests in the workspace, newest first. */
35
+ export declare function useAgentApprovalRequests(filter: AgentApprovalFilter): {
36
+ data: AgentApprovalRequestRecord[];
37
+ loading: boolean;
38
+ error: Error | undefined;
39
+ refetch: () => Promise<void>;
40
+ };
41
+ type ApprovalAction = {
42
+ kind: 'request';
43
+ agentId: string;
44
+ note?: string;
45
+ } | {
46
+ kind: 'approve';
47
+ id: string;
48
+ reason?: string;
49
+ } | {
50
+ kind: 'reject';
51
+ id: string;
52
+ reason: string;
53
+ } | {
54
+ kind: 'cancel';
55
+ id: string;
56
+ };
57
+ /** Request, approve, reject or cancel an activation request. */
58
+ export declare function useAgentApprovalActions(): {
59
+ run: (action: ApprovalAction) => Promise<AgentApprovalRequestRecord>;
60
+ pending: "cancel" | "request" | "approve" | "reject" | null;
61
+ };
62
+ export {};
@@ -2,7 +2,7 @@ import { useBotlit as e } from "../providers/BotlitProvider.js";
2
2
  import { useCallback as t, useEffect as n, useState as r } from "react";
3
3
  import { gql as i } from "@apollo/client";
4
4
  import { useGatewayClient as a } from "@burdenoff/fe-libs/shared/graphql";
5
- //#region src/botlit/hooks/useAgentApprovals.ts
5
+ // src/botlit/hooks/useAgentApprovals.ts
6
6
  var o = "\n id\n agentId\n versionId\n status\n requestedById\n requestNote\n reviewerId\n decisionReason\n decidedAt\n isStale\n createdAt\n", s = i`
7
7
  query BotmanorAgentApprovalSettings {
8
8
  botmanorAgentApprovalSettings {
@@ -60,20 +60,20 @@ function m(e, t) {
60
60
  }
61
61
  function h() {
62
62
  let i = a("workspace"), { workspaceId: o } = e(), [l, u] = r(null), [d, f] = r(!1), [p, h] = r(!1), [g, _] = r(), v = t(async () => {
63
- if (!o) {
64
- u(null);
65
- return;
66
- }
67
- f(!0), _(void 0);
68
- try {
69
- u((await i.query({
70
- query: s,
71
- fetchPolicy: "network-only"
72
- })).data?.botmanorAgentApprovalSettings ?? null);
73
- } catch (e) {
74
- _(m(e, "Failed to load approval settings"));
75
- } finally {
76
- f(!1);
63
+ if (!o) u(null);
64
+ else {
65
+ f(!0), _(void 0);
66
+ try {
67
+ let e = await i.query({
68
+ query: s,
69
+ fetchPolicy: "network-only"
70
+ });
71
+ u(e.data?.botmanorAgentApprovalSettings ?? null);
72
+ } catch (e) {
73
+ _(m(e, "Failed to load approval settings"));
74
+ } finally {
75
+ f(!1);
76
+ }
77
77
  }
78
78
  }, [i, o]);
79
79
  return n(() => {
@@ -103,30 +103,30 @@ function h() {
103
103
  }
104
104
  function g(i) {
105
105
  let o = a("workspace"), { workspaceId: s } = e(), [c, u] = r([]), [d, f] = r(!1), [p, h] = r(), { agentId: g, status: _ } = i, v = t(async () => {
106
- if (!s) {
107
- u([]);
108
- return;
109
- }
110
- f(!0), h(void 0);
111
- try {
112
- u((await o.query({
113
- query: l,
114
- variables: {
115
- filter: {
116
- agentId: g || void 0,
117
- status: _ || void 0
106
+ if (!s) u([]);
107
+ else {
108
+ f(!0), h(void 0);
109
+ try {
110
+ let e = await o.query({
111
+ query: l,
112
+ variables: {
113
+ filter: {
114
+ agentId: g || void 0,
115
+ status: _ || void 0
116
+ },
117
+ pagination: {
118
+ limit: 50,
119
+ offset: 0
120
+ }
118
121
  },
119
- pagination: {
120
- limit: 50,
121
- offset: 0
122
- }
123
- },
124
- fetchPolicy: "network-only"
125
- })).data?.listBotmanorAgentApprovalRequests ?? []);
126
- } catch (e) {
127
- h(m(e, "Failed to load activation requests"));
128
- } finally {
129
- f(!1);
122
+ fetchPolicy: "network-only"
123
+ });
124
+ u(e.data?.listBotmanorAgentApprovalRequests ?? []);
125
+ } catch (e) {
126
+ h(m(e, "Failed to load activation requests"));
127
+ } finally {
128
+ f(!1);
129
+ }
130
130
  }
131
131
  }, [
132
132
  g,
@@ -189,7 +189,6 @@ function v(e, t) {
189
189
  if (!e) throw Error(`Failed to ${t} activation`);
190
190
  return e;
191
191
  }
192
- //#endregion
193
192
  export { _ as useAgentApprovalActions, g as useAgentApprovalRequests, h as useAgentApprovalSettings };
194
193
 
195
194
  //# sourceMappingURL=useAgentApprovals.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAgentApprovals.js","names":[],"sources":["../../../src/botlit/hooks/useAgentApprovals.ts"],"sourcesContent":["/**\n * Agent activation approval hooks (BOFF-9682).\n *\n * A workspace can require reviewer approval before an agent goes live. Builders\n * request activation; reviewers holding `botmanor-agent:approve` approve\n * (which publishes the agent's draft and sets it ACTIVE) or reject with a\n * reason. These hooks wrap the `*BotmanorAgentApproval*` fields of\n * wspace-botmanor-svc.\n */\nimport { gql, type ApolloClient } from '@apollo/client';\nimport { useCallback, useEffect, useState } from 'react';\nimport { useGatewayClient } from '@burdenoff/fe-libs/shared/graphql';\n\nimport { useBotlit } from '../providers/BotlitProvider';\n\nconst APPROVAL_REQUEST_FIELDS = `\n id\n agentId\n versionId\n status\n requestedById\n requestNote\n reviewerId\n decisionReason\n decidedAt\n isStale\n createdAt\n`;\n\nconst GET_SETTINGS_DOCUMENT = gql`\n query BotmanorAgentApprovalSettings {\n botmanorAgentApprovalSettings {\n workspaceId\n requireActivationApproval\n updatedAt\n updatedById\n }\n }\n`;\n\nconst UPDATE_SETTINGS_DOCUMENT = gql`\n mutation UpdateBotmanorAgentApprovalSettings($requireActivationApproval: Boolean!) {\n updateBotmanorAgentApprovalSettings(requireActivationApproval: $requireActivationApproval) {\n workspaceId\n requireActivationApproval\n updatedAt\n updatedById\n }\n }\n`;\n\nconst LIST_REQUESTS_DOCUMENT = gql`\n query ListBotmanorAgentApprovalRequests(\n $filter: BotmanorAgentApprovalFilterInput\n $pagination: PaginationInput\n ) {\n listBotmanorAgentApprovalRequests(filter: $filter, pagination: $pagination) {\n ${APPROVAL_REQUEST_FIELDS}\n }\n }\n`;\n\nconst REQUEST_ACTIVATION_DOCUMENT = gql`\n mutation RequestBotmanorAgentActivation($agentId: ID!, $note: String) {\n requestBotmanorAgentActivation(agentId: $agentId, note: $note) {\n ${APPROVAL_REQUEST_FIELDS}\n }\n }\n`;\n\nconst APPROVE_DOCUMENT = gql`\n mutation ApproveBotmanorAgentActivation($id: ID!, $reason: String) {\n approveBotmanorAgentActivation(id: $id, reason: $reason) {\n ${APPROVAL_REQUEST_FIELDS}\n }\n }\n`;\n\nconst REJECT_DOCUMENT = gql`\n mutation RejectBotmanorAgentActivation($id: ID!, $reason: String!) {\n rejectBotmanorAgentActivation(id: $id, reason: $reason) {\n ${APPROVAL_REQUEST_FIELDS}\n }\n }\n`;\n\nconst CANCEL_DOCUMENT = gql`\n mutation CancelBotmanorAgentActivationRequest($id: ID!) {\n cancelBotmanorAgentActivationRequest(id: $id) {\n ${APPROVAL_REQUEST_FIELDS}\n }\n }\n`;\n\nexport type AgentApprovalStatus = 'PENDING' | 'APPROVED' | 'REJECTED' | 'CANCELLED';\n\nexport interface AgentApprovalSettingsRecord {\n workspaceId: string;\n requireActivationApproval: boolean;\n updatedAt?: string | null;\n updatedById?: string | null;\n}\n\nexport interface AgentApprovalRequestRecord {\n id: string;\n agentId: string;\n versionId?: string | null;\n status: AgentApprovalStatus;\n requestedById: string;\n requestNote?: string | null;\n reviewerId?: string | null;\n decisionReason?: string | null;\n decidedAt?: string | null;\n isStale: boolean;\n createdAt: string;\n}\n\nexport interface AgentApprovalFilter {\n agentId?: string;\n status?: AgentApprovalStatus;\n}\n\nfunction toError(error: unknown, fallback: string): Error {\n return error instanceof Error ? error : new Error(fallback);\n}\n\n/** The workspace's approval requirement, with a setter for reviewers. */\nexport function useAgentApprovalSettings() {\n const client = useGatewayClient('workspace') as ApolloClient;\n const { workspaceId } = useBotlit();\n const [data, setData] = useState<AgentApprovalSettingsRecord | null>(null);\n const [loading, setLoading] = useState(false);\n const [saving, setSaving] = useState(false);\n const [error, setError] = useState<Error | undefined>();\n\n const refetch = useCallback(async () => {\n if (!workspaceId) {\n setData(null);\n return;\n }\n setLoading(true);\n setError(undefined);\n try {\n const result = await client.query<{\n botmanorAgentApprovalSettings: AgentApprovalSettingsRecord;\n }>({\n query: GET_SETTINGS_DOCUMENT,\n fetchPolicy: 'network-only',\n });\n setData(result.data?.botmanorAgentApprovalSettings ?? null);\n } catch (queryError) {\n setError(toError(queryError, 'Failed to load approval settings'));\n } finally {\n setLoading(false);\n }\n }, [client, workspaceId]);\n\n useEffect(() => {\n void refetch();\n }, [refetch]);\n\n const update = useCallback(\n async (requireActivationApproval: boolean) => {\n setSaving(true);\n try {\n const result = await client.mutate<{\n updateBotmanorAgentApprovalSettings: AgentApprovalSettingsRecord;\n }>({\n mutation: UPDATE_SETTINGS_DOCUMENT,\n variables: { requireActivationApproval },\n });\n const next = result.data?.updateBotmanorAgentApprovalSettings;\n if (!next) throw new Error('Failed to update approval settings');\n setData(next);\n return next;\n } catch (mutationError) {\n throw toError(mutationError, 'Failed to update approval settings');\n } finally {\n setSaving(false);\n }\n },\n [client]\n );\n\n return { data, loading, saving, error, refetch, update };\n}\n\n/** Activation requests in the workspace, newest first. */\nexport function useAgentApprovalRequests(filter: AgentApprovalFilter) {\n const client = useGatewayClient('workspace') as ApolloClient;\n const { workspaceId } = useBotlit();\n const [data, setData] = useState<AgentApprovalRequestRecord[]>([]);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | undefined>();\n const { agentId, status } = filter;\n\n const refetch = useCallback(async () => {\n if (!workspaceId) {\n setData([]);\n return;\n }\n setLoading(true);\n setError(undefined);\n try {\n const result = await client.query<{\n listBotmanorAgentApprovalRequests: AgentApprovalRequestRecord[];\n }>({\n query: LIST_REQUESTS_DOCUMENT,\n variables: {\n filter: { agentId: agentId || undefined, status: status || undefined },\n pagination: { limit: 50, offset: 0 },\n },\n fetchPolicy: 'network-only',\n });\n setData(result.data?.listBotmanorAgentApprovalRequests ?? []);\n } catch (queryError) {\n setError(toError(queryError, 'Failed to load activation requests'));\n } finally {\n setLoading(false);\n }\n }, [agentId, client, status, workspaceId]);\n\n useEffect(() => {\n void refetch();\n }, [refetch]);\n\n return { data, loading, error, refetch };\n}\n\ntype ApprovalAction =\n | { kind: 'request'; agentId: string; note?: string }\n | { kind: 'approve'; id: string; reason?: string }\n | { kind: 'reject'; id: string; reason: string }\n | { kind: 'cancel'; id: string };\n\n/** Request, approve, reject or cancel an activation request. */\nexport function useAgentApprovalActions() {\n const client = useGatewayClient('workspace') as ApolloClient;\n const [pending, setPending] = useState<ApprovalAction['kind'] | null>(null);\n\n const run = useCallback(\n async (action: ApprovalAction): Promise<AgentApprovalRequestRecord> => {\n setPending(action.kind);\n try {\n switch (action.kind) {\n case 'request': {\n const result = await client.mutate<{\n requestBotmanorAgentActivation: AgentApprovalRequestRecord;\n }>({\n mutation: REQUEST_ACTIVATION_DOCUMENT,\n variables: { agentId: action.agentId, note: action.note?.trim() || undefined },\n });\n return required(result.data?.requestBotmanorAgentActivation, 'request');\n }\n case 'approve': {\n const result = await client.mutate<{\n approveBotmanorAgentActivation: AgentApprovalRequestRecord;\n }>({\n mutation: APPROVE_DOCUMENT,\n variables: { id: action.id, reason: action.reason?.trim() || undefined },\n });\n return required(result.data?.approveBotmanorAgentActivation, 'approve');\n }\n case 'reject': {\n const result = await client.mutate<{\n rejectBotmanorAgentActivation: AgentApprovalRequestRecord;\n }>({\n mutation: REJECT_DOCUMENT,\n variables: { id: action.id, reason: action.reason.trim() },\n });\n return required(result.data?.rejectBotmanorAgentActivation, 'reject');\n }\n case 'cancel': {\n const result = await client.mutate<{\n cancelBotmanorAgentActivationRequest: AgentApprovalRequestRecord;\n }>({\n mutation: CANCEL_DOCUMENT,\n variables: { id: action.id },\n });\n return required(result.data?.cancelBotmanorAgentActivationRequest, 'cancel');\n }\n }\n } catch (mutationError) {\n throw toError(mutationError, `Failed to ${action.kind} activation`);\n } finally {\n setPending(null);\n }\n },\n [client]\n );\n\n return { run, pending };\n}\n\nfunction required(\n value: AgentApprovalRequestRecord | undefined,\n kind: ApprovalAction['kind']\n): AgentApprovalRequestRecord {\n if (!value) throw new Error(`Failed to ${kind} activation`);\n return value;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"useAgentApprovals.js","names":["APPROVAL_REQUEST_FIELDS","GET_SETTINGS_DOCUMENT","UPDATE_SETTINGS_DOCUMENT","LIST_REQUESTS_DOCUMENT","REQUEST_ACTIVATION_DOCUMENT","APPROVE_DOCUMENT","REJECT_DOCUMENT","CANCEL_DOCUMENT","toError","error","fallback","useAgentApprovalSettings","client","useGatewayClient","useBotlit","data","setData","useState","loading","setLoading","saving","setSaving","setError","refetch","useCallback","workspaceId","result","queryError","useEffect","next","mutationError","useAgentApprovalRequests","filter","agentId","status","useAgentApprovalActions","pending","setPending","action","required","value","kind"],"sources":["../../../src/botlit/hooks/useAgentApprovals.ts"],"sourcesContent":["/**\n * Agent activation approval hooks (BOFF-9682).\n *\n * A workspace can require reviewer approval before an agent goes live. Builders\n * request activation; reviewers holding `botmanor-agent:approve` approve\n * (which publishes the agent's draft and sets it ACTIVE) or reject with a\n * reason. These hooks wrap the `*BotmanorAgentApproval*` fields of\n * wspace-botmanor-svc.\n */\nimport { gql, type ApolloClient } from '@apollo/client';\nimport { useCallback, useEffect, useState } from 'react';\nimport { useGatewayClient } from '@burdenoff/fe-libs/shared/graphql';\n\nimport { useBotlit } from '../providers/BotlitProvider';\n\nconst APPROVAL_REQUEST_FIELDS = `\n id\n agentId\n versionId\n status\n requestedById\n requestNote\n reviewerId\n decisionReason\n decidedAt\n isStale\n createdAt\n`;\n\nconst GET_SETTINGS_DOCUMENT = gql`\n query BotmanorAgentApprovalSettings {\n botmanorAgentApprovalSettings {\n workspaceId\n requireActivationApproval\n updatedAt\n updatedById\n }\n }\n`;\n\nconst UPDATE_SETTINGS_DOCUMENT = gql`\n mutation UpdateBotmanorAgentApprovalSettings($requireActivationApproval: Boolean!) {\n updateBotmanorAgentApprovalSettings(requireActivationApproval: $requireActivationApproval) {\n workspaceId\n requireActivationApproval\n updatedAt\n updatedById\n }\n }\n`;\n\nconst LIST_REQUESTS_DOCUMENT = gql`\n query ListBotmanorAgentApprovalRequests(\n $filter: BotmanorAgentApprovalFilterInput\n $pagination: PaginationInput\n ) {\n listBotmanorAgentApprovalRequests(filter: $filter, pagination: $pagination) {\n ${APPROVAL_REQUEST_FIELDS}\n }\n }\n`;\n\nconst REQUEST_ACTIVATION_DOCUMENT = gql`\n mutation RequestBotmanorAgentActivation($agentId: ID!, $note: String) {\n requestBotmanorAgentActivation(agentId: $agentId, note: $note) {\n ${APPROVAL_REQUEST_FIELDS}\n }\n }\n`;\n\nconst APPROVE_DOCUMENT = gql`\n mutation ApproveBotmanorAgentActivation($id: ID!, $reason: String) {\n approveBotmanorAgentActivation(id: $id, reason: $reason) {\n ${APPROVAL_REQUEST_FIELDS}\n }\n }\n`;\n\nconst REJECT_DOCUMENT = gql`\n mutation RejectBotmanorAgentActivation($id: ID!, $reason: String!) {\n rejectBotmanorAgentActivation(id: $id, reason: $reason) {\n ${APPROVAL_REQUEST_FIELDS}\n }\n }\n`;\n\nconst CANCEL_DOCUMENT = gql`\n mutation CancelBotmanorAgentActivationRequest($id: ID!) {\n cancelBotmanorAgentActivationRequest(id: $id) {\n ${APPROVAL_REQUEST_FIELDS}\n }\n }\n`;\n\nexport type AgentApprovalStatus = 'PENDING' | 'APPROVED' | 'REJECTED' | 'CANCELLED';\n\nexport interface AgentApprovalSettingsRecord {\n workspaceId: string;\n requireActivationApproval: boolean;\n updatedAt?: string | null;\n updatedById?: string | null;\n}\n\nexport interface AgentApprovalRequestRecord {\n id: string;\n agentId: string;\n versionId?: string | null;\n status: AgentApprovalStatus;\n requestedById: string;\n requestNote?: string | null;\n reviewerId?: string | null;\n decisionReason?: string | null;\n decidedAt?: string | null;\n isStale: boolean;\n createdAt: string;\n}\n\nexport interface AgentApprovalFilter {\n agentId?: string;\n status?: AgentApprovalStatus;\n}\n\nfunction toError(error: unknown, fallback: string): Error {\n return error instanceof Error ? error : new Error(fallback);\n}\n\n/** The workspace's approval requirement, with a setter for reviewers. */\nexport function useAgentApprovalSettings() {\n const client = useGatewayClient('workspace') as ApolloClient;\n const { workspaceId } = useBotlit();\n const [data, setData] = useState<AgentApprovalSettingsRecord | null>(null);\n const [loading, setLoading] = useState(false);\n const [saving, setSaving] = useState(false);\n const [error, setError] = useState<Error | undefined>();\n\n const refetch = useCallback(async () => {\n if (!workspaceId) {\n setData(null);\n return;\n }\n setLoading(true);\n setError(undefined);\n try {\n const result = await client.query<{\n botmanorAgentApprovalSettings: AgentApprovalSettingsRecord;\n }>({\n query: GET_SETTINGS_DOCUMENT,\n fetchPolicy: 'network-only',\n });\n setData(result.data?.botmanorAgentApprovalSettings ?? null);\n } catch (queryError) {\n setError(toError(queryError, 'Failed to load approval settings'));\n } finally {\n setLoading(false);\n }\n }, [client, workspaceId]);\n\n useEffect(() => {\n void refetch();\n }, [refetch]);\n\n const update = useCallback(\n async (requireActivationApproval: boolean) => {\n setSaving(true);\n try {\n const result = await client.mutate<{\n updateBotmanorAgentApprovalSettings: AgentApprovalSettingsRecord;\n }>({\n mutation: UPDATE_SETTINGS_DOCUMENT,\n variables: { requireActivationApproval },\n });\n const next = result.data?.updateBotmanorAgentApprovalSettings;\n if (!next) throw new Error('Failed to update approval settings');\n setData(next);\n return next;\n } catch (mutationError) {\n throw toError(mutationError, 'Failed to update approval settings');\n } finally {\n setSaving(false);\n }\n },\n [client]\n );\n\n return { data, loading, saving, error, refetch, update };\n}\n\n/** Activation requests in the workspace, newest first. */\nexport function useAgentApprovalRequests(filter: AgentApprovalFilter) {\n const client = useGatewayClient('workspace') as ApolloClient;\n const { workspaceId } = useBotlit();\n const [data, setData] = useState<AgentApprovalRequestRecord[]>([]);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | undefined>();\n const { agentId, status } = filter;\n\n const refetch = useCallback(async () => {\n if (!workspaceId) {\n setData([]);\n return;\n }\n setLoading(true);\n setError(undefined);\n try {\n const result = await client.query<{\n listBotmanorAgentApprovalRequests: AgentApprovalRequestRecord[];\n }>({\n query: LIST_REQUESTS_DOCUMENT,\n variables: {\n filter: { agentId: agentId || undefined, status: status || undefined },\n pagination: { limit: 50, offset: 0 },\n },\n fetchPolicy: 'network-only',\n });\n setData(result.data?.listBotmanorAgentApprovalRequests ?? []);\n } catch (queryError) {\n setError(toError(queryError, 'Failed to load activation requests'));\n } finally {\n setLoading(false);\n }\n }, [agentId, client, status, workspaceId]);\n\n useEffect(() => {\n void refetch();\n }, [refetch]);\n\n return { data, loading, error, refetch };\n}\n\ntype ApprovalAction =\n | { kind: 'request'; agentId: string; note?: string }\n | { kind: 'approve'; id: string; reason?: string }\n | { kind: 'reject'; id: string; reason: string }\n | { kind: 'cancel'; id: string };\n\n/** Request, approve, reject or cancel an activation request. */\nexport function useAgentApprovalActions() {\n const client = useGatewayClient('workspace') as ApolloClient;\n const [pending, setPending] = useState<ApprovalAction['kind'] | null>(null);\n\n const run = useCallback(\n async (action: ApprovalAction): Promise<AgentApprovalRequestRecord> => {\n setPending(action.kind);\n try {\n switch (action.kind) {\n case 'request': {\n const result = await client.mutate<{\n requestBotmanorAgentActivation: AgentApprovalRequestRecord;\n }>({\n mutation: REQUEST_ACTIVATION_DOCUMENT,\n variables: { agentId: action.agentId, note: action.note?.trim() || undefined },\n });\n return required(result.data?.requestBotmanorAgentActivation, 'request');\n }\n case 'approve': {\n const result = await client.mutate<{\n approveBotmanorAgentActivation: AgentApprovalRequestRecord;\n }>({\n mutation: APPROVE_DOCUMENT,\n variables: { id: action.id, reason: action.reason?.trim() || undefined },\n });\n return required(result.data?.approveBotmanorAgentActivation, 'approve');\n }\n case 'reject': {\n const result = await client.mutate<{\n rejectBotmanorAgentActivation: AgentApprovalRequestRecord;\n }>({\n mutation: REJECT_DOCUMENT,\n variables: { id: action.id, reason: action.reason.trim() },\n });\n return required(result.data?.rejectBotmanorAgentActivation, 'reject');\n }\n case 'cancel': {\n const result = await client.mutate<{\n cancelBotmanorAgentActivationRequest: AgentApprovalRequestRecord;\n }>({\n mutation: CANCEL_DOCUMENT,\n variables: { id: action.id },\n });\n return required(result.data?.cancelBotmanorAgentActivationRequest, 'cancel');\n }\n }\n } catch (mutationError) {\n throw toError(mutationError, `Failed to ${action.kind} activation`);\n } finally {\n setPending(null);\n }\n },\n [client]\n );\n\n return { run, pending };\n}\n\nfunction required(\n value: AgentApprovalRequestRecord | undefined,\n kind: ApprovalAction['kind']\n): AgentApprovalRequestRecord {\n if (!value) throw new Error(`Failed to ${kind} activation`);\n return value;\n}\n"],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ import { UpdateBotmanorAgentInput } from '../../generated/wspace-types';
2
+ import { BaseFilter } from '../types';
3
+ import { GraphQLInput } from './internal/mutationInput';
4
+ export interface AgentRecord {
5
+ id: string;
6
+ name: string;
7
+ slug: string;
8
+ description?: string | null;
9
+ type: string;
10
+ status: string;
11
+ visibility?: string | null;
12
+ capabilities?: string[] | null;
13
+ llmModelId?: string | null;
14
+ bucketId?: string | null;
15
+ currentVersionId?: string | null;
16
+ draftVersionId?: string | null;
17
+ executionCount?: number | null;
18
+ lastExecutedAt?: string | null;
19
+ specialization?: string | null;
20
+ systemPrompt?: string | null;
21
+ temperature?: number | null;
22
+ maxTokens?: number | null;
23
+ maxConcurrentExecutions?: number | null;
24
+ knowledgeBaseIds?: string[] | null;
25
+ mcpConnectionIds?: string[] | null;
26
+ workflowIds?: string[] | null;
27
+ tagIds?: string[] | null;
28
+ metadata?: Record<string, unknown> | null;
29
+ createdAt?: string | null;
30
+ updatedAt?: string | null;
31
+ createdById?: string | null;
32
+ updatedById?: string | null;
33
+ workspaceId?: string | null;
34
+ }
35
+ export interface AgentVersionRecord {
36
+ id: string;
37
+ agentId: string;
38
+ version: string;
39
+ status: 'DRAFT' | 'PUBLISHED' | 'HISTORICAL';
40
+ changelog?: string | null;
41
+ config?: Record<string, unknown> | null;
42
+ createdById?: string | null;
43
+ createdAt?: string | null;
44
+ publishedById?: string | null;
45
+ publishedAt?: string | null;
46
+ }
47
+ interface AgentMutationState<T> {
48
+ data: T | undefined;
49
+ loading: boolean;
50
+ error: Error | undefined;
51
+ }
52
+ interface CreateAgentInput {
53
+ workspaceId: string;
54
+ name: string;
55
+ slug?: string;
56
+ description?: string;
57
+ type: string;
58
+ systemPrompt: string;
59
+ temperature?: number;
60
+ maxTokens?: number;
61
+ capabilities?: string[];
62
+ llmModelId?: string;
63
+ }
64
+ interface UpdateAgentInput {
65
+ agentId: string;
66
+ input: GraphQLInput<UpdateBotmanorAgentInput>;
67
+ }
68
+ export declare const agentKeys: {
69
+ all: readonly ["agents"];
70
+ lists: () => readonly ["agents", "list"];
71
+ list: (filter?: BaseFilter) => readonly ["agents", "list", BaseFilter | undefined];
72
+ details: () => readonly ["agents", "detail"];
73
+ detail: (id: string) => readonly ["agents", "detail", string];
74
+ };
75
+ export declare function useAgents(filter?: BaseFilter): {
76
+ data: AgentRecord[];
77
+ loading: boolean;
78
+ error: Error | undefined;
79
+ refetch: () => Promise<void>;
80
+ };
81
+ export declare function useAgent(agentId: string | undefined): {
82
+ data: AgentRecord | null;
83
+ loading: boolean;
84
+ error: Error | undefined;
85
+ refetch: () => Promise<void>;
86
+ };
87
+ export declare function useCreateAgent(): readonly [(input: CreateAgentInput) => Promise<AgentRecord>, AgentMutationState<AgentRecord>];
88
+ export declare function useUpdateAgent(): readonly [({ agentId, input }: UpdateAgentInput) => Promise<AgentRecord>, AgentMutationState<AgentRecord>];
89
+ export declare function useDeleteAgent(): readonly [(agentId: string) => Promise<boolean>, AgentMutationState<boolean>];
90
+ export declare function useAgentVersions(agentId: string | undefined): {
91
+ data: AgentVersionRecord[];
92
+ loading: boolean;
93
+ error: Error | undefined;
94
+ refetch: () => Promise<void>;
95
+ };
96
+ export declare function usePublishAgentVersion(): readonly [({ agentId, versionId, changelog, }: {
97
+ agentId: string;
98
+ versionId: string;
99
+ changelog?: string;
100
+ }) => Promise<AgentVersionRecord>, AgentMutationState<AgentVersionRecord>];
101
+ export declare function useRollbackAgentVersion(): readonly [({ agentId, targetVersionId }: {
102
+ agentId: string;
103
+ targetVersionId: string;
104
+ }) => Promise<AgentVersionRecord>, AgentMutationState<AgentVersionRecord>];
105
+ export {};
@@ -3,7 +3,7 @@ import { buildMutationInput as t, fieldsOf as n } from "./internal/mutationInput
3
3
  import { useCallback as r, useEffect as i, useMemo as a, useState as o } from "react";
4
4
  import { gql as s } from "@apollo/client";
5
5
  import { useGatewayClient as c } from "@burdenoff/fe-libs/shared/graphql";
6
- //#region src/botlit/hooks/useAgents.ts
6
+ // src/botlit/hooks/useAgents.ts
7
7
  var l = s`
8
8
  query ListBotmanorAgents($filters: BotmanorAgentFilterInput, $pagination: PaginationInput) {
9
9
  listBotmanorAgents(filters: $filters, pagination: $pagination) {
@@ -181,7 +181,7 @@ function v(e) {
181
181
  return e;
182
182
  }
183
183
  function y(e, t) {
184
- if (!(!e && !t)) return {
184
+ if (e || t) return {
185
185
  workspaceId: e,
186
186
  search: t?.search,
187
187
  status: t?.status?.[0],
@@ -197,21 +197,21 @@ function b(t) {
197
197
  offset: 0
198
198
  }
199
199
  }), [t, s]), _ = r(async () => {
200
- if (!s) {
201
- d([]);
202
- return;
203
- }
204
- p(!0), h(void 0);
205
- try {
206
- d((await n.query({
207
- query: l,
208
- variables: g,
209
- fetchPolicy: "network-only"
210
- })).data?.listBotmanorAgents ?? []);
211
- } catch (e) {
212
- h(e instanceof Error ? e : /* @__PURE__ */ Error("Failed to load agents"));
213
- } finally {
214
- p(!1);
200
+ if (!s) d([]);
201
+ else {
202
+ p(!0), h(void 0);
203
+ try {
204
+ let e = await n.query({
205
+ query: l,
206
+ variables: g,
207
+ fetchPolicy: "network-only"
208
+ });
209
+ d(e.data?.listBotmanorAgents ?? []);
210
+ } catch (e) {
211
+ h(e instanceof Error ? e : /* @__PURE__ */ Error("Failed to load agents"));
212
+ } finally {
213
+ p(!1);
214
+ }
215
215
  }
216
216
  }, [
217
217
  n,
@@ -229,21 +229,21 @@ function b(t) {
229
229
  }
230
230
  function x(e) {
231
231
  let t = v(c("workspace")), [n, a] = o(null), [s, l] = o(!1), [d, f] = o(), p = r(async () => {
232
- if (!e) {
233
- a(null);
234
- return;
235
- }
236
- l(!0), f(void 0);
237
- try {
238
- a((await t.query({
239
- query: u,
240
- variables: { id: e },
241
- fetchPolicy: "network-only"
242
- })).data?.getBotmanorAgent ?? null);
243
- } catch (e) {
244
- f(e instanceof Error ? e : /* @__PURE__ */ Error("Failed to load agent"));
245
- } finally {
246
- l(!1);
232
+ if (!e) a(null);
233
+ else {
234
+ l(!0), f(void 0);
235
+ try {
236
+ let n = await t.query({
237
+ query: u,
238
+ variables: { id: e },
239
+ fetchPolicy: "network-only"
240
+ });
241
+ a(n.data?.getBotmanorAgent ?? null);
242
+ } catch (e) {
243
+ f(e instanceof Error ? e : /* @__PURE__ */ Error("Failed to load agent"));
244
+ } finally {
245
+ l(!1);
246
+ }
247
247
  }
248
248
  }, [e, t]);
249
249
  return i(() => {
@@ -358,27 +358,27 @@ function w() {
358
358
  }
359
359
  function T(e) {
360
360
  let t = v(c("workspace")), [n, a] = o([]), [s, l] = o(!1), [u, d] = o(), f = r(async () => {
361
- if (!e) {
362
- a([]);
363
- return;
364
- }
365
- l(!0), d(void 0);
366
- try {
367
- a([...(await t.query({
368
- query: m,
369
- variables: {
370
- agentId: e,
371
- pagination: {
372
- limit: 50,
373
- offset: 0
374
- }
375
- },
376
- fetchPolicy: "network-only"
377
- })).data?.listAgentVersions ?? []].sort((e, t) => e.createdAt && t.createdAt ? t.createdAt.localeCompare(e.createdAt) : 0));
378
- } catch (e) {
379
- d(e instanceof Error ? e : /* @__PURE__ */ Error("Failed to load agent versions"));
380
- } finally {
381
- l(!1);
361
+ if (!e) a([]);
362
+ else {
363
+ l(!0), d(void 0);
364
+ try {
365
+ let n = (await t.query({
366
+ query: m,
367
+ variables: {
368
+ agentId: e,
369
+ pagination: {
370
+ limit: 50,
371
+ offset: 0
372
+ }
373
+ },
374
+ fetchPolicy: "network-only"
375
+ })).data?.listAgentVersions ?? [];
376
+ a([...n].sort((e, t) => e.createdAt && t.createdAt ? t.createdAt.localeCompare(e.createdAt) : 0));
377
+ } catch (e) {
378
+ d(e instanceof Error ? e : /* @__PURE__ */ Error("Failed to load agent versions"));
379
+ } finally {
380
+ l(!1);
381
+ }
382
382
  }
383
383
  }, [e, t]);
384
384
  return i(() => {
@@ -463,7 +463,6 @@ function D() {
463
463
  }
464
464
  }, [e]), t];
465
465
  }
466
- //#endregion
467
466
  export { x as useAgent, T as useAgentVersions, b as useAgents, S as useCreateAgent, w as useDeleteAgent, E as usePublishAgentVersion, D as useRollbackAgentVersion, C as useUpdateAgent };
468
467
 
469
468
  //# sourceMappingURL=useAgents.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAgents.js","names":[],"sources":["../../../src/botlit/hooks/useAgents.ts"],"sourcesContent":["import { gql, type ApolloClient } from '@apollo/client';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useGatewayClient } from '@burdenoff/fe-libs/shared/graphql';\n\nimport type { UpdateBotmanorAgentInput } from '../../generated/wspace-types';\nimport { useBotlit } from '../providers/BotlitProvider';\nimport type { BaseFilter } from '../types';\nimport { buildMutationInput, fieldsOf, type GraphQLInput } from './internal/mutationInput';\n\nconst LIST_AGENTS_DOCUMENT = gql`\n query ListBotmanorAgents($filters: BotmanorAgentFilterInput, $pagination: PaginationInput) {\n listBotmanorAgents(filters: $filters, pagination: $pagination) {\n id\n name\n slug\n description\n type\n status\n visibility\n capabilities\n llmModelId\n bucketId\n executionCount\n lastExecutedAt\n specialization\n tagIds\n createdAt\n updatedAt\n createdById\n updatedById\n workspaceId\n }\n }\n`;\n\nconst GET_AGENT_DOCUMENT = gql`\n query GetBotmanorAgent($id: ID!) {\n getBotmanorAgent(id: $id) {\n id\n name\n slug\n description\n type\n status\n visibility\n capabilities\n llmModelId\n bucketId\n currentVersionId\n draftVersionId\n executionCount\n lastExecutedAt\n specialization\n systemPrompt\n temperature\n maxTokens\n maxConcurrentExecutions\n knowledgeBaseIds\n mcpConnectionIds\n workflowIds\n tagIds\n metadata\n createdAt\n updatedAt\n createdById\n updatedById\n workspaceId\n }\n }\n`;\n\nconst CREATE_AGENT_DOCUMENT = gql`\n mutation CreateBotmanorAgent($input: CreateBotmanorAgentInput!) {\n createBotmanorAgent(input: $input) {\n id\n name\n slug\n description\n type\n status\n visibility\n capabilities\n llmModelId\n systemPrompt\n temperature\n maxTokens\n maxConcurrentExecutions\n tagIds\n createdAt\n updatedAt\n workspaceId\n }\n }\n`;\n\nconst UPDATE_AGENT_DOCUMENT = gql`\n mutation UpdateBotmanorAgent($id: ID!, $input: UpdateBotmanorAgentInput!) {\n updateBotmanorAgent(id: $id, input: $input) {\n id\n name\n slug\n description\n type\n status\n visibility\n capabilities\n llmModelId\n systemPrompt\n temperature\n maxTokens\n maxConcurrentExecutions\n knowledgeBaseIds\n mcpConnectionIds\n workflowIds\n tagIds\n metadata\n createdAt\n updatedAt\n updatedById\n workspaceId\n }\n }\n`;\n\nconst DELETE_AGENT_DOCUMENT = gql`\n mutation DeleteBotmanorAgent($id: ID!) {\n deleteBotmanorAgent(id: $id)\n }\n`;\n\n// BOFF-4381: agent version history, publish, and rollback.\nconst LIST_AGENT_VERSIONS_DOCUMENT = gql`\n query ListAgentVersions($agentId: ID!, $pagination: PaginationInput) {\n listAgentVersions(agentId: $agentId, pagination: $pagination) {\n id\n agentId\n version\n status\n changelog\n config\n createdById\n createdAt\n publishedById\n publishedAt\n }\n }\n`;\n\nconst PUBLISH_AGENT_VERSION_DOCUMENT = gql`\n mutation PublishAgentVersion($agentId: ID!, $versionId: ID!, $changelog: String) {\n publishAgentVersion(agentId: $agentId, versionId: $versionId, changelog: $changelog) {\n id\n agentId\n version\n status\n changelog\n publishedById\n publishedAt\n }\n }\n`;\n\nconst ROLLBACK_AGENT_VERSION_DOCUMENT = gql`\n mutation RollbackAgentVersion($agentId: ID!, $targetVersionId: ID!) {\n rollbackAgentVersion(agentId: $agentId, targetVersionId: $targetVersionId) {\n id\n agentId\n version\n status\n changelog\n publishedById\n publishedAt\n }\n }\n`;\n\ntype WorkspaceClient = ApolloClient;\n\nexport interface AgentRecord {\n id: string;\n name: string;\n slug: string;\n description?: string | null;\n type: string;\n status: string;\n visibility?: string | null;\n capabilities?: string[] | null;\n llmModelId?: string | null;\n bucketId?: string | null;\n currentVersionId?: string | null;\n draftVersionId?: string | null;\n executionCount?: number | null;\n lastExecutedAt?: string | null;\n specialization?: string | null;\n systemPrompt?: string | null;\n temperature?: number | null;\n maxTokens?: number | null;\n maxConcurrentExecutions?: number | null;\n knowledgeBaseIds?: string[] | null;\n mcpConnectionIds?: string[] | null;\n workflowIds?: string[] | null;\n tagIds?: string[] | null;\n metadata?: Record<string, unknown> | null;\n createdAt?: string | null;\n updatedAt?: string | null;\n createdById?: string | null;\n updatedById?: string | null;\n workspaceId?: string | null;\n}\n\ninterface ListBotmanorAgentsData {\n listBotmanorAgents: AgentRecord[];\n}\n\ninterface GetAgentData {\n getBotmanorAgent: AgentRecord | null;\n}\n\ninterface CreateAgentData {\n createBotmanorAgent: AgentRecord;\n}\n\ninterface UpdateAgentData {\n updateBotmanorAgent: AgentRecord;\n}\n\ninterface DeleteAgentData {\n deleteBotmanorAgent: boolean;\n}\n\nexport interface AgentVersionRecord {\n id: string;\n agentId: string;\n version: string;\n status: 'DRAFT' | 'PUBLISHED' | 'HISTORICAL';\n changelog?: string | null;\n config?: Record<string, unknown> | null;\n createdById?: string | null;\n createdAt?: string | null;\n publishedById?: string | null;\n publishedAt?: string | null;\n}\n\ninterface ListAgentVersionsData {\n listAgentVersions: AgentVersionRecord[];\n}\n\ninterface PublishAgentVersionData {\n publishAgentVersion: AgentVersionRecord;\n}\n\ninterface RollbackAgentVersionData {\n rollbackAgentVersion: AgentVersionRecord;\n}\n\ninterface AgentMutationState<T> {\n data: T | undefined;\n loading: boolean;\n error: Error | undefined;\n}\n\ninterface CreateAgentInput {\n workspaceId: string;\n name: string;\n slug?: string;\n description?: string;\n type: string;\n systemPrompt: string;\n temperature?: number;\n maxTokens?: number;\n capabilities?: string[];\n llmModelId?: string;\n}\n\ninterface UpdateAgentInput {\n agentId: string;\n input: GraphQLInput<UpdateBotmanorAgentInput>;\n}\n\nconst UPDATE_AGENT_FIELDS = fieldsOf<UpdateBotmanorAgentInput>({\n bucketId: true,\n capabilities: true,\n context: true,\n description: true,\n knowledgeBaseIds: true,\n llmModelId: true,\n maxConcurrentExecutions: true,\n maxTokens: true,\n mcpConnectionIds: true,\n metadata: true,\n name: true,\n slug: true,\n specialization: true,\n status: true,\n systemPrompt: true,\n tagIds: true,\n tags: true,\n temperature: true,\n type: true,\n visibility: true,\n workflowIds: true,\n});\n\nfunction getWorkspaceClient(client: unknown): WorkspaceClient {\n return client as WorkspaceClient;\n}\n\nfunction buildAgentFilter(\n workspaceId: string | undefined,\n filter?: BaseFilter\n): Record<string, unknown> | undefined {\n if (!workspaceId && !filter) return undefined;\n\n return {\n workspaceId,\n search: filter?.search,\n status: filter?.status?.[0],\n visibility: filter?.visibility?.[0],\n bucketId: filter?.bucketId,\n };\n}\n\nexport const agentKeys = {\n all: ['agents'] as const,\n lists: () => [...agentKeys.all, 'list'] as const,\n list: (filter?: BaseFilter) => [...agentKeys.lists(), filter] as const,\n details: () => [...agentKeys.all, 'detail'] as const,\n detail: (id: string) => [...agentKeys.details(), id] as const,\n};\n\nexport function useAgents(filter?: BaseFilter) {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const { workspaceId } = useBotlit();\n const [data, setData] = useState<AgentRecord[]>([]);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | undefined>();\n\n const variables = useMemo(\n () => ({\n filters: buildAgentFilter(workspaceId, filter),\n pagination: { limit: 100, offset: 0 },\n }),\n [filter, workspaceId]\n );\n\n const refetch = useCallback(async () => {\n if (!workspaceId) {\n setData([]);\n return;\n }\n\n setLoading(true);\n setError(undefined);\n try {\n const result = await client.query<ListBotmanorAgentsData>({\n query: LIST_AGENTS_DOCUMENT,\n variables,\n fetchPolicy: 'network-only',\n });\n setData(result.data?.listBotmanorAgents ?? []);\n } catch (queryError) {\n setError(queryError instanceof Error ? queryError : new Error('Failed to load agents'));\n } finally {\n setLoading(false);\n }\n }, [client, variables, workspaceId]);\n\n useEffect(() => {\n void refetch();\n }, [refetch]);\n\n return { data, loading, error, refetch };\n}\n\nexport function useAgent(agentId: string | undefined) {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const [data, setData] = useState<AgentRecord | null>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | undefined>();\n\n const refetch = useCallback(async () => {\n if (!agentId) {\n setData(null);\n return;\n }\n\n setLoading(true);\n setError(undefined);\n try {\n const result = await client.query<GetAgentData>({\n query: GET_AGENT_DOCUMENT,\n variables: { id: agentId },\n fetchPolicy: 'network-only',\n });\n setData(result.data?.getBotmanorAgent ?? null);\n } catch (queryError) {\n setError(queryError instanceof Error ? queryError : new Error('Failed to load agent'));\n } finally {\n setLoading(false);\n }\n }, [agentId, client]);\n\n useEffect(() => {\n void refetch();\n }, [refetch]);\n\n return { data, loading, error, refetch };\n}\n\nexport function useCreateAgent() {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const [state, setState] = useState<AgentMutationState<AgentRecord>>({\n data: undefined,\n loading: false,\n error: undefined,\n });\n\n const createAgent = useCallback(\n async (input: CreateAgentInput) => {\n setState({ data: undefined, loading: true, error: undefined });\n try {\n const result = await client.mutate<CreateAgentData>({\n mutation: CREATE_AGENT_DOCUMENT,\n variables: { input },\n });\n\n const createdAgent = result.data?.createBotmanorAgent;\n if (!createdAgent) {\n throw new Error('Failed to create agent');\n }\n\n setState({ data: createdAgent, loading: false, error: undefined });\n return createdAgent;\n } catch (mutationError) {\n const error =\n mutationError instanceof Error ? mutationError : new Error('Failed to create agent');\n setState({ data: undefined, loading: false, error });\n throw error;\n }\n },\n [client]\n );\n\n return [createAgent, state] as const;\n}\n\nexport function useUpdateAgent() {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const [state, setState] = useState<AgentMutationState<AgentRecord>>({\n data: undefined,\n loading: false,\n error: undefined,\n });\n\n const updateAgent = useCallback(\n async ({ agentId, input }: UpdateAgentInput) => {\n setState({ data: undefined, loading: true, error: undefined });\n try {\n const result = await client.mutate<UpdateAgentData>({\n mutation: UPDATE_AGENT_DOCUMENT,\n variables: { id: agentId, input: buildMutationInput(input, UPDATE_AGENT_FIELDS) },\n });\n\n const updatedAgent = result.data?.updateBotmanorAgent;\n if (!updatedAgent) {\n throw new Error('Failed to update agent');\n }\n\n setState({ data: updatedAgent, loading: false, error: undefined });\n return updatedAgent;\n } catch (mutationError) {\n const error =\n mutationError instanceof Error ? mutationError : new Error('Failed to update agent');\n setState({ data: undefined, loading: false, error });\n throw error;\n }\n },\n [client]\n );\n\n return [updateAgent, state] as const;\n}\n\nexport function useDeleteAgent() {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const [state, setState] = useState<AgentMutationState<boolean>>({\n data: undefined,\n loading: false,\n error: undefined,\n });\n\n const deleteAgent = useCallback(\n async (agentId: string) => {\n setState({ data: undefined, loading: true, error: undefined });\n try {\n const result = await client.mutate<DeleteAgentData>({\n mutation: DELETE_AGENT_DOCUMENT,\n variables: { id: agentId },\n });\n\n const deleted = result.data?.deleteBotmanorAgent ?? false;\n setState({ data: deleted, loading: false, error: undefined });\n return deleted;\n } catch (mutationError) {\n const error =\n mutationError instanceof Error ? mutationError : new Error('Failed to delete agent');\n setState({ data: undefined, loading: false, error });\n throw error;\n }\n },\n [client]\n );\n\n return [deleteAgent, state] as const;\n}\n\n// ============================================================================\n// VERSIONING (BOFF-4381) — version history, publish, rollback\n// ============================================================================\n\nexport function useAgentVersions(agentId: string | undefined) {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const [data, setData] = useState<AgentVersionRecord[]>([]);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | undefined>();\n\n const refetch = useCallback(async () => {\n if (!agentId) {\n setData([]);\n return;\n }\n\n setLoading(true);\n setError(undefined);\n try {\n const result = await client.query<ListAgentVersionsData>({\n query: LIST_AGENT_VERSIONS_DOCUMENT,\n variables: { agentId, pagination: { limit: 50, offset: 0 } },\n fetchPolicy: 'network-only',\n });\n const versions = result.data?.listAgentVersions ?? [];\n // Newest first, regardless of what the server returned.\n setData(\n [...versions].sort((a, b) =>\n a.createdAt && b.createdAt ? b.createdAt.localeCompare(a.createdAt) : 0\n )\n );\n } catch (queryError) {\n setError(\n queryError instanceof Error ? queryError : new Error('Failed to load agent versions')\n );\n } finally {\n setLoading(false);\n }\n }, [agentId, client]);\n\n useEffect(() => {\n void refetch();\n }, [refetch]);\n\n return { data, loading, error, refetch };\n}\n\nexport function usePublishAgentVersion() {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const [state, setState] = useState<AgentMutationState<AgentVersionRecord>>({\n data: undefined,\n loading: false,\n error: undefined,\n });\n\n const publishAgentVersion = useCallback(\n async ({\n agentId,\n versionId,\n changelog,\n }: {\n agentId: string;\n versionId: string;\n changelog?: string;\n }) => {\n setState({ data: undefined, loading: true, error: undefined });\n try {\n const result = await client.mutate<PublishAgentVersionData>({\n mutation: PUBLISH_AGENT_VERSION_DOCUMENT,\n variables: { agentId, versionId, changelog: changelog?.trim() || undefined },\n });\n\n const published = result.data?.publishAgentVersion;\n if (!published) {\n throw new Error('Failed to publish agent version');\n }\n\n setState({ data: published, loading: false, error: undefined });\n return published;\n } catch (mutationError) {\n const error =\n mutationError instanceof Error\n ? mutationError\n : new Error('Failed to publish agent version');\n setState({ data: undefined, loading: false, error });\n throw error;\n }\n },\n [client]\n );\n\n return [publishAgentVersion, state] as const;\n}\n\nexport function useRollbackAgentVersion() {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const [state, setState] = useState<AgentMutationState<AgentVersionRecord>>({\n data: undefined,\n loading: false,\n error: undefined,\n });\n\n const rollbackAgentVersion = useCallback(\n async ({ agentId, targetVersionId }: { agentId: string; targetVersionId: string }) => {\n setState({ data: undefined, loading: true, error: undefined });\n try {\n const result = await client.mutate<RollbackAgentVersionData>({\n mutation: ROLLBACK_AGENT_VERSION_DOCUMENT,\n variables: { agentId, targetVersionId },\n });\n\n const rolledBack = result.data?.rollbackAgentVersion;\n if (!rolledBack) {\n throw new Error('Failed to roll back agent version');\n }\n\n setState({ data: rolledBack, loading: false, error: undefined });\n return rolledBack;\n } catch (mutationError) {\n const error =\n mutationError instanceof Error\n ? mutationError\n : new Error('Failed to roll back agent version');\n setState({ data: undefined, loading: false, error });\n throw error;\n }\n },\n [client]\n );\n\n return [rollbackAgentVersion, state] as const;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"useAgents.js","names":["LIST_AGENTS_DOCUMENT","GET_AGENT_DOCUMENT","CREATE_AGENT_DOCUMENT","UPDATE_AGENT_DOCUMENT","DELETE_AGENT_DOCUMENT","LIST_AGENT_VERSIONS_DOCUMENT","PUBLISH_AGENT_VERSION_DOCUMENT","ROLLBACK_AGENT_VERSION_DOCUMENT","UPDATE_AGENT_FIELDS","fieldsOf","getWorkspaceClient","client","buildAgentFilter","workspaceId","filter","useAgents","useGatewayClient","useBotlit","data","setData","useState","loading","setLoading","error","setError","variables","useMemo","refetch","useCallback","result","queryError","useEffect","useAgent","agentId","useCreateAgent","state","setState","createdAgent","mutationError","useUpdateAgent","updatedAgent","buildMutationInput","input","useDeleteAgent","deleted","useAgentVersions","versions","a","b","usePublishAgentVersion","published","changelog","useRollbackAgentVersion","rolledBack"],"sources":["../../../src/botlit/hooks/useAgents.ts"],"sourcesContent":["import { gql, type ApolloClient } from '@apollo/client';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useGatewayClient } from '@burdenoff/fe-libs/shared/graphql';\n\nimport type { UpdateBotmanorAgentInput } from '../../generated/wspace-types';\nimport { useBotlit } from '../providers/BotlitProvider';\nimport type { BaseFilter } from '../types';\nimport { buildMutationInput, fieldsOf, type GraphQLInput } from './internal/mutationInput';\n\nconst LIST_AGENTS_DOCUMENT = gql`\n query ListBotmanorAgents($filters: BotmanorAgentFilterInput, $pagination: PaginationInput) {\n listBotmanorAgents(filters: $filters, pagination: $pagination) {\n id\n name\n slug\n description\n type\n status\n visibility\n capabilities\n llmModelId\n bucketId\n executionCount\n lastExecutedAt\n specialization\n tagIds\n createdAt\n updatedAt\n createdById\n updatedById\n workspaceId\n }\n }\n`;\n\nconst GET_AGENT_DOCUMENT = gql`\n query GetBotmanorAgent($id: ID!) {\n getBotmanorAgent(id: $id) {\n id\n name\n slug\n description\n type\n status\n visibility\n capabilities\n llmModelId\n bucketId\n currentVersionId\n draftVersionId\n executionCount\n lastExecutedAt\n specialization\n systemPrompt\n temperature\n maxTokens\n maxConcurrentExecutions\n knowledgeBaseIds\n mcpConnectionIds\n workflowIds\n tagIds\n metadata\n createdAt\n updatedAt\n createdById\n updatedById\n workspaceId\n }\n }\n`;\n\nconst CREATE_AGENT_DOCUMENT = gql`\n mutation CreateBotmanorAgent($input: CreateBotmanorAgentInput!) {\n createBotmanorAgent(input: $input) {\n id\n name\n slug\n description\n type\n status\n visibility\n capabilities\n llmModelId\n systemPrompt\n temperature\n maxTokens\n maxConcurrentExecutions\n tagIds\n createdAt\n updatedAt\n workspaceId\n }\n }\n`;\n\nconst UPDATE_AGENT_DOCUMENT = gql`\n mutation UpdateBotmanorAgent($id: ID!, $input: UpdateBotmanorAgentInput!) {\n updateBotmanorAgent(id: $id, input: $input) {\n id\n name\n slug\n description\n type\n status\n visibility\n capabilities\n llmModelId\n systemPrompt\n temperature\n maxTokens\n maxConcurrentExecutions\n knowledgeBaseIds\n mcpConnectionIds\n workflowIds\n tagIds\n metadata\n createdAt\n updatedAt\n updatedById\n workspaceId\n }\n }\n`;\n\nconst DELETE_AGENT_DOCUMENT = gql`\n mutation DeleteBotmanorAgent($id: ID!) {\n deleteBotmanorAgent(id: $id)\n }\n`;\n\n// BOFF-4381: agent version history, publish, and rollback.\nconst LIST_AGENT_VERSIONS_DOCUMENT = gql`\n query ListAgentVersions($agentId: ID!, $pagination: PaginationInput) {\n listAgentVersions(agentId: $agentId, pagination: $pagination) {\n id\n agentId\n version\n status\n changelog\n config\n createdById\n createdAt\n publishedById\n publishedAt\n }\n }\n`;\n\nconst PUBLISH_AGENT_VERSION_DOCUMENT = gql`\n mutation PublishAgentVersion($agentId: ID!, $versionId: ID!, $changelog: String) {\n publishAgentVersion(agentId: $agentId, versionId: $versionId, changelog: $changelog) {\n id\n agentId\n version\n status\n changelog\n publishedById\n publishedAt\n }\n }\n`;\n\nconst ROLLBACK_AGENT_VERSION_DOCUMENT = gql`\n mutation RollbackAgentVersion($agentId: ID!, $targetVersionId: ID!) {\n rollbackAgentVersion(agentId: $agentId, targetVersionId: $targetVersionId) {\n id\n agentId\n version\n status\n changelog\n publishedById\n publishedAt\n }\n }\n`;\n\ntype WorkspaceClient = ApolloClient;\n\nexport interface AgentRecord {\n id: string;\n name: string;\n slug: string;\n description?: string | null;\n type: string;\n status: string;\n visibility?: string | null;\n capabilities?: string[] | null;\n llmModelId?: string | null;\n bucketId?: string | null;\n currentVersionId?: string | null;\n draftVersionId?: string | null;\n executionCount?: number | null;\n lastExecutedAt?: string | null;\n specialization?: string | null;\n systemPrompt?: string | null;\n temperature?: number | null;\n maxTokens?: number | null;\n maxConcurrentExecutions?: number | null;\n knowledgeBaseIds?: string[] | null;\n mcpConnectionIds?: string[] | null;\n workflowIds?: string[] | null;\n tagIds?: string[] | null;\n metadata?: Record<string, unknown> | null;\n createdAt?: string | null;\n updatedAt?: string | null;\n createdById?: string | null;\n updatedById?: string | null;\n workspaceId?: string | null;\n}\n\ninterface ListBotmanorAgentsData {\n listBotmanorAgents: AgentRecord[];\n}\n\ninterface GetAgentData {\n getBotmanorAgent: AgentRecord | null;\n}\n\ninterface CreateAgentData {\n createBotmanorAgent: AgentRecord;\n}\n\ninterface UpdateAgentData {\n updateBotmanorAgent: AgentRecord;\n}\n\ninterface DeleteAgentData {\n deleteBotmanorAgent: boolean;\n}\n\nexport interface AgentVersionRecord {\n id: string;\n agentId: string;\n version: string;\n status: 'DRAFT' | 'PUBLISHED' | 'HISTORICAL';\n changelog?: string | null;\n config?: Record<string, unknown> | null;\n createdById?: string | null;\n createdAt?: string | null;\n publishedById?: string | null;\n publishedAt?: string | null;\n}\n\ninterface ListAgentVersionsData {\n listAgentVersions: AgentVersionRecord[];\n}\n\ninterface PublishAgentVersionData {\n publishAgentVersion: AgentVersionRecord;\n}\n\ninterface RollbackAgentVersionData {\n rollbackAgentVersion: AgentVersionRecord;\n}\n\ninterface AgentMutationState<T> {\n data: T | undefined;\n loading: boolean;\n error: Error | undefined;\n}\n\ninterface CreateAgentInput {\n workspaceId: string;\n name: string;\n slug?: string;\n description?: string;\n type: string;\n systemPrompt: string;\n temperature?: number;\n maxTokens?: number;\n capabilities?: string[];\n llmModelId?: string;\n}\n\ninterface UpdateAgentInput {\n agentId: string;\n input: GraphQLInput<UpdateBotmanorAgentInput>;\n}\n\nconst UPDATE_AGENT_FIELDS = fieldsOf<UpdateBotmanorAgentInput>({\n bucketId: true,\n capabilities: true,\n context: true,\n description: true,\n knowledgeBaseIds: true,\n llmModelId: true,\n maxConcurrentExecutions: true,\n maxTokens: true,\n mcpConnectionIds: true,\n metadata: true,\n name: true,\n slug: true,\n specialization: true,\n status: true,\n systemPrompt: true,\n tagIds: true,\n tags: true,\n temperature: true,\n type: true,\n visibility: true,\n workflowIds: true,\n});\n\nfunction getWorkspaceClient(client: unknown): WorkspaceClient {\n return client as WorkspaceClient;\n}\n\nfunction buildAgentFilter(\n workspaceId: string | undefined,\n filter?: BaseFilter\n): Record<string, unknown> | undefined {\n if (!workspaceId && !filter) return undefined;\n\n return {\n workspaceId,\n search: filter?.search,\n status: filter?.status?.[0],\n visibility: filter?.visibility?.[0],\n bucketId: filter?.bucketId,\n };\n}\n\nexport const agentKeys = {\n all: ['agents'] as const,\n lists: () => [...agentKeys.all, 'list'] as const,\n list: (filter?: BaseFilter) => [...agentKeys.lists(), filter] as const,\n details: () => [...agentKeys.all, 'detail'] as const,\n detail: (id: string) => [...agentKeys.details(), id] as const,\n};\n\nexport function useAgents(filter?: BaseFilter) {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const { workspaceId } = useBotlit();\n const [data, setData] = useState<AgentRecord[]>([]);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | undefined>();\n\n const variables = useMemo(\n () => ({\n filters: buildAgentFilter(workspaceId, filter),\n pagination: { limit: 100, offset: 0 },\n }),\n [filter, workspaceId]\n );\n\n const refetch = useCallback(async () => {\n if (!workspaceId) {\n setData([]);\n return;\n }\n\n setLoading(true);\n setError(undefined);\n try {\n const result = await client.query<ListBotmanorAgentsData>({\n query: LIST_AGENTS_DOCUMENT,\n variables,\n fetchPolicy: 'network-only',\n });\n setData(result.data?.listBotmanorAgents ?? []);\n } catch (queryError) {\n setError(queryError instanceof Error ? queryError : new Error('Failed to load agents'));\n } finally {\n setLoading(false);\n }\n }, [client, variables, workspaceId]);\n\n useEffect(() => {\n void refetch();\n }, [refetch]);\n\n return { data, loading, error, refetch };\n}\n\nexport function useAgent(agentId: string | undefined) {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const [data, setData] = useState<AgentRecord | null>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | undefined>();\n\n const refetch = useCallback(async () => {\n if (!agentId) {\n setData(null);\n return;\n }\n\n setLoading(true);\n setError(undefined);\n try {\n const result = await client.query<GetAgentData>({\n query: GET_AGENT_DOCUMENT,\n variables: { id: agentId },\n fetchPolicy: 'network-only',\n });\n setData(result.data?.getBotmanorAgent ?? null);\n } catch (queryError) {\n setError(queryError instanceof Error ? queryError : new Error('Failed to load agent'));\n } finally {\n setLoading(false);\n }\n }, [agentId, client]);\n\n useEffect(() => {\n void refetch();\n }, [refetch]);\n\n return { data, loading, error, refetch };\n}\n\nexport function useCreateAgent() {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const [state, setState] = useState<AgentMutationState<AgentRecord>>({\n data: undefined,\n loading: false,\n error: undefined,\n });\n\n const createAgent = useCallback(\n async (input: CreateAgentInput) => {\n setState({ data: undefined, loading: true, error: undefined });\n try {\n const result = await client.mutate<CreateAgentData>({\n mutation: CREATE_AGENT_DOCUMENT,\n variables: { input },\n });\n\n const createdAgent = result.data?.createBotmanorAgent;\n if (!createdAgent) {\n throw new Error('Failed to create agent');\n }\n\n setState({ data: createdAgent, loading: false, error: undefined });\n return createdAgent;\n } catch (mutationError) {\n const error =\n mutationError instanceof Error ? mutationError : new Error('Failed to create agent');\n setState({ data: undefined, loading: false, error });\n throw error;\n }\n },\n [client]\n );\n\n return [createAgent, state] as const;\n}\n\nexport function useUpdateAgent() {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const [state, setState] = useState<AgentMutationState<AgentRecord>>({\n data: undefined,\n loading: false,\n error: undefined,\n });\n\n const updateAgent = useCallback(\n async ({ agentId, input }: UpdateAgentInput) => {\n setState({ data: undefined, loading: true, error: undefined });\n try {\n const result = await client.mutate<UpdateAgentData>({\n mutation: UPDATE_AGENT_DOCUMENT,\n variables: { id: agentId, input: buildMutationInput(input, UPDATE_AGENT_FIELDS) },\n });\n\n const updatedAgent = result.data?.updateBotmanorAgent;\n if (!updatedAgent) {\n throw new Error('Failed to update agent');\n }\n\n setState({ data: updatedAgent, loading: false, error: undefined });\n return updatedAgent;\n } catch (mutationError) {\n const error =\n mutationError instanceof Error ? mutationError : new Error('Failed to update agent');\n setState({ data: undefined, loading: false, error });\n throw error;\n }\n },\n [client]\n );\n\n return [updateAgent, state] as const;\n}\n\nexport function useDeleteAgent() {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const [state, setState] = useState<AgentMutationState<boolean>>({\n data: undefined,\n loading: false,\n error: undefined,\n });\n\n const deleteAgent = useCallback(\n async (agentId: string) => {\n setState({ data: undefined, loading: true, error: undefined });\n try {\n const result = await client.mutate<DeleteAgentData>({\n mutation: DELETE_AGENT_DOCUMENT,\n variables: { id: agentId },\n });\n\n const deleted = result.data?.deleteBotmanorAgent ?? false;\n setState({ data: deleted, loading: false, error: undefined });\n return deleted;\n } catch (mutationError) {\n const error =\n mutationError instanceof Error ? mutationError : new Error('Failed to delete agent');\n setState({ data: undefined, loading: false, error });\n throw error;\n }\n },\n [client]\n );\n\n return [deleteAgent, state] as const;\n}\n\n// ============================================================================\n// VERSIONING (BOFF-4381) — version history, publish, rollback\n// ============================================================================\n\nexport function useAgentVersions(agentId: string | undefined) {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const [data, setData] = useState<AgentVersionRecord[]>([]);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | undefined>();\n\n const refetch = useCallback(async () => {\n if (!agentId) {\n setData([]);\n return;\n }\n\n setLoading(true);\n setError(undefined);\n try {\n const result = await client.query<ListAgentVersionsData>({\n query: LIST_AGENT_VERSIONS_DOCUMENT,\n variables: { agentId, pagination: { limit: 50, offset: 0 } },\n fetchPolicy: 'network-only',\n });\n const versions = result.data?.listAgentVersions ?? [];\n // Newest first, regardless of what the server returned.\n setData(\n [...versions].sort((a, b) =>\n a.createdAt && b.createdAt ? b.createdAt.localeCompare(a.createdAt) : 0\n )\n );\n } catch (queryError) {\n setError(\n queryError instanceof Error ? queryError : new Error('Failed to load agent versions')\n );\n } finally {\n setLoading(false);\n }\n }, [agentId, client]);\n\n useEffect(() => {\n void refetch();\n }, [refetch]);\n\n return { data, loading, error, refetch };\n}\n\nexport function usePublishAgentVersion() {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const [state, setState] = useState<AgentMutationState<AgentVersionRecord>>({\n data: undefined,\n loading: false,\n error: undefined,\n });\n\n const publishAgentVersion = useCallback(\n async ({\n agentId,\n versionId,\n changelog,\n }: {\n agentId: string;\n versionId: string;\n changelog?: string;\n }) => {\n setState({ data: undefined, loading: true, error: undefined });\n try {\n const result = await client.mutate<PublishAgentVersionData>({\n mutation: PUBLISH_AGENT_VERSION_DOCUMENT,\n variables: { agentId, versionId, changelog: changelog?.trim() || undefined },\n });\n\n const published = result.data?.publishAgentVersion;\n if (!published) {\n throw new Error('Failed to publish agent version');\n }\n\n setState({ data: published, loading: false, error: undefined });\n return published;\n } catch (mutationError) {\n const error =\n mutationError instanceof Error\n ? mutationError\n : new Error('Failed to publish agent version');\n setState({ data: undefined, loading: false, error });\n throw error;\n }\n },\n [client]\n );\n\n return [publishAgentVersion, state] as const;\n}\n\nexport function useRollbackAgentVersion() {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const [state, setState] = useState<AgentMutationState<AgentVersionRecord>>({\n data: undefined,\n loading: false,\n error: undefined,\n });\n\n const rollbackAgentVersion = useCallback(\n async ({ agentId, targetVersionId }: { agentId: string; targetVersionId: string }) => {\n setState({ data: undefined, loading: true, error: undefined });\n try {\n const result = await client.mutate<RollbackAgentVersionData>({\n mutation: ROLLBACK_AGENT_VERSION_DOCUMENT,\n variables: { agentId, targetVersionId },\n });\n\n const rolledBack = result.data?.rollbackAgentVersion;\n if (!rolledBack) {\n throw new Error('Failed to roll back agent version');\n }\n\n setState({ data: rolledBack, loading: false, error: undefined });\n return rolledBack;\n } catch (mutationError) {\n const error =\n mutationError instanceof Error\n ? mutationError\n : new Error('Failed to roll back agent version');\n setState({ data: undefined, loading: false, error });\n throw error;\n }\n },\n [client]\n );\n\n return [rollbackAgentVersion, state] as const;\n}\n"],"mappings":"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"}