@stigmer/react 3.2.2 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (513) hide show
  1. package/agent/AgentDetailView.d.ts.map +1 -1
  2. package/agent/AgentDetailView.js +6 -3
  3. package/agent/AgentDetailView.js.map +1 -1
  4. package/agent/steps/ReviewStep.d.ts.map +1 -1
  5. package/agent/steps/ReviewStep.js +2 -3
  6. package/agent/steps/ReviewStep.js.map +1 -1
  7. package/billing/BaselineEditor.d.ts +9 -0
  8. package/billing/BaselineEditor.d.ts.map +1 -0
  9. package/billing/BaselineEditor.js +253 -0
  10. package/billing/BaselineEditor.js.map +1 -0
  11. package/billing/ModelCatalogPanel.d.ts +28 -0
  12. package/billing/ModelCatalogPanel.d.ts.map +1 -0
  13. package/billing/ModelCatalogPanel.js +102 -0
  14. package/billing/ModelCatalogPanel.js.map +1 -0
  15. package/billing/ModelGovernanceDetail.d.ts +8 -0
  16. package/billing/ModelGovernanceDetail.d.ts.map +1 -0
  17. package/billing/ModelGovernanceDetail.js +64 -0
  18. package/billing/ModelGovernanceDetail.js.map +1 -0
  19. package/billing/OperatorAccessNotice.d.ts +12 -0
  20. package/billing/OperatorAccessNotice.d.ts.map +1 -0
  21. package/billing/OperatorAccessNotice.js +15 -0
  22. package/billing/OperatorAccessNotice.js.map +1 -0
  23. package/billing/PricingGovernanceConsole.d.ts +57 -0
  24. package/billing/PricingGovernanceConsole.d.ts.map +1 -0
  25. package/billing/PricingGovernanceConsole.js +164 -0
  26. package/billing/PricingGovernanceConsole.js.map +1 -0
  27. package/billing/PricingGovernancePanel.d.ts +26 -0
  28. package/billing/PricingGovernancePanel.d.ts.map +1 -0
  29. package/billing/PricingGovernancePanel.js +64 -0
  30. package/billing/PricingGovernancePanel.js.map +1 -0
  31. package/billing/RetireConfirm.d.ts +9 -0
  32. package/billing/RetireConfirm.d.ts.map +1 -0
  33. package/billing/RetireConfirm.js +19 -0
  34. package/billing/RetireConfirm.js.map +1 -0
  35. package/billing/form-primitives.d.ts +18 -0
  36. package/billing/form-primitives.d.ts.map +1 -0
  37. package/billing/form-primitives.js +19 -0
  38. package/billing/form-primitives.js.map +1 -0
  39. package/billing/governance-primitives.d.ts +33 -0
  40. package/billing/governance-primitives.d.ts.map +1 -0
  41. package/billing/governance-primitives.js +43 -0
  42. package/billing/governance-primitives.js.map +1 -0
  43. package/billing/index.d.ts +18 -0
  44. package/billing/index.d.ts.map +1 -1
  45. package/billing/index.js +9 -0
  46. package/billing/index.js.map +1 -1
  47. package/billing/pricing-format.d.ts +12 -0
  48. package/billing/pricing-format.d.ts.map +1 -0
  49. package/billing/pricing-format.js +50 -0
  50. package/billing/pricing-format.js.map +1 -0
  51. package/billing/useDecidePricingOverride.d.ts +46 -0
  52. package/billing/useDecidePricingOverride.d.ts.map +1 -0
  53. package/billing/useDecidePricingOverride.js +44 -0
  54. package/billing/useDecidePricingOverride.js.map +1 -0
  55. package/billing/useModelGovernanceView.d.ts +103 -0
  56. package/billing/useModelGovernanceView.d.ts.map +1 -0
  57. package/billing/useModelGovernanceView.js +144 -0
  58. package/billing/useModelGovernanceView.js.map +1 -0
  59. package/billing/useModelPricingBaselines.d.ts +40 -0
  60. package/billing/useModelPricingBaselines.d.ts.map +1 -0
  61. package/billing/useModelPricingBaselines.js +32 -0
  62. package/billing/useModelPricingBaselines.js.map +1 -0
  63. package/billing/usePricingGovernance.d.ts +39 -0
  64. package/billing/usePricingGovernance.d.ts.map +1 -0
  65. package/billing/usePricingGovernance.js +31 -0
  66. package/billing/usePricingGovernance.js.map +1 -0
  67. package/billing/useRetireModelPricingBaseline.d.ts +31 -0
  68. package/billing/useRetireModelPricingBaseline.d.ts.map +1 -0
  69. package/billing/useRetireModelPricingBaseline.js +36 -0
  70. package/billing/useRetireModelPricingBaseline.js.map +1 -0
  71. package/billing/useUpsertModelPricingBaseline.d.ts +38 -0
  72. package/billing/useUpsertModelPricingBaseline.d.ts.map +1 -0
  73. package/billing/useUpsertModelPricingBaseline.js +37 -0
  74. package/billing/useUpsertModelPricingBaseline.js.map +1 -0
  75. package/channel/AgentChannelsPanel.d.ts.map +1 -1
  76. package/channel/AgentChannelsPanel.js +11 -5
  77. package/channel/AgentChannelsPanel.js.map +1 -1
  78. package/composer/SessionComposer.d.ts +1 -1
  79. package/cursor-accounts/CursorAccountEditor.d.ts +28 -0
  80. package/cursor-accounts/CursorAccountEditor.d.ts.map +1 -0
  81. package/cursor-accounts/CursorAccountEditor.js +51 -0
  82. package/cursor-accounts/CursorAccountEditor.js.map +1 -0
  83. package/cursor-accounts/CursorAccountsAccessNotice.d.ts +11 -0
  84. package/cursor-accounts/CursorAccountsAccessNotice.d.ts.map +1 -0
  85. package/cursor-accounts/CursorAccountsAccessNotice.js +14 -0
  86. package/cursor-accounts/CursorAccountsAccessNotice.js.map +1 -0
  87. package/cursor-accounts/CursorAccountsConsole.d.ts +28 -0
  88. package/cursor-accounts/CursorAccountsConsole.d.ts.map +1 -0
  89. package/cursor-accounts/CursorAccountsConsole.js +275 -0
  90. package/cursor-accounts/CursorAccountsConsole.js.map +1 -0
  91. package/cursor-accounts/cursor-account-format.d.ts +10 -0
  92. package/cursor-accounts/cursor-account-format.d.ts.map +1 -0
  93. package/cursor-accounts/cursor-account-format.js +26 -0
  94. package/cursor-accounts/cursor-account-format.js.map +1 -0
  95. package/cursor-accounts/index.d.ts +18 -0
  96. package/cursor-accounts/index.d.ts.map +1 -0
  97. package/cursor-accounts/index.js +13 -0
  98. package/cursor-accounts/index.js.map +1 -0
  99. package/cursor-accounts/useCursorAccountView.d.ts +30 -0
  100. package/cursor-accounts/useCursorAccountView.d.ts.map +1 -0
  101. package/cursor-accounts/useCursorAccountView.js +25 -0
  102. package/cursor-accounts/useCursorAccountView.js.map +1 -0
  103. package/cursor-accounts/useCursorAccounts.d.ts +33 -0
  104. package/cursor-accounts/useCursorAccounts.d.ts.map +1 -0
  105. package/cursor-accounts/useCursorAccounts.js +25 -0
  106. package/cursor-accounts/useCursorAccounts.js.map +1 -0
  107. package/cursor-accounts/useCursorMemberKeyActions.d.ts +49 -0
  108. package/cursor-accounts/useCursorMemberKeyActions.d.ts.map +1 -0
  109. package/cursor-accounts/useCursorMemberKeyActions.js +38 -0
  110. package/cursor-accounts/useCursorMemberKeyActions.js.map +1 -0
  111. package/cursor-accounts/useDeleteCursorAccount.d.ts +30 -0
  112. package/cursor-accounts/useDeleteCursorAccount.d.ts.map +1 -0
  113. package/cursor-accounts/useDeleteCursorAccount.js +32 -0
  114. package/cursor-accounts/useDeleteCursorAccount.js.map +1 -0
  115. package/cursor-accounts/useSyncCursorAccount.d.ts +23 -0
  116. package/cursor-accounts/useSyncCursorAccount.d.ts.map +1 -0
  117. package/cursor-accounts/useSyncCursorAccount.js +31 -0
  118. package/cursor-accounts/useSyncCursorAccount.js.map +1 -0
  119. package/cursor-accounts/useUpsertCursorAccount.d.ts +26 -0
  120. package/cursor-accounts/useUpsertCursorAccount.d.ts.map +1 -0
  121. package/cursor-accounts/useUpsertCursorAccount.js +34 -0
  122. package/cursor-accounts/useUpsertCursorAccount.js.map +1 -0
  123. package/datastore/CollectionRecordsBrowser.d.ts +34 -0
  124. package/datastore/CollectionRecordsBrowser.d.ts.map +1 -0
  125. package/datastore/CollectionRecordsBrowser.js +209 -0
  126. package/datastore/CollectionRecordsBrowser.js.map +1 -0
  127. package/datastore/CollectionSchemaView.d.ts +29 -0
  128. package/datastore/CollectionSchemaView.d.ts.map +1 -0
  129. package/datastore/CollectionSchemaView.js +93 -0
  130. package/datastore/CollectionSchemaView.js.map +1 -0
  131. package/datastore/DatastoreDetailView.d.ts +44 -0
  132. package/datastore/DatastoreDetailView.d.ts.map +1 -0
  133. package/datastore/DatastoreDetailView.js +76 -0
  134. package/datastore/DatastoreDetailView.js.map +1 -0
  135. package/datastore/DatastoreSyncReport.d.ts +19 -0
  136. package/datastore/DatastoreSyncReport.d.ts.map +1 -0
  137. package/datastore/DatastoreSyncReport.js +45 -0
  138. package/datastore/DatastoreSyncReport.js.map +1 -0
  139. package/datastore/DeleteDatastoreDialog.d.ts +35 -0
  140. package/datastore/DeleteDatastoreDialog.d.ts.map +1 -0
  141. package/datastore/DeleteDatastoreDialog.js +90 -0
  142. package/datastore/DeleteDatastoreDialog.js.map +1 -0
  143. package/datastore/FieldValueControl.d.ts +55 -0
  144. package/datastore/FieldValueControl.d.ts.map +1 -0
  145. package/datastore/FieldValueControl.js +138 -0
  146. package/datastore/FieldValueControl.js.map +1 -0
  147. package/datastore/RecordFilterBuilder.d.ts +30 -0
  148. package/datastore/RecordFilterBuilder.d.ts.map +1 -0
  149. package/datastore/RecordFilterBuilder.js +122 -0
  150. package/datastore/RecordFilterBuilder.js.map +1 -0
  151. package/datastore/RecordFormPanel.d.ts +45 -0
  152. package/datastore/RecordFormPanel.d.ts.map +1 -0
  153. package/datastore/RecordFormPanel.js +215 -0
  154. package/datastore/RecordFormPanel.js.map +1 -0
  155. package/datastore/index.d.ts +43 -0
  156. package/datastore/index.d.ts.map +1 -0
  157. package/datastore/index.js +22 -0
  158. package/datastore/index.js.map +1 -0
  159. package/datastore/recordFilter.d.ts +54 -0
  160. package/datastore/recordFilter.d.ts.map +1 -0
  161. package/datastore/recordFilter.js +93 -0
  162. package/datastore/recordFilter.js.map +1 -0
  163. package/datastore/recordValues.d.ts +85 -0
  164. package/datastore/recordValues.d.ts.map +1 -0
  165. package/datastore/recordValues.js +282 -0
  166. package/datastore/recordValues.js.map +1 -0
  167. package/datastore/useDatastore.d.ts +39 -0
  168. package/datastore/useDatastore.d.ts.map +1 -0
  169. package/datastore/useDatastore.js +44 -0
  170. package/datastore/useDatastore.js.map +1 -0
  171. package/datastore/useDatastoreCount.d.ts +48 -0
  172. package/datastore/useDatastoreCount.d.ts.map +1 -0
  173. package/datastore/useDatastoreCount.js +27 -0
  174. package/datastore/useDatastoreCount.js.map +1 -0
  175. package/datastore/useDatastoreDescription.d.ts +54 -0
  176. package/datastore/useDatastoreDescription.d.ts.map +1 -0
  177. package/datastore/useDatastoreDescription.js +50 -0
  178. package/datastore/useDatastoreDescription.js.map +1 -0
  179. package/datastore/useDatastoreList.d.ts +57 -0
  180. package/datastore/useDatastoreList.d.ts.map +1 -0
  181. package/datastore/useDatastoreList.js +29 -0
  182. package/datastore/useDatastoreList.js.map +1 -0
  183. package/datastore/useDatastoreSearch.d.ts +19 -0
  184. package/datastore/useDatastoreSearch.d.ts.map +1 -0
  185. package/datastore/useDatastoreSearch.js +22 -0
  186. package/datastore/useDatastoreSearch.js.map +1 -0
  187. package/datastore/useDeleteDatastore.d.ts +53 -0
  188. package/datastore/useDeleteDatastore.d.ts.map +1 -0
  189. package/datastore/useDeleteDatastore.js +40 -0
  190. package/datastore/useDeleteDatastore.js.map +1 -0
  191. package/datastore/useDeleteRecord.d.ts +34 -0
  192. package/datastore/useDeleteRecord.d.ts.map +1 -0
  193. package/datastore/useDeleteRecord.js +43 -0
  194. package/datastore/useDeleteRecord.js.map +1 -0
  195. package/datastore/useInsertRecord.d.ts +50 -0
  196. package/datastore/useInsertRecord.d.ts.map +1 -0
  197. package/datastore/useInsertRecord.js +55 -0
  198. package/datastore/useInsertRecord.js.map +1 -0
  199. package/datastore/useRecordCollection.d.ts +104 -0
  200. package/datastore/useRecordCollection.d.ts.map +1 -0
  201. package/datastore/useRecordCollection.js +136 -0
  202. package/datastore/useRecordCollection.js.map +1 -0
  203. package/datastore/useRecordList.d.ts +66 -0
  204. package/datastore/useRecordList.d.ts.map +1 -0
  205. package/datastore/useRecordList.js +58 -0
  206. package/datastore/useRecordList.js.map +1 -0
  207. package/datastore/useUpdateRecord.d.ts +52 -0
  208. package/datastore/useUpdateRecord.d.ts.map +1 -0
  209. package/datastore/useUpdateRecord.js +55 -0
  210. package/datastore/useUpdateRecord.js.map +1 -0
  211. package/environment/EnvironmentListPanel.d.ts.map +1 -1
  212. package/environment/EnvironmentListPanel.js +12 -7
  213. package/environment/EnvironmentListPanel.js.map +1 -1
  214. package/execution/index.d.ts +1 -2
  215. package/execution/index.d.ts.map +1 -1
  216. package/execution/index.js +0 -1
  217. package/execution/index.js.map +1 -1
  218. package/execution/useLiveAgentExecution.d.ts +17 -1
  219. package/execution/useLiveAgentExecution.d.ts.map +1 -1
  220. package/execution/useLiveAgentExecution.js +19 -4
  221. package/execution/useLiveAgentExecution.js.map +1 -1
  222. package/iam-policy/index.d.ts +1 -1
  223. package/iam-policy/index.d.ts.map +1 -1
  224. package/iam-policy/index.js.map +1 -1
  225. package/iam-policy/useCheckPermission.d.ts +32 -11
  226. package/iam-policy/useCheckPermission.d.ts.map +1 -1
  227. package/iam-policy/useCheckPermission.js +24 -19
  228. package/iam-policy/useCheckPermission.js.map +1 -1
  229. package/index.d.ts +16 -10
  230. package/index.d.ts.map +1 -1
  231. package/index.js +16 -5
  232. package/index.js.map +1 -1
  233. package/internal/useInViewport.d.ts +24 -0
  234. package/internal/useInViewport.d.ts.map +1 -0
  235. package/internal/useInViewport.js +49 -0
  236. package/internal/useInViewport.js.map +1 -0
  237. package/library/VisibilitySelector.d.ts +22 -6
  238. package/library/VisibilitySelector.d.ts.map +1 -1
  239. package/library/VisibilitySelector.js +12 -4
  240. package/library/VisibilitySelector.js.map +1 -1
  241. package/library/index.d.ts +1 -8
  242. package/library/index.d.ts.map +1 -1
  243. package/library/index.js +0 -4
  244. package/library/index.js.map +1 -1
  245. package/library/useApplyResource.d.ts +12 -12
  246. package/library/useApplyResource.d.ts.map +1 -1
  247. package/library/useApplyResource.js +16 -25
  248. package/library/useApplyResource.js.map +1 -1
  249. package/library/useExportResource.d.ts +13 -9
  250. package/library/useExportResource.d.ts.map +1 -1
  251. package/library/useExportResource.js +18 -36
  252. package/library/useExportResource.js.map +1 -1
  253. package/manifest/ApplyManifestDialog.d.ts +48 -0
  254. package/manifest/ApplyManifestDialog.d.ts.map +1 -0
  255. package/manifest/ApplyManifestDialog.js +135 -0
  256. package/manifest/ApplyManifestDialog.js.map +1 -0
  257. package/manifest/EditResourceYamlDialog.d.ts +51 -0
  258. package/manifest/EditResourceYamlDialog.d.ts.map +1 -0
  259. package/manifest/EditResourceYamlDialog.js +104 -0
  260. package/manifest/EditResourceYamlDialog.js.map +1 -0
  261. package/manifest/RedactedSecretsNotice.d.ts +14 -0
  262. package/manifest/RedactedSecretsNotice.d.ts.map +1 -0
  263. package/manifest/RedactedSecretsNotice.js +14 -0
  264. package/manifest/RedactedSecretsNotice.js.map +1 -0
  265. package/manifest/YamlEditor.d.ts +44 -0
  266. package/manifest/YamlEditor.d.ts.map +1 -0
  267. package/manifest/YamlEditor.js +216 -0
  268. package/manifest/YamlEditor.js.map +1 -0
  269. package/manifest/index.d.ts +13 -0
  270. package/manifest/index.d.ts.map +1 -0
  271. package/manifest/index.js +13 -0
  272. package/manifest/index.js.map +1 -0
  273. package/manifest/useApplyManifest.d.ts +82 -0
  274. package/manifest/useApplyManifest.d.ts.map +1 -0
  275. package/manifest/useApplyManifest.js +180 -0
  276. package/manifest/useApplyManifest.js.map +1 -0
  277. package/manifest/useEditResourceYaml.d.ts +106 -0
  278. package/manifest/useEditResourceYaml.d.ts.map +1 -0
  279. package/manifest/useEditResourceYaml.js +168 -0
  280. package/manifest/useEditResourceYaml.js.map +1 -0
  281. package/mcp-server/McpServerDetailView.d.ts.map +1 -1
  282. package/mcp-server/McpServerDetailView.js +4 -3
  283. package/mcp-server/McpServerDetailView.js.map +1 -1
  284. package/mcp-server/steps/ReviewStep.d.ts.map +1 -1
  285. package/mcp-server/steps/ReviewStep.js +2 -3
  286. package/mcp-server/steps/ReviewStep.js.map +1 -1
  287. package/package.json +4 -4
  288. package/resource-creation/templates/workflow-templates.js +4 -4
  289. package/session/SessionViewer.js +8 -1
  290. package/session/SessionViewer.js.map +1 -1
  291. package/session/audience.d.ts +6 -1
  292. package/session/audience.d.ts.map +1 -1
  293. package/session/useEditSessionPrep.js +3 -3
  294. package/session/useEditSessionPrep.js.map +1 -1
  295. package/settings/index.d.ts +2 -1
  296. package/settings/index.d.ts.map +1 -1
  297. package/settings/index.js +2 -1
  298. package/settings/index.js.map +1 -1
  299. package/settings/settings-nav.d.ts +22 -0
  300. package/settings/settings-nav.d.ts.map +1 -1
  301. package/settings/settings-nav.js +32 -1
  302. package/settings/settings-nav.js.map +1 -1
  303. package/settings/useSettingsNavGroups.d.ts +29 -0
  304. package/settings/useSettingsNavGroups.d.ts.map +1 -0
  305. package/settings/useSettingsNavGroups.js +61 -0
  306. package/settings/useSettingsNavGroups.js.map +1 -0
  307. package/skill/SkillDetailView.d.ts.map +1 -1
  308. package/skill/SkillDetailView.js +4 -3
  309. package/skill/SkillDetailView.js.map +1 -1
  310. package/src/access/__tests__/useManageAccess.test.tsx +104 -0
  311. package/src/agent/AgentDetailView.tsx +9 -3
  312. package/src/agent/steps/ReviewStep.tsx +2 -3
  313. package/src/billing/BaselineEditor.tsx +619 -0
  314. package/src/billing/ModelCatalogPanel.tsx +283 -0
  315. package/src/billing/ModelGovernanceDetail.tsx +289 -0
  316. package/src/billing/OperatorAccessNotice.tsx +32 -0
  317. package/src/billing/PricingGovernanceConsole.tsx +465 -0
  318. package/src/billing/PricingGovernancePanel.tsx +166 -0
  319. package/src/billing/RetireConfirm.tsx +82 -0
  320. package/src/billing/__tests__/ModelCatalogPanel.test.tsx +253 -0
  321. package/src/billing/__tests__/PricingGovernanceConsole.test.tsx +410 -0
  322. package/src/billing/__tests__/useModelGovernanceView.test.tsx +308 -0
  323. package/src/billing/form-primitives.tsx +68 -0
  324. package/src/billing/governance-primitives.tsx +133 -0
  325. package/src/billing/index.ts +37 -0
  326. package/src/billing/pricing-format.ts +53 -0
  327. package/src/billing/useDecidePricingOverride.ts +78 -0
  328. package/src/billing/useModelGovernanceView.ts +290 -0
  329. package/src/billing/useModelPricingBaselines.ts +69 -0
  330. package/src/billing/usePricingGovernance.ts +57 -0
  331. package/src/billing/useRetireModelPricingBaseline.ts +65 -0
  332. package/src/billing/useUpsertModelPricingBaseline.ts +72 -0
  333. package/src/channel/AgentChannelsPanel.tsx +27 -1
  334. package/src/composer/SessionComposer.tsx +1 -1
  335. package/src/cursor-accounts/CursorAccountEditor.tsx +181 -0
  336. package/src/cursor-accounts/CursorAccountsAccessNotice.tsx +36 -0
  337. package/src/cursor-accounts/CursorAccountsConsole.tsx +810 -0
  338. package/src/cursor-accounts/__tests__/CursorAccountsConsole.test.tsx +384 -0
  339. package/src/cursor-accounts/cursor-account-format.ts +29 -0
  340. package/src/cursor-accounts/index.ts +29 -0
  341. package/src/cursor-accounts/useCursorAccountView.ts +49 -0
  342. package/src/cursor-accounts/useCursorAccounts.ts +49 -0
  343. package/src/cursor-accounts/useCursorMemberKeyActions.ts +106 -0
  344. package/src/cursor-accounts/useDeleteCursorAccount.ts +62 -0
  345. package/src/cursor-accounts/useSyncCursorAccount.ts +54 -0
  346. package/src/cursor-accounts/useUpsertCursorAccount.ts +57 -0
  347. package/src/datastore/CollectionRecordsBrowser.tsx +544 -0
  348. package/src/datastore/CollectionSchemaView.tsx +247 -0
  349. package/src/datastore/DatastoreDetailView.tsx +201 -0
  350. package/src/datastore/DatastoreSyncReport.tsx +105 -0
  351. package/src/datastore/DeleteDatastoreDialog.tsx +202 -0
  352. package/src/datastore/FieldValueControl.tsx +289 -0
  353. package/src/datastore/RecordFilterBuilder.tsx +411 -0
  354. package/src/datastore/RecordFormPanel.tsx +432 -0
  355. package/src/datastore/__tests__/CollectionRecordsBrowser.test.tsx +207 -0
  356. package/src/datastore/__tests__/DeleteDatastoreDialog.test.tsx +133 -0
  357. package/src/datastore/__tests__/FieldValueControl.test.tsx +160 -0
  358. package/src/datastore/__tests__/RecordFilterBuilder.test.tsx +141 -0
  359. package/src/datastore/__tests__/RecordFormPanel.test.tsx +227 -0
  360. package/src/datastore/__tests__/recordFilter.test.ts +156 -0
  361. package/src/datastore/__tests__/recordMutations.test.tsx +195 -0
  362. package/src/datastore/__tests__/recordValues.test.ts +359 -0
  363. package/src/datastore/__tests__/schemaAndSyncViews.test.tsx +142 -0
  364. package/src/datastore/__tests__/useDatastoreDescription.test.tsx +143 -0
  365. package/src/datastore/__tests__/useRecordCollection.test.tsx +250 -0
  366. package/src/datastore/__tests__/useRecordList.test.tsx +85 -0
  367. package/src/datastore/index.ts +111 -0
  368. package/src/datastore/recordFilter.ts +140 -0
  369. package/src/datastore/recordValues.ts +327 -0
  370. package/src/datastore/useDatastore.ts +67 -0
  371. package/src/datastore/useDatastoreCount.ts +67 -0
  372. package/src/datastore/useDatastoreDescription.ts +90 -0
  373. package/src/datastore/useDatastoreList.ts +79 -0
  374. package/src/datastore/useDatastoreSearch.ts +39 -0
  375. package/src/datastore/useDeleteDatastore.ts +87 -0
  376. package/src/datastore/useDeleteRecord.ts +77 -0
  377. package/src/datastore/useInsertRecord.ts +92 -0
  378. package/src/datastore/useRecordCollection.ts +256 -0
  379. package/src/datastore/useRecordList.ts +131 -0
  380. package/src/datastore/useUpdateRecord.ts +95 -0
  381. package/src/environment/EnvironmentListPanel.tsx +24 -0
  382. package/src/execution/__tests__/useArtifactInspection.test.tsx +12 -2
  383. package/src/execution/__tests__/useLiveAgentExecution.test.tsx +125 -0
  384. package/src/execution/index.ts +4 -7
  385. package/src/execution/useLiveAgentExecution.ts +41 -3
  386. package/src/iam-policy/__tests__/useCheckPermission.test.tsx +221 -0
  387. package/src/iam-policy/index.ts +1 -0
  388. package/src/iam-policy/useCheckPermission.ts +45 -19
  389. package/src/index.ts +167 -18
  390. package/src/internal/__tests__/useInViewport.test.tsx +115 -0
  391. package/src/internal/useInViewport.ts +63 -0
  392. package/src/library/VisibilitySelector.tsx +50 -9
  393. package/src/library/__tests__/VisibilitySelector.test.tsx +38 -0
  394. package/src/library/index.ts +4 -21
  395. package/src/library/useApplyResource.ts +27 -34
  396. package/src/library/useExportResource.ts +21 -40
  397. package/src/manifest/ApplyManifestDialog.tsx +315 -0
  398. package/src/manifest/EditResourceYamlDialog.tsx +265 -0
  399. package/src/manifest/RedactedSecretsNotice.tsx +30 -0
  400. package/src/manifest/YamlEditor.tsx +272 -0
  401. package/src/manifest/__tests__/EditResourceYamlDialog.test.tsx +118 -0
  402. package/src/manifest/__tests__/useApplyManifest.test.tsx +237 -0
  403. package/src/manifest/__tests__/useEditResourceYaml.test.tsx +252 -0
  404. package/src/manifest/index.ts +33 -0
  405. package/src/manifest/useApplyManifest.ts +270 -0
  406. package/src/manifest/useEditResourceYaml.ts +273 -0
  407. package/src/mcp-server/McpServerDetailView.tsx +7 -3
  408. package/src/mcp-server/steps/ReviewStep.tsx +2 -3
  409. package/src/resource-creation/templates/workflow-templates.ts +4 -4
  410. package/src/session/SessionViewer.tsx +7 -1
  411. package/src/session/__tests__/audienceWiring.test.tsx +31 -1
  412. package/src/session/audience.ts +6 -1
  413. package/src/session/useEditSessionPrep.ts +3 -3
  414. package/src/settings/__tests__/useSettingsNavGroups.test.tsx +138 -0
  415. package/src/settings/index.ts +5 -1
  416. package/src/settings/settings-nav.ts +43 -0
  417. package/src/settings/useSettingsNavGroups.ts +81 -0
  418. package/src/skill/SkillDetailView.tsx +7 -3
  419. package/src/workflow/WorkflowAgentCallTranscript.tsx +279 -0
  420. package/src/workflow/WorkflowDetailView.tsx +7 -3
  421. package/src/workflow/WorkflowExecutionViewer.tsx +20 -77
  422. package/src/workflow/WorkflowTaskApprovalSummary.tsx +45 -8
  423. package/src/workflow/WorkflowYamlEditor.tsx +6 -270
  424. package/src/workflow/__tests__/WorkflowAgentCallTranscript.liveregion.test.tsx +124 -0
  425. package/src/workflow/__tests__/{WorkflowAgentExecutionDocument.test.tsx → WorkflowAgentCallTranscript.test.tsx} +146 -121
  426. package/src/workflow/__tests__/WorkflowExecutionViewer.approvals.test.tsx +81 -220
  427. package/src/workflow/__tests__/WorkflowExecutionViewer.reconciliation.test.tsx +17 -16
  428. package/src/workflow/__tests__/WorkflowTaskApprovalSummary.test.tsx +52 -2
  429. package/src/workflow/__tests__/WorkflowTaskThread.test.tsx +168 -185
  430. package/src/workflow/__tests__/agent-call-live-experience.test.ts +4 -4
  431. package/src/workflow/__tests__/task-approval.test.ts +119 -0
  432. package/src/workflow/__tests__/task-presentation.test.ts +35 -1
  433. package/src/workflow/__tests__/useWorkflowExecutionPanel.test.ts +0 -57
  434. package/src/workflow/index.ts +6 -3
  435. package/src/workflow/task-detail/index.ts +3 -0
  436. package/src/workflow/task-detail/task-approval.ts +95 -1
  437. package/src/workflow/thread/WorkflowTaskThread.tsx +96 -252
  438. package/src/workflow/thread/task-presentation.ts +8 -2
  439. package/src/workflow/useWorkflowExecutionPanel.ts +0 -47
  440. package/styles.css +1 -1
  441. package/workflow/CanvasTransitionEdge.d.ts +1 -1
  442. package/workflow/WorkflowAgentCallTranscript.d.ts +87 -0
  443. package/workflow/WorkflowAgentCallTranscript.d.ts.map +1 -0
  444. package/workflow/WorkflowAgentCallTranscript.js +98 -0
  445. package/workflow/WorkflowAgentCallTranscript.js.map +1 -0
  446. package/workflow/WorkflowDetailView.d.ts.map +1 -1
  447. package/workflow/WorkflowDetailView.js +4 -3
  448. package/workflow/WorkflowDetailView.js.map +1 -1
  449. package/workflow/WorkflowExecutionViewer.d.ts.map +1 -1
  450. package/workflow/WorkflowExecutionViewer.js +23 -52
  451. package/workflow/WorkflowExecutionViewer.js.map +1 -1
  452. package/workflow/WorkflowTaskApprovalSummary.d.ts +1 -1
  453. package/workflow/WorkflowTaskApprovalSummary.d.ts.map +1 -1
  454. package/workflow/WorkflowTaskApprovalSummary.js +18 -1
  455. package/workflow/WorkflowTaskApprovalSummary.js.map +1 -1
  456. package/workflow/WorkflowYamlEditor.d.ts +2 -42
  457. package/workflow/WorkflowYamlEditor.d.ts.map +1 -1
  458. package/workflow/WorkflowYamlEditor.js +5 -214
  459. package/workflow/WorkflowYamlEditor.js.map +1 -1
  460. package/workflow/index.d.ts +2 -2
  461. package/workflow/index.d.ts.map +1 -1
  462. package/workflow/index.js +2 -2
  463. package/workflow/index.js.map +1 -1
  464. package/workflow/task-detail/index.d.ts +1 -1
  465. package/workflow/task-detail/index.d.ts.map +1 -1
  466. package/workflow/task-detail/index.js +1 -1
  467. package/workflow/task-detail/index.js.map +1 -1
  468. package/workflow/task-detail/task-approval.d.ts +44 -1
  469. package/workflow/task-detail/task-approval.d.ts.map +1 -1
  470. package/workflow/task-detail/task-approval.js +47 -0
  471. package/workflow/task-detail/task-approval.js.map +1 -1
  472. package/workflow/thread/WorkflowTaskThread.d.ts +17 -25
  473. package/workflow/thread/WorkflowTaskThread.d.ts.map +1 -1
  474. package/workflow/thread/WorkflowTaskThread.js +60 -105
  475. package/workflow/thread/WorkflowTaskThread.js.map +1 -1
  476. package/workflow/thread/task-presentation.d.ts.map +1 -1
  477. package/workflow/thread/task-presentation.js +7 -2
  478. package/workflow/thread/task-presentation.js.map +1 -1
  479. package/workflow/useWorkflowExecutionPanel.d.ts +0 -12
  480. package/workflow/useWorkflowExecutionPanel.d.ts.map +1 -1
  481. package/workflow/useWorkflowExecutionPanel.js +0 -12
  482. package/workflow/useWorkflowExecutionPanel.js.map +1 -1
  483. package/execution/agent-execution-document.d.ts +0 -31
  484. package/execution/agent-execution-document.d.ts.map +0 -1
  485. package/execution/agent-execution-document.js +0 -48
  486. package/execution/agent-execution-document.js.map +0 -1
  487. package/library/ImportResourceDialog.d.ts +0 -43
  488. package/library/ImportResourceDialog.d.ts.map +0 -1
  489. package/library/ImportResourceDialog.js +0 -90
  490. package/library/ImportResourceDialog.js.map +0 -1
  491. package/library/parse-resource-yaml.d.ts +0 -63
  492. package/library/parse-resource-yaml.d.ts.map +0 -1
  493. package/library/parse-resource-yaml.js +0 -407
  494. package/library/parse-resource-yaml.js.map +0 -1
  495. package/library/serialize-resource-yaml.d.ts +0 -103
  496. package/library/serialize-resource-yaml.d.ts.map +0 -1
  497. package/library/serialize-resource-yaml.js +0 -565
  498. package/library/serialize-resource-yaml.js.map +0 -1
  499. package/library/useImportResource.d.ts +0 -84
  500. package/library/useImportResource.d.ts.map +0 -1
  501. package/library/useImportResource.js +0 -188
  502. package/library/useImportResource.js.map +0 -1
  503. package/src/execution/__tests__/agent-execution-document.test.ts +0 -45
  504. package/src/execution/agent-execution-document.ts +0 -54
  505. package/src/library/ImportResourceDialog.tsx +0 -227
  506. package/src/library/parse-resource-yaml.ts +0 -630
  507. package/src/library/serialize-resource-yaml.ts +0 -756
  508. package/src/library/useImportResource.ts +0 -253
  509. package/src/workflow/WorkflowAgentExecutionDocument.tsx +0 -283
  510. package/workflow/WorkflowAgentExecutionDocument.d.ts +0 -79
  511. package/workflow/WorkflowAgentExecutionDocument.d.ts.map +0 -1
  512. package/workflow/WorkflowAgentExecutionDocument.js +0 -87
  513. package/workflow/WorkflowAgentExecutionDocument.js.map +0 -1
