@stigmer/react 3.1.17 → 3.2.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 (832) hide show
  1. package/agent-instance/AgentInstanceList.d.ts.map +1 -1
  2. package/agent-instance/AgentInstanceList.js +11 -3
  3. package/agent-instance/AgentInstanceList.js.map +1 -1
  4. package/channel/AgentChannelsPanel.d.ts +60 -0
  5. package/channel/AgentChannelsPanel.d.ts.map +1 -0
  6. package/channel/AgentChannelsPanel.js +255 -0
  7. package/channel/AgentChannelsPanel.js.map +1 -0
  8. package/channel/ChannelConversationsDialog.d.ts +41 -0
  9. package/channel/ChannelConversationsDialog.d.ts.map +1 -0
  10. package/channel/ChannelConversationsDialog.js +94 -0
  11. package/channel/ChannelConversationsDialog.js.map +1 -0
  12. package/channel/ChannelCredentialsDialog.d.ts +37 -0
  13. package/channel/ChannelCredentialsDialog.d.ts.map +1 -0
  14. package/channel/ChannelCredentialsDialog.js +75 -0
  15. package/channel/ChannelCredentialsDialog.js.map +1 -0
  16. package/channel/ChannelToolCredentials.d.ts +31 -0
  17. package/channel/ChannelToolCredentials.d.ts.map +1 -0
  18. package/channel/ChannelToolCredentials.js +41 -0
  19. package/channel/ChannelToolCredentials.js.map +1 -0
  20. package/channel/ConnectSlackDialog.d.ts +61 -0
  21. package/channel/ConnectSlackDialog.d.ts.map +1 -0
  22. package/channel/ConnectSlackDialog.js +238 -0
  23. package/channel/ConnectSlackDialog.js.map +1 -0
  24. package/channel/ConnectWhatsAppDialog.d.ts +70 -0
  25. package/channel/ConnectWhatsAppDialog.d.ts.map +1 -0
  26. package/channel/ConnectWhatsAppDialog.js +256 -0
  27. package/channel/ConnectWhatsAppDialog.js.map +1 -0
  28. package/channel/SlackMarkIcon.d.ts +11 -0
  29. package/channel/SlackMarkIcon.d.ts.map +1 -0
  30. package/channel/SlackMarkIcon.js +13 -0
  31. package/channel/SlackMarkIcon.js.map +1 -0
  32. package/channel/WhatsAppMarkIcon.d.ts +12 -0
  33. package/channel/WhatsAppMarkIcon.d.ts.map +1 -0
  34. package/channel/WhatsAppMarkIcon.js +14 -0
  35. package/channel/WhatsAppMarkIcon.js.map +1 -0
  36. package/channel/connect/ServingAppSection.d.ts +57 -0
  37. package/channel/connect/ServingAppSection.d.ts.map +1 -0
  38. package/channel/connect/ServingAppSection.js +49 -0
  39. package/channel/connect/ServingAppSection.js.map +1 -0
  40. package/channel/connect/ToolCredentialsSection.d.ts +20 -0
  41. package/channel/connect/ToolCredentialsSection.d.ts.map +1 -0
  42. package/channel/connect/ToolCredentialsSection.js +22 -0
  43. package/channel/connect/ToolCredentialsSection.js.map +1 -0
  44. package/channel/connect/VerbatimRefusal.d.ts +16 -0
  45. package/channel/connect/VerbatimRefusal.d.ts.map +1 -0
  46. package/channel/connect/VerbatimRefusal.js +18 -0
  47. package/channel/connect/VerbatimRefusal.js.map +1 -0
  48. package/channel/connect/icons.d.ts +16 -0
  49. package/channel/connect/icons.d.ts.map +1 -0
  50. package/channel/connect/icons.js +21 -0
  51. package/channel/connect/icons.js.map +1 -0
  52. package/channel/index.d.ts +36 -0
  53. package/channel/index.d.ts.map +1 -0
  54. package/channel/index.js +19 -0
  55. package/channel/index.js.map +1 -0
  56. package/channel/providerPresentation.d.ts +44 -0
  57. package/channel/providerPresentation.d.ts.map +1 -0
  58. package/channel/providerPresentation.js +106 -0
  59. package/channel/providerPresentation.js.map +1 -0
  60. package/channel/providers.d.ts +62 -0
  61. package/channel/providers.d.ts.map +1 -0
  62. package/channel/providers.js +26 -0
  63. package/channel/providers.js.map +1 -0
  64. package/channel/useAgentChannel.d.ts +31 -0
  65. package/channel/useAgentChannel.d.ts.map +1 -0
  66. package/channel/useAgentChannel.js +34 -0
  67. package/channel/useAgentChannel.js.map +1 -0
  68. package/channel/useAgentChannelList.d.ts +43 -0
  69. package/channel/useAgentChannelList.d.ts.map +1 -0
  70. package/channel/useAgentChannelList.js +39 -0
  71. package/channel/useAgentChannelList.js.map +1 -0
  72. package/channel/useChannelSessions.d.ts +47 -0
  73. package/channel/useChannelSessions.d.ts.map +1 -0
  74. package/channel/useChannelSessions.js +38 -0
  75. package/channel/useChannelSessions.js.map +1 -0
  76. package/channel/useChannelToolReadiness.d.ts +23 -0
  77. package/channel/useChannelToolReadiness.d.ts.map +1 -0
  78. package/channel/useChannelToolReadiness.js +28 -0
  79. package/channel/useChannelToolReadiness.js.map +1 -0
  80. package/channel/useConnectSlackChannel.d.ts +75 -0
  81. package/channel/useConnectSlackChannel.d.ts.map +1 -0
  82. package/channel/useConnectSlackChannel.js +115 -0
  83. package/channel/useConnectSlackChannel.js.map +1 -0
  84. package/channel/useCreateAgentChannel.d.ts +42 -0
  85. package/channel/useCreateAgentChannel.d.ts.map +1 -0
  86. package/channel/useCreateAgentChannel.js +48 -0
  87. package/channel/useCreateAgentChannel.js.map +1 -0
  88. package/channel/useDeleteAgentChannel.d.ts +40 -0
  89. package/channel/useDeleteAgentChannel.d.ts.map +1 -0
  90. package/channel/useDeleteAgentChannel.js +44 -0
  91. package/channel/useDeleteAgentChannel.js.map +1 -0
  92. package/channel/useInstallChannel.d.ts +60 -0
  93. package/channel/useInstallChannel.d.ts.map +1 -0
  94. package/channel/useInstallChannel.js +63 -0
  95. package/channel/useInstallChannel.js.map +1 -0
  96. package/channel/useOrgAgentChannelList.d.ts +32 -0
  97. package/channel/useOrgAgentChannelList.d.ts.map +1 -0
  98. package/channel/useOrgAgentChannelList.js +29 -0
  99. package/channel/useOrgAgentChannelList.js.map +1 -0
  100. package/channel/useSaveAgentChannel.d.ts +63 -0
  101. package/channel/useSaveAgentChannel.d.ts.map +1 -0
  102. package/channel/useSaveAgentChannel.js +104 -0
  103. package/channel/useSaveAgentChannel.js.map +1 -0
  104. package/channel-app/ChannelAppDetailPanel.d.ts +46 -0
  105. package/channel-app/ChannelAppDetailPanel.d.ts.map +1 -0
  106. package/channel-app/ChannelAppDetailPanel.js +142 -0
  107. package/channel-app/ChannelAppDetailPanel.js.map +1 -0
  108. package/channel-app/ChannelAppListPanel.d.ts +36 -0
  109. package/channel-app/ChannelAppListPanel.d.ts.map +1 -0
  110. package/channel-app/ChannelAppListPanel.js +63 -0
  111. package/channel-app/ChannelAppListPanel.js.map +1 -0
  112. package/channel-app/CreateChannelAppForm.d.ts +54 -0
  113. package/channel-app/CreateChannelAppForm.d.ts.map +1 -0
  114. package/channel-app/CreateChannelAppForm.js +140 -0
  115. package/channel-app/CreateChannelAppForm.js.map +1 -0
  116. package/channel-app/index.d.ts +18 -0
  117. package/channel-app/index.d.ts.map +1 -0
  118. package/channel-app/index.js +10 -0
  119. package/channel-app/index.js.map +1 -0
  120. package/channel-app/internal.d.ts +33 -0
  121. package/channel-app/internal.d.ts.map +1 -0
  122. package/channel-app/internal.js +44 -0
  123. package/channel-app/internal.js.map +1 -0
  124. package/channel-app/slackAppSetup.d.ts +80 -0
  125. package/channel-app/slackAppSetup.d.ts.map +1 -0
  126. package/channel-app/slackAppSetup.js +123 -0
  127. package/channel-app/slackAppSetup.js.map +1 -0
  128. package/channel-app/useChannelAppList.d.ts +35 -0
  129. package/channel-app/useChannelAppList.d.ts.map +1 -0
  130. package/channel-app/useChannelAppList.js +34 -0
  131. package/channel-app/useChannelAppList.js.map +1 -0
  132. package/channel-app/useCreateChannelApp.d.ts +39 -0
  133. package/channel-app/useCreateChannelApp.d.ts.map +1 -0
  134. package/channel-app/useCreateChannelApp.js +50 -0
  135. package/channel-app/useCreateChannelApp.js.map +1 -0
  136. package/channel-app/useDeleteChannelApp.d.ts +31 -0
  137. package/channel-app/useDeleteChannelApp.d.ts.map +1 -0
  138. package/channel-app/useDeleteChannelApp.js +43 -0
  139. package/channel-app/useDeleteChannelApp.js.map +1 -0
  140. package/channel-app/useUpdateChannelApp.d.ts +39 -0
  141. package/channel-app/useUpdateChannelApp.d.ts.map +1 -0
  142. package/channel-app/useUpdateChannelApp.js +50 -0
  143. package/channel-app/useUpdateChannelApp.js.map +1 -0
  144. package/channel-app/whatsappAppSetup.d.ts +51 -0
  145. package/channel-app/whatsappAppSetup.d.ts.map +1 -0
  146. package/channel-app/whatsappAppSetup.js +57 -0
  147. package/channel-app/whatsappAppSetup.js.map +1 -0
  148. package/environment/index.d.ts +2 -0
  149. package/environment/index.d.ts.map +1 -1
  150. package/environment/index.js +1 -0
  151. package/environment/index.js.map +1 -1
  152. package/environment/useToolCredentialsReadiness.d.ts +52 -0
  153. package/environment/useToolCredentialsReadiness.d.ts.map +1 -0
  154. package/environment/useToolCredentialsReadiness.js +84 -0
  155. package/environment/useToolCredentialsReadiness.js.map +1 -0
  156. package/execution/ArtifactContentBody.d.ts.map +1 -1
  157. package/execution/ArtifactContentBody.js +5 -21
  158. package/execution/ArtifactContentBody.js.map +1 -1
  159. package/execution/ArtifactFileContent.d.ts +28 -0
  160. package/execution/ArtifactFileContent.d.ts.map +1 -0
  161. package/execution/ArtifactFileContent.js +36 -0
  162. package/execution/ArtifactFileContent.js.map +1 -0
  163. package/execution/ArtifactRow.d.ts +8 -20
  164. package/execution/ArtifactRow.d.ts.map +1 -1
  165. package/execution/ArtifactRow.js +12 -45
  166. package/execution/ArtifactRow.js.map +1 -1
  167. package/execution/ArtifactRowView.d.ts +43 -0
  168. package/execution/ArtifactRowView.d.ts.map +1 -0
  169. package/execution/ArtifactRowView.js +35 -0
  170. package/execution/ArtifactRowView.js.map +1 -0
  171. package/execution/FileChangesView.d.ts.map +1 -1
  172. package/execution/FileChangesView.js +1 -61
  173. package/execution/FileChangesView.js.map +1 -1
  174. package/execution/SubAgentSection.d.ts.map +1 -1
  175. package/execution/SubAgentSection.js +4 -15
  176. package/execution/SubAgentSection.js.map +1 -1
  177. package/execution/ToolCallItem.d.ts.map +1 -1
  178. package/execution/ToolCallItem.js +16 -61
  179. package/execution/ToolCallItem.js.map +1 -1
  180. package/execution/agent-execution-document.d.ts +31 -0
  181. package/execution/agent-execution-document.d.ts.map +1 -0
  182. package/execution/agent-execution-document.js +48 -0
  183. package/execution/agent-execution-document.js.map +1 -0
  184. package/{session → execution}/artifact-document.d.ts +2 -3
  185. package/execution/artifact-document.d.ts.map +1 -0
  186. package/execution/artifact-document.js +23 -0
  187. package/execution/artifact-document.js.map +1 -0
  188. package/execution/artifact-row-item.d.ts +56 -0
  189. package/execution/artifact-row-item.d.ts.map +1 -0
  190. package/execution/artifact-row-item.js +57 -0
  191. package/execution/artifact-row-item.js.map +1 -0
  192. package/execution/deriveExecutionFileChanges.d.ts +55 -0
  193. package/execution/deriveExecutionFileChanges.d.ts.map +1 -0
  194. package/execution/deriveExecutionFileChanges.js +216 -0
  195. package/execution/deriveExecutionFileChanges.js.map +1 -0
  196. package/execution/file-change-document.d.ts +22 -0
  197. package/execution/file-change-document.d.ts.map +1 -0
  198. package/execution/file-change-document.js +34 -0
  199. package/execution/file-change-document.js.map +1 -0
  200. package/execution/index.d.ts +14 -0
  201. package/execution/index.d.ts.map +1 -1
  202. package/execution/index.js +9 -0
  203. package/execution/index.js.map +1 -1
  204. package/execution/useArtifactContentById.d.ts +61 -0
  205. package/execution/useArtifactContentById.d.ts.map +1 -0
  206. package/execution/useArtifactContentById.js +63 -0
  207. package/execution/useArtifactContentById.js.map +1 -0
  208. package/execution/useArtifactDownload.d.ts +4 -3
  209. package/execution/useArtifactDownload.d.ts.map +1 -1
  210. package/execution/useArtifactDownload.js +4 -3
  211. package/execution/useArtifactDownload.js.map +1 -1
  212. package/execution/useCreateAgentExecution.d.ts +1 -1
  213. package/execution/useLiveAgentExecution.d.ts +59 -0
  214. package/execution/useLiveAgentExecution.d.ts.map +1 -0
  215. package/execution/useLiveAgentExecution.js +73 -0
  216. package/execution/useLiveAgentExecution.js.map +1 -0
  217. package/index.d.ts +15 -10
  218. package/index.d.ts.map +1 -1
  219. package/index.js +21 -6
  220. package/index.js.map +1 -1
  221. package/internal/DecisionButton.d.ts +4 -3
  222. package/internal/DecisionButton.d.ts.map +1 -1
  223. package/internal/DecisionButton.js +4 -3
  224. package/internal/DecisionButton.js.map +1 -1
  225. package/internal/oauthPopup.d.ts +101 -0
  226. package/internal/oauthPopup.d.ts.map +1 -0
  227. package/internal/oauthPopup.js +208 -0
  228. package/internal/oauthPopup.js.map +1 -0
  229. package/internal/store/index.d.ts +0 -2
  230. package/internal/store/index.d.ts.map +1 -1
  231. package/internal/store/index.js +0 -1
  232. package/internal/store/index.js.map +1 -1
  233. package/internal/store/workflow-execution-event-store.d.ts +34 -1
  234. package/internal/store/workflow-execution-event-store.d.ts.map +1 -1
  235. package/internal/store/workflow-execution-event-store.js +81 -3
  236. package/internal/store/workflow-execution-event-store.js.map +1 -1
  237. package/internal/store/workspace-file-selection-store.d.ts +1 -2
  238. package/internal/store/workspace-file-selection-store.d.ts.map +1 -1
  239. package/internal/store/workspace-file-selection-store.js +2 -5
  240. package/internal/store/workspace-file-selection-store.js.map +1 -1
  241. package/internal/thread-card/ThreadCardShell.d.ts +91 -0
  242. package/internal/thread-card/ThreadCardShell.d.ts.map +1 -0
  243. package/internal/thread-card/ThreadCardShell.js +41 -0
  244. package/internal/thread-card/ThreadCardShell.js.map +1 -0
  245. package/internal/thread-card/glyphs.d.ts +34 -0
  246. package/internal/thread-card/glyphs.d.ts.map +1 -0
  247. package/internal/thread-card/glyphs.js +50 -0
  248. package/internal/thread-card/glyphs.js.map +1 -0
  249. package/internal/thread-card/index.d.ts +3 -0
  250. package/internal/thread-card/index.d.ts.map +1 -0
  251. package/internal/thread-card/index.js +3 -0
  252. package/internal/thread-card/index.js.map +1 -0
  253. package/internal/useRevealLine.d.ts +2 -2
  254. package/internal/useRevealLine.js +2 -2
  255. package/mcp-server/OAuthCallbackHandler.js +1 -1
  256. package/mcp-server/OAuthCallbackHandler.js.map +1 -1
  257. package/mcp-server/useMcpServerOAuthConnect.d.ts +4 -23
  258. package/mcp-server/useMcpServerOAuthConnect.d.ts.map +1 -1
  259. package/mcp-server/useMcpServerOAuthConnect.js +12 -145
  260. package/mcp-server/useMcpServerOAuthConnect.js.map +1 -1
  261. package/package.json +4 -4
  262. package/session/NewSessionViewer.d.ts.map +1 -1
  263. package/session/NewSessionViewer.js +0 -1
  264. package/session/NewSessionViewer.js.map +1 -1
  265. package/session/SessionPanelChip.d.ts +7 -22
  266. package/session/SessionPanelChip.d.ts.map +1 -1
  267. package/session/SessionPanelChip.js +8 -36
  268. package/session/SessionPanelChip.js.map +1 -1
  269. package/session/SessionViewer.d.ts +7 -4
  270. package/session/SessionViewer.d.ts.map +1 -1
  271. package/session/SessionViewer.js +32 -30
  272. package/session/SessionViewer.js.map +1 -1
  273. package/session/audience.d.ts +15 -1
  274. package/session/audience.d.ts.map +1 -1
  275. package/session/channelOrigin.d.ts +33 -0
  276. package/session/channelOrigin.d.ts.map +1 -0
  277. package/session/channelOrigin.js +36 -0
  278. package/session/channelOrigin.js.map +1 -0
  279. package/session/facets/index.d.ts +0 -2
  280. package/session/facets/index.d.ts.map +1 -1
  281. package/session/facets/index.js +0 -1
  282. package/session/facets/index.js.map +1 -1
  283. package/session/index.d.ts +2 -2
  284. package/session/index.d.ts.map +1 -1
  285. package/session/index.js +5 -3
  286. package/session/index.js.map +1 -1
  287. package/session/useNewSessionFlow.d.ts +4 -0
  288. package/session/useNewSessionFlow.d.ts.map +1 -1
  289. package/session/useNewSessionFlow.js +33 -4
  290. package/session/useNewSessionFlow.js.map +1 -1
  291. package/session/usePersistedModel.d.ts +11 -0
  292. package/session/usePersistedModel.d.ts.map +1 -1
  293. package/session/usePersistedModel.js +14 -3
  294. package/session/usePersistedModel.js.map +1 -1
  295. package/session/useSessionFileChanges.d.ts +10 -34
  296. package/session/useSessionFileChanges.d.ts.map +1 -1
  297. package/session/useSessionFileChanges.js +9 -141
  298. package/session/useSessionFileChanges.js.map +1 -1
  299. package/session/useSessionPageFlow.d.ts.map +1 -1
  300. package/session/useSessionPageFlow.js +12 -1
  301. package/session/useSessionPageFlow.js.map +1 -1
  302. package/session/useSessionPanel.d.ts +5 -15
  303. package/session/useSessionPanel.d.ts.map +1 -1
  304. package/session/useSessionPanel.js +3 -35
  305. package/session/useSessionPanel.js.map +1 -1
  306. package/session/useSessionRailViews.d.ts +3 -6
  307. package/session/useSessionRailViews.d.ts.map +1 -1
  308. package/session/useSessionRailViews.js +3 -17
  309. package/session/useSessionRailViews.js.map +1 -1
  310. package/settings/ChannelAppsSection.d.ts +13 -0
  311. package/settings/ChannelAppsSection.d.ts.map +1 -0
  312. package/settings/ChannelAppsSection.js +48 -0
  313. package/settings/ChannelAppsSection.js.map +1 -0
  314. package/settings/index.d.ts +1 -0
  315. package/settings/index.d.ts.map +1 -1
  316. package/settings/index.js +1 -0
  317. package/settings/index.js.map +1 -1
  318. package/settings/settings-nav.d.ts.map +1 -1
  319. package/settings/settings-nav.js +6 -1
  320. package/settings/settings-nav.js.map +1 -1
  321. package/sharing/AgentShareList.d.ts.map +1 -1
  322. package/sharing/AgentShareList.js +11 -3
  323. package/sharing/AgentShareList.js.map +1 -1
  324. package/sharing/ShareAgentDialog.js +1 -1
  325. package/sharing/useShareToolReadiness.d.ts +9 -38
  326. package/sharing/useShareToolReadiness.d.ts.map +1 -1
  327. package/sharing/useShareToolReadiness.js +7 -72
  328. package/sharing/useShareToolReadiness.js.map +1 -1
  329. package/src/agent-instance/AgentInstanceList.tsx +60 -42
  330. package/src/agent-instance/__tests__/AgentInstanceList.test.tsx +161 -0
  331. package/src/channel/AgentChannelsPanel.tsx +688 -0
  332. package/src/channel/ChannelConversationsDialog.tsx +267 -0
  333. package/src/channel/ChannelCredentialsDialog.tsx +219 -0
  334. package/src/channel/ChannelToolCredentials.tsx +124 -0
  335. package/src/channel/ConnectSlackDialog.tsx +611 -0
  336. package/src/channel/ConnectWhatsAppDialog.tsx +624 -0
  337. package/src/channel/SlackMarkIcon.tsx +21 -0
  338. package/src/channel/WhatsAppMarkIcon.tsx +22 -0
  339. package/src/channel/__tests__/AgentChannelsPanel.test.tsx +638 -0
  340. package/src/channel/__tests__/ChannelConversationsDialog.test.tsx +114 -0
  341. package/src/channel/__tests__/ChannelCredentialsDialog.test.tsx +240 -0
  342. package/src/channel/__tests__/ConnectSlackDialog.test.tsx +659 -0
  343. package/src/channel/__tests__/ConnectWhatsAppDialog.test.tsx +564 -0
  344. package/src/channel/__tests__/providers.test.ts +118 -0
  345. package/src/channel/__tests__/useAgentChannel.test.tsx +116 -0
  346. package/src/channel/__tests__/useAgentChannelList.test.tsx +166 -0
  347. package/src/channel/__tests__/useChannelSessions.test.tsx +95 -0
  348. package/src/channel/__tests__/useChannelToolReadiness.test.tsx +158 -0
  349. package/src/channel/__tests__/useConnectSlackChannel.test.tsx +276 -0
  350. package/src/channel/__tests__/useDeleteAgentChannel.test.tsx +97 -0
  351. package/src/channel/__tests__/useInstallChannel.test.tsx +177 -0
  352. package/src/channel/__tests__/useSaveAgentChannel.test.tsx +294 -0
  353. package/src/channel/connect/ServingAppSection.tsx +185 -0
  354. package/src/channel/connect/ToolCredentialsSection.tsx +67 -0
  355. package/src/channel/connect/VerbatimRefusal.tsx +27 -0
  356. package/src/channel/connect/icons.tsx +42 -0
  357. package/src/channel/index.ts +65 -0
  358. package/src/channel/providerPresentation.ts +154 -0
  359. package/src/channel/providers.ts +73 -0
  360. package/src/channel/useAgentChannel.ts +58 -0
  361. package/src/channel/useAgentChannelList.ts +69 -0
  362. package/src/channel/useChannelSessions.ts +73 -0
  363. package/src/channel/useChannelToolReadiness.ts +39 -0
  364. package/src/channel/useConnectSlackChannel.ts +195 -0
  365. package/src/channel/useCreateAgentChannel.ts +73 -0
  366. package/src/channel/useDeleteAgentChannel.ts +71 -0
  367. package/src/channel/useInstallChannel.ts +117 -0
  368. package/src/channel/useOrgAgentChannelList.ts +60 -0
  369. package/src/channel/useSaveAgentChannel.ts +133 -0
  370. package/src/channel-app/ChannelAppDetailPanel.tsx +510 -0
  371. package/src/channel-app/ChannelAppListPanel.tsx +201 -0
  372. package/src/channel-app/CreateChannelAppForm.tsx +529 -0
  373. package/src/channel-app/__tests__/channelAppWhatsApp.test.tsx +270 -0
  374. package/src/channel-app/__tests__/slackAppSetup.test.ts +75 -0
  375. package/src/channel-app/__tests__/useChannelAppHooks.test.tsx +157 -0
  376. package/src/channel-app/__tests__/whatsappAppSetup.test.ts +39 -0
  377. package/src/channel-app/index.ts +30 -0
  378. package/src/channel-app/internal.tsx +180 -0
  379. package/src/channel-app/slackAppSetup.ts +153 -0
  380. package/src/channel-app/useChannelAppList.ts +59 -0
  381. package/src/channel-app/useCreateChannelApp.ts +70 -0
  382. package/src/channel-app/useDeleteChannelApp.ts +62 -0
  383. package/src/channel-app/useUpdateChannelApp.ts +70 -0
  384. package/src/channel-app/whatsappAppSetup.ts +62 -0
  385. package/src/environment/index.ts +2 -0
  386. package/src/environment/useToolCredentialsReadiness.ts +122 -0
  387. package/src/execution/ArtifactContentBody.tsx +6 -88
  388. package/src/execution/ArtifactFileContent.tsx +110 -0
  389. package/src/execution/ArtifactRow.tsx +28 -118
  390. package/src/execution/ArtifactRowView.tsx +137 -0
  391. package/src/execution/FileChangesView.tsx +4 -69
  392. package/src/execution/SubAgentSection.tsx +2 -36
  393. package/src/execution/ToolCallItem.tsx +48 -175
  394. package/src/execution/__tests__/ArtifactFileContent.test.tsx +60 -0
  395. package/src/execution/__tests__/ArtifactRowView.test.tsx +78 -0
  396. package/src/execution/__tests__/agent-execution-document.test.ts +45 -0
  397. package/src/execution/__tests__/artifact-row-item.test.ts +128 -0
  398. package/src/execution/__tests__/deriveExecutionFileChanges.test.ts +270 -0
  399. package/src/execution/__tests__/useArtifactContentById.test.tsx +85 -0
  400. package/src/execution/__tests__/useLiveAgentExecution.test.tsx +202 -0
  401. package/src/execution/agent-execution-document.ts +54 -0
  402. package/src/execution/artifact-document.ts +24 -0
  403. package/src/execution/artifact-row-item.ts +97 -0
  404. package/src/execution/deriveExecutionFileChanges.ts +237 -0
  405. package/src/execution/file-change-document.ts +37 -0
  406. package/src/execution/index.ts +36 -0
  407. package/src/execution/useArtifactContentById.ts +120 -0
  408. package/src/execution/useArtifactDownload.ts +4 -3
  409. package/src/execution/useCreateAgentExecution.ts +1 -1
  410. package/src/execution/useLiveAgentExecution.ts +127 -0
  411. package/src/index.ts +155 -11
  412. package/src/internal/DecisionButton.tsx +4 -3
  413. package/src/internal/__tests__/ThreadCardShell.test.tsx +105 -0
  414. package/src/internal/__tests__/oauthPopup.test.ts +245 -0
  415. package/src/internal/oauthPopup.ts +261 -0
  416. package/src/internal/store/__tests__/workflow-execution-event-store.test.ts +375 -5
  417. package/src/internal/store/index.ts +0 -3
  418. package/src/internal/store/workflow-execution-event-store.ts +123 -4
  419. package/src/internal/store/workspace-file-selection-store.ts +2 -5
  420. package/src/internal/thread-card/ThreadCardShell.tsx +189 -0
  421. package/src/internal/thread-card/glyphs.tsx +108 -0
  422. package/src/internal/thread-card/index.ts +19 -0
  423. package/src/internal/useRevealLine.ts +2 -2
  424. package/src/mcp-server/OAuthCallbackHandler.tsx +2 -2
  425. package/src/mcp-server/useMcpServerOAuthConnect.ts +22 -184
  426. package/src/session/NewSessionViewer.tsx +0 -1
  427. package/src/session/SessionPanelChip.tsx +10 -96
  428. package/src/session/SessionViewer.tsx +170 -144
  429. package/src/session/__tests__/SessionViewer-artifactTabs.test.tsx +1 -1
  430. package/src/session/__tests__/observerAudience.test.tsx +241 -0
  431. package/src/session/__tests__/useNewSessionFlow.test.tsx +64 -0
  432. package/src/session/__tests__/usePersistedModel.test.tsx +36 -0
  433. package/src/session/__tests__/useSessionPageFlow.guest.test.tsx +48 -1
  434. package/src/session/__tests__/useSessionPanel.test.ts +6 -61
  435. package/src/session/__tests__/useSessionRailViews.test.tsx +5 -27
  436. package/src/session/audience.ts +15 -1
  437. package/src/session/channelOrigin.ts +45 -0
  438. package/src/session/facets/index.ts +0 -3
  439. package/src/session/index.ts +9 -6
  440. package/src/session/useNewSessionFlow.ts +35 -4
  441. package/src/session/usePersistedModel.ts +25 -3
  442. package/src/session/useSessionFileChanges.ts +12 -153
  443. package/src/session/useSessionPageFlow.ts +13 -2
  444. package/src/session/useSessionPanel.ts +8 -51
  445. package/src/session/useSessionRailViews.tsx +2 -27
  446. package/src/settings/ChannelAppsSection.tsx +133 -0
  447. package/src/settings/index.ts +1 -0
  448. package/src/settings/settings-nav.ts +6 -0
  449. package/src/sharing/AgentShareList.tsx +85 -64
  450. package/src/sharing/ShareAgentDialog.tsx +1 -1
  451. package/src/sharing/__tests__/AgentShareList.test.tsx +92 -12
  452. package/src/sharing/useShareToolReadiness.ts +13 -101
  453. package/src/workflow/WorkflowAgentExecutionDocument.tsx +283 -0
  454. package/src/workflow/WorkflowApprovalList.tsx +158 -0
  455. package/src/workflow/WorkflowArtifactDocument.tsx +257 -0
  456. package/src/workflow/WorkflowExecutionGraph.tsx +40 -78
  457. package/src/workflow/WorkflowExecutionViewer.tsx +610 -287
  458. package/src/workflow/WorkflowFileReviewList.tsx +1 -1
  459. package/src/workflow/WorkflowTaskApprovalCard.tsx +5 -4
  460. package/src/workflow/WorkflowTaskApprovalSummary.tsx +6 -6
  461. package/src/workflow/__tests__/WorkflowAgentExecutionDocument.test.tsx +651 -0
  462. package/src/workflow/__tests__/WorkflowApprovalList.test.tsx +229 -0
  463. package/src/workflow/__tests__/WorkflowArtifactDocument.test.tsx +90 -0
  464. package/src/workflow/__tests__/WorkflowArtifactsTab.test.tsx +85 -0
  465. package/src/workflow/__tests__/WorkflowChangesTab.test.tsx +113 -0
  466. package/src/workflow/__tests__/WorkflowExecutionViewer.approvals.test.tsx +473 -0
  467. package/src/workflow/__tests__/WorkflowExecutionViewer.reconciliation.test.tsx +632 -0
  468. package/src/workflow/__tests__/WorkflowTaskApprovalSummary.test.tsx +1 -1
  469. package/src/workflow/__tests__/WorkflowTaskThread.test.tsx +947 -0
  470. package/src/workflow/__tests__/WorkflowUsageTab.test.tsx +163 -0
  471. package/src/workflow/__tests__/agent-call-live-experience.test.ts +6 -53
  472. package/src/workflow/__tests__/derive-execution-overlays.test.ts +4 -0
  473. package/src/workflow/__tests__/deriveWorkflowArtifactItems.test.ts +71 -0
  474. package/src/workflow/__tests__/deriveWorkflowUsageItems.test.ts +132 -0
  475. package/src/workflow/__tests__/execution-graph.test.ts +8 -0
  476. package/src/workflow/__tests__/project-thread-items.test.ts +428 -0
  477. package/src/workflow/__tests__/structured-data-viewer.test.tsx +1 -1
  478. package/src/workflow/__tests__/task-approval.test.ts +149 -0
  479. package/src/workflow/__tests__/task-detail-io.test.ts +40 -0
  480. package/src/workflow/__tests__/task-presentation.test.ts +479 -0
  481. package/src/workflow/__tests__/useActiveTaskName.test.ts +4 -0
  482. package/src/workflow/__tests__/useApprovalBoundary.test.ts +158 -0
  483. package/src/workflow/__tests__/useExecutionAnnouncements.test.ts +4 -0
  484. package/src/workflow/__tests__/useFollowExecution.test.ts +2 -89
  485. package/src/workflow/__tests__/useWorkflowExecutionFileChanges.test.tsx +412 -0
  486. package/src/workflow/__tests__/useWorkflowExecutionPanel.test.ts +297 -0
  487. package/src/workflow/__tests__/useWorkflowExecutionRailViews.test.tsx +115 -0
  488. package/src/workflow/deriveWorkflowArtifactItems.ts +59 -0
  489. package/src/workflow/deriveWorkflowUsageItems.ts +73 -0
  490. package/src/workflow/diagnosis-document.ts +31 -0
  491. package/src/workflow/execution/index.ts +0 -15
  492. package/src/workflow/facets/WorkflowArtifactsTab.tsx +99 -0
  493. package/src/workflow/facets/WorkflowChangesTab.tsx +129 -0
  494. package/src/workflow/facets/WorkflowUsageTab.tsx +258 -0
  495. package/src/workflow/format-utils.ts +2 -3
  496. package/src/workflow/index.ts +106 -62
  497. package/src/workflow/inspector/index.ts +0 -4
  498. package/src/workflow/instance/WorkflowInstanceList.tsx +59 -41
  499. package/src/workflow/instance/__tests__/WorkflowInstanceList.test.tsx +156 -0
  500. package/src/workflow/task-detail/index.ts +11 -0
  501. package/src/workflow/task-detail/task-approval.ts +158 -0
  502. package/src/workflow/task-detail/task-detail-io.ts +65 -0
  503. package/src/workflow/thread/WorkflowTaskThread.tsx +845 -0
  504. package/src/workflow/thread/project-thread-items.ts +235 -0
  505. package/src/workflow/thread/task-presentation.ts +427 -0
  506. package/src/workflow/thread/thread-presentation.ts +59 -0
  507. package/src/workflow/thread/useWorkflowThreadItems.ts +34 -0
  508. package/src/workflow/useApprovalBoundary.ts +72 -0
  509. package/src/workflow/useFollowExecution.ts +0 -26
  510. package/src/workflow/useWorkflowArtifactDownload.ts +68 -0
  511. package/src/workflow/useWorkflowExecutionActions.ts +3 -2
  512. package/src/workflow/useWorkflowExecutionFileChanges.ts +341 -0
  513. package/src/workflow/useWorkflowExecutionGraph.ts +3 -43
  514. package/src/workflow/useWorkflowExecutionPanel.ts +292 -0
  515. package/src/workflow/useWorkflowExecutionRailViews.tsx +173 -0
  516. package/src/workspace/FileViewer.tsx +3 -3
  517. package/src/workspace/PanelChip.tsx +103 -0
  518. package/src/workspace/WorkspaceSurface.tsx +50 -6
  519. package/src/workspace/__tests__/WorkspaceSurface.test.tsx +110 -0
  520. package/src/workspace/index.ts +3 -0
  521. package/styles.css +1 -1
  522. package/workflow/WorkflowAgentExecutionDocument.d.ts +79 -0
  523. package/workflow/WorkflowAgentExecutionDocument.d.ts.map +1 -0
  524. package/workflow/WorkflowAgentExecutionDocument.js +87 -0
  525. package/workflow/WorkflowAgentExecutionDocument.js.map +1 -0
  526. package/workflow/WorkflowApprovalList.d.ts +62 -0
  527. package/workflow/WorkflowApprovalList.d.ts.map +1 -0
  528. package/workflow/WorkflowApprovalList.js +52 -0
  529. package/workflow/WorkflowApprovalList.js.map +1 -0
  530. package/workflow/WorkflowArtifactDocument.d.ts +29 -0
  531. package/workflow/WorkflowArtifactDocument.d.ts.map +1 -0
  532. package/workflow/WorkflowArtifactDocument.js +89 -0
  533. package/workflow/WorkflowArtifactDocument.js.map +1 -0
  534. package/workflow/WorkflowExecutionGraph.d.ts +15 -13
  535. package/workflow/WorkflowExecutionGraph.d.ts.map +1 -1
  536. package/workflow/WorkflowExecutionGraph.js +18 -53
  537. package/workflow/WorkflowExecutionGraph.js.map +1 -1
  538. package/workflow/WorkflowExecutionViewer.d.ts +8 -5
  539. package/workflow/WorkflowExecutionViewer.d.ts.map +1 -1
  540. package/workflow/WorkflowExecutionViewer.js +329 -54
  541. package/workflow/WorkflowExecutionViewer.js.map +1 -1
  542. package/workflow/WorkflowFileReviewList.d.ts +1 -1
  543. package/workflow/WorkflowFileReviewList.js +1 -1
  544. package/workflow/WorkflowTaskApprovalCard.d.ts +4 -3
  545. package/workflow/WorkflowTaskApprovalCard.d.ts.map +1 -1
  546. package/workflow/WorkflowTaskApprovalCard.js +5 -4
  547. package/workflow/WorkflowTaskApprovalCard.js.map +1 -1
  548. package/workflow/WorkflowTaskApprovalSummary.d.ts +6 -6
  549. package/workflow/WorkflowTaskApprovalSummary.js +5 -5
  550. package/workflow/deriveWorkflowArtifactItems.d.ts +30 -0
  551. package/workflow/deriveWorkflowArtifactItems.d.ts.map +1 -0
  552. package/workflow/deriveWorkflowArtifactItems.js +38 -0
  553. package/workflow/deriveWorkflowArtifactItems.js.map +1 -0
  554. package/workflow/deriveWorkflowUsageItems.d.ts +36 -0
  555. package/workflow/deriveWorkflowUsageItems.d.ts.map +1 -0
  556. package/workflow/deriveWorkflowUsageItems.js +50 -0
  557. package/workflow/deriveWorkflowUsageItems.js.map +1 -0
  558. package/workflow/diagnosis-document.d.ts +17 -0
  559. package/workflow/diagnosis-document.d.ts.map +1 -0
  560. package/workflow/diagnosis-document.js +29 -0
  561. package/workflow/diagnosis-document.js.map +1 -0
  562. package/workflow/execution/index.d.ts +0 -2
  563. package/workflow/execution/index.d.ts.map +1 -1
  564. package/workflow/execution/index.js +0 -2
  565. package/workflow/execution/index.js.map +1 -1
  566. package/workflow/facets/WorkflowArtifactsTab.d.ts +26 -0
  567. package/workflow/facets/WorkflowArtifactsTab.d.ts.map +1 -0
  568. package/workflow/facets/WorkflowArtifactsTab.js +34 -0
  569. package/workflow/facets/WorkflowArtifactsTab.js.map +1 -0
  570. package/workflow/facets/WorkflowChangesTab.d.ts +37 -0
  571. package/workflow/facets/WorkflowChangesTab.d.ts.map +1 -0
  572. package/workflow/facets/WorkflowChangesTab.js +50 -0
  573. package/workflow/facets/WorkflowChangesTab.js.map +1 -0
  574. package/workflow/facets/WorkflowUsageTab.d.ts +27 -0
  575. package/workflow/facets/WorkflowUsageTab.d.ts.map +1 -0
  576. package/workflow/facets/WorkflowUsageTab.js +87 -0
  577. package/workflow/facets/WorkflowUsageTab.js.map +1 -0
  578. package/workflow/format-utils.d.ts +2 -3
  579. package/workflow/format-utils.d.ts.map +1 -1
  580. package/workflow/format-utils.js +2 -3
  581. package/workflow/format-utils.js.map +1 -1
  582. package/workflow/index.d.ts +21 -10
  583. package/workflow/index.d.ts.map +1 -1
  584. package/workflow/index.js +29 -14
  585. package/workflow/index.js.map +1 -1
  586. package/workflow/inspector/index.d.ts +0 -2
  587. package/workflow/inspector/index.d.ts.map +1 -1
  588. package/workflow/inspector/index.js +0 -2
  589. package/workflow/inspector/index.js.map +1 -1
  590. package/workflow/instance/WorkflowInstanceList.d.ts.map +1 -1
  591. package/workflow/instance/WorkflowInstanceList.js +11 -3
  592. package/workflow/instance/WorkflowInstanceList.js.map +1 -1
  593. package/workflow/task-detail/StructuredDataViewer.d.ts.map +1 -0
  594. package/workflow/task-detail/StructuredDataViewer.js.map +1 -0
  595. package/workflow/task-detail/index.d.ts +4 -0
  596. package/workflow/task-detail/index.d.ts.map +1 -0
  597. package/workflow/task-detail/index.js +4 -0
  598. package/workflow/task-detail/index.js.map +1 -0
  599. package/workflow/task-detail/task-approval.d.ts +89 -0
  600. package/workflow/task-detail/task-approval.d.ts.map +1 -0
  601. package/workflow/task-detail/task-approval.js +84 -0
  602. package/workflow/task-detail/task-approval.js.map +1 -0
  603. package/workflow/task-detail/task-detail-io.d.ts +39 -0
  604. package/workflow/task-detail/task-detail-io.d.ts.map +1 -0
  605. package/workflow/task-detail/task-detail-io.js +42 -0
  606. package/workflow/task-detail/task-detail-io.js.map +1 -0
  607. package/workflow/thread/WorkflowTaskThread.d.ts +91 -0
  608. package/workflow/thread/WorkflowTaskThread.d.ts.map +1 -0
  609. package/workflow/thread/WorkflowTaskThread.js +318 -0
  610. package/workflow/thread/WorkflowTaskThread.js.map +1 -0
  611. package/workflow/thread/project-thread-items.d.ts +108 -0
  612. package/workflow/thread/project-thread-items.d.ts.map +1 -0
  613. package/workflow/thread/project-thread-items.js +126 -0
  614. package/workflow/thread/project-thread-items.js.map +1 -0
  615. package/workflow/thread/task-presentation.d.ts +73 -0
  616. package/workflow/thread/task-presentation.d.ts.map +1 -0
  617. package/workflow/thread/task-presentation.js +331 -0
  618. package/workflow/thread/task-presentation.js.map +1 -0
  619. package/workflow/thread/thread-presentation.d.ts +28 -0
  620. package/workflow/thread/thread-presentation.d.ts.map +1 -0
  621. package/workflow/thread/thread-presentation.js +28 -0
  622. package/workflow/thread/thread-presentation.js.map +1 -0
  623. package/workflow/thread/useWorkflowThreadItems.d.ts +16 -0
  624. package/workflow/thread/useWorkflowThreadItems.d.ts.map +1 -0
  625. package/workflow/thread/useWorkflowThreadItems.js +22 -0
  626. package/workflow/thread/useWorkflowThreadItems.js.map +1 -0
  627. package/workflow/useApprovalBoundary.d.ts +38 -0
  628. package/workflow/useApprovalBoundary.d.ts.map +1 -0
  629. package/workflow/useApprovalBoundary.js +55 -0
  630. package/workflow/useApprovalBoundary.js.map +1 -0
  631. package/workflow/useFollowExecution.d.ts +0 -20
  632. package/workflow/useFollowExecution.d.ts.map +1 -1
  633. package/workflow/useFollowExecution.js +0 -17
  634. package/workflow/useFollowExecution.js.map +1 -1
  635. package/workflow/useWorkflowArtifactDownload.d.ts +28 -0
  636. package/workflow/useWorkflowArtifactDownload.d.ts.map +1 -0
  637. package/workflow/useWorkflowArtifactDownload.js +45 -0
  638. package/workflow/useWorkflowArtifactDownload.js.map +1 -0
  639. package/workflow/useWorkflowExecutionActions.d.ts +3 -2
  640. package/workflow/useWorkflowExecutionActions.d.ts.map +1 -1
  641. package/workflow/useWorkflowExecutionActions.js.map +1 -1
  642. package/workflow/useWorkflowExecutionFileChanges.d.ts +107 -0
  643. package/workflow/useWorkflowExecutionFileChanges.d.ts.map +1 -0
  644. package/workflow/useWorkflowExecutionFileChanges.js +244 -0
  645. package/workflow/useWorkflowExecutionFileChanges.js.map +1 -0
  646. package/workflow/useWorkflowExecutionGraph.d.ts +1 -14
  647. package/workflow/useWorkflowExecutionGraph.d.ts.map +1 -1
  648. package/workflow/useWorkflowExecutionGraph.js +2 -25
  649. package/workflow/useWorkflowExecutionGraph.js.map +1 -1
  650. package/workflow/useWorkflowExecutionPanel.d.ts +108 -0
  651. package/workflow/useWorkflowExecutionPanel.d.ts.map +1 -0
  652. package/workflow/useWorkflowExecutionPanel.js +103 -0
  653. package/workflow/useWorkflowExecutionPanel.js.map +1 -0
  654. package/workflow/useWorkflowExecutionRailViews.d.ts +46 -0
  655. package/workflow/useWorkflowExecutionRailViews.d.ts.map +1 -0
  656. package/workflow/useWorkflowExecutionRailViews.js +81 -0
  657. package/workflow/useWorkflowExecutionRailViews.js.map +1 -0
  658. package/workspace/FileViewer.d.ts +1 -1
  659. package/workspace/FileViewer.js +3 -3
  660. package/workspace/FileViewer.js.map +1 -1
  661. package/workspace/PanelChip.d.ts +27 -0
  662. package/workspace/PanelChip.d.ts.map +1 -0
  663. package/workspace/PanelChip.js +42 -0
  664. package/workspace/PanelChip.js.map +1 -0
  665. package/workspace/WorkspaceSurface.d.ts +25 -1
  666. package/workspace/WorkspaceSurface.d.ts.map +1 -1
  667. package/workspace/WorkspaceSurface.js +21 -9
  668. package/workspace/WorkspaceSurface.js.map +1 -1
  669. package/workspace/index.d.ts +3 -1
  670. package/workspace/index.d.ts.map +1 -1
  671. package/workspace/index.js +1 -0
  672. package/workspace/index.js.map +1 -1
  673. package/execution/ThreadSelectionContext.d.ts +0 -17
  674. package/execution/ThreadSelectionContext.d.ts.map +0 -1
  675. package/execution/ThreadSelectionContext.js +0 -18
  676. package/execution/ThreadSelectionContext.js.map +0 -1
  677. package/execution/useThreadSelection.d.ts +0 -35
  678. package/execution/useThreadSelection.d.ts.map +0 -1
  679. package/execution/useThreadSelection.js +0 -65
  680. package/execution/useThreadSelection.js.map +0 -1
  681. package/internal/store/selection-store.d.ts +0 -53
  682. package/internal/store/selection-store.d.ts.map +0 -1
  683. package/internal/store/selection-store.js +0 -88
  684. package/internal/store/selection-store.js.map +0 -1
  685. package/session/artifact-document.d.ts.map +0 -1
  686. package/session/artifact-document.js +0 -22
  687. package/session/artifact-document.js.map +0 -1
  688. package/session/facets/InspectTab.d.ts +0 -13
  689. package/session/facets/InspectTab.d.ts.map +0 -1
  690. package/session/facets/InspectTab.js +0 -19
  691. package/session/facets/InspectTab.js.map +0 -1
  692. package/src/execution/ThreadSelectionContext.tsx +0 -20
  693. package/src/execution/useThreadSelection.ts +0 -95
  694. package/src/internal/store/__tests__/selection-store.test.ts +0 -115
  695. package/src/internal/store/selection-store.ts +0 -112
  696. package/src/session/artifact-document.ts +0 -23
  697. package/src/session/facets/InspectTab.tsx +0 -57
  698. package/src/workflow/WorkflowExecutionApprovalCard.tsx +0 -154
  699. package/src/workflow/WorkflowExecutionArtifactPanel.tsx +0 -107
  700. package/src/workflow/WorkflowExecutionCostPanel.tsx +0 -120
  701. package/src/workflow/WorkflowExecutionTaskPanel.tsx +0 -129
  702. package/src/workflow/WorkflowExecutionTimeline.tsx +0 -151
  703. package/src/workflow/WorkflowExecutionTimelineEvent.tsx +0 -497
  704. package/src/workflow/__tests__/ExecutionInspector.test.tsx +0 -155
  705. package/src/workflow/__tests__/WorkflowExecutionApprovalCard.test.tsx +0 -129
  706. package/src/workflow/__tests__/derive-task-detail.test.ts +0 -1265
  707. package/src/workflow/__tests__/derive-waterfall-entries.test.ts +0 -521
  708. package/src/workflow/__tests__/execution-inspector.test.tsx +0 -332
  709. package/src/workflow/execution/derive-waterfall-entries.ts +0 -377
  710. package/src/workflow/execution/useWaterfallEntries.ts +0 -125
  711. package/src/workflow/execution-inspector/AgentCallTab.tsx +0 -169
  712. package/src/workflow/execution-inspector/ErrorTab.tsx +0 -110
  713. package/src/workflow/execution-inspector/EventLogTab.tsx +0 -79
  714. package/src/workflow/execution-inspector/ExecutionInspector.tsx +0 -341
  715. package/src/workflow/execution-inspector/InputOutputTab.tsx +0 -325
  716. package/src/workflow/execution-inspector/RetriesTab.tsx +0 -68
  717. package/src/workflow/execution-inspector/SummaryTab.tsx +0 -62
  718. package/src/workflow/execution-inspector/derive-task-detail.ts +0 -584
  719. package/src/workflow/execution-inspector/index.ts +0 -14
  720. package/src/workflow/execution-inspector/useExecutionTaskDetail.ts +0 -55
  721. package/src/workflow/inspector/ExecutionInspectorAdapter.tsx +0 -40
  722. package/src/workflow/waterfall/WaterfallBar.tsx +0 -167
  723. package/src/workflow/waterfall/WaterfallRow.tsx +0 -112
  724. package/src/workflow/waterfall/WaterfallScale.tsx +0 -52
  725. package/src/workflow/waterfall/WaterfallTimeline.tsx +0 -138
  726. package/src/workflow/waterfall/WaterfallTooltip.tsx +0 -74
  727. package/src/workflow/waterfall/index.ts +0 -5
  728. package/workflow/WorkflowExecutionApprovalCard.d.ts +0 -34
  729. package/workflow/WorkflowExecutionApprovalCard.d.ts.map +0 -1
  730. package/workflow/WorkflowExecutionApprovalCard.js +0 -46
  731. package/workflow/WorkflowExecutionApprovalCard.js.map +0 -1
  732. package/workflow/WorkflowExecutionArtifactPanel.d.ts +0 -15
  733. package/workflow/WorkflowExecutionArtifactPanel.d.ts.map +0 -1
  734. package/workflow/WorkflowExecutionArtifactPanel.js +0 -46
  735. package/workflow/WorkflowExecutionArtifactPanel.js.map +0 -1
  736. package/workflow/WorkflowExecutionCostPanel.d.ts +0 -18
  737. package/workflow/WorkflowExecutionCostPanel.d.ts.map +0 -1
  738. package/workflow/WorkflowExecutionCostPanel.js +0 -31
  739. package/workflow/WorkflowExecutionCostPanel.js.map +0 -1
  740. package/workflow/WorkflowExecutionTaskPanel.d.ts +0 -24
  741. package/workflow/WorkflowExecutionTaskPanel.d.ts.map +0 -1
  742. package/workflow/WorkflowExecutionTaskPanel.js +0 -51
  743. package/workflow/WorkflowExecutionTaskPanel.js.map +0 -1
  744. package/workflow/WorkflowExecutionTimeline.d.ts +0 -42
  745. package/workflow/WorkflowExecutionTimeline.d.ts.map +0 -1
  746. package/workflow/WorkflowExecutionTimeline.js +0 -52
  747. package/workflow/WorkflowExecutionTimeline.js.map +0 -1
  748. package/workflow/WorkflowExecutionTimelineEvent.d.ts +0 -25
  749. package/workflow/WorkflowExecutionTimelineEvent.d.ts.map +0 -1
  750. package/workflow/WorkflowExecutionTimelineEvent.js +0 -179
  751. package/workflow/WorkflowExecutionTimelineEvent.js.map +0 -1
  752. package/workflow/execution/derive-waterfall-entries.d.ts +0 -85
  753. package/workflow/execution/derive-waterfall-entries.d.ts.map +0 -1
  754. package/workflow/execution/derive-waterfall-entries.js +0 -268
  755. package/workflow/execution/derive-waterfall-entries.js.map +0 -1
  756. package/workflow/execution/useWaterfallEntries.d.ts +0 -25
  757. package/workflow/execution/useWaterfallEntries.d.ts.map +0 -1
  758. package/workflow/execution/useWaterfallEntries.js +0 -67
  759. package/workflow/execution/useWaterfallEntries.js.map +0 -1
  760. package/workflow/execution-inspector/AgentCallTab.d.ts +0 -21
  761. package/workflow/execution-inspector/AgentCallTab.d.ts.map +0 -1
  762. package/workflow/execution-inspector/AgentCallTab.js +0 -36
  763. package/workflow/execution-inspector/AgentCallTab.js.map +0 -1
  764. package/workflow/execution-inspector/ErrorTab.d.ts +0 -9
  765. package/workflow/execution-inspector/ErrorTab.d.ts.map +0 -1
  766. package/workflow/execution-inspector/ErrorTab.js +0 -29
  767. package/workflow/execution-inspector/ErrorTab.js.map +0 -1
  768. package/workflow/execution-inspector/EventLogTab.d.ts +0 -11
  769. package/workflow/execution-inspector/EventLogTab.d.ts.map +0 -1
  770. package/workflow/execution-inspector/EventLogTab.js +0 -47
  771. package/workflow/execution-inspector/EventLogTab.js.map +0 -1
  772. package/workflow/execution-inspector/ExecutionInspector.d.ts +0 -69
  773. package/workflow/execution-inspector/ExecutionInspector.d.ts.map +0 -1
  774. package/workflow/execution-inspector/ExecutionInspector.js +0 -145
  775. package/workflow/execution-inspector/ExecutionInspector.js.map +0 -1
  776. package/workflow/execution-inspector/InputOutputTab.d.ts +0 -20
  777. package/workflow/execution-inspector/InputOutputTab.d.ts.map +0 -1
  778. package/workflow/execution-inspector/InputOutputTab.js +0 -124
  779. package/workflow/execution-inspector/InputOutputTab.js.map +0 -1
  780. package/workflow/execution-inspector/RetriesTab.d.ts +0 -7
  781. package/workflow/execution-inspector/RetriesTab.d.ts.map +0 -1
  782. package/workflow/execution-inspector/RetriesTab.js +0 -11
  783. package/workflow/execution-inspector/RetriesTab.js.map +0 -1
  784. package/workflow/execution-inspector/StructuredDataViewer.d.ts.map +0 -1
  785. package/workflow/execution-inspector/StructuredDataViewer.js.map +0 -1
  786. package/workflow/execution-inspector/SummaryTab.d.ts +0 -7
  787. package/workflow/execution-inspector/SummaryTab.d.ts.map +0 -1
  788. package/workflow/execution-inspector/SummaryTab.js +0 -10
  789. package/workflow/execution-inspector/SummaryTab.js.map +0 -1
  790. package/workflow/execution-inspector/derive-task-detail.d.ts +0 -140
  791. package/workflow/execution-inspector/derive-task-detail.d.ts.map +0 -1
  792. package/workflow/execution-inspector/derive-task-detail.js +0 -366
  793. package/workflow/execution-inspector/derive-task-detail.js.map +0 -1
  794. package/workflow/execution-inspector/index.d.ts +0 -4
  795. package/workflow/execution-inspector/index.d.ts.map +0 -1
  796. package/workflow/execution-inspector/index.js +0 -4
  797. package/workflow/execution-inspector/index.js.map +0 -1
  798. package/workflow/execution-inspector/useExecutionTaskDetail.d.ts +0 -38
  799. package/workflow/execution-inspector/useExecutionTaskDetail.d.ts.map +0 -1
  800. package/workflow/execution-inspector/useExecutionTaskDetail.js +0 -37
  801. package/workflow/execution-inspector/useExecutionTaskDetail.js.map +0 -1
  802. package/workflow/inspector/ExecutionInspectorAdapter.d.ts +0 -26
  803. package/workflow/inspector/ExecutionInspectorAdapter.d.ts.map +0 -1
  804. package/workflow/inspector/ExecutionInspectorAdapter.js +0 -23
  805. package/workflow/inspector/ExecutionInspectorAdapter.js.map +0 -1
  806. package/workflow/waterfall/WaterfallBar.d.ts +0 -19
  807. package/workflow/waterfall/WaterfallBar.d.ts.map +0 -1
  808. package/workflow/waterfall/WaterfallBar.js +0 -70
  809. package/workflow/waterfall/WaterfallBar.js.map +0 -1
  810. package/workflow/waterfall/WaterfallRow.d.ts +0 -18
  811. package/workflow/waterfall/WaterfallRow.d.ts.map +0 -1
  812. package/workflow/waterfall/WaterfallRow.js +0 -45
  813. package/workflow/waterfall/WaterfallRow.js.map +0 -1
  814. package/workflow/waterfall/WaterfallScale.d.ts +0 -14
  815. package/workflow/waterfall/WaterfallScale.d.ts.map +0 -1
  816. package/workflow/waterfall/WaterfallScale.js +0 -22
  817. package/workflow/waterfall/WaterfallScale.js.map +0 -1
  818. package/workflow/waterfall/WaterfallTimeline.d.ts +0 -46
  819. package/workflow/waterfall/WaterfallTimeline.d.ts.map +0 -1
  820. package/workflow/waterfall/WaterfallTimeline.js +0 -60
  821. package/workflow/waterfall/WaterfallTimeline.js.map +0 -1
  822. package/workflow/waterfall/WaterfallTooltip.d.ts +0 -15
  823. package/workflow/waterfall/WaterfallTooltip.d.ts.map +0 -1
  824. package/workflow/waterfall/WaterfallTooltip.js +0 -20
  825. package/workflow/waterfall/WaterfallTooltip.js.map +0 -1
  826. package/workflow/waterfall/index.d.ts +0 -6
  827. package/workflow/waterfall/index.d.ts.map +0 -1
  828. package/workflow/waterfall/index.js +0 -6
  829. package/workflow/waterfall/index.js.map +0 -1
  830. /package/src/workflow/{execution-inspector → task-detail}/StructuredDataViewer.tsx +0 -0
  831. /package/workflow/{execution-inspector → task-detail}/StructuredDataViewer.d.ts +0 -0
  832. /package/workflow/{execution-inspector → task-detail}/StructuredDataViewer.js +0 -0
