@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,133 @@
1
+ "use client";
2
+
3
+ import { useCallback, useRef, useState } from "react";
4
+ import type { ChannelApp } from "@stigmer/protos/ai/stigmer/agentic/channelapp/v1/api_pb";
5
+ import { ChannelAppListPanel } from "../channel-app/ChannelAppListPanel.js";
6
+ import {
7
+ CreateChannelAppForm,
8
+ type ChannelAppCreateHandoff,
9
+ } from "../channel-app/CreateChannelAppForm.js";
10
+ import { ChannelAppDetailPanel } from "../channel-app/ChannelAppDetailPanel.js";
11
+ import { useDeploymentMode } from "../deployment-mode.js";
12
+ import { CloudFeatureNotice } from "../internal/CloudFeatureNotice.js";
13
+ import { useActiveOrgSlug } from "../organization/OrgProvider.js";
14
+
15
+ type FlowState =
16
+ | { phase: "idle" }
17
+ | { phase: "creating" }
18
+ | {
19
+ phase: "editing";
20
+ channelApp: ChannelApp;
21
+ /**
22
+ * Once-visible create-flow values (the WhatsApp verify token),
23
+ * held in memory only for the detail panel's phase-two setup.
24
+ * Absent when editing reopens from the list later.
25
+ */
26
+ createHandoff?: ChannelAppCreateHandoff;
27
+ };
28
+
29
+ /**
30
+ * Settings section for the organization's channel apps — customer-owned
31
+ * provider apps (Slack apps, Meta WhatsApp apps) that agent channels
32
+ * install through. For Slack that replaces the shared Stigmer app (bring
33
+ * your own app: your bot name and icon, and one agent per app per
34
+ * workspace, so multiple agents can serve one workspace); for WhatsApp a
35
+ * channel app is the only way — there is no platform Meta app (DD-WA-2).
36
+ *
37
+ * After registering an app here, the connect dialog on any agent's
38
+ * Channels tab offers it as the serving app.
39
+ */
40
+ export function ChannelAppsSection() {
41
+ const org = useActiveOrgSlug();
42
+ // Channel installs (the consumer of these credentials) are cloud-only;
43
+ // gate the whole section the way the Channels tab gates connects.
44
+ const installsAvailable = useDeploymentMode() === "cloud";
45
+
46
+ const [flow, setFlow] = useState<FlowState>({ phase: "idle" });
47
+ const listRefetchRef = useRef<(() => void) | null>(null);
48
+
49
+ const handleRefetchRef = useCallback((refetch: () => void) => {
50
+ listRefetchRef.current = refetch;
51
+ }, []);
52
+
53
+ const handleCreated = useCallback(
54
+ (app: ChannelApp, createHandoff: ChannelAppCreateHandoff) => {
55
+ listRefetchRef.current?.();
56
+ // Creation lands on the detail panel deliberately: phase two of the
57
+ // setup (the events webhook URL — plus, for WhatsApp, the verify
58
+ // token carried in the handoff) only exists now.
59
+ setFlow({ phase: "editing", channelApp: app, createHandoff });
60
+ },
61
+ [],
62
+ );
63
+
64
+ const handleUpdated = useCallback(() => {
65
+ listRefetchRef.current?.();
66
+ setFlow({ phase: "idle" });
67
+ }, []);
68
+
69
+ const handleDeleted = useCallback(() => {
70
+ listRefetchRef.current?.();
71
+ setFlow({ phase: "idle" });
72
+ }, []);
73
+
74
+ return (
75
+ <section aria-labelledby="channel-apps-heading">
76
+ <div className="mb-3 flex items-center justify-between">
77
+ <h2
78
+ id="channel-apps-heading"
79
+ className="text-foreground text-sm font-semibold"
80
+ >
81
+ Channel Apps
82
+ </h2>
83
+
84
+ {installsAvailable && org && flow.phase === "idle" && (
85
+ <button
86
+ type="button"
87
+ onClick={() => setFlow({ phase: "creating" })}
88
+ className="text-primary hover:text-foreground text-xs font-medium transition-colors"
89
+ >
90
+ + New channel app
91
+ </button>
92
+ )}
93
+ </div>
94
+ <p className="text-muted-foreground mb-4 text-xs">
95
+ Your own provider apps for serving agent channels. A Slack app
96
+ gives the bot your name and icon, and lets multiple agents serve
97
+ the same workspace — one per app. A Meta app is how WhatsApp
98
+ channels connect — every WhatsApp channel installs through one.
99
+ </p>
100
+
101
+ {!installsAvailable ? (
102
+ <CloudFeatureNotice>
103
+ Channel apps are not available in local mode. Channel installs
104
+ require Stigmer Cloud.
105
+ </CloudFeatureNotice>
106
+ ) : flow.phase === "creating" ? (
107
+ <div className="border-border bg-card rounded-lg border p-4">
108
+ <CreateChannelAppForm
109
+ org={org}
110
+ onCreated={handleCreated}
111
+ onCancel={() => setFlow({ phase: "idle" })}
112
+ />
113
+ </div>
114
+ ) : flow.phase === "editing" ? (
115
+ <div className="border-border bg-card rounded-lg border p-4">
116
+ <ChannelAppDetailPanel
117
+ channelApp={flow.channelApp}
118
+ createHandoff={flow.createHandoff}
119
+ onUpdated={handleUpdated}
120
+ onDeleted={handleDeleted}
121
+ onBack={() => setFlow({ phase: "idle" })}
122
+ />
123
+ </div>
124
+ ) : (
125
+ <ChannelAppListPanel
126
+ org={org}
127
+ onEdit={(app) => setFlow({ phase: "editing", channelApp: app })}
128
+ onRefetchRef={handleRefetchRef}
129
+ />
130
+ )}
131
+ </section>
132
+ );
133
+ }
@@ -12,4 +12,5 @@ export { IdentityProvidersSection } from "./IdentityProvidersSection.js";
12
12
  export type { IdentityProvidersSectionProps } from "./IdentityProvidersSection.js";