@@ -27,9 +27,11 @@ import type { Stigmer } from "@stigmer/sdk";
27
27
  vi.mock("../../execution/useLiveAgentExecution", () => ({
28
28
  useLiveAgentExecution: vi.fn(),
29
29
  }));
30
- // The thread is the execution domain's heaviest organism; the document's
30
+ // The thread is the execution domain's heaviest organism; the transcript's
31
31
  // contract with it is props-shaped, so a probe recording them suffices.
32
32
  // The FileReviewDock renders REAL — its decision routing is the S5 subject.
33
+ // useInViewport runs REAL over the stubbed IntersectionObserver below, so
34
+ // the viewport gate is exercised end-to-end (ref attachment included).
33
35
  vi.mock("../../execution/MessageThread", () => ({
34
36
  MessageThread: vi.fn(() => <div data-testid="message-thread-probe" />),
35
37
  }));
@@ -39,13 +41,34 @@ import { MessageThread } from "../../execution/MessageThread";
39
41
  import { StigmerContext } from "../../context";
40
42
  import { useWorkflowExecutionActions } from "../useWorkflowExecutionActions";
41
43
  import {
42
- WorkflowAgentExecutionDocument,
44
+ WorkflowAgentCallTranscript,
43
45
  type WorkflowAgentExecutionHitl,
44
- } from "../WorkflowAgentExecutionDocument";
46
+ } from "../WorkflowAgentCallTranscript";
45
47
 
