@burdenoff/microfe-botmanor 2026.1108.1 → 2026.1109.2

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 (335) hide show
  1. package/dist/botlit/BotlitRoutes.d.ts +2 -0
  2. package/dist/botlit/BotlitRoutes.js +40 -52
  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 +35 -0
  72. package/dist/botlit/hooks/index.js +16 -16
  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 +62 -0
  107. package/dist/botlit/hooks/useBuckets.js +91 -58
  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/useExecutions.d.ts +87 -0
  113. package/dist/botlit/hooks/useExecutions.js +37 -37
  114. package/dist/botlit/hooks/useExecutions.js.map +1 -1
  115. package/dist/botlit/hooks/useKnowledgeBases.d.ts +79 -0
  116. package/dist/botlit/hooks/useKnowledgeBases.js +40 -39
  117. package/dist/botlit/hooks/useKnowledgeBases.js.map +1 -1
  118. package/dist/botlit/hooks/useKnowledgeSourceImports.d.ts +21 -0
  119. package/dist/botlit/hooks/useKnowledgeSourceImports.js +1 -2
  120. package/dist/botlit/hooks/useKnowledgeSourceImports.js.map +1 -1
  121. package/dist/botlit/hooks/useLLMProviders.d.ts +66 -0
  122. package/dist/botlit/hooks/useLLMProviders.js +25 -26
  123. package/dist/botlit/hooks/useLLMProviders.js.map +1 -1
  124. package/dist/botlit/hooks/useMCPServers.d.ts +71 -0
  125. package/dist/botlit/hooks/useMCPServers.js +40 -38
  126. package/dist/botlit/hooks/useMCPServers.js.map +1 -1
  127. package/dist/botlit/hooks/usePolicies.d.ts +60 -0
  128. package/dist/botlit/hooks/usePolicies.js +49 -49
  129. package/dist/botlit/hooks/usePolicies.js.map +1 -1
  130. package/dist/botlit/hooks/usePromptTemplates.d.ts +88 -0
  131. package/dist/botlit/hooks/usePromptTemplates.js +57 -57
  132. package/dist/botlit/hooks/usePromptTemplates.js.map +1 -1
  133. package/dist/botlit/hooks/useRetention.d.ts +26 -0
  134. package/dist/botlit/hooks/useRetention.js +3 -3
  135. package/dist/botlit/hooks/useRetention.js.map +1 -1
  136. package/dist/botlit/hooks/useRetrievalProfiles.d.ts +75 -0
  137. package/dist/botlit/hooks/useRetrievalProfiles.js +47 -47
  138. package/dist/botlit/hooks/useRetrievalProfiles.js.map +1 -1
  139. package/dist/botlit/hooks/useSkills.d.ts +64 -0
  140. package/dist/botlit/hooks/useSkills.js +53 -53
  141. package/dist/botlit/hooks/useSkills.js.map +1 -1
  142. package/dist/botlit/hooks/useStore.d.ts +112 -0
  143. package/dist/botlit/hooks/useStore.js +55 -55
  144. package/dist/botlit/hooks/useStore.js.map +1 -1
  145. package/dist/botlit/hooks/useUserPlatformConnection.d.ts +80 -0
  146. package/dist/botlit/hooks/useUserPlatformConnection.js +19 -19
  147. package/dist/botlit/hooks/useUserPlatformConnection.js.map +1 -1
  148. package/dist/botlit/index.d.ts +15 -0
  149. package/dist/botlit/index.js +11 -11
  150. package/dist/botlit/pages/A2AAgentDetailPage.d.ts +6 -0
  151. package/dist/botlit/pages/A2AAgentDetailPage.js +171 -178
  152. package/dist/botlit/pages/A2AAgentDetailPage.js.map +1 -1
  153. package/dist/botlit/pages/A2ARegistryPage.d.ts +2 -0
  154. package/dist/botlit/pages/A2ARegistryPage.js +25 -26
  155. package/dist/botlit/pages/A2ARegistryPage.js.map +1 -1
  156. package/dist/botlit/pages/AgentApprovalsPage.d.ts +2 -0
  157. package/dist/botlit/pages/AgentApprovalsPage.js +32 -33
  158. package/dist/botlit/pages/AgentApprovalsPage.js.map +1 -1
  159. package/dist/botlit/pages/AgentBuilderPage.d.ts +2 -0
  160. package/dist/botlit/pages/AgentBuilderPage.js +59 -60
  161. package/dist/botlit/pages/AgentBuilderPage.js.map +1 -1
  162. package/dist/botlit/pages/AgentDetailPage.d.ts +2 -0
  163. package/dist/botlit/pages/AgentDetailPage.js +83 -84
  164. package/dist/botlit/pages/AgentDetailPage.js.map +1 -1
  165. package/dist/botlit/pages/AgentsListPage.d.ts +2 -0
  166. package/dist/botlit/pages/AgentsListPage.js +71 -72
  167. package/dist/botlit/pages/AgentsListPage.js.map +1 -1
  168. package/dist/botlit/pages/AiOperationsPage.d.ts +2 -0
  169. package/dist/botlit/pages/AiOperationsPage.js +52 -53
  170. package/dist/botlit/pages/AiOperationsPage.js.map +1 -1
  171. package/dist/botlit/pages/BotChannelsTab.d.ts +7 -0
  172. package/dist/botlit/pages/BotChannelsTab.js +120 -122
  173. package/dist/botlit/pages/BotChannelsTab.js.map +1 -1
  174. package/dist/botlit/pages/BotDetailPage.d.ts +7 -0
  175. package/dist/botlit/pages/BotDetailPage.js +353 -358
  176. package/dist/botlit/pages/BotDetailPage.js.map +1 -1
  177. package/dist/botlit/pages/BotWorkflowTab.d.ts +11 -0
  178. package/dist/botlit/pages/BotWorkflowTab.js +20 -21
  179. package/dist/botlit/pages/BotWorkflowTab.js.map +1 -1
  180. package/dist/botlit/pages/BotsListPage.d.ts +2 -0
  181. package/dist/botlit/pages/BotsListPage.js +52 -53
  182. package/dist/botlit/pages/BotsListPage.js.map +1 -1
  183. package/dist/botlit/pages/BucketDetailPage.d.ts +2 -0
  184. package/dist/botlit/pages/BucketDetailPage.js +251 -0
  185. package/dist/botlit/pages/BucketDetailPage.js.map +1 -0
  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/DashboardPage.d.ts +2 -0
  202. package/dist/botlit/pages/DashboardPage.js +37 -38
  203. package/dist/botlit/pages/DashboardPage.js.map +1 -1
  204. package/dist/botlit/pages/ExecutionDetailPage.d.ts +2 -0
  205. package/dist/botlit/pages/ExecutionDetailPage.js +47 -48
  206. package/dist/botlit/pages/ExecutionDetailPage.js.map +1 -1
  207. package/dist/botlit/pages/ExecutionsPage.d.ts +2 -0
  208. package/dist/botlit/pages/ExecutionsPage.js +72 -70
  209. package/dist/botlit/pages/ExecutionsPage.js.map +1 -1
  210. package/dist/botlit/pages/InstalledPackagesPage.d.ts +2 -0
  211. package/dist/botlit/pages/InstalledPackagesPage.js +77 -78
  212. package/dist/botlit/pages/InstalledPackagesPage.js.map +1 -1
  213. package/dist/botlit/pages/KnowledgeBaseDetailPage.d.ts +6 -0
  214. package/dist/botlit/pages/KnowledgeBaseDetailPage.js +171 -181
  215. package/dist/botlit/pages/KnowledgeBaseDetailPage.js.map +1 -1
  216. package/dist/botlit/pages/KnowledgeBasesPage.d.ts +2 -0
  217. package/dist/botlit/pages/KnowledgeBasesPage.js +30 -31
  218. package/dist/botlit/pages/KnowledgeBasesPage.js.map +1 -1
  219. package/dist/botlit/pages/MCPServerDetailPage.d.ts +6 -0
  220. package/dist/botlit/pages/MCPServerDetailPage.js +82 -83
  221. package/dist/botlit/pages/MCPServerDetailPage.js.map +1 -1
  222. package/dist/botlit/pages/MCPServersPage.d.ts +2 -0
  223. package/dist/botlit/pages/MCPServersPage.js +54 -55
  224. package/dist/botlit/pages/MCPServersPage.js.map +1 -1
  225. package/dist/botlit/pages/PoliciesPage.d.ts +2 -0
  226. package/dist/botlit/pages/PoliciesPage.js +25 -26
  227. package/dist/botlit/pages/PoliciesPage.js.map +1 -1
  228. package/dist/botlit/pages/PolicyDetailPage.d.ts +6 -0
  229. package/dist/botlit/pages/PolicyDetailPage.js +257 -259
  230. package/dist/botlit/pages/PolicyDetailPage.js.map +1 -1
  231. package/dist/botlit/pages/PromptStudioPage.d.ts +2 -0
  232. package/dist/botlit/pages/PromptStudioPage.js +35 -35
  233. package/dist/botlit/pages/PromptStudioPage.js.map +1 -1
  234. package/dist/botlit/pages/PromptTemplateDetailPage.d.ts +6 -0
  235. package/dist/botlit/pages/PromptTemplateDetailPage.js +363 -362
  236. package/dist/botlit/pages/PromptTemplateDetailPage.js.map +1 -1
  237. package/dist/botlit/pages/PromptTemplatesPage.d.ts +2 -0
  238. package/dist/botlit/pages/PromptTemplatesPage.js +26 -27
  239. package/dist/botlit/pages/PromptTemplatesPage.js.map +1 -1
  240. package/dist/botlit/pages/RetrievalProfileDetailPage.d.ts +6 -0
  241. package/dist/botlit/pages/RetrievalProfileDetailPage.js +150 -158
  242. package/dist/botlit/pages/RetrievalProfileDetailPage.js.map +1 -1
  243. package/dist/botlit/pages/RetrievalProfilesPage.d.ts +2 -0
  244. package/dist/botlit/pages/RetrievalProfilesPage.js +24 -25
  245. package/dist/botlit/pages/RetrievalProfilesPage.js.map +1 -1
  246. package/dist/botlit/pages/SettingsPage.d.ts +2 -0
  247. package/dist/botlit/pages/SettingsPage.js +124 -125
  248. package/dist/botlit/pages/SettingsPage.js.map +1 -1
  249. package/dist/botlit/pages/SkillDetailPage.d.ts +6 -0
  250. package/dist/botlit/pages/SkillDetailPage.js +216 -217
  251. package/dist/botlit/pages/SkillDetailPage.js.map +1 -1
  252. package/dist/botlit/pages/SkillsPage.d.ts +2 -0
  253. package/dist/botlit/pages/SkillsPage.js +24 -25
  254. package/dist/botlit/pages/SkillsPage.js.map +1 -1
  255. package/dist/botlit/pages/StorePackageDetailPage.d.ts +2 -0
  256. package/dist/botlit/pages/StorePackageDetailPage.js +38 -39
  257. package/dist/botlit/pages/StorePackageDetailPage.js.map +1 -1
  258. package/dist/botlit/pages/StorePage.d.ts +2 -0
  259. package/dist/botlit/pages/StorePage.js +135 -136
  260. package/dist/botlit/pages/StorePage.js.map +1 -1
  261. package/dist/botlit/pages/index.d.ts +38 -0
  262. package/dist/botlit/permissions/PermissionRequired.d.ts +20 -0
  263. package/dist/botlit/permissions/PermissionRequired.js +10 -11
  264. package/dist/botlit/permissions/PermissionRequired.js.map +1 -1
  265. package/dist/botlit/permissions/botmanorPermissions.d.ts +82 -0
  266. package/dist/botlit/permissions/botmanorPermissions.js +1 -2
  267. package/dist/botlit/permissions/botmanorPermissions.js.map +1 -1
  268. package/dist/botlit/permissions/index.d.ts +7 -0
  269. package/dist/botlit/permissions/index.js +4 -3
  270. package/dist/botlit/permissions/useBotmanorPermissions.d.ts +41 -0
  271. package/dist/botlit/permissions/useBotmanorPermissions.js +1 -2
  272. package/dist/botlit/permissions/useBotmanorPermissions.js.map +1 -1
  273. package/dist/botlit/providers/BotlitProvider.d.ts +14 -0
  274. package/dist/botlit/providers/BotlitProvider.js +3 -3
  275. package/dist/botlit/providers/BotlitProvider.js.map +1 -1
  276. package/dist/botlit/store/botlitStore.d.ts +85 -0
  277. package/dist/botlit/store/botlitStore.js +1 -2
  278. package/dist/botlit/store/botlitStore.js.map +1 -1
  279. package/dist/botlit/store/renamedKeyStorage.d.ts +13 -0
  280. package/dist/botlit/store/renamedKeyStorage.js +1 -2
  281. package/dist/botlit/store/renamedKeyStorage.js.map +1 -1
  282. package/dist/botlit/types/index.d.ts +1008 -0
  283. package/dist/botlit/utils/cn.d.ts +2 -0
  284. package/dist/botlit/utils/cn.js +1 -2
  285. package/dist/botlit/utils/cn.js.map +1 -1
  286. package/dist/botlit/utils/embedding-models.d.ts +9 -0
  287. package/dist/botlit/utils/embedding-models.js +1 -2
  288. package/dist/botlit/utils/embedding-models.js.map +1 -1
  289. package/dist/botlit/utils/errors.d.ts +19 -0
  290. package/dist/botlit/utils/errors.js +1 -2
  291. package/dist/botlit/utils/errors.js.map +1 -1
  292. package/dist/botlit/utils/formatters.d.ts +38 -0
  293. package/dist/botlit/utils/formatters.js +0 -1
  294. package/dist/botlit/utils/formatters.js.map +1 -1
  295. package/dist/botlit/utils/navigation.d.ts +19 -0
  296. package/dist/botlit/utils/navigation.js +1 -2
  297. package/dist/botlit/utils/navigation.js.map +1 -1
  298. package/dist/botlit/utils/policyConfig.d.ts +68 -0
  299. package/dist/botlit/utils/policyConfig.js +2 -3
  300. package/dist/botlit/utils/policyConfig.js.map +1 -1
  301. package/dist/botlit/utils/unions.d.ts +25 -0
  302. package/dist/botlit/utils/unions.js +1 -2
  303. package/dist/botlit/utils/unions.js.map +1 -1
  304. package/dist/dev/App.d.ts +2 -0
  305. package/dist/dev/main.d.ts +0 -0
  306. package/dist/generated/global-operations.d.ts +197 -0
  307. package/dist/generated/global-operations.js +1 -2
  308. package/dist/generated/global-operations.js.map +1 -1
  309. package/dist/generated/global-types.d.ts +27678 -0
  310. package/dist/generated/global-types.js +1 -2
  311. package/dist/generated/global-types.js.map +1 -1
  312. package/dist/generated/wspace-operations.d.ts +5489 -0
  313. package/dist/generated/wspace-operations.js +88 -84
  314. package/dist/generated/wspace-operations.js.map +1 -1
  315. package/dist/generated/wspace-types.d.ts +152017 -0
  316. package/dist/generated/wspace-types.js +1 -2
  317. package/dist/generated/wspace-types.js.map +1 -1
  318. package/dist/index.d.ts +5 -0
  319. package/dist/index.js +5 -6
  320. package/dist/shared/hooks/useTr.d.ts +16 -0
  321. package/dist/shared/hooks/useTr.js +1 -2
  322. package/dist/shared/hooks/useTr.js.map +1 -1
  323. package/dist/stories/Badge.stories.d.ts +11 -0
  324. package/dist/stories/Button.stories.d.ts +13 -0
  325. package/dist/stories/EmptyState.stories.d.ts +8 -0
  326. package/dist/stories/StatusBadge.stories.d.ts +9 -0
  327. package/dist/test/fixtures.d.ts +39 -0
  328. package/dist/test/happydom.d.ts +1 -0
  329. package/dist/test/renderPage.d.ts +18 -0
  330. package/dist/test/setup.d.ts +9 -0
  331. package/dist/utils/nativeBridge.d.ts +2 -0
  332. package/dist/utils/nativeBridge.js +1 -2
  333. package/package.json +87 -60
  334. package/dist/botlit/hooks/useConversations.js +0 -64
  335. package/dist/botlit/hooks/useConversations.js.map +0 -1
