@stigmer/react 3.1.16 → 3.2.0

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 (824) hide show
  1. package/README.md +16 -1
  2. package/agent-instance/AgentInstanceList.d.ts.map +1 -1
  3. package/agent-instance/AgentInstanceList.js +11 -3
  4. package/agent-instance/AgentInstanceList.js.map +1 -1
  5. package/channel/AgentChannelsPanel.d.ts +60 -0
  6. package/channel/AgentChannelsPanel.d.ts.map +1 -0
  7. package/channel/AgentChannelsPanel.js +255 -0
  8. package/channel/AgentChannelsPanel.js.map +1 -0
  9. package/channel/ChannelConversationsDialog.d.ts +41 -0
  10. package/channel/ChannelConversationsDialog.d.ts.map +1 -0
  11. package/channel/ChannelConversationsDialog.js +94 -0
  12. package/channel/ChannelConversationsDialog.js.map +1 -0
  13. package/channel/ChannelCredentialsDialog.d.ts +37 -0
  14. package/channel/ChannelCredentialsDialog.d.ts.map +1 -0
  15. package/channel/ChannelCredentialsDialog.js +75 -0
  16. package/channel/ChannelCredentialsDialog.js.map +1 -0
  17. package/channel/ChannelToolCredentials.d.ts +31 -0
  18. package/channel/ChannelToolCredentials.d.ts.map +1 -0
  19. package/channel/ChannelToolCredentials.js +41 -0
  20. package/channel/ChannelToolCredentials.js.map +1 -0
  21. package/channel/ConnectSlackDialog.d.ts +61 -0
  22. package/channel/ConnectSlackDialog.d.ts.map +1 -0
  23. package/channel/ConnectSlackDialog.js +238 -0
  24. package/channel/ConnectSlackDialog.js.map +1 -0
  25. package/channel/ConnectWhatsAppDialog.d.ts +70 -0
  26. package/channel/ConnectWhatsAppDialog.d.ts.map +1 -0
  27. package/channel/ConnectWhatsAppDialog.js +256 -0
  28. package/channel/ConnectWhatsAppDialog.js.map +1 -0
  29. package/channel/SlackMarkIcon.d.ts +11 -0
  30. package/channel/SlackMarkIcon.d.ts.map +1 -0
  31. package/channel/SlackMarkIcon.js +13 -0
  32. package/channel/SlackMarkIcon.js.map +1 -0
  33. package/channel/WhatsAppMarkIcon.d.ts +12 -0
  34. package/channel/WhatsAppMarkIcon.d.ts.map +1 -0
  35. package/channel/WhatsAppMarkIcon.js +14 -0
  36. package/channel/WhatsAppMarkIcon.js.map +1 -0
  37. package/channel/connect/ServingAppSection.d.ts +57 -0
  38. package/channel/connect/ServingAppSection.d.ts.map +1 -0
  39. package/channel/connect/ServingAppSection.js +49 -0
  40. package/channel/connect/ServingAppSection.js.map +1 -0
  41. package/channel/connect/ToolCredentialsSection.d.ts +20 -0
  42. package/channel/connect/ToolCredentialsSection.d.ts.map +1 -0
  43. package/channel/connect/ToolCredentialsSection.js +22 -0
  44. package/channel/connect/ToolCredentialsSection.js.map +1 -0
  45. package/channel/connect/VerbatimRefusal.d.ts +16 -0
  46. package/channel/connect/VerbatimRefusal.d.ts.map +1 -0
  47. package/channel/connect/VerbatimRefusal.js +18 -0
  48. package/channel/connect/VerbatimRefusal.js.map +1 -0
  49. package/channel/connect/icons.d.ts +16 -0
  50. package/channel/connect/icons.d.ts.map +1 -0
  51. package/channel/connect/icons.js +21 -0
  52. package/channel/connect/icons.js.map +1 -0
  53. package/channel/index.d.ts +36 -0
  54. package/channel/index.d.ts.map +1 -0
  55. package/channel/index.js +19 -0
  56. package/channel/index.js.map +1 -0
  57. package/channel/providerPresentation.d.ts +44 -0
  58. package/channel/providerPresentation.d.ts.map +1 -0
  59. package/channel/providerPresentation.js +106 -0
  60. package/channel/providerPresentation.js.map +1 -0
  61. package/channel/providers.d.ts +62 -0
  62. package/channel/providers.d.ts.map +1 -0
  63. package/channel/providers.js +26 -0
  64. package/channel/providers.js.map +1 -0
  65. package/channel/useAgentChannel.d.ts +31 -0
  66. package/channel/useAgentChannel.d.ts.map +1 -0
  67. package/channel/useAgentChannel.js +34 -0
  68. package/channel/useAgentChannel.js.map +1 -0
  69. package/channel/useAgentChannelList.d.ts +43 -0
  70. package/channel/useAgentChannelList.d.ts.map +1 -0
  71. package/channel/useAgentChannelList.js +39 -0
  72. package/channel/useAgentChannelList.js.map +1 -0
  73. package/channel/useChannelSessions.d.ts +47 -0
  74. package/channel/useChannelSessions.d.ts.map +1 -0
  75. package/channel/useChannelSessions.js +38 -0
  76. package/channel/useChannelSessions.js.map +1 -0
  77. package/channel/useChannelToolReadiness.d.ts +23 -0
  78. package/channel/useChannelToolReadiness.d.ts.map +1 -0
  79. package/channel/useChannelToolReadiness.js +28 -0
  80. package/channel/useChannelToolReadiness.js.map +1 -0
  81. package/channel/useConnectSlackChannel.d.ts +75 -0
  82. package/channel/useConnectSlackChannel.d.ts.map +1 -0
  83. package/channel/useConnectSlackChannel.js +115 -0
  84. package/channel/useConnectSlackChannel.js.map +1 -0
  85. package/channel/useCreateAgentChannel.d.ts +42 -0
  86. package/channel/useCreateAgentChannel.d.ts.map +1 -0
  87. package/channel/useCreateAgentChannel.js +48 -0
  88. package/channel/useCreateAgentChannel.js.map +1 -0
  89. package/channel/useDeleteAgentChannel.d.ts +40 -0
  90. package/channel/useDeleteAgentChannel.d.ts.map +1 -0
  91. package/channel/useDeleteAgentChannel.js +44 -0
  92. package/channel/useDeleteAgentChannel.js.map +1 -0
  93. package/channel/useInstallChannel.d.ts +60 -0
  94. package/channel/useInstallChannel.d.ts.map +1 -0
  95. package/channel/useInstallChannel.js +63 -0
  96. package/channel/useInstallChannel.js.map +1 -0
  97. package/channel/useOrgAgentChannelList.d.ts +32 -0
  98. package/channel/useOrgAgentChannelList.d.ts.map +1 -0
  99. package/channel/useOrgAgentChannelList.js +29 -0
  100. package/channel/useOrgAgentChannelList.js.map +1 -0
  101. package/channel/useSaveAgentChannel.d.ts +63 -0
  102. package/channel/useSaveAgentChannel.d.ts.map +1 -0
  103. package/channel/useSaveAgentChannel.js +104 -0
  104. package/channel/useSaveAgentChannel.js.map +1 -0
  105. package/channel-app/ChannelAppDetailPanel.d.ts +46 -0
  106. package/channel-app/ChannelAppDetailPanel.d.ts.map +1 -0
  107. package/channel-app/ChannelAppDetailPanel.js +142 -0
  108. package/channel-app/ChannelAppDetailPanel.js.map +1 -0
  109. package/channel-app/ChannelAppListPanel.d.ts +36 -0
  110. package/channel-app/ChannelAppListPanel.d.ts.map +1 -0
  111. package/channel-app/ChannelAppListPanel.js +63 -0
  112. package/channel-app/ChannelAppListPanel.js.map +1 -0
  113. package/channel-app/CreateChannelAppForm.d.ts +54 -0
  114. package/channel-app/CreateChannelAppForm.d.ts.map +1 -0
  115. package/channel-app/CreateChannelAppForm.js +140 -0
  116. package/channel-app/CreateChannelAppForm.js.map +1 -0
  117. package/channel-app/index.d.ts +18 -0
  118. package/channel-app/index.d.ts.map +1 -0
  119. package/channel-app/index.js +10 -0
  120. package/channel-app/index.js.map +1 -0
  121. package/channel-app/internal.d.ts +33 -0
  122. package/channel-app/internal.d.ts.map +1 -0
  123. package/channel-app/internal.js +44 -0
  124. package/channel-app/internal.js.map +1 -0
  125. package/channel-app/slackAppSetup.d.ts +80 -0
  126. package/channel-app/slackAppSetup.d.ts.map +1 -0
  127. package/channel-app/slackAppSetup.js +123 -0
  128. package/channel-app/slackAppSetup.js.map +1 -0
  129. package/channel-app/useChannelAppList.d.ts +35 -0
  130. package/channel-app/useChannelAppList.d.ts.map +1 -0
  131. package/channel-app/useChannelAppList.js +34 -0
  132. package/channel-app/useChannelAppList.js.map +1 -0
  133. package/channel-app/useCreateChannelApp.d.ts +39 -0
  134. package/channel-app/useCreateChannelApp.d.ts.map +1 -0
  135. package/channel-app/useCreateChannelApp.js +50 -0
  136. package/channel-app/useCreateChannelApp.js.map +1 -0
  137. package/channel-app/useDeleteChannelApp.d.ts +31 -0
  138. package/channel-app/useDeleteChannelApp.d.ts.map +1 -0
  139. package/channel-app/useDeleteChannelApp.js +43 -0
  140. package/channel-app/useDeleteChannelApp.js.map +1 -0
  141. package/channel-app/useUpdateChannelApp.d.ts +39 -0
  142. package/channel-app/useUpdateChannelApp.d.ts.map +1 -0
  143. package/channel-app/useUpdateChannelApp.js +50 -0
  144. package/channel-app/useUpdateChannelApp.js.map +1 -0
  145. package/channel-app/whatsappAppSetup.d.ts +51 -0
  146. package/channel-app/whatsappAppSetup.d.ts.map +1 -0
  147. package/channel-app/whatsappAppSetup.js +57 -0
  148. package/channel-app/whatsappAppSetup.js.map +1 -0
  149. package/environment/index.d.ts +2 -0
  150. package/environment/index.d.ts.map +1 -1
  151. package/environment/index.js +1 -0
  152. package/environment/index.js.map +1 -1
  153. package/environment/useToolCredentialsReadiness.d.ts +52 -0
  154. package/environment/useToolCredentialsReadiness.d.ts.map +1 -0
  155. package/environment/useToolCredentialsReadiness.js +84 -0
  156. package/environment/useToolCredentialsReadiness.js.map +1 -0
  157. package/execution/ArtifactContentBody.d.ts.map +1 -1
  158. package/execution/ArtifactContentBody.js +5 -21
  159. package/execution/ArtifactContentBody.js.map +1 -1
  160. package/execution/ArtifactFileContent.d.ts +28 -0
  161. package/execution/ArtifactFileContent.d.ts.map +1 -0
  162. package/execution/ArtifactFileContent.js +36 -0
  163. package/execution/ArtifactFileContent.js.map +1 -0
  164. package/execution/ArtifactRow.d.ts +8 -20
  165. package/execution/ArtifactRow.d.ts.map +1 -1
  166. package/execution/ArtifactRow.js +12 -45
  167. package/execution/ArtifactRow.js.map +1 -1
  168. package/execution/ArtifactRowView.d.ts +43 -0
  169. package/execution/ArtifactRowView.d.ts.map +1 -0
  170. package/execution/ArtifactRowView.js +35 -0
  171. package/execution/ArtifactRowView.js.map +1 -0
  172. package/execution/FileChangesView.d.ts.map +1 -1
  173. package/execution/FileChangesView.js +1 -61
  174. package/execution/FileChangesView.js.map +1 -1
  175. package/execution/SubAgentSection.d.ts.map +1 -1
  176. package/execution/SubAgentSection.js +4 -15
  177. package/execution/SubAgentSection.js.map +1 -1
  178. package/execution/ToolCallItem.d.ts.map +1 -1
  179. package/execution/ToolCallItem.js +16 -61
  180. package/execution/ToolCallItem.js.map +1 -1
  181. package/execution/agent-execution-document.d.ts +31 -0
  182. package/execution/agent-execution-document.d.ts.map +1 -0
  183. package/execution/agent-execution-document.js +48 -0
  184. package/execution/agent-execution-document.js.map +1 -0
  185. package/{session → execution}/artifact-document.d.ts +2 -3
  186. package/execution/artifact-document.d.ts.map +1 -0
  187. package/execution/artifact-document.js +23 -0
  188. package/execution/artifact-document.js.map +1 -0
  189. package/execution/artifact-row-item.d.ts +56 -0
  190. package/execution/artifact-row-item.d.ts.map +1 -0
  191. package/execution/artifact-row-item.js +57 -0
  192. package/execution/artifact-row-item.js.map +1 -0
  193. package/execution/deriveExecutionFileChanges.d.ts +55 -0
  194. package/execution/deriveExecutionFileChanges.d.ts.map +1 -0
  195. package/execution/deriveExecutionFileChanges.js +216 -0
  196. package/execution/deriveExecutionFileChanges.js.map +1 -0
  197. package/execution/file-change-document.d.ts +22 -0
  198. package/execution/file-change-document.d.ts.map +1 -0
  199. package/execution/file-change-document.js +34 -0
  200. package/execution/file-change-document.js.map +1 -0
  201. package/execution/index.d.ts +14 -0
  202. package/execution/index.d.ts.map +1 -1
  203. package/execution/index.js +9 -0
  204. package/execution/index.js.map +1 -1
  205. package/execution/useArtifactContentById.d.ts +61 -0
  206. package/execution/useArtifactContentById.d.ts.map +1 -0
  207. package/execution/useArtifactContentById.js +63 -0
  208. package/execution/useArtifactContentById.js.map +1 -0
  209. package/execution/useArtifactDownload.d.ts +4 -3
  210. package/execution/useArtifactDownload.d.ts.map +1 -1
  211. package/execution/useArtifactDownload.js +4 -3
  212. package/execution/useArtifactDownload.js.map +1 -1
  213. package/execution/useCreateAgentExecution.d.ts +1 -1
  214. package/execution/useLiveAgentExecution.d.ts +59 -0
  215. package/execution/useLiveAgentExecution.d.ts.map +1 -0
  216. package/execution/useLiveAgentExecution.js +73 -0
  217. package/execution/useLiveAgentExecution.js.map +1 -0
  218. package/index.d.ts +15 -10
  219. package/index.d.ts.map +1 -1
  220. package/index.js +21 -6
  221. package/index.js.map +1 -1
  222. package/internal/DecisionButton.d.ts +4 -3
  223. package/internal/DecisionButton.d.ts.map +1 -1
  224. package/internal/DecisionButton.js +4 -3
  225. package/internal/DecisionButton.js.map +1 -1
  226. package/internal/oauthPopup.d.ts +101 -0
  227. package/internal/oauthPopup.d.ts.map +1 -0
  228. package/internal/oauthPopup.js +208 -0
  229. package/internal/oauthPopup.js.map +1 -0
  230. package/internal/store/index.d.ts +0 -2
  231. package/internal/store/index.d.ts.map +1 -1
  232. package/internal/store/index.js +0 -1
  233. package/internal/store/index.js.map +1 -1
  234. package/internal/store/workflow-execution-event-store.d.ts +34 -1
  235. package/internal/store/workflow-execution-event-store.d.ts.map +1 -1
  236. package/internal/store/workflow-execution-event-store.js +81 -3
  237. package/internal/store/workflow-execution-event-store.js.map +1 -1
  238. package/internal/store/workspace-file-selection-store.d.ts +1 -2
  239. package/internal/store/workspace-file-selection-store.d.ts.map +1 -1
  240. package/internal/store/workspace-file-selection-store.js +2 -5
  241. package/internal/store/workspace-file-selection-store.js.map +1 -1
  242. package/internal/thread-card/ThreadCardShell.d.ts +91 -0
  243. package/internal/thread-card/ThreadCardShell.d.ts.map +1 -0
  244. package/internal/thread-card/ThreadCardShell.js +41 -0
  245. package/internal/thread-card/ThreadCardShell.js.map +1 -0
  246. package/internal/thread-card/glyphs.d.ts +34 -0
  247. package/internal/thread-card/glyphs.d.ts.map +1 -0
  248. package/internal/thread-card/glyphs.js +50 -0
  249. package/internal/thread-card/glyphs.js.map +1 -0
  250. package/internal/thread-card/index.d.ts +3 -0
  251. package/internal/thread-card/index.d.ts.map +1 -0
  252. package/internal/thread-card/index.js +3 -0
  253. package/internal/thread-card/index.js.map +1 -0
  254. package/internal/useRevealLine.d.ts +2 -2
  255. package/internal/useRevealLine.js +2 -2
  256. package/mcp-server/OAuthCallbackHandler.js +1 -1
  257. package/mcp-server/OAuthCallbackHandler.js.map +1 -1
  258. package/mcp-server/useMcpServerOAuthConnect.d.ts +4 -23
  259. package/mcp-server/useMcpServerOAuthConnect.d.ts.map +1 -1
  260. package/mcp-server/useMcpServerOAuthConnect.js +12 -145
  261. package/mcp-server/useMcpServerOAuthConnect.js.map +1 -1
  262. package/package.json +4 -4
  263. package/provider.d.ts +32 -0
  264. package/provider.d.ts.map +1 -1
  265. package/provider.js +25 -1
  266. package/provider.js.map +1 -1
  267. package/session/NewSessionViewer.d.ts.map +1 -1
  268. package/session/NewSessionViewer.js +0 -1
  269. package/session/NewSessionViewer.js.map +1 -1
  270. package/session/SessionPanelChip.d.ts +7 -22
  271. package/session/SessionPanelChip.d.ts.map +1 -1
  272. package/session/SessionPanelChip.js +8 -36
  273. package/session/SessionPanelChip.js.map +1 -1
  274. package/session/SessionViewer.d.ts +7 -4
  275. package/session/SessionViewer.d.ts.map +1 -1
  276. package/session/SessionViewer.js +32 -30
  277. package/session/SessionViewer.js.map +1 -1
  278. package/session/audience.d.ts +15 -1
  279. package/session/audience.d.ts.map +1 -1
  280. package/session/channelOrigin.d.ts +33 -0
  281. package/session/channelOrigin.d.ts.map +1 -0
  282. package/session/channelOrigin.js +36 -0
  283. package/session/channelOrigin.js.map +1 -0
  284. package/session/facets/index.d.ts +0 -2
  285. package/session/facets/index.d.ts.map +1 -1
  286. package/session/facets/index.js +0 -1
  287. package/session/facets/index.js.map +1 -1
  288. package/session/index.d.ts +2 -2
  289. package/session/index.d.ts.map +1 -1
  290. package/session/index.js +5 -3
  291. package/session/index.js.map +1 -1
  292. package/session/useSessionFileChanges.d.ts +10 -34
  293. package/session/useSessionFileChanges.d.ts.map +1 -1
  294. package/session/useSessionFileChanges.js +9 -141
  295. package/session/useSessionFileChanges.js.map +1 -1
  296. package/session/useSessionPanel.d.ts +5 -15
  297. package/session/useSessionPanel.d.ts.map +1 -1
  298. package/session/useSessionPanel.js +3 -35
  299. package/session/useSessionPanel.js.map +1 -1
  300. package/session/useSessionRailViews.d.ts +3 -6
  301. package/session/useSessionRailViews.d.ts.map +1 -1
  302. package/session/useSessionRailViews.js +3 -17
  303. package/session/useSessionRailViews.js.map +1 -1
  304. package/settings/ChannelAppsSection.d.ts +13 -0
  305. package/settings/ChannelAppsSection.d.ts.map +1 -0
  306. package/settings/ChannelAppsSection.js +48 -0
  307. package/settings/ChannelAppsSection.js.map +1 -0
  308. package/settings/index.d.ts +1 -0
  309. package/settings/index.d.ts.map +1 -1
  310. package/settings/index.js +1 -0
  311. package/settings/index.js.map +1 -1
  312. package/settings/settings-nav.d.ts.map +1 -1
  313. package/settings/settings-nav.js +6 -1
  314. package/settings/settings-nav.js.map +1 -1
  315. package/sharing/AgentShareList.d.ts.map +1 -1
  316. package/sharing/AgentShareList.js +11 -3
  317. package/sharing/AgentShareList.js.map +1 -1
  318. package/sharing/ShareAgentDialog.js +1 -1
  319. package/sharing/useShareToolReadiness.d.ts +9 -38
  320. package/sharing/useShareToolReadiness.d.ts.map +1 -1
  321. package/sharing/useShareToolReadiness.js +7 -72
  322. package/sharing/useShareToolReadiness.js.map +1 -1
  323. package/src/__tests__/provider-container.layout.test.tsx +165 -0
  324. package/src/__tests__/provider-theme-scope.test.tsx +31 -0
  325. package/src/agent-instance/AgentInstanceList.tsx +60 -42
  326. package/src/agent-instance/__tests__/AgentInstanceList.test.tsx +161 -0
  327. package/src/channel/AgentChannelsPanel.tsx +688 -0
  328. package/src/channel/ChannelConversationsDialog.tsx +267 -0
  329. package/src/channel/ChannelCredentialsDialog.tsx +219 -0
  330. package/src/channel/ChannelToolCredentials.tsx +124 -0
  331. package/src/channel/ConnectSlackDialog.tsx +611 -0
  332. package/src/channel/ConnectWhatsAppDialog.tsx +624 -0
  333. package/src/channel/SlackMarkIcon.tsx +21 -0
  334. package/src/channel/WhatsAppMarkIcon.tsx +22 -0
  335. package/src/channel/__tests__/AgentChannelsPanel.test.tsx +638 -0
  336. package/src/channel/__tests__/ChannelConversationsDialog.test.tsx +114 -0
  337. package/src/channel/__tests__/ChannelCredentialsDialog.test.tsx +240 -0
  338. package/src/channel/__tests__/ConnectSlackDialog.test.tsx +659 -0
  339. package/src/channel/__tests__/ConnectWhatsAppDialog.test.tsx +564 -0
  340. package/src/channel/__tests__/providers.test.ts +118 -0
  341. package/src/channel/__tests__/useAgentChannel.test.tsx +116 -0
  342. package/src/channel/__tests__/useAgentChannelList.test.tsx +166 -0
  343. package/src/channel/__tests__/useChannelSessions.test.tsx +95 -0
  344. package/src/channel/__tests__/useChannelToolReadiness.test.tsx +158 -0
  345. package/src/channel/__tests__/useConnectSlackChannel.test.tsx +276 -0
  346. package/src/channel/__tests__/useDeleteAgentChannel.test.tsx +97 -0
  347. package/src/channel/__tests__/useInstallChannel.test.tsx +177 -0
  348. package/src/channel/__tests__/useSaveAgentChannel.test.tsx +294 -0
  349. package/src/channel/connect/ServingAppSection.tsx +185 -0
  350. package/src/channel/connect/ToolCredentialsSection.tsx +67 -0
  351. package/src/channel/connect/VerbatimRefusal.tsx +27 -0
  352. package/src/channel/connect/icons.tsx +42 -0
  353. package/src/channel/index.ts +65 -0
  354. package/src/channel/providerPresentation.ts +154 -0
  355. package/src/channel/providers.ts +73 -0
  356. package/src/channel/useAgentChannel.ts +58 -0
  357. package/src/channel/useAgentChannelList.ts +69 -0
  358. package/src/channel/useChannelSessions.ts +73 -0
  359. package/src/channel/useChannelToolReadiness.ts +39 -0
  360. package/src/channel/useConnectSlackChannel.ts +195 -0
  361. package/src/channel/useCreateAgentChannel.ts +73 -0
  362. package/src/channel/useDeleteAgentChannel.ts +71 -0
  363. package/src/channel/useInstallChannel.ts +117 -0
  364. package/src/channel/useOrgAgentChannelList.ts +60 -0
  365. package/src/channel/useSaveAgentChannel.ts +133 -0
  366. package/src/channel-app/ChannelAppDetailPanel.tsx +510 -0
  367. package/src/channel-app/ChannelAppListPanel.tsx +201 -0
  368. package/src/channel-app/CreateChannelAppForm.tsx +529 -0
  369. package/src/channel-app/__tests__/channelAppWhatsApp.test.tsx +270 -0
  370. package/src/channel-app/__tests__/slackAppSetup.test.ts +75 -0
  371. package/src/channel-app/__tests__/useChannelAppHooks.test.tsx +157 -0
  372. package/src/channel-app/__tests__/whatsappAppSetup.test.ts +39 -0
  373. package/src/channel-app/index.ts +30 -0
  374. package/src/channel-app/internal.tsx +180 -0
  375. package/src/channel-app/slackAppSetup.ts +153 -0
  376. package/src/channel-app/useChannelAppList.ts +59 -0
  377. package/src/channel-app/useCreateChannelApp.ts +70 -0
  378. package/src/channel-app/useDeleteChannelApp.ts +62 -0
  379. package/src/channel-app/useUpdateChannelApp.ts +70 -0
  380. package/src/channel-app/whatsappAppSetup.ts +62 -0
  381. package/src/environment/index.ts +2 -0
  382. package/src/environment/useToolCredentialsReadiness.ts +122 -0
  383. package/src/execution/ArtifactContentBody.tsx +6 -88
  384. package/src/execution/ArtifactFileContent.tsx +110 -0
  385. package/src/execution/ArtifactRow.tsx +28 -118
  386. package/src/execution/ArtifactRowView.tsx +137 -0
  387. package/src/execution/FileChangesView.tsx +4 -69
  388. package/src/execution/SubAgentSection.tsx +2 -36
  389. package/src/execution/ToolCallItem.tsx +48 -175
  390. package/src/execution/__tests__/ArtifactFileContent.test.tsx +60 -0
  391. package/src/execution/__tests__/ArtifactRowView.test.tsx +78 -0
  392. package/src/execution/__tests__/agent-execution-document.test.ts +45 -0
  393. package/src/execution/__tests__/artifact-row-item.test.ts +128 -0
  394. package/src/execution/__tests__/deriveExecutionFileChanges.test.ts +270 -0
  395. package/src/execution/__tests__/useArtifactContentById.test.tsx +85 -0
  396. package/src/execution/__tests__/useLiveAgentExecution.test.tsx +202 -0
  397. package/src/execution/agent-execution-document.ts +54 -0
  398. package/src/execution/artifact-document.ts +24 -0
  399. package/src/execution/artifact-row-item.ts +97 -0
  400. package/src/execution/deriveExecutionFileChanges.ts +237 -0
  401. package/src/execution/file-change-document.ts +37 -0
  402. package/src/execution/index.ts +36 -0
  403. package/src/execution/useArtifactContentById.ts +120 -0
  404. package/src/execution/useArtifactDownload.ts +4 -3
  405. package/src/execution/useCreateAgentExecution.ts +1 -1
  406. package/src/execution/useLiveAgentExecution.ts +127 -0
  407. package/src/index.ts +155 -11
  408. package/src/internal/DecisionButton.tsx +4 -3
  409. package/src/internal/__tests__/ThreadCardShell.test.tsx +105 -0
  410. package/src/internal/__tests__/oauthPopup.test.ts +245 -0
  411. package/src/internal/oauthPopup.ts +261 -0
  412. package/src/internal/store/__tests__/workflow-execution-event-store.test.ts +375 -5
  413. package/src/internal/store/index.ts +0 -3
  414. package/src/internal/store/workflow-execution-event-store.ts +123 -4
  415. package/src/internal/store/workspace-file-selection-store.ts +2 -5
  416. package/src/internal/thread-card/ThreadCardShell.tsx +189 -0
  417. package/src/internal/thread-card/glyphs.tsx +108 -0
  418. package/src/internal/thread-card/index.ts +19 -0
  419. package/src/internal/useRevealLine.ts +2 -2
  420. package/src/mcp-server/OAuthCallbackHandler.tsx +2 -2
  421. package/src/mcp-server/useMcpServerOAuthConnect.ts +22 -184
  422. package/src/provider.tsx +42 -0
  423. package/src/session/NewSessionViewer.tsx +0 -1
  424. package/src/session/SessionPanelChip.tsx +10 -96
  425. package/src/session/SessionViewer.tsx +170 -144
  426. package/src/session/__tests__/SessionViewer-artifactTabs.test.tsx +1 -1
  427. package/src/session/__tests__/observerAudience.test.tsx +241 -0
  428. package/src/session/__tests__/useSessionPanel.test.ts +6 -61
  429. package/src/session/__tests__/useSessionRailViews.test.tsx +5 -27
  430. package/src/session/audience.ts +15 -1
  431. package/src/session/channelOrigin.ts +45 -0
  432. package/src/session/facets/index.ts +0 -3
  433. package/src/session/index.ts +9 -6
  434. package/src/session/useSessionFileChanges.ts +12 -153
  435. package/src/session/useSessionPanel.ts +8 -51
  436. package/src/session/useSessionRailViews.tsx +2 -27
  437. package/src/settings/ChannelAppsSection.tsx +133 -0
  438. package/src/settings/index.ts +1 -0
  439. package/src/settings/settings-nav.ts +6 -0
  440. package/src/sharing/AgentShareList.tsx +85 -64
  441. package/src/sharing/ShareAgentDialog.tsx +1 -1
  442. package/src/sharing/__tests__/AgentShareList.test.tsx +92 -12
  443. package/src/sharing/useShareToolReadiness.ts +13 -101
  444. package/src/styles.css +14 -0
  445. package/src/workflow/WorkflowAgentExecutionDocument.tsx +283 -0
  446. package/src/workflow/WorkflowApprovalList.tsx +158 -0
  447. package/src/workflow/WorkflowArtifactDocument.tsx +257 -0
  448. package/src/workflow/WorkflowExecutionGraph.tsx +40 -78
  449. package/src/workflow/WorkflowExecutionViewer.tsx +610 -287
  450. package/src/workflow/WorkflowFileReviewList.tsx +1 -1
  451. package/src/workflow/WorkflowTaskApprovalCard.tsx +5 -4
  452. package/src/workflow/WorkflowTaskApprovalSummary.tsx +6 -6
  453. package/src/workflow/__tests__/WorkflowAgentExecutionDocument.test.tsx +651 -0
  454. package/src/workflow/__tests__/WorkflowApprovalList.test.tsx +229 -0
  455. package/src/workflow/__tests__/WorkflowArtifactDocument.test.tsx +90 -0
  456. package/src/workflow/__tests__/WorkflowArtifactsTab.test.tsx +85 -0
  457. package/src/workflow/__tests__/WorkflowChangesTab.test.tsx +113 -0
  458. package/src/workflow/__tests__/WorkflowExecutionViewer.approvals.test.tsx +473 -0
  459. package/src/workflow/__tests__/WorkflowExecutionViewer.reconciliation.test.tsx +632 -0
  460. package/src/workflow/__tests__/WorkflowTaskApprovalSummary.test.tsx +1 -1
  461. package/src/workflow/__tests__/WorkflowTaskThread.test.tsx +947 -0
  462. package/src/workflow/__tests__/WorkflowUsageTab.test.tsx +163 -0
  463. package/src/workflow/__tests__/agent-call-live-experience.test.ts +6 -53
  464. package/src/workflow/__tests__/derive-execution-overlays.test.ts +4 -0
  465. package/src/workflow/__tests__/deriveWorkflowArtifactItems.test.ts +71 -0
  466. package/src/workflow/__tests__/deriveWorkflowUsageItems.test.ts +132 -0
  467. package/src/workflow/__tests__/execution-graph.test.ts +8 -0
  468. package/src/workflow/__tests__/project-thread-items.test.ts +428 -0
  469. package/src/workflow/__tests__/structured-data-viewer.test.tsx +1 -1
  470. package/src/workflow/__tests__/task-approval.test.ts +149 -0
  471. package/src/workflow/__tests__/task-detail-io.test.ts +40 -0
  472. package/src/workflow/__tests__/task-presentation.test.ts +479 -0
  473. package/src/workflow/__tests__/useActiveTaskName.test.ts +4 -0
  474. package/src/workflow/__tests__/useApprovalBoundary.test.ts +158 -0
  475. package/src/workflow/__tests__/useExecutionAnnouncements.test.ts +4 -0
  476. package/src/workflow/__tests__/useFollowExecution.test.ts +2 -89
  477. package/src/workflow/__tests__/useWorkflowExecutionFileChanges.test.tsx +412 -0
  478. package/src/workflow/__tests__/useWorkflowExecutionPanel.test.ts +297 -0
  479. package/src/workflow/__tests__/useWorkflowExecutionRailViews.test.tsx +115 -0
  480. package/src/workflow/deriveWorkflowArtifactItems.ts +59 -0
  481. package/src/workflow/deriveWorkflowUsageItems.ts +73 -0
  482. package/src/workflow/diagnosis-document.ts +31 -0
  483. package/src/workflow/execution/index.ts +0 -15
  484. package/src/workflow/facets/WorkflowArtifactsTab.tsx +99 -0
  485. package/src/workflow/facets/WorkflowChangesTab.tsx +129 -0
  486. package/src/workflow/facets/WorkflowUsageTab.tsx +258 -0
  487. package/src/workflow/format-utils.ts +2 -3
  488. package/src/workflow/index.ts +106 -62
  489. package/src/workflow/inspector/index.ts +0 -4
  490. package/src/workflow/instance/WorkflowInstanceList.tsx +59 -41
  491. package/src/workflow/instance/__tests__/WorkflowInstanceList.test.tsx +156 -0
  492. package/src/workflow/task-detail/index.ts +11 -0
  493. package/src/workflow/task-detail/task-approval.ts +158 -0
  494. package/src/workflow/task-detail/task-detail-io.ts +65 -0
  495. package/src/workflow/thread/WorkflowTaskThread.tsx +845 -0
  496. package/src/workflow/thread/project-thread-items.ts +235 -0
  497. package/src/workflow/thread/task-presentation.ts +427 -0
  498. package/src/workflow/thread/thread-presentation.ts +59 -0
  499. package/src/workflow/thread/useWorkflowThreadItems.ts +34 -0
  500. package/src/workflow/useApprovalBoundary.ts +72 -0
  501. package/src/workflow/useFollowExecution.ts +0 -26
  502. package/src/workflow/useWorkflowArtifactDownload.ts +68 -0
  503. package/src/workflow/useWorkflowExecutionActions.ts +3 -2
  504. package/src/workflow/useWorkflowExecutionFileChanges.ts +341 -0
  505. package/src/workflow/useWorkflowExecutionGraph.ts +3 -43
  506. package/src/workflow/useWorkflowExecutionPanel.ts +292 -0
  507. package/src/workflow/useWorkflowExecutionRailViews.tsx +173 -0
  508. package/src/workspace/FileViewer.tsx +3 -3
  509. package/src/workspace/PanelChip.tsx +103 -0
  510. package/src/workspace/WorkspaceSurface.tsx +50 -6
  511. package/src/workspace/__tests__/WorkspaceSurface.test.tsx +110 -0
  512. package/src/workspace/index.ts +3 -0
  513. package/styles.css +1 -1
  514. package/workflow/WorkflowAgentExecutionDocument.d.ts +79 -0
  515. package/workflow/WorkflowAgentExecutionDocument.d.ts.map +1 -0
  516. package/workflow/WorkflowAgentExecutionDocument.js +87 -0
  517. package/workflow/WorkflowAgentExecutionDocument.js.map +1 -0
  518. package/workflow/WorkflowApprovalList.d.ts +62 -0
  519. package/workflow/WorkflowApprovalList.d.ts.map +1 -0
  520. package/workflow/WorkflowApprovalList.js +52 -0
  521. package/workflow/WorkflowApprovalList.js.map +1 -0
  522. package/workflow/WorkflowArtifactDocument.d.ts +29 -0
  523. package/workflow/WorkflowArtifactDocument.d.ts.map +1 -0
  524. package/workflow/WorkflowArtifactDocument.js +89 -0
  525. package/workflow/WorkflowArtifactDocument.js.map +1 -0
  526. package/workflow/WorkflowExecutionGraph.d.ts +15 -13
  527. package/workflow/WorkflowExecutionGraph.d.ts.map +1 -1
  528. package/workflow/WorkflowExecutionGraph.js +18 -53
  529. package/workflow/WorkflowExecutionGraph.js.map +1 -1
  530. package/workflow/WorkflowExecutionViewer.d.ts +8 -5
  531. package/workflow/WorkflowExecutionViewer.d.ts.map +1 -1
  532. package/workflow/WorkflowExecutionViewer.js +329 -54
  533. package/workflow/WorkflowExecutionViewer.js.map +1 -1
  534. package/workflow/WorkflowFileReviewList.d.ts +1 -1
  535. package/workflow/WorkflowFileReviewList.js +1 -1
  536. package/workflow/WorkflowTaskApprovalCard.d.ts +4 -3
  537. package/workflow/WorkflowTaskApprovalCard.d.ts.map +1 -1
  538. package/workflow/WorkflowTaskApprovalCard.js +5 -4
  539. package/workflow/WorkflowTaskApprovalCard.js.map +1 -1
  540. package/workflow/WorkflowTaskApprovalSummary.d.ts +6 -6
  541. package/workflow/WorkflowTaskApprovalSummary.js +5 -5
  542. package/workflow/deriveWorkflowArtifactItems.d.ts +30 -0
  543. package/workflow/deriveWorkflowArtifactItems.d.ts.map +1 -0
  544. package/workflow/deriveWorkflowArtifactItems.js +38 -0
  545. package/workflow/deriveWorkflowArtifactItems.js.map +1 -0
  546. package/workflow/deriveWorkflowUsageItems.d.ts +36 -0
  547. package/workflow/deriveWorkflowUsageItems.d.ts.map +1 -0
  548. package/workflow/deriveWorkflowUsageItems.js +50 -0
  549. package/workflow/deriveWorkflowUsageItems.js.map +1 -0
  550. package/workflow/diagnosis-document.d.ts +17 -0
  551. package/workflow/diagnosis-document.d.ts.map +1 -0
  552. package/workflow/diagnosis-document.js +29 -0
  553. package/workflow/diagnosis-document.js.map +1 -0
  554. package/workflow/execution/index.d.ts +0 -2
  555. package/workflow/execution/index.d.ts.map +1 -1
  556. package/workflow/execution/index.js +0 -2
  557. package/workflow/execution/index.js.map +1 -1
  558. package/workflow/facets/WorkflowArtifactsTab.d.ts +26 -0
  559. package/workflow/facets/WorkflowArtifactsTab.d.ts.map +1 -0
  560. package/workflow/facets/WorkflowArtifactsTab.js +34 -0
  561. package/workflow/facets/WorkflowArtifactsTab.js.map +1 -0
  562. package/workflow/facets/WorkflowChangesTab.d.ts +37 -0
  563. package/workflow/facets/WorkflowChangesTab.d.ts.map +1 -0
  564. package/workflow/facets/WorkflowChangesTab.js +50 -0
  565. package/workflow/facets/WorkflowChangesTab.js.map +1 -0
  566. package/workflow/facets/WorkflowUsageTab.d.ts +27 -0
  567. package/workflow/facets/WorkflowUsageTab.d.ts.map +1 -0
  568. package/workflow/facets/WorkflowUsageTab.js +87 -0
  569. package/workflow/facets/WorkflowUsageTab.js.map +1 -0
  570. package/workflow/format-utils.d.ts +2 -3
  571. package/workflow/format-utils.d.ts.map +1 -1
  572. package/workflow/format-utils.js +2 -3
  573. package/workflow/format-utils.js.map +1 -1
  574. package/workflow/index.d.ts +21 -10
  575. package/workflow/index.d.ts.map +1 -1
  576. package/workflow/index.js +29 -14
  577. package/workflow/index.js.map +1 -1
  578. package/workflow/inspector/index.d.ts +0 -2
  579. package/workflow/inspector/index.d.ts.map +1 -1
  580. package/workflow/inspector/index.js +0 -2
  581. package/workflow/inspector/index.js.map +1 -1
  582. package/workflow/instance/WorkflowInstanceList.d.ts.map +1 -1
  583. package/workflow/instance/WorkflowInstanceList.js +11 -3
  584. package/workflow/instance/WorkflowInstanceList.js.map +1 -1
  585. package/workflow/task-detail/StructuredDataViewer.d.ts.map +1 -0
  586. package/workflow/task-detail/StructuredDataViewer.js.map +1 -0
  587. package/workflow/task-detail/index.d.ts +4 -0
  588. package/workflow/task-detail/index.d.ts.map +1 -0
  589. package/workflow/task-detail/index.js +4 -0
  590. package/workflow/task-detail/index.js.map +1 -0
  591. package/workflow/task-detail/task-approval.d.ts +89 -0
  592. package/workflow/task-detail/task-approval.d.ts.map +1 -0
  593. package/workflow/task-detail/task-approval.js +84 -0
  594. package/workflow/task-detail/task-approval.js.map +1 -0
  595. package/workflow/task-detail/task-detail-io.d.ts +39 -0
  596. package/workflow/task-detail/task-detail-io.d.ts.map +1 -0
  597. package/workflow/task-detail/task-detail-io.js +42 -0
  598. package/workflow/task-detail/task-detail-io.js.map +1 -0
  599. package/workflow/thread/WorkflowTaskThread.d.ts +91 -0
  600. package/workflow/thread/WorkflowTaskThread.d.ts.map +1 -0
  601. package/workflow/thread/WorkflowTaskThread.js +318 -0
  602. package/workflow/thread/WorkflowTaskThread.js.map +1 -0
  603. package/workflow/thread/project-thread-items.d.ts +108 -0
  604. package/workflow/thread/project-thread-items.d.ts.map +1 -0
  605. package/workflow/thread/project-thread-items.js +126 -0
  606. package/workflow/thread/project-thread-items.js.map +1 -0
  607. package/workflow/thread/task-presentation.d.ts +73 -0
  608. package/workflow/thread/task-presentation.d.ts.map +1 -0
  609. package/workflow/thread/task-presentation.js +331 -0
  610. package/workflow/thread/task-presentation.js.map +1 -0
  611. package/workflow/thread/thread-presentation.d.ts +28 -0
  612. package/workflow/thread/thread-presentation.d.ts.map +1 -0
  613. package/workflow/thread/thread-presentation.js +28 -0
  614. package/workflow/thread/thread-presentation.js.map +1 -0
  615. package/workflow/thread/useWorkflowThreadItems.d.ts +16 -0
  616. package/workflow/thread/useWorkflowThreadItems.d.ts.map +1 -0
  617. package/workflow/thread/useWorkflowThreadItems.js +22 -0
  618. package/workflow/thread/useWorkflowThreadItems.js.map +1 -0
  619. package/workflow/useApprovalBoundary.d.ts +38 -0
  620. package/workflow/useApprovalBoundary.d.ts.map +1 -0
  621. package/workflow/useApprovalBoundary.js +55 -0
  622. package/workflow/useApprovalBoundary.js.map +1 -0
  623. package/workflow/useFollowExecution.d.ts +0 -20
  624. package/workflow/useFollowExecution.d.ts.map +1 -1
  625. package/workflow/useFollowExecution.js +0 -17
  626. package/workflow/useFollowExecution.js.map +1 -1
  627. package/workflow/useWorkflowArtifactDownload.d.ts +28 -0
  628. package/workflow/useWorkflowArtifactDownload.d.ts.map +1 -0
  629. package/workflow/useWorkflowArtifactDownload.js +45 -0
  630. package/workflow/useWorkflowArtifactDownload.js.map +1 -0
  631. package/workflow/useWorkflowExecutionActions.d.ts +3 -2
  632. package/workflow/useWorkflowExecutionActions.d.ts.map +1 -1
  633. package/workflow/useWorkflowExecutionActions.js.map +1 -1
  634. package/workflow/useWorkflowExecutionFileChanges.d.ts +107 -0
  635. package/workflow/useWorkflowExecutionFileChanges.d.ts.map +1 -0
  636. package/workflow/useWorkflowExecutionFileChanges.js +244 -0
  637. package/workflow/useWorkflowExecutionFileChanges.js.map +1 -0
  638. package/workflow/useWorkflowExecutionGraph.d.ts +1 -14
  639. package/workflow/useWorkflowExecutionGraph.d.ts.map +1 -1
  640. package/workflow/useWorkflowExecutionGraph.js +2 -25
  641. package/workflow/useWorkflowExecutionGraph.js.map +1 -1
  642. package/workflow/useWorkflowExecutionPanel.d.ts +108 -0
  643. package/workflow/useWorkflowExecutionPanel.d.ts.map +1 -0
  644. package/workflow/useWorkflowExecutionPanel.js +103 -0
  645. package/workflow/useWorkflowExecutionPanel.js.map +1 -0
  646. package/workflow/useWorkflowExecutionRailViews.d.ts +46 -0
  647. package/workflow/useWorkflowExecutionRailViews.d.ts.map +1 -0
  648. package/workflow/useWorkflowExecutionRailViews.js +81 -0
  649. package/workflow/useWorkflowExecutionRailViews.js.map +1 -0
  650. package/workspace/FileViewer.d.ts +1 -1
  651. package/workspace/FileViewer.js +3 -3
  652. package/workspace/FileViewer.js.map +1 -1
  653. package/workspace/PanelChip.d.ts +27 -0
  654. package/workspace/PanelChip.d.ts.map +1 -0
  655. package/workspace/PanelChip.js +42 -0
  656. package/workspace/PanelChip.js.map +1 -0
  657. package/workspace/WorkspaceSurface.d.ts +25 -1
  658. package/workspace/WorkspaceSurface.d.ts.map +1 -1
  659. package/workspace/WorkspaceSurface.js +21 -9
  660. package/workspace/WorkspaceSurface.js.map +1 -1
  661. package/workspace/index.d.ts +3 -1
  662. package/workspace/index.d.ts.map +1 -1
  663. package/workspace/index.js +1 -0
  664. package/workspace/index.js.map +1 -1
  665. package/execution/ThreadSelectionContext.d.ts +0 -17
  666. package/execution/ThreadSelectionContext.d.ts.map +0 -1
  667. package/execution/ThreadSelectionContext.js +0 -18
  668. package/execution/ThreadSelectionContext.js.map +0 -1
  669. package/execution/useThreadSelection.d.ts +0 -35
  670. package/execution/useThreadSelection.d.ts.map +0 -1
  671. package/execution/useThreadSelection.js +0 -65
  672. package/execution/useThreadSelection.js.map +0 -1
  673. package/internal/store/selection-store.d.ts +0 -53
  674. package/internal/store/selection-store.d.ts.map +0 -1
  675. package/internal/store/selection-store.js +0 -88
  676. package/internal/store/selection-store.js.map +0 -1
  677. package/session/artifact-document.d.ts.map +0 -1
  678. package/session/artifact-document.js +0 -22
  679. package/session/artifact-document.js.map +0 -1
  680. package/session/facets/InspectTab.d.ts +0 -13
  681. package/session/facets/InspectTab.d.ts.map +0 -1
  682. package/session/facets/InspectTab.js +0 -19
  683. package/session/facets/InspectTab.js.map +0 -1
  684. package/src/execution/ThreadSelectionContext.tsx +0 -20
  685. package/src/execution/useThreadSelection.ts +0 -95
  686. package/src/internal/store/__tests__/selection-store.test.ts +0 -115
  687. package/src/internal/store/selection-store.ts +0 -112
  688. package/src/session/artifact-document.ts +0 -23
  689. package/src/session/facets/InspectTab.tsx +0 -57
  690. package/src/workflow/WorkflowExecutionApprovalCard.tsx +0 -154
  691. package/src/workflow/WorkflowExecutionArtifactPanel.tsx +0 -107
  692. package/src/workflow/WorkflowExecutionCostPanel.tsx +0 -120
  693. package/src/workflow/WorkflowExecutionTaskPanel.tsx +0 -129
  694. package/src/workflow/WorkflowExecutionTimeline.tsx +0 -151
  695. package/src/workflow/WorkflowExecutionTimelineEvent.tsx +0 -497
  696. package/src/workflow/__tests__/ExecutionInspector.test.tsx +0 -155
  697. package/src/workflow/__tests__/WorkflowExecutionApprovalCard.test.tsx +0 -129
  698. package/src/workflow/__tests__/derive-task-detail.test.ts +0 -1265
  699. package/src/workflow/__tests__/derive-waterfall-entries.test.ts +0 -521
  700. package/src/workflow/__tests__/execution-inspector.test.tsx +0 -332
  701. package/src/workflow/execution/derive-waterfall-entries.ts +0 -377
  702. package/src/workflow/execution/useWaterfallEntries.ts +0 -125
  703. package/src/workflow/execution-inspector/AgentCallTab.tsx +0 -169
  704. package/src/workflow/execution-inspector/ErrorTab.tsx +0 -110
  705. package/src/workflow/execution-inspector/EventLogTab.tsx +0 -79
  706. package/src/workflow/execution-inspector/ExecutionInspector.tsx +0 -341
  707. package/src/workflow/execution-inspector/InputOutputTab.tsx +0 -325
  708. package/src/workflow/execution-inspector/RetriesTab.tsx +0 -68
  709. package/src/workflow/execution-inspector/SummaryTab.tsx +0 -62
  710. package/src/workflow/execution-inspector/derive-task-detail.ts +0 -584
  711. package/src/workflow/execution-inspector/index.ts +0 -14
  712. package/src/workflow/execution-inspector/useExecutionTaskDetail.ts +0 -55
  713. package/src/workflow/inspector/ExecutionInspectorAdapter.tsx +0 -40
  714. package/src/workflow/waterfall/WaterfallBar.tsx +0 -167
  715. package/src/workflow/waterfall/WaterfallRow.tsx +0 -112
  716. package/src/workflow/waterfall/WaterfallScale.tsx +0 -52
  717. package/src/workflow/waterfall/WaterfallTimeline.tsx +0 -138
  718. package/src/workflow/waterfall/WaterfallTooltip.tsx +0 -74
  719. package/src/workflow/waterfall/index.ts +0 -5
  720. package/workflow/WorkflowExecutionApprovalCard.d.ts +0 -34
  721. package/workflow/WorkflowExecutionApprovalCard.d.ts.map +0 -1
  722. package/workflow/WorkflowExecutionApprovalCard.js +0 -46
  723. package/workflow/WorkflowExecutionApprovalCard.js.map +0 -1
  724. package/workflow/WorkflowExecutionArtifactPanel.d.ts +0 -15
  725. package/workflow/WorkflowExecutionArtifactPanel.d.ts.map +0 -1
  726. package/workflow/WorkflowExecutionArtifactPanel.js +0 -46
  727. package/workflow/WorkflowExecutionArtifactPanel.js.map +0 -1
  728. package/workflow/WorkflowExecutionCostPanel.d.ts +0 -18
  729. package/workflow/WorkflowExecutionCostPanel.d.ts.map +0 -1
  730. package/workflow/WorkflowExecutionCostPanel.js +0 -31
  731. package/workflow/WorkflowExecutionCostPanel.js.map +0 -1
  732. package/workflow/WorkflowExecutionTaskPanel.d.ts +0 -24
  733. package/workflow/WorkflowExecutionTaskPanel.d.ts.map +0 -1
  734. package/workflow/WorkflowExecutionTaskPanel.js +0 -51
  735. package/workflow/WorkflowExecutionTaskPanel.js.map +0 -1
  736. package/workflow/WorkflowExecutionTimeline.d.ts +0 -42
  737. package/workflow/WorkflowExecutionTimeline.d.ts.map +0 -1
  738. package/workflow/WorkflowExecutionTimeline.js +0 -52
  739. package/workflow/WorkflowExecutionTimeline.js.map +0 -1
  740. package/workflow/WorkflowExecutionTimelineEvent.d.ts +0 -25
  741. package/workflow/WorkflowExecutionTimelineEvent.d.ts.map +0 -1
  742. package/workflow/WorkflowExecutionTimelineEvent.js +0 -179
  743. package/workflow/WorkflowExecutionTimelineEvent.js.map +0 -1
  744. package/workflow/execution/derive-waterfall-entries.d.ts +0 -85
  745. package/workflow/execution/derive-waterfall-entries.d.ts.map +0 -1
  746. package/workflow/execution/derive-waterfall-entries.js +0 -268
  747. package/workflow/execution/derive-waterfall-entries.js.map +0 -1
  748. package/workflow/execution/useWaterfallEntries.d.ts +0 -25
  749. package/workflow/execution/useWaterfallEntries.d.ts.map +0 -1
  750. package/workflow/execution/useWaterfallEntries.js +0 -67
  751. package/workflow/execution/useWaterfallEntries.js.map +0 -1
  752. package/workflow/execution-inspector/AgentCallTab.d.ts +0 -21
  753. package/workflow/execution-inspector/AgentCallTab.d.ts.map +0 -1
  754. package/workflow/execution-inspector/AgentCallTab.js +0 -36
  755. package/workflow/execution-inspector/AgentCallTab.js.map +0 -1
  756. package/workflow/execution-inspector/ErrorTab.d.ts +0 -9
  757. package/workflow/execution-inspector/ErrorTab.d.ts.map +0 -1
  758. package/workflow/execution-inspector/ErrorTab.js +0 -29
  759. package/workflow/execution-inspector/ErrorTab.js.map +0 -1
  760. package/workflow/execution-inspector/EventLogTab.d.ts +0 -11
  761. package/workflow/execution-inspector/EventLogTab.d.ts.map +0 -1
  762. package/workflow/execution-inspector/EventLogTab.js +0 -47
  763. package/workflow/execution-inspector/EventLogTab.js.map +0 -1
  764. package/workflow/execution-inspector/ExecutionInspector.d.ts +0 -69
  765. package/workflow/execution-inspector/ExecutionInspector.d.ts.map +0 -1
  766. package/workflow/execution-inspector/ExecutionInspector.js +0 -145
  767. package/workflow/execution-inspector/ExecutionInspector.js.map +0 -1
  768. package/workflow/execution-inspector/InputOutputTab.d.ts +0 -20
  769. package/workflow/execution-inspector/InputOutputTab.d.ts.map +0 -1
  770. package/workflow/execution-inspector/InputOutputTab.js +0 -124
  771. package/workflow/execution-inspector/InputOutputTab.js.map +0 -1
  772. package/workflow/execution-inspector/RetriesTab.d.ts +0 -7
  773. package/workflow/execution-inspector/RetriesTab.d.ts.map +0 -1
  774. package/workflow/execution-inspector/RetriesTab.js +0 -11
  775. package/workflow/execution-inspector/RetriesTab.js.map +0 -1
  776. package/workflow/execution-inspector/StructuredDataViewer.d.ts.map +0 -1
  777. package/workflow/execution-inspector/StructuredDataViewer.js.map +0 -1
  778. package/workflow/execution-inspector/SummaryTab.d.ts +0 -7
  779. package/workflow/execution-inspector/SummaryTab.d.ts.map +0 -1
  780. package/workflow/execution-inspector/SummaryTab.js +0 -10
  781. package/workflow/execution-inspector/SummaryTab.js.map +0 -1
  782. package/workflow/execution-inspector/derive-task-detail.d.ts +0 -140
  783. package/workflow/execution-inspector/derive-task-detail.d.ts.map +0 -1
  784. package/workflow/execution-inspector/derive-task-detail.js +0 -366
  785. package/workflow/execution-inspector/derive-task-detail.js.map +0 -1
  786. package/workflow/execution-inspector/index.d.ts +0 -4
  787. package/workflow/execution-inspector/index.d.ts.map +0 -1
  788. package/workflow/execution-inspector/index.js +0 -4
  789. package/workflow/execution-inspector/index.js.map +0 -1
  790. package/workflow/execution-inspector/useExecutionTaskDetail.d.ts +0 -38
  791. package/workflow/execution-inspector/useExecutionTaskDetail.d.ts.map +0 -1
  792. package/workflow/execution-inspector/useExecutionTaskDetail.js +0 -37
  793. package/workflow/execution-inspector/useExecutionTaskDetail.js.map +0 -1
  794. package/workflow/inspector/ExecutionInspectorAdapter.d.ts +0 -26
  795. package/workflow/inspector/ExecutionInspectorAdapter.d.ts.map +0 -1
  796. package/workflow/inspector/ExecutionInspectorAdapter.js +0 -23
  797. package/workflow/inspector/ExecutionInspectorAdapter.js.map +0 -1
  798. package/workflow/waterfall/WaterfallBar.d.ts +0 -19
  799. package/workflow/waterfall/WaterfallBar.d.ts.map +0 -1
  800. package/workflow/waterfall/WaterfallBar.js +0 -70
  801. package/workflow/waterfall/WaterfallBar.js.map +0 -1
  802. package/workflow/waterfall/WaterfallRow.d.ts +0 -18
  803. package/workflow/waterfall/WaterfallRow.d.ts.map +0 -1
  804. package/workflow/waterfall/WaterfallRow.js +0 -45
  805. package/workflow/waterfall/WaterfallRow.js.map +0 -1
  806. package/workflow/waterfall/WaterfallScale.d.ts +0 -14
  807. package/workflow/waterfall/WaterfallScale.d.ts.map +0 -1
  808. package/workflow/waterfall/WaterfallScale.js +0 -22
  809. package/workflow/waterfall/WaterfallScale.js.map +0 -1
  810. package/workflow/waterfall/WaterfallTimeline.d.ts +0 -46
  811. package/workflow/waterfall/WaterfallTimeline.d.ts.map +0 -1
  812. package/workflow/waterfall/WaterfallTimeline.js +0 -60
  813. package/workflow/waterfall/WaterfallTimeline.js.map +0 -1
  814. package/workflow/waterfall/WaterfallTooltip.d.ts +0 -15
  815. package/workflow/waterfall/WaterfallTooltip.d.ts.map +0 -1
  816. package/workflow/waterfall/WaterfallTooltip.js +0 -20
  817. package/workflow/waterfall/WaterfallTooltip.js.map +0 -1
  818. package/workflow/waterfall/index.d.ts +0 -6
  819. package/workflow/waterfall/index.d.ts.map +0 -1
  820. package/workflow/waterfall/index.js +0 -6
  821. package/workflow/waterfall/index.js.map +0 -1
  822. /package/src/workflow/{execution-inspector → task-detail}/StructuredDataViewer.tsx +0 -0
  823. /package/workflow/{execution-inspector → task-detail}/StructuredDataViewer.d.ts +0 -0
  824. /package/workflow/{execution-inspector → task-detail}/StructuredDataViewer.js +0 -0