46
48
  const mockUseLiveAgentExecution = vi.mocked(useLiveAgentExecution);
47
49
  const mockMessageThread = vi.mocked(MessageThread);
48
50
 
51
+ // ---------------------------------------------------------------------------
52
+ // IntersectionObserver stub (the useAutoScroll.test pattern) — drives the
53
+ // real useInViewport inside the component.
54
+ // ---------------------------------------------------------------------------
55
+
56
+ let ioCallback: IntersectionObserverCallback;
57
+ let ioDisconnect: ReturnType<typeof vi.fn>;
58
+
59
+ function fireIO(isIntersecting: boolean) {
60
+ act(() => {
61
+ ioCallback(
62
+ [{ isIntersecting } as IntersectionObserverEntry],
63
+ {} as IntersectionObserver,
64
+ );
65
+ });
66
+ }
67
+
68
+ // ---------------------------------------------------------------------------
69
+ // Fixtures
70
+ // ---------------------------------------------------------------------------
71
+
49
72
  function executionFixture(
50
73
  id: string,
51
74
  phase: ExecutionPhase,
@@ -115,12 +138,35 @@ function hookState(
115
138
 
116
139
  beforeEach(() => {
117
140
  vi.clearAllMocks();
141
+ ioDisconnect = vi.fn();
142
+ vi.stubGlobal(
143
+ "IntersectionObserver",
144
+ vi.fn((cb: IntersectionObserverCallback) => {
145
+ ioCallback = cb;
146
+ return {
147
+ observe: vi.fn(),
148
+ unobserve: vi.fn(),
149
+ disconnect: ioDisconnect,
150
+ takeRecords: vi.fn(() => []),
151
+ root: null,
152
+ rootMargin: "",
153
+ thresholds: [0],
154
+ };
155
+ }),
156
+ );
157
+ });
158
+
159
+ afterEach(() => {
160
+ cleanup();
161
+ vi.restoreAllMocks();
118
162
  });
119
163
 
120
- afterEach(cleanup);
164
+ // ---------------------------------------------------------------------------
165
+ // Rendering & states
166
+ // ---------------------------------------------------------------------------
121
167
 
122
- describe("WorkflowAgentExecutionDocument", () => {
123
- it("renders a live transcript with the Live indicator while streaming", () => {
168
+ describe("WorkflowAgentCallTranscript", () => {
169
+ it("renders the child transcript with the streamed execution", () => {
124
170
  const running = executionFixture("aex_1", ExecutionPhase.EXECUTION_IN_PROGRESS);
125
171
  mockUseLiveAgentExecution.mockReturnValue(
126
172
  hookState({
@@ -131,21 +177,30 @@ describe("WorkflowAgentExecutionDocument", () => {
131
177
  );
132
178
 
133
179
  render(
134
- <WorkflowAgentExecutionDocument
135
- childExecutionId="aex_1"
136
- taskName="summarize-report"
137
- agentSlug="analyst"
138
- />,
180
+ <WorkflowAgentCallTranscript childExecutionId="aex_1" agentSlug="analyst" />,
139
181
  );
140
182
 
141
- expect(mockUseLiveAgentExecution).toHaveBeenCalledWith("aex_1");
142
183
  expect(screen.getByTestId("message-thread-probe")).toBeTruthy();
143
- expect(screen.getByText("Live")).toBeTruthy();
144
- expect(screen.getByText("summarize-report")).toBeTruthy();
145
- expect(screen.getByText("analyst")).toBeTruthy();
146
-
147
184
  const threadProps = mockMessageThread.mock.calls[0][0];
148
185
  expect(threadProps.activeStreamExecution).toBe(running);
186
+ expect(
187
+ screen.getByRole("group", { name: "Transcript of agent analyst" }),
188
+ ).toBeTruthy();
189
+ });
190
+
191
+ it("is bounded: the root carries the height cap, never full-height", () => {
192
+ mockUseLiveAgentExecution.mockReturnValue(
193
+ hookState({
194
+ execution: executionFixture("aex_1", ExecutionPhase.EXECUTION_COMPLETED),
195
+ phase: ExecutionPhase.EXECUTION_COMPLETED,
196
+ }),
197
+ );
198
+
199
+ render(<WorkflowAgentCallTranscript childExecutionId="aex_1" />);
200
+
201
+ const root = screen.getByRole("group", { name: "Agent transcript" });
202
+ expect(root.className).toContain("max-h-[60vh]");
203
+ expect(root.className).not.toContain("h-full");
149
204
  });
150
205
 
151
206
  it("is read-only without hitl: no thread handlers, no records, no dock (DD-011)", () => {
@@ -161,13 +216,8 @@ describe("WorkflowAgentExecutionDocument", () => {
161
216
  }),
162
217
  );
163
218
 
164
- render(
165
- <WorkflowAgentExecutionDocument childExecutionId="aex_1" taskName="t" />,
166
- );
219
+ render(<WorkflowAgentCallTranscript childExecutionId="aex_1" />);
167
220
 
168
- // The pre-S5 contract, preserved as the omitted-prop default: a host
169
- // composing the document without workflow actions gets an honest
170
- // status-only transcript — even with a pending set on the child.
171
221
  const threadProps = mockMessageThread.mock.calls[0][0];
172
222
  expect(threadProps.onApprovalSubmit).toBeUndefined();
173
223
  expect(threadProps.submittingApprovalIds).toBeUndefined();
@@ -177,21 +227,6 @@ describe("WorkflowAgentExecutionDocument", () => {
177
227
  ).toBeNull();
178
228
  });
179
229
 
180
- it("renders a terminal transcript with the phase badge and no Live indicator", () => {
181
- const done = executionFixture("aex_2", ExecutionPhase.EXECUTION_COMPLETED);
182
- mockUseLiveAgentExecution.mockReturnValue(
183
- hookState({ execution: done, phase: ExecutionPhase.EXECUTION_COMPLETED }),
184
- );
185
-
186
- render(
187
- <WorkflowAgentExecutionDocument childExecutionId="aex_2" taskName="t" />,
188
- );
189
-
190
- expect(screen.getByTestId("message-thread-probe")).toBeTruthy();
191
- expect(screen.getByRole("status", { name: "Completed" })).toBeTruthy();
192
- expect(screen.queryByText("Live")).toBeNull();
193
- });
194
-
195
230
  it("shows a Reconnecting affordance during a transient stream drop", () => {
196
231
  mockUseLiveAgentExecution.mockReturnValue(
197
232
  hookState({
@@ -201,9 +236,7 @@ describe("WorkflowAgentExecutionDocument", () => {
201
236
  }),
202
237
  );
203
238
 
204
- render(
205
- <WorkflowAgentExecutionDocument childExecutionId="aex_3" taskName="t" />,
206
- );
239
+ render(<WorkflowAgentCallTranscript childExecutionId="aex_3" />);
207
240
 
208
241
  expect(screen.getByText("Reconnecting…")).toBeTruthy();
209
242
  // The last snapshot stays visible through the drop.
@@ -213,9 +246,7 @@ describe("WorkflowAgentExecutionDocument", () => {
213
246
  it("shows the loading skeleton before the first snapshot", () => {
214
247
  mockUseLiveAgentExecution.mockReturnValue(hookState({ isLoading: true }));
215
248
 
216
- render(
217
- <WorkflowAgentExecutionDocument childExecutionId="aex_4" taskName="t" />,
218
- );
249
+ render(<WorkflowAgentCallTranscript childExecutionId="aex_4" />);
219
250
 
220
251
  expect(screen.getByLabelText("Loading conversation")).toBeTruthy();
221
252
  expect(screen.queryByTestId("message-thread-probe")).toBeNull();
@@ -227,9 +258,7 @@ describe("WorkflowAgentExecutionDocument", () => {
227
258
  hookState({ error: new Error("stream exhausted retries"), reconnect }),
228
259
  );
229
260
 
230
- render(
231
- <WorkflowAgentExecutionDocument childExecutionId="aex_5" taskName="t" />,
232
- );
261
+ render(<WorkflowAgentCallTranscript childExecutionId="aex_5" />);
233
262
 
234
263
  expect(screen.getByRole("alert").textContent).toContain(
235
264
  "stream exhausted retries",
@@ -241,9 +270,7 @@ describe("WorkflowAgentExecutionDocument", () => {
241
270
  it("renders an honest not-found notice when the execution no longer exists", () => {
242
271
  mockUseLiveAgentExecution.mockReturnValue(hookState());
243
272
 
244
- render(
245
- <WorkflowAgentExecutionDocument childExecutionId="aex_6" taskName="t" />,
246
- );
273
+ render(<WorkflowAgentCallTranscript childExecutionId="aex_6" />);
247
274
 
248
275
  expect(
249
276
  screen.getByText("This agent execution is no longer available."),
@@ -261,9 +288,8 @@ describe("WorkflowAgentExecutionDocument", () => {
261
288
  );
262
289
 
263
290
  render(
264
- <WorkflowAgentExecutionDocument
291
+ <WorkflowAgentCallTranscript
265
292
  childExecutionId="aex_7"
266
- taskName="t"
267
293
  onNavigateToAgentExecution={navigate}
268
294
  />,
269
295
  );
@@ -272,7 +298,7 @@ describe("WorkflowAgentExecutionDocument", () => {
272
298
  expect(navigate).toHaveBeenCalledWith("aex_7");
273
299
  });
274
300
 
275
- it("omits the pop-out when the host provides no navigation", () => {
301
+ it("omits the chrome bar entirely when there is nothing to show", () => {
276
302
  mockUseLiveAgentExecution.mockReturnValue(
277
303
  hookState({
278
304
  execution: executionFixture("aex_8", ExecutionPhase.EXECUTION_COMPLETED),
@@ -280,19 +306,62 @@ describe("WorkflowAgentExecutionDocument", () => {
280
306
  }),
281
307
  );
282
308
 
283
- render(
284
- <WorkflowAgentExecutionDocument childExecutionId="aex_8" taskName="t" />,
285
- );
309
+ render(<WorkflowAgentCallTranscript childExecutionId="aex_8" />);
286
310
 
287
311
  expect(screen.queryByRole("button", { name: /Open standalone/ })).toBeNull();
312
+ expect(screen.queryByText("Reconnecting…")).toBeNull();
288
313
  });
289
314
  });
290
315
 
291
316
  // ---------------------------------------------------------------------------
292
- // S5 — in-place HITL (interactive transcript)
317
+ // Viewport-gated streaming (T07)
293
318
  // ---------------------------------------------------------------------------
294
319
 
295
- describe("WorkflowAgentExecutionDocumentHITL wiring (S5)", () => {
320
+ describe("WorkflowAgentCallTranscriptviewport gate", () => {
321
+ it("passes live: false while off-screen and live: true once visible", () => {
322
+ mockUseLiveAgentExecution.mockReturnValue(
323
+ hookState({
324
+ execution: executionFixture("aex_1", ExecutionPhase.EXECUTION_IN_PROGRESS),
325
+ phase: ExecutionPhase.EXECUTION_IN_PROGRESS,
326
+ }),
327
+ );
328
+
329
+ render(<WorkflowAgentCallTranscript childExecutionId="aex_1" />);
330
+
331
+ // Before the observer's first callback the card is presumed off-screen:
332
+ // the snapshot fetch runs (the id is always passed) but live is false.
333
+ let lastCall = mockUseLiveAgentExecution.mock.calls.at(-1)!;
334
+ expect(lastCall[0]).toBe("aex_1");
335
+ expect(lastCall[1]).toEqual({ live: false });
336
+
337
+ // Scrolled into the (pre-warmed) viewport → the stream may open.
338
+ fireIO(true);
339
+ lastCall = mockUseLiveAgentExecution.mock.calls.at(-1)!;
340
+ expect(lastCall[1]).toEqual({ live: true });
341
+
342
+ // Scrolled away → the stream pauses (the hook keeps the last snapshot;
343
+ // its no-rewind behavior is unit-tested in useLiveAgentExecution).
344
+ fireIO(false);
345
+ lastCall = mockUseLiveAgentExecution.mock.calls.at(-1)!;
346
+ expect(lastCall[1]).toEqual({ live: false });
347
+ });
348
+
349
+ it("disconnects its observer on unmount", () => {
350
+ mockUseLiveAgentExecution.mockReturnValue(hookState());
351
+
352
+ const { unmount } = render(
353
+ <WorkflowAgentCallTranscript childExecutionId="aex_1" />,
354
+ );
355
+ unmount();
356
+ expect(ioDisconnect).toHaveBeenCalled();
357
+ });
358
+ });
359
+
360
+ // ---------------------------------------------------------------------------
361
+ // In-place HITL (migrated from the S4 document, whose tab this replaces)
362
+ // ---------------------------------------------------------------------------
363
+
364
+ describe("WorkflowAgentCallTranscript — HITL wiring", () => {
296
365
  it("threads the workflow approval handlers into the MessageThread", () => {
297
366
  const hitl = hitlStub();
298
367
  mockUseLiveAgentExecution.mockReturnValue(
@@ -303,17 +372,11 @@ describe("WorkflowAgentExecutionDocument — HITL wiring (S5)", () => {
303
372
  }),
304
373
  );
305
374
 
306
- render(
307
- <WorkflowAgentExecutionDocument
308
- childExecutionId="aex_1"
309
- taskName="t"
310
- hitl={hitl}
311
- />,
312
- );
375
+ render(<WorkflowAgentCallTranscript childExecutionId="aex_1" hitl={hitl} />);
313
376
 
314
377
  // Identity, not equivalence: the thread must submit through the SAME
315
- // workflow-level handler the bottom Approvals tab uses, so in-flight and
316
- // error state can never fork between the two surfaces.
378
+ // workflow-level handler every other surface uses, so in-flight and
379
+ // error state can never fork.
317
380
  const threadProps = mockMessageThread.mock.calls[0][0];
318
381
  expect(threadProps.onApprovalSubmit).toBe(hitl.submitApproval);
319
382
  expect(threadProps.submittingApprovalIds).toBe(hitl.approvalSubmittingToolCallIds);
@@ -335,16 +398,8 @@ describe("WorkflowAgentExecutionDocument — HITL wiring (S5)", () => {
335
398
  }),
336
399
  );
337
400
 
338
- render(
339
- <WorkflowAgentExecutionDocument
340
- childExecutionId="aex_1"
341
- taskName="t"
342
- hitl={hitl}
343
- />,
344
- );
401
+ render(<WorkflowAgentCallTranscript childExecutionId="aex_1" hitl={hitl} />);
345
402
 
346
- // The real dock renders (region + accessible label), pinned in the
347
- // document rather than in-thread.
348
403
  expect(
349
404
  screen.getByRole("region", { name: "File changes awaiting review" }),
350
405
  ).toBeTruthy();
@@ -375,11 +430,7 @@ describe("WorkflowAgentExecutionDocument — HITL wiring (S5)", () => {
375
430
  );
376
431
 
377
432
  render(
378
- <WorkflowAgentExecutionDocument
379
- childExecutionId="aex_1"
380
- taskName="t"
381
- hitl={hitlStub()}
382
- />,
433
+ <WorkflowAgentCallTranscript childExecutionId="aex_1" hitl={hitlStub()} />,
383
434
  );
384
435
 
385
436
  expect(
@@ -413,11 +464,7 @@ describe("WorkflowAgentExecutionDocument — HITL wiring (S5)", () => {
413
464
  );
414
465
 
415
466
  render(
416
- <WorkflowAgentExecutionDocument
417
- childExecutionId="aex_1"
418
- taskName="t"
419
- hitl={hitlStub()}
420
- />,
467
+ <WorkflowAgentCallTranscript childExecutionId="aex_1" hitl={hitlStub()} />,
421
468
  );
422
469
 
423
470
  expect(
@@ -435,18 +482,14 @@ describe("WorkflowAgentExecutionDocument — HITL wiring (S5)", () => {
435
482
  }),
436
483
  );
437
484
 
438
- const props = {
439
- childExecutionId: "aex_1",
440
- taskName: "t",
441
- hitl,
442
- } as const;
443
- const { rerender } = render(<WorkflowAgentExecutionDocument {...props} />);
485
+ const props = { childExecutionId: "aex_1", hitl } as const;
486
+ const { rerender } = render(<WorkflowAgentCallTranscript {...props} />);
444
487
  const rendersAfterMount = mockMessageThread.mock.calls.length;
445
488
 
446
- // Same refs (the viewer's memoized bundle) → memo bails, no thread render.
447
- // This is what keeps unrelated viewer churn (a lifecycle action's
448
- // isSubmitting flip) out of an open transcript (DD-010).
449
- rerender(<WorkflowAgentExecutionDocument {...props} />);
489
+ // Same refs (the viewer's memoized bundle) → memo bails, no thread
490
+ // render. This is what keeps unrelated viewer churn out of every
491
+ // mounted transcript (DD-010).
492
+ rerender(<WorkflowAgentCallTranscript {...props} />);
450
493
  expect(mockMessageThread.mock.calls.length).toBe(rendersAfterMount);
451
494
 
452
495
  // A gate going in-flight produces a NEW submitting set → the transcript
@@ -455,13 +498,13 @@ describe("WorkflowAgentExecutionDocument — HITL wiring (S5)", () => {
455
498
  ...hitl,
456
499
  approvalSubmittingToolCallIds: new Set(["tc-1"]),
457
500
  };
458
- rerender(<WorkflowAgentExecutionDocument {...props} hitl={submitting} />);
501
+ rerender(<WorkflowAgentCallTranscript {...props} hitl={submitting} />);
459
502
  expect(mockMessageThread.mock.calls.length).toBeGreaterThan(rendersAfterMount);
460
503
  const latest = mockMessageThread.mock.calls.at(-1)![0];
461
504
  expect(latest.submittingApprovalIds).toBe(submitting.approvalSubmittingToolCallIds);
462
505
  });
463
506
 
464
- it("keeps the thread below the header and the dock below the thread", () => {
507
+ it("keeps the dock below the thread, outside the scroll container", () => {
465
508
  mockUseLiveAgentExecution.mockReturnValue(
466
509
  hookState({
467
510
  execution: executionFixture(
@@ -475,16 +518,9 @@ describe("WorkflowAgentExecutionDocument — HITL wiring (S5)", () => {
475
518
  );
476
519
 
477
520
  render(
478
- <WorkflowAgentExecutionDocument
479
- childExecutionId="aex_1"
480
- taskName="t"
481
- hitl={hitlStub()}
482
- />,
521
+ <WorkflowAgentCallTranscript childExecutionId="aex_1" hitl={hitlStub()} />,
483
522
  );
484
523
 
485
- // The dock is a SIBLING after the thread's wrapper (the fixed strip at
486
- // the document bottom), never inside the scroll container where it
487
- // could scroll out of view.
488
524
  const thread = screen.getByTestId("message-thread-probe");
489
525
  const dock = document.querySelector('[data-cursor-target="file-review-dock"]')!;
490
526
  expect(dock.contains(thread)).toBe(false);
@@ -495,18 +531,18 @@ describe("WorkflowAgentExecutionDocument — HITL wiring (S5)", () => {
495
531
  });
496
532
 
497
533
  // ---------------------------------------------------------------------------
498
- // S5 — routing guardrail: decisions go through the WORKFLOW RPCs
534
+ // Routing guardrail: decisions go through the WORKFLOW RPCs (S5, preserved)
499
535
  // ---------------------------------------------------------------------------
500
536
 
501
537
  /**
502
- * Integration-shaped guardrail: the document driven by a REAL
538
+ * Integration-shaped guardrail: the transcript driven by a REAL
503
539
  * `useWorkflowExecutionActions` instance must reach the workflow-scoped RPCs
504
540
  * (`workflowExecution.submitApproval` / `submitFileDecision`) and never the
505
541
  * child's own `agentExecution.*` submit path. The two are server-equivalent
506
542
  * but check different authorization (workflow vs. runner-spawned child) —
507
543
  * a refactor that silently reintroduces the child path is a permission bug.
508
544
  */
509
- describe("WorkflowAgentExecutionDocument — workflow-RPC routing", () => {
545
+ describe("WorkflowAgentCallTranscript — workflow-RPC routing", () => {
510
546
  const wfSubmitApproval = vi.fn();
511
547
  const wfSubmitFileDecision = vi.fn();
512
548
  const agentSubmitApproval = vi.fn();
@@ -525,15 +561,11 @@ describe("WorkflowAgentExecutionDocument — workflow-RPC routing", () => {
525
561
  } as unknown as Stigmer;
526
562
  }
527
563
 
528
- /** Renders the document exactly as the viewer wires it: hitl from the hook. */
564
+ /** Renders the transcript exactly as the viewer wires it: hitl from the hook. */
529
565
  function Harness({ children: _unused }: { children?: ReactNode }) {
530
566
  const actions = useWorkflowExecutionActions("wex-1");
531
567
  return (
532
- <WorkflowAgentExecutionDocument
533
- childExecutionId="aex_1"
534
- taskName="t"
535
- hitl={actions}
536
- />
568
+ <WorkflowAgentCallTranscript childExecutionId="aex_1" hitl={actions} />
537
569
  );
538
570
  }
539
571
 
@@ -605,11 +637,6 @@ describe("WorkflowAgentExecutionDocument — workflow-RPC routing", () => {
605
637
  });
606
638
 
607
639
  it("delivers a failed submit to the thread as a keyed in-card error, and a retry clears it", async () => {
608
- // The parent-surfacing race (or any server rejection) must degrade to a
609
- // retryable in-card error: the keyed map records the failure, the
610
- // document re-renders and delivers it to the thread (which renders it
611
- // beside the gate — MessageThread's own tested behavior), and the
612
- // handler resolves rather than throwing (no error boundary, no teardown).
613
640
  mockUseLiveAgentExecution.mockReturnValue(
614
641
  hookState({
615
642
  execution: executionFixture("aex_1", ExecutionPhase.EXECUTION_IN_PROGRESS),
@@ -638,8 +665,6 @@ describe("WorkflowAgentExecutionDocument — workflow-RPC routing", () => {
638
665
  );
639
666
  expect(failedProps.submittingApprovalIds?.has("tc-1")).toBe(false);
640
667
 
641
- // Retrying the same gate goes back through the workflow RPC and clears
642
- // the keyed error on success.
643
668
  await act(async () => {
644
669
  await failedProps.onApprovalSubmit!("tc-1", ApprovalAction.APPROVE);
645
670
  });