@stigmer/react 3.12.1 → 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 (658) 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/iam-policy/GrantAccessForm.d.ts.map +1 -1
  166. package/iam-policy/GrantAccessForm.js +2 -4
  167. package/iam-policy/GrantAccessForm.js.map +1 -1
  168. package/iam-policy/OrgMembersPanel.d.ts.map +1 -1
  169. package/iam-policy/OrgMembersPanel.js +3 -5
  170. package/iam-policy/OrgMembersPanel.js.map +1 -1
  171. package/iam-policy/RoleSelector.d.ts.map +1 -1
  172. package/iam-policy/RoleSelector.js +7 -1
  173. package/iam-policy/RoleSelector.js.map +1 -1
  174. package/identity-provider/CreateIdentityProviderForm.d.ts.map +1 -1
  175. package/identity-provider/CreateIdentityProviderForm.js +6 -9
  176. package/identity-provider/CreateIdentityProviderForm.js.map +1 -1
  177. package/identity-provider/IdentityProviderDetailPanel.d.ts.map +1 -1
  178. package/identity-provider/IdentityProviderDetailPanel.js +17 -26
  179. package/identity-provider/IdentityProviderDetailPanel.js.map +1 -1
  180. package/identity-provider/IdentityProviderListPanel.d.ts.map +1 -1
  181. package/identity-provider/IdentityProviderListPanel.js +2 -4
  182. package/identity-provider/IdentityProviderListPanel.js.map +1 -1
  183. package/identity-provider/IdentityProviderWizard.d.ts.map +1 -1
  184. package/identity-provider/IdentityProviderWizard.js +8 -7
  185. package/identity-provider/IdentityProviderWizard.js.map +1 -1
  186. package/identity-provider/SsoLoginPrompt.js +5 -6
  187. package/identity-provider/SsoLoginPrompt.js.map +1 -1
  188. package/index.d.ts +9 -8
  189. package/index.d.ts.map +1 -1
  190. package/index.js +4 -4
  191. package/index.js.map +1 -1
  192. package/internal/DecisionButton.d.ts.map +1 -1
  193. package/internal/DecisionButton.js +1 -6
  194. package/internal/DecisionButton.js.map +1 -1
  195. package/internal/SpinnerIcon.d.ts +22 -0
  196. package/internal/SpinnerIcon.d.ts.map +1 -0
  197. package/internal/SpinnerIcon.js +23 -0
  198. package/internal/SpinnerIcon.js.map +1 -0
  199. package/internal/select-element-text.d.ts +11 -0
  200. package/internal/select-element-text.d.ts.map +1 -0
  201. package/internal/select-element-text.js +19 -0
  202. package/internal/select-element-text.js.map +1 -0
  203. package/internal/thread-card/ThreadCardShell.d.ts +27 -10
  204. package/internal/thread-card/ThreadCardShell.d.ts.map +1 -1
  205. package/internal/thread-card/ThreadCardShell.js +11 -5
  206. package/internal/thread-card/ThreadCardShell.js.map +1 -1
  207. package/internal/thread-card/glyphs.d.ts +11 -2
  208. package/internal/thread-card/glyphs.d.ts.map +1 -1
  209. package/internal/thread-card/glyphs.js +9 -3
  210. package/internal/thread-card/glyphs.js.map +1 -1
  211. package/internal/thread-card/index.d.ts +1 -1
  212. package/internal/thread-card/index.d.ts.map +1 -1
  213. package/internal/thread-card/index.js.map +1 -1
  214. package/internal/useCopyFeedback.d.ts +28 -0
  215. package/internal/useCopyFeedback.d.ts.map +1 -0
  216. package/internal/useCopyFeedback.js +40 -0
  217. package/internal/useCopyFeedback.js.map +1 -0
  218. package/invitation/InvitationCreatedAlert.d.ts.map +1 -1
  219. package/invitation/InvitationCreatedAlert.js +12 -19
  220. package/invitation/InvitationCreatedAlert.js.map +1 -1
  221. package/invitation/InvitationManager.d.ts.map +1 -1
  222. package/invitation/InvitationManager.js +14 -21
  223. package/invitation/InvitationManager.js.map +1 -1
  224. package/invitation/InvitationRedemption.d.ts.map +1 -1
  225. package/invitation/InvitationRedemption.js +2 -4
  226. package/invitation/InvitationRedemption.js.map +1 -1
  227. package/library/useExportResource.d.ts.map +1 -1
  228. package/library/useExportResource.js +16 -27
  229. package/library/useExportResource.js.map +1 -1
  230. package/manifest/ApplyManifestDialog.js +1 -1
  231. package/manifest/EditResourceYamlDialog.js +1 -1
  232. package/mcp-server/DefinitionDriftNotice.d.ts +42 -0
  233. package/mcp-server/DefinitionDriftNotice.d.ts.map +1 -0
  234. package/mcp-server/DefinitionDriftNotice.js +52 -0
  235. package/mcp-server/DefinitionDriftNotice.js.map +1 -0
  236. package/mcp-server/McpServerConnectDialog.js +1 -1
  237. package/mcp-server/McpServerDetailView.d.ts.map +1 -1
  238. package/mcp-server/McpServerDetailView.js +47 -14
  239. package/mcp-server/McpServerDetailView.js.map +1 -1
  240. package/mcp-server/OAuthAppForm.d.ts.map +1 -1
  241. package/mcp-server/OAuthAppForm.js +2 -4
  242. package/mcp-server/OAuthAppForm.js.map +1 -1
  243. package/mcp-server/internal/definitionDrift.d.ts +39 -0
  244. package/mcp-server/internal/definitionDrift.d.ts.map +1 -0
  245. package/mcp-server/internal/definitionDrift.js +122 -0
  246. package/mcp-server/internal/definitionDrift.js.map +1 -0
  247. package/mcp-server/internal/mcpServerToInput.d.ts.map +1 -1
  248. package/mcp-server/internal/mcpServerToInput.js +3 -0
  249. package/mcp-server/internal/mcpServerToInput.js.map +1 -1
  250. package/mcp-server/steps/EnvironmentAuthStep.d.ts.map +1 -1
  251. package/mcp-server/steps/EnvironmentAuthStep.js +8 -4
  252. package/mcp-server/steps/EnvironmentAuthStep.js.map +1 -1
  253. package/mcp-server/steps/IdentityTransportStep.d.ts.map +1 -1
  254. package/mcp-server/steps/IdentityTransportStep.js +5 -4
  255. package/mcp-server/steps/IdentityTransportStep.js.map +1 -1
  256. package/mcp-server/useMcpServerConnect.d.ts +1 -1
  257. package/mcp-server/useMcpServerDefinitionDrift.d.ts +44 -0
  258. package/mcp-server/useMcpServerDefinitionDrift.d.ts.map +1 -0
  259. package/mcp-server/useMcpServerDefinitionDrift.js +61 -0
  260. package/mcp-server/useMcpServerDefinitionDrift.js.map +1 -0
  261. package/models/ModelRegistryContext.d.ts +7 -1
  262. package/models/ModelRegistryContext.d.ts.map +1 -1
  263. package/models/ModelRegistryContext.js.map +1 -1
  264. package/models/ModelSelector.js +9 -1
  265. package/models/ModelSelector.js.map +1 -1
  266. package/models/index.d.ts +2 -2
  267. package/models/index.d.ts.map +1 -1
  268. package/models/index.js +1 -1
  269. package/models/index.js.map +1 -1
  270. package/models/registry.d.ts +88 -6
  271. package/models/registry.d.ts.map +1 -1
  272. package/models/registry.js +133 -27
  273. package/models/registry.js.map +1 -1
  274. package/models/useModelRegistry.d.ts +7 -1
  275. package/models/useModelRegistry.d.ts.map +1 -1
  276. package/models/useModelRegistry.js +3 -2
  277. package/models/useModelRegistry.js.map +1 -1
  278. package/oauth-app/CreateOAuthAppForm.d.ts.map +1 -1
  279. package/oauth-app/CreateOAuthAppForm.js +4 -5
  280. package/oauth-app/CreateOAuthAppForm.js.map +1 -1
  281. package/oauth-app/OAuthAppDetailPanel.d.ts.map +1 -1
  282. package/oauth-app/OAuthAppDetailPanel.js +5 -6
  283. package/oauth-app/OAuthAppDetailPanel.js.map +1 -1
  284. package/organization/CreateOrganizationForm.d.ts.map +1 -1
  285. package/organization/CreateOrganizationForm.js +5 -9
  286. package/organization/CreateOrganizationForm.js.map +1 -1
  287. package/organization/OrgProfilePanel.d.ts.map +1 -1
  288. package/organization/OrgProfilePanel.js +7 -16
  289. package/organization/OrgProfilePanel.js.map +1 -1
  290. package/package.json +4 -4
  291. package/platform-client/CreatePlatformClientForm.d.ts.map +1 -1
  292. package/platform-client/CreatePlatformClientForm.js +5 -6
  293. package/platform-client/CreatePlatformClientForm.js.map +1 -1
  294. package/platform-client/PlatformClientDetailPanel.d.ts.map +1 -1
  295. package/platform-client/PlatformClientDetailPanel.js +6 -7
  296. package/platform-client/PlatformClientDetailPanel.js.map +1 -1
  297. package/platform-client/PlatformClientListPanel.d.ts.map +1 -1
  298. package/platform-client/PlatformClientListPanel.js +2 -4
  299. package/platform-client/PlatformClientListPanel.js.map +1 -1
  300. package/platform-client/PlatformClientSecretAlert.d.ts.map +1 -1
  301. package/platform-client/PlatformClientSecretAlert.js +18 -25
  302. package/platform-client/PlatformClientSecretAlert.js.map +1 -1
  303. package/provider.d.ts +34 -1
  304. package/provider.d.ts.map +1 -1
  305. package/provider.js +14 -7
  306. package/provider.js.map +1 -1
  307. package/resource-creation/WizardNav.d.ts.map +1 -1
  308. package/resource-creation/WizardNav.js +2 -4
  309. package/resource-creation/WizardNav.js.map +1 -1
  310. package/resource-detail/ConfirmDialog.js +1 -1
  311. package/resource-detail/useCopyResource.d.ts +4 -3
  312. package/resource-detail/useCopyResource.d.ts.map +1 -1
  313. package/resource-detail/useCopyResource.js +10 -19
  314. package/resource-detail/useCopyResource.js.map +1 -1
  315. package/schedule/ScheduleDetailView.d.ts.map +1 -1
  316. package/schedule/ScheduleDetailView.js +2 -4
  317. package/schedule/ScheduleDetailView.js.map +1 -1
  318. package/schedule/ScheduleForm.d.ts.map +1 -1
  319. package/schedule/ScheduleForm.js +6 -7
  320. package/schedule/ScheduleForm.js.map +1 -1
  321. package/session/NewSessionViewer.d.ts +52 -2
  322. package/session/NewSessionViewer.d.ts.map +1 -1
  323. package/session/NewSessionViewer.js +21 -6
  324. package/session/NewSessionViewer.js.map +1 -1
  325. package/session/SessionViewer.d.ts +63 -2
  326. package/session/SessionViewer.d.ts.map +1 -1
  327. package/session/SessionViewer.js +43 -17
  328. package/session/SessionViewer.js.map +1 -1
  329. package/session/audience.d.ts +17 -0
  330. package/session/audience.d.ts.map +1 -1
  331. package/session/index.d.ts +2 -1
  332. package/session/index.d.ts.map +1 -1
  333. package/session/index.js.map +1 -1
  334. package/session/run-config.d.ts +50 -0
  335. package/session/run-config.d.ts.map +1 -0
  336. package/session/run-config.js +15 -0
  337. package/session/run-config.js.map +1 -0
  338. package/session/useNewSessionFlow.d.ts +11 -0
  339. package/session/useNewSessionFlow.d.ts.map +1 -1
  340. package/session/useNewSessionFlow.js +29 -2
  341. package/session/useNewSessionFlow.js.map +1 -1
  342. package/session/useSessionConversation.d.ts +7 -7
  343. package/session/useSessionConversation.d.ts.map +1 -1
  344. package/session/useSessionConversation.js +2 -0
  345. package/session/useSessionConversation.js.map +1 -1
  346. package/session/useSessionPageFlow.d.ts +18 -4
  347. package/session/useSessionPageFlow.d.ts.map +1 -1
  348. package/session/useSessionPageFlow.js +33 -6
  349. package/session/useSessionPageFlow.js.map +1 -1
  350. package/session/useSessionPanel.d.ts +37 -2
  351. package/session/useSessionPanel.d.ts.map +1 -1
  352. package/session/useSessionPanel.js +44 -10
  353. package/session/useSessionPanel.js.map +1 -1
  354. package/settings/ApiKeysSection.d.ts.map +1 -1
  355. package/settings/ApiKeysSection.js +3 -2
  356. package/settings/ApiKeysSection.js.map +1 -1
  357. package/settings/ChannelAppsSection.d.ts.map +1 -1
  358. package/settings/ChannelAppsSection.js +3 -2
  359. package/settings/ChannelAppsSection.js.map +1 -1
  360. package/settings/EnvironmentsSection.js +5 -3
  361. package/settings/EnvironmentsSection.js.map +1 -1
  362. package/settings/IdentityProvidersSection.d.ts.map +1 -1
  363. package/settings/IdentityProvidersSection.js +3 -2
  364. package/settings/IdentityProvidersSection.js.map +1 -1
  365. package/settings/InvitationsSection.d.ts.map +1 -1
  366. package/settings/InvitationsSection.js +3 -1
  367. package/settings/InvitationsSection.js.map +1 -1
  368. package/settings/MembersSection.d.ts.map +1 -1
  369. package/settings/MembersSection.js +3 -1
  370. package/settings/MembersSection.js.map +1 -1
  371. package/settings/OAuthAppsSection.d.ts.map +1 -1
  372. package/settings/OAuthAppsSection.js +3 -2
  373. package/settings/OAuthAppsSection.js.map +1 -1
  374. package/settings/OrgProfileSection.d.ts.map +1 -1
  375. package/settings/OrgProfileSection.js +3 -2
  376. package/settings/OrgProfileSection.js.map +1 -1
  377. package/settings/PlatformClientsSection.d.ts.map +1 -1
  378. package/settings/PlatformClientsSection.js +3 -2
  379. package/settings/PlatformClientsSection.js.map +1 -1
  380. package/settings/UsageSection.d.ts.map +1 -1
  381. package/settings/UsageSection.js +3 -1
  382. package/settings/UsageSection.js.map +1 -1
  383. package/sharing/ShareAgentDialog.d.ts.map +1 -1
  384. package/sharing/ShareAgentDialog.js +18 -7
  385. package/sharing/ShareAgentDialog.js.map +1 -1
  386. package/sidebar/chrome.d.ts +3 -4
  387. package/sidebar/chrome.d.ts.map +1 -1
  388. package/sidebar/chrome.js +5 -4
  389. package/sidebar/chrome.js.map +1 -1
  390. package/skill/SkillDiffDialog.js +1 -1
  391. package/src/access/ManageAccessDialog.tsx +10 -4
  392. package/src/activity/format-relative-time.ts +11 -9
  393. package/src/agent/steps/CapabilitiesStep.tsx +6 -3
  394. package/src/agent/steps/IdentityStep.tsx +19 -12
  395. package/src/agent-instance/CreateAgentInstanceDialog.tsx +17 -8
  396. package/src/api-key/ApiKeyCreatedAlert.tsx +10 -19
  397. package/src/api-key/ApiKeyListPanel.tsx +3 -39
  398. package/src/api-key/CreateApiKeyForm.tsx +12 -26
  399. package/src/approval-defaults-context.ts +56 -0
  400. package/src/attachment/__tests__/vision-preflight.test.ts +311 -0
  401. package/src/attachment/index.ts +12 -0
  402. package/src/attachment/vision-preflight.ts +236 -0
  403. package/src/billing/AutoRechargeCard.tsx +5 -4
  404. package/src/billing/BillingSection.tsx +4 -3
  405. package/src/channel/ChannelConversationsDialog.tsx +8 -4
  406. package/src/channel/ChannelCredentialsDialog.tsx +14 -4
  407. package/src/channel/ChannelTemplatesDialog.tsx +8 -4
  408. package/src/channel/ConnectSlackDialog.tsx +14 -4
  409. package/src/channel/ConnectWhatsAppDialog.tsx +14 -4
  410. package/src/channel/useChannelSessions.ts +3 -0
  411. package/src/channel-app/ChannelAppDetailPanel.tsx +15 -12
  412. package/src/channel-app/CreateChannelAppForm.tsx +17 -12
  413. package/src/channel-app/internal.tsx +5 -25
  414. package/src/composer/ComposerToolbar.tsx +1 -1
  415. package/src/composer/SessionComposer.tsx +160 -13
  416. package/src/composer/__tests__/SessionComposer-modelCoherence.test.tsx +220 -0
  417. package/src/composer/__tests__/SessionComposer-visionPreflight.test.tsx +222 -0
  418. package/src/composer/icons.tsx +0 -18
  419. package/src/conversation/ConversationComposer.tsx +1 -1
  420. package/src/conversation/ConversationListPane.tsx +4 -3
  421. package/src/cursor-accounts/MemberCoverageTable.tsx +3 -14
  422. package/src/cursor-accounts/__tests__/CursorAccountsConsole.test.tsx +2 -10
  423. package/src/dashboard/DashboardFailedRuns.tsx +2 -12
  424. package/src/environment/CreateEnvironmentForm.tsx +8 -27
  425. package/src/environment/EnvVarForm.tsx +2 -18
  426. package/src/environment/EnvironmentVariableEditor.tsx +5 -21
  427. package/src/execution/ArtifactApplyButton.tsx +2 -17
  428. package/src/execution/ExecutionErrorNotice.tsx +99 -0
  429. package/src/execution/FilePathLink.tsx +5 -9
  430. package/src/execution/FileReviewCard.tsx +1 -20
  431. package/src/execution/FollowUpInput.tsx +1 -16
  432. package/src/execution/LivenessStatusLine.tsx +59 -0
  433. package/src/execution/MessageEntry.tsx +136 -25
  434. package/src/execution/MessageThread.tsx +84 -83
  435. package/src/execution/SetupProgress.tsx +5 -1
  436. package/src/execution/SubAgentSection.tsx +9 -20
  437. package/src/execution/TerminalSession.tsx +97 -10
  438. package/src/execution/ToolCallDetail.tsx +19 -0
  439. package/src/execution/ToolCallItem.tsx +157 -37
  440. package/src/execution/ToolRunGroup.tsx +30 -32
  441. package/src/execution/WriteBackCard.tsx +5 -24
  442. package/src/execution/__tests__/MessageEntry-copy.test.tsx +125 -0
  443. package/src/execution/__tests__/MessageThread.test.tsx +97 -0
  444. package/src/execution/__tests__/TerminalSession.test.tsx +71 -1
  445. package/src/execution/__tests__/ToolCallDetail.test.tsx +33 -1
  446. package/src/execution/__tests__/ToolCallItem.test.tsx +299 -11
  447. package/src/execution/__tests__/ToolRunGroup.test.tsx +41 -9
  448. package/src/execution/__tests__/message-thread-slots.test.tsx +92 -0
  449. package/src/execution/__tests__/tool-presenter.test.tsx +41 -4
  450. package/src/execution/index.ts +8 -2
  451. package/src/execution/tool-categories.ts +72 -8
  452. package/src/execution/tool-presenter.ts +22 -1
  453. package/src/execution/useArtifactInspection.ts +4 -8
  454. package/src/iam-policy/GrantAccessForm.tsx +2 -18
  455. package/src/iam-policy/OrgMembersPanel.tsx +3 -19
  456. package/src/iam-policy/RoleSelector.tsx +8 -1
  457. package/src/identity-provider/CreateIdentityProviderForm.tsx +13 -31
  458. package/src/identity-provider/IdentityProviderDetailPanel.tsx +24 -49
  459. package/src/identity-provider/IdentityProviderListPanel.tsx +2 -18
  460. package/src/identity-provider/IdentityProviderWizard.tsx +15 -32
  461. package/src/identity-provider/SsoLoginPrompt.tsx +6 -21
  462. package/src/index.ts +23 -1
  463. package/src/internal/DecisionButton.tsx +1 -20
  464. package/src/internal/SpinnerIcon.tsx +42 -0
  465. package/src/internal/__tests__/ThreadCardShell.test.tsx +43 -7
  466. package/src/internal/__tests__/useCopyFeedback.test.ts +92 -0
  467. package/src/internal/select-element-text.ts +17 -0
  468. package/src/internal/thread-card/ThreadCardShell.tsx +53 -21
  469. package/src/internal/thread-card/glyphs.tsx +24 -3
  470. package/src/internal/thread-card/index.ts +1 -0
  471. package/src/internal/useCopyFeedback.ts +61 -0
  472. package/src/invitation/InvitationCreatedAlert.tsx +10 -18
  473. package/src/invitation/InvitationManager.tsx +23 -34
  474. package/src/invitation/InvitationRedemption.tsx +2 -18
  475. package/src/library/useExportResource.ts +15 -29
  476. package/src/manifest/ApplyManifestDialog.tsx +1 -1
  477. package/src/manifest/EditResourceYamlDialog.tsx +1 -1
  478. package/src/mcp-server/DefinitionDriftNotice.tsx +120 -0
  479. package/src/mcp-server/McpServerConnectDialog.tsx +1 -1
  480. package/src/mcp-server/McpServerDetailView.tsx +58 -26
  481. package/src/mcp-server/OAuthAppForm.tsx +2 -18
  482. package/src/mcp-server/__tests__/DefinitionDriftNotice.test.tsx +57 -0
  483. package/src/mcp-server/__tests__/definitionDrift.test.ts +245 -0
  484. package/src/mcp-server/__tests__/mcpServerToInput.test.ts +201 -0
  485. package/src/mcp-server/__tests__/useMcpServerDefinitionDrift.test.tsx +173 -0
  486. package/src/mcp-server/internal/definitionDrift.ts +158 -0
  487. package/src/mcp-server/internal/mcpServerToInput.ts +3 -0
  488. package/src/mcp-server/steps/EnvironmentAuthStep.tsx +19 -19
  489. package/src/mcp-server/steps/IdentityTransportStep.tsx +24 -23
  490. package/src/mcp-server/useMcpServerConnect.ts +1 -1
  491. package/src/mcp-server/useMcpServerDefinitionDrift.ts +95 -0
  492. package/src/models/ModelRegistryContext.ts +7 -1
  493. package/src/models/ModelSelector.tsx +37 -0
  494. package/src/models/__tests__/ModelSelector-visionIndicator.test.tsx +129 -0
  495. package/src/models/__tests__/resolveDefaultModel.test.ts +115 -0
  496. package/src/models/__tests__/useModelRegistry.test.tsx +99 -4
  497. package/src/models/index.ts +2 -2
  498. package/src/models/registry.ts +196 -29
  499. package/src/models/useModelRegistry.ts +10 -2
  500. package/src/oauth-app/CreateOAuthAppForm.tsx +16 -31
  501. package/src/oauth-app/OAuthAppDetailPanel.tsx +16 -31
  502. package/src/organization/CreateOrganizationForm.tsx +10 -29
  503. package/src/organization/OrgProfilePanel.tsx +13 -44
  504. package/src/platform-client/CreatePlatformClientForm.tsx +9 -29
  505. package/src/platform-client/PlatformClientDetailPanel.tsx +10 -30
  506. package/src/platform-client/PlatformClientListPanel.tsx +2 -18
  507. package/src/platform-client/PlatformClientSecretAlert.tsx +26 -55
  508. package/src/provider.tsx +76 -33
  509. package/src/resource-creation/WizardNav.tsx +2 -18
  510. package/src/resource-detail/ConfirmDialog.tsx +1 -1
  511. package/src/resource-detail/useCopyResource.ts +17 -23
  512. package/src/schedule/ScheduleDetailView.tsx +2 -18
  513. package/src/schedule/ScheduleForm.tsx +19 -34
  514. package/src/session/NewSessionViewer.tsx +85 -7
  515. package/src/session/SessionViewer.tsx +120 -17
  516. package/src/session/__tests__/audienceWiring.test.tsx +76 -0
  517. package/src/session/__tests__/panelNegotiation.test.tsx +302 -0
  518. package/src/session/__tests__/useNewSessionFlow.test.tsx +134 -5
  519. package/src/session/__tests__/useSessionPageFlow.autoApprove.test.tsx +74 -0
  520. package/src/session/__tests__/useSessionPageFlow.runConfig.test.tsx +157 -0
  521. package/src/session/__tests__/useSessionPanel.test.ts +114 -0
  522. package/src/session/audience.ts +18 -0
  523. package/src/session/index.ts +2 -1
  524. package/src/session/run-config.ts +59 -0
  525. package/src/session/useNewSessionFlow.ts +39 -2
  526. package/src/session/useSessionConversation.ts +10 -8
  527. package/src/session/useSessionPageFlow.ts +51 -10
  528. package/src/session/useSessionPanel.ts +91 -10
  529. package/src/settings/ApiKeysSection.tsx +4 -3
  530. package/src/settings/ChannelAppsSection.tsx +4 -3
  531. package/src/settings/EnvironmentsSection.tsx +8 -5
  532. package/src/settings/IdentityProvidersSection.tsx +4 -3
  533. package/src/settings/InvitationsSection.tsx +4 -2
  534. package/src/settings/MembersSection.tsx +4 -2
  535. package/src/settings/OAuthAppsSection.tsx +4 -3
  536. package/src/settings/OrgProfileSection.tsx +4 -3
  537. package/src/settings/PlatformClientsSection.tsx +4 -3
  538. package/src/settings/UsageSection.tsx +4 -2
  539. package/src/sharing/ShareAgentDialog.tsx +28 -10
  540. package/src/sidebar/__tests__/WorkspaceSidebar.test.tsx +4 -1
  541. package/src/sidebar/chrome.tsx +6 -6
  542. package/src/skill/SkillDiffDialog.tsx +1 -1
  543. package/src/styles.css +43 -0
  544. package/src/version-history/VersionTimelineEntry.tsx +1 -21
  545. package/src/workflow/FailedRunsWidget.tsx +2 -9
  546. package/src/workflow/PendingApprovalsWidget.tsx +2 -9
  547. package/src/workflow/ViewYamlDialog.tsx +7 -22
  548. package/src/workflow/WorkflowArchitectDialog.tsx +8 -27
  549. package/src/workflow/WorkflowArtifactDocument.tsx +5 -9
  550. package/src/workflow/WorkflowCanvasEditor.tsx +2 -0
  551. package/src/workflow/WorkflowCanvasInner.tsx +14 -1
  552. package/src/workflow/WorkflowDiffGraph.tsx +7 -1
  553. package/src/workflow/WorkflowExecutionViewer.tsx +88 -11
  554. package/src/workflow/WorkflowExplainDialog.tsx +8 -24
  555. package/src/workflow/WorkflowOverviewGraph.tsx +9 -1
  556. package/src/workflow/WorkflowRefinePanel.tsx +2 -18
  557. package/src/workflow/WorkflowRepairCard.tsx +2 -18
  558. package/src/workflow/WorkflowRunDialog.tsx +3 -23
  559. package/src/workflow/WorkflowTaskApprovalSummary.tsx +2 -17
  560. package/src/workflow/WorkflowVersionBadge.tsx +4 -13
  561. package/src/workflow/WorkflowVersionTimeline.tsx +1 -25
  562. package/src/workflow/__tests__/panelNegotiation.test.tsx +230 -0
  563. package/src/workflow/__tests__/useWorkflowCanvas.dirty.test.tsx +178 -0
  564. package/src/workflow/__tests__/useWorkflowCanvas.drag.test.tsx +224 -0
  565. package/src/workflow/__tests__/useWorkflowExecutionPanel.test.ts +100 -0
  566. package/src/workflow/execution-comparison/ExecutionComparisonPicker.tsx +7 -11
  567. package/src/workflow/execution-history/ExecutionHistoryTable.tsx +1 -25
  568. package/src/workflow/index.ts +1 -0
  569. package/src/workflow/instance/CreateWorkflowInstanceDialog.tsx +1 -1
  570. package/src/workflow/instance/WorkflowInstanceDetailPanel.tsx +2 -1
  571. package/src/workflow/picker/BranchAddPopover.tsx +4 -3
  572. package/src/workflow/templates/WorkflowTemplatePreview.tsx +1 -1
  573. package/src/workflow/useApprovalBoundary.ts +1 -1
  574. package/src/workflow/useWorkflowCanvas.ts +114 -11
  575. package/src/workflow/useWorkflowExecutionPanel.ts +95 -13
  576. package/styles.css +1 -1
  577. package/version-history/VersionTimelineEntry.d.ts.map +1 -1
  578. package/version-history/VersionTimelineEntry.js +1 -23
  579. package/version-history/VersionTimelineEntry.js.map +1 -1
  580. package/workflow/CanvasTransitionEdge.d.ts +1 -1
  581. package/workflow/FailedRunsWidget.d.ts.map +1 -1
  582. package/workflow/FailedRunsWidget.js +2 -11
  583. package/workflow/FailedRunsWidget.js.map +1 -1
  584. package/workflow/PendingApprovalsWidget.d.ts.map +1 -1
  585. package/workflow/PendingApprovalsWidget.js +2 -11
  586. package/workflow/PendingApprovalsWidget.js.map +1 -1
  587. package/workflow/ViewYamlDialog.d.ts.map +1 -1
  588. package/workflow/ViewYamlDialog.js +7 -23
  589. package/workflow/ViewYamlDialog.js.map +1 -1
  590. package/workflow/WorkflowArchitectDialog.d.ts.map +1 -1
  591. package/workflow/WorkflowArchitectDialog.js +7 -11
  592. package/workflow/WorkflowArchitectDialog.js.map +1 -1
  593. package/workflow/WorkflowArtifactDocument.d.ts.map +1 -1
  594. package/workflow/WorkflowArtifactDocument.js +5 -8
  595. package/workflow/WorkflowArtifactDocument.js.map +1 -1
  596. package/workflow/WorkflowCanvasEditor.d.ts.map +1 -1
  597. package/workflow/WorkflowCanvasEditor.js +1 -1
  598. package/workflow/WorkflowCanvasEditor.js.map +1 -1
  599. package/workflow/WorkflowCanvasInner.d.ts +4 -2
  600. package/workflow/WorkflowCanvasInner.d.ts.map +1 -1
  601. package/workflow/WorkflowCanvasInner.js +7 -3
  602. package/workflow/WorkflowCanvasInner.js.map +1 -1
  603. package/workflow/WorkflowDiffGraph.js +6 -2
  604. package/workflow/WorkflowDiffGraph.js.map +1 -1
  605. package/workflow/WorkflowExecutionViewer.d.ts +51 -0
  606. package/workflow/WorkflowExecutionViewer.d.ts.map +1 -1
  607. package/workflow/WorkflowExecutionViewer.js +23 -6
  608. package/workflow/WorkflowExecutionViewer.js.map +1 -1
  609. package/workflow/WorkflowExplainDialog.d.ts.map +1 -1
  610. package/workflow/WorkflowExplainDialog.js +6 -8
  611. package/workflow/WorkflowExplainDialog.js.map +1 -1
  612. package/workflow/WorkflowOverviewGraph.js +8 -2
  613. package/workflow/WorkflowOverviewGraph.js.map +1 -1
  614. package/workflow/WorkflowRefinePanel.d.ts.map +1 -1
  615. package/workflow/WorkflowRefinePanel.js +2 -4
  616. package/workflow/WorkflowRefinePanel.js.map +1 -1
  617. package/workflow/WorkflowRepairCard.d.ts.map +1 -1
  618. package/workflow/WorkflowRepairCard.js +2 -4
  619. package/workflow/WorkflowRepairCard.js.map +1 -1
  620. package/workflow/WorkflowRunDialog.d.ts.map +1 -1
  621. package/workflow/WorkflowRunDialog.js +2 -7
  622. package/workflow/WorkflowRunDialog.js.map +1 -1
  623. package/workflow/WorkflowTaskApprovalSummary.d.ts.map +1 -1
  624. package/workflow/WorkflowTaskApprovalSummary.js +2 -4
  625. package/workflow/WorkflowTaskApprovalSummary.js.map +1 -1
  626. package/workflow/WorkflowVersionBadge.d.ts.map +1 -1
  627. package/workflow/WorkflowVersionBadge.js +4 -13
  628. package/workflow/WorkflowVersionBadge.js.map +1 -1
  629. package/workflow/WorkflowVersionTimeline.d.ts.map +1 -1
  630. package/workflow/WorkflowVersionTimeline.js +1 -26
  631. package/workflow/WorkflowVersionTimeline.js.map +1 -1
  632. package/workflow/execution-comparison/ExecutionComparisonPicker.d.ts.map +1 -1
  633. package/workflow/execution-comparison/ExecutionComparisonPicker.js +7 -15
  634. package/workflow/execution-comparison/ExecutionComparisonPicker.js.map +1 -1
  635. package/workflow/execution-history/ExecutionHistoryTable.d.ts.map +1 -1
  636. package/workflow/execution-history/ExecutionHistoryTable.js +1 -24
  637. package/workflow/execution-history/ExecutionHistoryTable.js.map +1 -1
  638. package/workflow/index.d.ts +1 -1
  639. package/workflow/index.d.ts.map +1 -1
  640. package/workflow/index.js.map +1 -1
  641. package/workflow/instance/CreateWorkflowInstanceDialog.js +1 -1
  642. package/workflow/instance/WorkflowInstanceDetailPanel.d.ts.map +1 -1
  643. package/workflow/instance/WorkflowInstanceDetailPanel.js +1 -1
  644. package/workflow/instance/WorkflowInstanceDetailPanel.js.map +1 -1
  645. package/workflow/picker/BranchAddPopover.d.ts.map +1 -1
  646. package/workflow/picker/BranchAddPopover.js +3 -2
  647. package/workflow/picker/BranchAddPopover.js.map +1 -1
  648. package/workflow/templates/WorkflowTemplatePreview.js +1 -1
  649. package/workflow/useApprovalBoundary.d.ts +1 -1
  650. package/workflow/useApprovalBoundary.js +1 -1
  651. package/workflow/useWorkflowCanvas.d.ts +5 -1
  652. package/workflow/useWorkflowCanvas.d.ts.map +1 -1
  653. package/workflow/useWorkflowCanvas.js +99 -13
  654. package/workflow/useWorkflowCanvas.js.map +1 -1
  655. package/workflow/useWorkflowExecutionPanel.d.ts +38 -2
  656. package/workflow/useWorkflowExecutionPanel.d.ts.map +1 -1
  657. package/workflow/useWorkflowExecutionPanel.js +46 -13
  658. package/workflow/useWorkflowExecutionPanel.js.map +1 -1
