@stigmer/react 3.12.0 → 3.12.2

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 (738) hide show
  1. package/access/ManageAccessDialog.d.ts.map +1 -1
  2. package/access/ManageAccessDialog.js +7 -2
  3. package/access/ManageAccessDialog.js.map +1 -1
  4. package/activity/format-relative-time.d.ts +11 -9
  5. package/activity/format-relative-time.d.ts.map +1 -1
  6. package/activity/format-relative-time.js +11 -9
  7. package/activity/format-relative-time.js.map +1 -1
  8. package/agent/steps/CapabilitiesStep.js +5 -2
  9. package/agent/steps/CapabilitiesStep.js.map +1 -1
  10. package/agent/steps/IdentityStep.d.ts.map +1 -1
  11. package/agent/steps/IdentityStep.js +6 -5
  12. package/agent/steps/IdentityStep.js.map +1 -1
  13. package/agent-instance/CreateAgentInstanceDialog.d.ts.map +1 -1
  14. package/agent-instance/CreateAgentInstanceDialog.js +10 -2
  15. package/agent-instance/CreateAgentInstanceDialog.js.map +1 -1
  16. package/api-key/ApiKeyCreatedAlert.d.ts.map +1 -1
  17. package/api-key/ApiKeyCreatedAlert.js +12 -20
  18. package/api-key/ApiKeyCreatedAlert.js.map +1 -1
  19. package/api-key/ApiKeyListPanel.d.ts.map +1 -1
  20. package/api-key/ApiKeyListPanel.js +3 -23
  21. package/api-key/ApiKeyListPanel.js.map +1 -1
  22. package/api-key/CreateApiKeyForm.d.ts.map +1 -1
  23. package/api-key/CreateApiKeyForm.js +6 -10
  24. package/api-key/CreateApiKeyForm.js.map +1 -1
  25. package/approval-defaults-context.d.ts +47 -0
  26. package/approval-defaults-context.d.ts.map +1 -0
  27. package/approval-defaults-context.js +27 -0
  28. package/approval-defaults-context.js.map +1 -0
  29. package/attachment/index.d.ts +2 -0
  30. package/attachment/index.d.ts.map +1 -1
  31. package/attachment/index.js +1 -0
  32. package/attachment/index.js.map +1 -1
  33. package/attachment/vision-preflight.d.ts +113 -0
  34. package/attachment/vision-preflight.d.ts.map +1 -0
  35. package/attachment/vision-preflight.js +143 -0
  36. package/attachment/vision-preflight.js.map +1 -0
  37. package/billing/AutoRechargeCard.d.ts.map +1 -1
  38. package/billing/AutoRechargeCard.js +3 -2
  39. package/billing/AutoRechargeCard.js.map +1 -1
  40. package/billing/BillingSection.d.ts.map +1 -1
  41. package/billing/BillingSection.js +3 -2
  42. package/billing/BillingSection.js.map +1 -1
  43. package/channel/ChannelConversationsDialog.d.ts.map +1 -1
  44. package/channel/ChannelConversationsDialog.js +5 -4
  45. package/channel/ChannelConversationsDialog.js.map +1 -1
  46. package/channel/ChannelCredentialsDialog.d.ts.map +1 -1
  47. package/channel/ChannelCredentialsDialog.js +9 -4
  48. package/channel/ChannelCredentialsDialog.js.map +1 -1
  49. package/channel/ChannelTemplatesDialog.d.ts.map +1 -1
  50. package/channel/ChannelTemplatesDialog.js +5 -4
  51. package/channel/ChannelTemplatesDialog.js.map +1 -1
  52. package/channel/ConnectSlackDialog.d.ts.map +1 -1
  53. package/channel/ConnectSlackDialog.js +9 -4
  54. package/channel/ConnectSlackDialog.js.map +1 -1
  55. package/channel/ConnectWhatsAppDialog.d.ts.map +1 -1
  56. package/channel/ConnectWhatsAppDialog.js +9 -4
  57. package/channel/ConnectWhatsAppDialog.js.map +1 -1
  58. package/channel/useChannelSessions.d.ts.map +1 -1
  59. package/channel/useChannelSessions.js.map +1 -1
  60. package/channel-app/ChannelAppDetailPanel.d.ts.map +1 -1
  61. package/channel-app/ChannelAppDetailPanel.js +8 -5
  62. package/channel-app/ChannelAppDetailPanel.js.map +1 -1
  63. package/channel-app/CreateChannelAppForm.d.ts.map +1 -1
  64. package/channel-app/CreateChannelAppForm.js +12 -7
  65. package/channel-app/CreateChannelAppForm.js.map +1 -1
  66. package/channel-app/internal.d.ts +0 -1
  67. package/channel-app/internal.d.ts.map +1 -1
  68. package/channel-app/internal.js +5 -10
  69. package/channel-app/internal.js.map +1 -1
  70. package/composer/ComposerToolbar.js +2 -1
  71. package/composer/ComposerToolbar.js.map +1 -1
  72. package/composer/SessionComposer.d.ts +1 -1
  73. package/composer/SessionComposer.d.ts.map +1 -1
  74. package/composer/SessionComposer.js +120 -13
  75. package/composer/SessionComposer.js.map +1 -1
  76. package/composer/icons.d.ts +0 -1
  77. package/composer/icons.d.ts.map +1 -1
  78. package/composer/icons.js +0 -3
  79. package/composer/icons.js.map +1 -1
  80. package/conversation/ConversationComposer.js +1 -1
  81. package/conversation/ConversationComposer.js.map +1 -1
  82. package/conversation/ConversationListPane.d.ts.map +1 -1
  83. package/conversation/ConversationListPane.js +3 -2
  84. package/conversation/ConversationListPane.js.map +1 -1
  85. package/cursor-accounts/MemberCoverageTable.js +3 -14
  86. package/cursor-accounts/MemberCoverageTable.js.map +1 -1
  87. package/dashboard/DashboardFailedRuns.d.ts.map +1 -1
  88. package/dashboard/DashboardFailedRuns.js +2 -14
  89. package/dashboard/DashboardFailedRuns.js.map +1 -1
  90. package/environment/CreateEnvironmentForm.d.ts.map +1 -1
  91. package/environment/CreateEnvironmentForm.js +4 -8
  92. package/environment/CreateEnvironmentForm.js.map +1 -1
  93. package/environment/EnvVarForm.d.ts.map +1 -1
  94. package/environment/EnvVarForm.js +2 -4
  95. package/environment/EnvVarForm.js.map +1 -1
  96. package/environment/EnvironmentVariableEditor.d.ts.map +1 -1
  97. package/environment/EnvironmentVariableEditor.js +5 -7
  98. package/environment/EnvironmentVariableEditor.js.map +1 -1
  99. package/execution/ArtifactApplyButton.d.ts.map +1 -1
  100. package/execution/ArtifactApplyButton.js +2 -4
  101. package/execution/ArtifactApplyButton.js.map +1 -1
  102. package/execution/ExecutionErrorNotice.d.ts +36 -0
  103. package/execution/ExecutionErrorNotice.d.ts.map +1 -0
  104. package/execution/ExecutionErrorNotice.js +39 -0
  105. package/execution/ExecutionErrorNotice.js.map +1 -0
  106. package/execution/FilePathLink.d.ts.map +1 -1
  107. package/execution/FilePathLink.js +5 -8
  108. package/execution/FilePathLink.js.map +1 -1
  109. package/execution/FileReviewCard.d.ts.map +1 -1
  110. package/execution/FileReviewCard.js +1 -6
  111. package/execution/FileReviewCard.js.map +1 -1
  112. package/execution/FollowUpInput.d.ts.map +1 -1
  113. package/execution/FollowUpInput.js +1 -3
  114. package/execution/FollowUpInput.js.map +1 -1
  115. package/execution/LivenessStatusLine.d.ts +40 -0
  116. package/execution/LivenessStatusLine.d.ts.map +1 -0
  117. package/execution/LivenessStatusLine.js +34 -0
  118. package/execution/LivenessStatusLine.js.map +1 -0
  119. package/execution/MessageEntry.d.ts.map +1 -1
  120. package/execution/MessageEntry.js +31 -3
  121. package/execution/MessageEntry.js.map +1 -1
  122. package/execution/MessageThread.d.ts +25 -0
  123. package/execution/MessageThread.d.ts.map +1 -1
  124. package/execution/MessageThread.js +51 -36
  125. package/execution/MessageThread.js.map +1 -1
  126. package/execution/SetupProgress.d.ts.map +1 -1
  127. package/execution/SetupProgress.js +1 -1
  128. package/execution/SetupProgress.js.map +1 -1
  129. package/execution/SubAgentSection.d.ts.map +1 -1
  130. package/execution/SubAgentSection.js +9 -7
  131. package/execution/SubAgentSection.js.map +1 -1
  132. package/execution/TerminalSession.d.ts +30 -0
  133. package/execution/TerminalSession.d.ts.map +1 -1
  134. package/execution/TerminalSession.js +37 -1
  135. package/execution/TerminalSession.js.map +1 -1
  136. package/execution/ToolCallDetail.d.ts +9 -0
  137. package/execution/ToolCallDetail.d.ts.map +1 -1
  138. package/execution/ToolCallDetail.js +16 -0
  139. package/execution/ToolCallDetail.js.map +1 -1
  140. package/execution/ToolCallItem.d.ts +20 -6
  141. package/execution/ToolCallItem.d.ts.map +1 -1
  142. package/execution/ToolCallItem.js +102 -29
  143. package/execution/ToolCallItem.js.map +1 -1
  144. package/execution/ToolRunGroup.d.ts.map +1 -1
  145. package/execution/ToolRunGroup.js +11 -11
  146. package/execution/ToolRunGroup.js.map +1 -1
  147. package/execution/WriteBackCard.d.ts.map +1 -1
  148. package/execution/WriteBackCard.js +5 -20
  149. package/execution/WriteBackCard.js.map +1 -1
  150. package/execution/index.d.ts +6 -2
  151. package/execution/index.d.ts.map +1 -1
  152. package/execution/index.js +3 -1
  153. package/execution/index.js.map +1 -1
  154. package/execution/tool-categories.d.ts +42 -7
  155. package/execution/tool-categories.d.ts.map +1 -1
  156. package/execution/tool-categories.js +38 -4
  157. package/execution/tool-categories.js.map +1 -1
  158. package/execution/tool-presenter.d.ts +17 -1
  159. package/execution/tool-presenter.d.ts.map +1 -1
  160. package/execution/tool-presenter.js +4 -1
  161. package/execution/tool-presenter.js.map +1 -1
  162. package/execution/useArtifactInspection.d.ts.map +1 -1
  163. package/execution/useArtifactInspection.js +4 -7
  164. package/execution/useArtifactInspection.js.map +1 -1
  165. package/execution/useCreateAgentExecution.d.ts +3 -2
  166. package/execution/useCreateAgentExecution.d.ts.map +1 -1
  167. package/execution/useCreateAgentExecution.js.map +1 -1
  168. package/iam-policy/GrantAccessForm.d.ts.map +1 -1
  169. package/iam-policy/GrantAccessForm.js +2 -4
  170. package/iam-policy/GrantAccessForm.js.map +1 -1
  171. package/iam-policy/OrgMembersPanel.d.ts.map +1 -1
  172. package/iam-policy/OrgMembersPanel.js +3 -5
  173. package/iam-policy/OrgMembersPanel.js.map +1 -1
  174. package/iam-policy/RoleSelector.d.ts.map +1 -1
  175. package/iam-policy/RoleSelector.js +7 -1
  176. package/iam-policy/RoleSelector.js.map +1 -1
  177. package/identity-provider/CreateIdentityProviderForm.d.ts.map +1 -1
  178. package/identity-provider/CreateIdentityProviderForm.js +6 -9
  179. package/identity-provider/CreateIdentityProviderForm.js.map +1 -1
  180. package/identity-provider/IdentityProviderDetailPanel.d.ts.map +1 -1
  181. package/identity-provider/IdentityProviderDetailPanel.js +17 -26
  182. package/identity-provider/IdentityProviderDetailPanel.js.map +1 -1
  183. package/identity-provider/IdentityProviderListPanel.d.ts.map +1 -1
  184. package/identity-provider/IdentityProviderListPanel.js +2 -4
  185. package/identity-provider/IdentityProviderListPanel.js.map +1 -1
  186. package/identity-provider/IdentityProviderWizard.d.ts.map +1 -1
  187. package/identity-provider/IdentityProviderWizard.js +8 -7
  188. package/identity-provider/IdentityProviderWizard.js.map +1 -1
  189. package/identity-provider/SsoLoginPrompt.js +5 -6
  190. package/identity-provider/SsoLoginPrompt.js.map +1 -1
  191. package/index.d.ts +9 -8
  192. package/index.d.ts.map +1 -1
  193. package/index.js +4 -4
  194. package/index.js.map +1 -1
  195. package/internal/DecisionButton.d.ts.map +1 -1
  196. package/internal/DecisionButton.js +1 -6
  197. package/internal/DecisionButton.js.map +1 -1
  198. package/internal/SpinnerIcon.d.ts +22 -0
  199. package/internal/SpinnerIcon.d.ts.map +1 -0
  200. package/internal/SpinnerIcon.js +23 -0
  201. package/internal/SpinnerIcon.js.map +1 -0
  202. package/internal/isUnimplemented.d.ts +17 -0
  203. package/internal/isUnimplemented.d.ts.map +1 -0
  204. package/internal/isUnimplemented.js +26 -0
  205. package/internal/isUnimplemented.js.map +1 -0
  206. package/internal/select-element-text.d.ts +11 -0
  207. package/internal/select-element-text.d.ts.map +1 -0
  208. package/internal/select-element-text.js +19 -0
  209. package/internal/select-element-text.js.map +1 -0
  210. package/internal/thread-card/ThreadCardShell.d.ts +27 -10
  211. package/internal/thread-card/ThreadCardShell.d.ts.map +1 -1
  212. package/internal/thread-card/ThreadCardShell.js +11 -5
  213. package/internal/thread-card/ThreadCardShell.js.map +1 -1
  214. package/internal/thread-card/glyphs.d.ts +11 -2
  215. package/internal/thread-card/glyphs.d.ts.map +1 -1
  216. package/internal/thread-card/glyphs.js +9 -3
  217. package/internal/thread-card/glyphs.js.map +1 -1
  218. package/internal/thread-card/index.d.ts +1 -1
  219. package/internal/thread-card/index.d.ts.map +1 -1
  220. package/internal/thread-card/index.js.map +1 -1
  221. package/internal/useCopyFeedback.d.ts +28 -0
  222. package/internal/useCopyFeedback.d.ts.map +1 -0
  223. package/internal/useCopyFeedback.js +40 -0
  224. package/internal/useCopyFeedback.js.map +1 -0
  225. package/invitation/InvitationCreatedAlert.d.ts.map +1 -1
  226. package/invitation/InvitationCreatedAlert.js +12 -19
  227. package/invitation/InvitationCreatedAlert.js.map +1 -1
  228. package/invitation/InvitationManager.d.ts.map +1 -1
  229. package/invitation/InvitationManager.js +14 -21
  230. package/invitation/InvitationManager.js.map +1 -1
  231. package/invitation/InvitationRedemption.d.ts.map +1 -1
  232. package/invitation/InvitationRedemption.js +2 -4
  233. package/invitation/InvitationRedemption.js.map +1 -1
  234. package/library/useExportResource.d.ts.map +1 -1
  235. package/library/useExportResource.js +16 -27
  236. package/library/useExportResource.js.map +1 -1
  237. package/manifest/ApplyManifestDialog.js +1 -1
  238. package/manifest/EditResourceYamlDialog.js +1 -1
  239. package/mcp-server/DefinitionDriftNotice.d.ts +42 -0
  240. package/mcp-server/DefinitionDriftNotice.d.ts.map +1 -0
  241. package/mcp-server/DefinitionDriftNotice.js +52 -0
  242. package/mcp-server/DefinitionDriftNotice.js.map +1 -0
  243. package/mcp-server/McpServerConnectDialog.js +8 -4
  244. package/mcp-server/McpServerConnectDialog.js.map +1 -1
  245. package/mcp-server/McpServerDetailView.d.ts.map +1 -1
  246. package/mcp-server/McpServerDetailView.js +47 -14
  247. package/mcp-server/McpServerDetailView.js.map +1 -1
  248. package/mcp-server/OAuthAppForm.d.ts.map +1 -1
  249. package/mcp-server/OAuthAppForm.js +2 -4
  250. package/mcp-server/OAuthAppForm.js.map +1 -1
  251. package/mcp-server/internal/definitionDrift.d.ts +39 -0
  252. package/mcp-server/internal/definitionDrift.d.ts.map +1 -0
  253. package/mcp-server/internal/definitionDrift.js +122 -0
  254. package/mcp-server/internal/definitionDrift.js.map +1 -0
  255. package/mcp-server/internal/mcpServerToInput.d.ts.map +1 -1
  256. package/mcp-server/internal/mcpServerToInput.js +3 -0
  257. package/mcp-server/internal/mcpServerToInput.js.map +1 -1
  258. package/mcp-server/steps/EnvironmentAuthStep.d.ts.map +1 -1
  259. package/mcp-server/steps/EnvironmentAuthStep.js +8 -4
  260. package/mcp-server/steps/EnvironmentAuthStep.js.map +1 -1
  261. package/mcp-server/steps/IdentityTransportStep.d.ts.map +1 -1
  262. package/mcp-server/steps/IdentityTransportStep.js +5 -4
  263. package/mcp-server/steps/IdentityTransportStep.js.map +1 -1
  264. package/mcp-server/useMcpServerConnect.d.ts +1 -1
  265. package/mcp-server/useMcpServerCredentials.d.ts +38 -10
  266. package/mcp-server/useMcpServerCredentials.d.ts.map +1 -1
  267. package/mcp-server/useMcpServerCredentials.js +50 -7
  268. package/mcp-server/useMcpServerCredentials.js.map +1 -1
  269. package/mcp-server/useMcpServerDefinitionDrift.d.ts +44 -0
  270. package/mcp-server/useMcpServerDefinitionDrift.d.ts.map +1 -0
  271. package/mcp-server/useMcpServerDefinitionDrift.js +61 -0
  272. package/mcp-server/useMcpServerDefinitionDrift.js.map +1 -0
  273. package/mcp-server/useOrgOAuthApp.d.ts +22 -0
  274. package/mcp-server/useOrgOAuthApp.d.ts.map +1 -1
  275. package/mcp-server/useOrgOAuthApp.js +39 -7
  276. package/mcp-server/useOrgOAuthApp.js.map +1 -1
  277. package/models/ModelRegistryContext.d.ts +7 -1
  278. package/models/ModelRegistryContext.d.ts.map +1 -1
  279. package/models/ModelRegistryContext.js.map +1 -1
  280. package/models/ModelSelector.js +9 -1
  281. package/models/ModelSelector.js.map +1 -1
  282. package/models/index.d.ts +2 -2
  283. package/models/index.d.ts.map +1 -1
  284. package/models/index.js +1 -1
  285. package/models/index.js.map +1 -1
  286. package/models/registry.d.ts +88 -6
  287. package/models/registry.d.ts.map +1 -1
  288. package/models/registry.js +133 -27
  289. package/models/registry.js.map +1 -1
  290. package/models/useModelRegistry.d.ts +7 -1
  291. package/models/useModelRegistry.d.ts.map +1 -1
  292. package/models/useModelRegistry.js +3 -2
  293. package/models/useModelRegistry.js.map +1 -1
  294. package/oauth-app/CreateOAuthAppForm.d.ts.map +1 -1
  295. package/oauth-app/CreateOAuthAppForm.js +4 -5
  296. package/oauth-app/CreateOAuthAppForm.js.map +1 -1
  297. package/oauth-app/OAuthAppDetailPanel.d.ts.map +1 -1
  298. package/oauth-app/OAuthAppDetailPanel.js +5 -6
  299. package/oauth-app/OAuthAppDetailPanel.js.map +1 -1
  300. package/organization/CreateOrganizationForm.d.ts.map +1 -1
  301. package/organization/CreateOrganizationForm.js +5 -9
  302. package/organization/CreateOrganizationForm.js.map +1 -1
  303. package/organization/OrgProfilePanel.d.ts.map +1 -1
  304. package/organization/OrgProfilePanel.js +7 -16
  305. package/organization/OrgProfilePanel.js.map +1 -1
  306. package/package.json +4 -4
  307. package/platform-client/CreatePlatformClientForm.d.ts.map +1 -1
  308. package/platform-client/CreatePlatformClientForm.js +5 -6
  309. package/platform-client/CreatePlatformClientForm.js.map +1 -1
  310. package/platform-client/PlatformClientDetailPanel.d.ts.map +1 -1
  311. package/platform-client/PlatformClientDetailPanel.js +6 -7
  312. package/platform-client/PlatformClientDetailPanel.js.map +1 -1
  313. package/platform-client/PlatformClientListPanel.d.ts.map +1 -1
  314. package/platform-client/PlatformClientListPanel.js +2 -4
  315. package/platform-client/PlatformClientListPanel.js.map +1 -1
  316. package/platform-client/PlatformClientSecretAlert.d.ts.map +1 -1
  317. package/platform-client/PlatformClientSecretAlert.js +18 -25
  318. package/platform-client/PlatformClientSecretAlert.js.map +1 -1
  319. package/provider.d.ts +34 -1
  320. package/provider.d.ts.map +1 -1
  321. package/provider.js +14 -7
  322. package/provider.js.map +1 -1
  323. package/resource-creation/WizardNav.d.ts.map +1 -1
  324. package/resource-creation/WizardNav.js +2 -4
  325. package/resource-creation/WizardNav.js.map +1 -1
  326. package/resource-detail/ConfirmDialog.js +1 -1
  327. package/resource-detail/useCopyResource.d.ts +4 -3
  328. package/resource-detail/useCopyResource.d.ts.map +1 -1
  329. package/resource-detail/useCopyResource.js +10 -19
  330. package/resource-detail/useCopyResource.js.map +1 -1
  331. package/schedule/ScheduleDetailView.d.ts.map +1 -1
  332. package/schedule/ScheduleDetailView.js +2 -4
  333. package/schedule/ScheduleDetailView.js.map +1 -1
  334. package/schedule/ScheduleForm.d.ts.map +1 -1
  335. package/schedule/ScheduleForm.js +6 -7
  336. package/schedule/ScheduleForm.js.map +1 -1
  337. package/session/NewSessionViewer.d.ts +52 -2
  338. package/session/NewSessionViewer.d.ts.map +1 -1
  339. package/session/NewSessionViewer.js +21 -6
  340. package/session/NewSessionViewer.js.map +1 -1
  341. package/session/SessionViewer.d.ts +63 -2
  342. package/session/SessionViewer.d.ts.map +1 -1
  343. package/session/SessionViewer.js +43 -17
  344. package/session/SessionViewer.js.map +1 -1
  345. package/session/audience.d.ts +17 -0
  346. package/session/audience.d.ts.map +1 -1
  347. package/session/index.d.ts +2 -1
  348. package/session/index.d.ts.map +1 -1
  349. package/session/index.js.map +1 -1
  350. package/session/run-config.d.ts +50 -0
  351. package/session/run-config.d.ts.map +1 -0
  352. package/session/run-config.js +15 -0
  353. package/session/run-config.js.map +1 -0
  354. package/session/useNewSessionFlow.d.ts +11 -0
  355. package/session/useNewSessionFlow.d.ts.map +1 -1
  356. package/session/useNewSessionFlow.js +29 -2
  357. package/session/useNewSessionFlow.js.map +1 -1
  358. package/session/useSessionConversation.d.ts +11 -9
  359. package/session/useSessionConversation.d.ts.map +1 -1
  360. package/session/useSessionConversation.js +2 -0
  361. package/session/useSessionConversation.js.map +1 -1
  362. package/session/useSessionPageFlow.d.ts +18 -4
  363. package/session/useSessionPageFlow.d.ts.map +1 -1
  364. package/session/useSessionPageFlow.js +33 -6
  365. package/session/useSessionPageFlow.js.map +1 -1
  366. package/session/useSessionPanel.d.ts +37 -2
  367. package/session/useSessionPanel.d.ts.map +1 -1
  368. package/session/useSessionPanel.js +44 -10
  369. package/session/useSessionPanel.js.map +1 -1
  370. package/settings/ApiKeysSection.d.ts.map +1 -1
  371. package/settings/ApiKeysSection.js +3 -2
  372. package/settings/ApiKeysSection.js.map +1 -1
  373. package/settings/ChannelAppsSection.d.ts.map +1 -1
  374. package/settings/ChannelAppsSection.js +3 -2
  375. package/settings/ChannelAppsSection.js.map +1 -1
  376. package/settings/EnvironmentsSection.js +5 -3
  377. package/settings/EnvironmentsSection.js.map +1 -1
  378. package/settings/IdentityProvidersSection.d.ts.map +1 -1
  379. package/settings/IdentityProvidersSection.js +3 -2
  380. package/settings/IdentityProvidersSection.js.map +1 -1
  381. package/settings/InvitationsSection.d.ts.map +1 -1
  382. package/settings/InvitationsSection.js +3 -1
  383. package/settings/InvitationsSection.js.map +1 -1
  384. package/settings/MembersSection.d.ts.map +1 -1
  385. package/settings/MembersSection.js +3 -1
  386. package/settings/MembersSection.js.map +1 -1
  387. package/settings/OAuthAppsSection.d.ts.map +1 -1
  388. package/settings/OAuthAppsSection.js +3 -2
  389. package/settings/OAuthAppsSection.js.map +1 -1
  390. package/settings/OrgProfileSection.d.ts.map +1 -1
  391. package/settings/OrgProfileSection.js +3 -2
  392. package/settings/OrgProfileSection.js.map +1 -1
  393. package/settings/PlatformClientsSection.d.ts.map +1 -1
  394. package/settings/PlatformClientsSection.js +3 -2
  395. package/settings/PlatformClientsSection.js.map +1 -1
  396. package/settings/UsageSection.d.ts.map +1 -1
  397. package/settings/UsageSection.js +3 -1
  398. package/settings/UsageSection.js.map +1 -1
  399. package/sharing/ShareAgentDialog.d.ts.map +1 -1
  400. package/sharing/ShareAgentDialog.js +18 -7
  401. package/sharing/ShareAgentDialog.js.map +1 -1
  402. package/sidebar/chrome.d.ts +3 -4
  403. package/sidebar/chrome.d.ts.map +1 -1
  404. package/sidebar/chrome.js +5 -4
  405. package/sidebar/chrome.js.map +1 -1
  406. package/skill/SkillDiffDialog.js +1 -1
  407. package/skill/useSkillVersions.d.ts.map +1 -1
  408. package/skill/useSkillVersions.js +1 -9
  409. package/skill/useSkillVersions.js.map +1 -1
  410. package/src/access/ManageAccessDialog.tsx +10 -4
  411. package/src/activity/format-relative-time.ts +11 -9
  412. package/src/agent/steps/CapabilitiesStep.tsx +6 -3
  413. package/src/agent/steps/IdentityStep.tsx +19 -12
  414. package/src/agent-instance/CreateAgentInstanceDialog.tsx +17 -8
  415. package/src/api-key/ApiKeyCreatedAlert.tsx +10 -19
  416. package/src/api-key/ApiKeyListPanel.tsx +3 -39
  417. package/src/api-key/CreateApiKeyForm.tsx +12 -26
  418. package/src/approval-defaults-context.ts +56 -0
  419. package/src/attachment/__tests__/vision-preflight.test.ts +311 -0
  420. package/src/attachment/index.ts +12 -0
  421. package/src/attachment/vision-preflight.ts +236 -0
  422. package/src/billing/AutoRechargeCard.tsx +5 -4
  423. package/src/billing/BillingSection.tsx +4 -3
  424. package/src/channel/ChannelConversationsDialog.tsx +8 -4
  425. package/src/channel/ChannelCredentialsDialog.tsx +14 -4
  426. package/src/channel/ChannelTemplatesDialog.tsx +8 -4
  427. package/src/channel/ConnectSlackDialog.tsx +14 -4
  428. package/src/channel/ConnectWhatsAppDialog.tsx +14 -4
  429. package/src/channel/useChannelSessions.ts +3 -0
  430. package/src/channel-app/ChannelAppDetailPanel.tsx +15 -12
  431. package/src/channel-app/CreateChannelAppForm.tsx +17 -12
  432. package/src/channel-app/internal.tsx +5 -25
  433. package/src/composer/ComposerToolbar.tsx +1 -1
  434. package/src/composer/SessionComposer.tsx +160 -13
  435. package/src/composer/__tests__/SessionComposer-modelCoherence.test.tsx +220 -0
  436. package/src/composer/__tests__/SessionComposer-visionPreflight.test.tsx +222 -0
  437. package/src/composer/icons.tsx +0 -18
  438. package/src/conversation/ConversationComposer.tsx +1 -1
  439. package/src/conversation/ConversationListPane.tsx +4 -3
  440. package/src/cursor-accounts/MemberCoverageTable.tsx +3 -14
  441. package/src/cursor-accounts/__tests__/CursorAccountsConsole.test.tsx +2 -10
  442. package/src/dashboard/DashboardFailedRuns.tsx +2 -12
  443. package/src/environment/CreateEnvironmentForm.tsx +8 -27
  444. package/src/environment/EnvVarForm.tsx +2 -18
  445. package/src/environment/EnvironmentVariableEditor.tsx +5 -21
  446. package/src/execution/ArtifactApplyButton.tsx +2 -17
  447. package/src/execution/ExecutionErrorNotice.tsx +99 -0
  448. package/src/execution/FilePathLink.tsx +5 -9
  449. package/src/execution/FileReviewCard.tsx +1 -20
  450. package/src/execution/FollowUpInput.tsx +1 -16
  451. package/src/execution/LivenessStatusLine.tsx +59 -0
  452. package/src/execution/MessageEntry.tsx +136 -25
  453. package/src/execution/MessageThread.tsx +84 -83
  454. package/src/execution/SetupProgress.tsx +5 -1
  455. package/src/execution/SubAgentSection.tsx +9 -20
  456. package/src/execution/TerminalSession.tsx +97 -10
  457. package/src/execution/ToolCallDetail.tsx +19 -0
  458. package/src/execution/ToolCallItem.tsx +157 -37
  459. package/src/execution/ToolRunGroup.tsx +30 -32
  460. package/src/execution/WriteBackCard.tsx +5 -24
  461. package/src/execution/__tests__/MessageEntry-copy.test.tsx +125 -0
  462. package/src/execution/__tests__/MessageThread.test.tsx +97 -0
  463. package/src/execution/__tests__/TerminalSession.test.tsx +71 -1
  464. package/src/execution/__tests__/ToolCallDetail.test.tsx +33 -1
  465. package/src/execution/__tests__/ToolCallItem.test.tsx +299 -11
  466. package/src/execution/__tests__/ToolRunGroup.test.tsx +41 -9
  467. package/src/execution/__tests__/message-thread-slots.test.tsx +92 -0
  468. package/src/execution/__tests__/tool-presenter.test.tsx +41 -4
  469. package/src/execution/index.ts +8 -2
  470. package/src/execution/tool-categories.ts +72 -8
  471. package/src/execution/tool-presenter.ts +22 -1
  472. package/src/execution/useArtifactInspection.ts +4 -8
  473. package/src/execution/useCreateAgentExecution.ts +3 -2
  474. package/src/iam-policy/GrantAccessForm.tsx +2 -18
  475. package/src/iam-policy/OrgMembersPanel.tsx +3 -19
  476. package/src/iam-policy/RoleSelector.tsx +8 -1
  477. package/src/identity-provider/CreateIdentityProviderForm.tsx +13 -31
  478. package/src/identity-provider/IdentityProviderDetailPanel.tsx +24 -49
  479. package/src/identity-provider/IdentityProviderListPanel.tsx +2 -18
  480. package/src/identity-provider/IdentityProviderWizard.tsx +15 -32
  481. package/src/identity-provider/SsoLoginPrompt.tsx +6 -21
  482. package/src/index.ts +23 -1
  483. package/src/internal/DecisionButton.tsx +1 -20
  484. package/src/internal/SpinnerIcon.tsx +42 -0
  485. package/src/internal/__tests__/ThreadCardShell.test.tsx +43 -7
  486. package/src/internal/__tests__/useCopyFeedback.test.ts +92 -0
  487. package/src/internal/isUnimplemented.ts +26 -0
  488. package/src/internal/select-element-text.ts +17 -0
  489. package/src/internal/thread-card/ThreadCardShell.tsx +53 -21
  490. package/src/internal/thread-card/glyphs.tsx +24 -3
  491. package/src/internal/thread-card/index.ts +1 -0
  492. package/src/internal/useCopyFeedback.ts +61 -0
  493. package/src/invitation/InvitationCreatedAlert.tsx +10 -18
  494. package/src/invitation/InvitationManager.tsx +23 -34
  495. package/src/invitation/InvitationRedemption.tsx +2 -18
  496. package/src/library/useExportResource.ts +15 -29
  497. package/src/manifest/ApplyManifestDialog.tsx +1 -1
  498. package/src/manifest/EditResourceYamlDialog.tsx +1 -1
  499. package/src/mcp-server/DefinitionDriftNotice.tsx +120 -0
  500. package/src/mcp-server/McpServerConnectDialog.tsx +30 -12
  501. package/src/mcp-server/McpServerDetailView.tsx +58 -26
  502. package/src/mcp-server/OAuthAppForm.tsx +2 -18
  503. package/src/mcp-server/__tests__/DefinitionDriftNotice.test.tsx +57 -0
  504. package/src/mcp-server/__tests__/VendorApprovalBlocked.surfaces.test.tsx +103 -5
  505. package/src/mcp-server/__tests__/byoaEditionDegradation.test.tsx +323 -0
  506. package/src/mcp-server/__tests__/definitionDrift.test.ts +245 -0
  507. package/src/mcp-server/__tests__/mcpServerToInput.test.ts +201 -0
  508. package/src/mcp-server/__tests__/useMcpServerCredentials.test.tsx +306 -0
  509. package/src/mcp-server/__tests__/useMcpServerDefinitionDrift.test.tsx +173 -0
  510. package/src/mcp-server/internal/definitionDrift.ts +158 -0
  511. package/src/mcp-server/internal/mcpServerToInput.ts +3 -0
  512. package/src/mcp-server/steps/EnvironmentAuthStep.tsx +19 -19
  513. package/src/mcp-server/steps/IdentityTransportStep.tsx +24 -23
  514. package/src/mcp-server/useMcpServerConnect.ts +1 -1
  515. package/src/mcp-server/useMcpServerCredentials.ts +87 -19
  516. package/src/mcp-server/useMcpServerDefinitionDrift.ts +95 -0
  517. package/src/mcp-server/useOrgOAuthApp.ts +54 -8
  518. package/src/models/ModelRegistryContext.ts +7 -1
  519. package/src/models/ModelSelector.tsx +37 -0
  520. package/src/models/__tests__/ModelSelector-visionIndicator.test.tsx +129 -0
  521. package/src/models/__tests__/resolveDefaultModel.test.ts +115 -0
  522. package/src/models/__tests__/useModelRegistry.test.tsx +99 -4
  523. package/src/models/index.ts +2 -2
  524. package/src/models/registry.ts +196 -29
  525. package/src/models/useModelRegistry.ts +10 -2
  526. package/src/oauth-app/CreateOAuthAppForm.tsx +16 -31
  527. package/src/oauth-app/OAuthAppDetailPanel.tsx +16 -31
  528. package/src/organization/CreateOrganizationForm.tsx +10 -29
  529. package/src/organization/OrgProfilePanel.tsx +13 -44
  530. package/src/platform-client/CreatePlatformClientForm.tsx +9 -29
  531. package/src/platform-client/PlatformClientDetailPanel.tsx +10 -30
  532. package/src/platform-client/PlatformClientListPanel.tsx +2 -18
  533. package/src/platform-client/PlatformClientSecretAlert.tsx +26 -55
  534. package/src/provider.tsx +76 -33
  535. package/src/resource-creation/WizardNav.tsx +2 -18
  536. package/src/resource-detail/ConfirmDialog.tsx +1 -1
  537. package/src/resource-detail/useCopyResource.ts +17 -23
  538. package/src/schedule/ScheduleDetailView.tsx +2 -18
  539. package/src/schedule/ScheduleForm.tsx +19 -34
  540. package/src/session/NewSessionViewer.tsx +85 -7
  541. package/src/session/SessionViewer.tsx +120 -17
  542. package/src/session/__tests__/audienceWiring.test.tsx +76 -0
  543. package/src/session/__tests__/panelNegotiation.test.tsx +302 -0
  544. package/src/session/__tests__/useNewSessionFlow.test.tsx +134 -5
  545. package/src/session/__tests__/useSessionPageFlow.autoApprove.test.tsx +74 -0
  546. package/src/session/__tests__/useSessionPageFlow.runConfig.test.tsx +157 -0
  547. package/src/session/__tests__/useSessionPanel.test.ts +114 -0
  548. package/src/session/audience.ts +18 -0
  549. package/src/session/index.ts +2 -1
  550. package/src/session/run-config.ts +59 -0
  551. package/src/session/useNewSessionFlow.ts +39 -2
  552. package/src/session/useSessionConversation.ts +14 -10
  553. package/src/session/useSessionPageFlow.ts +51 -10
  554. package/src/session/useSessionPanel.ts +91 -10
  555. package/src/settings/ApiKeysSection.tsx +4 -3
  556. package/src/settings/ChannelAppsSection.tsx +4 -3
  557. package/src/settings/EnvironmentsSection.tsx +8 -5
  558. package/src/settings/IdentityProvidersSection.tsx +4 -3
  559. package/src/settings/InvitationsSection.tsx +4 -2
  560. package/src/settings/MembersSection.tsx +4 -2
  561. package/src/settings/OAuthAppsSection.tsx +4 -3
  562. package/src/settings/OrgProfileSection.tsx +4 -3
  563. package/src/settings/PlatformClientsSection.tsx +4 -3
  564. package/src/settings/UsageSection.tsx +4 -2
  565. package/src/sharing/ShareAgentDialog.tsx +28 -10
  566. package/src/sidebar/__tests__/WorkspaceSidebar.test.tsx +4 -1
  567. package/src/sidebar/chrome.tsx +6 -6
  568. package/src/skill/SkillDiffDialog.tsx +1 -1
  569. package/src/skill/useSkillVersions.ts +1 -11
  570. package/src/styles.css +43 -0
  571. package/src/version-history/VersionTimelineEntry.tsx +1 -21
  572. package/src/workflow/FailedRunsWidget.tsx +2 -9
  573. package/src/workflow/PendingApprovalsWidget.tsx +2 -9
  574. package/src/workflow/ViewYamlDialog.tsx +7 -22
  575. package/src/workflow/WorkflowArchitectDialog.tsx +8 -27
  576. package/src/workflow/WorkflowArtifactDocument.tsx +5 -9
  577. package/src/workflow/WorkflowCanvasEditor.tsx +39 -7
  578. package/src/workflow/WorkflowCanvasInner.tsx +14 -1
  579. package/src/workflow/WorkflowDiffGraph.tsx +7 -1
  580. package/src/workflow/WorkflowExecutionGraph.tsx +26 -1
  581. package/src/workflow/WorkflowExecutionViewer.tsx +115 -24
  582. package/src/workflow/WorkflowExplainDialog.tsx +8 -24
  583. package/src/workflow/WorkflowNode.tsx +5 -2
  584. package/src/workflow/WorkflowOverviewGraph.tsx +9 -1
  585. package/src/workflow/WorkflowRefinePanel.tsx +2 -18
  586. package/src/workflow/WorkflowRepairCard.tsx +2 -18
  587. package/src/workflow/WorkflowRunDialog.tsx +31 -24
  588. package/src/workflow/WorkflowTaskApprovalSummary.tsx +2 -17
  589. package/src/workflow/WorkflowVersionBadge.tsx +4 -13
  590. package/src/workflow/WorkflowVersionTimeline.tsx +1 -25
  591. package/src/workflow/__tests__/WorkflowExecutionViewer.reconciliation.test.tsx +48 -1
  592. package/src/workflow/__tests__/WorkflowNode.test.tsx +93 -0
  593. package/src/workflow/__tests__/WorkflowRunDialog.test.tsx +127 -0
  594. package/src/workflow/__tests__/graph-history.test.ts +103 -0
  595. package/src/workflow/__tests__/overview-graph.test.ts +17 -0
  596. package/src/workflow/__tests__/panelNegotiation.test.tsx +230 -0
  597. package/src/workflow/__tests__/useCanvasKeyboardShortcuts.undo.test.ts +115 -0
  598. package/src/workflow/__tests__/useWorkflowCanvas.dirty.test.tsx +178 -0
  599. package/src/workflow/__tests__/useWorkflowCanvas.drag.test.tsx +224 -0
  600. package/src/workflow/__tests__/useWorkflowCanvas.undo.test.tsx +133 -0
  601. package/src/workflow/__tests__/useWorkflowExecutionPanel.test.ts +100 -0
  602. package/src/workflow/execution-comparison/ExecutionComparisonPicker.tsx +7 -11
  603. package/src/workflow/execution-history/ExecutionHistoryTable.tsx +1 -25
  604. package/src/workflow/index.ts +1 -0
  605. package/src/workflow/instance/CreateWorkflowInstanceDialog.tsx +17 -8
  606. package/src/workflow/instance/WorkflowInstanceDetailPanel.tsx +2 -1
  607. package/src/workflow/instance/useDeleteWorkflowInstance.ts +9 -4
  608. package/src/workflow/layout/registry-dimensions.ts +2 -5
  609. package/src/workflow/node-shell/NodeShell.tsx +4 -0
  610. package/src/workflow/picker/BranchAddPopover.tsx +4 -3
  611. package/src/workflow/task-type-visual-registry.ts +5 -3
  612. package/src/workflow/templates/WorkflowTemplatePreview.tsx +1 -1
  613. package/src/workflow/useApprovalBoundary.ts +1 -1
  614. package/src/workflow/useCanvasKeyboardShortcuts.ts +33 -3
  615. package/src/workflow/useGraphHistory.ts +22 -41
  616. package/src/workflow/useWorkflowCanvas.ts +126 -21
  617. package/src/workflow/useWorkflowExecutionPanel.ts +95 -13
  618. package/src/workflow/useWorkflowSave.ts +2 -15
  619. package/src/workflow/workflow-graph-conversions.ts +25 -3
  620. package/styles.css +1 -1
  621. package/version-history/VersionTimelineEntry.d.ts.map +1 -1
  622. package/version-history/VersionTimelineEntry.js +1 -23
  623. package/version-history/VersionTimelineEntry.js.map +1 -1
  624. package/workflow/CanvasTransitionEdge.d.ts +1 -1
  625. package/workflow/FailedRunsWidget.d.ts.map +1 -1
  626. package/workflow/FailedRunsWidget.js +2 -11
  627. package/workflow/FailedRunsWidget.js.map +1 -1
  628. package/workflow/PendingApprovalsWidget.d.ts.map +1 -1
  629. package/workflow/PendingApprovalsWidget.js +2 -11
  630. package/workflow/PendingApprovalsWidget.js.map +1 -1
  631. package/workflow/ViewYamlDialog.d.ts.map +1 -1
  632. package/workflow/ViewYamlDialog.js +7 -23
  633. package/workflow/ViewYamlDialog.js.map +1 -1
  634. package/workflow/WorkflowArchitectDialog.d.ts.map +1 -1
  635. package/workflow/WorkflowArchitectDialog.js +7 -11
  636. package/workflow/WorkflowArchitectDialog.js.map +1 -1
  637. package/workflow/WorkflowArtifactDocument.d.ts.map +1 -1
  638. package/workflow/WorkflowArtifactDocument.js +5 -8
  639. package/workflow/WorkflowArtifactDocument.js.map +1 -1
  640. package/workflow/WorkflowCanvasEditor.d.ts.map +1 -1
  641. package/workflow/WorkflowCanvasEditor.js +31 -6
  642. package/workflow/WorkflowCanvasEditor.js.map +1 -1
  643. package/workflow/WorkflowCanvasInner.d.ts +4 -2
  644. package/workflow/WorkflowCanvasInner.d.ts.map +1 -1
  645. package/workflow/WorkflowCanvasInner.js +7 -3
  646. package/workflow/WorkflowCanvasInner.js.map +1 -1
  647. package/workflow/WorkflowDiffGraph.js +6 -2
  648. package/workflow/WorkflowDiffGraph.js.map +1 -1
  649. package/workflow/WorkflowExecutionGraph.d.ts.map +1 -1
  650. package/workflow/WorkflowExecutionGraph.js +27 -1
  651. package/workflow/WorkflowExecutionGraph.js.map +1 -1
  652. package/workflow/WorkflowExecutionViewer.d.ts +51 -0
  653. package/workflow/WorkflowExecutionViewer.d.ts.map +1 -1
  654. package/workflow/WorkflowExecutionViewer.js +49 -18
  655. package/workflow/WorkflowExecutionViewer.js.map +1 -1
  656. package/workflow/WorkflowExplainDialog.d.ts.map +1 -1
  657. package/workflow/WorkflowExplainDialog.js +6 -8
  658. package/workflow/WorkflowExplainDialog.js.map +1 -1
  659. package/workflow/WorkflowNode.d.ts.map +1 -1
  660. package/workflow/WorkflowNode.js +2 -2
  661. package/workflow/WorkflowNode.js.map +1 -1
  662. package/workflow/WorkflowOverviewGraph.js +8 -2
  663. package/workflow/WorkflowOverviewGraph.js.map +1 -1
  664. package/workflow/WorkflowRefinePanel.d.ts.map +1 -1
  665. package/workflow/WorkflowRefinePanel.js +2 -4
  666. package/workflow/WorkflowRefinePanel.js.map +1 -1
  667. package/workflow/WorkflowRepairCard.d.ts.map +1 -1
  668. package/workflow/WorkflowRepairCard.js +2 -4
  669. package/workflow/WorkflowRepairCard.js.map +1 -1
  670. package/workflow/WorkflowRunDialog.d.ts +11 -1
  671. package/workflow/WorkflowRunDialog.d.ts.map +1 -1
  672. package/workflow/WorkflowRunDialog.js +18 -9
  673. package/workflow/WorkflowRunDialog.js.map +1 -1
  674. package/workflow/WorkflowTaskApprovalSummary.d.ts.map +1 -1
  675. package/workflow/WorkflowTaskApprovalSummary.js +2 -4
  676. package/workflow/WorkflowTaskApprovalSummary.js.map +1 -1
  677. package/workflow/WorkflowVersionBadge.d.ts.map +1 -1
  678. package/workflow/WorkflowVersionBadge.js +4 -13
  679. package/workflow/WorkflowVersionBadge.js.map +1 -1
  680. package/workflow/WorkflowVersionTimeline.d.ts.map +1 -1
  681. package/workflow/WorkflowVersionTimeline.js +1 -26
  682. package/workflow/WorkflowVersionTimeline.js.map +1 -1
  683. package/workflow/execution-comparison/ExecutionComparisonPicker.d.ts.map +1 -1
  684. package/workflow/execution-comparison/ExecutionComparisonPicker.js +7 -15
  685. package/workflow/execution-comparison/ExecutionComparisonPicker.js.map +1 -1
  686. package/workflow/execution-history/ExecutionHistoryTable.d.ts.map +1 -1
  687. package/workflow/execution-history/ExecutionHistoryTable.js +1 -24
  688. package/workflow/execution-history/ExecutionHistoryTable.js.map +1 -1
  689. package/workflow/index.d.ts +1 -1
  690. package/workflow/index.d.ts.map +1 -1
  691. package/workflow/index.js.map +1 -1
  692. package/workflow/instance/CreateWorkflowInstanceDialog.d.ts.map +1 -1
  693. package/workflow/instance/CreateWorkflowInstanceDialog.js +10 -2
  694. package/workflow/instance/CreateWorkflowInstanceDialog.js.map +1 -1
  695. package/workflow/instance/WorkflowInstanceDetailPanel.d.ts.map +1 -1
  696. package/workflow/instance/WorkflowInstanceDetailPanel.js +1 -1
  697. package/workflow/instance/WorkflowInstanceDetailPanel.js.map +1 -1
  698. package/workflow/instance/useDeleteWorkflowInstance.d.ts +9 -4
  699. package/workflow/instance/useDeleteWorkflowInstance.d.ts.map +1 -1
  700. package/workflow/instance/useDeleteWorkflowInstance.js +4 -2
  701. package/workflow/instance/useDeleteWorkflowInstance.js.map +1 -1
  702. package/workflow/layout/registry-dimensions.d.ts.map +1 -1
  703. package/workflow/layout/registry-dimensions.js +2 -5
  704. package/workflow/layout/registry-dimensions.js.map +1 -1
  705. package/workflow/node-shell/NodeShell.js +1 -1
  706. package/workflow/node-shell/NodeShell.js.map +1 -1
  707. package/workflow/picker/BranchAddPopover.d.ts.map +1 -1
  708. package/workflow/picker/BranchAddPopover.js +3 -2
  709. package/workflow/picker/BranchAddPopover.js.map +1 -1
  710. package/workflow/task-type-visual-registry.d.ts.map +1 -1
  711. package/workflow/task-type-visual-registry.js +5 -3
  712. package/workflow/task-type-visual-registry.js.map +1 -1
  713. package/workflow/templates/WorkflowTemplatePreview.js +1 -1
  714. package/workflow/useApprovalBoundary.d.ts +1 -1
  715. package/workflow/useApprovalBoundary.js +1 -1
  716. package/workflow/useCanvasKeyboardShortcuts.d.ts +15 -4
  717. package/workflow/useCanvasKeyboardShortcuts.d.ts.map +1 -1
  718. package/workflow/useCanvasKeyboardShortcuts.js +25 -4
  719. package/workflow/useCanvasKeyboardShortcuts.js.map +1 -1
  720. package/workflow/useGraphHistory.d.ts +16 -9
  721. package/workflow/useGraphHistory.d.ts.map +1 -1
  722. package/workflow/useGraphHistory.js +19 -33
  723. package/workflow/useGraphHistory.js.map +1 -1
  724. package/workflow/useWorkflowCanvas.d.ts +6 -4
  725. package/workflow/useWorkflowCanvas.d.ts.map +1 -1
  726. package/workflow/useWorkflowCanvas.js +115 -23
  727. package/workflow/useWorkflowCanvas.js.map +1 -1
  728. package/workflow/useWorkflowExecutionPanel.d.ts +38 -2
  729. package/workflow/useWorkflowExecutionPanel.d.ts.map +1 -1
  730. package/workflow/useWorkflowExecutionPanel.js +46 -13
  731. package/workflow/useWorkflowExecutionPanel.js.map +1 -1
  732. package/workflow/useWorkflowSave.d.ts.map +1 -1
  733. package/workflow/useWorkflowSave.js +2 -15
  734. package/workflow/useWorkflowSave.js.map +1 -1
  735. package/workflow/workflow-graph-conversions.d.ts +19 -1
  736. package/workflow/workflow-graph-conversions.d.ts.map +1 -1
  737. package/workflow/workflow-graph-conversions.js +17 -3
  738. package/workflow/workflow-graph-conversions.js.map +1 -1
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
 
