@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
@@ -0,0 +1,157 @@
1
+ import { describe, it, expect, vi, afterEach } from "vitest";
2
+ import { renderHook, act } from "@testing-library/react";
3
+
4
+ // ---------------------------------------------------------------------------
5
+ // Owner-pinned run config for useSessionPageFlow (stigmer/stigmer#664).
6
+ //
7
+ // A platform-billed embedder pins the model/tier once and every follow-up
8
+ // carries it — winning over the composer's selection, the persisted
9
+ // Console preference, and the last execution's model — including retries,
10
+ // which re-enter the same submit path. Guests never carry a pin: their
11
+ // execution config is owned by the server-side share policy.
12
+ // ---------------------------------------------------------------------------
13
+
14
+ const mockSendFollowUp = vi.fn();
15
+
16
+ const mockConv = {
17
+ session: { spec: { agentInstanceId: "inst_bound" } },
18
+ isLoading: false,
19
+ completedExecutions: [] as unknown[],
20
+ activeStreamExecution: null,
21
+ workspaceEntries: [] as unknown[],
22
+ submitApproval: vi.fn(),
23
+ sendFollowUp: mockSendFollowUp,
24
+ };
25
+ vi.mock("../useSessionConversation", () => ({
26
+ useSessionConversation: () => mockConv,
27
+ }));
28
+
29
+ vi.mock("../../hooks", () => ({
30
+ useStigmer: () => ({ agent: { getByReference: vi.fn() } }),
31
+ }));
32
+
33
+ vi.mock("../../agent", () => ({
34
+ useDefaultAgent: () => ({ agent: null, isLoading: false, error: null }),
35
+ }));
36
+
37
+ const mockWorkspace = {
38
+ entries: [],
39
+ hasEntries: false,
40
+ toInput: vi.fn().mockReturnValue([]),
41
+ addGitRepo: vi.fn(),
42
+ addLocalPath: vi.fn(),
43
+ removeEntry: vi.fn(),
44
+ clear: vi.fn(),
45
+ };
46
+ vi.mock("../../workspace", () => ({
47
+ useWorkspaceEntries: () => mockWorkspace,
48
+ }));
49
+
50
+ vi.mock("../../execution/useSessionVariables", () => ({
51
+ useSessionVariables: () => ({ variables: [], isEmpty: true, clear: vi.fn() }),
52
+ }));
53
+
54
+ // Honors `enabled` like the real hook (contract pinned by its own tests).
55
+ vi.mock("../usePersistedModel", () => ({
56
+ usePersistedModel: (opts?: { enabled?: boolean }) =>
57
+ (opts?.enabled === false
58
+ ? ([undefined, vi.fn()] as const)
59
+ : (["persisted-model", vi.fn()] as const)),
60
+ }));
61
+
62
+ vi.mock("../useAgentRefFromSession", () => ({
63
+ useAgentRefFromSession: () => ({ agentRef: null }),
64
+ }));
65
+
66
+ import { useSessionPageFlow } from "../useSessionPageFlow";
67
+
68
+ const OPTS = { sessionId: "ses_1", org: "acme" };
69
+ const PIN = { modelName: "pinned-model", serviceTier: "fast" } as const;
70
+
71
+ describe("useSessionPageFlow — owner-pinned runConfig (#664)", () => {
72
+ afterEach(() => {
73
+ vi.clearAllMocks();
74
+ });
75
+
76
+ it("stamps the pinned model and fast tier on a composer follow-up, over the composer's own selection", async () => {
77
+ const { result } = renderHook(() =>
78
+ useSessionPageFlow({ ...OPTS, runConfig: PIN }),
79
+ );
80
+
81
+ await act(async () => {
82
+ await result.current.handleSubmit("follow up", "user-picked-model", {
83
+ serviceTier: undefined,
84
+ });
85
+ });
86
+
87
+ const options = mockSendFollowUp.mock.calls[0][1];
88
+ expect(options.modelName).toBe("pinned-model");
89
+ expect(options.serviceTier).toBe("fast");
90
+ });
91
+
92
+ it("stamps the pin on a bare re-submit (the execution-retry path passes no composer args)", async () => {
93
+ const { result } = renderHook(() =>
94
+ useSessionPageFlow({ ...OPTS, runConfig: PIN }),
95
+ );
96
+
97
+ await act(async () => {
98
+ await result.current.handleSubmit("retry me");
99
+ });
100
+
101
+ const options = mockSendFollowUp.mock.calls[0][1];
102
+ expect(options.modelName).toBe("pinned-model");
103
+ expect(options.serviceTier).toBe("fast");
104
+ });
105
+
106
+ it("a model-only pin suppresses a composer-armed fast tier (the pin owns the whole run config)", async () => {
107
+ const { result } = renderHook(() =>
108
+ useSessionPageFlow({ ...OPTS, runConfig: { modelName: "pinned-model" } }),
109
+ );
110
+
111
+ await act(async () => {
112
+ await result.current.handleSubmit("follow up", undefined, {
113
+ serviceTier: "fast",
114
+ });
115
+ });
116
+
117
+ const options = mockSendFollowUp.mock.calls[0][1];
118
+ expect(options.modelName).toBe("pinned-model");
119
+ expect(options.serviceTier).toBeUndefined();
120
+ });
121
+
122
+ it("keeps the unpinned behavior byte-identical when no runConfig is given", async () => {
123
+ const { result } = renderHook(() => useSessionPageFlow(OPTS));
124
+
125
+ await act(async () => {
126
+ await result.current.handleSubmit("follow up", "user-picked-model", {
127
+ serviceTier: "fast",
128
+ });
129
+ });
130
+
131
+ const options = mockSendFollowUp.mock.calls[0][1];
132
+ expect(options.modelName).toBe("user-picked-model");
133
+ expect(options.serviceTier).toBe("fast");
134
+ });
135
+
136
+ it("ignores the pin entirely for guests — their no-modelName invariant survives a misconfigured embed", async () => {
137
+ const { result } = renderHook(() =>
138
+ useSessionPageFlow({ ...OPTS, audience: "guest", runConfig: PIN }),
139
+ );
140
+
141
+ await act(async () => {
142
+ await result.current.handleSubmit("follow up");
143
+ });
144
+
145
+ const options = mockSendFollowUp.mock.calls[0][1];
146
+ expect(options.modelName).toBeUndefined();
147
+ expect(options.serviceTier).toBeUndefined();
148
+ });
149
+
150
+ it("throws at render for the statically-wrong pin (fast tier, no model)", () => {
151
+ expect(() =>
152
+ renderHook(() =>
153
+ useSessionPageFlow({ ...OPTS, runConfig: { serviceTier: "fast" } }),
154
+ ),
155
+ ).toThrowError(/serviceTier "fast" requires modelName/);
156
+ });
157
+ });
@@ -278,6 +278,120 @@ describe("useSessionPanel — artifact document tabs", () => {
278
278
  });