package/src/provider.tsx CHANGED
@@ -14,6 +14,8 @@ import type { ThemePresetId } from "@stigmer/theme";
14
14
  import { StigmerContext } from "./context.js";
15
15
  import { DeploymentModeContext } from "./deployment-mode.js";
16
16
  import { ExecutionTargetContext } from "./execution-target-context.js";
17
+ import { ApprovalDefaultsContext } from "./approval-defaults-context.js";
18
+ import type { ApprovalDefaults } from "./approval-defaults-context.js";
17
19
  import type { ExecutionTargetOption } from "./session/execution-target.js";
18
20
  import type { RunnerAdapter } from "./runner-adapter.js";
19
21
  import { RunnerAdapterContext } from "./runner-adapter.js";
@@ -22,7 +24,7 @@ import { ColorModeContext, useSystemColorMode } from "./color-mode.js";
22
24
  import { PortalContainerContext } from "./portal-container.js";
23
25
  import { ModelRegistryContext } from "./models/ModelRegistryContext.js";
24
26
  import type { ModelRegistryState } from "./models/ModelRegistryContext.js";
25
- import { fetchModelRegistry } from "./models/registry.js";
27
+ import { fetchModelRegistryDocument } from "./models/registry.js";
26
28
  import { TaskKindRegistryContext } from "./workflow/TaskKindRegistryContext.js";
