@stigmer/react 3.1.17 → 3.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (832) hide show
  1. package/agent-instance/AgentInstanceList.d.ts.map +1 -1
  2. package/agent-instance/AgentInstanceList.js +11 -3
  3. package/agent-instance/AgentInstanceList.js.map +1 -1
  4. package/channel/AgentChannelsPanel.d.ts +60 -0
  5. package/channel/AgentChannelsPanel.d.ts.map +1 -0
  6. package/channel/AgentChannelsPanel.js +255 -0
  7. package/channel/AgentChannelsPanel.js.map +1 -0
  8. package/channel/ChannelConversationsDialog.d.ts +41 -0
  9. package/channel/ChannelConversationsDialog.d.ts.map +1 -0
  10. package/channel/ChannelConversationsDialog.js +94 -0
  11. package/channel/ChannelConversationsDialog.js.map +1 -0
  12. package/channel/ChannelCredentialsDialog.d.ts +37 -0
  13. package/channel/ChannelCredentialsDialog.d.ts.map +1 -0
  14. package/channel/ChannelCredentialsDialog.js +75 -0
  15. package/channel/ChannelCredentialsDialog.js.map +1 -0
  16. package/channel/ChannelToolCredentials.d.ts +31 -0
  17. package/channel/ChannelToolCredentials.d.ts.map +1 -0
  18. package/channel/ChannelToolCredentials.js +41 -0
  19. package/channel/ChannelToolCredentials.js.map +1 -0
  20. package/channel/ConnectSlackDialog.d.ts +61 -0
  21. package/channel/ConnectSlackDialog.d.ts.map +1 -0
  22. package/channel/ConnectSlackDialog.js +238 -0
  23. package/channel/ConnectSlackDialog.js.map +1 -0
  24. package/channel/ConnectWhatsAppDialog.d.ts +70 -0
  25. package/channel/ConnectWhatsAppDialog.d.ts.map +1 -0
  26. package/channel/ConnectWhatsAppDialog.js +256 -0
  27. package/channel/ConnectWhatsAppDialog.js.map +1 -0
  28. package/channel/SlackMarkIcon.d.ts +11 -0
  29. package/channel/SlackMarkIcon.d.ts.map +1 -0
  30. package/channel/SlackMarkIcon.js +13 -0
  31. package/channel/SlackMarkIcon.js.map +1 -0
  32. package/channel/WhatsAppMarkIcon.d.ts +12 -0
  33. package/channel/WhatsAppMarkIcon.d.ts.map +1 -0
  34. package/channel/WhatsAppMarkIcon.js +14 -0
  35. package/channel/WhatsAppMarkIcon.js.map +1 -0
  36. package/channel/connect/ServingAppSection.d.ts +57 -0
  37. package/channel/connect/ServingAppSection.d.ts.map +1 -0
  38. package/channel/connect/ServingAppSection.js +49 -0
  39. package/channel/connect/ServingAppSection.js.map +1 -0
  40. package/channel/connect/ToolCredentialsSection.d.ts +20 -0
  41. package/channel/connect/ToolCredentialsSection.d.ts.map +1 -0
  42. package/channel/connect/ToolCredentialsSection.js +22 -0
  43. package/channel/connect/ToolCredentialsSection.js.map +1 -0
  44. package/channel/connect/VerbatimRefusal.d.ts +16 -0
  45. package/channel/connect/VerbatimRefusal.d.ts.map +1 -0
  46. package/channel/connect/VerbatimRefusal.js +18 -0
  47. package/channel/connect/VerbatimRefusal.js.map +1 -0
  48. package/channel/connect/icons.d.ts +16 -0
  49. package/channel/connect/icons.d.ts.map +1 -0
  50. package/channel/connect/icons.js +21 -0
  51. package/channel/connect/icons.js.map +1 -0
  52. package/channel/index.d.ts +36 -0
  53. package/channel/index.d.ts.map +1 -0
  54. package/channel/index.js +19 -0
  55. package/channel/index.js.map +1 -0
  56. package/channel/providerPresentation.d.ts +44 -0
  57. package/channel/providerPresentation.d.ts.map +1 -0
  58. package/channel/providerPresentation.js +106 -0
  59. package/channel/providerPresentation.js.map +1 -0
  60. package/channel/providers.d.ts +62 -0
  61. package/channel/providers.d.ts.map +1 -0
  62. package/channel/providers.js +26 -0
  63. package/channel/providers.js.map +1 -0
  64. package/channel/useAgentChannel.d.ts +31 -0
  65. package/channel/useAgentChannel.d.ts.map +1 -0
  66. package/channel/useAgentChannel.js +34 -0
  67. package/channel/useAgentChannel.js.map +1 -0
  68. package/channel/useAgentChannelList.d.ts +43 -0
  69. package/channel/useAgentChannelList.d.ts.map +1 -0
  70. package/channel/useAgentChannelList.js +39 -0
  71. package/channel/useAgentChannelList.js.map +1 -0
  72. package/channel/useChannelSessions.d.ts +47 -0
  73. package/channel/useChannelSessions.d.ts.map +1 -0
  74. package/channel/useChannelSessions.js +38 -0
  75. package/channel/useChannelSessions.js.map +1 -0
  76. package/channel/useChannelToolReadiness.d.ts +23 -0
  77. package/channel/useChannelToolReadiness.d.ts.map +1 -0
  78. package/channel/useChannelToolReadiness.js +28 -0
  79. package/channel/useChannelToolReadiness.js.map +1 -0
  80. package/channel/useConnectSlackChannel.d.ts +75 -0
  81. package/channel/useConnectSlackChannel.d.ts.map +1 -0
  82. package/channel/useConnectSlackChannel.js +115 -0
  83. package/channel/useConnectSlackChannel.js.map +1 -0
  84. package/channel/useCreateAgentChannel.d.ts +42 -0
  85. package/channel/useCreateAgentChannel.d.ts.map +1 -0
  86. package/channel/useCreateAgentChannel.js +48 -0
  87. package/channel/useCreateAgentChannel.js.map +1 -0
  88. package/channel/useDeleteAgentChannel.d.ts +40 -0
  89. package/channel/useDeleteAgentChannel.d.ts.map +1 -0
  90. package/channel/useDeleteAgentChannel.js +44 -0
  91. package/channel/useDeleteAgentChannel.js.map +1 -0
  92. package/channel/useInstallChannel.d.ts +60 -0
  93. package/channel/useInstallChannel.d.ts.map +1 -0
  94. package/channel/useInstallChannel.js +63 -0
  95. package/channel/useInstallChannel.js.map +1 -0
  96. package/channel/useOrgAgentChannelList.d.ts +32 -0
  97. package/channel/useOrgAgentChannelList.d.ts.map +1 -0
  98. package/channel/useOrgAgentChannelList.js +29 -0
  99. package/channel/useOrgAgentChannelList.js.map +1 -0
  100. package/channel/useSaveAgentChannel.d.ts +63 -0
  101. package/channel/useSaveAgentChannel.d.ts.map +1 -0
  102. package/channel/useSaveAgentChannel.js +104 -0
  103. package/channel/useSaveAgentChannel.js.map +1 -0
  104. package/channel-app/ChannelAppDetailPanel.d.ts +46 -0
  105. package/channel-app/ChannelAppDetailPanel.d.ts.map +1 -0
  106. package/channel-app/ChannelAppDetailPanel.js +142 -0
  107. package/channel-app/ChannelAppDetailPanel.js.map +1 -0
  108. package/channel-app/ChannelAppListPanel.d.ts +36 -0
  109. package/channel-app/ChannelAppListPanel.d.ts.map +1 -0
  110. package/channel-app/ChannelAppListPanel.js +63 -0
  111. package/channel-app/ChannelAppListPanel.js.map +1 -0
  112. package/channel-app/CreateChannelAppForm.d.ts +54 -0
  113. package/channel-app/CreateChannelAppForm.d.ts.map +1 -0
  114. package/channel-app/CreateChannelAppForm.js +140 -0
  115. package/channel-app/CreateChannelAppForm.js.map +1 -0
  116. package/channel-app/index.d.ts +18 -0
  117. package/channel-app/index.d.ts.map +1 -0
  118. package/channel-app/index.js +10 -0
  119. package/channel-app/index.js.map +1 -0
  120. package/channel-app/internal.d.ts +33 -0
  121. package/channel-app/internal.d.ts.map +1 -0
  122. package/channel-app/internal.js +44 -0
  123. package/channel-app/internal.js.map +1 -0
  124. package/channel-app/slackAppSetup.d.ts +80 -0
  125. package/channel-app/slackAppSetup.d.ts.map +1 -0
  126. package/channel-app/slackAppSetup.js +123 -0
  127. package/channel-app/slackAppSetup.js.map +1 -0
  128. package/channel-app/useChannelAppList.d.ts +35 -0
  129. package/channel-app/useChannelAppList.d.ts.map +1 -0
  130. package/channel-app/useChannelAppList.js +34 -0
  131. package/channel-app/useChannelAppList.js.map +1 -0
  132. package/channel-app/useCreateChannelApp.d.ts +39 -0
  133. package/channel-app/useCreateChannelApp.d.ts.map +1 -0
  134. package/channel-app/useCreateChannelApp.js +50 -0
  135. package/channel-app/useCreateChannelApp.js.map +1 -0
  136. package/channel-app/useDeleteChannelApp.d.ts +31 -0
  137. package/channel-app/useDeleteChannelApp.d.ts.map +1 -0
  138. package/channel-app/useDeleteChannelApp.js +43 -0
  139. package/channel-app/useDeleteChannelApp.js.map +1 -0
  140. package/channel-app/useUpdateChannelApp.d.ts +39 -0
  141. package/channel-app/useUpdateChannelApp.d.ts.map +1 -0
  142. package/channel-app/useUpdateChannelApp.js +50 -0
  143. package/channel-app/useUpdateChannelApp.js.map +1 -0
  144. package/channel-app/whatsappAppSetup.d.ts +51 -0
  145. package/channel-app/whatsappAppSetup.d.ts.map +1 -0
  146. package/channel-app/whatsappAppSetup.js +57 -0
  147. package/channel-app/whatsappAppSetup.js.map +1 -0
  148. package/environment/index.d.ts +2 -0
  149. package/environment/index.d.ts.map +1 -1
  150. package/environment/index.js +1 -0
  151. package/environment/index.js.map +1 -1
  152. package/environment/useToolCredentialsReadiness.d.ts +52 -0
  153. package/environment/useToolCredentialsReadiness.d.ts.map +1 -0
  154. package/environment/useToolCredentialsReadiness.js +84 -0
  155. package/environment/useToolCredentialsReadiness.js.map +1 -0
  156. package/execution/ArtifactContentBody.d.ts.map +1 -1
  157. package/execution/ArtifactContentBody.js +5 -21
  158. package/execution/ArtifactContentBody.js.map +1 -1
  159. package/execution/ArtifactFileContent.d.ts +28 -0
  160. package/execution/ArtifactFileContent.d.ts.map +1 -0
  161. package/execution/ArtifactFileContent.js +36 -0
  162. package/execution/ArtifactFileContent.js.map +1 -0
  163. package/execution/ArtifactRow.d.ts +8 -20
  164. package/execution/ArtifactRow.d.ts.map +1 -1
  165. package/execution/ArtifactRow.js +12 -45
  166. package/execution/ArtifactRow.js.map +1 -1
  167. package/execution/ArtifactRowView.d.ts +43 -0
  168. package/execution/ArtifactRowView.d.ts.map +1 -0
  169. package/execution/ArtifactRowView.js +35 -0
  170. package/execution/ArtifactRowView.js.map +1 -0
  171. package/execution/FileChangesView.d.ts.map +1 -1
  172. package/execution/FileChangesView.js +1 -61
  173. package/execution/FileChangesView.js.map +1 -1
  174. package/execution/SubAgentSection.d.ts.map +1 -1
  175. package/execution/SubAgentSection.js +4 -15
  176. package/execution/SubAgentSection.js.map +1 -1
  177. package/execution/ToolCallItem.d.ts.map +1 -1
  178. package/execution/ToolCallItem.js +16 -61
  179. package/execution/ToolCallItem.js.map +1 -1
  180. package/execution/agent-execution-document.d.ts +31 -0
  181. package/execution/agent-execution-document.d.ts.map +1 -0
  182. package/execution/agent-execution-document.js +48 -0
  183. package/execution/agent-execution-document.js.map +1 -0
  184. package/{session → execution}/artifact-document.d.ts +2 -3
  185. package/execution/artifact-document.d.ts.map +1 -0
  186. package/execution/artifact-document.js +23 -0
  187. package/execution/artifact-document.js.map +1 -0
  188. package/execution/artifact-row-item.d.ts +56 -0
  189. package/execution/artifact-row-item.d.ts.map +1 -0
  190. package/execution/artifact-row-item.js +57 -0
  191. package/execution/artifact-row-item.js.map +1 -0
  192. package/execution/deriveExecutionFileChanges.d.ts +55 -0
  193. package/execution/deriveExecutionFileChanges.d.ts.map +1 -0
  194. package/execution/deriveExecutionFileChanges.js +216 -0
  195. package/execution/deriveExecutionFileChanges.js.map +1 -0
  196. package/execution/file-change-document.d.ts +22 -0
  197. package/execution/file-change-document.d.ts.map +1 -0
  198. package/execution/file-change-document.js +34 -0
  199. package/execution/file-change-document.js.map +1 -0
  200. package/execution/index.d.ts +14 -0
  201. package/execution/index.d.ts.map +1 -1
  202. package/execution/index.js +9 -0
  203. package/execution/index.js.map +1 -1
  204. package/execution/useArtifactContentById.d.ts +61 -0
  205. package/execution/useArtifactContentById.d.ts.map +1 -0
  206. package/execution/useArtifactContentById.js +63 -0
  207. package/execution/useArtifactContentById.js.map +1 -0
  208. package/execution/useArtifactDownload.d.ts +4 -3
  209. package/execution/useArtifactDownload.d.ts.map +1 -1
  210. package/execution/useArtifactDownload.js +4 -3
  211. package/execution/useArtifactDownload.js.map +1 -1
  212. package/execution/useCreateAgentExecution.d.ts +1 -1
  213. package/execution/useLiveAgentExecution.d.ts +59 -0
  214. package/execution/useLiveAgentExecution.d.ts.map +1 -0
  215. package/execution/useLiveAgentExecution.js +73 -0
  216. package/execution/useLiveAgentExecution.js.map +1 -0
  217. package/index.d.ts +15 -10
  218. package/index.d.ts.map +1 -1
  219. package/index.js +21 -6
  220. package/index.js.map +1 -1
  221. package/internal/DecisionButton.d.ts +4 -3
  222. package/internal/DecisionButton.d.ts.map +1 -1
  223. package/internal/DecisionButton.js +4 -3
  224. package/internal/DecisionButton.js.map +1 -1
  225. package/internal/oauthPopup.d.ts +101 -0
  226. package/internal/oauthPopup.d.ts.map +1 -0
  227. package/internal/oauthPopup.js +208 -0
  228. package/internal/oauthPopup.js.map +1 -0
  229. package/internal/store/index.d.ts +0 -2
  230. package/internal/store/index.d.ts.map +1 -1
  231. package/internal/store/index.js +0 -1
  232. package/internal/store/index.js.map +1 -1
  233. package/internal/store/workflow-execution-event-store.d.ts +34 -1
  234. package/internal/store/workflow-execution-event-store.d.ts.map +1 -1
  235. package/internal/store/workflow-execution-event-store.js +81 -3
  236. package/internal/store/workflow-execution-event-store.js.map +1 -1
  237. package/internal/store/workspace-file-selection-store.d.ts +1 -2
  238. package/internal/store/workspace-file-selection-store.d.ts.map +1 -1
  239. package/internal/store/workspace-file-selection-store.js +2 -5
  240. package/internal/store/workspace-file-selection-store.js.map +1 -1
  241. package/internal/thread-card/ThreadCardShell.d.ts +91 -0
  242. package/internal/thread-card/ThreadCardShell.d.ts.map +1 -0
  243. package/internal/thread-card/ThreadCardShell.js +41 -0
  244. package/internal/thread-card/ThreadCardShell.js.map +1 -0
  245. package/internal/thread-card/glyphs.d.ts +34 -0
  246. package/internal/thread-card/glyphs.d.ts.map +1 -0
  247. package/internal/thread-card/glyphs.js +50 -0
  248. package/internal/thread-card/glyphs.js.map +1 -0
  249. package/internal/thread-card/index.d.ts +3 -0
  250. package/internal/thread-card/index.d.ts.map +1 -0
  251. package/internal/thread-card/index.js +3 -0
  252. package/internal/thread-card/index.js.map +1 -0
  253. package/internal/useRevealLine.d.ts +2 -2
  254. package/internal/useRevealLine.js +2 -2
  255. package/mcp-server/OAuthCallbackHandler.js +1 -1
  256. package/mcp-server/OAuthCallbackHandler.js.map +1 -1
  257. package/mcp-server/useMcpServerOAuthConnect.d.ts +4 -23
  258. package/mcp-server/useMcpServerOAuthConnect.d.ts.map +1 -1
  259. package/mcp-server/useMcpServerOAuthConnect.js +12 -145
  260. package/mcp-server/useMcpServerOAuthConnect.js.map +1 -1
  261. package/package.json +4 -4
  262. package/session/NewSessionViewer.d.ts.map +1 -1
  263. package/session/NewSessionViewer.js +0 -1
  264. package/session/NewSessionViewer.js.map +1 -1
  265. package/session/SessionPanelChip.d.ts +7 -22
  266. package/session/SessionPanelChip.d.ts.map +1 -1
  267. package/session/SessionPanelChip.js +8 -36
  268. package/session/SessionPanelChip.js.map +1 -1
  269. package/session/SessionViewer.d.ts +7 -4
  270. package/session/SessionViewer.d.ts.map +1 -1
  271. package/session/SessionViewer.js +32 -30
  272. package/session/SessionViewer.js.map +1 -1
  273. package/session/audience.d.ts +15 -1
  274. package/session/audience.d.ts.map +1 -1
  275. package/session/channelOrigin.d.ts +33 -0
  276. package/session/channelOrigin.d.ts.map +1 -0
  277. package/session/channelOrigin.js +36 -0
  278. package/session/channelOrigin.js.map +1 -0
  279. package/session/facets/index.d.ts +0 -2
  280. package/session/facets/index.d.ts.map +1 -1
  281. package/session/facets/index.js +0 -1
  282. package/session/facets/index.js.map +1 -1
  283. package/session/index.d.ts +2 -2
  284. package/session/index.d.ts.map +1 -1
  285. package/session/index.js +5 -3
  286. package/session/index.js.map +1 -1
  287. package/session/useNewSessionFlow.d.ts +4 -0
  288. package/session/useNewSessionFlow.d.ts.map +1 -1
  289. package/session/useNewSessionFlow.js +33 -4
  290. package/session/useNewSessionFlow.js.map +1 -1
  291. package/session/usePersistedModel.d.ts +11 -0
  292. package/session/usePersistedModel.d.ts.map +1 -1
  293. package/session/usePersistedModel.js +14 -3
  294. package/session/usePersistedModel.js.map +1 -1
  295. package/session/useSessionFileChanges.d.ts +10 -34
  296. package/session/useSessionFileChanges.d.ts.map +1 -1
  297. package/session/useSessionFileChanges.js +9 -141
  298. package/session/useSessionFileChanges.js.map +1 -1
  299. package/session/useSessionPageFlow.d.ts.map +1 -1
  300. package/session/useSessionPageFlow.js +12 -1
  301. package/session/useSessionPageFlow.js.map +1 -1
  302. package/session/useSessionPanel.d.ts +5 -15
  303. package/session/useSessionPanel.d.ts.map +1 -1
  304. package/session/useSessionPanel.js +3 -35
  305. package/session/useSessionPanel.js.map +1 -1
  306. package/session/useSessionRailViews.d.ts +3 -6
  307. package/session/useSessionRailViews.d.ts.map +1 -1
  308. package/session/useSessionRailViews.js +3 -17
  309. package/session/useSessionRailViews.js.map +1 -1
  310. package/settings/ChannelAppsSection.d.ts +13 -0
  311. package/settings/ChannelAppsSection.d.ts.map +1 -0
  312. package/settings/ChannelAppsSection.js +48 -0
  313. package/settings/ChannelAppsSection.js.map +1 -0
  314. package/settings/index.d.ts +1 -0
  315. package/settings/index.d.ts.map +1 -1
  316. package/settings/index.js +1 -0
  317. package/settings/index.js.map +1 -1
  318. package/settings/settings-nav.d.ts.map +1 -1
  319. package/settings/settings-nav.js +6 -1
  320. package/settings/settings-nav.js.map +1 -1
  321. package/sharing/AgentShareList.d.ts.map +1 -1
  322. package/sharing/AgentShareList.js +11 -3
  323. package/sharing/AgentShareList.js.map +1 -1
  324. package/sharing/ShareAgentDialog.js +1 -1
  325. package/sharing/useShareToolReadiness.d.ts +9 -38
  326. package/sharing/useShareToolReadiness.d.ts.map +1 -1
  327. package/sharing/useShareToolReadiness.js +7 -72
  328. package/sharing/useShareToolReadiness.js.map +1 -1
  329. package/src/agent-instance/AgentInstanceList.tsx +60 -42
  330. package/src/agent-instance/__tests__/AgentInstanceList.test.tsx +161 -0
  331. package/src/channel/AgentChannelsPanel.tsx +688 -0
  332. package/src/channel/ChannelConversationsDialog.tsx +267 -0
  333. package/src/channel/ChannelCredentialsDialog.tsx +219 -0
  334. package/src/channel/ChannelToolCredentials.tsx +124 -0
  335. package/src/channel/ConnectSlackDialog.tsx +611 -0
  336. package/src/channel/ConnectWhatsAppDialog.tsx +624 -0
  337. package/src/channel/SlackMarkIcon.tsx +21 -0
  338. package/src/channel/WhatsAppMarkIcon.tsx +22 -0
  339. package/src/channel/__tests__/AgentChannelsPanel.test.tsx +638 -0
  340. package/src/channel/__tests__/ChannelConversationsDialog.test.tsx +114 -0
  341. package/src/channel/__tests__/ChannelCredentialsDialog.test.tsx +240 -0
  342. package/src/channel/__tests__/ConnectSlackDialog.test.tsx +659 -0
  343. package/src/channel/__tests__/ConnectWhatsAppDialog.test.tsx +564 -0
  344. package/src/channel/__tests__/providers.test.ts +118 -0
  345. package/src/channel/__tests__/useAgentChannel.test.tsx +116 -0
  346. package/src/channel/__tests__/useAgentChannelList.test.tsx +166 -0
  347. package/src/channel/__tests__/useChannelSessions.test.tsx +95 -0
  348. package/src/channel/__tests__/useChannelToolReadiness.test.tsx +158 -0
  349. package/src/channel/__tests__/useConnectSlackChannel.test.tsx +276 -0
  350. package/src/channel/__tests__/useDeleteAgentChannel.test.tsx +97 -0
  351. package/src/channel/__tests__/useInstallChannel.test.tsx +177 -0
  352. package/src/channel/__tests__/useSaveAgentChannel.test.tsx +294 -0
  353. package/src/channel/connect/ServingAppSection.tsx +185 -0
  354. package/src/channel/connect/ToolCredentialsSection.tsx +67 -0
  355. package/src/channel/connect/VerbatimRefusal.tsx +27 -0
  356. package/src/channel/connect/icons.tsx +42 -0
  357. package/src/channel/index.ts +65 -0
  358. package/src/channel/providerPresentation.ts +154 -0
  359. package/src/channel/providers.ts +73 -0
  360. package/src/channel/useAgentChannel.ts +58 -0
  361. package/src/channel/useAgentChannelList.ts +69 -0
  362. package/src/channel/useChannelSessions.ts +73 -0
  363. package/src/channel/useChannelToolReadiness.ts +39 -0
  364. package/src/channel/useConnectSlackChannel.ts +195 -0
  365. package/src/channel/useCreateAgentChannel.ts +73 -0
  366. package/src/channel/useDeleteAgentChannel.ts +71 -0
  367. package/src/channel/useInstallChannel.ts +117 -0
  368. package/src/channel/useOrgAgentChannelList.ts +60 -0
  369. package/src/channel/useSaveAgentChannel.ts +133 -0
  370. package/src/channel-app/ChannelAppDetailPanel.tsx +510 -0
  371. package/src/channel-app/ChannelAppListPanel.tsx +201 -0
  372. package/src/channel-app/CreateChannelAppForm.tsx +529 -0
  373. package/src/channel-app/__tests__/channelAppWhatsApp.test.tsx +270 -0
  374. package/src/channel-app/__tests__/slackAppSetup.test.ts +75 -0
  375. package/src/channel-app/__tests__/useChannelAppHooks.test.tsx +157 -0
  376. package/src/channel-app/__tests__/whatsappAppSetup.test.ts +39 -0
  377. package/src/channel-app/index.ts +30 -0
  378. package/src/channel-app/internal.tsx +180 -0
  379. package/src/channel-app/slackAppSetup.ts +153 -0
  380. package/src/channel-app/useChannelAppList.ts +59 -0
  381. package/src/channel-app/useCreateChannelApp.ts +70 -0
  382. package/src/channel-app/useDeleteChannelApp.ts +62 -0
  383. package/src/channel-app/useUpdateChannelApp.ts +70 -0
  384. package/src/channel-app/whatsappAppSetup.ts +62 -0
  385. package/src/environment/index.ts +2 -0
  386. package/src/environment/useToolCredentialsReadiness.ts +122 -0
  387. package/src/execution/ArtifactContentBody.tsx +6 -88
  388. package/src/execution/ArtifactFileContent.tsx +110 -0
  389. package/src/execution/ArtifactRow.tsx +28 -118
  390. package/src/execution/ArtifactRowView.tsx +137 -0
  391. package/src/execution/FileChangesView.tsx +4 -69
  392. package/src/execution/SubAgentSection.tsx +2 -36
  393. package/src/execution/ToolCallItem.tsx +48 -175
  394. package/src/execution/__tests__/ArtifactFileContent.test.tsx +60 -0
  395. package/src/execution/__tests__/ArtifactRowView.test.tsx +78 -0
  396. package/src/execution/__tests__/agent-execution-document.test.ts +45 -0
  397. package/src/execution/__tests__/artifact-row-item.test.ts +128 -0
  398. package/src/execution/__tests__/deriveExecutionFileChanges.test.ts +270 -0
  399. package/src/execution/__tests__/useArtifactContentById.test.tsx +85 -0
  400. package/src/execution/__tests__/useLiveAgentExecution.test.tsx +202 -0
  401. package/src/execution/agent-execution-document.ts +54 -0
  402. package/src/execution/artifact-document.ts +24 -0
  403. package/src/execution/artifact-row-item.ts +97 -0
  404. package/src/execution/deriveExecutionFileChanges.ts +237 -0
  405. package/src/execution/file-change-document.ts +37 -0
  406. package/src/execution/index.ts +36 -0
  407. package/src/execution/useArtifactContentById.ts +120 -0
  408. package/src/execution/useArtifactDownload.ts +4 -3
  409. package/src/execution/useCreateAgentExecution.ts +1 -1
  410. package/src/execution/useLiveAgentExecution.ts +127 -0
  411. package/src/index.ts +155 -11
  412. package/src/internal/DecisionButton.tsx +4 -3
  413. package/src/internal/__tests__/ThreadCardShell.test.tsx +105 -0
  414. package/src/internal/__tests__/oauthPopup.test.ts +245 -0
  415. package/src/internal/oauthPopup.ts +261 -0
  416. package/src/internal/store/__tests__/workflow-execution-event-store.test.ts +375 -5
  417. package/src/internal/store/index.ts +0 -3
  418. package/src/internal/store/workflow-execution-event-store.ts +123 -4
  419. package/src/internal/store/workspace-file-selection-store.ts +2 -5
  420. package/src/internal/thread-card/ThreadCardShell.tsx +189 -0
  421. package/src/internal/thread-card/glyphs.tsx +108 -0
  422. package/src/internal/thread-card/index.ts +19 -0
  423. package/src/internal/useRevealLine.ts +2 -2
  424. package/src/mcp-server/OAuthCallbackHandler.tsx +2 -2
  425. package/src/mcp-server/useMcpServerOAuthConnect.ts +22 -184
  426. package/src/session/NewSessionViewer.tsx +0 -1
  427. package/src/session/SessionPanelChip.tsx +10 -96
  428. package/src/session/SessionViewer.tsx +170 -144
  429. package/src/session/__tests__/SessionViewer-artifactTabs.test.tsx +1 -1
  430. package/src/session/__tests__/observerAudience.test.tsx +241 -0
  431. package/src/session/__tests__/useNewSessionFlow.test.tsx +64 -0
  432. package/src/session/__tests__/usePersistedModel.test.tsx +36 -0
  433. package/src/session/__tests__/useSessionPageFlow.guest.test.tsx +48 -1
  434. package/src/session/__tests__/useSessionPanel.test.ts +6 -61
  435. package/src/session/__tests__/useSessionRailViews.test.tsx +5 -27
  436. package/src/session/audience.ts +15 -1
  437. package/src/session/channelOrigin.ts +45 -0
  438. package/src/session/facets/index.ts +0 -3
  439. package/src/session/index.ts +9 -6
  440. package/src/session/useNewSessionFlow.ts +35 -4
  441. package/src/session/usePersistedModel.ts +25 -3
  442. package/src/session/useSessionFileChanges.ts +12 -153
  443. package/src/session/useSessionPageFlow.ts +13 -2
  444. package/src/session/useSessionPanel.ts +8 -51
  445. package/src/session/useSessionRailViews.tsx +2 -27
  446. package/src/settings/ChannelAppsSection.tsx +133 -0
  447. package/src/settings/index.ts +1 -0
  448. package/src/settings/settings-nav.ts +6 -0
  449. package/src/sharing/AgentShareList.tsx +85 -64
  450. package/src/sharing/ShareAgentDialog.tsx +1 -1
  451. package/src/sharing/__tests__/AgentShareList.test.tsx +92 -12
  452. package/src/sharing/useShareToolReadiness.ts +13 -101
  453. package/src/workflow/WorkflowAgentExecutionDocument.tsx +283 -0
  454. package/src/workflow/WorkflowApprovalList.tsx +158 -0
  455. package/src/workflow/WorkflowArtifactDocument.tsx +257 -0
  456. package/src/workflow/WorkflowExecutionGraph.tsx +40 -78
  457. package/src/workflow/WorkflowExecutionViewer.tsx +610 -287
  458. package/src/workflow/WorkflowFileReviewList.tsx +1 -1
  459. package/src/workflow/WorkflowTaskApprovalCard.tsx +5 -4
  460. package/src/workflow/WorkflowTaskApprovalSummary.tsx +6 -6
  461. package/src/workflow/__tests__/WorkflowAgentExecutionDocument.test.tsx +651 -0
  462. package/src/workflow/__tests__/WorkflowApprovalList.test.tsx +229 -0
  463. package/src/workflow/__tests__/WorkflowArtifactDocument.test.tsx +90 -0
  464. package/src/workflow/__tests__/WorkflowArtifactsTab.test.tsx +85 -0
  465. package/src/workflow/__tests__/WorkflowChangesTab.test.tsx +113 -0
  466. package/src/workflow/__tests__/WorkflowExecutionViewer.approvals.test.tsx +473 -0
  467. package/src/workflow/__tests__/WorkflowExecutionViewer.reconciliation.test.tsx +632 -0
  468. package/src/workflow/__tests__/WorkflowTaskApprovalSummary.test.tsx +1 -1
  469. package/src/workflow/__tests__/WorkflowTaskThread.test.tsx +947 -0
  470. package/src/workflow/__tests__/WorkflowUsageTab.test.tsx +163 -0
  471. package/src/workflow/__tests__/agent-call-live-experience.test.ts +6 -53
  472. package/src/workflow/__tests__/derive-execution-overlays.test.ts +4 -0
  473. package/src/workflow/__tests__/deriveWorkflowArtifactItems.test.ts +71 -0
  474. package/src/workflow/__tests__/deriveWorkflowUsageItems.test.ts +132 -0
  475. package/src/workflow/__tests__/execution-graph.test.ts +8 -0
  476. package/src/workflow/__tests__/project-thread-items.test.ts +428 -0
  477. package/src/workflow/__tests__/structured-data-viewer.test.tsx +1 -1
  478. package/src/workflow/__tests__/task-approval.test.ts +149 -0
  479. package/src/workflow/__tests__/task-detail-io.test.ts +40 -0
  480. package/src/workflow/__tests__/task-presentation.test.ts +479 -0
  481. package/src/workflow/__tests__/useActiveTaskName.test.ts +4 -0
  482. package/src/workflow/__tests__/useApprovalBoundary.test.ts +158 -0
  483. package/src/workflow/__tests__/useExecutionAnnouncements.test.ts +4 -0
  484. package/src/workflow/__tests__/useFollowExecution.test.ts +2 -89
  485. package/src/workflow/__tests__/useWorkflowExecutionFileChanges.test.tsx +412 -0
  486. package/src/workflow/__tests__/useWorkflowExecutionPanel.test.ts +297 -0
  487. package/src/workflow/__tests__/useWorkflowExecutionRailViews.test.tsx +115 -0
  488. package/src/workflow/deriveWorkflowArtifactItems.ts +59 -0
  489. package/src/workflow/deriveWorkflowUsageItems.ts +73 -0
  490. package/src/workflow/diagnosis-document.ts +31 -0
  491. package/src/workflow/execution/index.ts +0 -15
  492. package/src/workflow/facets/WorkflowArtifactsTab.tsx +99 -0
  493. package/src/workflow/facets/WorkflowChangesTab.tsx +129 -0
  494. package/src/workflow/facets/WorkflowUsageTab.tsx +258 -0
  495. package/src/workflow/format-utils.ts +2 -3
  496. package/src/workflow/index.ts +106 -62
  497. package/src/workflow/inspector/index.ts +0 -4
  498. package/src/workflow/instance/WorkflowInstanceList.tsx +59 -41
  499. package/src/workflow/instance/__tests__/WorkflowInstanceList.test.tsx +156 -0
  500. package/src/workflow/task-detail/index.ts +11 -0
  501. package/src/workflow/task-detail/task-approval.ts +158 -0
  502. package/src/workflow/task-detail/task-detail-io.ts +65 -0
  503. package/src/workflow/thread/WorkflowTaskThread.tsx +845 -0
  504. package/src/workflow/thread/project-thread-items.ts +235 -0
  505. package/src/workflow/thread/task-presentation.ts +427 -0
  506. package/src/workflow/thread/thread-presentation.ts +59 -0
  507. package/src/workflow/thread/useWorkflowThreadItems.ts +34 -0
  508. package/src/workflow/useApprovalBoundary.ts +72 -0
  509. package/src/workflow/useFollowExecution.ts +0 -26
  510. package/src/workflow/useWorkflowArtifactDownload.ts +68 -0
  511. package/src/workflow/useWorkflowExecutionActions.ts +3 -2
  512. package/src/workflow/useWorkflowExecutionFileChanges.ts +341 -0
  513. package/src/workflow/useWorkflowExecutionGraph.ts +3 -43
  514. package/src/workflow/useWorkflowExecutionPanel.ts +292 -0
  515. package/src/workflow/useWorkflowExecutionRailViews.tsx +173 -0
  516. package/src/workspace/FileViewer.tsx +3 -3
  517. package/src/workspace/PanelChip.tsx +103 -0
  518. package/src/workspace/WorkspaceSurface.tsx +50 -6
  519. package/src/workspace/__tests__/WorkspaceSurface.test.tsx +110 -0
  520. package/src/workspace/index.ts +3 -0
  521. package/styles.css +1 -1
  522. package/workflow/WorkflowAgentExecutionDocument.d.ts +79 -0
  523. package/workflow/WorkflowAgentExecutionDocument.d.ts.map +1 -0
  524. package/workflow/WorkflowAgentExecutionDocument.js +87 -0
  525. package/workflow/WorkflowAgentExecutionDocument.js.map +1 -0
  526. package/workflow/WorkflowApprovalList.d.ts +62 -0
  527. package/workflow/WorkflowApprovalList.d.ts.map +1 -0
  528. package/workflow/WorkflowApprovalList.js +52 -0
  529. package/workflow/WorkflowApprovalList.js.map +1 -0
  530. package/workflow/WorkflowArtifactDocument.d.ts +29 -0
  531. package/workflow/WorkflowArtifactDocument.d.ts.map +1 -0
  532. package/workflow/WorkflowArtifactDocument.js +89 -0
  533. package/workflow/WorkflowArtifactDocument.js.map +1 -0
  534. package/workflow/WorkflowExecutionGraph.d.ts +15 -13
  535. package/workflow/WorkflowExecutionGraph.d.ts.map +1 -1
  536. package/workflow/WorkflowExecutionGraph.js +18 -53
  537. package/workflow/WorkflowExecutionGraph.js.map +1 -1
  538. package/workflow/WorkflowExecutionViewer.d.ts +8 -5
  539. package/workflow/WorkflowExecutionViewer.d.ts.map +1 -1
  540. package/workflow/WorkflowExecutionViewer.js +329 -54
  541. package/workflow/WorkflowExecutionViewer.js.map +1 -1
  542. package/workflow/WorkflowFileReviewList.d.ts +1 -1
  543. package/workflow/WorkflowFileReviewList.js +1 -1
  544. package/workflow/WorkflowTaskApprovalCard.d.ts +4 -3
  545. package/workflow/WorkflowTaskApprovalCard.d.ts.map +1 -1
  546. package/workflow/WorkflowTaskApprovalCard.js +5 -4
  547. package/workflow/WorkflowTaskApprovalCard.js.map +1 -1
  548. package/workflow/WorkflowTaskApprovalSummary.d.ts +6 -6
  549. package/workflow/WorkflowTaskApprovalSummary.js +5 -5
  550. package/workflow/deriveWorkflowArtifactItems.d.ts +30 -0
  551. package/workflow/deriveWorkflowArtifactItems.d.ts.map +1 -0
  552. package/workflow/deriveWorkflowArtifactItems.js +38 -0
  553. package/workflow/deriveWorkflowArtifactItems.js.map +1 -0
  554. package/workflow/deriveWorkflowUsageItems.d.ts +36 -0
  555. package/workflow/deriveWorkflowUsageItems.d.ts.map +1 -0
  556. package/workflow/deriveWorkflowUsageItems.js +50 -0
  557. package/workflow/deriveWorkflowUsageItems.js.map +1 -0
  558. package/workflow/diagnosis-document.d.ts +17 -0
  559. package/workflow/diagnosis-document.d.ts.map +1 -0
  560. package/workflow/diagnosis-document.js +29 -0
  561. package/workflow/diagnosis-document.js.map +1 -0
  562. package/workflow/execution/index.d.ts +0 -2
  563. package/workflow/execution/index.d.ts.map +1 -1
  564. package/workflow/execution/index.js +0 -2
  565. package/workflow/execution/index.js.map +1 -1
  566. package/workflow/facets/WorkflowArtifactsTab.d.ts +26 -0
  567. package/workflow/facets/WorkflowArtifactsTab.d.ts.map +1 -0
  568. package/workflow/facets/WorkflowArtifactsTab.js +34 -0
  569. package/workflow/facets/WorkflowArtifactsTab.js.map +1 -0
  570. package/workflow/facets/WorkflowChangesTab.d.ts +37 -0
  571. package/workflow/facets/WorkflowChangesTab.d.ts.map +1 -0
  572. package/workflow/facets/WorkflowChangesTab.js +50 -0
  573. package/workflow/facets/WorkflowChangesTab.js.map +1 -0
  574. package/workflow/facets/WorkflowUsageTab.d.ts +27 -0
  575. package/workflow/facets/WorkflowUsageTab.d.ts.map +1 -0
  576. package/workflow/facets/WorkflowUsageTab.js +87 -0
  577. package/workflow/facets/WorkflowUsageTab.js.map +1 -0
  578. package/workflow/format-utils.d.ts +2 -3
  579. package/workflow/format-utils.d.ts.map +1 -1
  580. package/workflow/format-utils.js +2 -3
  581. package/workflow/format-utils.js.map +1 -1
  582. package/workflow/index.d.ts +21 -10
  583. package/workflow/index.d.ts.map +1 -1
  584. package/workflow/index.js +29 -14
  585. package/workflow/index.js.map +1 -1
  586. package/workflow/inspector/index.d.ts +0 -2
  587. package/workflow/inspector/index.d.ts.map +1 -1
  588. package/workflow/inspector/index.js +0 -2
  589. package/workflow/inspector/index.js.map +1 -1
  590. package/workflow/instance/WorkflowInstanceList.d.ts.map +1 -1
  591. package/workflow/instance/WorkflowInstanceList.js +11 -3
  592. package/workflow/instance/WorkflowInstanceList.js.map +1 -1
  593. package/workflow/task-detail/StructuredDataViewer.d.ts.map +1 -0
  594. package/workflow/task-detail/StructuredDataViewer.js.map +1 -0
  595. package/workflow/task-detail/index.d.ts +4 -0
  596. package/workflow/task-detail/index.d.ts.map +1 -0
  597. package/workflow/task-detail/index.js +4 -0
  598. package/workflow/task-detail/index.js.map +1 -0
  599. package/workflow/task-detail/task-approval.d.ts +89 -0
  600. package/workflow/task-detail/task-approval.d.ts.map +1 -0
  601. package/workflow/task-detail/task-approval.js +84 -0
  602. package/workflow/task-detail/task-approval.js.map +1 -0
  603. package/workflow/task-detail/task-detail-io.d.ts +39 -0
  604. package/workflow/task-detail/task-detail-io.d.ts.map +1 -0
  605. package/workflow/task-detail/task-detail-io.js +42 -0
  606. package/workflow/task-detail/task-detail-io.js.map +1 -0
  607. package/workflow/thread/WorkflowTaskThread.d.ts +91 -0
  608. package/workflow/thread/WorkflowTaskThread.d.ts.map +1 -0
  609. package/workflow/thread/WorkflowTaskThread.js +318 -0
  610. package/workflow/thread/WorkflowTaskThread.js.map +1 -0
  611. package/workflow/thread/project-thread-items.d.ts +108 -0
  612. package/workflow/thread/project-thread-items.d.ts.map +1 -0
  613. package/workflow/thread/project-thread-items.js +126 -0
  614. package/workflow/thread/project-thread-items.js.map +1 -0
  615. package/workflow/thread/task-presentation.d.ts +73 -0
  616. package/workflow/thread/task-presentation.d.ts.map +1 -0
  617. package/workflow/thread/task-presentation.js +331 -0
  618. package/workflow/thread/task-presentation.js.map +1 -0
  619. package/workflow/thread/thread-presentation.d.ts +28 -0
  620. package/workflow/thread/thread-presentation.d.ts.map +1 -0
  621. package/workflow/thread/thread-presentation.js +28 -0
  622. package/workflow/thread/thread-presentation.js.map +1 -0
  623. package/workflow/thread/useWorkflowThreadItems.d.ts +16 -0
  624. package/workflow/thread/useWorkflowThreadItems.d.ts.map +1 -0
  625. package/workflow/thread/useWorkflowThreadItems.js +22 -0
  626. package/workflow/thread/useWorkflowThreadItems.js.map +1 -0
  627. package/workflow/useApprovalBoundary.d.ts +38 -0
  628. package/workflow/useApprovalBoundary.d.ts.map +1 -0
  629. package/workflow/useApprovalBoundary.js +55 -0
  630. package/workflow/useApprovalBoundary.js.map +1 -0
  631. package/workflow/useFollowExecution.d.ts +0 -20
  632. package/workflow/useFollowExecution.d.ts.map +1 -1
  633. package/workflow/useFollowExecution.js +0 -17
  634. package/workflow/useFollowExecution.js.map +1 -1
  635. package/workflow/useWorkflowArtifactDownload.d.ts +28 -0
  636. package/workflow/useWorkflowArtifactDownload.d.ts.map +1 -0
  637. package/workflow/useWorkflowArtifactDownload.js +45 -0
  638. package/workflow/useWorkflowArtifactDownload.js.map +1 -0
  639. package/workflow/useWorkflowExecutionActions.d.ts +3 -2
  640. package/workflow/useWorkflowExecutionActions.d.ts.map +1 -1
  641. package/workflow/useWorkflowExecutionActions.js.map +1 -1
  642. package/workflow/useWorkflowExecutionFileChanges.d.ts +107 -0
  643. package/workflow/useWorkflowExecutionFileChanges.d.ts.map +1 -0
  644. package/workflow/useWorkflowExecutionFileChanges.js +244 -0
  645. package/workflow/useWorkflowExecutionFileChanges.js.map +1 -0
  646. package/workflow/useWorkflowExecutionGraph.d.ts +1 -14
  647. package/workflow/useWorkflowExecutionGraph.d.ts.map +1 -1
  648. package/workflow/useWorkflowExecutionGraph.js +2 -25
  649. package/workflow/useWorkflowExecutionGraph.js.map +1 -1
  650. package/workflow/useWorkflowExecutionPanel.d.ts +108 -0
  651. package/workflow/useWorkflowExecutionPanel.d.ts.map +1 -0
  652. package/workflow/useWorkflowExecutionPanel.js +103 -0
  653. package/workflow/useWorkflowExecutionPanel.js.map +1 -0
  654. package/workflow/useWorkflowExecutionRailViews.d.ts +46 -0
  655. package/workflow/useWorkflowExecutionRailViews.d.ts.map +1 -0
  656. package/workflow/useWorkflowExecutionRailViews.js +81 -0
  657. package/workflow/useWorkflowExecutionRailViews.js.map +1 -0
  658. package/workspace/FileViewer.d.ts +1 -1
  659. package/workspace/FileViewer.js +3 -3
  660. package/workspace/FileViewer.js.map +1 -1
  661. package/workspace/PanelChip.d.ts +27 -0
  662. package/workspace/PanelChip.d.ts.map +1 -0
  663. package/workspace/PanelChip.js +42 -0
  664. package/workspace/PanelChip.js.map +1 -0
  665. package/workspace/WorkspaceSurface.d.ts +25 -1
  666. package/workspace/WorkspaceSurface.d.ts.map +1 -1
  667. package/workspace/WorkspaceSurface.js +21 -9
  668. package/workspace/WorkspaceSurface.js.map +1 -1
  669. package/workspace/index.d.ts +3 -1
  670. package/workspace/index.d.ts.map +1 -1
  671. package/workspace/index.js +1 -0
  672. package/workspace/index.js.map +1 -1
  673. package/execution/ThreadSelectionContext.d.ts +0 -17
  674. package/execution/ThreadSelectionContext.d.ts.map +0 -1
  675. package/execution/ThreadSelectionContext.js +0 -18
  676. package/execution/ThreadSelectionContext.js.map +0 -1
  677. package/execution/useThreadSelection.d.ts +0 -35
  678. package/execution/useThreadSelection.d.ts.map +0 -1
  679. package/execution/useThreadSelection.js +0 -65
  680. package/execution/useThreadSelection.js.map +0 -1
  681. package/internal/store/selection-store.d.ts +0 -53
  682. package/internal/store/selection-store.d.ts.map +0 -1
  683. package/internal/store/selection-store.js +0 -88
  684. package/internal/store/selection-store.js.map +0 -1
  685. package/session/artifact-document.d.ts.map +0 -1
  686. package/session/artifact-document.js +0 -22
  687. package/session/artifact-document.js.map +0 -1
  688. package/session/facets/InspectTab.d.ts +0 -13
  689. package/session/facets/InspectTab.d.ts.map +0 -1
  690. package/session/facets/InspectTab.js +0 -19
  691. package/session/facets/InspectTab.js.map +0 -1
  692. package/src/execution/ThreadSelectionContext.tsx +0 -20
  693. package/src/execution/useThreadSelection.ts +0 -95
  694. package/src/internal/store/__tests__/selection-store.test.ts +0 -115
  695. package/src/internal/store/selection-store.ts +0 -112
  696. package/src/session/artifact-document.ts +0 -23
  697. package/src/session/facets/InspectTab.tsx +0 -57
  698. package/src/workflow/WorkflowExecutionApprovalCard.tsx +0 -154
  699. package/src/workflow/WorkflowExecutionArtifactPanel.tsx +0 -107
  700. package/src/workflow/WorkflowExecutionCostPanel.tsx +0 -120
  701. package/src/workflow/WorkflowExecutionTaskPanel.tsx +0 -129
  702. package/src/workflow/WorkflowExecutionTimeline.tsx +0 -151
  703. package/src/workflow/WorkflowExecutionTimelineEvent.tsx +0 -497
  704. package/src/workflow/__tests__/ExecutionInspector.test.tsx +0 -155
  705. package/src/workflow/__tests__/WorkflowExecutionApprovalCard.test.tsx +0 -129
  706. package/src/workflow/__tests__/derive-task-detail.test.ts +0 -1265
  707. package/src/workflow/__tests__/derive-waterfall-entries.test.ts +0 -521
  708. package/src/workflow/__tests__/execution-inspector.test.tsx +0 -332
  709. package/src/workflow/execution/derive-waterfall-entries.ts +0 -377
  710. package/src/workflow/execution/useWaterfallEntries.ts +0 -125
  711. package/src/workflow/execution-inspector/AgentCallTab.tsx +0 -169
  712. package/src/workflow/execution-inspector/ErrorTab.tsx +0 -110
  713. package/src/workflow/execution-inspector/EventLogTab.tsx +0 -79
  714. package/src/workflow/execution-inspector/ExecutionInspector.tsx +0 -341
  715. package/src/workflow/execution-inspector/InputOutputTab.tsx +0 -325
  716. package/src/workflow/execution-inspector/RetriesTab.tsx +0 -68
  717. package/src/workflow/execution-inspector/SummaryTab.tsx +0 -62
  718. package/src/workflow/execution-inspector/derive-task-detail.ts +0 -584
  719. package/src/workflow/execution-inspector/index.ts +0 -14
  720. package/src/workflow/execution-inspector/useExecutionTaskDetail.ts +0 -55
  721. package/src/workflow/inspector/ExecutionInspectorAdapter.tsx +0 -40
  722. package/src/workflow/waterfall/WaterfallBar.tsx +0 -167
  723. package/src/workflow/waterfall/WaterfallRow.tsx +0 -112
  724. package/src/workflow/waterfall/WaterfallScale.tsx +0 -52
  725. package/src/workflow/waterfall/WaterfallTimeline.tsx +0 -138
  726. package/src/workflow/waterfall/WaterfallTooltip.tsx +0 -74
  727. package/src/workflow/waterfall/index.ts +0 -5
  728. package/workflow/WorkflowExecutionApprovalCard.d.ts +0 -34
  729. package/workflow/WorkflowExecutionApprovalCard.d.ts.map +0 -1
  730. package/workflow/WorkflowExecutionApprovalCard.js +0 -46
  731. package/workflow/WorkflowExecutionApprovalCard.js.map +0 -1
  732. package/workflow/WorkflowExecutionArtifactPanel.d.ts +0 -15
  733. package/workflow/WorkflowExecutionArtifactPanel.d.ts.map +0 -1
  734. package/workflow/WorkflowExecutionArtifactPanel.js +0 -46
  735. package/workflow/WorkflowExecutionArtifactPanel.js.map +0 -1
  736. package/workflow/WorkflowExecutionCostPanel.d.ts +0 -18
  737. package/workflow/WorkflowExecutionCostPanel.d.ts.map +0 -1
  738. package/workflow/WorkflowExecutionCostPanel.js +0 -31
  739. package/workflow/WorkflowExecutionCostPanel.js.map +0 -1
  740. package/workflow/WorkflowExecutionTaskPanel.d.ts +0 -24
  741. package/workflow/WorkflowExecutionTaskPanel.d.ts.map +0 -1
  742. package/workflow/WorkflowExecutionTaskPanel.js +0 -51
  743. package/workflow/WorkflowExecutionTaskPanel.js.map +0 -1
  744. package/workflow/WorkflowExecutionTimeline.d.ts +0 -42
  745. package/workflow/WorkflowExecutionTimeline.d.ts.map +0 -1
  746. package/workflow/WorkflowExecutionTimeline.js +0 -52
  747. package/workflow/WorkflowExecutionTimeline.js.map +0 -1
  748. package/workflow/WorkflowExecutionTimelineEvent.d.ts +0 -25
  749. package/workflow/WorkflowExecutionTimelineEvent.d.ts.map +0 -1
  750. package/workflow/WorkflowExecutionTimelineEvent.js +0 -179
  751. package/workflow/WorkflowExecutionTimelineEvent.js.map +0 -1
  752. package/workflow/execution/derive-waterfall-entries.d.ts +0 -85
  753. package/workflow/execution/derive-waterfall-entries.d.ts.map +0 -1
  754. package/workflow/execution/derive-waterfall-entries.js +0 -268
  755. package/workflow/execution/derive-waterfall-entries.js.map +0 -1
  756. package/workflow/execution/useWaterfallEntries.d.ts +0 -25
  757. package/workflow/execution/useWaterfallEntries.d.ts.map +0 -1
  758. package/workflow/execution/useWaterfallEntries.js +0 -67
  759. package/workflow/execution/useWaterfallEntries.js.map +0 -1
  760. package/workflow/execution-inspector/AgentCallTab.d.ts +0 -21
  761. package/workflow/execution-inspector/AgentCallTab.d.ts.map +0 -1
  762. package/workflow/execution-inspector/AgentCallTab.js +0 -36
  763. package/workflow/execution-inspector/AgentCallTab.js.map +0 -1
  764. package/workflow/execution-inspector/ErrorTab.d.ts +0 -9
  765. package/workflow/execution-inspector/ErrorTab.d.ts.map +0 -1
  766. package/workflow/execution-inspector/ErrorTab.js +0 -29
  767. package/workflow/execution-inspector/ErrorTab.js.map +0 -1
  768. package/workflow/execution-inspector/EventLogTab.d.ts +0 -11
  769. package/workflow/execution-inspector/EventLogTab.d.ts.map +0 -1
  770. package/workflow/execution-inspector/EventLogTab.js +0 -47
  771. package/workflow/execution-inspector/EventLogTab.js.map +0 -1
  772. package/workflow/execution-inspector/ExecutionInspector.d.ts +0 -69
  773. package/workflow/execution-inspector/ExecutionInspector.d.ts.map +0 -1
  774. package/workflow/execution-inspector/ExecutionInspector.js +0 -145
  775. package/workflow/execution-inspector/ExecutionInspector.js.map +0 -1
  776. package/workflow/execution-inspector/InputOutputTab.d.ts +0 -20
  777. package/workflow/execution-inspector/InputOutputTab.d.ts.map +0 -1
  778. package/workflow/execution-inspector/InputOutputTab.js +0 -124
  779. package/workflow/execution-inspector/InputOutputTab.js.map +0 -1
  780. package/workflow/execution-inspector/RetriesTab.d.ts +0 -7
  781. package/workflow/execution-inspector/RetriesTab.d.ts.map +0 -1
  782. package/workflow/execution-inspector/RetriesTab.js +0 -11
  783. package/workflow/execution-inspector/RetriesTab.js.map +0 -1
  784. package/workflow/execution-inspector/StructuredDataViewer.d.ts.map +0 -1
  785. package/workflow/execution-inspector/StructuredDataViewer.js.map +0 -1
  786. package/workflow/execution-inspector/SummaryTab.d.ts +0 -7
  787. package/workflow/execution-inspector/SummaryTab.d.ts.map +0 -1
  788. package/workflow/execution-inspector/SummaryTab.js +0 -10
  789. package/workflow/execution-inspector/SummaryTab.js.map +0 -1
  790. package/workflow/execution-inspector/derive-task-detail.d.ts +0 -140
  791. package/workflow/execution-inspector/derive-task-detail.d.ts.map +0 -1
  792. package/workflow/execution-inspector/derive-task-detail.js +0 -366
  793. package/workflow/execution-inspector/derive-task-detail.js.map +0 -1
  794. package/workflow/execution-inspector/index.d.ts +0 -4
  795. package/workflow/execution-inspector/index.d.ts.map +0 -1
  796. package/workflow/execution-inspector/index.js +0 -4
  797. package/workflow/execution-inspector/index.js.map +0 -1
  798. package/workflow/execution-inspector/useExecutionTaskDetail.d.ts +0 -38
  799. package/workflow/execution-inspector/useExecutionTaskDetail.d.ts.map +0 -1
  800. package/workflow/execution-inspector/useExecutionTaskDetail.js +0 -37
  801. package/workflow/execution-inspector/useExecutionTaskDetail.js.map +0 -1
  802. package/workflow/inspector/ExecutionInspectorAdapter.d.ts +0 -26
  803. package/workflow/inspector/ExecutionInspectorAdapter.d.ts.map +0 -1
  804. package/workflow/inspector/ExecutionInspectorAdapter.js +0 -23
  805. package/workflow/inspector/ExecutionInspectorAdapter.js.map +0 -1
  806. package/workflow/waterfall/WaterfallBar.d.ts +0 -19
  807. package/workflow/waterfall/WaterfallBar.d.ts.map +0 -1
  808. package/workflow/waterfall/WaterfallBar.js +0 -70
  809. package/workflow/waterfall/WaterfallBar.js.map +0 -1
  810. package/workflow/waterfall/WaterfallRow.d.ts +0 -18
  811. package/workflow/waterfall/WaterfallRow.d.ts.map +0 -1
  812. package/workflow/waterfall/WaterfallRow.js +0 -45
  813. package/workflow/waterfall/WaterfallRow.js.map +0 -1
  814. package/workflow/waterfall/WaterfallScale.d.ts +0 -14
  815. package/workflow/waterfall/WaterfallScale.d.ts.map +0 -1
  816. package/workflow/waterfall/WaterfallScale.js +0 -22
  817. package/workflow/waterfall/WaterfallScale.js.map +0 -1
  818. package/workflow/waterfall/WaterfallTimeline.d.ts +0 -46
  819. package/workflow/waterfall/WaterfallTimeline.d.ts.map +0 -1
  820. package/workflow/waterfall/WaterfallTimeline.js +0 -60
  821. package/workflow/waterfall/WaterfallTimeline.js.map +0 -1
  822. package/workflow/waterfall/WaterfallTooltip.d.ts +0 -15
  823. package/workflow/waterfall/WaterfallTooltip.d.ts.map +0 -1
  824. package/workflow/waterfall/WaterfallTooltip.js +0 -20
  825. package/workflow/waterfall/WaterfallTooltip.js.map +0 -1
  826. package/workflow/waterfall/index.d.ts +0 -6
  827. package/workflow/waterfall/index.d.ts.map +0 -1
  828. package/workflow/waterfall/index.js +0 -6
  829. package/workflow/waterfall/index.js.map +0 -1
  830. /package/src/workflow/{execution-inspector → task-detail}/StructuredDataViewer.tsx +0 -0
  831. /package/workflow/{execution-inspector → task-detail}/StructuredDataViewer.d.ts +0 -0
  832. /package/workflow/{execution-inspector → task-detail}/StructuredDataViewer.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectWhatsAppDialog.d.ts","sourceRoot":"","sources":["../../src/channel/ConnectWhatsAppDialog.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oDAAoD,CAAC;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2DAA2D,CAAC;AAoB9F,+CAA+C;AAC/C,MAAM,WAAW,0BAA0B;IACzC,kCAAkC;IAClC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,4DAA4D;IAC5D,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,sCAAsC;IACtC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACvC;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IACxC;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,IAAI,EACJ,YAAY,EACZ,KAAK,EACL,OAAO,EACP,iBAAiB,EACjB,KAAY,EACZ,eAAe,GAChB,EAAE,0BAA0B,2CAiD5B"}
