@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
@@ -0,0 +1,59 @@
1
+ import { WorkflowTaskKind } from "@stigmer/protos/ai/stigmer/agentic/workflow/v1/enum_pb";
2
+ import type { TopologyNodeCategory } from "../useWorkflowTopology.js";
3
+ import { categorizeKind } from "../kind-metadata.js";
4
+ import { taskKindToString } from "../workflow-graph-conversions.js";
5
+
6
+ /**
7
+ * Presentation variant for a task card in the workflow task thread.
8
+ *
9
+ * Deliberately NOT a new task-kind classification (D-T02-3): variants are a
10
+ * thin presentation projection of the canonical categories from
11
+ * `kind-metadata.ts` (`categorizeKind` — the single source of truth that
12
+ * already consolidated three drifted client-side classifications), plus one
13
+ * kind-level special case for the flagship `agent_call` card.
14
+ *
15
+ * - `agent-call` — the flagship: live agent slug, current tool, message and
16
+ * tool-call counts, transcript expansion (D-T02-2).
17
+ * - `control` — control-flow tasks (switch/fork/for-each/try-catch/wait).
18
+ * - `gate` — governance tasks (human_input); the stop-sign of the thread.
19
+ * - `event` — signal/timing tasks (listen/emit/notification/raise-error).
20
+ * - `action` — everything else (invocations, data transforms, LLM calls);
21
+ * also the fallback for `unspecified` kinds, which the snapshot-derived
22
+ * fallback task map produces when the event log is empty.
23
+ */
24
+ export type WorkflowThreadCardVariant =
25
+ | "agent-call"
26
+ | "control"
27
+ | "gate"
28
+ | "event"
29
+ | "action";
30
+
31
+ /**
32
+ * Canonical category → card variant. Data, not branches — the same table
33
+ * pattern the graph's visual registry and the session's tool taxonomy use.
34
+ */
35
+ const VARIANT_FOR_CATEGORY: ReadonlyMap<
36
+ TopologyNodeCategory,
37
+ WorkflowThreadCardVariant
38
+ > = new Map([
39
+ ["ai", "action"], // agent_call is special-cased below; llm_call/eval read as actions
40
+ ["control_flow", "control"],
41
+ ["invocation", "action"],
42
+ ["data", "action"],
43
+ ["governance", "gate"],
44
+ ["event", "event"],
45
+ ["unspecified", "action"],
46
+ ]);
47
+
48
+ /**
49
+ * Resolves the thread card variant for a task kind.
50
+ *
51
+ * `agent_call` is the one kind-level special case (the flagship card);
52
+ * every other kind flows through the canonical category classification.
53
+ */
54
+ export function threadCardVariant(
55
+ kind: WorkflowTaskKind,
56
+ ): WorkflowThreadCardVariant {
57
+ if (kind === WorkflowTaskKind.agent_call) return "agent-call";
58
+ return VARIANT_FOR_CATEGORY.get(categorizeKind(taskKindToString(kind))) ?? "action";
59
+ }
@@ -0,0 +1,34 @@
1
+ "use client";
2
+
3
+ import { useRef } from "react";
4
+ import type { DerivedTaskState } from "../../internal/store/workflow-execution-event-store.js";
5
+ import {
6
+ projectThreadItems,
7
+ type WorkflowThreadProjection,
8
+ } from "./project-thread-items.js";
9
+
10
+ /**
11
+ * Behavior hook binding {@link projectThreadItems} to a render loop with
12
+ * structural sharing: items whose fields did not change keep their object
13
+ * identity across event appends, so memoized card rows bail (DD-010).
14
+ *
15
+ * The projection is cheap (one pass over the task map), so it recomputes
16
+ * per render of the (memoized) thread organism rather than adding a
17
+ * `useMemo` whose dependency — the store's `taskStates` — changes identity
18
+ * on every event append anyway. The ref carries only the previous items
19
+ * for identity reuse; it holds no state of its own (single source of truth
20
+ * stays the store).
21
+ */
22
+ export function useWorkflowThreadItems(
23
+ taskStates: ReadonlyMap<string, DerivedTaskState>,
24
+ totalTasks: number,
25
+ ): WorkflowThreadProjection {
26
+ const previousItemsRef = useRef<WorkflowThreadProjection["items"]>([]);
27
+ const projection = projectThreadItems(
28
+ taskStates,
29
+ totalTasks,
30
+ previousItemsRef.current,
31
+ );
32
+ previousItemsRef.current = projection.items;
33
+ return projection;
34
+ }
@@ -0,0 +1,72 @@
1
+ "use client";
2
+
3
+ import { useEffect, useRef } from "react";
4
+ import type { DerivedTaskState } from "../internal/store/workflow-execution-event-store.js";
5
+
6
+ /**
7
+ * Tasks that crossed the `waiting_approval` boundary in one commit of the
8
+ * derived task-state map, in the map's (first-started) order.
9
+ */
10
+ export interface ApprovalBoundaryCrossing {
11
+ /** Task names that transitioned INTO `waiting_approval` (a gate opened). */
12
+ readonly entered: readonly string[];
13
+ /** Task names that transitioned OUT of `waiting_approval` (a gate resolved). */
14
+ readonly exited: readonly string[];
15
+ }
16
+
17
+ /**
18
+ * Behavior hook that watches the live derived task-state map and reports
19
+ * when any task crosses the `waiting_approval` boundary — the client-side
20
+ * mirror of the stream's `approval_requested` / `approval_resolved` events.
21
+ *
22
+ * Why this exists: the execution SNAPSHOT (`status.pending_approvals` /
23
+ * `status.pending_file_reviews`) is fetched once and carries the gate
24
+ * payloads, while the event STREAM is live but carries only task status.
25
+ * A boundary crossing is precisely the moment the snapshot goes stale, so
26
+ * consumers refetch it then — derived-over-stored: the stream is the
27
+ * signal, the snapshot stays the single source for gate payloads. The
28
+ * `WorkflowExecutionViewer` additionally auto-selects a newly gated task so
29
+ * the decision surface (the panel's Inspect Approval tab) is never hidden
30
+ * while the run is blocked.
31
+ *
32
+ * Same diffing shape as {@link useExecutionAnnouncements} (prev-map ref,
33
+ * diff on each map commit). A task first observed already in
34
+ * `waiting_approval` counts as entered — with rAF-coalesced commits the
35
+ * running→waiting transition can collapse into the task's first appearance.
36
+ *
37
+ * `enabled` gates the CALLBACK, not the tracking: state is tracked even
38
+ * while disabled so enabling later never replays stale crossings. Keep it
39
+ * `false` for terminal executions — their event-history replay crosses the
40
+ * boundary for long-decided gates.
41
+ */
42
+ export function useApprovalBoundary(
43
+ taskStates: ReadonlyMap<string, DerivedTaskState>,
44
+ enabled: boolean,
45
+ onCrossing: (crossing: ApprovalBoundaryCrossing) => void,
46
+ ): void {
47
+ const prevStatesRef = useRef<ReadonlyMap<string, DerivedTaskState>>(new Map());
48
+ // Render-synced ref so the diff effect never re-runs (and never fires
49
+ // spuriously) because a consumer passed a fresh callback identity.
50
+ const onCrossingRef = useRef(onCrossing);
51
+ onCrossingRef.current = onCrossing;
52
+
53
+ useEffect(() => {
54
+ const prev = prevStatesRef.current;
55
+ prevStatesRef.current = taskStates;
56
+ if (!enabled) return;
57
+
58
+ const entered: string[] = [];
59
+ const exited: string[] = [];
60
+
61
+ for (const [name, state] of taskStates) {
62
+ const prevStatus = prev.get(name)?.status;
63
+ if (prevStatus === state.status) continue;
64
+ if (state.status === "waiting_approval") entered.push(name);
65
+ else if (prevStatus === "waiting_approval") exited.push(name);
66
+ }
67
+
68
+ if (entered.length > 0 || exited.length > 0) {
69
+ onCrossingRef.current({ entered, exited });
70
+ }
71
+ }, [taskStates, enabled]);
72
+ }
@@ -105,32 +105,6 @@ export function computeFollowCenter(input: FollowCenterInput): FollowCenterResul
105
105
  };