27
29
  import type { TaskKindRegistryState } from "./workflow/TaskKindRegistryContext.js";
28
30
  import type { TaskKindDescriptor } from "./workflow/types.js";
@@ -84,6 +86,38 @@ export interface StigmerProviderProps {
84
86
  * ```
85
87
  */
86
88
  readonly runnerAdapter?: RunnerAdapter;
89
+ /**
90
+ * Approval defaults for all interactive sessions in this provider scope.
91
+ *
92
+ * This is an app-level trust judgment, not a per-session choice (the
93
+ * `executionTarget` precedent): a host embedding sessions over a surface
94
+ * it has already judged trusted — e.g. a desktop app operating on the
95
+ * user's own local folder — can arm `autoApproveAll` so users are not
96
+ * re-asked at every fresh conversation's first mutating tool call. The
97
+ * user keeps the last word: the "Auto-approving tool calls" notice shows
98
+ * from the first render with its "Turn off" affordance.
99
+ *
100
+ * Consumed by the interactive-session surface only (`useNewSessionFlow`,
101
+ * `useSessionPageFlow` and the organisms composing them). Specialized
102
+ * flows (workflow architect/explain/diagnose) and headless creation are
103
+ * deliberately unaffected — those callers pass `autoApproveAll`
104
+ * explicitly when they mean it.
105
+ *
106
+ * Omit on shared or sensitive surfaces — everything stays fail-closed
107
+ * exactly as today. Pass a referentially stable object (module constant
108
+ * or `useMemo`).
109
+ *
110
+ * @example
111
+ * ```tsx
112
+ * // A desktop host whose sessions operate on the user's own machine
113
+ * const APPROVAL_DEFAULTS = { autoApproveAll: true };
114
+ *
115
+ * <StigmerProvider client={client} approvalDefaults={APPROVAL_DEFAULTS}>
116
+ * <App />
117
+ * </StigmerProvider>
118
+ * ```
119
+ */
120
+ readonly approvalDefaults?: ApprovalDefaults;
87
121
  /**
88
122
  * Built-in theme preset to apply.
89
123
  *
@@ -238,6 +272,7 @@ export function StigmerProvider({
238
272
  deploymentMode = "cloud",
239
273
  executionTarget,
240
274
  runnerAdapter,
275
+ approvalDefaults,
241
276
  preset,
242
277
  className,
243
278
  colorMode = "light",
@@ -258,34 +293,36 @@ export function StigmerProvider({
258
293
  <StigmerContext.Provider value={client}>
259
294
  <DeploymentModeContext.Provider value={deploymentMode}>
260
295
  <ExecutionTargetContext.Provider value={executionTarget}>
261
- <RunnerAdapterContext.Provider value={runnerAdapter ?? null}>
262
- <ColorModeContext.Provider value={resolvedMode}>
263
- <ModelRegistryContext.Provider value={registryState}>
264
- <TaskKindRegistryContext.Provider value={taskKindRegistryState}>
265
- <ReviewRendererContext.Provider value={reviewRenderers ?? EMPTY_REVIEW_RENDERERS}>
266
- <PortalContainerContext.Provider value={portalContainer}>
267
- {/*
268
- The in-tree scoping container. `data-stgm-root` is a
269
- stable public selector the documented seam for hosts
270
- to style THIS element only (e.g. the fixed-height
271
- embedding recipe, #260). It must never be mirrored
272
- onto the portal container, whose own `data-stgm-portal`
273
- marker keeps host in-tree-only CSS away from the
274
- off-tree element.
275
- */}
276
- <div
277
- className={scope.className}
278
- data-stgm-root=""
279
- data-stgm-color-mode={scope.colorMode}
280
- >
281
- {children}
282
- </div>
283
- </PortalContainerContext.Provider>
284
- </ReviewRendererContext.Provider>
285
- </TaskKindRegistryContext.Provider>
286
- </ModelRegistryContext.Provider>
287
- </ColorModeContext.Provider>
288
- </RunnerAdapterContext.Provider>
296
+ <ApprovalDefaultsContext.Provider value={approvalDefaults}>
297
+ <RunnerAdapterContext.Provider value={runnerAdapter ?? null}>
298
+ <ColorModeContext.Provider value={resolvedMode}>
299
+ <ModelRegistryContext.Provider value={registryState}>
300
+ <TaskKindRegistryContext.Provider value={taskKindRegistryState}>
301
+ <ReviewRendererContext.Provider value={reviewRenderers ?? EMPTY_REVIEW_RENDERERS}>
302
+ <PortalContainerContext.Provider value={portalContainer}>
303
+ {/*
304
+ The in-tree scoping container. `data-stgm-root` is a
305
+ stable public selector the documented seam for hosts
306
+ to style THIS element only (e.g. the fixed-height
307
+ embedding recipe, #260). It must never be mirrored
308
+ onto the portal container, whose own `data-stgm-portal`
309
+ marker keeps host in-tree-only CSS away from the
310
+ off-tree element.
311
+ */}
312
+ <div
313
+ className={scope.className}
314
+ data-stgm-root=""
315
+ data-stgm-color-mode={scope.colorMode}
316
+ >
317
+ {children}
318
+ </div>
319
+ </PortalContainerContext.Provider>
320
+ </ReviewRendererContext.Provider>
321
+ </TaskKindRegistryContext.Provider>
322
+ </ModelRegistryContext.Provider>
323
+ </ColorModeContext.Provider>
324
+ </RunnerAdapterContext.Provider>
325
+ </ApprovalDefaultsContext.Provider>
289
326
  </ExecutionTargetContext.Provider>
290
327
  </DeploymentModeContext.Provider>
291
328
  </StigmerContext.Provider>
@@ -310,6 +347,7 @@ function useModelRegistryFetch(client: Stigmer): ModelRegistryState {
310
347
  const [version, setVersion] = useState(0);
311
348
  const [state, setState] = useState<Omit<ModelRegistryState, "refetch">>({
312
349
  models: [],
350
+ visionLimits: undefined,
313
351
  isLoading: true,
314
352
  error: null,
315
353
  });
@@ -333,7 +371,7 @@ function useModelRegistryFetch(client: Stigmer): ModelRegistryState {
333
371
  }
334
372
  }
335
373
 
336
- return fetchModelRegistry(c.baseUrl, token, c.fetch);
374
+ return fetchModelRegistryDocument(c.baseUrl, token, c.fetch);
337
375
  }, []);
338
376
 
339
377
  useEffect(() => {
@@ -348,9 +386,14 @@ function useModelRegistryFetch(client: Stigmer): ModelRegistryState {
348
386
  setState((prev) => (prev.isLoading ? prev : { ...prev, isLoading: true }));
349
387
 
350
388
  try {
351
- const models = await doFetch(signal);
352
- if (!signal.aborted && models) {
353
- setState({ models, isLoading: false, error: null });
389
+ const document = await doFetch(signal);
390
+ if (!signal.aborted && document) {
391
+ setState({
392
+ models: document.models,
393
+ visionLimits: document.visionLimits,
394
+ isLoading: false,
395
+ error: null,
396
+ });
354
397
  fetchAttemptRef.current = 0;
355
398
  }
356
399
  } catch (err: unknown) {
@@ -1,6 +1,7 @@
1
1
  "use client";
2
2
 
3
3
  import { cn } from "@stigmer/theme";
4
+ import { SpinnerIcon } from "../internal/SpinnerIcon.js";
4
5
 
5
6
  /** Props for {@link WizardNav}. */
6
7
  export interface WizardNavProps {
@@ -98,7 +99,7 @@ export function WizardNav({
98
99
  "stg:disabled:pointer-events-none stg:disabled:opacity-40",
99
100
  )}
100
101
  >
101
- {isSubmitting && <SpinnerIcon />}
102
+ {isSubmitting && <SpinnerIcon size={14} />}
102
103
  {nextLabel}
103
104
  {!isSubmitting && <ArrowRightIcon className="stg:size-3.5" />}
104
105
  </button>
@@ -145,20 +146,3 @@ function ArrowRightIcon({ className }: { readonly className?: string }) {
145
146
  );
146
147
  }
147
148
 
148
- function SpinnerIcon() {
149
- return (
150
- <svg
151
- width="14"
152
- height="14"
153
- viewBox="0 0 16 16"
154
- fill="none"
155
- stroke="currentColor"
156
- strokeWidth="2"
157
- strokeLinecap="round"
158
- className="stg:animate-spin"
159
- aria-hidden="true"
160
- >
161
- <path d="M8 2a6 6 0 1 0 6 6" />
162
- </svg>
163
- );
164
- }
@@ -81,7 +81,7 @@ export function ConfirmDialog({
81
81
  onCancel={handleDialogCancel}
82
82
  className={cn(
83
83
  "stg:fixed stg:inset-0 stg:z-50 stg:m-auto stg:w-full stg:max-w-sm stg:rounded-lg stg:border stg:border-border stg:bg-popover stg:p-0 stg:text-popover-foreground stg:shadow-lg",
84
- "stg:backdrop:bg-black/50",
84
+ "stg:backdrop:bg-backdrop",
85
85
  "stg:open:animate-in stg:open:fade-in-0 stg:open:zoom-in-95",
86
86
  )}
87
87
  >
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { useCallback, useMemo } from "react";
4
4
  import { toast } from "../feedback/toast.js";
5
+ import { useCopyFeedback } from "../internal/useCopyFeedback.js";
5
6
 
6
7
  export interface UseCopyResourceReturn {
7
8
  /** Copy arbitrary text to the clipboard with toast feedback. */
@@ -17,9 +18,10 @@ export interface UseCopyResourceReturn {
17
18
  /**
18
19
  * Clipboard helper for resource detail pages.
19
20
  *
20
- * Wraps `navigator.clipboard.writeText` with toast feedback so every
21
- * copy action is confirmed visually (Nielsen heuristic #1 — visibility
22
- * of system status). Falls back to a hidden textarea for older browsers.
21
+ * Wraps the shared copy behavior (`useCopyFeedback`) with toast feedback so
22
+ * every copy action is confirmed visually (Nielsen heuristic #1 — visibility
23
+ * of system status). A rejected write (insecure context, denied permission)
24
+ * toasts an error instead of claiming a copy that didn't happen.
23
25
  *
24
26
  * @example
25
27
  * ```tsx
@@ -31,15 +33,18 @@ export interface UseCopyResourceReturn {
31
33
  * ```
32
34
  */
33
35
  export function useCopyResource(): UseCopyResourceReturn {
34
- const copy = useCallback(async (text: string, label: string) => {
35
- try {
36
- await navigator.clipboard.writeText(text);
37
- toast.success(`${label} copied`);
38
- } catch {
39
- fallbackCopy(text);
40
- toast.success(`${label} copied`);
41
- }
42
- }, []);
36
+ const { copy: copyText } = useCopyFeedback();
37
+
38
+ const copy = useCallback(
39
+ async (text: string, label: string) => {
40
+ if (await copyText(text)) {
41
+ toast.success(`${label} copied`);
42
+ } else {
43
+ toast.error(`Couldn't copy ${label}`);
44
+ }
45
+ },
46
+ [copyText],
47
+ );
43
48
 