@@ -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")),
@@ -1,66 +1,37 @@
1
1
  "use client";
2
2
 
3
- import { useEffect, useMemo, useState } from "react";
4
3
  import type { Agent } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/api_pb";
5
- import { ApiResourceVisibility } from "@stigmer/protos/ai/stigmer/commons/apiresource/enum_pb";
6
- import { useStigmer } from "../hooks.js";
7
4
  import { useDeploymentMode } from "../deployment-mode.js";
5
+ import {
6
+ useToolCredentialsReadiness,
7
+ type ToolCredentialsReadiness,
8
+ } from "../environment/useToolCredentialsReadiness.js";
8
9
  import type { AgentShareDraft } from "./useSaveAgentShare.js";
9
10
 
10
11
  /**
11
12
  * Readiness of a share's tool credentials for visitor executions.
12
13
  *
13
- * - `na` nothing to check: the agent uses no MCP tools, sharing is
14
- * off, the audience is org (bindings are public-audience only), or
15
- * the deployment cannot serve guest chat (local mode).
16
- * - `needs-credentials` — the agent uses MCP tools but the share has no
17
- * environments bound: visitors' tool calls will fail until the owner
18
- * binds credentials.
19
- * - `checking` — lookups in flight.
20
- * - `ready` — every environment bound to the share is shared with the
21
- * organization.
22
- * - `blocked` — one or more bound environments are private; their
23
- * `org/slug` references are listed for the hint copy.
14
+ * The shared vocabulary lives on {@link ToolCredentialsReadiness}; this
15
+ * alias preserves the original share-scoped export.
24
16
  */