@@ -0,0 +1,256 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { useCallback, useMemo, useRef, useState } from "react";
4
+ import { cn } from "@stigmer/theme";
5
+ import { getErrorReason } from "@stigmer/sdk";
6
+ import { AgentChannelInstallState } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/status_pb";
7
+ import { Button } from "../button/Button.js";
8
+ import { useChannelAppList } from "../channel-app/useChannelAppList.js";
9
+ import { useDeploymentMode } from "../deployment-mode.js";
10
+ import { useStigmer } from "../hooks.js";
11
+ import { CloudFeatureNotice } from "../internal/CloudFeatureNotice.js";
12
+ import { RegisterChannelAppAffordance, ServingAppSection, } from "./connect/ServingAppSection.js";
13
+ import { ToolCredentialsSection } from "./connect/ToolCredentialsSection.js";
14
+ import { RefusalBox, VerbatimRefusal } from "./connect/VerbatimRefusal.js";
15
+ import { CheckIcon, CloseIcon, Spinner } from "./connect/icons.js";
16
+ import { useCreateAgentChannel } from "./useCreateAgentChannel.js";
17
+ import { useInstallChannel } from "./useInstallChannel.js";
18
+ import { useOrgAgentChannelList } from "./useOrgAgentChannelList.js";
19
+ import { agentChannelToInput, useSaveAgentChannel } from "./useSaveAgentChannel.js";
20
+ import { WhatsAppMarkIcon } from "./WhatsAppMarkIcon.js";
21
+ /**
22
+ * The connect flow for a WhatsApp channel: create the
23
+ * {@link AgentChannel} (create mode), then run the direct install — one
24
+ * server call that verifies the declared phone number against Meta's
25
+ * Graph API through the selected channel app's credentials (DD-WA-1).
26
+ * No consent popup, no callback route.
27
+ *
28
+ * WhatsApp is BYO-only (DD-WA-2): there is no platform Meta app, so a
29
+ * serving channel app is required — with none registered, the flow
30
+ * blocks on registering one first. The declared phone number ID is
31
+ * likewise required: the install proves it, and an empty value can only
32
+ * fail there.
33
+ *
34
+ * Requires Stigmer Cloud — on a `local` (OSS) backend the flow is
35
+ * preempted with a cloud-feature notice, matching the server's
36
+ * FAILED_PRECONDITION refusal. Install refusals render the server's
37
+ * copy verbatim except the duplicate-number refusal, which gets a
38
+ * guided treatment.
39
+ *
40
+ * Built on the native `<dialog>` element for focus trapping and escape
41
+ * handling, matching the SDK's modal convention
42
+ * ({@link ConnectSlackDialog}). All visual properties flow through
43
+ * `--stgm-*` design tokens.
44
+ *
45
+ * Most hosts mount it via {@link AgentChannelsPanel} (the Channels tab).
46
+ * Render it directly only when you own the open-state.
47
+ */
48
+ export function ConnectWhatsAppDialog({ open, onOpenChange, agent, channel, onChannelsChanged, modal = true, channelAppsHref, }) {
49
+ const dialogRef = useRef(null);
50
+ const handleClose = useCallback(() => {
51
+ dialogRef.current?.close();
52
+ onOpenChange(false);
53
+ }, [onOpenChange]);
54
+ // Sync native dialog open state (matches the SDK dialog convention).
55
+ // Non-modal hosts pass `open` as a plain attribute instead — the dialog
56
+ // renders in-flow with no top layer to manage.
57
+ const prevOpenRef = useRef(false);
58
+ if (modal && open !== prevOpenRef.current) {
59
+ prevOpenRef.current = open;
60
+ if (open) {
61
+ requestAnimationFrame(() => {
62
+ if (dialogRef.current && !dialogRef.current.open) {
63
+ dialogRef.current.showModal();
64
+ }
65
+ });
66
+ }
67
+ else if (dialogRef.current?.open) {
68
+ dialogRef.current.close();
69
+ }
70
+ }
71
+ return (_jsx("dialog", { ref: dialogRef, open: modal ? undefined : open, onClose: handleClose, className: cn("w-full max-w-md rounded-xl border border-border bg-popover p-0 shadow-xl", modal ? "fixed inset-0 m-auto backdrop:bg-black/50" : "relative"), "aria-labelledby": "connect-whatsapp-title", children: open && (_jsx(ConnectWhatsAppDialogBody, { agent: agent, channel: channel ?? null, onChannelsChanged: onChannelsChanged, onClose: handleClose, channelAppsHref: channelAppsHref })) }));
72
+ }
73
+ function ConnectWhatsAppDialogBody({ agent, channel, onChannelsChanged, onClose, channelAppsHref, }) {
74
+ const stigmer = useStigmer();
75
+ const deploymentMode = useDeploymentMode();
76
+ const agentName = agent.metadata?.name || agent.metadata?.slug || "this agent";
77
+ const org = agent.metadata?.org ?? "";
78
+ const { createChannel, isPending: isCreating } = useCreateAgentChannel();
79
+ const { save, isPending: isSaving } = useSaveAgentChannel();
80
+ const installer = useInstallChannel();
81
+ const [name, setName] = useState(() => channel ? (channel.metadata?.name ?? "") : `${agentName} WhatsApp`);
82
+ // The declared number (spec.whatsapp.phone_number_id). Genuinely
83
+ // user-declared — a WABA holds many numbers; the owner picks which one
84
+ // the agent serves. Required client-side: the write path defers it to
85
+ // the install probe, where an empty value can only fail.
86
+ const [phoneNumberId, setPhoneNumberId] = useState(() => channel?.spec?.providerConfig?.case === "whatsapp"
87
+ ? channel.spec.providerConfig.value.phoneNumberId
88
+ : "");
89
+ // Tool credentials bound at connect time (create mode only — a retry
90
+ // keeps the channel's existing bindings untouched; edits go through
91
+ // the channel card's credentials dialog).
92
+ const [environmentRefs, setEnvironmentRefs] = useState([]);
93
+ // The serving app — required (DD-WA-2: no platform Meta app exists).
94
+ // Editable in retry mode too: app_ref is server-mutable while the
95
+ // channel isn't installed, and a wrong app is a likely failure cause.
96
+ const [appRef, setAppRef] = useState(() => channel?.spec?.appRef?.slug
97
+ ? { org: channel.spec.appRef.org || org, slug: channel.spec.appRef.slug }
98
+ : null);
99
+ const [installed, setInstalled] = useState(null);
100
+ const [error, setError] = useState(null);
101
+ // The org's channel apps, fetched once here so the serving-app picker
102
+ // and the advisory read one consistent list.
103
+ const { channelApps } = useChannelAppList(org || null);
104
+ const whatsappApps = useMemo(() => channelApps.filter((app) => app.spec?.providerConfig?.case === "whatsapp"), [channelApps]);
105
+ // A sole registered app is the only possible choice — preselect it so
106
+ // the required picker never blocks on a decision with one answer
107
+ // (Hick's law). Derived, not effect-synced: apps load async.
108
+ const effectiveAppRef = appRef ??
109
+ (whatsappApps.length === 1
110
+ ? { org, slug: whatsappApps[0].metadata?.slug ?? "" }
111
+ : null);
112
+ const selectedApp = effectiveAppRef
113
+ ? whatsappApps.find((app) => app.metadata?.slug === effectiveAppRef.slug) ?? null
114
+ : null;
115
+ // Numbers the selected serving app already serves, matched on the same
116
+ // key the database enforces uniqueness on: (phone number, channel app).
117
+ // Advisory only — the list is permission-bounded; the install stays
118
+ // the arbiter.
119
+ const advisoryActive = deploymentMode === "cloud" && !installed;
120
+ const { channels: orgChannels } = useOrgAgentChannelList(advisoryActive && org ? org : null);
121
+ const trimmedNumber = phoneNumberId.trim();
122
+ const alreadyServed = useMemo(() => {
123
+ const selectedAppId = selectedApp?.metadata?.id;
124
+ if (!selectedAppId || !trimmedNumber)
125
+ return [];
126
+ return orgChannels.filter((c) => c.metadata?.id !== channel?.metadata?.id &&
127
+ c.status?.installState === AgentChannelInstallState.installed &&
128
+ c.status?.providerStatus?.case === "whatsapp" &&
129
+ c.status.providerStatus.value.phoneNumberId === trimmedNumber &&
130
+ c.status.providerStatus.value.channelAppId === selectedAppId);
131
+ }, [orgChannels, selectedApp, trimmedNumber, channel]);
132
+ // One click drives the whole journey: (create/update →) direct
133
+ // install → fetch the installed facts. No popup, so nothing here needs
134
+ // the synchronous-gesture treatment the Slack flow does.
135
+ const handleConnect = useCallback(async () => {
136
+ setError(null);
137
+ try {
138
+ let target = channel;
139
+ if (!target) {
140
+ target = await createChannel({
141
+ name: name.trim() || `${agentName} WhatsApp`,
142
+ org,
143
+ agentRef: {
144
+ org,
145
+ slug: agent.metadata?.slug ?? "",
146
+ },
147
+ enabled: true,
148
+ whatsapp: { phoneNumberId: trimmedNumber },
149
+ ...(effectiveAppRef ? { appRef: effectiveAppRef } : {}),
150
+ ...(environmentRefs.length > 0 ? { environmentRefs } : {}),
151
+ });
152
+ // The channel now exists even if the install below fails —
153
+ // surface it in the list either way.
154
+ onChannelsChanged?.();
155
+ }
156
+ else {
157
+ // Retry mode: persist edits to the number or app before
158
+ // re-installing. Skipped when nothing changed so a plain retry
159
+ // is one call, not two.
160
+ const existingNumber = target.spec?.providerConfig?.case === "whatsapp"
161
+ ? target.spec.providerConfig.value.phoneNumberId
162
+ : "";
163
+ const existingAppSlug = target.spec?.appRef?.slug ?? "";
164
+ if (existingNumber !== trimmedNumber ||
165
+ existingAppSlug !== (effectiveAppRef?.slug ?? "")) {
166
+ target = await save({
167
+ ...agentChannelToInput(target),
168
+ whatsapp: { phoneNumberId: trimmedNumber },
169
+ ...(effectiveAppRef ? { appRef: effectiveAppRef } : {}),
170
+ });
171
+ onChannelsChanged?.();
172
+ }
173
+ }
174
+ await installer.install(target.metadata?.id ?? "");
175
+ // The install answer carries no channel — read the recorded facts
176
+ // (display number, verified name) for the success summary.
177
+ const result = await stigmer.agentChannel.get(target.metadata?.id ?? "");
178
+ setInstalled(result);
179
+ onChannelsChanged?.();
180
+ }
181
+ catch (err) {
182
+ setError(installer.error ?? (err instanceof Error ? err : new Error(String(err))));
183
+ }
184
+ }, [agent, agentName, channel, createChannel, effectiveAppRef, environmentRefs, installer, name, org, onChannelsChanged, save, stigmer, trimmedNumber]);
185
+ const busy = isCreating || isSaving || installer.isInProgress;
186
+ const canConnect = trimmedNumber !== "" && effectiveAppRef !== null && !busy;
187
+ return (_jsxs("div", { className: "flex flex-col", children: [_jsxs("div", { className: "flex items-start justify-between gap-3 border-b border-border px-5 py-4", children: [_jsxs("div", { className: "flex items-center gap-2.5", children: [_jsx(WhatsAppMarkIcon, { className: "size-5 text-foreground" }), _jsx("h2", { id: "connect-whatsapp-title", className: "text-sm font-semibold text-foreground", children: channel ? "Reconnect to WhatsApp" : "Connect to WhatsApp" })] }), _jsx("button", { type: "button", onClick: onClose, "aria-label": "Close dialog", className: cn("rounded p-1 text-muted-foreground", "hover:bg-accent-hover hover:text-foreground", "focus:outline-none focus:ring-1 focus:ring-ring"), children: _jsx(CloseIcon, {}) })] }), _jsx("div", { className: "space-y-4 px-5 py-4", children: deploymentMode === "local" ? (
188
+ // Preempt the doomed flow: the OSS backend answers every
189
+ // install with FAILED_PRECONDITION.
190
+ _jsx(CloudFeatureNotice, { children: "Channel installs require Stigmer Cloud. The local backend manages channel configuration, but connecting to WhatsApp verifies your number through Stigmer's hosted webhook infrastructure." })) : installed ? (_jsx(InstalledSummary, { channel: installed, agentName: agentName })) : busy ? (_jsx(InstallingIndicator, {})) : (_jsxs(_Fragment, { children: [!channel && (_jsxs("label", { className: "block", children: [_jsx("span", { className: "mb-1.5 block text-xs font-medium text-foreground", children: "Channel name" }), _jsx("input", { type: "text", value: name, onChange: (e) => setName(e.target.value), disabled: busy, className: cn("w-full rounded-md border border-input bg-background px-3 py-1.5", "text-sm text-foreground placeholder:text-muted-foreground", "focus:outline-none focus:ring-1 focus:ring-ring") }), _jsx("span", { className: "mt-1 block text-xs text-muted-foreground", children: "Names the connection in Stigmer \u2014 pick something that identifies the number if you connect more than one." })] })), _jsxs("label", { className: "block", children: [_jsx("span", { className: "mb-1.5 block text-xs font-medium text-foreground", children: "Phone number ID" }), _jsx("input", { type: "text", value: phoneNumberId, onChange: (e) => setPhoneNumberId(e.target.value), disabled: busy, required: true, placeholder: "106540352242922", "data-cursor-target": "dialog-whatsapp-number", className: cn("w-full rounded-md border border-input bg-background px-3 py-1.5", "font-mono text-sm text-foreground placeholder:text-muted-foreground", "focus:outline-none focus:ring-1 focus:ring-ring") }), _jsx("span", { className: "mt-1 block text-xs text-muted-foreground", children: "From Meta's WhatsApp Manager (API Setup) \u2014 the numeric ID of the number this agent should answer, not the phone number itself." })] }), _jsx(ServingAppSection, { org: org, apps: whatsappApps, value: effectiveAppRef, onChange: setAppRef, disabled: busy, channelAppsHref: channelAppsHref, idPrefix: "stgm-whatsapp-app", appHint: "Your Meta app \u2014 its credentials verify and serve the number", emptyBody: _jsxs("p", { className: "text-xs text-muted-foreground", children: ["WhatsApp channels connect through your own Meta app \u2014 there is no shared platform app.", " ", _jsx(RegisterChannelAppAffordance, { channelAppsHref: channelAppsHref, children: "Register a channel app" }), " ", "with your Meta app's credentials first, then connect here."] }) }), alreadyServed.length > 0 && (_jsx(AlreadyServedNote, { channels: alreadyServed })), !channel && (_jsx(ToolCredentialsSection, { agent: agent, org: org, value: environmentRefs, onChange: setEnvironmentRefs, disabled: busy })), _jsx("p", { className: "text-sm text-muted-foreground", children: "When you continue, Stigmer verifies the number with WhatsApp through the selected app's credentials \u2014 the connection completes right here, with no browser hand-off." }), _jsxs("p", { className: "text-sm text-muted-foreground", children: ["People reach the agent by sending a WhatsApp message to the connected number \u2014 it answers as", " ", _jsx("span", { className: "font-medium text-foreground", children: agentName }), "."] }), _jsxs("p", { className: "text-xs text-muted-foreground", children: ["Conversations from WhatsApp are billed to", " ", _jsx("span", { className: "font-medium", children: org }), ". Each number serves one agent per channel app."] }), error && (_jsx(InstallRefusal, { error: error, channelAppsHref: channelAppsHref }))] })) }), _jsx("div", { className: "flex justify-end gap-2 border-t border-border px-5 py-3", children: installed || deploymentMode === "local" ? (_jsx(Button, { variant: "outline", size: "sm", onClick: onClose, children: installed ? "Done" : "Close" })) : (_jsxs(_Fragment, { children: [_jsx(Button, { variant: "ghost", size: "sm", onClick: onClose, disabled: busy, children: "Cancel" }), _jsx(Button, { variant: "primary", size: "sm", onClick: () => void handleConnect(), disabled: !canConnect, icon: _jsx(WhatsAppMarkIcon, { className: "size-3.5" }), "data-cursor-target": "dialog-connect-whatsapp", children: error ? "Try again" : channel ? "Reconnect to WhatsApp" : "Connect to WhatsApp" })] })) })] }));
191
+ }
192
+ // ---------------------------------------------------------------------------
193
+ // Install refusal — guided for the duplicate-number reason
194
+ // ---------------------------------------------------------------------------
195
+ /**
196
+ * The reason code the server attaches (google.rpc.ErrorInfo, domain
197
+ * stigmer.ai) to a duplicate-number initiateInstall refusal — see the
198
+ * initiateInstall rpc comment for the vocabulary.
199
+ */
200
+ const REASON_NUMBER_ALREADY_CONNECTED = "WHATSAPP_NUMBER_ALREADY_CONNECTED";
201
+ /**
202
+ * Install-refusal rendering. The duplicate-number refusal is the one a
203
+ * user can act on from here, so it gets a guided treatment — names the
204
+ * occupied number (from the ErrorInfo metadata) and the ways out. Every
205
+ * other refusal (bad token, unknown number, dangling app — and any error
206
+ * from a server not attaching reasons) renders the server's copy
207
+ * verbatim — the server owns that vocabulary.
208
+ */
209
+ function InstallRefusal({ error, channelAppsHref, }) {
210
+ const reason = getErrorReason(error);
211
+ if (reason?.reason !== REASON_NUMBER_ALREADY_CONNECTED) {
212
+ return _jsx(VerbatimRefusal, { error: error });
213
+ }
214
+ const number = reason.metadata.display_phone_number || "This number";
215
+ return (_jsxs(RefusalBox, { children: [_jsxs("p", { children: [_jsx("span", { className: "font-medium", children: number }), " is already connected to an agent through this channel app \u2014 each number serves one agent."] }), _jsxs("p", { children: ["To reach it with this agent, disconnect the existing channel, use a different number, or", " ", _jsx(RegisterChannelAppAffordance, { channelAppsHref: channelAppsHref, children: "register a channel app" }), " ", "and connect through that instead."] })] }));
216
+ }
217
+ /**
218
+ * Pre-install advisory: the selected serving app already serves this
219
+ * number, matched on the exact key the database enforces — (phone
220
+ * number, serving app). Shown before the user spends the install
221
+ * round-trip discovering it. Best-effort by design: the list is bounded
222
+ * by the caller's visibility, so the copy warns rather than forbids.
223
+ */
224
+ function AlreadyServedNote({ channels, }) {
225
+ return (_jsx("div", { role: "status", className: "space-y-0.5 text-xs text-warning", children: channels.map((c) => {
226
+ const whatsapp = c.status?.providerStatus?.case === "whatsapp"
227
+ ? c.status.providerStatus.value
228
+ : null;
229
+ const number = whatsapp?.displayPhoneNumber || whatsapp?.phoneNumberId || "this number";
230
+ const agent = c.spec?.agentRef?.slug || "another agent";
231
+ return (_jsxs("p", { children: [_jsx("span", { className: "font-medium", children: number }), " is already served via ", agent, " \u2014 each number serves one agent per channel app, so disconnect that channel or pick a different number."] }, c.metadata?.id ?? number));
232
+ }) }));
233
+ }
234
+ // ---------------------------------------------------------------------------
235
+ // Installing indicator — a single live step, deliberately not a ladder
236
+ // ---------------------------------------------------------------------------
237
+ /**
238
+ * The busy state of a direct install: one server call, so one live line —
239
+ * not the Slack dialog's three-step OAuth ladder, which would render two
240
+ * permanently-empty rungs here. No cancel affordance either: there is no
241
+ * popup to abandon, and the call settles in seconds.
242
+ */
243
+ function InstallingIndicator() {
244
+ return (_jsxs("div", { className: "flex items-center gap-2 text-sm text-foreground", "aria-live": "polite", children: [_jsx(Spinner, { className: "size-3.5 shrink-0" }), "Verifying the number with WhatsApp\u2026"] }));
245
+ }
246
+ // ---------------------------------------------------------------------------
247
+ // Installed summary — the success state with the observed WhatsApp facts
248
+ // ---------------------------------------------------------------------------
249
+ function InstalledSummary({ channel, agentName, }) {
250
+ const whatsapp = channel.status?.providerStatus?.case === "whatsapp"
251
+ ? channel.status.providerStatus.value
252
+ : null;
253
+ const number = whatsapp?.displayPhoneNumber || whatsapp?.phoneNumberId || null;
254
+ return (_jsxs("div", { className: "space-y-2", role: "status", children: [_jsxs("div", { className: "flex items-center gap-2 text-sm font-medium text-foreground", children: [_jsx(CheckIcon, { className: "size-4 text-success" }), "Connected", number ? ` to ${number}` : "", whatsapp?.verifiedName ? ` (${whatsapp.verifiedName})` : ""] }), _jsxs("p", { className: "text-sm text-muted-foreground", children: ["Send a WhatsApp message to", " ", _jsx("span", { className: "font-medium text-foreground", children: number ?? "the connected number" }), " ", "and ask your question \u2014 answers come from", " ", _jsx("span", { className: "font-medium text-foreground", children: agentName }), "."] })] }));
255
+ }
256
+ //# sourceMappingURL=ConnectWhatsAppDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectWhatsAppDialog.js","sourceRoot":"","sources":["../../src/channel/ConnectWhatsAppDialog.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Monochrome Slack mark (the four-lobe glyph) as an inline SVG.
3
+ *
4
+ * Renders in `currentColor` so it follows the surrounding text token —
5
+ * the SDK never hardcodes brand colors (theme-token compliance). Shared
6
+ * by the channel components; not exported from the public barrel.
7
+ */
8
+ export declare function SlackMarkIcon({ className }: {
9
+ readonly className?: string;
10
+ }): import("react/jsx-runtime").JSX.Element;
11
+ //# sourceMappingURL=SlackMarkIcon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SlackMarkIcon.d.ts","sourceRoot":"","sources":["../../src/channel/SlackMarkIcon.tsx"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,2CAW3E"}
@@ -0,0 +1,13 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ /**
4
+ * Monochrome Slack mark (the four-lobe glyph) as an inline SVG.
5
+ *
6
+ * Renders in `currentColor` so it follows the surrounding text token —
7
+ * the SDK never hardcodes brand colors (theme-token compliance). Shared
8
+ * by the channel components; not exported from the public barrel.
9
+ */
10
+ export function SlackMarkIcon({ className }) {
11
+ return (_jsx("svg", { className: className, viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": "true", children: _jsx("path", { d: "M5.04 15.17a2.52 2.52 0 1 1-2.52-2.52h2.52v2.52zM6.31 15.17a2.52 2.52 0 0 1 5.04 0v6.31a2.52 2.52 0 1 1-5.04 0v-6.31zM8.83 5.04a2.52 2.52 0 1 1 2.52-2.52v2.52H8.83zM8.83 6.31a2.52 2.52 0 0 1 0 5.04H2.52a2.52 2.52 0 1 1 0-5.04h6.31zM18.96 8.83a2.52 2.52 0 1 1 2.52 2.52h-2.52V8.83zM17.69 8.83a2.52 2.52 0 0 1-5.04 0V2.52a2.52 2.52 0 1 1 5.04 0v6.31zM15.17 18.96a2.52 2.52 0 1 1-2.52 2.52v-2.52h2.52zM15.17 17.69a2.52 2.52 0 0 1 0-5.04h6.31a2.52 2.52 0 1 1 0 5.04h-6.31z" }) }));
12
+ }
13
+ //# sourceMappingURL=SlackMarkIcon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SlackMarkIcon.js","sourceRoot":"","sources":["../../src/channel/SlackMarkIcon.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,EAAE,SAAS,EAAmC;IAC1E,OAAO,CACL,cACE,SAAS,EAAE,SAAS,EACpB,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,cAAc,iBACP,MAAM,YAElB,eAAM,CAAC,EAAC,sdAAsd,GAAG,GAC7d,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Monochrome WhatsApp mark (the speech-bubble-with-handset glyph) as an
3
+ * inline SVG.
4
+ *
5
+ * Renders in `currentColor` so it follows the surrounding text token —
6
+ * the SDK never hardcodes brand colors (theme-token compliance). Shared
7
+ * by the channel components; not exported from the public barrel.
8
+ */
9
+ export declare function WhatsAppMarkIcon({ className }: {
10
+ readonly className?: string;
11
+ }): import("react/jsx-runtime").JSX.Element;
12
+ //# sourceMappingURL=WhatsAppMarkIcon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WhatsAppMarkIcon.d.ts","sourceRoot":"","sources":["../../src/channel/WhatsAppMarkIcon.tsx"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,2CAW9E"}
@@ -0,0 +1,14 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ /**
4
+ * Monochrome WhatsApp mark (the speech-bubble-with-handset glyph) as an
5
+ * inline SVG.
6
+ *
7
+ * Renders in `currentColor` so it follows the surrounding text token —
8
+ * the SDK never hardcodes brand colors (theme-token compliance). Shared
9
+ * by the channel components; not exported from the public barrel.
10
+ */
11
+ export function WhatsAppMarkIcon({ className }) {
12
+ return (_jsx("svg", { className: className, viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": "true", children: _jsx("path", { d: "M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 0 1-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 0 1-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 0 1 2.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0 0 12.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 0 0 5.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 0 0-3.48-8.413Z" }) }));
13
+ }
14
+ //# sourceMappingURL=WhatsAppMarkIcon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WhatsAppMarkIcon.js","sourceRoot":"","sources":["../../src/channel/WhatsAppMarkIcon.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAAE,SAAS,EAAmC;IAC7E,OAAO,CACL,cACE,SAAS,EAAE,SAAS,EACpB,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,cAAc,iBACP,MAAM,YAElB,eAAM,CAAC,EAAC,2lCAA2lC,GAAG,GAClmC,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,57 @@
1
+ import type { ReactNode } from "react";
2
+ import type { ResourceRef } from "@stigmer/sdk";
3
+ import type { ChannelApp } from "@stigmer/protos/ai/stigmer/agentic/channelapp/v1/api_pb";
4
+ /**
5
+ * "Connect as whom" for the channel connect dialogs (T04 item 2): the
6
+ * provider's platform app (when the provider has one — Slack) or one of
7
+ * the org's own channel apps (BYO — the bot carries that app's brand,
8
+ * and each app is its own bot identity).
9
+ *
10
+ * Provider variance is prop-shaped, never branched:
11
+ *
12
+ * - `platformOption` present (Slack): "no selection" means the platform
13
+ * app, and with zero registered apps the section states that default
14
+ * plainly instead of a one-option radio group (which would be noise).
15
+ * - `platformOption` absent (WhatsApp, BYO-only per DD-WA-2): an app
16
+ * selection is required, and with zero registered apps the section
17
+ * renders the caller's `emptyBody` — a blocking register-first state,
18
+ * because a channel without an app binding could never install.
19
+ *
20
+ * Both shapes carry the register affordance: a link when the host
21
+ * provided `channelAppsHref`, plain guidance text otherwise.
22
+ */
23
+ export declare function ServingAppSection({ org, apps, value, onChange, disabled, channelAppsHref, idPrefix, platformOption, appHint, emptyBody, }: {
24
+ readonly org: string;
25
+ /** The org's channel apps, already filtered to this provider. */
26
+ readonly apps: readonly ChannelApp[];
27
+ readonly value: ResourceRef | null;
28
+ readonly onChange: (ref: ResourceRef | null) => void;
29
+ readonly disabled: boolean;
30
+ readonly channelAppsHref?: string;
31
+ /** Option id prefix + radio-group name, unique per dialog (e.g. "stgm-slack-app"). */
32
+ readonly idPrefix: string;
33
+ /**
34
+ * The provider's shared platform app as a selectable option
35
+ * (`value === null`). Omit for BYO-only providers.
36
+ */
37
+ readonly platformOption?: {
38
+ readonly label: string;
39
+ readonly hint: string;
40
+ };
41
+ /** Hint line under each of the org's own apps. */
42
+ readonly appHint: string;
43
+ /** Section body when the org has no apps for this provider. */
44
+ readonly emptyBody: ReactNode;
45
+ }): import("react/jsx-runtime").JSX.Element;
46
+ /**
47
+ * The path from the connect flow to Channel App registration. A link
48
+ * when the host told us where registration lives; otherwise the label
49
+ * plus the console location, so embedded hosts without the route still
50
+ * leave the user oriented. Children are the label ("Register a channel
51
+ * app" / "register a channel app") so each call site reads as a sentence.
52
+ */
53
+ export declare function RegisterChannelAppAffordance({ channelAppsHref, children, }: {
54
+ readonly channelAppsHref?: string;
55
+ readonly children: ReactNode;
56
+ }): import("react/jsx-runtime").JSX.Element;
57
+ //# sourceMappingURL=ServingAppSection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServingAppSection.d.ts","sourceRoot":"","sources":["../../../src/channel/connect/ServingAppSection.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yDAAyD,CAAC;AAE1F;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,GAAG,EACH,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,eAAe,EACf,QAAQ,EACR,cAAc,EACd,OAAO,EACP,SAAS,GACV,EAAE;IACD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,QAAQ,CAAC,IAAI,EAAE,SAAS,UAAU,EAAE,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IACrD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,sFAAsF;IACtF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5E,kDAAkD;IAClD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,+DAA+D;IAC/D,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;CAC/B,2CAsDA;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,EAC3C,eAAe,EACf,QAAQ,GACT,EAAE;IACD,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;CAC9B,2CAgBA"}
@@ -0,0 +1,49 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { cn } from "@stigmer/theme";
4
+ /**
5
+ * "Connect as whom" for the channel connect dialogs (T04 item 2): the
6
+ * provider's platform app (when the provider has one — Slack) or one of
7
+ * the org's own channel apps (BYO — the bot carries that app's brand,
8
+ * and each app is its own bot identity).
9
+ *
10
+ * Provider variance is prop-shaped, never branched:
11
+ *
12
+ * - `platformOption` present (Slack): "no selection" means the platform
13
+ * app, and with zero registered apps the section states that default
14
+ * plainly instead of a one-option radio group (which would be noise).
15
+ * - `platformOption` absent (WhatsApp, BYO-only per DD-WA-2): an app
16
+ * selection is required, and with zero registered apps the section
17
+ * renders the caller's `emptyBody` — a blocking register-first state,
18
+ * because a channel without an app binding could never install.
19
+ *
20
+ * Both shapes carry the register affordance: a link when the host
21
+ * provided `channelAppsHref`, plain guidance text otherwise.
22
+ */
23
+ export function ServingAppSection({ org, apps, value, onChange, disabled, channelAppsHref, idPrefix, platformOption, appHint, emptyBody, }) {
24
+ if (apps.length === 0) {
25
+ return (_jsxs("section", { "aria-label": "Connect as", children: [_jsx("h3", { className: "mb-1.5 text-xs font-medium text-foreground", children: "Connect as" }), emptyBody] }));
26
+ }
27
+ return (_jsxs("fieldset", { children: [_jsx("legend", { className: "mb-1.5 block text-xs font-medium text-foreground", children: "Connect as" }), _jsxs("div", { role: "radiogroup", className: "space-y-1.5", children: [platformOption && (_jsx(ServingAppOption, { id: `${idPrefix}-platform`, name: idPrefix, label: platformOption.label, hint: platformOption.hint, checked: value === null, onSelect: () => onChange(null), disabled: disabled })), apps.map((app) => {
28
+ const slug = app.metadata?.slug ?? "";
29
+ const checked = value?.slug === slug;
30
+ return (_jsx(ServingAppOption, { id: `${idPrefix}-${slug}`, name: idPrefix, label: app.metadata?.name ?? slug, hint: appHint, checked: checked, onSelect: () => onChange({ org, slug }), disabled: disabled }, app.metadata?.id ?? slug));
31
+ })] }), _jsxs("p", { className: "mt-1.5 text-xs text-muted-foreground", children: [_jsx(RegisterChannelAppAffordance, { channelAppsHref: channelAppsHref, children: "Register a channel app" }), "."] })] }));
32
+ }
33
+ /**
34
+ * The path from the connect flow to Channel App registration. A link
35
+ * when the host told us where registration lives; otherwise the label
36
+ * plus the console location, so embedded hosts without the route still
37
+ * leave the user oriented. Children are the label ("Register a channel
38
+ * app" / "register a channel app") so each call site reads as a sentence.
39
+ */
40
+ export function RegisterChannelAppAffordance({ channelAppsHref, children, }) {
41
+ if (!channelAppsHref) {
42
+ return _jsxs(_Fragment, { children: [children, " under Settings \u2192 Channel Apps"] });
43
+ }
44
+ return (_jsx("a", { href: channelAppsHref, className: cn("font-medium underline underline-offset-2", "hover:no-underline", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded"), children: children }));
45
+ }
46
+ function ServingAppOption({ id, name, label, hint, checked, onSelect, disabled, }) {
47
+ return (_jsxs("label", { htmlFor: id, className: cn("flex cursor-pointer items-start gap-2 rounded-md border px-2.5 py-1.5", checked ? "border-ring bg-accent" : "border-border hover:bg-accent-hover", disabled && "pointer-events-none opacity-50"), children: [_jsx("input", { id: id, type: "radio", name: name, checked: checked, onChange: onSelect, disabled: disabled, className: "mt-0.5 accent-current" }), _jsxs("span", { className: "min-w-0", children: [_jsx("span", { className: "block text-xs font-medium text-foreground", children: label }), _jsx("span", { className: "block text-[0.65rem] text-muted-foreground", children: hint })] })] }));
48
+ }
49
+ //# sourceMappingURL=ServingAppSection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServingAppSection.js","sourceRoot":"","sources":["../../../src/channel/connect/ServingAppSection.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { ResourceRef } from "@stigmer/sdk";
2
+ import type { Agent } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/api_pb";
3
+ /**
4
+ * Collapsible credential-binding section for the connect dialogs' create
5
+ * mode (the ShareAgentDialog ToolCredentialsSection pattern). Expanded by
6
+ * default when the agent uses MCP tools — for those agents this is
7
+ * essential configuration, not an advanced option: without a binding,
8
+ * every channel message that needs a tool is refused.
9
+ *
10
+ * Provider-agnostic by construction: bindings are agent + environment
11
+ * facts, so both connect dialogs render this section unchanged.
12
+ */
13
+ export declare function ToolCredentialsSection({ agent, org, value, onChange, disabled, }: {
14
+ readonly agent: Agent;
15
+ readonly org: string;
16
+ readonly value: readonly ResourceRef[];
17
+ readonly onChange: (refs: ResourceRef[]) => void;
18
+ readonly disabled: boolean;
19
+ }): import("react/jsx-runtime").JSX.Element;
20
+ //# sourceMappingURL=ToolCredentialsSection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolCredentialsSection.d.ts","sourceRoot":"","sources":["../../../src/channel/connect/ToolCredentialsSection.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oDAAoD,CAAC;AAIhF;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,KAAK,EACL,GAAG,EACH,KAAK,EACL,QAAQ,EACR,QAAQ,GACT,EAAE;IACD,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;IACjD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B,2CAmCA"}
@@ -0,0 +1,22 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useState } from "react";
4
+ import { cn } from "@stigmer/theme";
5
+ import { ChannelToolCredentials } from "../ChannelToolCredentials.js";
6
+ import { ChevronIcon } from "./icons.js";
7
+ /**
8
+ * Collapsible credential-binding section for the connect dialogs' create
9
+ * mode (the ShareAgentDialog ToolCredentialsSection pattern). Expanded by
10
+ * default when the agent uses MCP tools — for those agents this is
11
+ * essential configuration, not an advanced option: without a binding,
12
+ * every channel message that needs a tool is refused.
13
+ *
14
+ * Provider-agnostic by construction: bindings are agent + environment
15
+ * facts, so both connect dialogs render this section unchanged.
16
+ */
17
+ export function ToolCredentialsSection({ agent, org, value, onChange, disabled, }) {
18
+ const hasMcpTools = (agent.spec?.mcpServerUsages?.length ?? 0) > 0;
19
+ const [expanded, setExpanded] = useState(hasMcpTools || value.length > 0);
20
+ return (_jsxs("section", { children: [_jsxs("button", { type: "button", onClick: () => setExpanded((v) => !v), "aria-expanded": expanded, className: cn("inline-flex items-center gap-1 text-xs font-medium text-muted-foreground", "hover:text-foreground", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded"), children: [_jsx(ChevronIcon, { className: cn("size-3 transition-transform", expanded && "rotate-90") }), "Tool credentials"] }), expanded && (_jsx("div", { className: "mt-2", children: _jsx(ChannelToolCredentials, { agent: agent, org: org, value: value, onChange: onChange, disabled: disabled }) }))] }));
21
+ }
22
+ //# sourceMappingURL=ToolCredentialsSection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolCredentialsSection.js","sourceRoot":"","sources":["../../../src/channel/connect/ToolCredentialsSection.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAGpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC;;;;;;;;;GASG;AACH,MAAM,UAAU,sBAAsB,CAAC,EACrC,KAAK,EACL,GAAG,EACH,KAAK,EACL,QAAQ,EACR,QAAQ,GAOT;IACC,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACnE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,WAAW,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE1E,OAAO,CACL,8BACE,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,mBACtB,QAAQ,EACvB,SAAS,EAAE,EAAE,CACX,0EAA0E,EAC1E,uBAAuB,EACvB,iFAAiF,CAClF,aAED,KAAC,WAAW,IACV,SAAS,EAAE,EAAE,CAAC,6BAA6B,EAAE,QAAQ,IAAI,WAAW,CAAC,GACrE,wBAEK,EAER,QAAQ,IAAI,CACX,cAAK,SAAS,EAAC,MAAM,YACnB,KAAC,sBAAsB,IACrB,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,GAClB,GACE,CACP,IACO,CACX,CAAC;AACJ,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { ReactNode } from "react";
2
+ /**
3
+ * The plain install-refusal alert: the server's copy rendered verbatim —
4
+ * the server owns that vocabulary. Both connect dialogs fall back to
5
+ * this for any refusal they don't recognize; provider-guided refusals
6
+ * (a known ErrorInfo reason with actionable copy) stay provider-local
7
+ * and reuse {@link RefusalBox} for the chrome.
8
+ */
9
+ export declare function VerbatimRefusal({ error }: {
10
+ readonly error: Error;
11
+ }): import("react/jsx-runtime").JSX.Element;
12
+ /** The refusal alert chrome, shared by verbatim and guided refusals. */
13
+ export declare function RefusalBox({ children }: {
14
+ readonly children: ReactNode;
15
+ }): import("react/jsx-runtime").JSX.Element;
16
+ //# sourceMappingURL=VerbatimRefusal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerbatimRefusal.d.ts","sourceRoot":"","sources":["../../../src/channel/connect/VerbatimRefusal.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,2CAEnE;AAED,wEAAwE;AACxE,wBAAgB,UAAU,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;CAAE,2CASxE"}
@@ -0,0 +1,18 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { getUserMessage } from "@stigmer/sdk";
4
+ /**
5
+ * The plain install-refusal alert: the server's copy rendered verbatim —
6
+ * the server owns that vocabulary. Both connect dialogs fall back to
7
+ * this for any refusal they don't recognize; provider-guided refusals
8
+ * (a known ErrorInfo reason with actionable copy) stay provider-local
9
+ * and reuse {@link RefusalBox} for the chrome.
10
+ */
11
+ export function VerbatimRefusal({ error }) {
12
+ return _jsx(RefusalBox, { children: getUserMessage(error) });
13
+ }
14
+ /** The refusal alert chrome, shared by verbatim and guided refusals. */
15
+ export function RefusalBox({ children }) {
16
+ return (_jsx("div", { role: "alert", className: "space-y-1 rounded-md border border-destructive/30 bg-destructive-subtle px-3 py-2 text-xs text-destructive", children: children }));
17
+ }
18
+ //# sourceMappingURL=VerbatimRefusal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerbatimRefusal.js","sourceRoot":"","sources":["../../../src/channel/connect/VerbatimRefusal.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,EAAE,KAAK,EAA6B;IAClE,OAAO,KAAC,UAAU,cAAE,cAAc,CAAC,KAAK,CAAC,GAAc,CAAC;AAC1D,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,UAAU,CAAC,EAAE,QAAQ,EAAoC;IACvE,OAAO,CACL,cACE,IAAI,EAAC,OAAO,EACZ,SAAS,EAAC,4GAA4G,YAErH,QAAQ,GACL,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Inline icons shared by the channel connect dialogs. Package-internal:
3
+ * content-level pieces stay domain-local (the channel-app/internal.tsx
4
+ * convention).
5
+ */
6
+ export declare function CloseIcon(): import("react/jsx-runtime").JSX.Element;
7
+ export declare function CheckIcon({ className }: {
8
+ readonly className?: string;
9
+ }): import("react/jsx-runtime").JSX.Element;
10
+ export declare function ChevronIcon({ className }: {
11
+ readonly className?: string;
12
+ }): import("react/jsx-runtime").JSX.Element;
13
+ export declare function Spinner({ className }: {
14
+ readonly className?: string;
15
+ }): import("react/jsx-runtime").JSX.Element;
16
+ //# sourceMappingURL=icons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../../src/channel/connect/icons.tsx"],"names":[],"mappings":"AAIA;;;;GAIG;AAEH,wBAAgB,SAAS,4CAMxB;AAED,wBAAgB,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,2CAMvE;AAED,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,2CAMzE;AAED,wBAAgB,OAAO,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,2CAOrE"}