44
49
  const copyId = useCallback(
45
50
  (id: string) => copy(id, "ID"),
@@ -61,14 +66,3 @@ export function useCopyResource(): UseCopyResourceReturn {
61
66
  [copy, copyId, copySlug, copyQualifiedSlug],
62
67
  );
63
68
  }
64
-
65
- function fallbackCopy(text: string): void {
66
- const textarea = document.createElement("textarea");
67
- textarea.value = text;
68
- textarea.style.position = "fixed";
69
- textarea.style.opacity = "0";
70
- document.body.appendChild(textarea);
71
- textarea.select();
72
- document.execCommand("copy");
73
- document.body.removeChild(textarea);
74
- }
@@ -71,6 +71,7 @@ import { useResumeSchedule } from "./useResumeSchedule.js";
71
71
  import { useSetScheduleEnabled } from "./useSetScheduleEnabled.js";
72
72
  import { useTriggerSchedule } from "./useTriggerSchedule.js";
73
73
  import { useUpdateScheduleSpec } from "./useUpdateScheduleSpec.js";
74
+ import { SpinnerIcon } from "../internal/SpinnerIcon.js";
74
75
 
75
76
  /** Props for {@link ScheduleDetailView}. */
76
77
  export interface ScheduleDetailViewProps {
@@ -1311,7 +1312,7 @@ function InlineEditActions({
1311
1312
  "stg:focus-visible:outline-none stg:focus-visible:ring-2 stg:focus-visible:ring-ring",
1312
1313
  )}
1313
1314
  >
1314
- {isSaving && <SpinnerIcon />}
1315
+ {isSaving && <SpinnerIcon size={14} />}
1315
1316
  Save
1316
1317
  </button>
1317
1318
  </div>
@@ -1632,20 +1633,3 @@ function PencilIcon({ className }: { readonly className?: string }) {
1632
1633
  );
1633
1634
  }