279
279
  });
280
280
 
281
+ describe("useSessionPanel — observed open state (uncontrolled + onOpenChange)", () => {
282
+ // The panel opens ITSELF (file/artifact/plan opens, plan auto-open), so —
283
+ // unlike useDetailTabs' user-driven-only tabs — onOpenChange fires in BOTH
284
+ // modes: passing only the callback observes the panel without controlling
285
+ // it (the issue-#300 docking-host case).
286
+ it("reports the chip toggle without taking control", () => {
287
+ const seen: boolean[] = [];
288
+ const { result } = renderPanel({ onOpenChange: (o) => seen.push(o) });
289
+ act(() => result.current.openPanel());
290
+ expect(result.current.isOpen).toBe(true);
291
+ act(() => result.current.closePanel());
292
+ expect(result.current.isOpen).toBe(false);
293
+ expect(seen).toEqual([true, false]);
294
+ });
295
+
296
+ it("reports internal open intents (openFile), once per actual transition", () => {
297
+ const seen: boolean[] = [];
298
+ const { result } = renderPanel({ onOpenChange: (o) => seen.push(o) });
299
+ act(() => result.current.openFile("e1", "a.ts"));
300
+ // Already open — a second open intent is not a transition.
301
+ act(() => result.current.openFile("e1", "b.ts"));
302
+ act(() => result.current.openPanel());
303
+ expect(seen).toEqual([true]);
304
+ });
305
+
306
+ it("reports the plan auto-open — the beat a docking host makes room for", () => {
307
+ const seen: boolean[] = [];
308
+ const onOpenChange = (o: boolean) => seen.push(o);
309
+ const { rerender } = renderPanel({ onOpenChange });
310
+ rerender({ phase: null, hasChanges: false, planKey: "e1:streaming", onOpenChange });
311
+ expect(seen).toEqual([true]);
312
+ });
313
+
314
+ it("starts open when defaultOpen is set, without a spurious notification", () => {
315
+ const seen: boolean[] = [];
316
+ const { result } = renderPanel({
317
+ defaultOpen: true,
318
+ onOpenChange: (o) => seen.push(o),
319
+ });
320
+ expect(result.current.isOpen).toBe(true);
321
+ expect(seen).toEqual([]);
322
+ });
323
+ });
324
+
325
+ describe("useSessionPanel — controlled open state", () => {
326
+ it("follows the host's open value and ignores defaultOpen", () => {
327
+ const { result, rerender } = renderPanel({ open: false, defaultOpen: true });
328
+ expect(result.current.isOpen).toBe(false);
329
+ rerender({ phase: null, hasChanges: false, open: true, defaultOpen: true });
330
+ expect(result.current.isOpen).toBe(true);
331
+ });
332
+
333
+ it("surfaces intents through onOpenChange without flipping state itself", () => {
334
+ const seen: boolean[] = [];
335
+ const onOpenChange = (o: boolean) => seen.push(o);
336
+ const { result, rerender } = renderPanel({ open: false, onOpenChange });
337
+ act(() => result.current.openPanel());
338
+ expect(seen).toEqual([true]);
339
+ expect(result.current.isOpen).toBe(false);
340
+ // The host grants the request.
341
+ rerender({ phase: null, hasChanges: false, open: true, onOpenChange });
342
+ expect(result.current.isOpen).toBe(true);
343
+ act(() => result.current.closePanel());
344
+ expect(seen).toEqual([true, false]);
345
+ expect(result.current.isOpen).toBe(true);
346
+ });
347
+
348
+ it("re-fires a declined request (once per request, not per transition)", () => {
349
+ const seen: boolean[] = [];
350
+ const onOpenChange = (o: boolean) => seen.push(o);
351
+ const { result } = renderPanel({ open: false, onOpenChange });
352
+ act(() => result.current.openFile("e1", "a.ts"));
353
+ // The host declined (open stayed false) — a later intent must re-fire,
354
+ // not be swallowed by a stale "already requested" memory.
355
+ act(() => result.current.openFile("e1", "b.ts"));
356
+ expect(seen).toEqual([true, true]);
357
+ });
358
+
359
+ it("plan auto-open is reported, not applied — but the tab is pinned and ready", () => {
360
+ const seen: boolean[] = [];
361
+ const onOpenChange = (o: boolean) => seen.push(o);
362
+ const { result, rerender } = renderPanel({ open: false, onOpenChange });
363
+ rerender({
364
+ phase: null,
365
+ hasChanges: false,
366
+ planKey: "e1:hash-a",
367
+ open: false,
368
+ onOpenChange,
369
+ });
370
+ expect(seen).toEqual([true]);
371
+ expect(result.current.isOpen).toBe(false);
372
+ // View state stays SDK-owned: the plan tab is pinned regardless, so the
373
+ // moment the host opens the panel the plan is what greets the user.
374
+ expect(result.current.editorsStore.getSnapshot().editors).toEqual([
375
+ { entryId: PLAN_DOCUMENT_ENTRY_ID, path: PLAN_DOCUMENT_PATH, preview: false },
376
+ ]);
377
+ });
378
+
379
+ it("auto-surfaces Changes against the HOST's open state, not the internal one", () => {
380
+ // The first-write-back trigger reads the effective open value: a
381
+ // controlled-open panel (whose internal state was never touched) must
382
+ // still surface Changes…
383
+ const { result, rerender } = renderPanel({ open: true });
384
+ rerender({ phase: null, hasChanges: true, open: true });
385
+ expect(result.current.view).toBe("changes");
386
+ });
387
+
388
+ it("…and a controlled-closed panel must not", () => {
389
+ const { result, rerender } = renderPanel({ open: false });
390
+ rerender({ phase: null, hasChanges: true, open: false });
391
+ expect(result.current.view).toBe("files");
392
+ });
393
+ });
394
+
281
395
  describe("useSessionPanel — defaultView (home view)", () => {
282
396
  it("seeds the view to the provided defaultView (launcher homes on Config)", () => {
283
397
  const { result } = renderPanel({ defaultView: "configure" });
@@ -45,3 +45,21 @@
45
45
  * presentation means without breaking embedders.
46
46
  */
47
47
  export type SessionAudience = "integrator" | "endUser" | "guest" | "observer";
48
+
49
+ /**
50
+ * Whether the session organisms offer the session panel surface.
51
+ *
52
+ * - `"auto"` (default) — the panel and its toggle chip are available
53
+ * whenever the audience allows them (every audience except `"guest"`).
54
+ * - `"none"` — the panel and chip are absent entirely: plan-mode
55
+ * auto-open is suppressed and transcript file paths keep their default
56
+ * copy behavior. For hosts whose surrounding surface already renders
57
+ * the workspace — the composer keeps every capability the audience
58
+ * allows, which is what separates this from `audience="guest"`.
59
+ *
60
+ * Orthogonal to {@link SessionAudience} on purpose: audience is who is
61
+ * looking, panel mode is what the host's geometry has room for. A union
62
+ * (not a boolean) so a future mode — e.g. a host-rendered panel fed by
63
+ * the SDK's controller — extends the vocabulary instead of breaking it.
64
+ */
65
+ export type SessionPanelMode = "auto" | "none";
@@ -2,7 +2,8 @@ export { toProtoExecutionTarget, fromProtoExecutionTarget } from "./execution-ta
2
2
  export type { ExecutionTargetOption } from "./execution-target.js";
3
3
 
4
4
  export type { RuntimeEnvProvider } from "./runtime-env.js";
5
- export type { SessionAudience } from "./audience.js";
5
+ export type { SessionAudience, SessionPanelMode } from "./audience.js";
6
+ export type { SessionRunConfig } from "./run-config.js";
6
7
  export {
7
8
  CHANNEL_SESSION_LABELS,
8
9
  isChannelOriginSession,
@@ -0,0 +1,59 @@
1
+ import type { ServiceTierOption } from "../models/service-tier.js";
2
+
3
+ /**
4
+ * Owner-pinned execution config for a session surface
5
+ * (stigmer/stigmer#664) — the client-side subset of the platform
6
+ * `RunConfig` that AgentShare and AgentChannel specs pin server-side
7
+ * (stigmer/stigmer#360). Budget clamps (`max_cost_usd`,
8
+ * `max_tool_rounds`) are deliberately absent: those are enforcement,
9
+ * which only the server can own.
10
+ *
11
+ * Passed to `SessionViewer` / `NewSessionViewer` (or the underlying
12
+ * flow hooks) by embedders whose product — not the end user — decides
13
+ * what serves the conversation: every execution on the surface (first
14
+ * message, follow-ups, retries) carries the pinned values, and the
15
+ * model picker hides automatically (a control that has no effect must
16
+ * not render).
17
+ *
18
+ * This is presentation-level pinning for product-embedded sessions,
19
+ * not a security boundary — a caller with the session's credentials
20
+ * can still create executions directly. Share/channel surfaces, where
21
+ * the audience is untrusted, get the server-enforced `RunConfig` on
22
+ * their specs instead.
23
+ *
24
+ * Ignored entirely for the `"guest"` audience: guest execution config
25
+ * is owned by the server-side share policy, and guest sends carrying
26
+ * no `modelName` is a pinned invariant.
27
+ */
28
+ export interface SessionRunConfig {
29
+ /**
30
+ * Model every execution runs, as a plain `modelId` from the model
31
+ * registry. Wins over the composer's selection, the persisted
32
+ * Console preference, and the last execution's model.
33
+ */
34
+ readonly modelName?: string;
35
+ /**
36
+ * Service tier for every execution. `"fast"` requires
37
+ * {@link modelName}: the fast tier is a per-model price (the server
38
+ * refuses it fail-closed for Auto), so a tier pin without a model
39
+ * pin is a host configuration error and throws at submit.
40
+ */
41
+ readonly serviceTier?: ServiceTierOption;
42
+ }
43
+
44
+ /**
45
+ * Fail fast on the one statically-wrong shape: `serviceTier: "fast"`
46
+ * with no pinned model. Every layer below (composer gate, server
47
+ * validation) would refuse it anyway — but those surface as an end
48
+ * user's failed send, while this names the embedder's bug at the
49
+ * seam where it was written.
50
+ */
51
+ export function assertValidRunConfig(runConfig: SessionRunConfig): void {
52
+ if (runConfig.serviceTier === "fast" && !runConfig.modelName) {
53
+ throw new Error(
54
+ "SessionRunConfig: serviceTier \"fast\" requires modelName — the fast "
55
+ + "tier is a per-model price and Auto (no pinned model) has no tier "
56
+ + "dimension. Pin the model the surface should run.",
57
+ );
58
+ }
59
+ }
@@ -15,9 +15,11 @@ import { withTimeout } from "../internal/withTimeout.js";
15
15
  import { useCreateAgentExecution } from "../execution/useCreateAgentExecution.js";
16
16
  import type { ExecutionTargetOption } from "./execution-target.js";
17
17
  import { useExecutionTarget } from "../execution-target-context.js";
18
+ import { useApprovalDefaults } from "../approval-defaults-context.js";
18
19
  import { useRunnerAdapter } from "../runner-adapter.js";
19
20
  import { resolveExecutionRuntimeEnv, type RuntimeEnvProvider } from "./runtime-env.js";
20
21
  import type { SessionAudience } from "./audience.js";
22
+ import { assertValidRunConfig, type SessionRunConfig } from "./run-config.js";
21
23
 
22
24
  const DEFAULT_AGENT_TIMEOUT_MS = 10_000;
23
25
 
@@ -141,6 +143,16 @@ export interface UseNewSessionFlowOptions {
141
143
  * or Environment resources. Large values bloat every prompt.
142
144
  */
143
145
  readonly sessionContext?: string;
146
+ /**
147
+ * Owner-pinned model/tier for the session's first execution
148
+ * (stigmer/stigmer#664). Stamped at submit, winning over the
149
+ * composer's selection and the restored Console preference. Pair
150
+ * with the same pin on the conversation surface
151
+ * (`useSessionPageFlow` / `SessionViewer`) so follow-ups match.
152
+ * Ignored for the `"guest"` audience (the platform share policy owns
153
+ * guest execution config). See {@link SessionRunConfig}.
154
+ */
155
+ readonly runConfig?: SessionRunConfig;
144
156
  }
145
157
 
146
158
  /** Return value of {@link useNewSessionFlow}. */
@@ -257,9 +269,24 @@ export function useNewSessionFlow(
257
269
  sessionContext,
258
270
  } = options;
259
271
  const isGuest = options.audience === "guest";
272
+ // Guests never carry a client pin: guest execution config is owned by
273
+ // the server-side share policy (GUEST_HARNESS reasoning). Validated at
274
+ // render so a statically-wrong pin (fast tier, no model) fails in the
275
+ // embedder's dev loop, not as the end user's failed send.
276
+ const runConfig = isGuest ? undefined : options.runConfig;
277
+ if (runConfig) assertValidRunConfig(runConfig);
278
+ const pinnedModelName = runConfig?.modelName;
279
+ const pinnedServiceTier = runConfig?.serviceTier;
260
280
  const contextTarget = useExecutionTarget();
261
281
  const executionTarget = options.executionTarget ?? contextTarget;
262
282
  const adapter = useRunnerAdapter();
283
+ // Host approval default (#302): pre-arm auto_approve_all on the bootstrap
284
+ // create when the provider says so. Guests never inherit it — a share-link
285
+ // visitor is not the operator the host's trust judgment covers (the
286
+ // GUEST_HARNESS fixed-platform-policy reasoning).
287
+ const approvalDefaults = useApprovalDefaults();
288
+ const autoApproveAll =
289
+ (!isGuest && approvalDefaults?.autoApproveAll) || undefined;
263
290
 
264
291
  const [harness, setHarnessRaw] = useState<HarnessOption>(() => {
265
292
  // Guests get the fixed platform policy (see GUEST_HARNESS) and never
@@ -385,12 +412,19 @@ export function useNewSessionFlow(
385
412
  const executionFields = {
386
413
  org,
387
414
  message,
388
- modelName: selectedModel ?? validModelId,
415
+ // The owner pin wins over the composer and the restored
416
+ // preference (#664); the pinned tier is stamped only as
417
+ // "fast" — standard stays off the wire, preserving the #357
418
+ // UNSPECIFIED-vs-explicit telemetry distinction.
419
+ modelName: pinnedModelName ?? selectedModel ?? validModelId,
389
420
  runtimeEnv,
390
421
  attachments: context?.attachments,
391
422
  interactionMode: context?.interactionMode,
392
- serviceTier: context?.serviceTier,
423
+ serviceTier: pinnedModelName
424
+ ? (pinnedServiceTier === "fast" ? "fast" : undefined)
425
+ : context?.serviceTier,
393
426
  workspaceFileRefs: context?.workspaceFileRefs,
427
+ autoApproveAll,
394
428
  };
395
429
 
396
430
  // Resolve which agent the bootstrapped session runs against: an
@@ -477,9 +511,12 @@ export function useNewSessionFlow(
477
511
  isGuest,
478
512
  harness,
479
513
  executionTarget,
514
+ autoApproveAll,
480
515
  adapter,
481
516
  getRuntimeEnv,
482
517
  validModelId,
518
+ pinnedModelName,
519
+ pinnedServiceTier,
483
520
  workspace,
484
521
  mcpServerUsages,
485
522
  skillRefs,
@@ -21,7 +21,9 @@ import type { ServiceTierOption } from "../models/service-tier.js";
21
21
  import { useStigmer } from "../hooks.js";
22
22
  import { toError } from "../internal/toError.js";
23
23
  import { useConversationStoreRef } from "../internal/store/index.js";
24
- import { useCreateAgentExecution } from "../execution/useCreateAgentExecution.js";
24
+ // Type-only import so the SharedAgentExecutionFields doc links below resolve;
25
+ // the strict tsdoc gate (tsdoc:check) guards it against removal.
26
+ import { useCreateAgentExecution, type SharedAgentExecutionFields } from "../execution/useCreateAgentExecution.js";
25
27
  import { useExecutionStream } from "../execution/useExecutionStream.js";
26
28
  import { useAgentExecutionActions } from "../execution/useAgentExecutionActions.js";
27
29
  import { useSubmitApproval } from "../execution/useSubmitApproval.js";
@@ -74,10 +76,12 @@ export interface SendFollowUpOptions {
74
76
  * Execution-scoped secrets and configuration (Execution Flow).
75
77
  *
76
78
  * Values are injected into the agent sandbox for this execution only
77
- * and deleted when the execution completes. They override both
78
- * Environment values and agent defaults.
79
+ * and deleted when the execution completes. They take the highest
80
+ * merge priority, overriding Environment values bound via the
81
+ * instance. Keys must be declared in the agent's env declarations
82
+ * (a whitelist, not a value source) or they are dropped.
79
83
  *
80
- * @see {@link CreateAgentExecutionInput.runtimeEnv}
84
+ * @see {@link SharedAgentExecutionFields.runtimeEnv}
81
85
  */
82
86
  readonly runtimeEnv?: Record<string, EnvVarInput>;
83
87
  /**
@@ -87,7 +91,7 @@ export interface SendFollowUpOptions {
87
91
  * `agentExecution.uploadAttachment()`. Forwarded directly to
88
92
  * execution creation.
89
93
  *
90
- * @see {@link CreateAgentExecutionInput.attachments}
94
+ * @see {@link SharedAgentExecutionFields.attachments}
91
95
  */
92
96
  readonly attachments?: AttachmentInput[];
93
97
  /**
@@ -104,19 +108,19 @@ export interface SendFollowUpOptions {
104
108
  * the unspecified-vs-explicit distinction (unset resolves to standard on
105
109
  * the platform side — never the provider account default).
106
110
  *
107
- * @see {@link CreateAgentExecutionInput.serviceTier}
111
+ * @see {@link SharedAgentExecutionFields.serviceTier}
108
112
  */
109
113
  readonly serviceTier?: ServiceTierOption;
110
114
  /**
111
115
  * Marks this execution as a Build-from-plan turn.
112
116
  *
113
- * @see {@link CreateAgentExecutionInput.buildFromPlan}
117
+ * @see {@link SharedAgentExecutionFields.buildFromPlan}
114
118
  */
115
119
  readonly buildFromPlan?: boolean;
116
120
  /**
117
121
  * Auto-approve every tool call for this execution (bypass the HITL gate).
118
122
  *
119
- * @see {@link CreateAgentExecutionInput.autoApproveAll}
123
+ * @see {@link SharedAgentExecutionFields.autoApproveAll}
120
124
  */
121
125
  readonly autoApproveAll?: boolean;
122
126
  /**
@@ -125,7 +129,7 @@ export interface SendFollowUpOptions {
125
129
  * Lightweight "attention" signals — no upload, no injection. The agent
126
130
  * reads these files directly from the workspace filesystem.
127
131
  *
128
- * @see {@link CreateAgentExecutionInput.workspaceFileRefs}
132
+ * @see {@link SharedAgentExecutionFields.workspaceFileRefs}
129
133
  */
130
134
  readonly workspaceFileRefs?: string[];
131
135
  /**
@@ -134,7 +138,7 @@ export interface SendFollowUpOptions {
134
138
  * The conversation read model hides the superseded execution so the
135
139
  * edited message replaces the original in place.
136
140
  *
137
- * @see {@link CreateAgentExecutionInput.supersedesExecutionId}
141
+ * @see {@link SharedAgentExecutionFields.supersedesExecutionId}
138
142
  */
139
143
  readonly supersedesExecutionId?: string;
140
144
  }
@@ -6,6 +6,7 @@ import { ApprovalAction } from "@stigmer/protos/ai/stigmer/agentic/agentexecutio
6
6
  import type { AgentResolution } from "../agent/index.js";
7
7
  import { useDefaultAgent } from "../agent/index.js";
8
8
  import { useStigmer } from "../hooks.js";
9
+ import { useApprovalDefaults } from "../approval-defaults-context.js";
9
10
  import { useWorkspaceEntries, type UseWorkspaceEntriesReturn } from "../workspace/index.js";
10
11
  import { useSessionVariables, type UseSessionVariablesReturn } from "../execution/useSessionVariables.js";
11
12
  import type { SessionComposerSubmitContext, InteractionModeOption } from "../composer/index.js";
@@ -19,6 +20,7 @@ import { useAgentRefFromSession } from "./useAgentRefFromSession.js";
19
20
  import { usePersistedModel, type UsePersistedModelReturn } from "./usePersistedModel.js";
20
21
  import { specMcpUsagesToInput, specSkillRefsToInput } from "./session-spec-converters.js";
21
22
  import type { SessionAudience } from "./audience.js";
23
+ import { assertValidRunConfig, type SessionRunConfig } from "./run-config.js";
22
24
 
23
25
  /**
24
26
  * Well-known Daytona sandbox workspace root. Used as the SDK safety-net
@@ -56,6 +58,16 @@ export interface UseSessionPageFlowOptions {
56
58
  * @default "integrator"
57
59
  */
58
60
  readonly audience?: SessionAudience;
61
+ /**
62
+ * Owner-pinned model/tier for every follow-up on this surface
63
+ * (stigmer/stigmer#664). Stamped at submit — after the composer, so
64
+ * it wins over composer state, the persisted Console preference, and
65
+ * the last execution's model — and therefore also covers retries,
66
+ * which re-enter the same submit path. Ignored for the `"guest"`
67
+ * audience (the server-side share policy owns guest execution
68
+ * config). See {@link SessionRunConfig}.
69
+ */
70
+ readonly runConfig?: SessionRunConfig;
59
71
  }
60
72
 
61
73
  /** Return value of {@link useSessionPageFlow}. */
@@ -130,10 +142,13 @@ export interface UseSessionPageFlowReturn {
130
142
  /**
131
143
  * Session-scoped "auto-approve tool calls" preference.
132
144
  *
133
- * `false` by default. Flipped to `true` when the user chooses
134
- * "Approve & don't ask again" at an approval gate (see {@link submitApproval}),
135
- * and carried into every subsequent follow-up via {@link handleSubmit}. Held in
136
- * memory only reset on reload / new session, never persisted server-side.
145
+ * `false` by default; a host can pre-arm it app-wide via
146
+ * `StigmerProvider`'s `approvalDefaults` (#302, guests excluded). Flipped
147
+ * to `true` when the user chooses "Approve & don't ask again" at an
148
+ * approval gate (see {@link submitApproval}), and carried into every
149
+ * subsequent follow-up via {@link handleSubmit}. Held in memory only —
150
+ * reset on reload / new session back to the host default, never persisted
151
+ * server-side.
137
152
  */
138
153
  readonly autoApproveAll: boolean;
139
154
  /**
@@ -240,6 +255,18 @@ export function useSessionPageFlow(
240
255
  ): UseSessionPageFlowReturn {
241
256
  const { sessionId, org, getRuntimeEnv } = options;
242
257
  const isGuest = options.audience === "guest";
258
+ // Guests never carry a client pin: guest execution config is owned by
259
+ // the server-side share policy, and the no-modelName guest invariant
260
+ // is test-pinned.
261
+ const runConfig = isGuest ? undefined : options.runConfig;
262
+ // Render-time, not submit-time: the pin is static host configuration,
263
+ // so a statically-wrong shape (fast tier, no model) should fail at
264
+ // mount in the embedder's dev loop — not as an end user's failed send.
265
+ if (runConfig) assertValidRunConfig(runConfig);
266
+ // Scalars, not the object: hosts pass inline literals, and the submit
267
+ // callback's identity must not churn on every render (DD-010).
268
+ const pinnedModelName = runConfig?.modelName;
269
+ const pinnedServiceTier = runConfig?.serviceTier;
243
270
 
244
271
  const stigmer = useStigmer();
245
272
  const conv = useSessionConversation(sessionId, org);
@@ -294,9 +321,17 @@ export function useSessionPageFlow(
294
321
  const [skillRefs, setSkillRefs] = useState<ResourceRef[]>([]);
295
322
  const initialSyncDone = useRef(false);
296
323
 
297
- // Session-scoped auto-approve, set at the approval gate (not pre-armed in the
298
- // composer). Lives only in memory for the life of this page — reset on reload.
299
- const [autoApproveAll, setAutoApproveAll] = useState(false);
324
+ // Session-scoped auto-approve. Armed either at the approval gate ("Approve &
325
+ // don't ask again") or from the host's provider-level approvalDefaults
326
+ // (#302) — an app-level trust judgment, so it seeds the INITIAL state only;
327
+ // the user's in-session "Turn off" always wins from then on. Guests never
328
+ // inherit the host default (a share-link visitor is not the operator the
329
+ // host's trust judgment covers). Lives only in memory for the life of this
330
+ // page — reset on reload re-applies the host default, never a user choice.
331
+ const approvalDefaults = useApprovalDefaults();
332
+ const [autoApproveAll, setAutoApproveAll] = useState(
333
+ () => !isGuest && (approvalDefaults?.autoApproveAll ?? false),
334
+ );
300
335
 
301
336
  const submitApproval = useCallback<UseSessionConversationReturn["submitApproval"]>(
302
337
  async (toolCallId, action, comment) => {
@@ -429,7 +464,11 @@ export function useSessionPageFlow(
429
464
 
430
465
  conv.sendFollowUp(message, {
431
466
  agentInstanceId: agentInstanceIdOverride,
432
- modelName: selectedModel ?? modelId,
467
+ // The owner pin wins over everything the user or the SDK
468
+ // resolved (#664); the pinned tier is stamped only as "fast" —
469
+ // an untouched/standard tier stays off the wire, preserving the
470
+ // #357 UNSPECIFIED-vs-explicit telemetry distinction.
471
+ modelName: pinnedModelName ?? selectedModel ?? modelId,
433
472
  workspaceEntries: workspace.hasEntries
434
473
  ? workspace.toInput()
435
474
  : undefined,
@@ -438,7 +477,9 @@ export function useSessionPageFlow(
438
477
  runtimeEnv,
439
478
  attachments: context?.attachments,
440
479
  interactionMode: context?.interactionMode,
441
- serviceTier: context?.serviceTier,
480
+ serviceTier: pinnedModelName
481
+ ? (pinnedServiceTier === "fast" ? "fast" : undefined)
482
+ : context?.serviceTier,
442
483
  buildFromPlan: context?.buildFromPlan,
443
484
  // Sourced from the session-scoped preference set at the approval gate,
444
485
  // not from the composer (the pre-arm toggle was removed).
@@ -449,7 +490,7 @@ export function useSessionPageFlow(
449
490
 
450
491
  sessionVariables.clear();
451
492
  },
452
- [conv.sendFollowUp, modelId, workspace, mcpServerUsages, skillRefs, sessionVariables.clear, resolution, agentRef, sessionInstanceId, stigmer, autoApproveAll, getRuntimeEnv],
493
+ [conv.sendFollowUp, modelId, pinnedModelName, pinnedServiceTier, workspace, mcpServerUsages, skillRefs, sessionVariables.clear, resolution, agentRef, sessionInstanceId, stigmer, autoApproveAll, getRuntimeEnv],
453
494
  );
454
495
 
455
496
  // -------------------------------------------------------------------------