3
- import { useCallback, useMemo, useState, type FormEvent } from "react";
3
+ import { type FormEvent, useCallback, useId, useMemo, useState } from "react";
4
4
  import { cn } from "@stigmer/theme";
5
5
  import { getUserMessage } from "@stigmer/sdk";
6
6
  import type { ChannelApp } from "@stigmer/protos/ai/stigmer/agentic/channelapp/v1/api_pb";
@@ -17,7 +17,8 @@ import {
17
17
  WHATSAPP_CHANNEL_APP_WEBHOOK_FIELDS,
18
18
  whatsappChannelAppWebhookUrl,
19
19
  } from "./whatsappAppSetup.js";
20
- import { CopyBlock, CopyRow, FormField, SpinnerIcon } from "./internal.js";
20
+ import { CopyBlock, CopyRow, FormField } from "./internal.js";
21
+ import { SpinnerIcon } from "../internal/SpinnerIcon.js";
21
22
 
22
23
  // ---------------------------------------------------------------------------
23
24
  // Public API
@@ -148,7 +149,7 @@ export function ChannelAppDetailPanel({
148
149
  "stg:disabled:pointer-events-none stg:disabled:opacity-40",
149
150
  )}
150
151
  >
151
- {isDeleting && <SpinnerIcon />}
152
+ {isDeleting && <SpinnerIcon size={12} />}
152
153
  Delete
