@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,22 +1,22 @@
1
- import { useTr as e } from "../../shared/hooks/useTr.js";
2
- import { useBotlit as t } from "../providers/BotlitProvider.js";
3
- import { formatCurrency as n, formatDuration as r, formatNumber as i, formatRelativeTime as a } from "../utils/formatters.js";
4
- import { PageLayout as o } from "../components/PageLayout.js";
5
- import { Button as s } from "../components/Button.js";
6
- import { Card as c, CardContent as l } from "../components/Card.js";
7
- import { Badge as u } from "../components/Badge.js";
8
- import { EmptyState as d } from "../components/EmptyState.js";
9
- import { Input as f } from "../components/Input.js";
10
- import { ErrorState as p } from "../components/ErrorState.js";
11
- import { summariseExecutions as m, useExecutions as h } from "../hooks/useExecutions.js";
1
+ import { useBotlit as e } from "../providers/BotlitProvider.js";
2
+ import { useTr as t } from "../../shared/hooks/useTr.js";
3
+ import { PageLayout as n } from "../components/PageLayout.js";
4
+ import { Card as r, CardContent as i } from "../components/Card.js";
5
+ import { Button as a } from "../components/Button.js";
6
+ import { Input as o } from "../components/Input.js";
7
+ import { Badge as s } from "../components/Badge.js";
8
+ import { EmptyState as c } from "../components/EmptyState.js";
9
+ import { ErrorState as l } from "../components/ErrorState.js";
12
10
  import "../hooks/index.js";
11
+ import { summariseExecutions as u, useExecutions as d } from "../hooks/useExecutions.js";
12
+ import { formatCurrency as f, formatDuration as p, formatNumber as m, formatRelativeTime as h } from "../utils/formatters.js";
13
13
  import { ExecutionStatus as g } from "../../generated/wspace-types.js";
14
14
  import { useMemo as _, useState as v } from "react";
15
15
  import { PagePurpose as y } from "@burdenoff/fe-libs/ui";
16
16
  import { jsx as b, jsxs as x } from "react/jsx-runtime";
17
17
  import { Link as S } from "react-router";
18
18
  import { Activity as C, CheckCircle as w, Clock as T, DollarSign as E, Hourglass as D, RefreshCw as O, Search as k, TrendingUp as A, XCircle as j, Zap as M } from "lucide-react";