@@ -0,0 +1,64 @@
1
+ import { CreateSkillInput, UpdateSkillInput } from '../../generated/wspace-types';
2
+ import { GraphQLInput } from './internal/mutationInput';
3
+ import { QueryResult } from './internal/workspaceGateway';
4
+ export interface SkillRecord {
5
+ id: string;
6
+ name: string;
7
+ status: string;
8
+ visibility: string;
9
+ description?: string | null;
10
+ bucketId?: string | null;
11
+ promptTemplateId?: string | null;
12
+ retrievalProfileId?: string | null;
13
+ toolPolicyId?: string | null;
14
+ toolPackDeps: string[];
15
+ recommendedPolicies: string[];
16
+ capabilityFlags?: Record<string, unknown> | null;
17
+ metadata?: Record<string, unknown> | null;
18
+ revision: number;
19
+ tags: string[];
20
+ createdAt: string;
21
+ updatedAt: string;
22
+ createdById: string;
23
+ updatedById: string;
24
+ workspaceId: string;
25
+ }
26
+ export interface SkillFilterVariables {
27
+ search?: string;
28
+ status?: string;
29
+ visibility?: string;
30
+ bucketId?: string;
31
+ promptTemplateId?: string;
32
+ retrievalProfileId?: string;
33
+ toolPolicyId?: string;
34
+ }
35
+ /** `CreateSkillInput` minus the `workspaceId` the hook supplies. */
36
+ export type CreateSkillVariables = Omit<GraphQLInput<CreateSkillInput>, 'workspaceId'>;
37
+ export interface UpdateSkillVariables {
38
+ skillId: string;
39
+ input: GraphQLInput<UpdateSkillInput>;
40
+ }
41
+ export declare const skillKeys: {
42
+ all: readonly ["skills"];
43
+ lists: () => readonly ["skills", "list"];
44
+ list: (filter?: SkillFilterVariables) => readonly ["skills", "list", SkillFilterVariables | undefined];
45
+ details: () => readonly ["skills", "detail"];
46
+ detail: (id: string) => readonly ["skills", "detail", string];
47
+ };
48
+ export declare function useSkills(filter?: SkillFilterVariables): QueryResult<SkillRecord[]>;
49
+ export declare function useSkill(skillId: string | undefined): QueryResult<SkillRecord | null>;
50
+ export declare function useCreateSkill(): {
51
+ create: (input: CreateSkillVariables) => Promise<SkillRecord>;
52
+ loading: boolean;
53
+ error: Error | undefined;
54
+ };
55
+ export declare function useUpdateSkill(): {
56
+ update: (input: UpdateSkillVariables) => Promise<SkillRecord>;
57
+ loading: boolean;
58
+ error: Error | undefined;
59
+ };
60
+ export declare function useDeleteSkill(): {
61
+ remove: (input: string) => Promise<boolean>;
62
+ loading: boolean;
63
+ error: Error | undefined;
64
+ };
@@ -1,9 +1,9 @@
1
- import { buildMutationInput as e, fieldsOf as t } from "./internal/mutationInput.js";
2
- import { CreateSkillDocument as n, DeleteSkillDocument as r, GetSkillDocument as i, ListSkillsDocument as a, UpdateSkillDocument as o } from "../../generated/wspace-operations.js";
1
+ import { CreateSkillDocument as e, DeleteSkillDocument as t, GetSkillDocument as n, ListSkillsDocument as r, UpdateSkillDocument as i } from "../../generated/wspace-operations.js";
2
+ import { buildMutationInput as a, fieldsOf as o } from "./internal/mutationInput.js";
3
3
  import { useWorkspaceId as s, useWorkspaceMutation as c, useWorkspaceQuery as l } from "./internal/workspaceGateway.js";
4
4
  import { useCallback as u, useMemo as d } from "react";