106
106
  }
107
107
 
108
- /** Inputs for the follow-selection decision. */
109
- export interface FollowSelectionInput {
110
- /** Whether the follow state machine is in "following" state. */
111
- readonly isFollowing: boolean;
112
- /** The currently active (running/waiting) task name, or null. */
113
- readonly activeTaskName: string | null;
114
- /** The currently selected task name in the graph, or null. */
115
- readonly currentSelectedTask: string | null;
116
- }
117
-
118
- /**
119
- * Pure function that determines whether follow-selection should update
120
- * the selected task. Returns the task name to select, or `null` when
121
- * no change is needed. Extracted for testability (DD-003).
122
- *
123
- * Selection should update when all three conditions hold:
124
- * 1. Follow is active (`isFollowing`)
125
- * 2. An active task exists (`activeTaskName`)
126
- * 3. The active task differs from the current selection
127
- */
128
- export function computeFollowSelection(input: FollowSelectionInput): string | null {
129
- if (!input.isFollowing || !input.activeTaskName) return null;
130
- if (input.activeTaskName === input.currentSelectedTask) return null;
131
- return input.activeTaskName;
132
- }
133
-
134
108
  /**
135
109
  * Behavior hook implementing a follow-execution state machine for the
136
110
  * workflow execution graph viewport.
@@ -0,0 +1,68 @@
1
+ "use client";
2
+
3
+ // Behavior hook that downloads an Artifact resource on demand.
4
+ // Domain: workflow (the Artifact-resource counterpart of useArtifactDownload).
5
+
6
+ import { useCallback, useMemo, useState } from "react";
7
+ import { useStigmer } from "../hooks.js";
8
+ import { toError } from "../internal/toError.js";
9
+
10
+ /** Return value of {@link useWorkflowArtifactDownload}. */
11
+ export interface UseWorkflowArtifactDownloadReturn {
12
+ /**
13
+ * Mint a fresh download URL for the artifact and open it. No-op when the
14
+ * id is empty or a download is already in flight. Resolves once the
15
+ * download has been initiated.
16
+ *
17
+ * @param artifactId - The `Artifact` resource id (`art_…`).
18
+ */
19
+ readonly download: (artifactId: string) => Promise<void>;
20
+ /** `true` while a URL is being minted / the download is being initiated. */
21
+ readonly isDownloading: boolean;
22
+ /** Error from the last failed download attempt, or `null` when healthy. */
23
+ readonly error: Error | null;
24
+ }
25
+
26
+ /**
27
+ * Behavior hook that downloads an `Artifact` resource on demand via
28
+ * `stigmer.artifact.getDownloadUrl(id)` — mint-at-click-time so the
29
+ * (short-TTL, presigned in Cloud) URL is always valid.
30
+ *
31
+ * Mirrors {@link useArtifactDownload}, which serves the session's
32
+ * `ExecutionArtifact` model (addressed by `executionId` + `storageKey`);
33
+ * this one serves the workflow's first-class `Artifact` resource (addressed
34
+ * by artifact id). The two models are deliberately unified only at the
35
+ * presentational layer, so each keeps its own download mechanics.
36
+ */
37
+ export function useWorkflowArtifactDownload(): UseWorkflowArtifactDownloadReturn {
38
+ const stigmer = useStigmer();
39
+ const [isDownloading, setIsDownloading] = useState(false);
40
+ const [error, setError] = useState<Error | null>(null);
41
+
42
+ const download = useCallback(
43
+ async (artifactId: string) => {
44
+ if (!artifactId || isDownloading) return;
45
+ setIsDownloading(true);
46
+ setError(null);
47
+ try {
48
+ const result = await stigmer.artifact.getDownloadUrl(artifactId);
49
+ if (result.url) {
50
+ // New tab rather than an anchor download: the URL's disposition is
51
+ // owned by the server (presigned in Cloud), and the `download`
52
+ // attribute is ignored cross-origin anyway.
53
+ window.open(result.url, "_blank", "noopener,noreferrer");
54
+ }
55
+ } catch (err) {
56
+ setError(toError(err));
57
+ } finally {
58
+ setIsDownloading(false);
59
+ }
60
+ },
61
+ [stigmer, isDownloading],
62
+ );
63
+
64
+ return useMemo(
65
+ () => ({ download, isDownloading, error }),
66
+ [download, isDownloading, error],
67
+ );
68
+ }
@@ -116,8 +116,9 @@ export interface UseWorkflowExecutionActionsReturn {
116
116
  readonly approvalSubmittingToolCallIds: ReadonlySet<string>;
117
117
  /**
118
118
  * Per-gate agent-tool approval failures, keyed by `toolCallId`. Consumed by
119
- * {@link WorkflowExecutionApprovalCard} to surface the failure in-card,
120
- * beside the gate that failed. Cleared for a gate when it is retried.
119
+ * `WorkflowApprovalList` (via the shared `ApprovalCard`) to surface the
120
+ * failure in-card, beside the gate that failed. Cleared for a gate when it
121
+ * is retried.
121
122
  */
122
123
  readonly approvalErrorsByToolCallId: ReadonlyMap<string, Error>;
123
124
  /**
@@ -0,0 +1,341 @@
1
+ "use client";
2
+
3
+ // Execution-level file-change rollup for the workflow panel's Changes facet.
4
+ // Domain: workflow (the Changes-facet analog of useWorkflowExecutionArtifacts).
5
+ //
6
+ // Unlike Artifacts (a server-side aggregate: `artifact.listByExecution`) and
7
+ // Usage (server-emitted budget checkpoints), file changes have NO parent-level
8
+ // aggregate BY DESIGN: the server keeps diffs single-sourced on each child
9
+ // AgentExecution and surfaces only references from the parent (see
10
+ // `WorkflowExecutionStatus.pending_file_reviews`). So this hook dereferences
11
+ // the children client-side — the same reference→dereference architecture as
12
+ // `WorkflowFileReviewList`, generalized from "pending gates" to the settled
13
+ // net rollup, with a one-shot `get()` per child instead of a live stream
14
+ // (the rollup needs task-boundary freshness, not token-level liveness).
15
+ // Should a server rollup ever land, it can replace the fan-out behind this
16
+ // hook's plain `FileChange[]` seam without touching consumers.
17
+
18
+ import { useEffect, useMemo, useRef, useState } from "react";
19
+ import type { AgentExecution } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
20
+ import type { FileChange } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/message_pb";
21
+ import type { WorkflowTask } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/api_pb";
22
+ import { WorkflowTaskStatus } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/enum_pb";
23
+ import { deriveExecutionFileChanges } from "../execution/deriveExecutionFileChanges.js";
24
+ import { useStigmer } from "../hooks.js";
25
+ import { toError } from "../internal/toError.js";
26
+ import type { DerivedTaskState } from "../internal/store/workflow-execution-event-store.js";
27
+
28
+ // ---------------------------------------------------------------------------
29
+ // Enumeration (pure — exported for tests, DD-003)
30
+ // ---------------------------------------------------------------------------
31
+
32
+ /** One AGENT_CALL task's child execution, as enumerated for the rollup. */
33
+ export interface AgentCallChild {
34
+ /** Name of the owning workflow task. */
35
+ readonly taskName: string;
36
+ /** The child AgentExecution id (`aex_*`). */
37
+ readonly childExecutionId: string;
38
+ /**
39
+ * `true` once the owning task has settled (completed/failed/skipped) — the
40
+ * child's file changes are final and will never change again.
41
+ */
42
+ readonly settled: boolean;
43
+ }
44
+
45
+ const SETTLED_TASK_STATUSES: ReadonlySet<DerivedTaskState["status"]> = new Set([
46
+ "completed",
47
+ "failed",
48
+ "skipped",
49
+ ]);
50
+
51
+ const SETTLED_SNAPSHOT_STATUSES: ReadonlySet<WorkflowTaskStatus> = new Set([
52
+ WorkflowTaskStatus.WORKFLOW_TASK_COMPLETED,
53
+ WorkflowTaskStatus.WORKFLOW_TASK_FAILED,
54
+ WorkflowTaskStatus.WORKFLOW_TASK_SKIPPED,
55
+ ]);
56
+
57
+ /**
58
+ * Enumerates the AGENT_CALL children of a workflow execution in
59
+ * task-chronological order, deduplicated by child execution id.
60
+ *
61
+ * **Ordering is a correctness input downstream**: two agent-call tasks can
62
+ * edit the same path, and `deriveExecutionFileChanges` anchors each path's
63
+ * net diff on its first and last change — so children must be visited in the
64
+ * order their tasks ran.
65
+ *
66
+ * Two sources, mirroring `buildAgentCall` in the execution inspector:
67
+ *
68
+ * 1. **Event-derived task states** (primary). `DerivedTaskState.childExecutionId`
69
+ * is populated from `agentCallStarted`/`agentCallProgress` events, and the
70
+ * map's insertion order follows first-event order — i.e. task chronology.
71
+ * 2. **Snapshot task metadata** (fallback — load-bearing, not decorative).
72
+ * `execution.status.tasks[].metadata.agent_execution_id` covers tasks whose
73
+ * events are absent: the viewer's fallback task states (built when event
74
+ * persistence failed) hardcode `childExecutionId: ""`, so for those runs
75
+ * the snapshot is the ONLY id source. The dedupe therefore keys on tasks
76
+ * that actually CONTRIBUTED an id from events — an event-known task with
77
+ * an empty id must still resolve through its snapshot, or the fallback
78
+ * would never fire at all. Snapshot-resolved entries are appended after
79
+ * event-derived ones, ordered among themselves by `startedAt` (in the
80
+ * pure-fallback case that IS the chronological order; in the transient
81
+ * mixed case — a running task whose `agentCallStarted` event hasn't
82
+ * arrived yet — the tail position is an approximation the next event
83
+ * corrects). Settled-ness prefers the live event status when the task is
84
+ * known to events, falling back to the snapshot status.
85
+ */
86
+ export function enumerateAgentCallChildren(
87
+ taskStates: ReadonlyMap<string, DerivedTaskState>,
88
+ taskSnapshots: readonly WorkflowTask[] | undefined,
89
+ ): readonly AgentCallChild[] {
90
+ const children: AgentCallChild[] = [];
91
+ const seenIds = new Set<string>();
92
+ const tasksWithEventIds = new Set<string>();
93
+
94
+ for (const state of taskStates.values()) {
95
+ if (!state.childExecutionId || seenIds.has(state.childExecutionId)) continue;
96
+ seenIds.add(state.childExecutionId);
97
+ tasksWithEventIds.add(state.taskName);
98
+ children.push({
99
+ taskName: state.taskName,
100
+ childExecutionId: state.childExecutionId,
101
+ settled: SETTLED_TASK_STATUSES.has(state.status),
102
+ });
103
+ }
104
+
105
+ if (!taskSnapshots || taskSnapshots.length === 0) return children;
106
+
107
+ const fromSnapshots: Array<AgentCallChild & { readonly startedAt: string }> = [];
108
+ for (const task of taskSnapshots) {
109
+ if (!task.taskName || tasksWithEventIds.has(task.taskName)) continue;
110
+ // Only agent-call tasks carry an agent_execution_id in their metadata —
111
+ // presence of the id IS the discriminator (same read as the inspector's
112
+ // snapshot fallback).
113
+ const meta = task.metadata as unknown as Record<string, unknown> | undefined;
114
+ const childId = meta?.agent_execution_id;
115
+ if (typeof childId !== "string" || !childId || seenIds.has(childId)) continue;
116
+ seenIds.add(childId);
117
+ const eventState = taskStates.get(task.taskName);
118
+ fromSnapshots.push({
119
+ taskName: task.taskName,
120
+ childExecutionId: childId,
121
+ settled: eventState
122
+ ? SETTLED_TASK_STATUSES.has(eventState.status)
123
+ : SETTLED_SNAPSHOT_STATUSES.has(task.status),
124
+ startedAt: task.startedAt ?? "",
125
+ });
126
+ }
127
+
128
+ // RFC 3339 UTC timestamps sort chronologically as strings; tasks without a
129
+ // startedAt keep their snapshot (definition) order at the end.
130
+ fromSnapshots.sort((a, b) =>
131
+ a.startedAt && b.startedAt ? a.startedAt.localeCompare(b.startedAt) : 0,
132
+ );
133
+ for (const { startedAt: _startedAt, ...child } of fromSnapshots) {
134
+ children.push(child);
135
+ }
136
+ return children;
137
+ }
138
+
139
+ /**
140
+ * The fetch-plan signature of an enumeration: one line per child,
141
+ * `id:settledFlag`, in rollup order. Two enumerations with the same signature
142
+ * need identical fetches AND produce identically-ordered rollups — so it is
143
+ * both the effect dependency and the memo key that shields downstream
144
+ * consumers from the event store's per-event `taskStates` identity churn
145
+ * (DD-009/DD-010: never key an effect on the map reference itself).
146
+ */
147
+ export function agentCallChildrenSignature(
148
+ children: readonly AgentCallChild[],
149
+ ): string {
150
+ return children
151
+ .map((c) => `${c.childExecutionId}:${c.settled ? "1" : "0"}`)
152
+ .join("\n");
153
+ }
154
+
155
+ // ---------------------------------------------------------------------------
156
+ // Hook
157
+ // ---------------------------------------------------------------------------
158
+
159
+ /** Options for {@link useWorkflowExecutionFileChanges}. */
160
+ export interface UseWorkflowExecutionFileChangesOptions {
161
+ /**
162
+ * The workflow execution id — the reset boundary: switching executions
163
+ * clears fetched children so run A's changes never bleed into run B.
164
+ */
165
+ readonly executionId: string | null;
166
+ /** Derived task states (pass the viewer's `effectiveTaskStates`). */
167
+ readonly taskStates: ReadonlyMap<string, DerivedTaskState>;
168
+ /** Per-task status snapshots (`execution.status.tasks`) — the fallback source. */
169
+ readonly taskSnapshots?: readonly WorkflowTask[];
170
+ }
171
+
172
+ /** Return value of {@link useWorkflowExecutionFileChanges}. */
173
+ export interface UseWorkflowExecutionFileChangesReturn {
174
+ /**
175
+ * One net {@link FileChange} per file touched across all AGENT_CALL tasks,
176
+ * in file-list order (see {@link deriveExecutionFileChanges}).
177
+ */
178
+ readonly fileChanges: readonly FileChange[];
179
+ /** Number of distinct files changed. */
180
+ readonly fileChangeCount: number;
181
+ /** `true` while the first child fetches are in flight (no data yet). */
182
+ readonly isLoading: boolean;
183
+ /** `true` while later child fetches are in flight and stale data is shown. */
184
+ readonly isRefetching: boolean;
185
+ /** First error from the last fetch round, or `null`. Partial data still renders. */
186
+ readonly error: Error | null;
187
+ /** Re-fetch every child from scratch (manual escape hatch). */
188
+ readonly refetch: () => void;
189
+ }
190
+
191
+ /**
192
+ * Aggregates a workflow execution's file changes across all its AGENT_CALL
193
+ * children into one net change per file — the data source for the panel's
194
+ * Changes facet.
195
+ *
196
+ * **Fetch policy (bounded: ≤2 gets per child).** Each child is fetched
197
+ * one-shot via `agentExecution.get()` when first enumerated, and once more
198
+ * when its task settles (the terminal snapshot carries the final ledger —
199
+ * `displayFileChangeSets` folds `status.file_review_event_stream` for a
200
+ * terminal execution). No live child streams: the rollup refreshes at task
201
+ * boundaries, which is the freshness this facet promises. A failed child
202
+ * fetch surfaces `error` but never blocks the other children's results.
203
+ *
204
+ * **Stability.** The fetch effect and all derived memos key on the
205
+ * enumeration *signature*, not the `taskStates` map identity (which churns
206
+ * per event during a live run) — so mid-task events cause zero fetches and
207
+ * zero re-derivation. The returned object is memoized (DD-010).
208
+ *
209
+ * @see WorkflowChangesTab — the facet rendering this data
210
+ * @see useSessionFileChanges — the session-side counterpart over the same core
211
+ */
212
+ export function useWorkflowExecutionFileChanges({
213
+ executionId,
214
+ taskStates,
215
+ taskSnapshots,
216
+ }: UseWorkflowExecutionFileChangesOptions): UseWorkflowExecutionFileChangesReturn {
217
+ const stigmer = useStigmer();
218
+ const stigmerRef = useRef(stigmer);
219
+ stigmerRef.current = stigmer;
220
+
221
+ // Enumerate on every render (cheap map walk), then pin identity to the
222
+ // signature so the event store's per-event map churn never propagates.
223
+ const children = enumerateAgentCallChildren(taskStates, taskSnapshots);
224
+ const signature = agentCallChildrenSignature(children);
225
+ const stableChildrenRef = useRef<{
226
+ signature: string;
227
+ children: readonly AgentCallChild[];
228
+ }>({ signature, children });
229
+ if (stableChildrenRef.current.signature !== signature) {
230
+ stableChildrenRef.current = { signature, children };
231
+ }
232
+ const stableChildren = stableChildrenRef.current.children;
233
+
234
+ // Fetched child snapshots by id (rendered state) + the settled-ness each id
235
+ // was fetched at (ref — drives the ≤2-fetches policy, never rendered).
236
+ const [executionsById, setExecutionsById] = useState<
237
+ ReadonlyMap<string, AgentExecution>
238
+ >(() => new Map());
239
+ const fetchedSettledRef = useRef(new Map<string, boolean>());
240
+
241
+ const [isFetching, setIsFetching] = useState(false);
242
+ const [error, setError] = useState<Error | null>(null);
243
+ const [fetchKey, setFetchKey] = useState(0);
244
+
245
+ const refetch = useMemo(
246
+ () => () => {
247
+ fetchedSettledRef.current.clear();
248
+ setFetchKey((k) => k + 1);
249
+ },
250
+ [],
251
+ );
252
+
253
+ // Reset on execution switch — same identity-boundary treatment as
254
+ // useFetch/useWorkflowExecutionEventStream. `isFetching` must reset too:
255
+ // a fetch in flight for run A is cancelled by the effect cleanup, and if
256
+ // run B needs no fetches the effect bails before ever writing the flag —
257
+ // a stale `true` would report "loading" forever.
258
+ const prevExecutionIdRef = useRef(executionId);
259
+ if (prevExecutionIdRef.current !== executionId) {
260
+ prevExecutionIdRef.current = executionId;
261
+ fetchedSettledRef.current.clear();
262
+ setExecutionsById(new Map());
263
+ setIsFetching(false);
264
+ setError(null);
265
+ }
266
+
267
+ useEffect(() => {
268
+ if (!executionId) return;
269
+
270
+ // A child needs a fetch when never fetched, or fetched live and now
271
+ // settled (the settle fetch picks up the final ledger).
272
+ const toFetch = stableChildren.filter((child) => {
273
+ const fetchedAs = fetchedSettledRef.current.get(child.childExecutionId);
274
+ return fetchedAs === undefined || (fetchedAs === false && child.settled);
275
+ });
276
+ if (toFetch.length === 0) return;
277
+
278
+ let cancelled = false;
279
+ setIsFetching(true);
280
+ setError(null);
281
+
282
+ (async () => {
283
+ const results = await Promise.all(
284
+ toFetch.map(async (child) => {
285
+ try {
286
+ const execution = await stigmerRef.current.agentExecution.get(
287
+ child.childExecutionId,
288
+ );
289
+ return { child, execution, error: null as Error | null };
290
+ } catch (err) {
291
+ return { child, execution: null, error: toError(err) };
292
+ }
293
+ }),
294
+ );
295
+ if (cancelled) return;
296
+
297
+ setExecutionsById((prev) => {
298
+ const next = new Map(prev);
299
+ for (const { child, execution } of results) {
300
+ if (!execution) continue;
301
+ next.set(child.childExecutionId, execution);
302
+ fetchedSettledRef.current.set(child.childExecutionId, child.settled);
303
+ }
304
+ return next;
305
+ });
306
+ const firstError = results.find((r) => r.error)?.error ?? null;
307
+ setError(firstError);
308
+ setIsFetching(false);
309
+ })();
310
+
311
+ return () => {
312
+ cancelled = true;
313
+ };
314
+ // signature (not stableChildren/taskStates identity) keys the fetch plan.
315
+ }, [executionId, signature, fetchKey]);
316
+
317
+ const fileChanges = useMemo(() => {
318
+ const ordered: AgentExecution[] = [];
319
+ for (const child of stableChildren) {
320
+ const execution = executionsById.get(child.childExecutionId);
321
+ if (execution) ordered.push(execution);
322
+ }
323
+ return deriveExecutionFileChanges(ordered);
324
+ }, [stableChildren, executionsById]);
325
+
326
+ const hasData = executionsById.size > 0;
327
+ const isLoading = isFetching && !hasData;
328
+ const isRefetching = isFetching && hasData;
329
+
330
+ return useMemo(
331
+ () => ({
332
+ fileChanges,
333
+ fileChangeCount: fileChanges.length,
334
+ isLoading,
335
+ isRefetching,
336
+ error,
337
+ refetch,
338
+ }),
339
+ [fileChanges, isLoading, isRefetching, error, refetch],
340
+ );
341
+ }