153
154
  </button>
154
155
  <button
@@ -187,6 +188,7 @@ function SlackAppDetail({
187
188
  readonly consoleOrigin?: string;
188
189
  readonly onUpdated?: (app: ChannelApp) => void;
189
190
  }) {
191
+ const baseId = useId();
190
192
  const stigmer = useStigmer();
191
193
  const { update, isUpdating, error: updateError, clearError } = useUpdateChannelApp();
192
194
 
@@ -277,7 +279,7 @@ function SlackAppDetail({
277
279
  </p>
278
280
 
279
281
  <FormField
280
- id="stgm-chapp-edit-client-id"
282
+ id={`${baseId}-client-id`}
281
283
  label="Client ID"
282
284
  value={clientId}
283
285
  onChange={setClientId}
@@ -286,7 +288,7 @@ function SlackAppDetail({
286
288
  required
287
289
  />
288
290
  <FormField
289
- id="stgm-chapp-edit-client-secret"
291
+ id={`${baseId}-client-secret`}
290
292
  label="Client secret"
291
293
  value={clientSecret}
292
294
  onChange={setClientSecret}
@@ -296,7 +298,7 @@ function SlackAppDetail({
296
298
  required
297
299
  />
298
300
  <FormField
299
- id="stgm-chapp-edit-signing-secret"
301
+ id={`${baseId}-signing-secret`}
300
302
  label="Signing secret"
301
303
  value={signingSecret}
302
304
  onChange={setSigningSecret}
@@ -321,7 +323,7 @@ function SlackAppDetail({
321
323
  "stg:disabled:pointer-events-none stg:disabled:opacity-40",
322
324
  )}
323
325
  >
324
- {isUpdating && <SpinnerIcon />}
326
+ {isUpdating && <SpinnerIcon size={12} />}
325
327
  Save credentials
326
328
  </button>
327
329
  </form>
@@ -342,6 +344,7 @@ function WhatsAppAppDetail({
342
344
  readonly createHandoff?: ChannelAppCreateHandoff;
343
345
  readonly onUpdated?: (app: ChannelApp) => void;
344
346
  }) {
347
+ const baseId = useId();
345
348
  const stigmer = useStigmer();
346
349
  const { update, isUpdating, error: updateError, clearError } = useUpdateChannelApp();
347
350
 
@@ -446,7 +449,7 @@ function WhatsAppAppDetail({
446
449
  </p>
447
450
 
448
451
  <FormField
449
- id="stgm-chapp-edit-app-id"
452
+ id={`${baseId}-app-id`}
450
453
  label="App ID"
451
454
  value={metaAppId}
452
455
  onChange={setMetaAppId}
@@ -455,7 +458,7 @@ function WhatsAppAppDetail({
455
458
  required
456
459
  />
457
460
  <FormField
458
- id="stgm-chapp-edit-app-secret"
461
+ id={`${baseId}-app-secret`}
459
462
  label="App secret"
460
463
  value={appSecret}
461
464
  onChange={setAppSecret}
@@ -465,7 +468,7 @@ function WhatsAppAppDetail({
465
468
  required
466
469
  />
467
470
  <FormField
468
- id="stgm-chapp-edit-access-token"
471
+ id={`${baseId}-access-token`}
469
472
  label="Access token"
470
473
  value={accessToken}
471
474
  onChange={setAccessToken}
@@ -475,7 +478,7 @@ function WhatsAppAppDetail({
475
478
  required
476
479
  />
477
480
  <FormField
478
- id="stgm-chapp-edit-verify-token"
481
+ id={`${baseId}-verify-token`}
479
482
  label="Verify token"
480
483
  value={verifyToken}
481
484
  onChange={setVerifyToken}
@@ -501,7 +504,7 @@ function WhatsAppAppDetail({
501
504
  "stg:disabled:pointer-events-none stg:disabled:opacity-40",
502
505
  )}
503
506
  >
504
- {isUpdating && <SpinnerIcon />}
507
+ {isUpdating && <SpinnerIcon size={12} />}
505
508
  Save credentials
506
509
  </button>
507
510
  </form>
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
 
3
- import { useCallback, useMemo, useState, type FormEvent } from "react";
3
+ import { type FormEvent, useCallback, useId, useMemo, useState } from "react";
4
4
  import { cn } from "@stigmer/theme";
5
5
  import { getUserMessage } from "@stigmer/sdk";
6
6
  import type { ChannelApp } from "@stigmer/protos/ai/stigmer/agentic/channelapp/v1/api_pb";
@@ -14,7 +14,8 @@ import {
14
14
  slackChannelAppRedirectUrl,
15
15
  } from "./slackAppSetup.js";
16
16
  import { generateWhatsAppVerifyToken } from "./whatsappAppSetup.js";
17
- import { CopyBlock, FormField, SpinnerIcon } from "./internal.js";
17
+ import { CopyBlock, FormField } from "./internal.js";
18
+ import { SpinnerIcon } from "../internal/SpinnerIcon.js";
18
19
 
19
20
  // ---------------------------------------------------------------------------
20
21
  // Public API
@@ -80,6 +81,7 @@ export function CreateChannelAppForm({
80
81
  onCancel,
81
82
  className,
82
83
  }: CreateChannelAppFormProps) {
84
+ const baseId = useId();
83
85
  const { create, isCreating, error, clearError } = useCreateChannelApp();
84
86
 
85
87
  const [provider, setProvider] = useState<ChannelProviderId>("slack");
@@ -185,7 +187,7 @@ export function CreateChannelAppForm({
185
187
  />
186
188
 
187
189
  <FormField
188
- id="stgm-chapp-name"
190
+ id={`${baseId}-name`}
189
191
  label="Name"
190
192
  value={name}
191
193
  onChange={setName}
@@ -241,7 +243,7 @@ export function CreateChannelAppForm({
241
243
  "stg:disabled:pointer-events-none stg:disabled:opacity-40",
242
244
  )}
243
245
  >
244
- {isCreating && <SpinnerIcon />}
246
+ {isCreating && <SpinnerIcon size={12} />}
245
247
  Register channel app
246
248
  </button>
247
249
 
@@ -282,6 +284,7 @@ function ProviderPicker({
282
284
  readonly onChange: (id: ChannelProviderId) => void;
283
285
  readonly disabled: boolean;
284
286
  }) {
287
+ const groupName = useId();
285
288
  return (
286
289
  <fieldset>
287
290
  <legend className="stg:mb-1.5 stg:block stg:text-xs stg:font-medium stg:text-foreground">
@@ -303,7 +306,7 @@ function ProviderPicker({
303
306
  <input
304
307
  id={`stgm-chapp-provider-${p.id}`}
305
308
  type="radio"
306
- name="stgm-chapp-provider"
309
+ name={`${groupName}-provider`}
307
310
  checked={checked}
308
311
  onChange={() => onChange(p.id)}
309
312
  disabled={disabled}
@@ -342,6 +345,7 @@ function SlackCreateSection({
342
345
  readonly onSigningSecretChange: (v: string) => void;
343
346
  readonly disabled: boolean;
344
347
  }) {
348
+ const baseId = useId();
345
349
  return (
346
350
  <>
347
351
  <div className="stg:space-y-1.5">
@@ -380,7 +384,7 @@ function SlackCreateSection({
380
384
  </p>
381
385
 
382
386
  <FormField
383
- id="stgm-chapp-client-id"
387
+ id={`${baseId}-client-id`}
384
388
  label="Client ID"
385
389
  value={clientId}
386
390
  onChange={onClientIdChange}
@@ -390,7 +394,7 @@ function SlackCreateSection({
390
394
  />
391
395
 
392
396
  <FormField
393
- id="stgm-chapp-client-secret"
397
+ id={`${baseId}-client-secret`}
394
398
  label="Client secret"
395
399
  value={clientSecret}
396
400
  onChange={onClientSecretChange}
@@ -401,7 +405,7 @@ function SlackCreateSection({
401
405
  />
402
406
 
403
407
  <FormField
404
- id="stgm-chapp-signing-secret"
408
+ id={`${baseId}-signing-secret`}
405
409
  label="Signing secret"
406
410
  value={signingSecret}
407
411
  onChange={onSigningSecretChange}
@@ -441,6 +445,7 @@ function WhatsAppCreateSection({
441
445
  readonly onVerifyTokenChange: (v: string) => void;
442
446
  readonly disabled: boolean;
443
447
  }) {
448
+ const baseId = useId();
444
449
  return (
445
450
  <>
446
451
  <div className="stg:space-y-1.5">
@@ -476,7 +481,7 @@ function WhatsAppCreateSection({
476
481
  </p>
477
482
 
478
483
  <FormField
479
- id="stgm-chapp-app-id"
484
+ id={`${baseId}-app-id`}
480
485
  label="App ID"
481
486
  value={appId}
482
487
  onChange={onAppIdChange}
@@ -486,7 +491,7 @@ function WhatsAppCreateSection({
486
491
  />
487
492
 
488
493
  <FormField
489
- id="stgm-chapp-app-secret"
494
+ id={`${baseId}-app-secret`}
490
495
  label="App secret"
491
496
  value={appSecret}
492
497
  onChange={onAppSecretChange}
@@ -498,7 +503,7 @@ function WhatsAppCreateSection({
498
503
  />
499
504
 
500
505
  <FormField
501
- id="stgm-chapp-access-token"
506
+ id={`${baseId}-access-token`}
502
507
  label="Access token"
503
508
  value={accessToken}
504
509
  onChange={onAccessTokenChange}
@@ -510,7 +515,7 @@ function WhatsAppCreateSection({
510
515
  />
511
516
 
512
517
  <FormField
513
- id="stgm-chapp-verify-token"
518
+ id={`${baseId}-verify-token`}
514
519
  label="Verify token"
515
520
  value={verifyToken}
516
521
  onChange={onVerifyTokenChange}
@@ -1,8 +1,9 @@
1
1
  "use client";
2
2
 
3
- import { useCallback, useState } from "react";
3
+ import { useCallback } from "react";
4
4
  import { cn } from "@stigmer/theme";
5
5
  import { TruncatedText } from "../internal/truncated-text.js";
6
+ import { useCopyFeedback } from "../internal/useCopyFeedback.js";
6
7
 
7
8
  /**
8
9
  * Internal building blocks shared by the channel-app forms and panels.
@@ -148,32 +149,11 @@ function CopyButton({
148
149
  }
149
150
 
150
151
  function useCopy(value: string) {
151
- const [copied, setCopied] = useState(false);
152
+ const { copy: copyText, copied } = useCopyFeedback();
152
153
 
153
154
  const copy = useCallback(() => {
154
- void navigator.clipboard.writeText(value).then(() => {
155
- setCopied(true);
156
- window.setTimeout(() => setCopied(false), 1500);
157
- });
158
- }, [value]);
155
+ void copyText(value);
156
+ }, [copyText, value]);
159
157
 
160
158
  return { copied, copy };
161
159
  }
162
-
163
- export function SpinnerIcon() {
164
- return (
165
- <svg
166
- width="12"
167
- height="12"
168
- viewBox="0 0 16 16"
169
- fill="none"
170
- stroke="currentColor"
171
- strokeWidth="2"
172
- strokeLinecap="round"
173
- className="stg:animate-spin"
174
- aria-hidden="true"
175
- >
176
- <path d="M8 2a6 6 0 1 0 6 6" />
177
- </svg>
178
- );
179
- }
@@ -18,9 +18,9 @@ import {
18
18
  PaperclipIcon,
19
19
  WorkspaceIcon,
20
20
  ArrowUpIcon,
21
- SpinnerIcon,
22
21
  StopIcon,
23
22
  } from "./icons.js";
23
+ import { SpinnerIcon } from "../internal/SpinnerIcon.js";
24
24
 
25
25
  export interface ComposerToolbarProps {
26
26
  readonly disabled: boolean;
@@ -7,9 +7,14 @@ import { useComposer } from "./useComposer.js";
7
7
  import { ComposerToolbar } from "./ComposerToolbar.js";
8
8
  import { type ConfigureMenuItem } from "./ConfigureMenu.js";
9
9
  import type { HarnessOption } from "../models/harness.js";
10
- import type { ServiceTierOption } from "../models/service-tier.js";
10
+ import { FAST_SERVICE_TIER, type ServiceTierOption } from "../models/service-tier.js";
11
11
  import type { InteractionModeOption } from "./InteractionModePicker.js";
12
12
  import { parseModelKey } from "../models/registry.js";
13
+ import { useModelRegistry } from "../models/useModelRegistry.js";
14
+ import {
15
+ assessVisionPreflight,
16
+ visionPreflightMessage,
17
+ } from "../attachment/vision-preflight.js";
13
18
  import { WorkspaceEditor } from "../workspace/WorkspaceEditor.js";
14
19
  import { AgentPicker } from "../agent/AgentPicker.js";
15
20
  import { AgentEnvForm, type AgentEnvFormSubmitOptions } from "../agent/AgentEnvForm.js";
@@ -654,9 +659,23 @@ const SessionComposerInner = forwardRef<SessionComposerHandle, SessionComposerPr
654
659
 
655
660
  // Service tier (#357): composer-local state like modelId. "standard" is
656
661
  // the resting default; the ModelSelector's fail-safe resets it when the
657
- // user switches to a model without a fast tier.
662
+ // user switches to a model without a fast tier. Whether an armed "fast"
663
+ // actually rides the submit is decided by the derived effective run
664
+ // selection below (#663) — state here records the user's intent only.
658
665
  const [serviceTier, setServiceTier] = useState<ServiceTierOption>("standard");
659
666
 
667
+ // Active harness mirror: controlled hosts (both viewers) keep the
668
+ // `harness` prop current, but with `showHarnessSelector` the dropdown
669
+ // lives inside ModelSelector and an uncontrolled host would leave the
670
+ // prop stale — the mirror keeps the effective-model resolution scoped
671
+ // to the harness the picker is actually showing.
672
+ const [activeHarness, setActiveHarness] = useState<HarnessOption>(
673
+ harness ?? "native",
674
+ );
675
+ useEffect(() => {
676
+ if (harness !== undefined) setActiveHarness(harness);
677
+ }, [harness]);
678
+
660
679
  const [displayNames, setDisplayNames] = useState<Map<string, string>>(
661
680
  () => new Map(),
662
681
  );
@@ -753,6 +772,107 @@ const SessionComposerInner = forwardRef<SessionComposerHandle, SessionComposerPr
753
772
  ? { onValidationError: onAttachmentValidationError }
754
773
  : undefined,
755
774
  );
775
+
776
+ // -------------------------------------------------------------------------
777
+ // Vision preflight (stigmer/stigmer#365, #386) — predicts which attached
778
+ // images the runner will degrade to "not viewable inline" (per-image /
779
+ // per-turn byte budget from the registry document) or that the selected
780
+ // model is explicitly blind. Non-blocking by design: the files still
781
+ // upload and mount fine, they just won't reach the model as pixels — so
782
+ // this warns, it never gates the send.
783
+ // -------------------------------------------------------------------------
784
+
785
+ const {
786
+ getByKey: registryGetByKey,
787
+ getModel: registryGetModel,
788
+ visionLimits,
789
+ isLoading: isRegistryLoading,
790
+ } = useModelRegistry();
791
+ const { defaultModel: harnessDefaultModel } = useModelRegistry({
792
+ harness: activeHarness,
793
+ });
794
+
795
+ // -------------------------------------------------------------------------
796
+ // Effective run selection (stigmer/stigmer#663) — the ONE resolution of
797
+ // "which model and tier will this send actually run". The model pill,
798
+ // the fast-tier gate, the vision preflight, and the submit payload all
799
+ // read it, so the pill can never promise a selection the wire doesn't
800
+ // carry (the #663 failure: a fallback pill with an armed fast tier over
801
+ // an empty model — refused fail-closed at create).
802
+ //
803
+ // Adoption of the harness default is gated on `showModelSelector`: with
804
+ // no pill there is no displayed promise, and whoever hid the picker owns
805
+ // the model (the guest share profile server-side, a host pin) — the
806
+ // guest no-modelName invariant depends on this gate staying put.
807
+ // -------------------------------------------------------------------------
808
+
809
+ const effective = useMemo(() => {
810
+ // modelId may be a compound "harness/id" key (unified picker) or a
811
+ // plain id — resolve through the unambiguous compound lookup first,
812
+ // mirroring the submit path's parseModelKey handling.
813
+ const stateModel = modelId
814
+ ? (registryGetByKey(modelId) ?? registryGetModel(modelId))
815
+ : undefined;
816
+
817
+ let effectiveModelId = modelId;
818
+ let effectiveModel = stateModel;
819
+ if (showModelSelector && !isRegistryLoading && stateModel === undefined) {
820
+ // Empty state, or an id the registry no longer lists (e.g. a retired
821
+ // model carried over from the last execution): the pill falls back to
822
+ // the harness default, so the submission adopts it too. While the
823
+ // registry is still loading nothing can be classified — pass the raw
824
+ // id through unmodified rather than misadopting the default.
825
+ effectiveModelId = harnessDefaultModel?.modelId ?? modelId;
826
+ effectiveModel = harnessDefaultModel;
827
+ }
828
+
829
+ // "fast" rides the submit only while the effective model prices the
830
+ // variant — the same rule the trigger badge renders and the server
831
+ // enforces fail-closed (#357). An armed tier surviving onto a model
832
+ // with no fast variant (e.g. a prop-driven `defaultModelId` re-sync,
833
+ // which bypasses ModelSelector's user-pick reset) is thereby
834
+ // unsendable, not just unstyled.
835
+ const effectiveServiceTier: ServiceTierOption =
836
+ serviceTier === "fast"
837
+ && (effectiveModel?.serviceTiers.includes(FAST_SERVICE_TIER) ?? false)
838
+ ? "fast"
839
+ : "standard";
840
+
841
+ return { modelId: effectiveModelId, model: effectiveModel, serviceTier: effectiveServiceTier };
842
+ }, [
843
+ modelId,
844
+ serviceTier,
845
+ showModelSelector,
846
+ isRegistryLoading,
847
+ registryGetByKey,
848
+ registryGetModel,
849
+ harnessDefaultModel,
850
+ ]);
851
+
852
+ // Vision preflight consumes the effective model — previously it kept a
853
+ // third private resolution (unified-registry default) that could name a
854
+ // different model than both the pill and the payload.
855
+ const visionNotice = useMemo(() => {
856
+ if (!enableAttachments || attachments.entries.length === 0) return null;
857
+ const preflight = assessVisionPreflight(
858
+ attachments.entries.map((e) => ({
859
+ name: e.file.name,
860
+ sizeBytes: e.file.size,
861
+ contentType: e.contentType,
862
+ })),
863
+ { model: effective.model, limits: visionLimits },
864
+ );
865
+ return visionPreflightMessage(preflight, {
866
+ limits: visionLimits,
867
+ modelDisplayName: effective.model?.displayName,
868
+ });
869
+ }, [
870
+ enableAttachments,
871
+ attachments.entries,
872
+ effective.model,
873
+ visionLimits,
874
+ ]);
875
+
756
876
  const fileRefs = useFileReferences();
757
877
  const fileInputRef = useRef<HTMLInputElement>(null);
758
878
  const [isDragOver, setIsDragOver] = useState(false);
@@ -923,27 +1043,32 @@ const SessionComposerInner = forwardRef<SessionComposerHandle, SessionComposerPr
923
1043
  : undefined);
924
1044
  const hasFileRefs = enableFileReferences && fileRefs.hasRefs;
925
1045
  const buildFromPlan = overrides?.buildFromPlan;
926
- // Carried only when the user actively chose fast: an untouched
927
- // tier means "platform default" (which resolves to standard in
928
- // the runner), and the UNSPECIFIED-vs-explicit distinction is
929
- // load-bearing telemetry (#357).
930
- const effectiveServiceTier = serviceTier === "fast" ? serviceTier : undefined;
1046
+ // Carried only when fast is actually in effect (armed by the user
1047
+ // AND priced by the effective model see the effective run
1048
+ // selection): an untouched tier means "platform default" (which
1049
+ // resolves to standard in the runner), and the UNSPECIFIED-vs-
1050
+ // explicit distinction is load-bearing telemetry (#357).
1051
+ const submitServiceTier =
1052
+ effective.serviceTier === "fast" ? effective.serviceTier : undefined;
931
1053
 
932
1054
  const context: SessionComposerSubmitContext | undefined =
933
1055
  hasEnv || hasAttachments || effectiveMode || hasFileRefs || buildFromPlan
934
- || effectiveServiceTier
1056
+ || submitServiceTier
935
1057
  ? {
936
1058
  runtimeEnv: hasEnv ? env : undefined,
937
1059
  attachments: hasAttachments ? attachmentInputs : undefined,
938
1060
  interactionMode: effectiveMode,
939
- serviceTier: effectiveServiceTier,
1061
+ serviceTier: submitServiceTier,
940
1062
  workspaceFileRefs: hasFileRefs ? [...fileRefs.refs] : undefined,
941
1063
  buildFromPlan,
942
1064
  }
943
1065
  : undefined;
944
1066
 
945
- const resolvedModelId = modelId
946
- ? (parseModelKey(modelId)?.modelId ?? modelId)
1067
+ // The payload carries the effective model — exactly what the pill
1068
+ // displays (#663), stripped to a plain id when the state holds a
1069
+ // compound "harness/id" key.
1070
+ const resolvedModelId = effective.modelId
1071
+ ? (parseModelKey(effective.modelId)?.modelId ?? effective.modelId)
947
1072
  : undefined;
948
1073
  onSubmit(message, resolvedModelId, context);
949
1074
 
@@ -954,7 +1079,7 @@ const SessionComposerInner = forwardRef<SessionComposerHandle, SessionComposerPr
954
1079
  fileRefs.clear();
955
1080
  }
956
1081
  },
957
- [onSubmit, modelId, serviceTier, stigmer, agentSetup.state, mcpSetup.pendingRuntimeEnv, sessionVariables, enableAttachments, attachments, personalEnv, showInteractionModePicker, interactionMode],
1082
+ [onSubmit, effective, stigmer, agentSetup.state, mcpSetup.pendingRuntimeEnv, sessionVariables, enableAttachments, attachments, personalEnv, showInteractionModePicker, interactionMode],
958
1083
  );
959
1084
 
960
1085
  const composer = useComposer({
@@ -982,6 +1107,7 @@ const SessionComposerInner = forwardRef<SessionComposerHandle, SessionComposerPr
982
1107
 
983
1108
  const handleHarnessChange = useCallback(
984
1109
  (h: HarnessOption) => {
1110
+ setActiveHarness(h);
985
1111
  onHarnessChange?.(h);
986
1112
  },
987
1113
  [onHarnessChange],
@@ -1636,6 +1762,25 @@ const SessionComposerInner = forwardRef<SessionComposerHandle, SessionComposerPr
1636
1762
  </div>
1637
1763
  )}
1638
1764
 
1765
+ {/* Zone 2.65: Vision preflight warning (stigmer/stigmer#365, #386) —
1766
+ derives from the attached entries, so it appears the moment an
1767
+ image over the advertised budget lands (paste/drop/pick) or the
1768
+ selected model is explicitly blind, and disappears when the
1769
+ offending attachment is removed or the model changes. Warning
1770
+ styling (not muted): unlike the upload wait, this is a problem
1771
+ the user can fix BEFORE spending the turn. Non-blocking — the
1772
+ files still upload and mount; they just won't reach the model
1773
+ as pixels. */}
1774
+ {visionNotice && (
1775
+ <div
1776
+ role="status"
1777
+ className="stg:mx-3 stg:mb-2 stg:flex stg:items-center stg:gap-2 stg:rounded-md stg:bg-warning/10 stg:px-2.5 stg:py-1.5 stg:text-xs stg:text-warning"
1778
+ >
1779
+ <AlertTriangleIcon />
1780
+ <span>{visionNotice}</span>
1781
+ </div>
1782
+ )}
1783
+
1639
1784
  {/* Zone 2.7: Agent setup warning */}
1640
1785
  {showAgent &&
1641
1786
  agentSetup.state.status === "needsEnvVars" &&
@@ -1734,7 +1879,9 @@ const SessionComposerInner = forwardRef<SessionComposerHandle, SessionComposerPr
1734
1879
  interactionMode={interactionMode}
1735
1880
  onInteractionModeChange={handleInteractionModeChange}
1736
1881
  showModelSelector={showModelSelector}
1737
- modelId={modelId}
1882
+ // The pill renders the effective selection — the same value the
1883
+ // submit payload carries (#663), never a fallback of its own.
1884
+ modelId={effective.modelId}
1738
1885
  onModelChange={handleModelChange}
1739
1886
  serviceTier={serviceTier}
1740
1887
  onServiceTierChange={setServiceTier}