@@ -0,0 +1,37 @@
1
+ import type { Agent } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/api_pb";
2
+ import type { AgentChannel } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/api_pb";
3
+ /** Props for {@link ChannelCredentialsDialog}. */
4
+ export interface ChannelCredentialsDialogProps {
5
+ /** Whether the dialog is open. */
6
+ readonly open: boolean;
7
+ /** Called when the dialog requests an open-state change. */
8
+ readonly onOpenChange: (open: boolean) => void;
9
+ /** The agent the channel serves (drives the readiness hint). */
10
+ readonly agent: Agent;
11
+ /** The channel whose credential bindings are edited. */
12
+ readonly channel: AgentChannel;
13
+ /** Called after a successful save (hosts typically pass `refetch`). */
14
+ readonly onSaved?: () => void;
15
+ /**
16
+ * When `false`, renders as an in-flow open dialog instead of a
17
+ * top-layer modal — for embedding in constrained surfaces
18
+ * (documentation demos, visual tests). Interactive hosts keep the
19
+ * default.
20
+ * @default true
21
+ */
22
+ readonly modal?: boolean;
23
+ }
24
+ /**
25
+ * Edits an installed channel's tool-credential bindings
26
+ * (`AgentChannelSpec.environment_refs`) after the fact — the companion
27
+ * to binding at connect time in {@link ConnectSlackDialog}. Saves are
28
+ * full-input applies via {@link agentChannelToInput}, so the agent
29
+ * reference, provider marker, and install status all survive; an
30
+ * emptied list is an explicit unbind.
31
+ *
32
+ * Built on the native `<dialog>` element, matching the SDK's modal
33
+ * convention. Most hosts mount it via {@link AgentChannelsPanel}'s
34
+ * channel card action.
35
+ */
36
+ export declare function ChannelCredentialsDialog({ open, onOpenChange, agent, channel, onSaved, modal, }: ChannelCredentialsDialogProps): import("react/jsx-runtime").JSX.Element;
37
+ //# sourceMappingURL=ChannelCredentialsDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChannelCredentialsDialog.d.ts","sourceRoot":"","sources":["../../src/channel/ChannelCredentialsDialog.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oDAAoD,CAAC;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2DAA2D,CAAC;AAK9F,kDAAkD;AAClD,MAAM,WAAW,6BAA6B;IAC5C,kCAAkC;IAClC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,4DAA4D;IAC5D,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,gEAAgE;IAChE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,wDAAwD;IACxD,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,uEAAuE;IACvE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,EACvC,IAAI,EACJ,YAAY,EACZ,KAAK,EACL,OAAO,EACP,OAAO,EACP,KAAY,GACb,EAAE,6BAA6B,2CA8C/B"}
@@ -0,0 +1,75 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useCallback, useRef, useState } from "react";
4
+ import { cn } from "@stigmer/theme";
5
+ import { getUserMessage } from "@stigmer/sdk";
6
+ import { Button } from "../button/Button.js";
7
+ import { ChannelToolCredentials } from "./ChannelToolCredentials.js";
8
+ import { agentChannelToInput, useSaveAgentChannel } from "./useSaveAgentChannel.js";
9
+ /**
10
+ * Edits an installed channel's tool-credential bindings
11
+ * (`AgentChannelSpec.environment_refs`) after the fact — the companion
12
+ * to binding at connect time in {@link ConnectSlackDialog}. Saves are
13
+ * full-input applies via {@link agentChannelToInput}, so the agent
14
+ * reference, provider marker, and install status all survive; an
15
+ * emptied list is an explicit unbind.
16
+ *
17
+ * Built on the native `<dialog>` element, matching the SDK's modal
18
+ * convention. Most hosts mount it via {@link AgentChannelsPanel}'s
19
+ * channel card action.
20
+ */
21
+ export function ChannelCredentialsDialog({ open, onOpenChange, agent, channel, onSaved, modal = true, }) {
22
+ const dialogRef = useRef(null);
23
+ const handleClose = useCallback(() => {
24
+ dialogRef.current?.close();
25
+ onOpenChange(false);
26
+ }, [onOpenChange]);
27
+ // Sync native dialog open state (matches the SDK dialog convention).
28
+ const prevOpenRef = useRef(false);
29
+ if (modal && open !== prevOpenRef.current) {
30
+ prevOpenRef.current = open;
31
+ if (open) {
32
+ requestAnimationFrame(() => {
33
+ if (dialogRef.current && !dialogRef.current.open) {
34
+ dialogRef.current.showModal();
35
+ }
36
+ });
37
+ }
38
+ else if (dialogRef.current?.open) {
39
+ dialogRef.current.close();
40
+ }
41
+ }
42
+ return (_jsx("dialog", { ref: dialogRef, open: modal ? undefined : open, onClose: handleClose, className: cn("w-full max-w-md rounded-xl border border-border bg-popover p-0 shadow-xl", modal ? "fixed inset-0 m-auto backdrop:bg-black/50" : "relative"), "aria-labelledby": "channel-credentials-title", children: open && (_jsx(ChannelCredentialsDialogBody, { agent: agent, channel: channel, onSaved: onSaved, onClose: handleClose })) }));
43
+ }
44
+ function ChannelCredentialsDialogBody({ agent, channel, onSaved, onClose, }) {
45
+ const channelName = channel.metadata?.name || channel.metadata?.slug || "this channel";
46
+ const org = channel.metadata?.org ?? "";
47
+ const { save, isPending, error, clearError } = useSaveAgentChannel();
48
+ const [draft, setDraft] = useState(() => (channel.spec?.environmentRefs ?? []).map((ref) => ({
49
+ org: ref.org,
50
+ slug: ref.slug,
51
+ })));
52
+ const handleSave = useCallback(async () => {
53
+ try {
54
+ // Full-input apply: only the binding list changes; an empty draft
55
+ // is an explicit unbind (apply semantics replace the spec).
56
+ await save({
57
+ ...agentChannelToInput(channel),
58
+ environmentRefs: [...draft],
59
+ });
60
+ onSaved?.();
61
+ onClose();
62
+ }
63
+ catch {
64
+ // Surfaced through the hook's error state below.
65
+ }
66
+ }, [channel, draft, onClose, onSaved, save]);
67
+ return (_jsxs("div", { className: "flex flex-col", children: [_jsxs("div", { className: "flex items-start justify-between gap-3 border-b border-border px-5 py-4", children: [_jsxs("div", { className: "min-w-0", children: [_jsx("h2", { id: "channel-credentials-title", className: "text-sm font-semibold text-foreground", children: "Tool credentials" }), _jsx("p", { className: "mt-0.5 truncate text-xs text-muted-foreground", children: channelName })] }), _jsx("button", { type: "button", onClick: onClose, "aria-label": "Close dialog", className: cn("rounded p-1 text-muted-foreground", "hover:bg-accent-hover hover:text-foreground", "focus:outline-none focus:ring-1 focus:ring-ring"), children: _jsx(CloseIcon, {}) })] }), _jsxs("div", { className: "px-5 py-4", children: [_jsx(ChannelToolCredentials, { agent: agent, org: org, value: draft, onChange: setDraft, disabled: isPending, enabled: channel.spec?.enabled ?? false }), error && (_jsx("div", { role: "alert", className: "mt-3 rounded-md border border-destructive/30 bg-destructive-subtle px-3 py-2 text-xs text-destructive", children: getUserMessage(error) }))] }), _jsxs("div", { className: "flex justify-end gap-2 border-t border-border px-5 py-3", children: [_jsx(Button, { variant: "ghost", size: "sm", onClick: () => {
68
+ clearError();
69
+ onClose();
70
+ }, disabled: isPending, children: "Cancel" }), _jsx(Button, { variant: "primary", size: "sm", onClick: () => void handleSave(), disabled: isPending, children: "Save" })] })] }));
71
+ }
72
+ function CloseIcon() {
73
+ return (_jsx("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", "aria-hidden": "true", children: _jsx("path", { d: "m3 3 8 8M11 3l-8 8" }) }));
74
+ }
75
+ //# sourceMappingURL=ChannelCredentialsDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChannelCredentialsDialog.js","sourceRoot":"","sources":["../../src/channel/ChannelCredentialsDialog.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,cAAc,EAAoB,MAAM,cAAc,CAAC;AAGhE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAwBpF;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,wBAAwB,CAAC,EACvC,IAAI,EACJ,YAAY,EACZ,KAAK,EACL,OAAO,EACP,OAAO,EACP,KAAK,GAAG,IAAI,GACkB;IAC9B,MAAM,SAAS,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAC;IAElD,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;QACnC,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;QAC3B,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnB,qEAAqE;IACrE,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,KAAK,IAAI,IAAI,KAAK,WAAW,CAAC,OAAO,EAAE,CAAC;QAC1C,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC;QAC3B,IAAI,IAAI,EAAE,CAAC;YACT,qBAAqB,CAAC,GAAG,EAAE;gBACzB,IAAI,SAAS,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;oBACjD,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;gBAChC,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;YACnC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,OAAO,CACL,iBACE,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAC9B,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,EAAE,CACX,0EAA0E,EAC1E,KAAK,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,UAAU,CACjE,qBACe,2BAA2B,YAI1C,IAAI,IAAI,CACP,KAAC,4BAA4B,IAC3B,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,WAAW,GACpB,CACH,GACM,CACV,CAAC;AACJ,CAAC;AAED,SAAS,4BAA4B,CAAC,EACpC,KAAK,EACL,OAAO,EACP,OAAO,EACP,OAAO,GAMR;IACC,MAAM,WAAW,GACf,OAAO,CAAC,QAAQ,EAAE,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,IAAI,IAAI,cAAc,CAAC;IACrE,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,EAAE,GAAG,IAAI,EAAE,CAAC;IAExC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAErE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,GAAG,EAAE,CACrD,CAAC,OAAO,CAAC,IAAI,EAAE,eAAe,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAClD,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,IAAI,EAAE,GAAG,CAAC,IAAI;KACf,CAAC,CAAC,CACJ,CAAC;IAEF,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACxC,IAAI,CAAC;YACH,kEAAkE;YAClE,4DAA4D;YAC5D,MAAM,IAAI,CAAC;gBACT,GAAG,mBAAmB,CAAC,OAAO,CAAC;gBAC/B,eAAe,EAAE,CAAC,GAAG,KAAK,CAAC;aAC5B,CAAC,CAAC;YACH,OAAO,EAAE,EAAE,CAAC;YACZ,OAAO,EAAE,CAAC;QACZ,CAAC;QAAC,MAAM,CAAC;YACP,iDAAiD;QACnD,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAE7C,OAAO,CACL,eAAK,SAAS,EAAC,eAAe,aAC5B,eAAK,SAAS,EAAC,yEAAyE,aACtF,eAAK,SAAS,EAAC,SAAS,aACtB,aACE,EAAE,EAAC,2BAA2B,EAC9B,SAAS,EAAC,uCAAuC,iCAG9C,EACL,YAAG,SAAS,EAAC,+CAA+C,YACzD,WAAW,GACV,IACA,EACN,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,gBACL,cAAc,EACzB,SAAS,EAAE,EAAE,CACX,mCAAmC,EACnC,6CAA6C,EAC7C,iDAAiD,CAClD,YAED,KAAC,SAAS,KAAG,GACN,IACL,EAEN,eAAK,SAAS,EAAC,WAAW,aACxB,KAAC,sBAAsB,IACrB,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,SAAS,EACnB,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,IAAI,KAAK,GACvC,EAED,KAAK,IAAI,CACR,cACE,IAAI,EAAC,OAAO,EACZ,SAAS,EAAC,uGAAuG,YAEhH,cAAc,CAAC,KAAK,CAAC,GAClB,CACP,IACG,EAEN,eAAK,SAAS,EAAC,yDAAyD,aACtE,KAAC,MAAM,IACL,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,GAAG,EAAE;4BACZ,UAAU,EAAE,CAAC;4BACb,OAAO,EAAE,CAAC;wBACZ,CAAC,EACD,QAAQ,EAAE,SAAS,uBAGZ,EACT,KAAC,MAAM,IACL,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,UAAU,EAAE,EAChC,QAAQ,EAAE,SAAS,qBAGZ,IACL,IACF,CACP,CAAC;AACJ,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CACL,cAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,KAAK,EAAC,aAAa,EAAC,OAAO,iBAAa,MAAM,YAC1I,eAAM,CAAC,EAAC,oBAAoB,GAAG,GAC3B,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { Agent } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/api_pb";
2
+ import type { ResourceRef } from "@stigmer/sdk";
3
+ /** Props for {@link ChannelToolCredentials}. */
4
+ export interface ChannelToolCredentialsProps {
5
+ /** The agent the channel serves (drives the readiness check). */
6
+ readonly agent: Agent;
7
+ /** Organization the environments are listed from (the channel's org). */
8
+ readonly org: string;
9
+ /** Currently bound environment references, in merge order. */
10
+ readonly value: readonly ResourceRef[];
11
+ /** Called when the binding list changes. */
12
+ readonly onChange: (refs: ResourceRef[]) => void;
13
+ /** Disable all interactions (e.g. while a save is in flight). */
14
+ readonly disabled?: boolean;
15
+ /**
16
+ * Whether the channel serves traffic. A paused channel needs no
17
+ * readiness warning — the hint stays silent when `false`.
18
+ * @default true
19
+ */
20
+ readonly enabled?: boolean;
21
+ }
22
+ /**
23
+ * The channel's credential-binding surface: explanatory copy, the
24
+ * org-shared environment picker, and the readiness hint. Shared by the
25
+ * connect dialog (binding at connect time) and the channel card's
26
+ * credentials dialog (editing later) so the two surfaces can never
27
+ * drift — the {@link ShareAgentDialog} ToolCredentialsSection pattern,
28
+ * applied to channels.
29
+ */
30
+ export declare function ChannelToolCredentials({ agent, org, value, onChange, disabled, enabled, }: ChannelToolCredentialsProps): import("react/jsx-runtime").JSX.Element;
31
+ //# sourceMappingURL=ChannelToolCredentials.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChannelToolCredentials.d.ts","sourceRoot":"","sources":["../../src/channel/ChannelToolCredentials.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oDAAoD,CAAC;AAEhF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAIhD,gDAAgD;AAChD,MAAM,WAAW,2BAA2B;IAC1C,iEAAiE;IACjE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,yEAAyE;IACzE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,8DAA8D;IAC9D,QAAQ,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;IACvC,4CAA4C;IAC5C,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;IACjD,iEAAiE;IACjE,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,KAAK,EACL,GAAG,EACH,KAAK,EACL,QAAQ,EACR,QAAgB,EAChB,OAAc,GACf,EAAE,2BAA2B,2CA8B7B"}
@@ -0,0 +1,41 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useCallback } from "react";
4
+ import { ApiResourceVisibility } from "@stigmer/protos/ai/stigmer/commons/apiresource/enum_pb";
5
+ import { EnvironmentPicker } from "../environment/EnvironmentPicker.js";
6
+ import { useChannelToolReadiness } from "./useChannelToolReadiness.js";
7
+ /**
8
+ * The channel's credential-binding surface: explanatory copy, the
9
+ * org-shared environment picker, and the readiness hint. Shared by the
10
+ * connect dialog (binding at connect time) and the channel card's
11
+ * credentials dialog (editing later) so the two surfaces can never
12
+ * drift — the {@link ShareAgentDialog} ToolCredentialsSection pattern,
13
+ * applied to channels.
14
+ */
15
+ export function ChannelToolCredentials({ agent, org, value, onChange, disabled = false, enabled = true, }) {
16
+ // Only org-shared environments are usable by channel executions (the
17
+ // runtime merge skips private ones), so offering others would bind
18
+ // credentials that silently never apply.
19
+ const onlyOrgShared = useCallback((env) => env.metadata?.visibility === ApiResourceVisibility.visibility_org, []);
20
+ return (_jsxs("div", { className: "flex flex-col gap-2", children: [_jsx("p", { className: "text-[0.65rem] text-muted-foreground", children: "Environments whose values workspace conversations can use \u2014 bind one holding the credentials this agent's tools need (a read-only token is safest). Only environments shared with your organization can be bound; share one first in Settings \u2192 Environments. Secret values stay hidden from workspace members either way." }), _jsx(EnvironmentPicker, { org: org, value: value, onChange: onChange, disabled: disabled, filterEnvironment: onlyOrgShared }), _jsx(ChannelToolReadinessHint, { agent: agent, enabled: enabled, value: value })] }));
21
+ }
22
+ /**
23
+ * Pre-flight hint for tool-using agents: channel conversations receive
24
+ * credentials only from the channel's own environment bindings, so a
25
+ * tool-using agent with no bindings (`needs-credentials`) or a binding
26
+ * that is still private (`blocked`) will refuse the first message that
27
+ * needs a tool. Renders nothing when there is nothing to fix.
28
+ */
29
+ function ChannelToolReadinessHint({ agent, enabled, value, }) {
30
+ const readiness = useChannelToolReadiness(agent, enabled, value);
31
+ if (readiness.status === "needs-credentials") {
32
+ return (_jsx("p", { className: "text-xs text-warning", role: "status", children: "Workspace conversations can't use this agent's tools yet: no credentials are bound to this channel. Bind an org-shared environment above." }));
33
+ }
34
+ if (readiness.status !== "blocked") {
35
+ return null;
36
+ }
37
+ const envList = readiness.privateEnvironments.join(", ");
38
+ const plural = readiness.privateEnvironments.length > 1;
39
+ return (_jsxs("p", { className: "text-xs text-warning", role: "status", children: ["Workspace conversations can't use this agent's tools yet: the environment", plural ? "s" : "", " ", _jsx("span", { className: "font-medium", children: envList }), " ", plural ? "are" : "is", " private. Share ", plural ? "them" : "it", " with your organization (Settings \u2192 Environments) so channel conversations can use the credentials. Secret values stay hidden either way."] }));
40
+ }
41
+ //# sourceMappingURL=ChannelToolCredentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChannelToolCredentials.js","sourceRoot":"","sources":["../../src/channel/ChannelToolCredentials.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAC;AAI/F,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAsBvE;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CAAC,EACrC,KAAK,EACL,GAAG,EACH,KAAK,EACL,QAAQ,EACR,QAAQ,GAAG,KAAK,EAChB,OAAO,GAAG,IAAI,GACc;IAC5B,qEAAqE;IACrE,mEAAmE;IACnE,yCAAyC;IACzC,MAAM,aAAa,GAAG,WAAW,CAC/B,CAAC,GAAgB,EAAE,EAAE,CACnB,GAAG,CAAC,QAAQ,EAAE,UAAU,KAAK,qBAAqB,CAAC,cAAc,EACnE,EAAE,CACH,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,qBAAqB,aAClC,YAAG,SAAS,EAAC,sCAAsC,qVAO/C,EACJ,KAAC,iBAAiB,IAChB,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,iBAAiB,EAAE,aAAa,GAChC,EACF,KAAC,wBAAwB,IAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAI,IACtE,CACP,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,wBAAwB,CAAC,EAChC,KAAK,EACL,OAAO,EACP,KAAK,GAKN;IACC,MAAM,SAAS,GAAG,uBAAuB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAEjE,IAAI,SAAS,CAAC,MAAM,KAAK,mBAAmB,EAAE,CAAC;QAC7C,OAAO,CACL,YAAG,SAAS,EAAC,sBAAsB,EAAC,IAAI,EAAC,QAAQ,0JAI7C,CACL,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,SAAS,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC;IAExD,OAAO,CACL,aAAG,SAAS,EAAC,sBAAsB,EAAC,IAAI,EAAC,QAAQ,0FAE/B,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,EACtC,eAAM,SAAS,EAAC,aAAa,YAAE,OAAO,GAAQ,EAAC,GAAG,EACjD,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,sBAAkB,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,sJAI5D,CACL,CAAC;AACJ,CAAC"}
@@ -0,0 +1,61 @@
1
+ import type { Agent } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/api_pb";
2
+ import type { AgentChannel } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/api_pb";
3
+ /** Props for {@link ConnectSlackDialog}. */
4
+ export interface ConnectSlackDialogProps {
5
+ /** Whether the dialog is open. */
6
+ readonly open: boolean;
7
+ /** Called when the dialog requests an open-state change. */
8
+ readonly onOpenChange: (open: boolean) => void;
9
+ /** The agent the channel connects. */
10
+ readonly agent: Agent;
11
+ /**
12
+ * An existing channel to (re)connect — a `pending_install` channel
13
+ * whose install never completed, or a `revoked` one being re-installed.
14
+ * When omitted, the dialog opens in **create mode**: a name step
15
+ * creates a new channel, then runs the install flow on it.
16
+ */
17
+ readonly channel?: AgentChannel | null;
18
+ /**
19
+ * Called after the channel set changes (created, or install completed).
20
+ * Hosts typically pass the channel list's `refetch`.
21
+ */
22
+ readonly onChannelsChanged?: () => void;
23
+ /**
24
+ * When `false`, renders as an in-flow open dialog instead of a
25
+ * top-layer modal — no `showModal()`, no backdrop, no focus trap.
26
+ * For embedding the dialog in a constrained surface (documentation
27
+ * demos, visual tests). Interactive hosts keep the default.
28
+ * @default true
29
+ */
30
+ readonly modal?: boolean;
31
+ /**
32
+ * Where the host manages Channel Apps (the console passes
33
+ * `/settings/channel-apps`). When provided, the "Connect as" section
34
+ * and install refusals render a "Register a channel app" link there.
35
+ * SDK components never hardcode host routes — hosts inject the
36
+ * destination (the `onConnectExternal` delegate convention). Absent,
37
+ * the affordance degrades to plain guidance text.
38
+ */
39
+ readonly channelAppsHref?: string;
40
+ }
41
+ /**
42
+ * The connect flow for a Slack channel: create the {@link AgentChannel}
43
+ * (create mode), then run the "Add to Slack" OAuth install in a popup
44
+ * and report progress phase by phase.
45
+ *
46
+ * Requires a deployment with platform Slack app credentials — on a
47
+ * `local` (OSS) backend the flow is preempted with a cloud-feature
48
+ * notice, matching the server's FAILED_PRECONDITION refusal. Install
49
+ * refusals (unconfigured deployment, duplicate workspace, Enterprise
50
+ * Grid) render the server's copy verbatim — the server owns that
51
+ * vocabulary.
52
+ *
53
+ * Built on the native `<dialog>` element for focus trapping and escape
54
+ * handling, matching the SDK's modal convention ({@link ShareAgentDialog}).
55
+ * All visual properties flow through `--stgm-*` design tokens.
56
+ *
57
+ * Most hosts mount it via {@link AgentChannelsPanel} (the Channels tab).
58
+ * Render it directly only when you own the open-state.
59
+ */
60
+ export declare function ConnectSlackDialog({ open, onOpenChange, agent, channel, onChannelsChanged, modal, channelAppsHref, }: ConnectSlackDialogProps): import("react/jsx-runtime").JSX.Element;
61
+ //# sourceMappingURL=ConnectSlackDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectSlackDialog.d.ts","sourceRoot":"","sources":["../../src/channel/ConnectSlackDialog.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oDAAoD,CAAC;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2DAA2D,CAAC;AAkB9F,4CAA4C;AAC5C,MAAM,WAAW,uBAAuB;IACtC,kCAAkC;IAClC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,4DAA4D;IAC5D,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,sCAAsC;IACtC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACvC;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IACxC;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB;;;;;;;OAOG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,IAAI,EACJ,YAAY,EACZ,KAAK,EACL,OAAO,EACP,iBAAiB,EACjB,KAAY,EACZ,eAAe,GAChB,EAAE,uBAAuB,2CAiDzB"}
@@ -0,0 +1,238 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { useCallback, useMemo, useRef, useState } from "react";
4
+ import { cn } from "@stigmer/theme";
5
+ import { getErrorReason } from "@stigmer/sdk";
6
+ import { AgentChannelInstallState } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/status_pb";
7
+ import { Button } from "../button/Button.js";
8
+ import { useChannelAppList } from "../channel-app/useChannelAppList.js";
9
+ import { useDeploymentMode } from "../deployment-mode.js";
10
+ import { CloudFeatureNotice } from "../internal/CloudFeatureNotice.js";
11
+ import { RegisterChannelAppAffordance, ServingAppSection, } from "./connect/ServingAppSection.js";
12
+ import { ToolCredentialsSection } from "./connect/ToolCredentialsSection.js";
13
+ import { RefusalBox, VerbatimRefusal } from "./connect/VerbatimRefusal.js";
14
+ import { CheckIcon, CloseIcon, Spinner } from "./connect/icons.js";
15
+ import { useConnectSlackChannel } from "./useConnectSlackChannel.js";
16
+ import { useCreateAgentChannel } from "./useCreateAgentChannel.js";
17
+ import { useOrgAgentChannelList } from "./useOrgAgentChannelList.js";
18
+ import { SlackMarkIcon } from "./SlackMarkIcon.js";
19
+ /**
20
+ * The connect flow for a Slack channel: create the {@link AgentChannel}
21
+ * (create mode), then run the "Add to Slack" OAuth install in a popup
22
+ * and report progress phase by phase.
23
+ *
24
+ * Requires a deployment with platform Slack app credentials — on a
25
+ * `local` (OSS) backend the flow is preempted with a cloud-feature
26
+ * notice, matching the server's FAILED_PRECONDITION refusal. Install
27
+ * refusals (unconfigured deployment, duplicate workspace, Enterprise
28
+ * Grid) render the server's copy verbatim — the server owns that
29
+ * vocabulary.
30
+ *
31
+ * Built on the native `<dialog>` element for focus trapping and escape
32
+ * handling, matching the SDK's modal convention ({@link ShareAgentDialog}).
33
+ * All visual properties flow through `--stgm-*` design tokens.
34
+ *
35
+ * Most hosts mount it via {@link AgentChannelsPanel} (the Channels tab).
36
+ * Render it directly only when you own the open-state.
37
+ */
38
+ export function ConnectSlackDialog({ open, onOpenChange, agent, channel, onChannelsChanged, modal = true, channelAppsHref, }) {
39
+ const dialogRef = useRef(null);
40
+ const handleClose = useCallback(() => {
41
+ dialogRef.current?.close();
42
+ onOpenChange(false);
43
+ }, [onOpenChange]);
44
+ // Sync native dialog open state (matches the SDK dialog convention).
45
+ // Non-modal hosts pass `open` as a plain attribute instead — the dialog
46
+ // renders in-flow with no top layer to manage.
47
+ const prevOpenRef = useRef(false);
48
+ if (modal && open !== prevOpenRef.current) {
49
+ prevOpenRef.current = open;
50
+ if (open) {
51
+ requestAnimationFrame(() => {
52
+ if (dialogRef.current && !dialogRef.current.open) {
53
+ dialogRef.current.showModal();
54
+ }
55
+ });
56
+ }
57
+ else if (dialogRef.current?.open) {
58
+ dialogRef.current.close();
59
+ }
60
+ }
61
+ return (_jsx("dialog", { ref: dialogRef, open: modal ? undefined : open, onClose: handleClose, className: cn("w-full max-w-md rounded-xl border border-border bg-popover p-0 shadow-xl", modal ? "fixed inset-0 m-auto backdrop:bg-black/50" : "relative"), "aria-labelledby": "connect-slack-title", children: open && (_jsx(ConnectSlackDialogBody, { agent: agent, channel: channel ?? null, onChannelsChanged: onChannelsChanged, onClose: handleClose, channelAppsHref: channelAppsHref })) }));
62
+ }
63
+ function ConnectSlackDialogBody({ agent, channel, onChannelsChanged, onClose, channelAppsHref, }) {
64
+ const deploymentMode = useDeploymentMode();
65
+ const agentName = agent.metadata?.name || agent.metadata?.slug || "this agent";
66
+ const org = agent.metadata?.org ?? "";
67
+ const { createChannel, isPending: isCreating } = useCreateAgentChannel();
68
+ const slack = useConnectSlackChannel();
69
+ const [name, setName] = useState(() => channel ? (channel.metadata?.name ?? "") : `${agentName} Slack`);
70
+ // Tool credentials bound at connect time (create mode only — a
71
+ // reconnect keeps the channel's existing bindings untouched; edits go
72
+ // through the channel card's credentials dialog).
73
+ const [environmentRefs, setEnvironmentRefs] = useState([]);
74
+ // The serving app (create mode only): null = the platform Stigmer app;
75
+ // a ref = one of the org's own channel apps (BYO — the bot carries that
76
+ // app's name, and each app is its own bot identity). A reconnect keeps
77
+ // the channel's existing binding — an installed channel's app_ref is
78
+ // frozen server-side.
79
+ const [appRef, setAppRef] = useState(null);
80
+ const [installed, setInstalled] = useState(null);
81
+ const [error, setError] = useState(null);
82
+ // The org's channel apps, fetched once here so the serving-app picker,
83
+ // the addressing copy, and the advisory all read one consistent list.
84
+ const { channelApps } = useChannelAppList(org || null);
85
+ const slackApps = useMemo(() => channelApps.filter((app) => app.spec?.providerConfig?.case === "slack"), [channelApps]);
86
+ // The app the install will (or did) go through: the picker's choice in
87
+ // create mode, the frozen spec.app_ref on a reconnect. null = platform.
88
+ const effectiveAppRef = channel
89
+ ? channel.spec?.appRef?.slug
90
+ ? { org: channel.spec.appRef.org || org, slug: channel.spec.appRef.slug }
91
+ : null
92
+ : appRef;
93
+ const selectedApp = effectiveAppRef
94
+ ? slackApps.find((app) => app.metadata?.slug === effectiveAppRef.slug) ?? null
95
+ : null;
96
+ // What members type after "@" in Slack. App-level, not agent-level: the
97
+ // platform app's bot is "Stigmer"; a BYO app's bot carries the name its
98
+ // manifest declared — which the registration form seeded from the
99
+ // ChannelApp's own name.
100
+ const botName = effectiveAppRef
101
+ ? selectedApp?.metadata?.name || effectiveAppRef.slug
102
+ : "Stigmer";
103
+ // Workspaces the selected serving app already occupies, matched on the
104
+ // same key the database enforces uniqueness on: (team, channel app).
105
+ // Advisory only — the list is permission-bounded, and other orgs'
106
+ // holds are invisible; completeInstall stays the arbiter.
107
+ const advisoryActive = deploymentMode === "cloud" && !channel && !installed;
108
+ const { channels: orgChannels } = useOrgAgentChannelList(advisoryActive && org ? org : null);
109
+ const alreadyServed = useMemo(() => {
110
+ // Platform app installs stamp an empty channel_app_id.
111
+ const selectedAppId = effectiveAppRef ? selectedApp?.metadata?.id : "";
112
+ if (selectedAppId === undefined)
113
+ return [];
114
+ return orgChannels.filter((c) => c.status?.installState === AgentChannelInstallState.installed &&
115
+ c.status?.providerStatus?.case === "slack" &&
116
+ c.status.providerStatus.value.channelAppId === selectedAppId);
117
+ }, [orgChannels, effectiveAppRef, selectedApp]);
118
+ // One click drives the whole journey: (create →) initiate → popup →
119
+ // complete. It must stay a single synchronous entry point — the popup
120
+ // opens inside connect(), and browsers only allow that from a
121
+ // user-gesture call stack.
122
+ const handleConnect = useCallback(async () => {
123
+ setError(null);
124
+ try {
125
+ let target = channel;
126
+ if (!target) {
127
+ target = await createChannel({
128
+ name: name.trim() || `${agentName} Slack`,
129
+ org,
130
+ agentRef: {
131
+ org,
132
+ slug: agent.metadata?.slug ?? "",
133
+ },
134
+ enabled: true,
135
+ slack: {},
136
+ ...(appRef ? { appRef } : {}),
137
+ ...(environmentRefs.length > 0 ? { environmentRefs } : {}),
138
+ });
139
+ // The channel now exists even if the install below fails or is
140
+ // abandoned — surface it in the list either way.
141
+ onChannelsChanged?.();
142
+ }
143
+ const result = await slack.connect(target.metadata?.id ?? "");
144
+ setInstalled(result);
145
+ onChannelsChanged?.();
146
+ }
147
+ catch (err) {
148
+ // Cancellation is a user decision, not a failure — the hook keeps
149
+ // error null for it; everything else renders below.
150
+ setError(slack.error ?? (err instanceof Error ? err : new Error(String(err))));
151
+ }
152
+ }, [agent, agentName, appRef, channel, createChannel, environmentRefs, name, org, onChannelsChanged, slack]);
153
+ const handleCancel = useCallback(() => {
154
+ slack.clearError();
155
+ setError(null);
156
+ }, [slack]);
157
+ const busy = isCreating || slack.isInProgress;
158
+ return (_jsxs("div", { className: "flex flex-col", children: [_jsxs("div", { className: "flex items-start justify-between gap-3 border-b border-border px-5 py-4", children: [_jsxs("div", { className: "flex items-center gap-2.5", children: [_jsx(SlackMarkIcon, { className: "size-5 text-foreground" }), _jsx("h2", { id: "connect-slack-title", className: "text-sm font-semibold text-foreground", children: channel ? "Reconnect to Slack" : "Connect to Slack" })] }), _jsx("button", { type: "button", onClick: onClose, "aria-label": "Close dialog", className: cn("rounded p-1 text-muted-foreground", "hover:bg-accent-hover hover:text-foreground", "focus:outline-none focus:ring-1 focus:ring-ring"), children: _jsx(CloseIcon, {}) })] }), _jsx("div", { className: "space-y-4 px-5 py-4", children: deploymentMode === "local" ? (
159
+ // Preempt the doomed flow: the OSS backend answers every install
160
+ // with FAILED_PRECONDITION, so don't open a popup destined to fail.
161
+ _jsx(CloudFeatureNotice, { children: "Channel installs require Stigmer Cloud. The local backend manages channel configuration, but connecting to Slack uses the platform's hosted Slack app." })) : installed ? (_jsx(InstalledSummary, { channel: installed, agentName: agentName, botName: botName })) : busy ? (_jsx(FlowProgress, { phase: slack.phase, onCancel: handleCancel })) : (_jsxs(_Fragment, { children: [!channel && (_jsxs("label", { className: "block", children: [_jsx("span", { className: "mb-1.5 block text-xs font-medium text-foreground", children: "Channel name" }), _jsx("input", { type: "text", value: name, onChange: (e) => setName(e.target.value), disabled: busy, className: cn("w-full rounded-md border border-input bg-background px-3 py-1.5", "text-sm text-foreground placeholder:text-muted-foreground", "focus:outline-none focus:ring-1 focus:ring-ring") }), _jsx("span", { className: "mt-1 block text-xs text-muted-foreground", children: "Names the connection in Stigmer \u2014 pick something that identifies the workspace if you connect more than one." })] })), !channel && (_jsx(ServingAppSection, { org: org, apps: slackApps, value: appRef, onChange: setAppRef, disabled: busy, channelAppsHref: channelAppsHref, idPrefix: "stgm-slack-app", platformOption: {
162
+ label: "Stigmer app",
163
+ hint: "Fastest — no setup, the bot is named Stigmer",
164
+ }, appHint: "Your app \u2014 your bot name and icon", emptyBody: _jsxs("p", { className: "text-xs text-muted-foreground", children: ["The platform", " ", _jsx("span", { className: "font-medium text-foreground", children: "Stigmer" }), " ", "app \u2014 no setup needed. Want the bot to carry your own name and icon, or several agents in one workspace?", " ", _jsx(RegisterChannelAppAffordance, { channelAppsHref: channelAppsHref, children: "Register a channel app" }), "."] }) })), alreadyServed.length > 0 && (_jsx(AlreadyServedNote, { botName: botName, channels: alreadyServed })), !channel && (_jsx(ToolCredentialsSection, { agent: agent, org: org, value: environmentRefs, onChange: setEnvironmentRefs, disabled: busy })), _jsx("p", { className: "text-sm text-muted-foreground", children: "When you continue, Slack asks which workspace to add the bot to \u2014 pick the one where your team should chat with this agent." }), _jsxs("p", { className: "text-sm text-muted-foreground", children: ["Members reach the agent by opening a direct message with", " ", _jsx("span", { className: "font-medium text-foreground", children: botName }), ", or typing @ in a channel and picking", " ", _jsx("span", { className: "font-medium text-foreground", children: botName }), " ", "from the list \u2014 it answers as", " ", _jsx("span", { className: "font-medium text-foreground", children: agentName }), "."] }), _jsxs("p", { className: "text-xs text-muted-foreground", children: ["Conversations from Slack are billed to", " ", _jsx("span", { className: "font-medium", children: org }), ". A workspace can host one agent per Slack app."] }), error && (_jsx(InstallRefusal, { error: error, channelAppsHref: channelAppsHref }))] })) }), _jsx("div", { className: "flex justify-end gap-2 border-t border-border px-5 py-3", children: installed || deploymentMode === "local" ? (_jsx(Button, { variant: "outline", size: "sm", onClick: onClose, children: installed ? "Done" : "Close" })) : (_jsxs(_Fragment, { children: [_jsx(Button, { variant: "ghost", size: "sm", onClick: onClose, disabled: busy, children: "Cancel" }), _jsx(Button, { variant: "primary", size: "sm", onClick: () => void handleConnect(), disabled: busy, icon: _jsx(SlackMarkIcon, { className: "size-3.5" }), "data-cursor-target": "dialog-connect-slack", children: error ? "Try again" : channel ? "Reconnect to Slack" : "Connect to Slack" })] })) })] }));
165
+ }
166
+ // ---------------------------------------------------------------------------
167
+ // Install refusal — guided for the duplicate-workspace reason
168
+ // ---------------------------------------------------------------------------
169
+ /**
170
+ * The reason code the server attaches (google.rpc.ErrorInfo, domain
171
+ * stigmer.ai) to a duplicate-workspace completeInstall refusal — see the
172
+ * completeInstall rpc comment for the vocabulary.
173
+ */
174
+ const REASON_WORKSPACE_ALREADY_CONNECTED = "SLACK_WORKSPACE_ALREADY_CONNECTED";
175
+ /**
176
+ * Install-refusal rendering. The duplicate-workspace refusal is the one
177
+ * a user can act on from here, so it gets a guided treatment — names the
178
+ * occupied workspace (from the ErrorInfo metadata) and offers the
179
+ * register-a-channel-app path. Every other refusal (and any error from a
180
+ * server not attaching reasons) renders the server's copy verbatim — the
181
+ * server owns that vocabulary.
182
+ */
183
+ function InstallRefusal({ error, channelAppsHref, }) {
184
+ const reason = getErrorReason(error);
185
+ if (reason?.reason !== REASON_WORKSPACE_ALREADY_CONNECTED) {
186
+ return _jsx(VerbatimRefusal, { error: error });
187
+ }
188
+ const team = reason.metadata.team_name || "This workspace";
189
+ return (_jsxs(RefusalBox, { children: [_jsxs("p", { children: [_jsx("span", { className: "font-medium", children: team }), " already hosts an agent through this app \u2014 a workspace hosts one agent per Slack app."] }), _jsxs("p", { children: ["To reach it with this agent, disconnect the existing channel, or", " ", _jsx(RegisterChannelAppAffordance, { channelAppsHref: channelAppsHref, children: "register a channel app" }), " ", "and connect through that instead."] })] }));
190
+ }
191
+ /**
192
+ * Pre-OAuth advisory: the selected serving app already occupies these
193
+ * workspaces, matched on the exact key the database enforces —
194
+ * (workspace, serving app). Shown before the user spends a Slack OAuth
195
+ * round-trip discovering it. Best-effort by design: the list is bounded
196
+ * by the caller's visibility and cannot see other orgs' holds, so the
197
+ * copy warns rather than forbids.
198
+ */
199
+ function AlreadyServedNote({ botName, channels, }) {
200
+ return (_jsx("div", { role: "status", className: "space-y-0.5 text-xs text-warning", children: channels.map((c) => {
201
+ const slack = c.status?.providerStatus?.case === "slack"
202
+ ? c.status.providerStatus.value
203
+ : null;
204
+ const team = slack?.teamName || slack?.teamId || "a workspace";
205
+ const agent = c.spec?.agentRef?.slug || "another agent";
206
+ return (_jsxs("p", { children: [_jsx("span", { className: "font-medium", children: botName }), " already serves", " ", _jsx("span", { className: "font-medium", children: team }), " via ", agent, " \u2014 a workspace hosts one agent per app, so connect through a different channel app to reach it."] }, c.metadata?.id ?? team));
207
+ }) }));
208
+ }
209
+ // ---------------------------------------------------------------------------
210
+ // Flow progress — one row per phase, the active one live
211
+ // ---------------------------------------------------------------------------
212
+ const FLOW_STEPS = [
213
+ { phase: "initiating", label: "Contacting Slack" },
214
+ { phase: "awaiting-callback", label: "Waiting for your approval in the Slack window" },
215
+ { phase: "completing", label: "Finalizing the connection" },
216
+ ];
217
+ function FlowProgress({ phase, onCancel, }) {
218
+ const activeIndex = FLOW_STEPS.findIndex((s) => s.phase === phase);
219
+ return (_jsxs("div", { className: "space-y-3", "aria-live": "polite", children: [_jsx("ul", { className: "space-y-2", children: FLOW_STEPS.map((step, i) => {
220
+ const isActive = i === activeIndex;
221
+ const isDone = activeIndex > i;
222
+ return (_jsxs("li", { className: cn("flex items-center gap-2 text-sm", isActive
223
+ ? "text-foreground"
224
+ : isDone
225
+ ? "text-muted-foreground"
226
+ : "text-muted-foreground-subtle"), children: [isDone ? (_jsx(CheckIcon, { className: "size-3.5 shrink-0 text-success" })) : isActive ? (_jsx(Spinner, { className: "size-3.5 shrink-0" })) : (_jsx("span", { className: "size-3.5 shrink-0 rounded-full border border-border", "aria-hidden": "true" })), step.label] }, step.phase));
227
+ }) }), _jsx(Button, { variant: "ghost", size: "xs", onClick: onCancel, children: "Cancel" })] }));
228
+ }
229
+ // ---------------------------------------------------------------------------
230
+ // Installed summary — the success state with the observed Slack facts
231
+ // ---------------------------------------------------------------------------
232
+ function InstalledSummary({ channel, agentName, botName, }) {
233
+ const slack = channel.status?.providerStatus?.case === "slack"
234
+ ? channel.status.providerStatus.value
235
+ : null;
236
+ return (_jsxs("div", { className: "space-y-2", role: "status", children: [_jsxs("div", { className: "flex items-center gap-2 text-sm font-medium text-foreground", children: [_jsx(CheckIcon, { className: "size-4 text-success" }), "Connected", slack?.teamName ? ` to ${slack.teamName}` : ""] }), _jsxs("p", { className: "text-sm text-muted-foreground", children: ["In Slack, open a direct message with", " ", _jsx("span", { className: "font-medium text-foreground", children: botName }), " \u2014 or type @ in any channel and pick", " ", _jsx("span", { className: "font-medium text-foreground", children: botName }), " from the list \u2014 then ask your question. Answers come from", " ", _jsx("span", { className: "font-medium text-foreground", children: agentName }), "."] })] }));
237
+ }
238
+ //# sourceMappingURL=ConnectSlackDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectSlackDialog.js","sourceRoot":"","sources":["../../src/channel/ConnectSlackDialog.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ import type { Agent } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/api_pb";
2
+ import type { AgentChannel } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/api_pb";
3
+ /** Props for {@link ConnectWhatsAppDialog}. */
4
+ export interface ConnectWhatsAppDialogProps {
5
+ /** Whether the dialog is open. */
6
+ readonly open: boolean;
7
+ /** Called when the dialog requests an open-state change. */
8
+ readonly onOpenChange: (open: boolean) => void;
9
+ /** The agent the channel connects. */
10
+ readonly agent: Agent;
11
+ /**
12
+ * An existing channel to (re)connect — a `pending_install` channel
13
+ * whose install never completed. Unlike Slack's frozen reconnect, the
14
+ * number and serving app stay editable here: a failed direct install
15
+ * usually means one of them is wrong, and both are server-mutable
16
+ * while the channel isn't installed. When omitted, the dialog opens in
17
+ * **create mode**.
18
+ */
19
+ readonly channel?: AgentChannel | null;
20
+ /**
21
+ * Called after the channel set changes (created, or install completed).
22
+ * Hosts typically pass the channel list's `refetch`.
23
+ */
24
+ readonly onChannelsChanged?: () => void;
25
+ /**
26
+ * When `false`, renders as an in-flow open dialog instead of a
27
+ * top-layer modal — no `showModal()`, no backdrop, no focus trap.
28
+ * For embedding the dialog in a constrained surface (documentation
29
+ * demos, visual tests). Interactive hosts keep the default.
30
+ * @default true
31
+ */
32
+ readonly modal?: boolean;
33
+ /**
34
+ * Where the host manages Channel Apps (the console passes
35
+ * `/settings/channel-apps`). When provided, the serving-app section
36
+ * and install refusals render a "Register a channel app" link there.
37
+ * SDK components never hardcode host routes — hosts inject the
38
+ * destination. Absent, the affordance degrades to plain guidance text.
39
+ */
40
+ readonly channelAppsHref?: string;
41
+ }
42
+ /**
43
+ * The connect flow for a WhatsApp channel: create the
44
+ * {@link AgentChannel} (create mode), then run the direct install — one
45
+ * server call that verifies the declared phone number against Meta's
46
+ * Graph API through the selected channel app's credentials (DD-WA-1).
47
+ * No consent popup, no callback route.
48
+ *
49
+ * WhatsApp is BYO-only (DD-WA-2): there is no platform Meta app, so a
50
+ * serving channel app is required — with none registered, the flow
51
+ * blocks on registering one first. The declared phone number ID is
52
+ * likewise required: the install proves it, and an empty value can only
53
+ * fail there.
54
+ *
55
+ * Requires Stigmer Cloud — on a `local` (OSS) backend the flow is
56
+ * preempted with a cloud-feature notice, matching the server's
57
+ * FAILED_PRECONDITION refusal. Install refusals render the server's
58
+ * copy verbatim except the duplicate-number refusal, which gets a
59
+ * guided treatment.
60
+ *
61
+ * Built on the native `<dialog>` element for focus trapping and escape
62
+ * handling, matching the SDK's modal convention
63
+ * ({@link ConnectSlackDialog}). All visual properties flow through
64
+ * `--stgm-*` design tokens.
65
+ *
66
+ * Most hosts mount it via {@link AgentChannelsPanel} (the Channels tab).
67
+ * Render it directly only when you own the open-state.
68
+ */
69
+ export declare function ConnectWhatsAppDialog({ open, onOpenChange, agent, channel, onChannelsChanged, modal, channelAppsHref, }: ConnectWhatsAppDialogProps): import("react/jsx-runtime").JSX.Element;
70
+ //# sourceMappingURL=ConnectWhatsAppDialog.d.ts.map