19
- //#region src/botlit/pages/ExecutionsPage.tsx
19
+ // src/botlit/pages/ExecutionsPage.tsx
20
20
  var N = [
21
21
  g.Completed,
22
22
  g.Running,
@@ -44,104 +44,107 @@ var F = ({ status: e, className: t }) => {
44
44
  case g.Pending: return /* @__PURE__ */ b(D, { className: t ?? "h-4 w-4 text-status-warning-text" });
45
45
  default: return /* @__PURE__ */ b(C, { className: t ?? "h-4 w-4 text-text-secondary" });
46
46
  }
47
- }, I = ({ status: e, labels: t }) => /* @__PURE__ */ x(u, {
48
- variant: {
47
+ }, I = ({ status: e, labels: t }) => {
48
+ let n = {
49
49
  [g.Completed]: "success",
50
50
  [g.Failed]: "destructive",
51
51
  [g.Timeout]: "destructive",
52
52
  [g.Running]: "default",
53
53
  [g.Pending]: "warning",
54
54
  [g.Cancelled]: "secondary"
55
- }[e] ?? "secondary",
56
- className: "flex items-center gap-1",
57
- children: [/* @__PURE__ */ b(F, { status: e }), t[e] ?? e]
58
- }), L = () => {
59
- let u = e(), { getPath: g } = t(), [w, D] = v(""), [j, L] = v([]), R = P(u), { data: z, loading: B, error: V, refetch: H } = h(_(() => ({
55
+ };
56
+ return /* @__PURE__ */ x(s, {
57
+ variant: n[e] ?? "secondary",
58
+ className: "flex items-center gap-1",
59
+ children: [/* @__PURE__ */ b(F, { status: e }), t[e] ?? e]
60
+ });
61
+ }, L = () => {
62
+ let s = t(), { getPath: g } = e(), [w, D] = v(""), [j, L] = v([]), R = P(s), z = _(() => ({
60
63
  search: w,
61
64
  status: j
62
- }), [w, j])), U = _(() => m(z), [z]);
63
- return /* @__PURE__ */ b(o, {
64
- title: u("botlit.executions.title", "Executions"),
65
- description: u("botlit.executions.description", "Monitor agent execution history, performance, and costs"),
66
- actions: /* @__PURE__ */ b(s, {
65
+ }), [w, j]), { data: B, loading: V, error: H, refetch: U } = d(z), W = _(() => u(B), [B]);
66
+ return /* @__PURE__ */ b(n, {
67
+ title: s("botlit.executions.title", "Executions"),
68
+ description: s("botlit.executions.description", "Monitor agent execution history, performance, and costs"),
69
+ actions: /* @__PURE__ */ b(a, {
67
70
  variant: "outline",
68
71
  leftIcon: /* @__PURE__ */ b(O, { size: 16 }),
69
- onClick: () => void H(),
70
- children: u("botlit.executions.actions.refresh", "Refresh")
72
+ onClick: () => void U(),
73
+ children: s("botlit.executions.actions.refresh", "Refresh")
71
74
  }),
72
75
  children: /* @__PURE__ */ x("div", {
73
76
  className: "space-y-6",
74
77
  children: [
75
78
  /* @__PURE__ */ b(y, {
76
79
  icon: /* @__PURE__ */ b(C, { size: 18 }),
77
- children: u("botlit.executions.purpose", "An execution is a single run of an agent — one request in, one response out. This page is your observability and cost dashboard: see which runs succeeded or failed, how long they took, how many tokens they burned and what they cost. Use it to spot failing agents, runaway spend and latency regressions, then open any run to inspect its full trace.")
80
+ children: s("botlit.executions.purpose", "An execution is a single run of an agent — one request in, one response out. This page is your observability and cost dashboard: see which runs succeeded or failed, how long they took, how many tokens they burned and what they cost. Use it to spot failing agents, runaway spend and latency regressions, then open any run to inspect its full trace.")
78
81
  }),
79
- U.total > 0 && /* @__PURE__ */ x("div", {
82
+ W.total > 0 && /* @__PURE__ */ x("div", {
80
83
  className: "space-y-2",
81
84
  children: [/* @__PURE__ */ x("div", {
82
85
  className: "grid grid-cols-2 md:grid-cols-4 gap-4",
83
86
  children: [
84
- /* @__PURE__ */ b(c, {
87
+ /* @__PURE__ */ b(r, {
85
88
  treatment: "glass",
86
89
  glow: !0,
87
- children: /* @__PURE__ */ b(l, {
90
+ children: /* @__PURE__ */ b(i, {
88
91
  className: "pt-6",
89
92
  children: /* @__PURE__ */ x("div", {
90
93
  className: "flex items-center justify-between",
91
94
  children: [/* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("p", {
92
95
  className: "text-sm text-text-secondary",
93
- children: u("botlit.executions.rollup.executions", "Executions")
96
+ children: s("botlit.executions.rollup.executions", "Executions")
94
97
  }), /* @__PURE__ */ b("p", {
95
98
  className: "text-2xl font-bold tabular-nums",
96
- children: i(U.total)
99
+ children: m(W.total)
97
100
  })] }), /* @__PURE__ */ b(C, { className: "h-8 w-8 text-text-secondary" })]
98
101
  })
99
102
  })
100
103
  }),
101
- /* @__PURE__ */ b(c, {
104
+ /* @__PURE__ */ b(r, {
102
105
  treatment: "metric",
103
- children: /* @__PURE__ */ b(l, {
106
+ children: /* @__PURE__ */ b(i, {
104
107
  className: "pt-6",
105
108
  children: /* @__PURE__ */ x("div", {
106
109
  className: "flex items-center justify-between",
107
110
  children: [/* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("p", {
108
111
  className: "text-sm text-text-secondary",
109
- children: u("botlit.executions.rollup.successRate", "Success Rate")
112
+ children: s("botlit.executions.rollup.successRate", "Success Rate")
110
113
  }), /* @__PURE__ */ x("p", {
111
114
  className: "text-2xl font-bold tabular-nums text-status-success-text",
112
- children: [(U.successRate * 100).toFixed(1), "%"]
115
+ children: [(W.successRate * 100).toFixed(1), "%"]
113
116
  })] }), /* @__PURE__ */ b(A, { className: "h-8 w-8 text-status-success-text" })]
114
117
  })
115
118
  })
116
119
  }),
117
- /* @__PURE__ */ b(c, {
120
+ /* @__PURE__ */ b(r, {
118
121
  treatment: "metric",
119
- children: /* @__PURE__ */ b(l, {
122
+ children: /* @__PURE__ */ b(i, {
120
123
  className: "pt-6",
121
124
  children: /* @__PURE__ */ x("div", {
122
125
  className: "flex items-center justify-between",
123
126
  children: [/* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("p", {
124
127
  className: "text-sm text-text-secondary",
125
- children: u("botlit.executions.rollup.avgDuration", "Avg Duration")
128
+ children: s("botlit.executions.rollup.avgDuration", "Avg Duration")
126
129
  }), /* @__PURE__ */ b("p", {
127
130
  className: "text-2xl font-bold tabular-nums",
128
- children: r(U.avgDurationMs)
131
+ children: p(W.avgDurationMs)
129
132
  })] }), /* @__PURE__ */ b(T, { className: "h-8 w-8 text-text-secondary" })]
130
133
  })
131
134
  })
132
135
  }),
133
- /* @__PURE__ */ b(c, {
136
+ /* @__PURE__ */ b(r, {
134
137
  treatment: "metric",
135
- children: /* @__PURE__ */ b(l, {
138
+ children: /* @__PURE__ */ b(i, {
136
139
  className: "pt-6",
137
140
  children: /* @__PURE__ */ x("div", {
138
141
  className: "flex items-center justify-between",
139
142
  children: [/* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("p", {
140
143
  className: "text-sm text-text-secondary",
141
- children: u("botlit.executions.rollup.totalCost", "Total Cost")
144
+ children: s("botlit.executions.rollup.totalCost", "Total Cost")
142
145
  }), /* @__PURE__ */ b("p", {
143
146
  className: "text-2xl font-bold tabular-nums",
144
- children: n(U.totalCost)
147
+ children: f(W.totalCost)
145
148
  })] }), /* @__PURE__ */ b(E, { className: "h-8 w-8 text-text-secondary" })]
146
149
  })
147
150
  })
@@ -149,22 +152,22 @@ var F = ({ status: e, className: t }) => {
149
152
  ]
150
153
  }), /* @__PURE__ */ b("p", {
151
154
  className: "text-xs text-text-secondary",
152
- children: u("botlit.executions.rollup.calculatedAcross", "Calculated across the {{count}} runs shown below.", { count: U.total })
155
+ children: s("botlit.executions.rollup.calculatedAcross", "Calculated across the {{count}} runs shown below.", { count: W.total })
153
156
  })]
154
157
  }),
155
158
  /* @__PURE__ */ x("div", {
156
159
  className: "flex flex-wrap items-center gap-4",
157
160
  children: [/* @__PURE__ */ x("div", {
158
161
  className: "relative flex-1 max-w-md",
159
- children: [/* @__PURE__ */ b(k, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary" }), /* @__PURE__ */ b(f, {
160
- placeholder: u("botlit.executions.filters.searchPlaceholder", "Search by run, agent, bot or input…"),
162
+ children: [/* @__PURE__ */ b(k, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary" }), /* @__PURE__ */ b(o, {
163
+ placeholder: s("botlit.executions.filters.searchPlaceholder", "Search by run, agent, bot or input…"),
161
164
  value: w,
162
165
  onChange: (e) => D(e.target.value),
163
166
  className: "pl-9"
164
167
  })]
165
168
  }), /* @__PURE__ */ b("div", {
166
169
  className: "flex flex-wrap gap-2",
167
- children: N.map((e) => /* @__PURE__ */ x(s, {
170
+ children: N.map((e) => /* @__PURE__ */ x(a, {
168
171
  variant: j.includes(e) ? "default" : "outline",
169
172
  size: "sm",
170
173
  onClick: () => L((t) => t.includes(e) ? t.filter((t) => t !== e) : [...t, e]),
@@ -175,7 +178,7 @@ var F = ({ status: e, className: t }) => {
175
178
  }, e))
176
179
  })]
177
180
  }),
178
- B ? /* @__PURE__ */ b("div", {
181
+ V ? /* @__PURE__ */ b("div", {
179
182
  className: "space-y-4",
180
183
  children: [
181
184
  1,
@@ -184,45 +187,45 @@ var F = ({ status: e, className: t }) => {
184
187
  4,
185
188
  5
186
189
  ].map((e) => /* @__PURE__ */ b("div", { className: "h-20 bg-bg-sunken motion-safe:animate-vc-shimmer rounded-lg" }, e))
187
- }) : V ? /* @__PURE__ */ b(p, {
190
+ }) : H ? /* @__PURE__ */ b(l, {
188
191
  resource: "executions",
189
- error: V,
190
- onRetry: () => void H()
191
- }) : z.length > 0 ? /* @__PURE__ */ x("div", {
192
+ error: H,
193
+ onRetry: () => void U()
194
+ }) : B.length > 0 ? /* @__PURE__ */ x("div", {
192
195
  className: "space-y-2",
193
196
  children: [/* @__PURE__ */ x("div", {
194
197
  className: "grid grid-cols-12 gap-4 px-4 py-2 text-sm font-medium text-text-secondary border-b border-border-subtle",
195
198
  children: [
196
199
  /* @__PURE__ */ b("div", {
197
200
  className: "col-span-2",
198
- children: u("botlit.executions.table.status", "Status")
201
+ children: s("botlit.executions.table.status", "Status")
199
202
  }),
200
203
  /* @__PURE__ */ b("div", {
201
204
  className: "col-span-3",
202
- children: u("botlit.executions.table.botAgent", "Bot / Agent")
205
+ children: s("botlit.executions.table.botAgent", "Bot / Agent")
203
206
  }),
204
207
  /* @__PURE__ */ b("div", {
205
208
  className: "col-span-2",
206
- children: u("botlit.executions.table.duration", "Duration")
209
+ children: s("botlit.executions.table.duration", "Duration")
207
210
  }),
208
211
  /* @__PURE__ */ b("div", {
209
212
  className: "col-span-2",
210
- children: u("botlit.executions.table.tokens", "Tokens")
213
+ children: s("botlit.executions.table.tokens", "Tokens")
211
214
  }),
212
215
  /* @__PURE__ */ b("div", {
213
216
  className: "col-span-1",
214
- children: u("botlit.executions.table.cost", "Cost")
217
+ children: s("botlit.executions.table.cost", "Cost")
215
218
  }),
216
219
  /* @__PURE__ */ b("div", {
217
220
  className: "col-span-2",
218
- children: u("botlit.executions.table.started", "Started")
221
+ children: s("botlit.executions.table.started", "Started")
219
222
  })
220
223
  ]
221
- }), z.map((e) => /* @__PURE__ */ b(S, {
224
+ }), B.map((e) => /* @__PURE__ */ b(S, {
222
225
  to: g(`executions/${e.id}`),
223
- children: /* @__PURE__ */ b(c, {
226
+ children: /* @__PURE__ */ b(r, {
224
227
  className: "hover:border-primary/50 transition-colors cursor-pointer",
225
- children: /* @__PURE__ */ b(l, {
228
+ children: /* @__PURE__ */ b(i, {
226
229
  className: "py-3",
227
230
  children: /* @__PURE__ */ x("div", {
228
231
  className: "grid grid-cols-12 gap-4 items-center",
@@ -251,7 +254,7 @@ var F = ({ status: e, className: t }) => {
251
254
  children: [/* @__PURE__ */ b(T, {
252
255
  size: 14,
253
256
  className: "text-text-secondary"
254
- }), /* @__PURE__ */ b("span", { children: r(e.duration) })]
257
+ }), /* @__PURE__ */ b("span", { children: p(e.duration) })]
255
258
  })
256
259
  }),
257
260
  /* @__PURE__ */ b("div", {
@@ -261,7 +264,7 @@ var F = ({ status: e, className: t }) => {
261
264
  children: [/* @__PURE__ */ b(M, {
262
265
  size: 14,
263
266
  className: "text-text-secondary"
264
- }), /* @__PURE__ */ b("span", { children: i(e.tokensUsed) })]
267
+ }), /* @__PURE__ */ b("span", { children: m(e.tokensUsed) })]
265
268
  })
266
269
  }),
267
270
  /* @__PURE__ */ b("div", {
@@ -271,28 +274,27 @@ var F = ({ status: e, className: t }) => {
271
274
  children: [/* @__PURE__ */ b(E, {
272
275
  size: 14,
273
276
  className: "text-text-secondary"
274
- }), /* @__PURE__ */ b("span", { children: n(e.cost) })]
277
+ }), /* @__PURE__ */ b("span", { children: f(e.cost) })]
275
278
  })
276
279
  }),
277
280
  /* @__PURE__ */ b("div", {
278
281
  className: "col-span-2 text-sm text-text-secondary",
279
- children: a(e.createdAt)
282
+ children: h(e.createdAt)
280
283
  })
281
284
  ]
282
285
  })
283
286
  })
284
287
  })
285
288
  }, e.id))]
286
- }) : /* @__PURE__ */ b(d, {
289
+ }) : /* @__PURE__ */ b(c, {
287
290
  illustration: "empty-search",
288
- title: u("botlit.executions.empty.title", "No executions found"),
289
- description: j.length > 0 || w ? u("botlit.executions.empty.descriptionFiltered", "No executions match your filters. Try adjusting your search.") : u("botlit.executions.empty.descriptionNoData", "Executions will appear here when agents process requests.")
291
+ title: s("botlit.executions.empty.title", "No executions found"),
292
+ description: j.length > 0 || w ? s("botlit.executions.empty.descriptionFiltered", "No executions match your filters. Try adjusting your search.") : s("botlit.executions.empty.descriptionNoData", "Executions will appear here when agents process requests.")
290
293
  })
291
294
  ]
292
295
  })
293
296
  });
294
297
  };
295
- //#endregion
296
298
  export { L as ExecutionsPage };
297
299
 
298
300
  //# sourceMappingURL=ExecutionsPage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExecutionsPage.js","names":[],"sources":["../../../src/botlit/pages/ExecutionsPage.tsx"],"sourcesContent":["/**\n * Executions Page\n * @module botlit/pages\n */\n\nimport type { FC } from 'react';\nimport { useMemo, useState } from 'react';\nimport { Link } from 'react-router';\nimport { useBotlit } from '../providers/BotlitProvider';\nimport {\n Search as SearchIcon,\n Activity,\n CheckCircle,\n XCircle,\n Clock,\n DollarSign,\n Zap,\n RefreshCw,\n TrendingUp,\n Hourglass,\n} from 'lucide-react';\nimport { useTr } from '../../shared/hooks/useTr';\nimport { PagePurpose } from '@burdenoff/fe-libs/ui';\nimport { PageLayout } from '../components/PageLayout';\nimport { Card, CardContent } from '../components/Card';\nimport { Button } from '../components/Button';\nimport { Input } from '../components/Input';\nimport { Badge } from '../components/Badge';\nimport { EmptyState } from '../components/EmptyState';\nimport { ErrorState } from '../components/ErrorState';\nimport { useExecutions, summariseExecutions, type ExecutionRecord } from '../hooks';\nimport {\n formatNumber,\n formatRelativeTime,\n formatCurrency,\n formatDuration,\n MISSING_VALUE,\n} from '../utils/formatters';\nimport { ExecutionStatus as GqlExecutionStatus } from '../../generated/wspace-types';\n\n/**\n * The statuses wspace-botlit-svc actually reports. These MUST match the\n * `ExecutionStatus` enum in the supergraph — sending anything else fails\n * GraphQL validation at the gateway.\n */\nconst EXECUTION_STATUSES: GqlExecutionStatus[] = [\n GqlExecutionStatus.Completed,\n GqlExecutionStatus.Running,\n GqlExecutionStatus.Pending,\n GqlExecutionStatus.Failed,\n GqlExecutionStatus.Timeout,\n GqlExecutionStatus.Cancelled,\n];\n\nfunction useStatusLabels(t: ReturnType<typeof useTr>): Record<GqlExecutionStatus, string> {\n return {\n [GqlExecutionStatus.Completed]: t('botlit.executions.status.completed', 'Completed'),\n [GqlExecutionStatus.Running]: t('botlit.executions.status.running', 'Running'),\n [GqlExecutionStatus.Pending]: t('botlit.executions.status.pending', 'Pending'),\n [GqlExecutionStatus.Failed]: t('botlit.executions.status.failed', 'Failed'),\n [GqlExecutionStatus.Timeout]: t('botlit.executions.status.timedOut', 'Timed out'),\n [GqlExecutionStatus.Cancelled]: t('botlit.executions.status.cancelled', 'Cancelled'),\n };\n}\n\nconst StatusIcon: FC<{ status: string; className?: string }> = ({ status, className }) => {\n switch (status) {\n case GqlExecutionStatus.Completed:\n return <CheckCircle className={className ?? 'h-4 w-4 text-status-success-text'} />;\n case GqlExecutionStatus.Failed:\n case GqlExecutionStatus.Timeout:\n return <XCircle className={className ?? 'h-4 w-4 text-status-error-text'} />;\n case GqlExecutionStatus.Running:\n return (\n <RefreshCw\n className={className ?? 'h-4 w-4 text-status-info-text motion-safe:animate-spin'}\n />\n );\n case GqlExecutionStatus.Pending:\n return <Hourglass className={className ?? 'h-4 w-4 text-status-warning-text'} />;\n default:\n return <Activity className={className ?? 'h-4 w-4 text-text-secondary'} />;\n }\n};\n\nconst StatusBadge: FC<{ status: string; labels: Record<GqlExecutionStatus, string> }> = ({\n status,\n labels,\n}) => {\n const variants: Record<string, 'success' | 'destructive' | 'warning' | 'secondary' | 'default'> =\n {\n [GqlExecutionStatus.Completed]: 'success',\n [GqlExecutionStatus.Failed]: 'destructive',\n [GqlExecutionStatus.Timeout]: 'destructive',\n [GqlExecutionStatus.Running]: 'default',\n [GqlExecutionStatus.Pending]: 'warning',\n [GqlExecutionStatus.Cancelled]: 'secondary',\n };\n\n return (\n <Badge variant={variants[status] ?? 'secondary'} className=\"flex items-center gap-1\">\n <StatusIcon status={status} />\n {labels[status as GqlExecutionStatus] ?? status}\n </Badge>\n );\n};\n\nexport const ExecutionsPage: FC = () => {\n const t = useTr();\n const { getPath } = useBotlit();\n const [search, setSearch] = useState('');\n const [statusFilter, setStatusFilter] = useState<GqlExecutionStatus[]>([]);\n const statusLabels = useStatusLabels(t);\n\n const filter = useMemo(\n () => ({ search, status: statusFilter as string[] }),\n [search, statusFilter]\n );\n const { data: executions, loading, error, refetch } = useExecutions(filter);\n\n // No server-side aggregate exists for executions — these numbers describe the\n // runs currently loaded, and the caption below says so.\n const rollup = useMemo(() => summariseExecutions(executions), [executions]);\n\n return (\n <PageLayout\n title={t('botlit.executions.title', 'Executions')}\n description={t(\n 'botlit.executions.description',\n 'Monitor agent execution history, performance, and costs'\n )}\n actions={\n <Button variant=\"outline\" leftIcon={<RefreshCw size={16} />} onClick={() => void refetch()}>\n {t('botlit.executions.actions.refresh', 'Refresh')}\n </Button>\n }\n >\n <div className=\"space-y-6\">\n <PagePurpose icon={<Activity size={18} />}>\n {t(\n 'botlit.executions.purpose',\n 'An execution is a single run of an agent — one request in, one response out. This page is your observability and cost dashboard: see which runs succeeded or failed, how long they took, how many tokens they burned and what they cost. Use it to spot failing agents, runaway spend and latency regressions, then open any run to inspect its full trace.'\n )}\n </PagePurpose>\n\n {/* Stats over the loaded runs */}\n {rollup.total > 0 && (\n <div className=\"space-y-2\">\n <div className=\"grid grid-cols-2 md:grid-cols-4 gap-4\">\n <Card treatment=\"glass\" glow>\n <CardContent className=\"pt-6\">\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"text-sm text-text-secondary\">\n {t('botlit.executions.rollup.executions', 'Executions')}\n </p>\n <p className=\"text-2xl font-bold tabular-nums\">\n {formatNumber(rollup.total)}\n </p>\n </div>\n <Activity className=\"h-8 w-8 text-text-secondary\" />\n </div>\n </CardContent>\n </Card>\n <Card treatment=\"metric\">\n <CardContent className=\"pt-6\">\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"text-sm text-text-secondary\">\n {t('botlit.executions.rollup.successRate', 'Success Rate')}\n </p>\n <p className=\"text-2xl font-bold tabular-nums text-status-success-text\">\n {(rollup.successRate * 100).toFixed(1)}%\n </p>\n </div>\n <TrendingUp className=\"h-8 w-8 text-status-success-text\" />\n </div>\n </CardContent>\n </Card>\n <Card treatment=\"metric\">\n <CardContent className=\"pt-6\">\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"text-sm text-text-secondary\">\n {t('botlit.executions.rollup.avgDuration', 'Avg Duration')}\n </p>\n <p className=\"text-2xl font-bold tabular-nums\">\n {formatDuration(rollup.avgDurationMs)}\n </p>\n </div>\n <Clock className=\"h-8 w-8 text-text-secondary\" />\n </div>\n </CardContent>\n </Card>\n <Card treatment=\"metric\">\n <CardContent className=\"pt-6\">\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"text-sm text-text-secondary\">\n {t('botlit.executions.rollup.totalCost', 'Total Cost')}\n </p>\n <p className=\"text-2xl font-bold tabular-nums\">\n {formatCurrency(rollup.totalCost)}\n </p>\n </div>\n <DollarSign className=\"h-8 w-8 text-text-secondary\" />\n </div>\n </CardContent>\n </Card>\n </div>\n <p className=\"text-xs text-text-secondary\">\n {t(\n 'botlit.executions.rollup.calculatedAcross',\n 'Calculated across the {{count}} runs shown below.',\n {\n count: rollup.total,\n }\n )}\n </p>\n </div>\n )}\n\n {/* Filters */}\n <div className=\"flex flex-wrap items-center gap-4\">\n <div className=\"relative flex-1 max-w-md\">\n <SearchIcon className=\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary\" />\n <Input\n placeholder={t(\n 'botlit.executions.filters.searchPlaceholder',\n 'Search by run, agent, bot or input…'\n )}\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n className=\"pl-9\"\n />\n </div>\n <div className=\"flex flex-wrap gap-2\">\n {EXECUTION_STATUSES.map((status) => (\n <Button\n key={status}\n variant={statusFilter.includes(status) ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() =>\n setStatusFilter((prev) =>\n prev.includes(status) ? prev.filter((s) => s !== status) : [...prev, status]\n )\n }\n >\n <StatusIcon status={status} />\n <span className=\"ml-1\">{statusLabels[status]}</span>\n </Button>\n ))}\n </div>\n </div>\n\n {/* Executions List */}\n {loading ? (\n <div className=\"space-y-4\">\n {[1, 2, 3, 4, 5].map((i) => (\n <div\n key={i}\n className=\"h-20 bg-bg-sunken motion-safe:animate-vc-shimmer rounded-lg\"\n />\n ))}\n </div>\n ) : error ? (\n <ErrorState resource=\"executions\" error={error} onRetry={() => void refetch()} />\n ) : executions.length > 0 ? (\n <div className=\"space-y-2\">\n {/* Table Header */}\n <div className=\"grid grid-cols-12 gap-4 px-4 py-2 text-sm font-medium text-text-secondary border-b border-border-subtle\">\n <div className=\"col-span-2\">{t('botlit.executions.table.status', 'Status')}</div>\n <div className=\"col-span-3\">\n {t('botlit.executions.table.botAgent', 'Bot / Agent')}\n </div>\n <div className=\"col-span-2\">{t('botlit.executions.table.duration', 'Duration')}</div>\n <div className=\"col-span-2\">{t('botlit.executions.table.tokens', 'Tokens')}</div>\n <div className=\"col-span-1\">{t('botlit.executions.table.cost', 'Cost')}</div>\n <div className=\"col-span-2\">{t('botlit.executions.table.started', 'Started')}</div>\n </div>\n\n {/* Table Rows */}\n {executions.map((execution: ExecutionRecord) => (\n <Link key={execution.id} to={getPath(`executions/${execution.id}`)}>\n <Card className=\"hover:border-primary/50 transition-colors cursor-pointer\">\n <CardContent className=\"py-3\">\n <div className=\"grid grid-cols-12 gap-4 items-center\">\n <div className=\"col-span-2\">\n <StatusBadge status={execution.status} labels={statusLabels} />\n </div>\n <div className=\"col-span-3\">\n <p className=\"font-medium truncate\">{execution.appId ?? MISSING_VALUE}</p>\n <p className=\"text-sm text-text-secondary truncate\">\n {execution.agentId ?? MISSING_VALUE}\n </p>\n </div>\n <div className=\"col-span-2\">\n <div className=\"flex items-center gap-1\">\n <Clock size={14} className=\"text-text-secondary\" />\n <span>{formatDuration(execution.duration)}</span>\n </div>\n </div>\n <div className=\"col-span-2\">\n <div className=\"flex items-center gap-1\">\n <Zap size={14} className=\"text-text-secondary\" />\n <span>{formatNumber(execution.tokensUsed)}</span>\n </div>\n </div>\n <div className=\"col-span-1\">\n <div className=\"flex items-center gap-1\">\n <DollarSign size={14} className=\"text-text-secondary\" />\n <span>{formatCurrency(execution.cost)}</span>\n </div>\n </div>\n <div className=\"col-span-2 text-sm text-text-secondary\">\n {formatRelativeTime(execution.createdAt)}\n </div>\n </div>\n </CardContent>\n </Card>\n </Link>\n ))}\n </div>\n ) : (\n <EmptyState\n illustration=\"empty-search\"\n title={t('botlit.executions.empty.title', 'No executions found')}\n description={\n statusFilter.length > 0 || search\n ? t(\n 'botlit.executions.empty.descriptionFiltered',\n 'No executions match your filters. Try adjusting your search.'\n )\n : t(\n 'botlit.executions.empty.descriptionNoData',\n 'Executions will appear here when agents process requests.'\n )\n }\n />\n )}\n </div>\n </PageLayout>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"ExecutionsPage.js","names":["GqlExecutionStatus","SearchIcon","EXECUTION_STATUSES","ExecutionStatus","useStatusLabels","t","StatusIcon","status","CheckCircle","className","XCircle","RefreshCw","Hourglass","Activity","StatusBadge","variants","Badge","labels","ExecutionsPage","useTr","useBotlit","search","setSearch","useState","statusFilter","setStatusFilter","statusLabels","filter","useMemo","executions","useExecutions","rollup","summariseExecutions","PageLayout","Button","refetch","PagePurpose","Card","CardContent","formatNumber","TrendingUp","formatDuration","Clock","formatCurrency","DollarSign","Search","Input","prev","s","loading","i","error","ErrorState","Link","getPath","execution","Zap","formatRelativeTime","EmptyState"],"sources":["../../../src/botlit/pages/ExecutionsPage.tsx"],"sourcesContent":["/**\n * Executions Page\n * @module botlit/pages\n */\n\nimport type { FC } from 'react';\nimport { useMemo, useState } from 'react';\nimport { Link } from 'react-router';\nimport { useBotlit } from '../providers/BotlitProvider';\nimport {\n Search as SearchIcon,\n Activity,\n CheckCircle,\n XCircle,\n Clock,\n DollarSign,\n Zap,\n RefreshCw,\n TrendingUp,\n Hourglass,\n} from 'lucide-react';\nimport { useTr } from '../../shared/hooks/useTr';\nimport { PagePurpose } from '@burdenoff/fe-libs/ui';\nimport { PageLayout } from '../components/PageLayout';\nimport { Card, CardContent } from '../components/Card';\nimport { Button } from '../components/Button';\nimport { Input } from '../components/Input';\nimport { Badge } from '../components/Badge';\nimport { EmptyState } from '../components/EmptyState';\nimport { ErrorState } from '../components/ErrorState';\nimport { useExecutions, summariseExecutions, type ExecutionRecord } from '../hooks';\nimport {\n formatNumber,\n formatRelativeTime,\n formatCurrency,\n formatDuration,\n MISSING_VALUE,\n} from '../utils/formatters';\nimport { ExecutionStatus as GqlExecutionStatus } from '../../generated/wspace-types';\n\n/**\n * The statuses wspace-botlit-svc actually reports. These MUST match the\n * `ExecutionStatus` enum in the supergraph — sending anything else fails\n * GraphQL validation at the gateway.\n */\nconst EXECUTION_STATUSES: GqlExecutionStatus[] = [\n GqlExecutionStatus.Completed,\n GqlExecutionStatus.Running,\n GqlExecutionStatus.Pending,\n GqlExecutionStatus.Failed,\n GqlExecutionStatus.Timeout,\n GqlExecutionStatus.Cancelled,\n];\n\nfunction useStatusLabels(t: ReturnType<typeof useTr>): Record<GqlExecutionStatus, string> {\n return {\n [GqlExecutionStatus.Completed]: t('botlit.executions.status.completed', 'Completed'),\n [GqlExecutionStatus.Running]: t('botlit.executions.status.running', 'Running'),\n [GqlExecutionStatus.Pending]: t('botlit.executions.status.pending', 'Pending'),\n [GqlExecutionStatus.Failed]: t('botlit.executions.status.failed', 'Failed'),\n [GqlExecutionStatus.Timeout]: t('botlit.executions.status.timedOut', 'Timed out'),\n [GqlExecutionStatus.Cancelled]: t('botlit.executions.status.cancelled', 'Cancelled'),\n };\n}\n\nconst StatusIcon: FC<{ status: string; className?: string }> = ({ status, className }) => {\n switch (status) {\n case GqlExecutionStatus.Completed:\n return <CheckCircle className={className ?? 'h-4 w-4 text-status-success-text'} />;\n case GqlExecutionStatus.Failed:\n case GqlExecutionStatus.Timeout:\n return <XCircle className={className ?? 'h-4 w-4 text-status-error-text'} />;\n case GqlExecutionStatus.Running:\n return (\n <RefreshCw\n className={className ?? 'h-4 w-4 text-status-info-text motion-safe:animate-spin'}\n />\n );\n case GqlExecutionStatus.Pending:\n return <Hourglass className={className ?? 'h-4 w-4 text-status-warning-text'} />;\n default:\n return <Activity className={className ?? 'h-4 w-4 text-text-secondary'} />;\n }\n};\n\nconst StatusBadge: FC<{ status: string; labels: Record<GqlExecutionStatus, string> }> = ({\n status,\n labels,\n}) => {\n const variants: Record<string, 'success' | 'destructive' | 'warning' | 'secondary' | 'default'> =\n {\n [GqlExecutionStatus.Completed]: 'success',\n [GqlExecutionStatus.Failed]: 'destructive',\n [GqlExecutionStatus.Timeout]: 'destructive',\n [GqlExecutionStatus.Running]: 'default',\n [GqlExecutionStatus.Pending]: 'warning',\n [GqlExecutionStatus.Cancelled]: 'secondary',\n };\n\n return (\n <Badge variant={variants[status] ?? 'secondary'} className=\"flex items-center gap-1\">\n <StatusIcon status={status} />\n {labels[status as GqlExecutionStatus] ?? status}\n </Badge>\n );\n};\n\nexport const ExecutionsPage: FC = () => {\n const t = useTr();\n const { getPath } = useBotlit();\n const [search, setSearch] = useState('');\n const [statusFilter, setStatusFilter] = useState<GqlExecutionStatus[]>([]);\n const statusLabels = useStatusLabels(t);\n\n const filter = useMemo(\n () => ({ search, status: statusFilter as string[] }),\n [search, statusFilter]\n );\n const { data: executions, loading, error, refetch } = useExecutions(filter);\n\n // No server-side aggregate exists for executions — these numbers describe the\n // runs currently loaded, and the caption below says so.\n const rollup = useMemo(() => summariseExecutions(executions), [executions]);\n\n return (\n <PageLayout\n title={t('botlit.executions.title', 'Executions')}\n description={t(\n 'botlit.executions.description',\n 'Monitor agent execution history, performance, and costs'\n )}\n actions={\n <Button variant=\"outline\" leftIcon={<RefreshCw size={16} />} onClick={() => void refetch()}>\n {t('botlit.executions.actions.refresh', 'Refresh')}\n </Button>\n }\n >\n <div className=\"space-y-6\">\n <PagePurpose icon={<Activity size={18} />}>\n {t(\n 'botlit.executions.purpose',\n 'An execution is a single run of an agent — one request in, one response out. This page is your observability and cost dashboard: see which runs succeeded or failed, how long they took, how many tokens they burned and what they cost. Use it to spot failing agents, runaway spend and latency regressions, then open any run to inspect its full trace.'\n )}\n </PagePurpose>\n\n {/* Stats over the loaded runs */}\n {rollup.total > 0 && (\n <div className=\"space-y-2\">\n <div className=\"grid grid-cols-2 md:grid-cols-4 gap-4\">\n <Card treatment=\"glass\" glow>\n <CardContent className=\"pt-6\">\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"text-sm text-text-secondary\">\n {t('botlit.executions.rollup.executions', 'Executions')}\n </p>\n <p className=\"text-2xl font-bold tabular-nums\">\n {formatNumber(rollup.total)}\n </p>\n </div>\n <Activity className=\"h-8 w-8 text-text-secondary\" />\n </div>\n </CardContent>\n </Card>\n <Card treatment=\"metric\">\n <CardContent className=\"pt-6\">\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"text-sm text-text-secondary\">\n {t('botlit.executions.rollup.successRate', 'Success Rate')}\n </p>\n <p className=\"text-2xl font-bold tabular-nums text-status-success-text\">\n {(rollup.successRate * 100).toFixed(1)}%\n </p>\n </div>\n <TrendingUp className=\"h-8 w-8 text-status-success-text\" />\n </div>\n </CardContent>\n </Card>\n <Card treatment=\"metric\">\n <CardContent className=\"pt-6\">\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"text-sm text-text-secondary\">\n {t('botlit.executions.rollup.avgDuration', 'Avg Duration')}\n </p>\n <p className=\"text-2xl font-bold tabular-nums\">\n {formatDuration(rollup.avgDurationMs)}\n </p>\n </div>\n <Clock className=\"h-8 w-8 text-text-secondary\" />\n </div>\n </CardContent>\n </Card>\n <Card treatment=\"metric\">\n <CardContent className=\"pt-6\">\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"text-sm text-text-secondary\">\n {t('botlit.executions.rollup.totalCost', 'Total Cost')}\n </p>\n <p className=\"text-2xl font-bold tabular-nums\">\n {formatCurrency(rollup.totalCost)}\n </p>\n </div>\n <DollarSign className=\"h-8 w-8 text-text-secondary\" />\n </div>\n </CardContent>\n </Card>\n </div>\n <p className=\"text-xs text-text-secondary\">\n {t(\n 'botlit.executions.rollup.calculatedAcross',\n 'Calculated across the {{count}} runs shown below.',\n {\n count: rollup.total,\n }\n )}\n </p>\n </div>\n )}\n\n {/* Filters */}\n <div className=\"flex flex-wrap items-center gap-4\">\n <div className=\"relative flex-1 max-w-md\">\n <SearchIcon className=\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary\" />\n <Input\n placeholder={t(\n 'botlit.executions.filters.searchPlaceholder',\n 'Search by run, agent, bot or input…'\n )}\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n className=\"pl-9\"\n />\n </div>\n <div className=\"flex flex-wrap gap-2\">\n {EXECUTION_STATUSES.map((status) => (\n <Button\n key={status}\n variant={statusFilter.includes(status) ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() =>\n setStatusFilter((prev) =>\n prev.includes(status) ? prev.filter((s) => s !== status) : [...prev, status]\n )\n }\n >\n <StatusIcon status={status} />\n <span className=\"ml-1\">{statusLabels[status]}</span>\n </Button>\n ))}\n </div>\n </div>\n\n {/* Executions List */}\n {loading ? (\n <div className=\"space-y-4\">\n {[1, 2, 3, 4, 5].map((i) => (\n <div\n key={i}\n className=\"h-20 bg-bg-sunken motion-safe:animate-vc-shimmer rounded-lg\"\n />\n ))}\n </div>\n ) : error ? (\n <ErrorState resource=\"executions\" error={error} onRetry={() => void refetch()} />\n ) : executions.length > 0 ? (\n <div className=\"space-y-2\">\n {/* Table Header */}\n <div className=\"grid grid-cols-12 gap-4 px-4 py-2 text-sm font-medium text-text-secondary border-b border-border-subtle\">\n <div className=\"col-span-2\">{t('botlit.executions.table.status', 'Status')}</div>\n <div className=\"col-span-3\">\n {t('botlit.executions.table.botAgent', 'Bot / Agent')}\n </div>\n <div className=\"col-span-2\">{t('botlit.executions.table.duration', 'Duration')}</div>\n <div className=\"col-span-2\">{t('botlit.executions.table.tokens', 'Tokens')}</div>\n <div className=\"col-span-1\">{t('botlit.executions.table.cost', 'Cost')}</div>\n <div className=\"col-span-2\">{t('botlit.executions.table.started', 'Started')}</div>\n </div>\n\n {/* Table Rows */}\n {executions.map((execution: ExecutionRecord) => (\n <Link key={execution.id} to={getPath(`executions/${execution.id}`)}>\n <Card className=\"hover:border-primary/50 transition-colors cursor-pointer\">\n <CardContent className=\"py-3\">\n <div className=\"grid grid-cols-12 gap-4 items-center\">\n <div className=\"col-span-2\">\n <StatusBadge status={execution.status} labels={statusLabels} />\n </div>\n <div className=\"col-span-3\">\n <p className=\"font-medium truncate\">{execution.appId ?? MISSING_VALUE}</p>\n <p className=\"text-sm text-text-secondary truncate\">\n {execution.agentId ?? MISSING_VALUE}\n </p>\n </div>\n <div className=\"col-span-2\">\n <div className=\"flex items-center gap-1\">\n <Clock size={14} className=\"text-text-secondary\" />\n <span>{formatDuration(execution.duration)}</span>\n </div>\n </div>\n <div className=\"col-span-2\">\n <div className=\"flex items-center gap-1\">\n <Zap size={14} className=\"text-text-secondary\" />\n <span>{formatNumber(execution.tokensUsed)}</span>\n </div>\n </div>\n <div className=\"col-span-1\">\n <div className=\"flex items-center gap-1\">\n <DollarSign size={14} className=\"text-text-secondary\" />\n <span>{formatCurrency(execution.cost)}</span>\n </div>\n </div>\n <div className=\"col-span-2 text-sm text-text-secondary\">\n {formatRelativeTime(execution.createdAt)}\n </div>\n </div>\n </CardContent>\n </Card>\n </Link>\n ))}\n </div>\n ) : (\n <EmptyState\n illustration=\"empty-search\"\n title={t('botlit.executions.empty.title', 'No executions found')}\n description={\n statusFilter.length > 0 || search\n ? t(\n 'botlit.executions.empty.descriptionFiltered',\n 'No executions match your filters. Try adjusting your search.'\n )\n : t(\n 'botlit.executions.empty.descriptionNoData',\n 'Executions will appear here when agents process requests.'\n )\n }\n />\n )}\n </div>\n </PageLayout>\n );\n};\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { FC } from 'react';
2
+ export declare const InstalledPackagesPage: FC;