25
- export type ShareToolReadiness =
26
- | { readonly status: "na" }
27
- | { readonly status: "needs-credentials" }
28
- | { readonly status: "checking" }
29
- | { readonly status: "ready" }
30
- | { readonly status: "blocked"; readonly privateEnvironments: readonly string[] };
31
-
32
- const NA: ShareToolReadiness = { status: "na" };
33
- const NEEDS_CREDENTIALS: ShareToolReadiness = { status: "needs-credentials" };
17
+ export type ShareToolReadiness = ToolCredentialsReadiness;
34
18
 
35
19
  /**
36
- * Data hook that checks whether a tool-using shared agent's credentials
37
- * will work for visitors i.e. whether the share binds environments
38
- * (`environment_refs`) and each one is shared with the organization
39
- * (`visibility_org`).
40
- *
41
- * Guest executions receive credentials exclusively from the share's own
42
- * `environment_refs`, resolved through the org-shared environment seam
43
- * (decision 011 — the agent's default instance stays pristine and is
44
- * never consulted). So a tool-using agent with an empty binding list is
45
- * *guaranteed* broken for visitors, and this hook says so explicitly
46
- * (`needs-credentials`) instead of staying silent — the gap that made
47
- * session 12's misconfiguration invisible until a visitor's first
48
- * message failed.
20
+ * Share-scoped wrapper over {@link useToolCredentialsReadiness}: checks
21
+ * whether a tool-using shared agent's credentials will work for
22
+ * visitors i.e. whether the share binds environments
23
+ * (`environment_refs`) and each one is shared with the organization.
49
24
  *
50
25
  * The check runs only when the share is enabled with a public audience
51
26
  * (org-audience shares reject bindings at the proto boundary), the
52
27
  * deployment is cloud (local mode has no guest runtime or secret
53
- * gating), and the agent declares MCP server usages. All lookups run as
54
- * the owner viewing the dialog, who can read the bound environments.
28
+ * gating), and the agent declares MCP server usages.
55
29
  */