5
- //#region src/botlit/hooks/useSkills.ts
6
- var f = 100, p = t({
5
+ // src/botlit/hooks/useSkills.ts
6
+ var f = 100, p = o({
7
7
  bucketId: !0,
8
8
  capabilityFlags: !0,
9
9
  description: !0,
@@ -18,7 +18,7 @@ var f = 100, p = t({
18
18
  toolPolicyId: !0,
19
19
  visibility: !0,
20
20
  workspaceId: !0
21
- }), m = t({
21
+ }), m = o({
22
22
  bucketId: !0,
23
23
  capabilityFlags: !0,
24
24
  description: !0,
@@ -37,34 +37,34 @@ function g(e) {
37
37
  return e?.listSkills ?? h;
38
38
  }
39
39
  function _(e) {
40
- let t = s(), { search: n, status: r, visibility: i, bucketId: o, promptTemplateId: c, retrievalProfileId: u, toolPolicyId: p } = e ?? {};
40
+ let t = s(), { search: n, status: i, visibility: a, bucketId: o, promptTemplateId: c, retrievalProfileId: u, toolPolicyId: p } = e ?? {}, m = d(() => ({
41
+ filters: {
42
+ workspaceId: t,
43
+ search: n || void 0,
44
+ status: i,
45
+ visibility: a,
46
+ bucketId: o,
47
+ promptTemplateId: c,
48
+ retrievalProfileId: u,
49
+ toolPolicyId: p
50
+ },
51
+ pagination: {
52
+ limit: f,
53
+ offset: 0
54
+ }
55
+ }), [
56
+ t,
57
+ n,
58
+ i,
59
+ a,
60
+ o,
61
+ c,
62
+ u,
63
+ p
64
+ ]);
41
65
  return l({
42
- document: a,
43
- variables: d(() => ({
44
- filters: {
45
- workspaceId: t,
46
- search: n || void 0,
47
- status: r,
48
- visibility: i,
49
- bucketId: o,
50
- promptTemplateId: c,
51
- retrievalProfileId: u,
52
- toolPolicyId: p
53
- },
54
- pagination: {
55
- limit: f,
56
- offset: 0
57
- }
58
- }), [
59
- t,
60
- n,
61
- r,
62
- i,
63
- o,
64
- c,
65
- u,
66
- p
67
- ]),
66
+ document: r,
67
+ variables: m,
68
68
  select: g,
69
69
  fallback: h,
70
70
  enabled: !!t,
@@ -72,9 +72,10 @@ function _(e) {
72
72
  });
73
73
  }
74
74
  function v(e) {
75
+ let t = d(() => ({ id: e ?? "" }), [e]);
75
76
  return l({
76
- document: i,
77
- variables: d(() => ({ id: e ?? "" }), [e]),
77
+ document: n,
78
+ variables: t,
78
79
  select: (e) => e?.getSkill ?? null,
79
80
  fallback: null,
80
81
  enabled: !!e,
@@ -82,12 +83,12 @@ function v(e) {
82
83
  });
83
84
  }
84
85
  function y() {
85
- let t = s(), [r, i] = c({
86
- document: n,
87
- variables: u((n) => ({ input: e({
88
- ...n,
89
- workspaceId: t
90
- }, p) }), [t]),
86
+ let t = s(), n = u((e) => ({ input: a({
87
+ ...e,
88
+ workspaceId: t
89
+ }, p) }), [t]), [r, i] = c({
90
+ document: e,
91
+ variables: n,
91
92
  select: (e) => e?.createSkill,
92
93
  errorMessage: "Failed to create skill"
93
94
  });
@@ -98,35 +99,34 @@ function y() {
98
99
  };
99
100
  }
100
101
  function b() {
101
- let [t, n] = c({
102
- document: o,
103
- variables: ({ skillId: t, input: n }) => ({
104
- id: t,
105
- input: e(n, m)
102
+ let [e, t] = c({
103
+ document: i,
104
+ variables: ({ skillId: e, input: t }) => ({
105
+ id: e,
106
+ input: a(t, m)
106
107
  }),
107
108
  select: (e) => e?.updateSkill,
108
109
  errorMessage: "Failed to update skill"
109
110
  });
110
111
  return {
111
- update: t,
112
- loading: n.loading,
113
- error: n.error
112
+ update: e,
113
+ loading: t.loading,
114
+ error: t.error
114
115
  };
115
116
  }
116
117
  function x() {
117
- let [e, t] = c({
118
- document: r,
118
+ let [e, n] = c({
119
+ document: t,
119
120
  variables: (e) => ({ id: e }),
120
121
  select: (e) => e?.deleteSkill,
121
122
  errorMessage: "Failed to delete skill"
122
123
  });
123
124
  return {
124
125
  remove: e,
125
- loading: t.loading,
126
- error: t.error
126
+ loading: n.loading,
127
+ error: n.error
127
128
  };
128
129
  }
129
- //#endregion
130
130
  export { y as useCreateSkill, x as useDeleteSkill, v as useSkill, _ as useSkills, b as useUpdateSkill };
131
131
 
132
132
  //# sourceMappingURL=useSkills.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useSkills.js","names":[],"sources":["../../../src/botlit/hooks/useSkills.ts"],"sourcesContent":["/**\n * Skills Hooks\n * @module botlit/hooks\n *\n * Backed by the live `listSkills` / `getSkill` operations and the\n * create/update/delete mutations on wspace-botlit-svc.\n */\n\nimport { useCallback, useMemo } from 'react';\nimport {\n CreateSkillDocument,\n DeleteSkillDocument,\n GetSkillDocument,\n ListSkillsDocument,\n UpdateSkillDocument,\n type CreateSkillMutation,\n type DeleteSkillMutation,\n type GetSkillQuery,\n type ListSkillsQuery,\n type UpdateSkillMutation,\n} from '../../generated/wspace-operations';\nimport type { CreateSkillInput, UpdateSkillInput } from '../../generated/wspace-types';\nimport { buildMutationInput, fieldsOf, type GraphQLInput } from './internal/mutationInput';\nimport {\n useWorkspaceId,\n useWorkspaceMutation,\n useWorkspaceQuery,\n type QueryResult,\n} from './internal/workspaceGateway';\n\nconst LIST_LIMIT = 100;\n\nexport interface SkillRecord {\n id: string;\n name: string;\n status: string;\n visibility: string;\n description?: string | null;\n bucketId?: string | null;\n promptTemplateId?: string | null;\n retrievalProfileId?: string | null;\n toolPolicyId?: string | null;\n toolPackDeps: string[];\n recommendedPolicies: string[];\n capabilityFlags?: Record<string, unknown> | null;\n metadata?: Record<string, unknown> | null;\n revision: number;\n tags: string[];\n createdAt: string;\n updatedAt: string;\n createdById: string;\n updatedById: string;\n workspaceId: string;\n}\n\nexport interface SkillFilterVariables {\n search?: string;\n status?: string;\n visibility?: string;\n bucketId?: string;\n promptTemplateId?: string;\n retrievalProfileId?: string;\n toolPolicyId?: string;\n}\n\n/** `CreateSkillInput` minus the `workspaceId` the hook supplies. */\nexport type CreateSkillVariables = Omit<GraphQLInput<CreateSkillInput>, 'workspaceId'>;\n\nexport interface UpdateSkillVariables {\n skillId: string;\n input: GraphQLInput<UpdateSkillInput>;\n}\n\nconst CREATE_SKILL_FIELDS = fieldsOf<CreateSkillInput>({\n bucketId: true,\n capabilityFlags: true,\n description: true,\n metadata: true,\n name: true,\n promptTemplateId: true,\n recommendedPolicies: true,\n retrievalProfileId: true,\n status: true,\n tags: true,\n toolPackDeps: true,\n toolPolicyId: true,\n visibility: true,\n workspaceId: true,\n});\n\nconst UPDATE_SKILL_FIELDS = fieldsOf<UpdateSkillInput>({\n bucketId: true,\n capabilityFlags: true,\n description: true,\n metadata: true,\n name: true,\n promptTemplateId: true,\n recommendedPolicies: true,\n retrievalProfileId: true,\n status: true,\n tags: true,\n toolPackDeps: true,\n toolPolicyId: true,\n visibility: true,\n});\n\nconst NO_SKILLS: SkillRecord[] = [];\n\nfunction selectSkills(data: ListSkillsQuery | undefined): SkillRecord[] {\n return data?.listSkills ?? NO_SKILLS;\n}\n\nexport const skillKeys = {\n all: ['skills'] as const,\n lists: () => [...skillKeys.all, 'list'] as const,\n list: (filter?: SkillFilterVariables) => [...skillKeys.lists(), filter] as const,\n details: () => [...skillKeys.all, 'detail'] as const,\n detail: (id: string) => [...skillKeys.details(), id] as const,\n};\n\nexport function useSkills(filter?: SkillFilterVariables): QueryResult<SkillRecord[]> {\n const workspaceId = useWorkspaceId();\n const {\n search,\n status,\n visibility,\n bucketId,\n promptTemplateId,\n retrievalProfileId,\n toolPolicyId,\n } = filter ?? {};\n\n const variables = useMemo(\n () => ({\n filters: {\n workspaceId,\n search: search || undefined,\n status,\n visibility,\n bucketId,\n promptTemplateId,\n retrievalProfileId,\n toolPolicyId,\n },\n pagination: { limit: LIST_LIMIT, offset: 0 },\n }),\n [\n workspaceId,\n search,\n status,\n visibility,\n bucketId,\n promptTemplateId,\n retrievalProfileId,\n toolPolicyId,\n ]\n );\n\n return useWorkspaceQuery<ListSkillsQuery, SkillRecord[]>({\n document: ListSkillsDocument,\n variables,\n select: selectSkills,\n fallback: NO_SKILLS,\n enabled: Boolean(workspaceId),\n errorMessage: 'Failed to load skills',\n });\n}\n\nexport function useSkill(skillId: string | undefined): QueryResult<SkillRecord | null> {\n const variables = useMemo(() => ({ id: skillId ?? '' }), [skillId]);\n\n return useWorkspaceQuery<GetSkillQuery, SkillRecord | null>({\n document: GetSkillDocument,\n variables,\n select: (data) => data?.getSkill ?? null,\n fallback: null,\n enabled: Boolean(skillId),\n errorMessage: 'Failed to load skill',\n });\n}\n\nexport function useCreateSkill() {\n const workspaceId = useWorkspaceId();\n\n const variables = useCallback(\n (input: CreateSkillVariables) => ({\n input: buildMutationInput({ ...input, workspaceId }, CREATE_SKILL_FIELDS),\n }),\n [workspaceId]\n );\n\n const [create, state] = useWorkspaceMutation<\n CreateSkillMutation,\n CreateSkillVariables,\n SkillRecord\n >({\n document: CreateSkillDocument,\n variables,\n select: (data) => data?.createSkill,\n errorMessage: 'Failed to create skill',\n });\n\n return { create, loading: state.loading, error: state.error };\n}\n\nexport function useUpdateSkill() {\n const [update, state] = useWorkspaceMutation<\n UpdateSkillMutation,\n UpdateSkillVariables,\n SkillRecord\n >({\n document: UpdateSkillDocument,\n variables: ({ skillId, input }) => ({\n id: skillId,\n input: buildMutationInput(input, UPDATE_SKILL_FIELDS),\n }),\n select: (data) => data?.updateSkill,\n errorMessage: 'Failed to update skill',\n });\n\n return { update, loading: state.loading, error: state.error };\n}\n\nexport function useDeleteSkill() {\n const [remove, state] = useWorkspaceMutation<DeleteSkillMutation, string, boolean>({\n document: DeleteSkillDocument,\n variables: (skillId) => ({ id: skillId }),\n select: (data) => data?.deleteSkill,\n errorMessage: 'Failed to delete skill',\n });\n\n return { remove, loading: state.loading, error: state.error };\n}\n"],"mappings":";;;;;AA8BA,IAAM,IAAa,KA2Cb,IAAsB,EAA2B;CACrD,UAAU;CACV,iBAAiB;CACjB,aAAa;CACb,UAAU;CACV,MAAM;CACN,kBAAkB;CAClB,qBAAqB;CACrB,oBAAoB;CACpB,QAAQ;CACR,MAAM;CACN,cAAc;CACd,cAAc;CACd,YAAY;CACZ,aAAa;CACd,CAAC,EAEI,IAAsB,EAA2B;CACrD,UAAU;CACV,iBAAiB;CACjB,aAAa;CACb,UAAU;CACV,MAAM;CACN,kBAAkB;CAClB,qBAAqB;CACrB,oBAAoB;CACpB,QAAQ;CACR,MAAM;CACN,cAAc;CACd,cAAc;CACd,YAAY;CACb,CAAC,EAEI,IAA2B,EAAE;AAEnC,SAAS,EAAa,GAAkD;AACtE,QAAO,GAAM,cAAc;;AAW7B,SAAgB,EAAU,GAA2D;CACnF,IAAM,IAAc,GAAgB,EAC9B,EACJ,WACA,WACA,eACA,aACA,qBACA,uBACA,oBACE,KAAU,EAAE;AA4BhB,QAAO,EAAkD;EACvD,UAAU;EACV,WA5BgB,SACT;GACL,SAAS;IACP;IACA,QAAQ,KAAU,KAAA;IAClB;IACA;IACA;IACA;IACA;IACA;IACD;GACD,YAAY;IAAE,OAAO;IAAY,QAAQ;IAAG;GAC7C,GACD;GACE;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD,CACF;EAKC,QAAQ;EACR,UAAU;EACV,SAAS,EAAQ;EACjB,cAAc;EACf,CAAC;;AAGJ,SAAgB,EAAS,GAA8D;AAGrF,QAAO,EAAqD;EAC1D,UAAU;EACV,WAJgB,SAAe,EAAE,IAAI,KAAW,IAAI,GAAG,CAAC,EAAQ,CAAC;EAKjE,SAAS,MAAS,GAAM,YAAY;EACpC,UAAU;EACV,SAAS,EAAQ;EACjB,cAAc;EACf,CAAC;;AAGJ,SAAgB,IAAiB;CAC/B,IAAM,IAAc,GAAgB,EAS9B,CAAC,GAAQ,KAAS,EAItB;EACA,UAAU;EACV,WAbgB,GACf,OAAiC,EAChC,OAAO,EAAmB;GAAE,GAAG;GAAO;GAAa,EAAE,EAAoB,EAC1E,GACD,CAAC,EAAY,CACd;EASC,SAAS,MAAS,GAAM;EACxB,cAAc;EACf,CAAC;AAEF,QAAO;EAAE;EAAQ,SAAS,EAAM;EAAS,OAAO,EAAM;EAAO;;AAG/D,SAAgB,IAAiB;CAC/B,IAAM,CAAC,GAAQ,KAAS,EAItB;EACA,UAAU;EACV,YAAY,EAAE,YAAS,gBAAa;GAClC,IAAI;GACJ,OAAO,EAAmB,GAAO,EAAoB;GACtD;EACD,SAAS,MAAS,GAAM;EACxB,cAAc;EACf,CAAC;AAEF,QAAO;EAAE;EAAQ,SAAS,EAAM;EAAS,OAAO,EAAM;EAAO;;AAG/D,SAAgB,IAAiB;CAC/B,IAAM,CAAC,GAAQ,KAAS,EAA2D;EACjF,UAAU;EACV,YAAY,OAAa,EAAE,IAAI,GAAS;EACxC,SAAS,MAAS,GAAM;EACxB,cAAc;EACf,CAAC;AAEF,QAAO;EAAE;EAAQ,SAAS,EAAM;EAAS,OAAO,EAAM;EAAO"}
1
+ {"version":3,"file":"useSkills.js","names":["LIST_LIMIT","CREATE_SKILL_FIELDS","fieldsOf","UPDATE_SKILL_FIELDS","NO_SKILLS","selectSkills","data","useSkills","workspaceId","useWorkspaceId","filter","variables","useMemo","search","status","visibility","bucketId","promptTemplateId","retrievalProfileId","toolPolicyId","useWorkspaceQuery","ListSkillsDocument","useSkill","skillId","GetSkillDocument","useCreateSkill","useCallback","buildMutationInput","input","create","state","useWorkspaceMutation","CreateSkillDocument","useUpdateSkill","update","UpdateSkillDocument","useDeleteSkill","remove","DeleteSkillDocument"],"sources":["../../../src/botlit/hooks/useSkills.ts"],"sourcesContent":["/**\n * Skills Hooks\n * @module botlit/hooks\n *\n * Backed by the live `listSkills` / `getSkill` operations and the\n * create/update/delete mutations on wspace-botlit-svc.\n */\n\nimport { useCallback, useMemo } from 'react';\nimport {\n CreateSkillDocument,\n DeleteSkillDocument,\n GetSkillDocument,\n ListSkillsDocument,\n UpdateSkillDocument,\n type CreateSkillMutation,\n type DeleteSkillMutation,\n type GetSkillQuery,\n type ListSkillsQuery,\n type UpdateSkillMutation,\n} from '../../generated/wspace-operations';\nimport type { CreateSkillInput, UpdateSkillInput } from '../../generated/wspace-types';\nimport { buildMutationInput, fieldsOf, type GraphQLInput } from './internal/mutationInput';\nimport {\n useWorkspaceId,\n useWorkspaceMutation,\n useWorkspaceQuery,\n type QueryResult,\n} from './internal/workspaceGateway';\n\nconst LIST_LIMIT = 100;\n\nexport interface SkillRecord {\n id: string;\n name: string;\n status: string;\n visibility: string;\n description?: string | null;\n bucketId?: string | null;\n promptTemplateId?: string | null;\n retrievalProfileId?: string | null;\n toolPolicyId?: string | null;\n toolPackDeps: string[];\n recommendedPolicies: string[];\n capabilityFlags?: Record<string, unknown> | null;\n metadata?: Record<string, unknown> | null;\n revision: number;\n tags: string[];\n createdAt: string;\n updatedAt: string;\n createdById: string;\n updatedById: string;\n workspaceId: string;\n}\n\nexport interface SkillFilterVariables {\n search?: string;\n status?: string;\n visibility?: string;\n bucketId?: string;\n promptTemplateId?: string;\n retrievalProfileId?: string;\n toolPolicyId?: string;\n}\n\n/** `CreateSkillInput` minus the `workspaceId` the hook supplies. */\nexport type CreateSkillVariables = Omit<GraphQLInput<CreateSkillInput>, 'workspaceId'>;\n\nexport interface UpdateSkillVariables {\n skillId: string;\n input: GraphQLInput<UpdateSkillInput>;\n}\n\nconst CREATE_SKILL_FIELDS = fieldsOf<CreateSkillInput>({\n bucketId: true,\n capabilityFlags: true,\n description: true,\n metadata: true,\n name: true,\n promptTemplateId: true,\n recommendedPolicies: true,\n retrievalProfileId: true,\n status: true,\n tags: true,\n toolPackDeps: true,\n toolPolicyId: true,\n visibility: true,\n workspaceId: true,\n});\n\nconst UPDATE_SKILL_FIELDS = fieldsOf<UpdateSkillInput>({\n bucketId: true,\n capabilityFlags: true,\n description: true,\n metadata: true,\n name: true,\n promptTemplateId: true,\n recommendedPolicies: true,\n retrievalProfileId: true,\n status: true,\n tags: true,\n toolPackDeps: true,\n toolPolicyId: true,\n visibility: true,\n});\n\nconst NO_SKILLS: SkillRecord[] = [];\n\nfunction selectSkills(data: ListSkillsQuery | undefined): SkillRecord[] {\n return data?.listSkills ?? NO_SKILLS;\n}\n\nexport const skillKeys = {\n all: ['skills'] as const,\n lists: () => [...skillKeys.all, 'list'] as const,\n list: (filter?: SkillFilterVariables) => [...skillKeys.lists(), filter] as const,\n details: () => [...skillKeys.all, 'detail'] as const,\n detail: (id: string) => [...skillKeys.details(), id] as const,\n};\n\nexport function useSkills(filter?: SkillFilterVariables): QueryResult<SkillRecord[]> {\n const workspaceId = useWorkspaceId();\n const {\n search,\n status,\n visibility,\n bucketId,\n promptTemplateId,\n retrievalProfileId,\n toolPolicyId,\n } = filter ?? {};\n\n const variables = useMemo(\n () => ({\n filters: {\n workspaceId,\n search: search || undefined,\n status,\n visibility,\n bucketId,\n promptTemplateId,\n retrievalProfileId,\n toolPolicyId,\n },\n pagination: { limit: LIST_LIMIT, offset: 0 },\n }),\n [\n workspaceId,\n search,\n status,\n visibility,\n bucketId,\n promptTemplateId,\n retrievalProfileId,\n toolPolicyId,\n ]\n );\n\n return useWorkspaceQuery<ListSkillsQuery, SkillRecord[]>({\n document: ListSkillsDocument,\n variables,\n select: selectSkills,\n fallback: NO_SKILLS,\n enabled: Boolean(workspaceId),\n errorMessage: 'Failed to load skills',\n });\n}\n\nexport function useSkill(skillId: string | undefined): QueryResult<SkillRecord | null> {\n const variables = useMemo(() => ({ id: skillId ?? '' }), [skillId]);\n\n return useWorkspaceQuery<GetSkillQuery, SkillRecord | null>({\n document: GetSkillDocument,\n variables,\n select: (data) => data?.getSkill ?? null,\n fallback: null,\n enabled: Boolean(skillId),\n errorMessage: 'Failed to load skill',\n });\n}\n\nexport function useCreateSkill() {\n const workspaceId = useWorkspaceId();\n\n const variables = useCallback(\n (input: CreateSkillVariables) => ({\n input: buildMutationInput({ ...input, workspaceId }, CREATE_SKILL_FIELDS),\n }),\n [workspaceId]\n );\n\n const [create, state] = useWorkspaceMutation<\n CreateSkillMutation,\n CreateSkillVariables,\n SkillRecord\n >({\n document: CreateSkillDocument,\n variables,\n select: (data) => data?.createSkill,\n errorMessage: 'Failed to create skill',\n });\n\n return { create, loading: state.loading, error: state.error };\n}\n\nexport function useUpdateSkill() {\n const [update, state] = useWorkspaceMutation<\n UpdateSkillMutation,\n UpdateSkillVariables,\n SkillRecord\n >({\n document: UpdateSkillDocument,\n variables: ({ skillId, input }) => ({\n id: skillId,\n input: buildMutationInput(input, UPDATE_SKILL_FIELDS),\n }),\n select: (data) => data?.updateSkill,\n errorMessage: 'Failed to update skill',\n });\n\n return { update, loading: state.loading, error: state.error };\n}\n\nexport function useDeleteSkill() {\n const [remove, state] = useWorkspaceMutation<DeleteSkillMutation, string, boolean>({\n document: DeleteSkillDocument,\n variables: (skillId) => ({ id: skillId }),\n select: (data) => data?.deleteSkill,\n errorMessage: 'Failed to delete skill',\n });\n\n return { remove, loading: state.loading, error: state.error };\n}\n"],"mappings":";;;;;AA8BA,IAAMA,IAAa,KA2CbC,IAAsBC,EAA2B;CACrD,UAAU;CACV,iBAAiB;CACjB,aAAa;CACb,UAAU;CACV,MAAM;CACN,kBAAkB;CAClB,qBAAqB;CACrB,oBAAoB;CACpB,QAAQ;CACR,MAAM;CACN,cAAc;CACd,cAAc;CACd,YAAY;CACZ,aAAa;AACf,CAAC,GAEKC,IAAsBD,EAA2B;CACrD,UAAU;CACV,iBAAiB;CACjB,aAAa;CACb,UAAU;CACV,MAAM;CACN,kBAAkB;CAClB,qBAAqB;CACrB,oBAAoB;CACpB,QAAQ;CACR,MAAM;CACN,cAAc;CACd,cAAc;CACd,YAAY;AACd,CAAC,GAEKE,IAA2B,CAAC;AAElC,SAASC,EAAa,GAAkD;CACtE,OAAOC,GAAM,cAAcF;AAC7B;AAUA,SAAgBG,EAAU,GAA2D;CACnF,IAAMC,IAAcC,EAAe,GAC7B,EACJ,WACA,WACA,eACA,aACA,qBACA,uBACA,oBACEC,KAAU,CAAC,GAETC,IAAYC,SACT;EACL,SAAS;GACP;GACA,QAAQC,KAAU,KAAA;GAClB;GACA;GACA;GACA;GACA;GACA;EACF;EACA,YAAY;GAAE,OAAOb;GAAY,QAAQ;EAAE;CAC7C,IACA;EACEQ;EACAK;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;CACF,CACF;CAEA,OAAOC,EAAkD;EACvD,UAAUC;EACV;EACA,QAAQhB;EACR,UAAUD;EACV,SAAS,EAAQI;EACjB,cAAc;CAChB,CAAC;AACH;AAEA,SAAgBc,EAAS,GAA8D;CACrF,IAAMX,IAAYC,SAAe,EAAE,IAAIW,KAAW,GAAG,IAAI,CAACA,CAAO,CAAC;CAElE,OAAOH,EAAqD;EAC1D,UAAUI;EACV;EACA,SAAS,MAASlB,GAAM,YAAY;EACpC,UAAU;EACV,SAAS,EAAQiB;EACjB,cAAc;CAChB,CAAC;AACH;AAEA,SAAgBE,IAAiB;CAC/B,IAAMjB,IAAcC,EAAe,GAE7BE,IAAYe,GACf,OAAiC,EAChC,OAAOC,EAAmB;EAAE,GAAGC;EAAO;CAAY,GAAG3B,CAAmB,EAC1E,IACA,CAACO,CAAW,CACd,GAEM,CAACqB,GAAQC,KAASC,EAItB;EACA,UAAUC;EACV;EACA,SAAS,MAAS1B,GAAM;EACxB,cAAc;CAChB,CAAC;CAED,OAAO;EAAE;EAAQ,SAASwB,EAAM;EAAS,OAAOA,EAAM;CAAM;AAC9D;AAEA,SAAgBG,IAAiB;CAC/B,IAAM,CAACC,GAAQJ,KAASC,EAItB;EACA,UAAUI;EACV,YAAY,EAAE,YAAS,gBAAa;GAClC,IAAIZ;GACJ,OAAOI,EAAmBC,GAAOzB,CAAmB;EACtD;EACA,SAAS,MAASG,GAAM;EACxB,cAAc;CAChB,CAAC;CAED,OAAO;EAAE;EAAQ,SAASwB,EAAM;EAAS,OAAOA,EAAM;CAAM;AAC9D;AAEA,SAAgBM,IAAiB;CAC/B,IAAM,CAACC,GAAQP,KAASC,EAA2D;EACjF,UAAUO;EACV,YAAY,OAAa,EAAE,IAAIf,EAAQ;EACvC,SAAS,MAASjB,GAAM;EACxB,cAAc;CAChB,CAAC;CAED,OAAO;EAAE;EAAQ,SAASwB,EAAM;EAAS,OAAOA,EAAM;CAAM;AAC9D"}
@@ -0,0 +1,112 @@
1
+ import { ForkInstalledPackageInput, InstallPackageInput, UpdateInstalledPackageInput } from '../../generated/wspace-types';
2
+ import { GraphQLInput } from './internal/mutationInput';
3
+ import { QueryResult } from './internal/workspaceGateway';
4
+ export interface StorePackageRecord {
5
+ id: string;
6
+ slug: string;
7
+ kind: string;
8
+ version: string;
9
+ manifest: Record<string, unknown>;
10
+ readme?: string | null;
11
+ metadata?: Record<string, unknown> | null;
12
+ publishedAt?: string | null;
13
+ publishedBy?: string | null;
14
+ createdAt: string;
15
+ updatedAt: string;
16
+ }
17
+ export interface InstalledPackageRecord {
18
+ id: string;
19
+ packageId: string;
20
+ installedVersion: string;
21
+ mode: string;
22
+ bindings?: Record<string, unknown> | null;
23
+ pinnedByEnv?: Record<string, unknown> | null;
24
+ metadata?: Record<string, unknown> | null;
25
+ installedAt: string;
26
+ installedBy: string;
27
+ createdAt: string;
28
+ updatedAt: string;
29
+ workspaceId: string;
30
+ package?: StorePackageRecord | null;
31
+ }
32
+ /** Sort orders the service data actually supports (no rating/downloads exist). */
33
+ export type StoreSortBy = 'recent' | 'name';
34
+ export interface StoreFilter {
35
+ search?: string;
36
+ kind?: string[];
37
+ sortBy?: StoreSortBy;
38
+ }
39
+ /** `InstallPackageInput` minus the `workspaceId` the hook supplies. */
40
+ export type InstallPackageVariables = Omit<GraphQLInput<InstallPackageInput>, 'workspaceId'>;
41
+ export interface UpdateInstalledPackageVariables {
42
+ installedId: string;
43
+ input: GraphQLInput<UpdateInstalledPackageInput>;
44
+ }
45
+ export interface PinPackageVersionVariables {
46
+ installedId: string;
47
+ environment: string;
48
+ version: string;
49
+ /** Existing pins — passed through so pinning one environment never drops the others. */
50
+ pinnedByEnv?: Record<string, unknown> | null;
51
+ }
52
+ /** `ForkInstalledPackageInput` minus the `workspaceId` the hook supplies. */
53
+ export type ForkPackageVariables = Omit<GraphQLInput<ForkInstalledPackageInput>, 'workspaceId'>;
54
+ /** An installed package whose store listing has moved on to a newer version. */
55
+ export interface OutdatedPackage {
56
+ installed: InstalledPackageRecord;
57
+ installedVersion: string;
58
+ latestVersion: string;
59
+ }
60
+ /** Display name from the package manifest, falling back to the slug. */
61
+ export declare function storePackageName(pkg: Pick<StorePackageRecord, 'manifest' | 'slug'> | null | undefined): string;
62
+ export declare function storePackageDescription(pkg: Pick<StorePackageRecord, 'manifest'> | null | undefined): string | undefined;
63
+ export declare const storeKeys: {
64
+ all: readonly ["store"];
65
+ packages: () => readonly ["store", "packages"];
66
+ packageList: (filter?: StoreFilter) => readonly ["store", "packages", "list", StoreFilter | undefined];
67
+ packageDetail: (slug: string) => readonly ["store", "packages", "detail", string];
68
+ installed: () => readonly ["store", "installed"];
69
+ installedList: () => readonly ["store", "installed", "list"];
70
+ installedDetail: (id: string) => readonly ["store", "installed", "detail", string];
71
+ };
72
+ export declare function useStorePackages(filter?: StoreFilter): QueryResult<StorePackageRecord[]>;
73
+ /** Store packages are addressed by slug in the UI, so this resolves by slug. */
74
+ export declare function useStorePackage(slug: string | undefined): QueryResult<StorePackageRecord | null>;
75
+ export declare function useInstalledPackages(): QueryResult<InstalledPackageRecord[]>;
76
+ export declare function useInstalledPackage(packageId: string | undefined): QueryResult<InstalledPackageRecord | null>;
77
+ /**
78
+ * Installed packages whose store listing now publishes a different version.
79
+ * Derived from the store package returned alongside each install — the service
80
+ * has no dedicated "check for updates" operation.
81
+ */
82
+ export declare function useCheckPackageUpdates(): QueryResult<OutdatedPackage[]>;
83
+ export declare function useInstallPackage(): {
84
+ install: (input: InstallPackageVariables) => Promise<InstalledPackageRecord>;
85
+ loading: boolean;
86
+ error: Error | undefined;
87
+ };
88
+ export declare function useUpdateInstalledPackage(): {
89
+ update: (input: UpdateInstalledPackageVariables) => Promise<InstalledPackageRecord>;
90
+ loading: boolean;
91
+ error: Error | undefined;
92
+ };
93
+ export declare function useUninstallPackage(): {
94
+ uninstall: (input: string) => Promise<boolean>;
95
+ loading: boolean;
96
+ error: Error | undefined;
97
+ };
98
+ /**
99
+ * Pins one environment to a version. Implemented as a targeted merge into
100
+ * `pinnedByEnv` via `updateInstalledPackage` — the service has no dedicated pin
101
+ * mutation, and replacing the whole map would drop the other environments.
102
+ */
103
+ export declare function usePinPackageVersion(): {
104
+ pin: (input: PinPackageVersionVariables) => Promise<InstalledPackageRecord>;
105
+ loading: boolean;
106
+ error: Error | undefined;
107
+ };
108
+ export declare function useForkPackage(): {
109
+ fork: (input: ForkPackageVariables) => Promise<InstalledPackageRecord>;
110
+ loading: boolean;
111
+ error: Error | undefined;
112
+ };
@@ -1,9 +1,9 @@
1
- import { buildMutationInput as e, fieldsOf as t } from "./internal/mutationInput.js";
2
- import { GetStorePackageBySlugDocument as n, InstallPackageDocument as r, ListInstalledPackagesDocument as i, ListStorePackagesDocument as a, UninstallPackageDocument as o, UpdateInstalledPackageDocument as s } from "../../generated/wspace-operations.js";
1
+ import { GetStorePackageBySlugDocument as e, InstallPackageDocument as t, ListInstalledPackagesDocument as n, ListStorePackagesDocument as r, UninstallPackageDocument as i, UpdateInstalledPackageDocument as a } from "../../generated/wspace-operations.js";
2
+ import { buildMutationInput as o, fieldsOf as s } from "./internal/mutationInput.js";
3
3
  import { useWorkspaceId as c, useWorkspaceMutation as l, useWorkspaceQuery as u } from "./internal/workspaceGateway.js";
4
4
  import { useCallback as d, useMemo as f } from "react";
5
- //#region src/botlit/hooks/useStore.ts
6
- var p = 100, m = t({
5
+ // src/botlit/hooks/useStore.ts
6
+ var p = 100, m = s({
7
7
  bindings: !0,
8
8
  metadata: !0,
9
9
  mode: !0,
@@ -11,14 +11,14 @@ var p = 100, m = t({
11
11
  pinnedByEnv: !0,
12
12
  version: !0,
13
13
  workspaceId: !0
14
- }), h = t({
14
+ }), h = s({
15
15
  bindings: !0,
16
16
  installedVersion: !0,
17
17
  metadata: !0,
18
18
  mode: !0,
19
19
  pinnedByEnv: !0
20
20
  });
21
- t({
21
+ s({
22
22
  installedPackageId: !0,
23
23
  metadata: !0,
24
24
  newName: !0,
@@ -46,51 +46,52 @@ function C(e) {
46
46
  return e?.listInstalledPackages ?? _;
47
47
  }
48
48
  function w(e) {
49
- let t = e?.search?.trim() ?? "", n = e?.kind?.[0], r = e?.sortBy ?? "recent";
49
+ let t = e?.search?.trim() ?? "", n = e?.kind?.[0], i = e?.sortBy ?? "recent", a = f(() => ({
50
+ filters: {
51
+ search: t || void 0,
52
+ kind: n
53
+ },
54
+ pagination: {
55
+ limit: p,
56
+ offset: 0
57
+ }
58
+ }), [t, n]), o = d((e) => {
59
+ let t = S(e);
60
+ if (t.length === 0) return t;
61
+ let n = [...t];
62
+ return i === "name" ? n.sort((e, t) => b(e).localeCompare(b(t))) : n.sort((e, t) => (t.publishedAt ?? "").localeCompare(e.publishedAt ?? "")), n;
63
+ }, [i]);
50
64
  return u({
51
- document: a,
52
- variables: f(() => ({
53
- filters: {
54
- search: t || void 0,
55
- kind: n
56
- },
57
- pagination: {
58
- limit: p,
59
- offset: 0
60
- }
61
- }), [t, n]),
62
- select: d((e) => {
63
- let t = S(e);
64
- if (t.length === 0) return t;
65
- let n = [...t];
66
- return r === "name" ? n.sort((e, t) => b(e).localeCompare(b(t))) : n.sort((e, t) => (t.publishedAt ?? "").localeCompare(e.publishedAt ?? "")), n;
67
- }, [r]),
65
+ document: r,
66
+ variables: a,
67
+ select: o,
68
68
  fallback: g,
69
69
  enabled: !0,
70
70
  errorMessage: "Failed to load store packages"
71
71
  });
72
72
  }
73
- function T(e) {
73
+ function T(t) {
74
+ let n = f(() => ({ slug: t ?? "" }), [t]);
74
75
  return u({
75
- document: n,
76
- variables: f(() => ({ slug: e ?? "" }), [e]),
76
+ document: e,
77
+ variables: n,
77
78
  select: (e) => e?.getStorePackageBySlug ?? null,
78
79
  fallback: null,
79
- enabled: !!e,
80
+ enabled: !!t,
80
81
  errorMessage: "Failed to load store package"
81
82
  });
82
83
  }
83
84
  function E() {
84
- let e = c();
85
+ let e = c(), t = f(() => ({
86
+ filters: { workspaceId: e ?? "" },
87
+ pagination: {
88
+ limit: p,
89
+ offset: 0
90
+ }
91
+ }), [e]);
85
92
  return u({
86
- document: i,
87
- variables: f(() => ({
88
- filters: { workspaceId: e ?? "" },
89
- pagination: {
90
- limit: p,
91
- offset: 0
92
- }
93
- }), [e]),
93
+ document: n,
94
+ variables: t,
94
95
  select: C,
95
96
  fallback: _,
96
97
  enabled: !!e,
@@ -98,40 +99,40 @@ function E() {
98
99
  });
99
100
  }
100
101
  function D() {
101
- let t = c(), [n, i] = l({
102
- document: r,
103
- variables: d((n) => ({ input: e({
104
- ...n,
105
- workspaceId: t
106
- }, m) }), [t]),
102
+ let e = c(), n = d((t) => ({ input: o({
103
+ ...t,
104
+ workspaceId: e
105
+ }, m) }), [e]), [r, i] = l({
106
+ document: t,
107
+ variables: n,
107
108
  select: (e) => e?.installPackage,
108
109
  errorMessage: "Failed to install package"
109
110
  });
110
111
  return {
111
- install: n,
112
+ install: r,
112
113
  loading: i.loading,
113
114
  error: i.error
114
115
  };
115
116
  }
116
117
  function O() {
117
- let [t, n] = l({
118
- document: s,
119
- variables: ({ installedId: t, input: n }) => ({
120
- id: t,
121
- input: e(n, h)
118
+ let [e, t] = l({
119
+ document: a,
120
+ variables: ({ installedId: e, input: t }) => ({
121
+ id: e,
122
+ input: o(t, h)
122
123
  }),
123
124
  select: (e) => e?.updateInstalledPackage,
124
125
  errorMessage: "Failed to update installed package"
125
126
  });
126
127
  return {
127
- update: t,
128
- loading: n.loading,
129
- error: n.error
128
+ update: e,
129
+ loading: t.loading,
130
+ error: t.error
130
131
  };
131
132
  }
132
133
  function k() {
133
134
  let [e, t] = l({
134
- document: o,
135
+ document: i,
135
136
  variables: (e) => ({ id: e }),
136
137
  select: (e) => e?.uninstallPackage,
137
138
  errorMessage: "Failed to uninstall package"
@@ -144,7 +145,7 @@ function k() {
144
145
  }
145
146
  function A() {
146
147
  let [e, t] = l({
147
- document: s,
148
+ document: a,
148
149
  variables: ({ installedId: e, environment: t, version: n, pinnedByEnv: r }) => ({
149
150
  id: e,
150
151
  input: { pinnedByEnv: {
@@ -161,7 +162,6 @@ function A() {
161
162
  error: t.error
162
163
  };
163
164
  }
164
- //#endregion
165
165
  export { x as storePackageDescription, b as storePackageName, D as useInstallPackage, E as useInstalledPackages, A as usePinPackageVersion, T as useStorePackage, w as useStorePackages, k as useUninstallPackage, O as useUpdateInstalledPackage };
166
166
 
167
167
  //# sourceMappingURL=useStore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useStore.js","names":[],"sources":["../../../src/botlit/hooks/useStore.ts"],"sourcesContent":["/**\n * Store Hooks\n * @module botlit/hooks\n *\n * Backed by the live `listStorePackages` / `getStorePackageBySlug` /\n * `listInstalledPackages` operations and the install/update/uninstall/fork\n * mutations on wspace-botlit-svc.\n *\n * A `StorePackage` carries its human metadata (name, description, author,\n * tags…) inside the `manifest` JSON — the helpers below read it safely rather\n * than assuming top-level columns that the service does not expose.\n */\n\nimport { useCallback, useMemo } from 'react';\nimport {\n ForkInstalledPackageDocument,\n GetInstalledPackageDocument,\n GetStorePackageBySlugDocument,\n InstallPackageDocument,\n ListInstalledPackagesDocument,\n ListStorePackagesDocument,\n UninstallPackageDocument,\n UpdateInstalledPackageDocument,\n type ForkInstalledPackageMutation,\n type GetInstalledPackageQuery,\n type GetStorePackageBySlugQuery,\n type InstallPackageMutation,\n type ListInstalledPackagesQuery,\n type ListStorePackagesQuery,\n type UninstallPackageMutation,\n type UpdateInstalledPackageMutation,\n} from '../../generated/wspace-operations';\nimport type {\n ForkInstalledPackageInput,\n InstallPackageInput,\n UpdateInstalledPackageInput,\n} from '../../generated/wspace-types';\nimport { buildMutationInput, fieldsOf, type GraphQLInput } from './internal/mutationInput';\nimport {\n useWorkspaceId,\n useWorkspaceMutation,\n useWorkspaceQuery,\n type QueryResult,\n} from './internal/workspaceGateway';\n\nconst LIST_LIMIT = 100;\n\nexport interface StorePackageRecord {\n id: string;\n slug: string;\n kind: string;\n version: string;\n manifest: Record<string, unknown>;\n readme?: string | null;\n metadata?: Record<string, unknown> | null;\n publishedAt?: string | null;\n publishedBy?: string | null;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface InstalledPackageRecord {\n id: string;\n packageId: string;\n installedVersion: string;\n mode: string;\n bindings?: Record<string, unknown> | null;\n pinnedByEnv?: Record<string, unknown> | null;\n metadata?: Record<string, unknown> | null;\n installedAt: string;\n installedBy: string;\n createdAt: string;\n updatedAt: string;\n workspaceId: string;\n package?: StorePackageRecord | null;\n}\n\n/** Sort orders the service data actually supports (no rating/downloads exist). */\nexport type StoreSortBy = 'recent' | 'name';\n\nexport interface StoreFilter {\n search?: string;\n kind?: string[];\n sortBy?: StoreSortBy;\n}\n\n/** `InstallPackageInput` minus the `workspaceId` the hook supplies. */\nexport type InstallPackageVariables = Omit<GraphQLInput<InstallPackageInput>, 'workspaceId'>;\n\nexport interface UpdateInstalledPackageVariables {\n installedId: string;\n input: GraphQLInput<UpdateInstalledPackageInput>;\n}\n\nconst INSTALL_PACKAGE_FIELDS = fieldsOf<InstallPackageInput>({\n bindings: true,\n metadata: true,\n mode: true,\n packageId: true,\n pinnedByEnv: true,\n version: true,\n workspaceId: true,\n});\n\nconst UPDATE_INSTALLED_FIELDS = fieldsOf<UpdateInstalledPackageInput>({\n bindings: true,\n installedVersion: true,\n metadata: true,\n mode: true,\n pinnedByEnv: true,\n});\n\nconst FORK_PACKAGE_FIELDS = fieldsOf<ForkInstalledPackageInput>({\n installedPackageId: true,\n metadata: true,\n newName: true,\n workspaceId: true,\n});\n\nexport interface PinPackageVersionVariables {\n installedId: string;\n environment: string;\n version: string;\n /** Existing pins — passed through so pinning one environment never drops the others. */\n pinnedByEnv?: Record<string, unknown> | null;\n}\n\n/** `ForkInstalledPackageInput` minus the `workspaceId` the hook supplies. */\nexport type ForkPackageVariables = Omit<GraphQLInput<ForkInstalledPackageInput>, 'workspaceId'>;\n\n/** An installed package whose store listing has moved on to a newer version. */\nexport interface OutdatedPackage {\n installed: InstalledPackageRecord;\n installedVersion: string;\n latestVersion: string;\n}\n\nconst NO_PACKAGES: StorePackageRecord[] = [];\nconst NO_INSTALLED: InstalledPackageRecord[] = [];\nconst NO_OUTDATED: OutdatedPackage[] = [];\n\nfunction manifestSection(\n pkg: Pick<StorePackageRecord, 'manifest'> | null | undefined,\n key: string\n): Record<string, unknown> | undefined {\n const section = pkg?.manifest?.[key];\n return section && typeof section === 'object' && !Array.isArray(section)\n ? (section as Record<string, unknown>)\n : undefined;\n}\n\nfunction manifestString(\n pkg: Pick<StorePackageRecord, 'manifest'> | null | undefined,\n key: string\n): string | undefined {\n const value = manifestSection(pkg, 'package')?.[key];\n return typeof value === 'string' ? value : undefined;\n}\n\n/** Display name from the package manifest, falling back to the slug. */\nexport function storePackageName(\n pkg: Pick<StorePackageRecord, 'manifest' | 'slug'> | null | undefined\n): string {\n return manifestString(pkg, 'name') ?? pkg?.slug ?? '';\n}\n\nexport function storePackageDescription(\n pkg: Pick<StorePackageRecord, 'manifest'> | null | undefined\n): string | undefined {\n return manifestString(pkg, 'description');\n}\n\nfunction selectPackages(data: ListStorePackagesQuery | undefined): StorePackageRecord[] {\n return data?.listStorePackages ?? NO_PACKAGES;\n}\n\nfunction selectInstalled(data: ListInstalledPackagesQuery | undefined): InstalledPackageRecord[] {\n return data?.listInstalledPackages ?? NO_INSTALLED;\n}\n\nexport const storeKeys = {\n all: ['store'] as const,\n packages: () => [...storeKeys.all, 'packages'] as const,\n packageList: (filter?: StoreFilter) => [...storeKeys.packages(), 'list', filter] as const,\n packageDetail: (slug: string) => [...storeKeys.packages(), 'detail', slug] as const,\n installed: () => [...storeKeys.all, 'installed'] as const,\n installedList: () => [...storeKeys.installed(), 'list'] as const,\n installedDetail: (id: string) => [...storeKeys.installed(), 'detail', id] as const,\n};\n\nexport function useStorePackages(filter?: StoreFilter): QueryResult<StorePackageRecord[]> {\n const search = filter?.search?.trim() ?? '';\n const kind = filter?.kind?.[0];\n const sortBy = filter?.sortBy ?? 'recent';\n\n const variables = useMemo(\n () => ({\n filters: { search: search || undefined, kind },\n pagination: { limit: LIST_LIMIT, offset: 0 },\n }),\n [search, kind]\n );\n\n const select = useCallback(\n (data: ListStorePackagesQuery | undefined): StorePackageRecord[] => {\n const rows = selectPackages(data);\n if (rows.length === 0) return rows;\n const sorted = [...rows];\n if (sortBy === 'name') {\n sorted.sort((a, b) => storePackageName(a).localeCompare(storePackageName(b)));\n } else {\n sorted.sort((a, b) => (b.publishedAt ?? '').localeCompare(a.publishedAt ?? ''));\n }\n return sorted;\n },\n [sortBy]\n );\n\n return useWorkspaceQuery<ListStorePackagesQuery, StorePackageRecord[]>({\n document: ListStorePackagesDocument,\n variables,\n select,\n fallback: NO_PACKAGES,\n // The store catalogue is workspace-independent.\n enabled: true,\n errorMessage: 'Failed to load store packages',\n });\n}\n\n/** Store packages are addressed by slug in the UI, so this resolves by slug. */\nexport function useStorePackage(slug: string | undefined): QueryResult<StorePackageRecord | null> {\n const variables = useMemo(() => ({ slug: slug ?? '' }), [slug]);\n\n return useWorkspaceQuery<GetStorePackageBySlugQuery, StorePackageRecord | null>({\n document: GetStorePackageBySlugDocument,\n variables,\n select: (data) => data?.getStorePackageBySlug ?? null,\n fallback: null,\n enabled: Boolean(slug),\n errorMessage: 'Failed to load store package',\n });\n}\n\nexport function useInstalledPackages(): QueryResult<InstalledPackageRecord[]> {\n const workspaceId = useWorkspaceId();\n\n const variables = useMemo(\n () => ({\n filters: { workspaceId: workspaceId ?? '' },\n pagination: { limit: LIST_LIMIT, offset: 0 },\n }),\n [workspaceId]\n );\n\n return useWorkspaceQuery<ListInstalledPackagesQuery, InstalledPackageRecord[]>({\n document: ListInstalledPackagesDocument,\n variables,\n select: selectInstalled,\n fallback: NO_INSTALLED,\n enabled: Boolean(workspaceId),\n errorMessage: 'Failed to load installed packages',\n });\n}\n\nexport function useInstalledPackage(\n packageId: string | undefined\n): QueryResult<InstalledPackageRecord | null> {\n const variables = useMemo(() => ({ id: packageId ?? '' }), [packageId]);\n\n return useWorkspaceQuery<GetInstalledPackageQuery, InstalledPackageRecord | null>({\n document: GetInstalledPackageDocument,\n variables,\n select: (data) => data?.getInstalledPackage ?? null,\n fallback: null,\n enabled: Boolean(packageId),\n errorMessage: 'Failed to load installed package',\n });\n}\n\n/**\n * Installed packages whose store listing now publishes a different version.\n * Derived from the store package returned alongside each install — the service\n * has no dedicated \"check for updates\" operation.\n */\nexport function useCheckPackageUpdates(): QueryResult<OutdatedPackage[]> {\n const workspaceId = useWorkspaceId();\n\n const variables = useMemo(\n () => ({\n filters: { workspaceId: workspaceId ?? '' },\n pagination: { limit: LIST_LIMIT, offset: 0 },\n }),\n [workspaceId]\n );\n\n const select = useCallback((data: ListInstalledPackagesQuery | undefined): OutdatedPackage[] => {\n const rows = selectInstalled(data);\n const outdated: OutdatedPackage[] = [];\n for (const installed of rows) {\n const latestVersion = installed.package?.version;\n if (latestVersion && latestVersion !== installed.installedVersion) {\n outdated.push({ installed, installedVersion: installed.installedVersion, latestVersion });\n }\n }\n return outdated;\n }, []);\n\n return useWorkspaceQuery<ListInstalledPackagesQuery, OutdatedPackage[]>({\n document: ListInstalledPackagesDocument,\n variables,\n select,\n fallback: NO_OUTDATED,\n enabled: Boolean(workspaceId),\n errorMessage: 'Failed to check for package updates',\n });\n}\n\nexport function useInstallPackage() {\n const workspaceId = useWorkspaceId();\n\n const variables = useCallback(\n (input: InstallPackageVariables) => ({\n input: buildMutationInput({ ...input, workspaceId }, INSTALL_PACKAGE_FIELDS),\n }),\n [workspaceId]\n );\n\n const [install, state] = useWorkspaceMutation<\n InstallPackageMutation,\n InstallPackageVariables,\n InstalledPackageRecord\n >({\n document: InstallPackageDocument,\n variables,\n select: (data) => data?.installPackage,\n errorMessage: 'Failed to install package',\n });\n\n return { install, loading: state.loading, error: state.error };\n}\n\nexport function useUpdateInstalledPackage() {\n const [update, state] = useWorkspaceMutation<\n UpdateInstalledPackageMutation,\n UpdateInstalledPackageVariables,\n InstalledPackageRecord\n >({\n document: UpdateInstalledPackageDocument,\n variables: ({ installedId, input }) => ({\n id: installedId,\n input: buildMutationInput(input, UPDATE_INSTALLED_FIELDS),\n }),\n select: (data) => data?.updateInstalledPackage,\n errorMessage: 'Failed to update installed package',\n });\n\n return { update, loading: state.loading, error: state.error };\n}\n\nexport function useUninstallPackage() {\n const [uninstall, state] = useWorkspaceMutation<UninstallPackageMutation, string, boolean>({\n document: UninstallPackageDocument,\n variables: (installedId) => ({ id: installedId }),\n select: (data) => data?.uninstallPackage,\n errorMessage: 'Failed to uninstall package',\n });\n\n return { uninstall, loading: state.loading, error: state.error };\n}\n\n/**\n * Pins one environment to a version. Implemented as a targeted merge into\n * `pinnedByEnv` via `updateInstalledPackage` — the service has no dedicated pin\n * mutation, and replacing the whole map would drop the other environments.\n */\nexport function usePinPackageVersion() {\n const [update, state] = useWorkspaceMutation<\n UpdateInstalledPackageMutation,\n PinPackageVersionVariables,\n InstalledPackageRecord\n >({\n document: UpdateInstalledPackageDocument,\n variables: ({ installedId, environment, version, pinnedByEnv }) => ({\n id: installedId,\n input: { pinnedByEnv: { ...(pinnedByEnv ?? {}), [environment]: version } },\n }),\n select: (data) => data?.updateInstalledPackage,\n errorMessage: 'Failed to pin package version',\n });\n\n return { pin: update, loading: state.loading, error: state.error };\n}\n\nexport function useForkPackage() {\n const workspaceId = useWorkspaceId();\n\n const variables = useCallback(\n (input: ForkPackageVariables) => ({\n input: buildMutationInput({ ...input, workspaceId }, FORK_PACKAGE_FIELDS),\n }),\n [workspaceId]\n );\n\n const [fork, state] = useWorkspaceMutation<\n ForkInstalledPackageMutation,\n ForkPackageVariables,\n InstalledPackageRecord\n >({\n document: ForkInstalledPackageDocument,\n variables,\n select: (data) => data?.forkInstalledPackage,\n errorMessage: 'Failed to fork package',\n });\n\n return { fork, loading: state.loading, error: state.error };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"useStore.js","names":["LIST_LIMIT","INSTALL_PACKAGE_FIELDS","fieldsOf","UPDATE_INSTALLED_FIELDS","NO_PACKAGES","NO_INSTALLED","manifestSection","section","pkg","key","manifestString","value","storePackageName","storePackageDescription","selectPackages","data","selectInstalled","useStorePackages","search","filter","kind","sortBy","variables","useMemo","select","useCallback","rows","sorted","a","b","useWorkspaceQuery","ListStorePackagesDocument","useStorePackage","slug","GetStorePackageBySlugDocument","useInstalledPackages","workspaceId","useWorkspaceId","ListInstalledPackagesDocument","useInstallPackage","buildMutationInput","input","install","state","useWorkspaceMutation","InstallPackageDocument","useUpdateInstalledPackage","update","UpdateInstalledPackageDocument","installedId","useUninstallPackage","uninstall","UninstallPackageDocument","usePinPackageVersion","pinnedByEnv","environment","version"],"sources":["../../../src/botlit/hooks/useStore.ts"],"sourcesContent":["/**\n * Store Hooks\n * @module botlit/hooks\n *\n * Backed by the live `listStorePackages` / `getStorePackageBySlug` /\n * `listInstalledPackages` operations and the install/update/uninstall/fork\n * mutations on wspace-botlit-svc.\n *\n * A `StorePackage` carries its human metadata (name, description, author,\n * tags…) inside the `manifest` JSON — the helpers below read it safely rather\n * than assuming top-level columns that the service does not expose.\n */\n\nimport { useCallback, useMemo } from 'react';\nimport {\n ForkInstalledPackageDocument,\n GetInstalledPackageDocument,\n GetStorePackageBySlugDocument,\n InstallPackageDocument,\n ListInstalledPackagesDocument,\n ListStorePackagesDocument,\n UninstallPackageDocument,\n UpdateInstalledPackageDocument,\n type ForkInstalledPackageMutation,\n type GetInstalledPackageQuery,\n type GetStorePackageBySlugQuery,\n type InstallPackageMutation,\n type ListInstalledPackagesQuery,\n type ListStorePackagesQuery,\n type UninstallPackageMutation,\n type UpdateInstalledPackageMutation,\n} from '../../generated/wspace-operations';\nimport type {\n ForkInstalledPackageInput,\n InstallPackageInput,\n UpdateInstalledPackageInput,\n} from '../../generated/wspace-types';\nimport { buildMutationInput, fieldsOf, type GraphQLInput } from './internal/mutationInput';\nimport {\n useWorkspaceId,\n useWorkspaceMutation,\n useWorkspaceQuery,\n type QueryResult,\n} from './internal/workspaceGateway';\n\nconst LIST_LIMIT = 100;\n\nexport interface StorePackageRecord {\n id: string;\n slug: string;\n kind: string;\n version: string;\n manifest: Record<string, unknown>;\n readme?: string | null;\n metadata?: Record<string, unknown> | null;\n publishedAt?: string | null;\n publishedBy?: string | null;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface InstalledPackageRecord {\n id: string;\n packageId: string;\n installedVersion: string;\n mode: string;\n bindings?: Record<string, unknown> | null;\n pinnedByEnv?: Record<string, unknown> | null;\n metadata?: Record<string, unknown> | null;\n installedAt: string;\n installedBy: string;\n createdAt: string;\n updatedAt: string;\n workspaceId: string;\n package?: StorePackageRecord | null;\n}\n\n/** Sort orders the service data actually supports (no rating/downloads exist). */\nexport type StoreSortBy = 'recent' | 'name';\n\nexport interface StoreFilter {\n search?: string;\n kind?: string[];\n sortBy?: StoreSortBy;\n}\n\n/** `InstallPackageInput` minus the `workspaceId` the hook supplies. */\nexport type InstallPackageVariables = Omit<GraphQLInput<InstallPackageInput>, 'workspaceId'>;\n\nexport interface UpdateInstalledPackageVariables {\n installedId: string;\n input: GraphQLInput<UpdateInstalledPackageInput>;\n}\n\nconst INSTALL_PACKAGE_FIELDS = fieldsOf<InstallPackageInput>({\n bindings: true,\n metadata: true,\n mode: true,\n packageId: true,\n pinnedByEnv: true,\n version: true,\n workspaceId: true,\n});\n\nconst UPDATE_INSTALLED_FIELDS = fieldsOf<UpdateInstalledPackageInput>({\n bindings: true,\n installedVersion: true,\n metadata: true,\n mode: true,\n pinnedByEnv: true,\n});\n\nconst FORK_PACKAGE_FIELDS = fieldsOf<ForkInstalledPackageInput>({\n installedPackageId: true,\n metadata: true,\n newName: true,\n workspaceId: true,\n});\n\nexport interface PinPackageVersionVariables {\n installedId: string;\n environment: string;\n version: string;\n /** Existing pins — passed through so pinning one environment never drops the others. */\n pinnedByEnv?: Record<string, unknown> | null;\n}\n\n/** `ForkInstalledPackageInput` minus the `workspaceId` the hook supplies. */\nexport type ForkPackageVariables = Omit<GraphQLInput<ForkInstalledPackageInput>, 'workspaceId'>;\n\n/** An installed package whose store listing has moved on to a newer version. */\nexport interface OutdatedPackage {\n installed: InstalledPackageRecord;\n installedVersion: string;\n latestVersion: string;\n}\n\nconst NO_PACKAGES: StorePackageRecord[] = [];\nconst NO_INSTALLED: InstalledPackageRecord[] = [];\nconst NO_OUTDATED: OutdatedPackage[] = [];\n\nfunction manifestSection(\n pkg: Pick<StorePackageRecord, 'manifest'> | null | undefined,\n key: string\n): Record<string, unknown> | undefined {\n const section = pkg?.manifest?.[key];\n return section && typeof section === 'object' && !Array.isArray(section)\n ? (section as Record<string, unknown>)\n : undefined;\n}\n\nfunction manifestString(\n pkg: Pick<StorePackageRecord, 'manifest'> | null | undefined,\n key: string\n): string | undefined {\n const value = manifestSection(pkg, 'package')?.[key];\n return typeof value === 'string' ? value : undefined;\n}\n\n/** Display name from the package manifest, falling back to the slug. */\nexport function storePackageName(\n pkg: Pick<StorePackageRecord, 'manifest' | 'slug'> | null | undefined\n): string {\n return manifestString(pkg, 'name') ?? pkg?.slug ?? '';\n}\n\nexport function storePackageDescription(\n pkg: Pick<StorePackageRecord, 'manifest'> | null | undefined\n): string | undefined {\n return manifestString(pkg, 'description');\n}\n\nfunction selectPackages(data: ListStorePackagesQuery | undefined): StorePackageRecord[] {\n return data?.listStorePackages ?? NO_PACKAGES;\n}\n\nfunction selectInstalled(data: ListInstalledPackagesQuery | undefined): InstalledPackageRecord[] {\n return data?.listInstalledPackages ?? NO_INSTALLED;\n}\n\nexport const storeKeys = {\n all: ['store'] as const,\n packages: () => [...storeKeys.all, 'packages'] as const,\n packageList: (filter?: StoreFilter) => [...storeKeys.packages(), 'list', filter] as const,\n packageDetail: (slug: string) => [...storeKeys.packages(), 'detail', slug] as const,\n installed: () => [...storeKeys.all, 'installed'] as const,\n installedList: () => [...storeKeys.installed(), 'list'] as const,\n installedDetail: (id: string) => [...storeKeys.installed(), 'detail', id] as const,\n};\n\nexport function useStorePackages(filter?: StoreFilter): QueryResult<StorePackageRecord[]> {\n const search = filter?.search?.trim() ?? '';\n const kind = filter?.kind?.[0];\n const sortBy = filter?.sortBy ?? 'recent';\n\n const variables = useMemo(\n () => ({\n filters: { search: search || undefined, kind },\n pagination: { limit: LIST_LIMIT, offset: 0 },\n }),\n [search, kind]\n );\n\n const select = useCallback(\n (data: ListStorePackagesQuery | undefined): StorePackageRecord[] => {\n const rows = selectPackages(data);\n if (rows.length === 0) return rows;\n const sorted = [...rows];\n if (sortBy === 'name') {\n sorted.sort((a, b) => storePackageName(a).localeCompare(storePackageName(b)));\n } else {\n sorted.sort((a, b) => (b.publishedAt ?? '').localeCompare(a.publishedAt ?? ''));\n }\n return sorted;\n },\n [sortBy]\n );\n\n return useWorkspaceQuery<ListStorePackagesQuery, StorePackageRecord[]>({\n document: ListStorePackagesDocument,\n variables,\n select,\n fallback: NO_PACKAGES,\n // The store catalogue is workspace-independent.\n enabled: true,\n errorMessage: 'Failed to load store packages',\n });\n}\n\n/** Store packages are addressed by slug in the UI, so this resolves by slug. */\nexport function useStorePackage(slug: string | undefined): QueryResult<StorePackageRecord | null> {\n const variables = useMemo(() => ({ slug: slug ?? '' }), [slug]);\n\n return useWorkspaceQuery<GetStorePackageBySlugQuery, StorePackageRecord | null>({\n document: GetStorePackageBySlugDocument,\n variables,\n select: (data) => data?.getStorePackageBySlug ?? null,\n fallback: null,\n enabled: Boolean(slug),\n errorMessage: 'Failed to load store package',\n });\n}\n\nexport function useInstalledPackages(): QueryResult<InstalledPackageRecord[]> {\n const workspaceId = useWorkspaceId();\n\n const variables = useMemo(\n () => ({\n filters: { workspaceId: workspaceId ?? '' },\n pagination: { limit: LIST_LIMIT, offset: 0 },\n }),\n [workspaceId]\n );\n\n return useWorkspaceQuery<ListInstalledPackagesQuery, InstalledPackageRecord[]>({\n document: ListInstalledPackagesDocument,\n variables,\n select: selectInstalled,\n fallback: NO_INSTALLED,\n enabled: Boolean(workspaceId),\n errorMessage: 'Failed to load installed packages',\n });\n}\n\nexport function useInstalledPackage(\n packageId: string | undefined\n): QueryResult<InstalledPackageRecord | null> {\n const variables = useMemo(() => ({ id: packageId ?? '' }), [packageId]);\n\n return useWorkspaceQuery<GetInstalledPackageQuery, InstalledPackageRecord | null>({\n document: GetInstalledPackageDocument,\n variables,\n select: (data) => data?.getInstalledPackage ?? null,\n fallback: null,\n enabled: Boolean(packageId),\n errorMessage: 'Failed to load installed package',\n });\n}\n\n/**\n * Installed packages whose store listing now publishes a different version.\n * Derived from the store package returned alongside each install — the service\n * has no dedicated \"check for updates\" operation.\n */\nexport function useCheckPackageUpdates(): QueryResult<OutdatedPackage[]> {\n const workspaceId = useWorkspaceId();\n\n const variables = useMemo(\n () => ({\n filters: { workspaceId: workspaceId ?? '' },\n pagination: { limit: LIST_LIMIT, offset: 0 },\n }),\n [workspaceId]\n );\n\n const select = useCallback((data: ListInstalledPackagesQuery | undefined): OutdatedPackage[] => {\n const rows = selectInstalled(data);\n const outdated: OutdatedPackage[] = [];\n for (const installed of rows) {\n const latestVersion = installed.package?.version;\n if (latestVersion && latestVersion !== installed.installedVersion) {\n outdated.push({ installed, installedVersion: installed.installedVersion, latestVersion });\n }\n }\n return outdated;\n }, []);\n\n return useWorkspaceQuery<ListInstalledPackagesQuery, OutdatedPackage[]>({\n document: ListInstalledPackagesDocument,\n variables,\n select,\n fallback: NO_OUTDATED,\n enabled: Boolean(workspaceId),\n errorMessage: 'Failed to check for package updates',\n });\n}\n\nexport function useInstallPackage() {\n const workspaceId = useWorkspaceId();\n\n const variables = useCallback(\n (input: InstallPackageVariables) => ({\n input: buildMutationInput({ ...input, workspaceId }, INSTALL_PACKAGE_FIELDS),\n }),\n [workspaceId]\n );\n\n const [install, state] = useWorkspaceMutation<\n InstallPackageMutation,\n InstallPackageVariables,\n InstalledPackageRecord\n >({\n document: InstallPackageDocument,\n variables,\n select: (data) => data?.installPackage,\n errorMessage: 'Failed to install package',\n });\n\n return { install, loading: state.loading, error: state.error };\n}\n\nexport function useUpdateInstalledPackage() {\n const [update, state] = useWorkspaceMutation<\n UpdateInstalledPackageMutation,\n UpdateInstalledPackageVariables,\n InstalledPackageRecord\n >({\n document: UpdateInstalledPackageDocument,\n variables: ({ installedId, input }) => ({\n id: installedId,\n input: buildMutationInput(input, UPDATE_INSTALLED_FIELDS),\n }),\n select: (data) => data?.updateInstalledPackage,\n errorMessage: 'Failed to update installed package',\n });\n\n return { update, loading: state.loading, error: state.error };\n}\n\nexport function useUninstallPackage() {\n const [uninstall, state] = useWorkspaceMutation<UninstallPackageMutation, string, boolean>({\n document: UninstallPackageDocument,\n variables: (installedId) => ({ id: installedId }),\n select: (data) => data?.uninstallPackage,\n errorMessage: 'Failed to uninstall package',\n });\n\n return { uninstall, loading: state.loading, error: state.error };\n}\n\n/**\n * Pins one environment to a version. Implemented as a targeted merge into\n * `pinnedByEnv` via `updateInstalledPackage` — the service has no dedicated pin\n * mutation, and replacing the whole map would drop the other environments.\n */\nexport function usePinPackageVersion() {\n const [update, state] = useWorkspaceMutation<\n UpdateInstalledPackageMutation,\n PinPackageVersionVariables,\n InstalledPackageRecord\n >({\n document: UpdateInstalledPackageDocument,\n variables: ({ installedId, environment, version, pinnedByEnv }) => ({\n id: installedId,\n input: { pinnedByEnv: { ...(pinnedByEnv ?? {}), [environment]: version } },\n }),\n select: (data) => data?.updateInstalledPackage,\n errorMessage: 'Failed to pin package version',\n });\n\n return { pin: update, loading: state.loading, error: state.error };\n}\n\nexport function useForkPackage() {\n const workspaceId = useWorkspaceId();\n\n const variables = useCallback(\n (input: ForkPackageVariables) => ({\n input: buildMutationInput({ ...input, workspaceId }, FORK_PACKAGE_FIELDS),\n }),\n [workspaceId]\n );\n\n const [fork, state] = useWorkspaceMutation<\n ForkInstalledPackageMutation,\n ForkPackageVariables,\n InstalledPackageRecord\n >({\n document: ForkInstalledPackageDocument,\n variables,\n select: (data) => data?.forkInstalledPackage,\n errorMessage: 'Failed to fork package',\n });\n\n return { fork, loading: state.loading, error: state.error };\n}\n"],"mappings":"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"}