@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,318 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { memo, useMemo, useState } from "react";
4
+ import { cn } from "@stigmer/theme";
5
+ import { useAutoScroll } from "../../internal/useAutoScroll.js";
6
+ import { JumpToLatestButton } from "../../internal/JumpToLatestButton.js";
7
+ import { BoundedContent } from "../../internal/BoundedContent.js";
8
+ import { ThreadCardShell, ThreadCardHeader, ThreadCardBody, SpinnerIcon, ClockIcon, CheckCircleIcon, XCircleIcon, DotIcon, SlashCircleIcon, } from "../../internal/thread-card/index.js";
9
+ import { formatMetaChips } from "../format-utils.js";
10
+ import { WorkflowApprovalList } from "../WorkflowApprovalList.js";
11
+ import { WorkflowFileReviewList } from "../WorkflowFileReviewList.js";
12
+ import { WorkflowTaskReviewGate } from "../WorkflowTaskReviewGate.js";
13
+ import { WorkflowTaskApprovalSummary } from "../WorkflowTaskApprovalSummary.js";
14
+ import { buildIO } from "../task-detail/task-detail-io.js";
15
+ import { deriveTaskApprovalRequest, deriveTaskApprovalDecision, } from "../task-detail/task-approval.js";
16
+ import { StructuredDataViewer } from "../task-detail/StructuredDataViewer.js";
17
+ import { useWorkflowThreadItems } from "./useWorkflowThreadItems.js";
18
+ /**
19
+ * Session-style task thread for a workflow execution: one card per task in
20
+ * execution order (first-started first — D-T02-1), streaming live as the
21
+ * run progresses, with a collapsed preview and an expandable detail body
22
+ * per card — the workflow analog of the session viewer's tool-call cards.
23
+ *
24
+ * Pending tasks render no cards (D-T02-5); the progress header keeps
25
+ * overall status visible. Retries collapse into one card with an attempt
26
+ * indicator (D-T02-6). AGENT_CALL cards carry an always-visible body with
27
+ * an "Open transcript" affordance (D-T02-2) — the full transcript opens as
28
+ * a panel document, never inline. Since T04 the card is the PRIMARY surface
29
+ * for a task's data (kind-aware preview line + bounded I/O body); since T06
30
+ * it is the ONLY one — the Inspect drill-down is gone, and cards compose
31
+ * the session card language exactly (expand-or-none headers, no selection).
32
+ *
33
+ * Auto-follow uses the session thread's mechanism: an IntersectionObserver
34
+ * sentinel keeps the list pinned to the latest card until the user scrolls
35
+ * up, with a jump-to-latest affordance to re-engage.
36
+ *
37
+ * With `hitl` wired, a gating task's card carries its decision surface
38
+ * in-thread (S10/T06): the canonical `ApprovalCard`s for child tool gates,
39
+ * the child-streaming `FileReviewCard`s for file gates, and the full
40
+ * `WorkflowTaskReviewGate` (custom review renderers included) for
41
+ * task-level human_input gates — with a read-only
42
+ * `WorkflowTaskApprovalSummary` once the gate resolves.
43
+ *
44
+ * This component is designed to work identically whether rendered in the
45
+ * Stigmer Console or embedded in a third-party dashboard. No dependencies
46
+ * on Console routing, auth, or layout context.
47
+ */
48
+ export const WorkflowTaskThread = memo(function WorkflowTaskThread({ taskStates, totalTasks, isRunning, onOpenAgentExecution, hitl, pendingApprovals, pendingFileReviews, taskSnapshotsByName, className, }) {
49
+ const { items, progress } = useWorkflowThreadItems(taskStates, totalTasks);
50
+ const { scrollRef, sentinelRef, contentRef, isFollowing, jumpToLatest } = useAutoScroll();
51
+ // Group the snapshot's gates by owning child ONCE per snapshot identity —
52
+ // the lists change only on a snapshot refetch, never on stream event
53
+ // appends, so during streaming every card's `gates` prop keeps a stable
54
+ // reference (`undefined` for non-gating cards) and memoized rows bail
55
+ // (DD-009/DD-010). Grouping is unconditional (it is cheap and usually
56
+ // empty); rendering is gated on `hitl` at the card.
57
+ const gatesByChild = useMemo(() => {
58
+ const map = new Map();
59
+ const bucket = (childId) => {
60
+ let entry = map.get(childId);
61
+ if (!entry) {
62
+ entry = { approvals: [], fileReviews: [] };
63
+ map.set(childId, entry);
64
+ }
65
+ return entry;
66
+ };
67
+ for (const pa of pendingApprovals ?? []) {
68
+ if (pa.childAgentExecutionId)
69
+ bucket(pa.childAgentExecutionId).approvals.push(pa);
70
+ }
71
+ for (const ref of pendingFileReviews ?? []) {
72
+ if (ref.childAgentExecutionId)
73
+ bucket(ref.childAgentExecutionId).fileReviews.push(ref);
74
+ }
75
+ return map;
76
+ }, [pendingApprovals, pendingFileReviews]);
77
+ return (_jsxs("div", { className: cn("relative flex h-full min-h-0 flex-col", className), children: [_jsx(ThreadProgressHeader, { progress: progress, isRunning: isRunning }), _jsx("div", { ref: scrollRef, className: "min-h-0 flex-1 overflow-y-auto", children: _jsxs("div", { ref: contentRef, className: "mx-auto flex w-full max-w-3xl flex-col gap-2 px-4 py-4", children: [items.length === 0 ? (_jsx(ThreadEmptyState, { isRunning: isRunning })) : (items.map((item) => (_jsx(ThreadTaskCard, { item: item, onOpenAgentExecution: onOpenAgentExecution,
78
+ // HITL props reach ONLY gating cards (DD-010): the bundle's
79
+ // identity moves whenever any gate's in-flight/error state
80
+ // flips (fresh Set/Map fields), so handing it to every card
81
+ // would re-render the whole column per spinner tick. Scoped
82
+ // here, non-gating cards keep `undefined === undefined` and
83
+ // their memo bails hold.
84
+ hitl: item.status === "waiting_approval" ? hitl : undefined, gates: item.status === "waiting_approval" && item.childExecutionId
85
+ ? gatesByChild.get(item.childExecutionId)
86
+ : undefined, snapshot: taskSnapshotsByName?.get(item.taskName) }, item.taskName)))), _jsx("div", { ref: sentinelRef, "aria-hidden": "true" })] }) }), _jsx(JumpToLatestButton, { visible: !isFollowing, onClick: jumpToLatest })] }));
87
+ });
88
+ // ---------------------------------------------------------------------------
89
+ // Progress header
90
+ // ---------------------------------------------------------------------------
91
+ function ThreadProgressHeader({ progress, isRunning, }) {
92
+ const { settledTasks, activeTasks, totalTasks } = progress;
93
+ const settled = totalTasks > 0
94
+ ? `${settledTasks} of ${totalTasks} tasks`
95
+ : `${settledTasks} ${settledTasks === 1 ? "task" : "tasks"}`;
96
+ return (_jsxs("div", { className: "flex items-center gap-2 border-b border-border px-4 py-1.5 text-xs text-muted-foreground", children: [_jsx("span", { children: settled }), activeTasks > 0 && (_jsxs("span", { className: "flex items-center gap-1.5", children: [_jsx("span", { "aria-hidden": "true", className: cn("size-1.5 rounded-full bg-primary", isRunning && "animate-pulse") }), activeTasks, " active"] }))] }));
97
+ }
98
+ // ---------------------------------------------------------------------------
99
+ // Empty state
100
+ // ---------------------------------------------------------------------------
101
+ function ThreadEmptyState({ isRunning }) {
102
+ return (_jsx("div", { role: "status", className: "px-4 py-10 text-center text-sm text-muted-foreground", children: isRunning
103
+ ? "Waiting for the first task to start…"
104
+ : "No task activity was recorded for this execution." }));
105
+ }
106
+ // ---------------------------------------------------------------------------
107
+ // Task card
108
+ // ---------------------------------------------------------------------------
109
+ /**
110
+ * One task card. Memoized against the structurally-shared item (DD-010):
111
+ * during streaming only the actively-changing task's item gets a fresh
112
+ * identity, so settled cards bail here. `hitl`/`gates` arrive ONLY while
113
+ * this card is gating (the thread scopes them — see the render site), so
114
+ * gate-state churn (a decision's in-flight Set flip re-materializes the
115
+ * bundle) re-renders gating cards only, never the column. `snapshot`
116
+ * changes identity only on a snapshot refetch, never on stream appends.
117
+ * Expansion is local row state — expanding one card never re-renders its
118
+ * siblings.
119
+ *
120
+ * Disclosure (T04, the session `ToolCallItem` rule — "does the body carry
121
+ * content the one-line row cannot?"):
122
+ * - `"preview"` kinds render an ALWAYS-VISIBLE bounded output body (no
123
+ * card chevron — `BoundedContent` owns its own in-place reveal, so the
124
+ * old "expand, then Show more" double control never comes back).
125
+ * - `"summary"` kinds expand from the header — the session card's own
126
+ * gesture, the chevron appended by the shell (T06).
127
+ */
128
+ const ThreadTaskCard = memo(function ThreadTaskCard({ item, onOpenAgentExecution, hitl, gates, snapshot, }) {
129
+ const [expanded, setExpanded] = useState(false);
130
+ // The I/O fallback ladder (full snapshot value → truncated event summary
131
+ // → nothing) — an O(1) lookup, never an event-log scan (T04).
132
+ const outputIO = useMemo(() => buildIO(snapshot?.output, item.outputSummary, snapshot?.artifactIds ?? []), [snapshot, item.outputSummary]);
133
+ const inputIO = useMemo(() => buildIO(snapshot?.input, item.inputSummary, []), [snapshot, item.inputSummary]);
134
+ // The human_input gate record (T06): the review material for a pending
135
+ // gate, the decision report for a resolved one. Memoized on the captured
136
+ // payloads' identities — the store keeps them reference-stable, so these
137
+ // recompute only when a gate opens/resolves or the snapshot refetches.
138
+ const approvalRequestView = useMemo(() => item.approvalRequest
139
+ ? deriveTaskApprovalRequest(item.approvalRequest)
140
+ : null, [item.approvalRequest]);
141
+ const approvalDecision = useMemo(() => item.approvalRequest
142
+ ? deriveTaskApprovalDecision(item.approvalResolution, snapshot?.output)
143
+ : null, [item.approvalRequest, item.approvalResolution, snapshot]);
144
+ const isPreview = item.disclosure === "preview";
145
+ const showHitl = !!hitl && item.status === "waiting_approval";
146
+ // While gating, the in-card HITL section owns the card's affordances
147
+ // (including "Open transcript" when the child's gates aren't surfaced) —
148
+ // the preview body must not render a duplicate.
149
+ const showBodyTranscript = item.variant === "agent-call" &&
150
+ !!item.childExecutionId &&
151
+ !!onOpenAgentExecution &&
152
+ !showHitl;
153
+ // A resolved human_input gate presents its decision report in place of
154
+ // the raw output Struct (the output IS the decision record — the report
155
+ // is the readable rendering of it).
156
+ const showApprovalSummary = !showHitl && approvalRequestView !== null && approvalDecision !== null;
157
+ // The session's `showBody` gate: a preview body renders only when it has
158
+ // content the header cannot carry (output, an error, the agent-call
159
+ // transcript affordance, or a gate's decision report) — a content-less
160
+ // preview card collapses back to a clean one-line row.
161
+ const showPreviewBody = isPreview &&
162
+ (outputIO !== null ||
163
+ !!item.error ||
164
+ showBodyTranscript ||
165
+ showApprovalSummary);
166
+ const meta = formatMetaChips({
167
+ durationMs: item.durationMs,
168
+ costMicros: item.costMicros,
169
+ tokens: item.tokensUsed,
170
+ });
171
+ // Kind-aware one-liner resolved by `resolveTaskPreview` in the projection
172
+ // (T04) — a primitive on the item so this memoized card bails during
173
+ // streaming. The empty string means "nothing kind-specific to say".
174
+ const preview = item.previewLine || null;
175
+ return (_jsxs(ThreadCardShell, { accent: item.status === "waiting_approval" ? "warning" : null, cursorTarget: "workflow-task-row", children: [_jsxs(ThreadCardHeader, { gesture: isPreview
176
+ ? { kind: "none" }
177
+ : {
178
+ kind: "expand",
179
+ expanded,
180
+ onToggle: () => setExpanded((v) => !v),
181
+ }, children: [_jsx(StatusGlyph, { status: item.status }), _jsxs("span", { className: "min-w-0 flex-1 flex items-baseline gap-1.5 overflow-hidden", children: [_jsx("span", { className: "shrink-0 font-medium text-foreground", children: item.taskName }), item.kindLabel && (_jsx("span", { className: "shrink-0 rounded border border-border px-1 py-px text-[10px] uppercase tracking-wide text-muted-foreground", children: item.kindLabel })), item.attemptNumber > 1 && (_jsxs("span", { className: "shrink-0 text-muted-foreground", children: ["attempt ", item.attemptNumber] })), preview && (_jsx("span", { className: "min-w-0 truncate text-muted-foreground", children: preview }))] }), meta && (_jsx("span", { className: "shrink-0 tabular-nums text-muted-foreground", children: meta }))] }), showHitl && hitl && (_jsx(ThreadCardBody, { children: _jsx(ThreadTaskCardHitl, { item: item, gates: gates, hitl: hitl, approvalRequestView: approvalRequestView, onOpenAgentExecution: onOpenAgentExecution }) })), showPreviewBody && (_jsx(ThreadCardBody, { cursorTarget: "task-preview", children: _jsx(ThreadTaskPreviewBody, { item: item, outputIO: outputIO, approvalSummary: showApprovalSummary && approvalRequestView
182
+ ? {
183
+ request: approvalRequestView,
184
+ decision: approvalDecision,
185
+ }
186
+ : undefined, onOpenAgentExecution: showBodyTranscript ? onOpenAgentExecution : undefined }) })), !isPreview && expanded && (_jsx(ThreadCardBody, { children: _jsx(ThreadTaskDetail, { item: item, inputIO: inputIO, outputIO: outputIO, onOpenAgentExecution: onOpenAgentExecution }) }))] }));
187
+ });
188
+ // ---------------------------------------------------------------------------
189
+ // In-thread HITL section (S10)
190
+ // ---------------------------------------------------------------------------
191
+ /**
192
+ * The decision surface on a gating card, resolved by gate kind:
193
+ *
194
+ * 1. Child gates surfaced on the parent snapshot → the shipped lists
195
+ * (`WorkflowApprovalList` for tool approvals, `WorkflowFileReviewList`
196
+ * for file reviews), filtered to this card's child. Decisions route
197
+ * through the workflow-level RPCs on the supplied {@link
198
+ * WorkflowThreadHitl} bundle.
199
+ * 2. An AGENT_CALL card with NO surfaced gates → the child is gated but the
200
+ * snapshot has no entries: on cloud a brief refetch window; on OSS the
201
+ * steady state until the T04 forwarder lands. The honest surface is the
202
+ * child's own transcript (the S5 in-place expansion renders the child's
203
+ * ApprovalCards) — offer it, never a dead-end spinner.
204
+ * 3. Any other gating card → a task-level (human_input) gate. The full
205
+ * review surface — outcomes, forms, artifact-backed payloads, custom
206
+ * review renderers — renders right here (T06): the card is the only
207
+ * decision surface, so it carries the real `WorkflowTaskReviewGate`,
208
+ * not a link to one. Degrades to an honest waiting notice when the
209
+ * request payload is unavailable (no event stream — the snapshot
210
+ * fallback path).
211
+ */
212
+ function ThreadTaskCardHitl({ item, gates, hitl, approvalRequestView, onOpenAgentExecution, }) {
213
+ const hasChildGates = !!gates && (gates.approvals.length > 0 || gates.fileReviews.length > 0);
214
+ if (hasChildGates) {
215
+ return (_jsxs("div", { className: "flex flex-col gap-3", children: [gates.approvals.length > 0 && (_jsx(WorkflowApprovalList, { pendingApprovals: gates.approvals, onSubmitApproval: hitl.submitApproval, submittingToolCallIds: hitl.approvalSubmittingToolCallIds, approvalErrors: hitl.approvalErrorsByToolCallId })), gates.fileReviews.length > 0 && (_jsx(WorkflowFileReviewList, { pendingFileReviews: gates.fileReviews, onSubmitFileDecision: hitl.submitFileDecision, submittingDecisionKeys: hitl.fileDecisionSubmittingKeys, decisionErrors: hitl.fileDecisionErrorsByKey }))] }));
216
+ }
217
+ if (item.variant === "agent-call") {
218
+ return (_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsx("p", { className: "text-xs text-muted-foreground", children: "The called agent is waiting for an approval. Decide it in the agent's transcript." }), item.childExecutionId && onOpenAgentExecution && (_jsx(ThreadActionButton, { label: "Open transcript", onClick: () => onOpenAgentExecution(item.childExecutionId, item.taskName) }))] }));
219
+ }
220
+ if (approvalRequestView) {
221
+ return (_jsx(WorkflowTaskReviewGate, { taskName: item.taskName, prompt: approvalRequestView.prompt, outcomes: approvalRequestView.outcomes, formSchema: approvalRequestView.formSchema ?? undefined, payload: approvalRequestView.payload, uiHint: approvalRequestView.uiHint, payloadArtifactId: approvalRequestView.payloadArtifactId, onSubmit: hitl.submitTaskApproval, isSubmitting: hitl.taskApprovalSubmittingTaskNames.has(item.taskName), error: hitl.taskApprovalErrorsByTaskName.get(item.taskName) ?? null }));
222
+ }
223
+ // No captured request payload (event stream unavailable) — state the
224
+ // block honestly rather than rendering a gate with no material.
225
+ return (_jsx("p", { className: "text-xs text-muted-foreground", children: "Review required to continue this run." }));
226
+ }
227
+ function ThreadActionButton({ label, onClick, }) {
228
+ return (_jsx("button", { type: "button", onClick: onClick, className: "shrink-0 rounded border border-border px-2 py-1 text-xs font-medium text-foreground hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", children: label }));
229
+ }
230
+ // ---------------------------------------------------------------------------
231
+ // Card bodies (T04)
232
+ // ---------------------------------------------------------------------------
233
+ /**
234
+ * One side of a task's I/O in the card, honest about provenance: the
235
+ * event-summary rung of the fallback ladder carries the same truncation
236
+ * banner Inspect uses. Bounded — the outer `BoundedContent` caps total
237
+ * height (single-level with `StructuredDataViewer`'s per-value reveals:
238
+ * different granularity, they never govern the same block).
239
+ */
240
+ function ThreadTaskIOSection({ label, io, }) {
241
+ return (_jsxs("div", { className: "flex flex-col gap-1", children: [_jsx("span", { className: "text-[10px] font-medium uppercase tracking-wide text-muted-foreground", children: label }), io.source === "event-summary" && (_jsx("p", { className: "text-[10px] text-muted-foreground", children: "Showing truncated summary from the event log. Full data appears when the run's snapshot is available." })), _jsx(BoundedContent, { children: _jsx(StructuredDataViewer, { data: io.data }) })] }));
242
+ }
243
+ /**
244
+ * The always-visible body of a `"preview"`-kind card: the task's output
245
+ * (via the I/O fallback ladder), the failure detail when the task failed,
246
+ * and the agent-call transcript affordance. Content only — the header owns
247
+ * all metadata (session `ToolCallDetail` invariant).
248
+ *
249
+ * A resolved human_input gate supplies `approvalSummary` and gets the
250
+ * read-only decision report instead of the raw output Struct — the output
251
+ * IS the decision record, and the report is its readable rendering (T06).
252
+ */
253
+ function ThreadTaskPreviewBody({ item, outputIO, approvalSummary, onOpenAgentExecution, }) {
254
+ return (_jsxs("div", { className: "flex flex-col gap-2", children: [item.error && (_jsx(BoundedContent, { children: _jsx("pre", { className: "whitespace-pre-wrap break-words text-xs text-destructive", children: item.error }) })), approvalSummary ? (_jsx(WorkflowTaskApprovalSummary, { taskName: item.taskName, prompt: approvalSummary.request.prompt, outcomes: approvalSummary.request.outcomes, decision: approvalSummary.decision })) : (outputIO && _jsx(ThreadTaskIOSection, { label: "Output", io: outputIO })), item.variant === "agent-call" &&
255
+ item.childExecutionId &&
256
+ onOpenAgentExecution && (_jsx("div", { children: _jsx(ThreadActionButton, { label: "Open transcript", onClick: () => onOpenAgentExecution(item.childExecutionId, item.taskName) }) }))] }));
257
+ }
258
+ function ThreadTaskDetail({ item, inputIO, outputIO, onOpenAgentExecution, }) {
259
+ const rows = [["Status", statusLabel(item.status)]];
260
+ if (item.durationMs > 0) {
261
+ rows.push(["Duration", formatMetaChips({ durationMs: item.durationMs }) ?? ""]);
262
+ }
263
+ if (item.attemptNumber > 1)
264
+ rows.push(["Attempt", String(item.attemptNumber)]);
265
+ const costChip = formatMetaChips({
266
+ costMicros: item.costMicros,
267
+ tokens: item.tokensUsed,
268
+ });
269
+ if (costChip)
270
+ rows.push(["Usage", costChip]);
271
+ if (item.variant === "agent-call" && item.agentSlug) {
272
+ rows.push(["Agent", item.agentSlug]);
273
+ }
274
+ return (_jsxs("div", { className: "flex flex-col gap-2", children: [_jsx("dl", { className: "grid grid-cols-[auto_1fr] gap-x-4 gap-y-1 text-xs", children: rows.map(([label, value]) => (_jsxs("div", { className: "contents", children: [_jsx("dt", { className: "text-muted-foreground", children: label }), _jsx("dd", { className: "text-foreground", children: value })] }, label))) }), item.error && (_jsx(BoundedContent, { children: _jsx("pre", { className: "whitespace-pre-wrap break-words text-xs text-destructive", children: item.error }) })), inputIO && _jsx(ThreadTaskIOSection, { label: "Input", io: inputIO }), outputIO && _jsx(ThreadTaskIOSection, { label: "Output", io: outputIO }), item.variant === "agent-call" &&
275
+ item.childExecutionId &&
276
+ onOpenAgentExecution && (_jsx("div", { children: _jsx(ThreadActionButton, { label: "Open transcript", onClick: () => onOpenAgentExecution(item.childExecutionId, item.taskName) }) }))] }));
277
+ }
278
+ function statusLabel(status) {
279
+ switch (status) {
280
+ case "waiting_approval":
281
+ return "Waiting for approval";
282
+ case "retrying":
283
+ return "Retrying";
284
+ case "running":
285
+ return "Running";
286
+ case "completed":
287
+ return "Completed";
288
+ case "failed":
289
+ return "Failed";
290
+ case "skipped":
291
+ return "Skipped";
292
+ case "pending":
293
+ return "Pending";
294
+ }
295
+ }
296
+ // ---------------------------------------------------------------------------
297
+ // Status glyph — the shared thread-card set, colored by status token (T05)
298
+ // ---------------------------------------------------------------------------
299
+ /**
300
+ * Maps a task's derived status onto the shared glyph vocabulary the session
301
+ * tool card uses (`internal/thread-card/glyphs`), colored strictly through
302
+ * status token classes — the old dot set's hardcoded hex fallbacks were a
303
+ * Dont-Do #3 violation and died with it.
304
+ */
305
+ const STATUS_GLYPH = {
306
+ running: { Icon: SpinnerIcon, color: "text-foreground" },
307
+ retrying: { Icon: SpinnerIcon, color: "text-warning" },
308
+ waiting_approval: { Icon: ClockIcon, color: "text-warning" },
309
+ completed: { Icon: CheckCircleIcon, color: "text-success" },
310
+ failed: { Icon: XCircleIcon, color: "text-destructive" },
311
+ skipped: { Icon: SlashCircleIcon, color: "text-muted-foreground" },
312
+ pending: { Icon: DotIcon, color: "text-muted-foreground" },
313
+ };
314
+ function StatusGlyph({ status }) {
315
+ const { Icon, color } = STATUS_GLYPH[status];
316
+ return (_jsx("span", { className: cn("shrink-0", color), "aria-hidden": "true", children: _jsx(Icon, {}) }));
317
+ }
318
+ //# sourceMappingURL=WorkflowTaskThread.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowTaskThread.js","sourceRoot":"","sources":["../../../src/workflow/thread/WorkflowTaskThread.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Pure projection from the event store's derived task-state map to the
3
+ * ordered card list the workflow task thread renders.
4
+ *
5
+ * Deliberately NOT a second event-log derivation (D-T02-4): the event log
6
+ * already has its canonical walk (`deriveTaskStates` in the store). This
7
+ * module only re-shapes the store's cached map. Thread order is the map's
8
+ * insertion order, which
9
+ * `deriveTaskStates` builds in first-event order (`Map.set` on an existing
10
+ * key preserves position) — the flat start-order model of D-T02-1 with no
11
+ * second ordering source to drift.
12
+ *
13
+ * No React dependency — independently importable and testable (DD-003).
14
+ *
15
+ * @since S8 (Workflow Task Thread)
16
+ */
17
+ import { WorkflowTaskKind } from "@stigmer/protos/ai/stigmer/agentic/workflow/v1/enum_pb";
18
+ import type { JsonObject } from "@bufbuild/protobuf";
19
+ import type { ApprovalRequestedPayload, ApprovalResolvedPayload } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/event_pb";
20
+ import type { DerivedTaskState } from "../../internal/store/workflow-execution-event-store.js";
21
+ import { type WorkflowThreadCardVariant } from "./thread-presentation.js";
22
+ import { type WorkflowTaskDisclosure } from "./task-presentation.js";
23
+ /**
24
+ * One task card in the thread — a flat, display-ready projection of a
25
+ * `DerivedTaskState`. Fields are copied (not referenced) so value equality
26
+ * is a shallow field compare, which powers the structural sharing below.
27
+ */
28
+ export interface WorkflowThreadItem {
29
+ readonly taskName: string;
30
+ readonly taskKind: WorkflowTaskKind;
31
+ /**
32
+ * Human label for the kind, from the canonical `kindToDisplayName`.
33
+ * The empty string for `unspecified` kinds (the snapshot-derived fallback
34
+ * map carries no kind) — consumers hide the kind chip rather than render
35
+ * a meaningless "Unknown" label.
36
+ */
37
+ readonly kindLabel: string;
38
+ readonly variant: WorkflowThreadCardVariant;
39
+ readonly status: DerivedTaskState["status"];
40
+ readonly durationMs: number;
41
+ readonly costMicros: bigint;
42
+ readonly tokensUsed: bigint;
43
+ readonly attemptNumber: number;
44
+ readonly error: string;
45
+ readonly childExecutionId: string;
46
+ readonly agentSlug: string;
47
+ readonly currentToolName: string;
48
+ readonly messagesCount: number;
49
+ readonly toolCallsCount: number;
50
+ /**
51
+ * Kind-aware one-line preview from `resolveTaskPreview` (T04) — a
52
+ * primitive computed HERE (not in a card hook) so the structural-sharing
53
+ * compare below stays a cheap string check. The empty string when there
54
+ * is nothing kind-specific to say.
55
+ */
56
+ readonly previewLine: string;
57
+ /**
58
+ * Card disclosure mode (T04). Pure function of `taskKind` (like
59
+ * `variant`/`kindLabel`), so it is not part of the equality compare.
60
+ */
61
+ readonly disclosure: WorkflowTaskDisclosure;
62
+ /**
63
+ * Truncated event summaries carried for the card body's fallback ladder
64
+ * (snapshot → event summary → none). Reference-stable: the store reads
65
+ * them off the same immutable events on every re-derivation, so the
66
+ * identity compare below holds across appends.
67
+ */
68
+ readonly inputSummary: JsonObject | null;
69
+ readonly outputSummary: JsonObject | null;
70
+ /**
71
+ * The human_input gate's captured request/resolution payloads (T06) —
72
+ * the in-card review surface's data. Reference-stable like the
73
+ * summaries: the store carries the immutable events' payload messages,
74
+ * so the identity compare below holds across appends and only the
75
+ * gating card's item changes identity when a gate opens or resolves.
76
+ */
77
+ readonly approvalRequest: ApprovalRequestedPayload | null;
78
+ readonly approvalResolution: ApprovalResolvedPayload | null;
79
+ }
80
+ /**
81
+ * Progress line for the thread header. Pending tasks render no cards
82
+ * (D-T02-5); this is where "what's coming" stays visible (Nielsen #1).
83
+ */
84
+ export interface WorkflowThreadProgress {
85
+ /** Tasks in a terminal state (completed, failed, or skipped). */
86
+ readonly settledTasks: number;
87
+ /** Tasks currently active (running, retrying, or waiting approval). */
88
+ readonly activeTasks: number;
89
+ /** Total planned tasks from `execution_started`; `0` when unknown. */
90
+ readonly totalTasks: number;
91
+ }
92
+ /** Result of {@link projectThreadItems}. */
93
+ export interface WorkflowThreadProjection {
94
+ readonly items: readonly WorkflowThreadItem[];
95
+ readonly progress: WorkflowThreadProgress;
96
+ }
97
+ /**
98
+ * Projects the derived task-state map into ordered thread items plus a
99
+ * progress summary.
100
+ *
101
+ * Structural sharing: pass the previous call's `items` and any task whose
102
+ * fields are unchanged keeps its previous object identity. The store
103
+ * rebuilds every `DerivedTaskState` on each event append, so without this,
104
+ * every card would get a fresh item per event and `React.memo` rows could
105
+ * never bail (DD-009/DD-010 — only the actively-changing card re-renders).
106
+ */
107
+ export declare function projectThreadItems(taskStates: ReadonlyMap<string, DerivedTaskState>, totalTasks: number, previousItems?: readonly WorkflowThreadItem[]): WorkflowThreadProjection;
108
+ //# sourceMappingURL=project-thread-items.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-thread-items.d.ts","sourceRoot":"","sources":["../../../src/workflow/thread/project-thread-items.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,wDAAwD,CAAC;AAC1F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EACV,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,kEAAkE,CAAC;AAC1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wDAAwD,CAAC;AAG/F,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,wBAAwB,CAAC;AAMhC;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,yBAAyB,CAAC;IAC5C,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,sBAAsB,CAAC;IAC5C;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,EAAE,UAAU,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,aAAa,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1C;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAC1D,QAAQ,CAAC,kBAAkB,EAAE,uBAAuB,GAAG,IAAI,CAAC;CAC7D;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,iEAAiE;IACjE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,uEAAuE;IACvE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,sEAAsE;IACtE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,4CAA4C;AAC5C,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,KAAK,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC9C,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;CAC3C;AAkBD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,EACjD,UAAU,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,SAAS,kBAAkB,EAAE,GAC5C,wBAAwB,CAwD1B"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Pure projection from the event store's derived task-state map to the
3
+ * ordered card list the workflow task thread renders.
4
+ *
5
+ * Deliberately NOT a second event-log derivation (D-T02-4): the event log
6
+ * already has its canonical walk (`deriveTaskStates` in the store). This
7
+ * module only re-shapes the store's cached map. Thread order is the map's
8
+ * insertion order, which
9
+ * `deriveTaskStates` builds in first-event order (`Map.set` on an existing
10
+ * key preserves position) — the flat start-order model of D-T02-1 with no
11
+ * second ordering source to drift.
12
+ *
13
+ * No React dependency — independently importable and testable (DD-003).
14
+ *
15
+ * @since S8 (Workflow Task Thread)
16
+ */
17
+ import { WorkflowTaskKind } from "@stigmer/protos/ai/stigmer/agentic/workflow/v1/enum_pb";
18
+ import { kindToDisplayName } from "../kind-metadata.js";
19
+ import { taskKindToString } from "../workflow-graph-conversions.js";
20
+ import { threadCardVariant, } from "./thread-presentation.js";
21
+ import { resolveTaskPreview, } from "./task-presentation.js";
22
+ // ---------------------------------------------------------------------------
23
+ // Projection
24
+ // ---------------------------------------------------------------------------
25
+ const ACTIVE_STATUSES = new Set([
26
+ "running",
27
+ "retrying",
28
+ "waiting_approval",
29
+ ]);
30
+ const SETTLED_STATUSES = new Set([
31
+ "completed",
32
+ "failed",
33
+ "skipped",
34
+ ]);
35
+ /**
36
+ * Projects the derived task-state map into ordered thread items plus a
37
+ * progress summary.
38
+ *
39
+ * Structural sharing: pass the previous call's `items` and any task whose
40
+ * fields are unchanged keeps its previous object identity. The store
41
+ * rebuilds every `DerivedTaskState` on each event append, so without this,
42
+ * every card would get a fresh item per event and `React.memo` rows could
43
+ * never bail (DD-009/DD-010 — only the actively-changing card re-renders).
44
+ */
45
+ export function projectThreadItems(taskStates, totalTasks, previousItems) {
46
+ const previousByName = new Map();
47
+ if (previousItems) {
48
+ for (const item of previousItems)
49
+ previousByName.set(item.taskName, item);
50
+ }
51
+ const items = [];
52
+ let settledTasks = 0;
53
+ let activeTasks = 0;
54
+ for (const state of taskStates.values()) {
55
+ if (SETTLED_STATUSES.has(state.status))
56
+ settledTasks += 1;
57
+ else if (ACTIVE_STATUSES.has(state.status))
58
+ activeTasks += 1;
59
+ const preview = resolveTaskPreview(state);
60
+ const fresh = {
61
+ taskName: state.taskName,
62
+ taskKind: state.taskKind,
63
+ kindLabel: state.taskKind === WorkflowTaskKind.workflow_task_kind_unspecified
64
+ ? ""
65
+ : kindToDisplayName(taskKindToString(state.taskKind)),
66
+ variant: threadCardVariant(state.taskKind),
67
+ status: state.status,
68
+ durationMs: state.durationMs,
69
+ costMicros: state.costMicros,
70
+ tokensUsed: state.tokensUsed,
71
+ attemptNumber: state.attemptNumber,
72
+ error: state.error,
73
+ childExecutionId: state.childExecutionId,
74
+ agentSlug: state.agentSlug,
75
+ currentToolName: state.currentToolName,
76
+ messagesCount: state.messagesCount,
77
+ toolCallsCount: state.toolCallsCount,
78
+ previewLine: preview.previewLine,
79
+ disclosure: preview.disclosure,
80
+ inputSummary: state.inputSummary,
81
+ outputSummary: state.outputSummary,
82
+ approvalRequest: state.approvalRequest,
83
+ approvalResolution: state.approvalResolution,
84
+ };
85
+ const previous = previousByName.get(state.taskName);
86
+ items.push(previous && threadItemEqual(previous, fresh) ? previous : fresh);
87
+ }
88
+ return {
89
+ items,
90
+ progress: {
91
+ settledTasks,
92
+ activeTasks,
93
+ // The snapshot fallback path reports totalTasks as the map size; a
94
+ // stream that never saw execution_started reports 0 ("unknown").
95
+ totalTasks: totalTasks > 0 ? totalTasks : 0,
96
+ },
97
+ };
98
+ }
99
+ /** Shallow value equality across all card-visible fields. */
100
+ function threadItemEqual(a, b) {
101
+ return (a.taskName === b.taskName &&
102
+ a.taskKind === b.taskKind &&
103
+ a.status === b.status &&
104
+ a.durationMs === b.durationMs &&
105
+ a.costMicros === b.costMicros &&
106
+ a.tokensUsed === b.tokensUsed &&
107
+ a.attemptNumber === b.attemptNumber &&
108
+ a.error === b.error &&
109
+ a.childExecutionId === b.childExecutionId &&
110
+ a.agentSlug === b.agentSlug &&
111
+ a.currentToolName === b.currentToolName &&
112
+ a.messagesCount === b.messagesCount &&
113
+ a.toolCallsCount === b.toolCallsCount &&
114
+ a.previewLine === b.previewLine &&
115
+ // The summaries and gate payloads are read off the same immutable
116
+ // stored events on every re-derivation, so identity is the correct
117
+ // (and cheap) compare here.
118
+ a.inputSummary === b.inputSummary &&
119
+ a.outputSummary === b.outputSummary &&
120
+ a.approvalRequest === b.approvalRequest &&
121
+ a.approvalResolution === b.approvalResolution
122
+ // kindLabel/variant/disclosure are pure functions of taskKind — no need
123
+ // to compare.
124
+ );
125
+ }
126
+ //# sourceMappingURL=project-thread-items.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-thread-items.js","sourceRoot":"","sources":["../../../src/workflow/thread/project-thread-items.ts"],"names":[],"mappings":"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"}