56
30
  export function useShareToolReadiness(
57
31
  agent: Agent,
58
32
  draft: AgentShareDraft,
59
33
  ): ShareToolReadiness {
60
- const stigmer = useStigmer();
61
34
  const deploymentMode = useDeploymentMode();
62
- const [checked, setChecked] = useState<ShareToolReadiness>(NA);
63
-
64
35
  const hasMcpTools = (agent.spec?.mcpServerUsages?.length ?? 0) > 0;
65
36
  const applicable =
66
37
  draft.enabled &&
@@ -68,64 +39,5 @@ export function useShareToolReadiness(
68
39
  deploymentMode === "cloud" &&
69
40
  hasMcpTools;
70
41
 
71
- // Stable key for the effect: the visibility lookups depend only on
72
- // which environments are bound, not on the array's identity.
73
- const refsKey = useMemo(
74
- () => draft.environmentRefs.map((ref) => `${ref.org}/${ref.slug}`).join(","),
75
- [draft.environmentRefs],
76
- );
77
-
78
- const shouldFetch = applicable && refsKey !== "";
79
-
80
- useEffect(() => {
81
- if (!shouldFetch) {
82
- setChecked(NA);
83
- return;
84
- }
85
-
86
- let cancelled = false;
87
- setChecked({ status: "checking" });
88
-
89
- (async (): Promise<ShareToolReadiness> => {
90
- const privateRefs: string[] = [];
91
- for (const ref of refsKey.split(",")) {
92
- const [org, slug] = ref.split("/");
93
- try {
94
- const env = await stigmer.environment.getByReference({ org, slug });
95
- if (
96
- env.metadata?.visibility !== ApiResourceVisibility.visibility_org
97
- ) {
98
- privateRefs.push(ref);
99
- }
100
- } catch {
101
- // Unreadable ref (deleted, foreign): the runtime's merge will
102
- // skip it for visitors too — surface it as blocking.
103
- privateRefs.push(ref);
104
- }
105
- }
106
-
107
- return privateRefs.length === 0
108
- ? { status: "ready" }
109
- : { status: "blocked", privateEnvironments: privateRefs };
110
- })().then(
111
- (result) => {
112
- if (!cancelled) setChecked(result);
113
- },
114
- () => {
115
- // The hint is best-effort pre-flight advice — a failed check must
116
- // never block the dialog. The runtime error path still diagnoses.
117
- if (!cancelled) setChecked(NA);
118
- },
119
- );
120
-
121
- return () => {
122
- cancelled = true;
123
- };
124
- }, [shouldFetch, refsKey, stigmer]);
125
-
126
- if (!applicable) return NA;
127
- // Zero bindings needs no lookup: a tool-using agent without bound
128
- // credentials is broken for visitors by construction.
129
- if (refsKey === "") return NEEDS_CREDENTIALS;
130
- return checked;
42
+ return useToolCredentialsReadiness(applicable, draft.environmentRefs);
131
43
  }
package/src/styles.css CHANGED
@@ -158,6 +158,20 @@
158
158
  -moz-osx-font-smoothing: grayscale;
159
159
  }
160
160
 
161
+ /* The provider's in-tree container ([data-stgm-root]) ships with NO
162
+ layout styling — deliberately (#260, DD-019). A default
163
+ `height: 100%` looks benign ("resolves to auto under auto-height
164
+ parents") but is not: when the container's parent is a flex item
165
+ (e.g. a `flex-1` prose column), flexbox treats the item's flexed
166
+ size as definite for percentage resolution, and the container
167
+ balloons to it even in a fully content-sized page. Fixed-height
168
+ embedders instead opt in from host CSS, where the layout is known:
169
+
170
+ .stgm[data-stgm-root] { height: 100%; min-height: 0; }
171
+
172
+ `data-stgm-root` is the stable public selector for exactly this.
173
+ Do not add sizing rules for it here. */
174
+
161
175
  @keyframes stgm-fade-in-up {
162
176
  from {
163
177
  opacity: 0;