@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
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
 
3
- import { useEffect, useMemo, useRef, useState } from "react";
3
+ import { useEffect, useRef, useState } from "react";
4
4
  import { create } from "@bufbuild/protobuf";
5
5
  import {
6
6
  CheckMyPermissionInputSchema,
@@ -18,6 +18,25 @@ export interface PermissionCheckResource {
18
18
  readonly id: string;
19
19
  }
20
20
 
21
+ /** Options for {@link useCheckPermission}. */
22
+ export interface CheckPermissionOptions {
23
+ /**
24
+ * Behavior when authorization cannot be confirmed — the check is in
25
+ * flight, the RPC failed, the resource is `null`, or the server does
26
+ * not implement authorization checks (OSS edition).
27
+ *
28
+ * - `"open"` (default): `allowed` is `true`. Right for gating
29
+ * *capabilities* (buttons, actions) — the server re-checks every
30
+ * request anyway, and all UI stays visible in single-user local
31
+ * mode.
32
+ * - `"closed"`: `allowed` is `false` until the server explicitly
33
+ * authorizes. Right for *discoverability* surfaces (navigation to
34
+ * operator-only areas) that must not appear on deployments where
35
+ * the feature does not exist.
36
+ */
37
+ readonly fail?: "open" | "closed";
38
+ }
39
+
21
40
  /** Return value of {@link useCheckPermission}. */
22
41
  export interface UseCheckPermissionReturn {
23
42
  /** Whether the current user has the specified permission. */
@@ -34,21 +53,24 @@ export interface UseCheckPermissionReturn {
34
53
  *
35
54
  * Wraps `iamPolicy.checkMyPermission()` — the dedicated self-check RPC
36
55
  * where the server derives the principal from the authenticated token
37
- * (the client never names a principal) — with caching and graceful
38
- * degradation. When the server does not support authorization checks
39
- * (OSS edition where the IAM service is not registered), the hook
40
- * returns `allowed: true` ensuring all UI is visible in single-user
41
- * local mode.
56
+ * (the client never names a principal) — with caching and configurable
57
+ * degradation. By default the hook *fails open*: when the server does
58
+ * not support authorization checks (OSS edition where the IAM service
59
+ * is not registered), it returns `allowed: true` so all UI remains
60
+ * visible in single-user local mode. Pass `{ fail: "closed" }` for
61
+ * surfaces that must stay hidden until authorization is confirmed
62
+ * (see {@link CheckPermissionOptions}).
42
63
  *
43
- * Pass `null` as `resource` to skip the check (returns `allowed: true`
44
- * immediately the "no resource yet" case is permissive to avoid
45
- * flashing hidden UI).
64
+ * Pass `null` as `resource` to skip the check the result resolves
65
+ * through the fail mode (`allowed: true` under the default fail-open).
46
66
  *
47
- * Results are cached per (kind, id, relation) triple for the lifetime
48
- * of the component mount. Re-mount or change inputs to re-check.
67
+ * Only genuine server verdicts are cached (per (kind, id, relation)
68
+ * triple, for the lifetime of the component mount). A failed check is
69
+ * never cached, so a transient error does not pin a wrong answer.
49
70
  *
50
71
  * @param resource - The resource to check, or `null` to skip.
51
72
  * @param relation - The permission to check (e.g. "can_edit", "can_grant_access").
73
+ * @param options - Fail-mode configuration; see {@link CheckPermissionOptions}.
52
74
  *
53
75
  * @example
54
76
  * ```tsx
@@ -63,9 +85,13 @@ export interface UseCheckPermissionReturn {
63
85
  export function useCheckPermission(
64
86
  resource: PermissionCheckResource | null,
65
87
  relation: string,
88
+ options?: CheckPermissionOptions,
66
89
  ): UseCheckPermissionReturn {
67
90
  const stigmer = useStigmer();
68
- const [allowed, setAllowed] = useState(true);
91
+ const failMode = options?.fail ?? "open";
92
+ const failValue = failMode === "open";
93
+
94
+ const [allowed, setAllowed] = useState(failValue);
69
95
  const [isLoading, setIsLoading] = useState(false);
70
96
  const [error, setError] = useState<Error | null>(null);
71
97
 
@@ -74,7 +100,7 @@ export function useCheckPermission(
74
100
 
75
101
  useEffect(() => {
76
102
  if (!resource || !cacheKey) {
77
- setAllowed(true);
103
+ setAllowed(failValue);
78
104
  setIsLoading(false);
79
105
  return;
80
106
  }
@@ -87,6 +113,7 @@ export function useCheckPermission(
87
113
  }
88
114
 
89
115
  let cancelled = false;
116
+ setAllowed(failValue);
90
117
  setIsLoading(true);
91
118
 
92
119
  const input = create(CheckMyPermissionInputSchema, {
@@ -108,11 +135,10 @@ export function useCheckPermission(
108
135
  })
109
136
  .catch((err: unknown) => {
110
137
  if (cancelled) return;
111
- // Graceful degradation: if the IAM service is unavailable
112
- // (OSS edition), default to permissive. This ensures all
113
- // UI remains visible in single-user local mode.
114
- cacheRef.current.set(cacheKey, true);
115
- setAllowed(true);
138
+ // Degradation is fail-mode-resolved and deliberately NOT cached:
139
+ // an error is not an authorization verdict, and caching it would
140
+ // pin a possibly-wrong answer for the mount's lifetime.
141
+ setAllowed(failValue);
116
142
  setError(err instanceof Error ? err : new Error(String(err)));
117
143
  })
118
144
  .finally(() => {
@@ -122,7 +148,7 @@ export function useCheckPermission(
122
148
  return () => {
123
149
  cancelled = true;
124
150
  };
125
- }, [cacheKey, resource?.kind, resource?.id, relation, stigmer]);
151
+ }, [cacheKey, resource?.kind, resource?.id, relation, failValue, stigmer]);
126
152
 
127
153
  return { allowed, isLoading, error };
128
154
  }
package/src/index.ts CHANGED
@@ -346,9 +346,6 @@ export {
346
346
  toFileDiffEntry,
347
347
  FILE_CHANGE_DOCUMENT_ENTRY_ID,
348
348
  fileChangeTabPath,
349
- AGENT_EXECUTION_DOCUMENT_ENTRY_ID,
350
- agentExecutionTabPath,
351
- parseAgentExecutionTabPath,
352
349
  EmptyChangeNotice,
353
350
  isTextArtifact,
354
351
  formatArtifactSize,
@@ -363,6 +360,7 @@ export type {
363
360
  SharedAgentExecutionFields,
364
361
  UseCreateAgentExecutionReturn,
365
362
  UseExecutionStreamReturn,
363
+ UseLiveAgentExecutionOptions,
366
364
  UseLiveAgentExecutionReturn,
367
365
  UseAgentExecutionActionsOptions,
368
366
  UseAgentExecutionActionsReturn,
@@ -679,6 +677,88 @@ export type {
679
677
  AgentWizardData,
680
678
  } from "./agent/index.js";
681
679
 
680
+ // Datastore — data hooks (kind family + describe projection), record
681
+ // hooks (find/insert/update/delete + grid collection), guarded delete,
682
+ // the canonical value semantics of declared fields, the typed filter
683
+ // model, and the six styled components (detail view, records browser,
684
+ // filter builder, record form, schema view, sync report, delete dialog)
685
+ export {
686
+ useDatastore,
687
+ useDatastoreList,
688
+ useDatastoreCount,
689
+ useDatastoreSearch,
690
+ useDatastoreDescription,
691
+ DEFAULT_PARTITION,
692
+ useRecordList,
693
+ useInsertRecord,
694
+ useUpdateRecord,
695
+ useDeleteRecord,
696
+ useRecordCollection,
697
+ useDeleteDatastore,
698
+ buildUpdateFields,
699
+ coerceFieldValue,
700
+ formatFieldValue,
701
+ formatSystemTimestamp,
702
+ isListOperator,
703
+ isSortableField,
704
+ isValuelessOperator,
705
+ operatorsForField,
706
+ OPERATOR_LABELS,
707
+ RESERVED_FIELD_NAMES,
708
+ SYSTEM_FIELD_OPERATORS,
709
+ buildRecordFilter,
710
+ filterableFields,
711
+ formatConditionChip,
712
+ isConditionComplete,
713
+ FieldValueControl,
714
+ FIELD_INPUT_CLASSES,
715
+ CollectionSchemaView,
716
+ formatSubject,
717
+ DatastoreSyncReport,
718
+ RecordFilterBuilder,
719
+ RecordFormPanel,
720
+ CollectionRecordsBrowser,
721
+ DeleteDatastoreDialog,
722
+ DatastoreDetailView,
723
+ DatastoreIcon,
724
+ } from "./datastore/index.js";
725
+ export type {
726
+ UseDatastoreReturn,
727
+ UseDatastoreListOptions,
728
+ UseDatastoreListReturn,
729
+ UseDatastoreCountOptions,
730
+ UseDatastoreCountReturn,
731
+ UseDatastoreSearchOptions,
732
+ UseDatastoreSearchReturn,
733
+ UseDatastoreDescriptionReturn,
734
+ RecordScope,
735
+ UseRecordListParams,
736
+ UseRecordListReturn,
737
+ InsertRecordArgs,
738
+ UseInsertRecordReturn,
739
+ UpdateRecordArgs,
740
+ UseUpdateRecordReturn,
741
+ DeleteRecordArgs,
742
+ UseDeleteRecordReturn,
743
+ RecordColumnDef,
744
+ UseRecordCollectionOptions,
745
+ UseRecordCollectionReturn,
746
+ DeleteDatastoreArgs,
747
+ UseDeleteDatastoreReturn,
748
+ CoerceResult,
749
+ FilterableField,
750
+ RecordConditionDraft,
751
+ FieldValueControlProps,
752
+ CollectionSchemaViewProps,
753
+ DatastoreSyncReportProps,
754
+ RecordFilterBuilderProps,
755
+ RecordFormPanelProps,
756
+ CollectionRecordsBrowserProps,
757
+ DeleteDatastoreDialogProps,
758
+ DatastoreDetailTab,
759
+ DatastoreDetailViewProps,
760
+ } from "./datastore/index.js";
761
+
682
762
  // Environment — data hooks, list hook, personal convenience hook, secret reveal, variable management, env var form, system env vars, and styled components
683
763
  export {
684
764
  useEnvironment,
@@ -772,6 +852,7 @@ export type {
772
852
  UseShareFlowReturn,
773
853
  ShareFlowResource,
774
854
  UseCheckPermissionReturn,
855
+ CheckPermissionOptions,
775
856
  PermissionCheckResource,
776
857
  RoleSelectorProps,
777
858
  PrincipalPickerProps,
@@ -834,9 +915,15 @@ export {
834
915
  useCreditLedger,
835
916
  useBillingUsageReport,
836
917
  useCustomerModelPricing,
918
+ usePricingGovernance,
919
+ useModelPricingBaselines,
920
+ useModelGovernanceView,
837
921
  useCreateCheckoutSession,
838
922
  useCreateBillingPortalSession,
839
923
  useSetAutoRechargeConfig,
924
+ useDecidePricingOverride,
925
+ useUpsertModelPricingBaseline,
926
+ useRetireModelPricingBaseline,
840
927
  BillingSection,
841
928
  CreditBalanceCard,
842
929
  PaymentMethodCard,
@@ -844,6 +931,9 @@ export {
844
931
  CreditPackGrid,
845
932
  CreditLedgerTable,
846
933
  LowBalanceBanner,
934
+ PricingGovernancePanel,
935
+ ModelCatalogPanel,
936
+ PricingGovernanceConsole,
847
937
  CREDIT_PACKS,
848
938
  formatPackPrice,
849
939
  formatCreditCount,
@@ -860,11 +950,23 @@ export type {
860
950
  UseCreditLedgerOptions,
861
951
  UseBillingUsageReportReturn,
862
952
  UseCustomerModelPricingReturn,
953
+ UsePricingGovernanceReturn,
954
+ UseModelPricingBaselinesOptions,
955
+ UseModelPricingBaselinesReturn,
956
+ GovernanceFlow,
957
+ ModelGovernanceRow,
958
+ UseModelGovernanceViewReturn,
863
959
  CreateCheckoutSessionInput,
864
960
  UseCreateCheckoutSessionReturn,
865
961
  UseCreateBillingPortalSessionReturn,
866
962
  SetAutoRechargeConfigInput,
867
963
  UseSetAutoRechargeConfigReturn,
964
+ DecidePricingOverrideInput,
965
+ UseDecidePricingOverrideReturn,
966
+ UpsertModelPricingBaselineInput,
967
+ UseUpsertModelPricingBaselineReturn,
968
+ RetireModelPricingBaselineInput,
969
+ UseRetireModelPricingBaselineReturn,
868
970
  BillingSectionProps,
869
971
  CreditBalanceCardProps,
870
972
  PaymentMethodCardProps,
@@ -872,11 +974,46 @@ export type {
872
974
  CreditPackGridProps,
873
975
  CreditLedgerTableProps,
874
976
  LowBalanceBannerProps,
977
+ PricingGovernancePanelProps,
978
+ ModelCatalogPanelProps,
979
+ PricingGovernanceConsoleProps,
980
+ PricingGovernanceTab,
875
981
  CreditPackInfo,
876
982
  } from "./billing/index.js";
877
983
 
984
+ // Cursor accounts — platform-operator management of managed Cursor teams
985
+ // (admin keys, member execution keys, org assignments, roster/spend)
986
+ export {
987
+ useCursorAccounts,
988
+ useCursorAccountView,
989
+ useUpsertCursorAccount,
990
+ useDeleteCursorAccount,
991
+ useCursorMemberKeyActions,
992
+ useSyncCursorAccount,
993
+ CursorAccountsConsole,
994
+ CursorAccountEditor,
995
+ CursorAccountsAccessNotice,
996
+ } from "./cursor-accounts/index.js";
997
+ export type {
998
+ UseCursorAccountsReturn,
999
+ UseCursorAccountViewReturn,
1000
+ UseUpsertCursorAccountReturn,
1001
+ DeleteCursorAccountInput,
1002
+ UseDeleteCursorAccountReturn,
1003
+ AddCursorMemberKeyInput,
1004
+ RemoveCursorMemberKeyInput,
1005
+ UseCursorMemberKeyActionsReturn,
1006
+ UseSyncCursorAccountReturn,
1007
+ CursorAccountsConsoleProps,
1008
+ CursorAccountEditorProps,
1009
+ } from "./cursor-accounts/index.js";
1010
+
878
1011
  // Settings — navigation structure + section components shared across app shells
879
- export { SETTINGS_NAV_GROUPS } from "./settings/index.js";
1012
+ export {
1013
+ SETTINGS_NAV_GROUPS,
1014
+ PLATFORM_SETTINGS_NAV_GROUP,
1015
+ useSettingsNavGroups,
1016
+ } from "./settings/index.js";
880
1017
  export type { SettingsNavItem, SettingsNavGroup } from "./settings/index.js";
881
1018
  export { ApiKeysSection } from "./settings/index.js";
882
1019
  export { MembersSection } from "./settings/index.js";
@@ -1140,15 +1277,8 @@ export {
1140
1277
  findStreamingPlan,
1141
1278
  PLAN_ARTIFACT_NAME,
1142
1279
  PLAN_ARTIFACT_SUFFIX,
1143
- parseResourceYaml,
1144
- serializeAgentYaml,
1145
- serializeMcpServerYaml,
1146
- serializeAgentInputYaml,
1147
- serializeMcpServerInputYaml,
1148
1280
  useApplyResource,
1149
1281
  useExportResource,
1150
- useImportResource,
1151
- ImportResourceDialog,
1152
1282
  VisibilitySelector,
1153
1283
  VisibilityBadge,
1154
1284
  blueprintVisibilityLevels,
@@ -1165,23 +1295,42 @@ export type {
1165
1295
  SessionPlan,
1166
1296
  StreamingPlan,
1167
1297
  UseDetectSkillPackageReturn,
1168
- ParsedResource,
1169
1298
  UseApplyResourceReturn,
1170
1299
  ApplyResourceResult,
1171
1300
  PushSkillParams,
1172
1301
  UseExportResourceOptions,
1173
1302
  UseExportResourceReturn,
1174
- ImportFormat,
1175
- ImportPreview,
1176
- UseImportResourceReturn,
1177
- ImportResourceDialogProps,
1178
1303
  VisibilitySelectorProps,
1304
+ VisibilityBadgeProps,
1179
1305
  VisibilityLevelOption,
1180
1306
  BlueprintVisibilityLevelsContext,
1181
1307
  VisibilityResourceKind,
1182
1308
  UseUpdateVisibilityReturn,
1183
1309
  } from "./library/index.js";
1184
1310
 
1311
+ // Manifest — kind-agnostic YAML edit/apply (editor, hooks, dialogs)
1312
+ export {
1313
+ YamlEditor,
1314
+ useEditResourceYaml,
1315
+ useApplyManifest,
1316
+ EditResourceYamlDialog,
1317
+ ApplyManifestDialog,
1318
+ RedactedSecretsNotice,
1319
+ } from "./manifest/index.js";
1320
+ export type {
1321
+ YamlEditorProps,
1322
+ EditYamlTarget,
1323
+ EditYamlValidation,
1324
+ UseEditResourceYamlOptions,
1325
+ UseEditResourceYamlReturn,
1326
+ ManifestEntryStatus,
1327
+ ManifestPreviewEntry,
1328
+ UseApplyManifestReturn,
1329
+ EditResourceYamlDialogProps,
1330
+ ApplyManifestDialogProps,
1331
+ RedactedSecretsNoticeProps,
1332
+ } from "./manifest/index.js";
1333
+
1185
1334
  // Action menu — compound component for resource item actions
1186
1335
  export { ActionMenu } from "./action-menu/index.js";
1187
1336
  export type {
@@ -1485,7 +1634,7 @@ export {
1485
1634
  WorkflowChangesTab,
1486
1635
  WorkflowUsageTab,
1487
1636
  WorkflowArtifactDocument,
1488
- WorkflowAgentExecutionDocument,
1637
+ WorkflowAgentCallTranscript,
1489
1638
  useWorkflowArtifactDownload,
1490
1639
  useWorkflowExecutionFileChanges,
1491
1640
  enumerateAgentCallChildren,
@@ -1627,7 +1776,7 @@ export type {
1627
1776
  UseWorkflowExecutionFileChangesOptions,
1628
1777
  UseWorkflowExecutionFileChangesReturn,
1629
1778
  WorkflowArtifactDocumentProps,
1630
- WorkflowAgentExecutionDocumentProps,
1779
+ WorkflowAgentCallTranscriptProps,
1631
1780
  WorkflowAgentExecutionHitl,
1632
1781
  UseWorkflowArtifactDownloadReturn,
1633
1782
  WorkflowArtifactEntry,
@@ -0,0 +1,115 @@
1
+ import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
2
+ import { render, act, screen, cleanup } from "@testing-library/react";
3
+ import React from "react";
4
+ import { useInViewport, type UseInViewportReturn } from "../useInViewport";
5
+
6
+ // ---------------------------------------------------------------------------
7
+ // Test harness — renders a real element so the ref gets populated
8
+ // ---------------------------------------------------------------------------
9
+
10
+ let latestResult: UseInViewportReturn;
11
+
12
+ function Harness() {
13
+ const result = useInViewport();
14
+ latestResult = result;
15
+ return <div ref={result.ref} data-testid="target" />;
16
+ }
17
+
18
+ // ---------------------------------------------------------------------------
19
+ // Observer mock (the useAutoScroll.test pattern)
20
+ // ---------------------------------------------------------------------------
21
+
22
+ type IOCallback = IntersectionObserverCallback;
23
+
24
+ let ioCallback: IOCallback;
25
+ let ioDisconnect: ReturnType<typeof vi.fn>;
26
+ let ioObserve: ReturnType<typeof vi.fn>;
27
+
28
+ beforeEach(() => {
29
+ ioDisconnect = vi.fn();
30
+ ioObserve = vi.fn();
31
+
32
+ vi.stubGlobal(
33
+ "IntersectionObserver",
34
+ vi.fn((cb: IOCallback) => {
35
+ ioCallback = cb;
36
+ return {
37
+ observe: ioObserve,
38
+ unobserve: vi.fn(),
39
+ disconnect: ioDisconnect,
40
+ takeRecords: vi.fn(() => []),
41
+ root: null,
42
+ rootMargin: "",
43
+ thresholds: [0],
44
+ };
45
+ }),
46
+ );
47
+ });
48
+
49
+ afterEach(() => {
50
+ cleanup();
51
+ vi.restoreAllMocks();
52
+ });
53
+
54
+ function fireIO(isIntersecting: boolean) {
55
+ act(() => {
56
+ ioCallback(
57
+ [{ isIntersecting } as IntersectionObserverEntry],
58
+ {} as IntersectionObserver,
59
+ );
60
+ });
61
+ }
62
+
63
+ // ---------------------------------------------------------------------------
64
+ // Tests
65
+ // ---------------------------------------------------------------------------
66
+
67
+ describe("useInViewport", () => {
68
+ it("starts not-visible until the observer's first callback", () => {
69
+ render(<Harness />);
70
+ expect(latestResult.isVisible).toBe(false);
71
+ });
72
+
73
+ it("observes the target element on mount", () => {
74
+ render(<Harness />);
75
+ expect(ioObserve).toHaveBeenCalledWith(screen.getByTestId("target"));
76
+ });
77
+
78
+ it("uses the top-level viewport as root with the pre-warm margin", () => {
79
+ render(<Harness />);
80
+ const IOConstructor = vi.mocked(IntersectionObserver);
81
+ const options = IOConstructor.mock.calls[0]?.[1];
82
+ expect(options?.root).toBeNull();
83
+ expect(options?.rootMargin).toBe("200px 0px 200px 0px");
84
+ });
85
+
86
+ it("flips visible on enter and back on leave", () => {
87
+ render(<Harness />);
88
+
89
+ fireIO(true);
90
+ expect(latestResult.isVisible).toBe(true);
91
+
92
+ fireIO(false);
93
+ expect(latestResult.isVisible).toBe(false);
94
+ });
95
+
96
+ it("reads the LATEST entry when a batch carries several", () => {
97
+ render(<Harness />);
98
+ act(() => {
99
+ ioCallback(
100
+ [
101
+ { isIntersecting: true } as IntersectionObserverEntry,
102
+ { isIntersecting: false } as IntersectionObserverEntry,
103
+ ],
104
+ {} as IntersectionObserver,
105
+ );
106
+ });
107
+ expect(latestResult.isVisible).toBe(false);
108
+ });
109
+
110
+ it("disconnects the observer on unmount", () => {
111
+ const { unmount } = render(<Harness />);
112
+ unmount();
113
+ expect(ioDisconnect).toHaveBeenCalled();
114
+ });
115
+ });
@@ -0,0 +1,63 @@
1
+ "use client";
2
+
3
+ import { useEffect, useRef, useState } from "react";
4
+
5
+ /**
6
+ * Pre-warm margin in pixels. The element is reported visible while it is
7
+ * within this distance of the viewport, so consumers that attach expensive
8
+ * resources on visibility (e.g. a live stream subscription) connect just
9
+ * BEFORE the element scrolls into view and linger just after it leaves —
10
+ * a fast scroll past a row never thrashes connect/disconnect.
11
+ */
12
+ const PREWARM_MARGIN_PX = 200;
13
+
14
+ export interface UseInViewportReturn {
15
+ /** Attach to the element whose viewport visibility is tracked. */
16
+ readonly ref: React.RefObject<HTMLDivElement | null>;
17
+ /** True while the element is within the pre-warmed viewport. */
18
+ readonly isVisible: boolean;
19
+ }
20
+
21
+ /**
22
+ * Headless viewport-visibility hook over `IntersectionObserver`.
23
+ *
24
+ * `root` is deliberately `null` (the top-level viewport): per the
25
+ * IntersectionObserver spec, an element clipped by any intervening
26
+ * scroll container (e.g. the workflow thread's own scroller) does not
27
+ * intersect the viewport either, so nested scroll contexts are handled
28
+ * without naming them. `display: none` subtrees report not-visible — a
29
+ * CSS-hidden center view correctly suspends its visibility-gated work.
30
+ *
31
+ * Starts `false` until the observer's first callback; consumers should
32
+ * treat visibility as an upgrade signal, not a render gate.
33
+ *
34
+ * @internal Not part of the public API (promote if a second consumer
35
+ * appears outside the workflow thread).
36
+ */
37
+ export function useInViewport(): UseInViewportReturn {
38
+ const ref = useRef<HTMLDivElement | null>(null);
39
+ const [isVisible, setIsVisible] = useState(false);
40
+
41
+ useEffect(() => {
42
+ const el = ref.current;
43
+ if (!el) return;
44
+
45
+ const io = new IntersectionObserver(
46
+ (entries) => {
47
+ const entry = entries[entries.length - 1];
48
+ if (!entry) return;
49
+ setIsVisible(entry.isIntersecting);
50
+ },
51
+ {
52
+ root: null,
53
+ rootMargin: `${PREWARM_MARGIN_PX}px 0px ${PREWARM_MARGIN_PX}px 0px`,
54
+ threshold: 0,
55
+ },
56
+ );
57
+
58
+ io.observe(el);
59
+ return () => io.disconnect();
60
+ }, []);
61
+
62
+ return { ref, isVisible };
63
+ }
@@ -409,28 +409,69 @@ function CaretIcon() {
409
409
  );
410
410
  }
411
411
 
412
+ /** Props for {@link VisibilityBadge}. */
413
+ export interface VisibilityBadgeProps {
414
+ /** The visibility level to display. */
415
+ readonly visibility: ApiResourceVisibility;
416
+ /** Additional CSS classes applied to the chip. */
417
+ readonly className?: string;
418
+ /**
419
+ * When provided, the badge renders as a button and invokes this on
420
+ * activation. Detail headers use it as a shortcut into the Manage access
421
+ * dialog, so the at-a-glance chip is also the entry point to editing —
422
+ * the chip stays navigation-only (the dialog remains the single writer
423
+ * for both access axes). Omit it for a plain, non-interactive badge.
424
+ */
425
+ readonly onClick?: () => void;
426
+ }
427
+
412
428
  /**
413
- * Read-only visibility indicator with a matching icon, covering all four
414
- * levels (Private / Organization / Platform / Public).
429
+ * Visibility indicator with a matching icon, covering all four levels
430
+ * (Private / Organization / Platform / Public).
415
431
  *
416
432
  * Rendered wherever the interactive {@link VisibilitySelector} is not
417
433
  * available — for viewers who lack `can_edit`, and while a permission check
418
434
  * is in flight — so a resource's visibility is always legible rather than
419
435
  * silently blank. Shares the chip styling with the selector trigger so the
420
436
  * read-only and editable states are visually consistent.
437
+ *
438
+ * With {@link VisibilityBadgeProps.onClick} the chip becomes an accessible
439
+ * button (hover + focus affordances, "Manage access" label) that hosts wire
440
+ * to their access-management surface; the badge itself never edits.
421
441
  */
422
442
  export function VisibilityBadge({
423
443
  visibility,
424
444
  className,
425
- }: {
426
- readonly visibility: ApiResourceVisibility;
427
- readonly className?: string;
428
- }) {
445
+ onClick,
446
+ }: VisibilityBadgeProps) {
429
447
  const option = visibilityOption(visibility);
430
- return (
431
- <span className={cn(VISIBILITY_CHIP_CLASS, className)}>
448
+ const content = (
449
+ <>
432
450
  <VisibilityIcon tone={option.tone} className="size-2.5" />
433
451
  {option.label}
434
- </span>
452
+ </>
453
+ );
454
+
455
+ if (onClick) {
456
+ return (
457
+ <button
458
+ type="button"
459
+ onClick={onClick}
460
+ title="Manage access"
461
+ aria-label={`${option.label} visibility — manage access`}
462
+ className={cn(
463
+ VISIBILITY_CHIP_CLASS,
464
+ "transition-colors hover:bg-accent-hover hover:text-foreground",
465
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
466
+ className,
467
+ )}
468
+ >
469
+ {content}
470
+ </button>
471
+ );
472
+ }
473
+
474
+ return (
475
+ <span className={cn(VISIBILITY_CHIP_CLASS, className)}>{content}</span>
435
476
  );
436
477
  }