13
13
  export { PlatformClientsSection } from "./PlatformClientsSection.js";
14
14
  export { OAuthAppsSection } from "./OAuthAppsSection.js";
15
+ export { ChannelAppsSection } from "./ChannelAppsSection.js";
15
16
  export { UsageSection } from "./UsageSection.js";
@@ -7,6 +7,7 @@ import {
7
7
  CreditCard,
8
8
  KeyRound,
9
9
  Link,
10
+ MessageSquare,
10
11
  Plug,
11
12
  ShieldCheck,
12
13
  Users,
@@ -65,6 +66,11 @@ export const SETTINGS_NAV_GROUPS: readonly SettingsNavGroup[] = [
65
66
  },
66
67
  { href: "/settings/environments", label: "Environments", icon: Box },
67
68
  { href: "/settings/oauth-apps", label: "OAuth Apps", icon: AppWindow },
69
+ {
70
+ href: "/settings/channel-apps",
71
+ label: "Channel Apps",
72
+ icon: MessageSquare,
73
+ },
68
74
  ],
69
75
  },
70
76
  {
@@ -1,6 +1,7 @@
1
1
  "use client";
2
2
 
3
3
  import { useCallback, useState } from "react";
4
+ import { MoreHorizontal, Pause, Pencil, Play, RotateCcw, Trash2 } from "lucide-react";
4
5
  import { cn } from "@stigmer/theme";
5
6
  import {
6
7
  appendLinkToken,
@@ -10,9 +11,10 @@ import {
10
11
  import type { Agent } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/api_pb";
11
12
  import type { AgentShare } from "@stigmer/protos/ai/stigmer/agentic/agentshare/v1/api_pb";
12
13
  import { toast } from "../feedback/toast.js";
14
+ import { ActionMenu } from "../action-menu/index.js";
13
15
  import { Button } from "../button/Button.js";
14
16
  import { EmptyState } from "../empty-state/EmptyState.js";
15
- import { PermissionGate } from "../iam-policy/PermissionGate.js";
17
+ import { useCheckPermission } from "../iam-policy/useCheckPermission.js";
16
18
  import { ConfirmDialog } from "../resource-detail/ConfirmDialog.js";
17
19
  import { useConfirmAction } from "../resource-detail/useConfirmAction.js";
18
20
  import { useCopyResource } from "../resource-detail/useCopyResource.js";
@@ -164,14 +166,17 @@ export function AgentShareList({
164
166
  </div>
165
167
 
166
168
  <div className="overflow-hidden rounded-lg border border-border">
167
- <table className="w-full text-sm">
169
+ {/* table-fixed keeps the layout deterministic: Name/Link flex and
170
+ truncate, the rest take fixed widths, so a long name or link
171
+ can never push the Actions kebab off the panel's edge. */}
172
+ <table className="w-full table-fixed text-sm">
168
173
  <thead>
169
174
  <tr className="border-b border-border bg-muted-subtle">
170
175
  <th className="px-4 py-2 text-left font-medium text-muted-foreground">Name</th>
171
176
  <th className="px-4 py-2 text-left font-medium text-muted-foreground">Link</th>
172
- <th className="px-4 py-2 text-left font-medium text-muted-foreground">Audience</th>
173
- <th className="px-4 py-2 text-left font-medium text-muted-foreground">Status</th>
174
- <th className="px-4 py-2 text-right font-medium text-muted-foreground">Actions</th>
177
+ <th className="w-28 px-4 py-2 text-left font-medium text-muted-foreground">Audience</th>
178
+ <th className="w-24 px-4 py-2 text-left font-medium text-muted-foreground">Status</th>
179
+ <th className="w-16 px-4 py-2 text-right font-medium text-muted-foreground">Actions</th>
175
180
  </tr>
176
181
  </thead>
177
182
  <tbody className="divide-y divide-border">
@@ -248,6 +253,19 @@ function ShareRow({
248
253
  const { save, isPending } = useSaveAgentShare(agent);
249
254
  const { rotateShareLink, isPending: isRotating } = useRotateShareLink(id);
250
255
 
256
+ // Decide the row's actions here (not via nested PermissionGate wrappers) so
257
+ // the kebab is hidden entirely when the viewer can do nothing to this
258
+ // share — an empty overflow menu is worse than no menu. Same self-check
259
+ // RPC as PermissionGate; permissive in OSS, so local single-user sees all.
260
+ const { allowed: canEdit } = useCheckPermission(
261
+ { kind: "agent_share", id },
262
+ "can_edit",
263
+ );
264
+ const { allowed: canDelete } = useCheckPermission(
265
+ { kind: "agent_share", id },
266
+ "can_delete",
267
+ );
268
+
251
269
  // The copyable URL carries the link token on public shares (org
252
270
  // audience is gated by membership, not the token). The display stays
253
271
  // the bare path — the token is a secret, not an address.
@@ -292,14 +310,17 @@ function ShareRow({
292
310
  onClick={() => onEditClick(share)}
293
311
  >
294
312
  <td className="px-4 py-2.5">
295
- <div className="flex items-center gap-2">
296
- <span className="font-medium text-foreground">
313
+ <div className="flex min-w-0 items-center gap-2">
314
+ <span
315
+ className="truncate font-medium text-foreground"
316
+ title={meta?.name || slug || undefined}
317
+ >
297
318
  {meta?.name || slug || "\u2014"}
298
319
  </span>
299
320
  {isCrossOrg && (
300
321
  <span
301
322
  className={cn(
302
- "inline-flex items-center rounded-md px-1.5 py-0.5",
323
+ "inline-flex shrink-0 items-center rounded-md px-1.5 py-0.5",
303
324
  "text-[0.6rem] font-medium uppercase tracking-wide",
304
325
  "bg-muted text-muted-foreground border border-border",
305
326
  )}
@@ -312,9 +333,9 @@ function ShareRow({
312
333
  </td>
313
334
 
314
335
  <td className="px-4 py-2.5" onClick={(e) => e.stopPropagation()}>
315
- <div className="flex items-center gap-1.5">
336
+ <div className="flex min-w-0 items-center gap-1.5">
316
337
  <code
317
- className="max-w-56 truncate font-mono text-xs text-muted-foreground"
338
+ className="truncate font-mono text-xs text-muted-foreground"
318
339
  title={displayPath}
319
340
  >
320
341
  {displayPath}
@@ -324,7 +345,7 @@ function ShareRow({
324
345
  onClick={handleCopyLink}
325
346
  aria-label={`Copy link for ${meta?.name || slug}`}
326
347
  className={cn(
327
- "rounded p-1 text-muted-foreground",
348
+ "shrink-0 rounded p-1 text-muted-foreground",
328
349
  "hover:bg-accent-hover hover:text-foreground",
329
350
  "focus:outline-none focus:ring-1 focus:ring-ring",
330
351
  )}
@@ -358,63 +379,63 @@ function ShareRow({
358
379
  </span>
359
380
  </td>
360
381
 
382
+ {/* stopPropagation so opening the kebab never triggers the row's
383
+ click-to-edit. The menu content itself is portaled, so its items
384
+ never bubble to the row regardless. */}
361
385
  <td className="px-4 py-2.5 text-right" onClick={(e) => e.stopPropagation()}>
362
- <div className="flex items-center justify-end gap-1">
363
- <PermissionGate resource={{ kind: "agent_share", id }} relation="can_edit">
364
- <button
365
- type="button"
366
- onClick={() => onEditClick(share)}
367
- className={cn(
368
- "rounded px-2 py-1 text-xs font-medium",
369
- "text-foreground hover:bg-accent-hover",
370
- "focus:outline-none focus:ring-1 focus:ring-ring",
371
- )}
386
+ {(canEdit || canDelete) && (
387
+ <ActionMenu>
388
+ <ActionMenu.Trigger
389
+ className="ml-auto"
390
+ aria-label={`Actions for ${meta?.name || slug}`}
372
391
  >
373
- Edit
374
- </button>
375
- <button
376
- type="button"
377
- onClick={() => void handleToggleEnabled()}
378
- disabled={isPending}
379
- className={cn(
380
- "rounded px-2 py-1 text-xs font-medium",
381
- "text-foreground hover:bg-accent-hover",
382
- "focus:outline-none focus:ring-1 focus:ring-ring",
383
- "disabled:pointer-events-none disabled:opacity-50",
392
+ <MoreHorizontal className="size-4" />
393
+ </ActionMenu.Trigger>
394
+ <ActionMenu.Content>
395
+ {canEdit && (
396
+ <>
397
+ {/* Also the only keyboard-reachable path to edit — the
398
+ row's click-to-edit is mouse-only. */}
399
+ <ActionMenu.Item
400
+ icon={<Pencil />}
401
+ onSelect={() => onEditClick(share)}
402
+ >
403
+ Edit
404
+ </ActionMenu.Item>
405
+ {/* The menu closes on select; a toast reports the outcome,
406
+ so no inline pending label is needed. `disabled` guards
407
+ against a re-fire if the menu is reopened mid-flight. */}
408
+ <ActionMenu.Item
409
+ icon={enabled ? <Pause /> : <Play />}
410
+ disabled={isPending}
411
+ onSelect={() => void handleToggleEnabled()}
412
+ >
413
+ {enabled ? "Pause" : "Resume"}
414
+ </ActionMenu.Item>
415
+ {audience === "public" && (
416
+ <ActionMenu.Item
417
+ icon={<RotateCcw />}
418
+ disabled={isRotating}
419
+ onSelect={() => void handleResetLink()}
420
+ >
421
+ Reset link
422
+ </ActionMenu.Item>
423
+ )}
424
+ </>
384
425
  )}
385
- >
386
- {enabled ? "Pause" : "Resume"}
387
- </button>
388
- {audience === "public" && (
389
- <button
390
- type="button"
391
- onClick={() => void handleResetLink()}
392
- disabled={isRotating}
393
- className={cn(
394
- "rounded px-2 py-1 text-xs font-medium",
395
- "text-foreground hover:bg-accent-hover",
396
- "focus:outline-none focus:ring-1 focus:ring-ring",
397
- "disabled:pointer-events-none disabled:opacity-50",
398
- )}
399
- >
400
- {isRotating ? "Resetting…" : "Reset link"}
401
- </button>
402
- )}
403
- </PermissionGate>
404
- <PermissionGate resource={{ kind: "agent_share", id }} relation="can_delete">
405
- <button
406
- type="button"
407
- onClick={() => onDeleteClick(share)}
408
- className={cn(
409
- "rounded px-2 py-1 text-xs font-medium",
410
- "text-destructive hover:bg-destructive-subtle",
411
- "focus:outline-none focus:ring-1 focus:ring-ring",
426
+ {canEdit && canDelete && <ActionMenu.Separator />}
427
+ {canDelete && (
428
+ <ActionMenu.Item
429
+ icon={<Trash2 />}
430
+ variant="destructive"
431
+ onSelect={() => onDeleteClick(share)}
432
+ >
433
+ Delete
434
+ </ActionMenu.Item>
412
435
  )}
413
- >
414
- Delete
415
- </button>
416
- </PermissionGate>
417
- </div>
436
+ </ActionMenu.Content>
437
+ </ActionMenu>
438
+ )}
418
439
  </td>
419
440
  </tr>
420
441
  );
@@ -47,7 +47,7 @@ const SHARE_TABS: readonly TabItem[] = [
47
47
  ];
48
48
 
49
49
  const PLATFORM_CLIENT_DOCS_URL =
50
- "https://docs.stigmer.ai/guides/authentication/platform-client/overview";
50
+ "https://stigmer.ai/docs/guides/authentication/platform-client/overview";
51
51
 
52
52
  /** Props for {@link ShareAgentDialog}. */
53
53
  export interface ShareAgentDialogProps {
@@ -14,14 +14,31 @@ vi.mock("../../feedback/toast", () => ({
14
14
  toast: { success: vi.fn(), error: vi.fn() },
15
15
  }));
16
16
 
17
- // happy-dom does not implement the native dialog show/close methods.
17
+ // The row actions live in a Base UI menu, whose content is portaled to the
18
+ // SDK portal container. Without a StigmerProvider that container is null and
19
+ // the menu renders nothing — pin it to document.body so the menu mounts.
20
+ vi.mock("../../portal-container", () => ({
21
+ useStigmerPortalContainer: () => document.body,
22
+ }));
23
+
18
24
  beforeAll(() => {
25
+ // happy-dom does not implement the native dialog show/close methods.
19
26
  HTMLDialogElement.prototype.showModal = function showModal() {
20
27
  this.open = true;
21
28
  };
22
29
  HTMLDialogElement.prototype.close = function close() {
23
30
  this.open = false;
24
31
  };
32
+ // Base UI's menu positioner observes its anchor; happy-dom lacks
33
+ // ResizeObserver, so provide a no-op shim.
34
+ if (!("ResizeObserver" in globalThis)) {
35
+ (globalThis as unknown as { ResizeObserver: unknown }).ResizeObserver =
36
+ class {
37
+ observe() {}
38
+ unobserve() {}
39
+ disconnect() {}
40
+ };
41
+ }
25
42
  });
26
43
 
27
44
  afterEach(cleanup);
@@ -32,6 +49,11 @@ interface MockOverrides {
32
49
  deleteShare?: (id: string) => Promise<unknown>;
33
50
  rotateShareLink?: (input: unknown) => Promise<unknown>;
34
51
  isAuthorized?: boolean;
52
+ /**
53
+ * Per-relation authorization, for tests that need `can_edit` and
54
+ * `can_delete` to differ. Takes precedence over `isAuthorized`.
55
+ */
56
+ checkPermission?: (relation: string) => boolean;
35
57
  }
36
58
 
37
59
  function createMockStigmer(overrides: MockOverrides = {}) {
@@ -46,9 +68,15 @@ function createMockStigmer(overrides: MockOverrides = {}) {
46
68
  overrides.rotateShareLink ?? vi.fn().mockResolvedValue({}),
47
69
  },
48
70
  iamPolicy: {
49
- checkMyPermission: vi.fn().mockResolvedValue({
50
- isAuthorized: overrides.isAuthorized ?? true,
51
- }),
71
+ checkMyPermission: vi
72
+ .fn()
73
+ .mockImplementation((input: { relation: string }) =>
74
+ Promise.resolve({
75
+ isAuthorized: overrides.checkPermission
76
+ ? overrides.checkPermission(input.relation)
77
+ : (overrides.isAuthorized ?? true),
78
+ }),
79
+ ),
52
80
  },
53
81
  environment: {
54
82
  list: vi.fn().mockResolvedValue({ items: [], totalCount: 0 }),
@@ -143,6 +171,19 @@ async function renderList(
143
171
  );
144
172
  }
145
173
 
174
+ /**
175
+ * Opens a row's overflow (kebab) menu and resolves once its items mount.
176
+ * Pass the row's visible name to disambiguate when several rows are present.
177
+ * The menu content is portaled, so query its items from `screen`, not the row.
178
+ */
179
+ async function openRowMenu(rowName?: string) {
180
+ const scope = rowName
181
+ ? within(screen.getByText(rowName).closest("tr")!)
182
+ : screen;
183
+ fireEvent.click(scope.getByRole("button", { name: /^Actions for/ }));
184
+ await screen.findByRole("menuitem", { name: "Edit" });
185
+ }
186
+
146
187
  describe("AgentShareList", () => {
147
188
  it("lists every share with link, audience, and status — no canonical collapse", async () => {
148
189
  const client = createMockStigmer({
@@ -220,8 +261,8 @@ describe("AgentShareList", () => {
220
261
  });
221
262
  await renderList(client);
222
263
 
223
- const row = screen.getByText("Help Desk").closest("tr")!;
224
- fireEvent.click(within(row).getByRole("button", { name: "Edit" }));
264
+ await openRowMenu("Help Desk");
265
+ fireEvent.click(screen.getByRole("menuitem", { name: "Edit" }));
225
266
 
226
267
  // The editor shows the chosen share's URL — not the first row's.
227
268
  expect(
@@ -281,7 +322,8 @@ describe("AgentShareList", () => {
281
322
  });
282
323
  await renderList(client);
283
324
 
284
- fireEvent.click(screen.getByRole("button", { name: "Pause" }));
325
+ await openRowMenu();
326
+ fireEvent.click(screen.getByRole("menuitem", { name: "Pause" }));
285
327
 
286
328
  await waitFor(() => expect(apply).toHaveBeenCalledTimes(1));
287
329
  const input = apply.mock.calls[0][0] as AgentShareInput;
@@ -302,7 +344,8 @@ describe("AgentShareList", () => {
302
344
  });
303
345
  await renderList(client);
304
346
 
305
- fireEvent.click(screen.getByRole("button", { name: "Resume" }));
347
+ await openRowMenu();
348
+ fireEvent.click(screen.getByRole("menuitem", { name: "Resume" }));
306
349
 
307
350
  await waitFor(() => expect(apply).toHaveBeenCalledTimes(1));
308
351
  expect((apply.mock.calls[0][0] as AgentShareInput).enabled).toBe(true);
@@ -318,7 +361,8 @@ describe("AgentShareList", () => {
318
361
  });
319
362
  await renderList(client);
320
363
 
321
- fireEvent.click(screen.getByRole("button", { name: "Reset link" }));
364
+ await openRowMenu();
365
+ fireEvent.click(screen.getByRole("menuitem", { name: "Reset link" }));
322
366
 
323
367
  await waitFor(() => expect(rotateShareLink).toHaveBeenCalledTimes(1));
324
368
  expect(
@@ -334,7 +378,8 @@ describe("AgentShareList", () => {
334
378
  });
335
379
  await renderList(client);
336
380
 
337
- expect(screen.queryByRole("button", { name: "Reset link" })).toBeNull();
381
+ await openRowMenu();
382
+ expect(screen.queryByRole("menuitem", { name: "Reset link" })).toBeNull();
338
383
  });
339
384
  });
340
385
 
@@ -345,7 +390,8 @@ describe("AgentShareList", () => {
345
390
  const client = createMockStigmer({ deleteShare, getByAgent });
346
391
  await renderList(client);
347
392
 
348
- fireEvent.click(screen.getByRole("button", { name: "Delete" }));
393
+ await openRowMenu();
394
+ fireEvent.click(screen.getByRole("menuitem", { name: "Delete" }));
349
395
 
350
396
  // The confirmation names the destructive consequence and the
351
397
  // config-preserving alternative (pause).
@@ -369,7 +415,8 @@ describe("AgentShareList", () => {
369
415
  });
370
416
  await renderList(client);
371
417
 
372
- fireEvent.click(screen.getByRole("button", { name: "Delete" }));
418
+ await openRowMenu();
419
+ fireEvent.click(screen.getByRole("menuitem", { name: "Delete" }));
373
420
  expect(await screen.findByText("Delete share?")).toBeTruthy();
374
421
 
375
422
  fireEvent.click(screen.getByRole("button", { name: "Cancel", hidden: true }));
@@ -377,6 +424,39 @@ describe("AgentShareList", () => {
377
424
  });
378
425
  });
379
426
 
427
+ describe("actions menu gating", () => {
428
+ it("hides the kebab entirely when the viewer can neither edit nor delete", async () => {
429
+ const client = createMockStigmer({
430
+ getByAgent: withShares(makeShare()),
431
+ isAuthorized: false,
432
+ });
433
+ await renderList(client);
434
+
435
+ // The row still renders; only its actions collapse away — an empty
436
+ // overflow menu would be worse than no menu. The permission self-check
437
+ // resolves asynchronously (optimistic-visible first), so wait for the
438
+ // denial to land and the kebab to disappear.
439
+ expect(screen.getByText("Support Agent")).toBeTruthy();
440
+ await waitFor(() =>
441
+ expect(screen.queryByRole("button", { name: /^Actions for/ })).toBeNull(),
442
+ );
443
+ });
444
+
445
+ it("offers only Delete when the viewer can delete but not edit", async () => {
446
+ const client = createMockStigmer({
447
+ getByAgent: withShares(makeShare()),
448
+ checkPermission: (relation) => relation === "can_delete",
449
+ });
450
+ await renderList(client);
451
+
452
+ fireEvent.click(screen.getByRole("button", { name: /^Actions for/ }));
453
+ expect(await screen.findByRole("menuitem", { name: "Delete" })).toBeTruthy();
454
+ expect(screen.queryByRole("menuitem", { name: "Edit" })).toBeNull();
455
+ expect(screen.queryByRole("menuitem", { name: "Pause" })).toBeNull();
456
+ expect(screen.queryByRole("menuitem", { name: "Reset link" })).toBeNull();
457
+ });
458
+ });
459
+
380
460
  it("shows an error state when the share list fails to load", async () => {
381
461
  const client = createMockStigmer({
382
462
  getByAgent: vi.fn().mockRejectedValue(new Error("backend unavailable")),