1634
1635
 
1635
- function SpinnerIcon() {
1636
- return (
1637
- <svg
1638
- width="14"
1639
- height="14"
1640
- viewBox="0 0 16 16"
1641
- fill="none"
1642
- stroke="currentColor"
1643
- strokeWidth="2"
1644
- strokeLinecap="round"
1645
- className="stg:animate-spin"
1646
- aria-hidden="true"
1647
- >
1648
- <path d="M8 2a6 6 0 1 0 6 6" />
1649
- </svg>
1650
- );
1651
- }
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
 
3
- import { useCallback, useState, type FormEvent } from "react";
3
+ import { type FormEvent, useCallback, useId, useState } from "react";
4
4
  import { cn } from "@stigmer/theme";
5
5
  import {
6
6
  getUserMessage,
@@ -24,6 +24,7 @@ import { CadenceField } from "./CadenceField.js";
24
24
  import { TimeZoneField, browserTimeZone } from "./TimeZoneField.js";
25
25
  import { useCreateSchedule } from "./useCreateSchedule.js";
26
26
  import { cadenceToCron, validateCron, type CadencePreset } from "./cadence.js";
27
+ import { SpinnerIcon } from "../internal/SpinnerIcon.js";
27
28
 
28
29
  // ---------------------------------------------------------------------------
29
30
  // Public API
@@ -84,6 +85,7 @@ export function ScheduleForm({
84
85
  onCancel,
85
86
  className,
86
87
  }: ScheduleFormProps) {
88
+ const baseId = useId();
87
89
  const { create, isCreating, error, clearError } = useCreateSchedule();
88
90
 
89
91
  const [name, setName] = useState("");
@@ -209,11 +211,11 @@ export function ScheduleForm({
209
211
  >
210
212
  {/* Name */}
211
213
  <div className="stg:space-y-1">
212
- <label htmlFor="stgm-new-schedule-name" className={labelClasses}>
214
+ <label htmlFor={`${baseId}-name`} className={labelClasses}>
213
215
  Name
214
216
  </label>
215
217
  <input
216
- id="stgm-new-schedule-name"
218
+ id={`${baseId}-name`}
217
219
  type="text"
218
220
  value={name}
219
221
  onChange={(e) => setName(e.target.value)}
@@ -227,13 +229,13 @@ export function ScheduleForm({
227
229
 
228
230
  {/* Target agent */}
229
231
  <div className="stg:space-y-1">
230
- <span id="stgm-new-schedule-agent-label" className={labelClasses}>
232
+ <span id={`${baseId}-agent-label`} className={labelClasses}>
231
233
  Agent to run
232
234
  </span>
233
235
  <Popover.Root open={pickerOpen} onOpenChange={setPickerOpen}>
234
236
  <Popover.Trigger
235
237
  disabled={isCreating}
236
- aria-labelledby="stgm-new-schedule-agent-label"
238
+ aria-labelledby={`${baseId}-agent-label`}
237
239
  className={cn(
238
240
  "stg:flex stg:w-full stg:items-center stg:justify-between stg:rounded-md stg:border stg:border-input stg:bg-background stg:px-2.5 stg:py-1.5 stg:text-left stg:text-xs",
239
241
  "stg:focus-visible:outline-none stg:focus-visible:ring-1 stg:focus-visible:ring-ring",
@@ -267,11 +269,11 @@ export function ScheduleForm({
267
269
 
268
270
  {/* Message */}
269
271
  <div className="stg:space-y-1">
270
- <label htmlFor="stgm-new-schedule-message" className={labelClasses}>
272
+ <label htmlFor={`${baseId}-message`} className={labelClasses}>
271
273
  Message
272
274
  </label>
273
275
  <textarea
274
- id="stgm-new-schedule-message"
276
+ id={`${baseId}-message`}
275
277
  value={message}
276
278
  onChange={(e) => setMessage(e.target.value)}
277
279
  placeholder="The instruction the agent receives on every fire — write it for a run with no human present."
@@ -314,7 +316,7 @@ export function ScheduleForm({
314
316
  schedule fire, so the picker is filtered to visibility_org —
315
317
  the same credential surface a channel binding uses. */}
316
318
  <div className="stg:space-y-1">
317
- <span id="stgm-new-schedule-env-label" className={labelClasses}>
319
+ <span id={`${baseId}-env-label`} className={labelClasses}>
318
320
  Environments <span className="stg:font-normal stg:text-muted-foreground">(optional)</span>
319
321
  </span>
320
322
  <EnvironmentPicker
@@ -391,12 +393,12 @@ export function ScheduleForm({
391
393
  surface: nobody is watching a 3 AM fire (DD-018 D-5). Clamped
392
394
  by the platform profile; tool-round bounds stay API-only. */}
393
395
  <div className="stg:space-y-1">
394
- <label htmlFor="stgm-new-schedule-budget" className={labelClasses}>
396
+ <label htmlFor={`${baseId}-budget`} className={labelClasses}>
395
397
  Budget per run (USD){" "}
396
398
  <span className="stg:font-normal stg:text-muted-foreground">(optional)</span>
397
399
  </label>
398
400
  <input
399
- id="stgm-new-schedule-budget"
401
+ id={`${baseId}-budget`}
400
402
  type="number"
401
403
  min="0"
402
404
  step="any"
@@ -415,11 +417,11 @@ export function ScheduleForm({
415
417
 
416
418
  {/* Time zone */}
417
419
  <div className="stg:space-y-1">
418
- <label htmlFor="stgm-new-schedule-tz" className={labelClasses}>
420
+ <label htmlFor={`${baseId}-tz`} className={labelClasses}>
419
421
  Time zone
420
422
  </label>
421
423
  <TimeZoneField
422
- id="stgm-new-schedule-tz"
424
+ id={`${baseId}-tz`}
423
425
  value={timeZone}
424
426
  onChange={setTimeZone}
425
427
  disabled={isCreating}
@@ -429,16 +431,16 @@ export function ScheduleForm({
429
431
  {/* Enabled */}
430
432
  <div className="stg:flex stg:items-start stg:gap-3">
431
433
  <Switch
432
- id="stgm-new-schedule-enabled"
434
+ id={`${baseId}-enabled`}
433
435
  checked={enabled}
434
436
  onCheckedChange={setEnabled}
435
437
  disabled={isCreating}
436
- aria-labelledby="stgm-new-schedule-enabled-label"
438
+ aria-labelledby={`${baseId}-enabled-label`}
437
439
  />
438
440
  <div className="stg:space-y-0.5">
439
441
  <label
440
- id="stgm-new-schedule-enabled-label"
441
- htmlFor="stgm-new-schedule-enabled"
442
+ id={`${baseId}-enabled-label`}
443
+ htmlFor={`${baseId}-enabled`}
442
444
  className={labelClasses}
443
445
  >
444
446
  Enabled
@@ -467,7 +469,7 @@ export function ScheduleForm({
467
469
  "stg:disabled:pointer-events-none stg:disabled:opacity-40",
468
470
  )}
469
471
  >
470
- {isCreating && <SpinnerIcon />}
472
+ {isCreating && <SpinnerIcon size={14} />}
471
473
  Create schedule
472
474
  </button>
473
475
 
@@ -597,20 +599,3 @@ function ChevronIcon() {
597
599
  );
598
600
  }
599
601
 
600
- function SpinnerIcon() {
601
- return (
602
- <svg
603
- width="14"
604
- height="14"
605
- viewBox="0 0 16 16"
606
- fill="none"
607
- stroke="currentColor"
608
- strokeWidth="2"
609
- strokeLinecap="round"
610
- className="stg:animate-spin"
611
- aria-hidden="true"
612
- >
613
- <path d="M8 2a6 6 0 1 0 6 6" />
614
- </svg>
615
- );
616
- }
@@ -18,7 +18,8 @@ import { useSessionPanel } from "./useSessionPanel.js";
18
18
  import { useSessionRailViews } from "./useSessionRailViews.js";
19
19
  import { SessionPanelChip } from "./SessionPanelChip.js";
20
20
  import type { RuntimeEnvProvider } from "./runtime-env.js";
21
- import type { SessionAudience } from "./audience.js";
21
+ import type { SessionAudience, SessionPanelMode } from "./audience.js";
22
+ import type { SessionRunConfig } from "./run-config.js";
22
23
 
23
24
  /** Props for {@link NewSessionViewer}. */
24
25
  export interface NewSessionViewerProps {
@@ -98,6 +99,61 @@ export interface NewSessionViewerProps {
98
99
  */
99
100
  readonly audience?: SessionAudience;
100
101
 
102
+ /**
103
+ * Owner-pinned model/tier for the session's first execution
104
+ * (stigmer/stigmer#664). Same contract as
105
+ * {@link SessionViewerProps.runConfig} (DD-016 parity): wins over the
106
+ * composer and the restored preference, hides the model picker, and
107
+ * is ignored for the `"guest"` audience. Pair with the same pin on
108
+ * the conversation's `SessionViewer` so follow-ups match. See
109
+ * {@link SessionRunConfig}.
110
+ */
111
+ readonly runConfig?: SessionRunConfig;
112
+
113
+ /**
114
+ * Whether the composer offers the model picker. Same contract as
115
+ * {@link SessionViewerProps.showModelSelector} (DD-016 parity):
116
+ * forced off by a {@link NewSessionViewerProps.runConfig} model pin
117
+ * and for the `"guest"` audience.
118
+ *
119
+ * @default true
120
+ */
121
+ readonly showModelSelector?: boolean;
122
+
123
+ /**
124
+ * Whether the launcher offers the session panel at all — `"none"` removes
125
+ * the panel and its toggle chip while keeping every composer capability
126
+ * the audience allows. Same contract as
127
+ * {@link SessionViewerProps.panel} (DD-016 parity); see
128
+ * {@link SessionPanelMode}.
129
+ *
130
+ * @default "auto"
131
+ */
132
+ readonly panel?: SessionPanelMode;
133
+
134
+ /**
135
+ * Initial open state of the session panel in uncontrolled mode. Ignored
136
+ * when {@link NewSessionViewerProps.panelOpen} is provided. Same contract
137
+ * as {@link SessionViewerProps.defaultPanelOpen} (DD-016 parity).
138
+ *
139
+ * @default false
140
+ */
141
+ readonly defaultPanelOpen?: boolean;
142
+
143
+ /**
144
+ * Controlled open state of the session panel. Same contract as
145
+ * {@link SessionViewerProps.panelOpen} (DD-016 parity).
146
+ */
147
+ readonly panelOpen?: boolean;
148
+
149
+ /**
150
+ * Called on every panel open/close transition, in both modes. Same
151
+ * contract as {@link SessionViewerProps.onPanelOpenChange} (DD-016
152
+ * parity); the launcher has no plan auto-open, so its transitions come
153
+ * from the chip toggle and file opens only.
154
+ */
155
+ readonly onPanelOpenChange?: (open: boolean) => void;
156
+
101
157
  /**
102
158
  * Harness pre-selected for new sessions when the user has not made
103
159
  * an explicit choice yet. The user can still switch before starting
@@ -190,6 +246,12 @@ export function NewSessionViewer({
190
246
  workspaceContentSearcher,
191
247
  getRuntimeEnv,
192
248
  audience = "integrator",
249
+ runConfig,
250
+ showModelSelector = true,
251
+ panel: panelMode = "auto",
252
+ defaultPanelOpen,
253
+ panelOpen,
254
+ onPanelOpenChange,
193
255
  defaultHarness,
194
256
  initialAgentRef,
195
257
  initialInstanceId,
@@ -208,12 +270,22 @@ export function NewSessionViewer({
208
270
  getRuntimeEnv,
209
271
  defaultHarness,
210
272
  audience,
273
+ runConfig,
211
274
  });
212
275
  const [interactionMode, setInteractionMode] = useState<InteractionModeOption>("agent");
213
276
  const isGuest = audience === "guest";
277
+ // A pinned model makes the picker a dead control (the pin wins over any
278
+ // choice it could offer), so the pin forces it hidden; the guest strip
279
+ // and the host's explicit opt-out compose with it (DD-016: same rule as
280
+ // SessionViewer).
281
+ const modelSelectorVisible =
282
+ showModelSelector && !isGuest && runConfig?.modelName === undefined;
214
283
  // Both curated audiences (endUser, guest) lock the agent and hide the
215
284
  // integrator pickers; guest adds its own restrictions below.
216
285
  const isCurated = audience !== "integrator";
286
+ // Host opt-out or audience restriction — the same single flag
287
+ // SessionViewer derives (DD-016), gating the chip and the region together.
288
+ const panelEnabled = panelMode !== "none" && !isGuest;
217
289
 
218
290
  // Guest agent binding is host configuration, not a picker interaction:
219
291
  // the composer's agent machinery (picker, env-collection, personal
@@ -238,6 +310,11 @@ export function NewSessionViewer({
238
310
  phase: null,
239
311
  hasChanges: false,
240
312
  defaultView: "configure",
313
+ // Same inertness contract as SessionViewer: a disabled panel is pinned
314
+ // controlled-closed and unobserved (DD-016).
315
+ open: panelEnabled ? panelOpen : false,
316
+ defaultOpen: defaultPanelOpen,
317
+ onOpenChange: panelEnabled ? onPanelOpenChange : undefined,
241
318
  });
242
319
  const { editors, activeKey, activeFile, reveal } = useWorkspaceEditors(
243
320
  panel.editorsStore,
@@ -362,7 +439,7 @@ export function NewSessionViewer({
362
439
  interactionMode={interactionMode}
363
440
  onInteractionModeChange={setInteractionMode}
364
441
  showInteractionModePicker={!isGuest}
365
- showModelSelector={!isGuest}
442
+ showModelSelector={modelSelectorVisible}
366
443
  enableAttachments={!isGuest}
367
444
  defaultModelId={flow.modelId}
368
445
  onModelChange={flow.setModelId}
@@ -396,11 +473,12 @@ export function NewSessionViewer({
396
473
  // collapse control when the last context item is removed. Always-on is
397
474
  // the predictable, discoverable shape; opening homes on the Config
398
475
  // facet, which carries useful defaults (harness/model) pre-session.
399
- // Guests are the exception: the panel exposes configuration a visitor
400
- // has no business with, so the chip (the panel's only toggle) is
401
- // simply absent and the panel can never open.
476
+ // A panel-less viewer is the exception: guests (the panel exposes
477
+ // configuration a visitor has no business with) and hosts passing
478
+ // panel="none" get no chip — the panel's only toggle is simply
479
+ // absent and the panel can never open.
402
480
  chip={
403
- !isGuest ? (
481
+ panelEnabled ? (
404
482
  <SessionPanelChip
405
483
  isOpen={panel.isOpen}
406
484
  onToggle={panel.isOpen ? panel.closePanel : panel.openPanel}
@@ -409,7 +487,7 @@ export function NewSessionViewer({
409
487
  }
410
488
  conversation={composerNode}
411
489
  panel={
412
- panel.isOpen ? (
490
+ panel.isOpen && panelEnabled ? (
413
491
  <WorkspaceSurface
414
492
  entries={flow.workspace.entries}
415
493
  lister={workspaceFileLister}