@stigmer/react 3.2.3 → 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 (402) hide show
  1. package/agent/steps/ReviewStep.d.ts.map +1 -1
  2. package/agent/steps/ReviewStep.js +2 -3
  3. package/agent/steps/ReviewStep.js.map +1 -1
  4. package/billing/BaselineEditor.d.ts +9 -0
  5. package/billing/BaselineEditor.d.ts.map +1 -0
  6. package/billing/BaselineEditor.js +253 -0
  7. package/billing/BaselineEditor.js.map +1 -0
  8. package/billing/ModelCatalogPanel.d.ts +28 -0
  9. package/billing/ModelCatalogPanel.d.ts.map +1 -0
  10. package/billing/ModelCatalogPanel.js +102 -0
  11. package/billing/ModelCatalogPanel.js.map +1 -0
  12. package/billing/ModelGovernanceDetail.d.ts +8 -0
  13. package/billing/ModelGovernanceDetail.d.ts.map +1 -0
  14. package/billing/ModelGovernanceDetail.js +64 -0
  15. package/billing/ModelGovernanceDetail.js.map +1 -0
  16. package/billing/OperatorAccessNotice.d.ts +12 -0
  17. package/billing/OperatorAccessNotice.d.ts.map +1 -0
  18. package/billing/OperatorAccessNotice.js +15 -0
  19. package/billing/OperatorAccessNotice.js.map +1 -0
  20. package/billing/PricingGovernanceConsole.d.ts +57 -0
  21. package/billing/PricingGovernanceConsole.d.ts.map +1 -0
  22. package/billing/PricingGovernanceConsole.js +164 -0
  23. package/billing/PricingGovernanceConsole.js.map +1 -0
  24. package/billing/PricingGovernancePanel.d.ts +26 -0
  25. package/billing/PricingGovernancePanel.d.ts.map +1 -0
  26. package/billing/PricingGovernancePanel.js +64 -0
  27. package/billing/PricingGovernancePanel.js.map +1 -0
  28. package/billing/RetireConfirm.d.ts +9 -0
  29. package/billing/RetireConfirm.d.ts.map +1 -0
  30. package/billing/RetireConfirm.js +19 -0
  31. package/billing/RetireConfirm.js.map +1 -0
  32. package/billing/form-primitives.d.ts +18 -0
  33. package/billing/form-primitives.d.ts.map +1 -0
  34. package/billing/form-primitives.js +19 -0
  35. package/billing/form-primitives.js.map +1 -0
  36. package/billing/governance-primitives.d.ts +33 -0
  37. package/billing/governance-primitives.d.ts.map +1 -0
  38. package/billing/governance-primitives.js +43 -0
  39. package/billing/governance-primitives.js.map +1 -0
  40. package/billing/index.d.ts +18 -0
  41. package/billing/index.d.ts.map +1 -1
  42. package/billing/index.js +9 -0
  43. package/billing/index.js.map +1 -1
  44. package/billing/pricing-format.d.ts +12 -0
  45. package/billing/pricing-format.d.ts.map +1 -0
  46. package/billing/pricing-format.js +50 -0
  47. package/billing/pricing-format.js.map +1 -0
  48. package/billing/useDecidePricingOverride.d.ts +46 -0
  49. package/billing/useDecidePricingOverride.d.ts.map +1 -0
  50. package/billing/useDecidePricingOverride.js +44 -0
  51. package/billing/useDecidePricingOverride.js.map +1 -0
  52. package/billing/useModelGovernanceView.d.ts +103 -0
  53. package/billing/useModelGovernanceView.d.ts.map +1 -0
  54. package/billing/useModelGovernanceView.js +144 -0
  55. package/billing/useModelGovernanceView.js.map +1 -0
  56. package/billing/useModelPricingBaselines.d.ts +40 -0
  57. package/billing/useModelPricingBaselines.d.ts.map +1 -0
  58. package/billing/useModelPricingBaselines.js +32 -0
  59. package/billing/useModelPricingBaselines.js.map +1 -0
  60. package/billing/usePricingGovernance.d.ts +39 -0
  61. package/billing/usePricingGovernance.d.ts.map +1 -0
  62. package/billing/usePricingGovernance.js +31 -0
  63. package/billing/usePricingGovernance.js.map +1 -0
  64. package/billing/useRetireModelPricingBaseline.d.ts +31 -0
  65. package/billing/useRetireModelPricingBaseline.d.ts.map +1 -0
  66. package/billing/useRetireModelPricingBaseline.js +36 -0
  67. package/billing/useRetireModelPricingBaseline.js.map +1 -0
  68. package/billing/useUpsertModelPricingBaseline.d.ts +38 -0
  69. package/billing/useUpsertModelPricingBaseline.d.ts.map +1 -0
  70. package/billing/useUpsertModelPricingBaseline.js +37 -0
  71. package/billing/useUpsertModelPricingBaseline.js.map +1 -0
  72. package/channel/AgentChannelsPanel.d.ts.map +1 -1
  73. package/channel/AgentChannelsPanel.js +11 -5
  74. package/channel/AgentChannelsPanel.js.map +1 -1
  75. package/composer/SessionComposer.d.ts +1 -1
  76. package/cursor-accounts/CursorAccountEditor.d.ts +28 -0
  77. package/cursor-accounts/CursorAccountEditor.d.ts.map +1 -0
  78. package/cursor-accounts/CursorAccountEditor.js +51 -0
  79. package/cursor-accounts/CursorAccountEditor.js.map +1 -0
  80. package/cursor-accounts/CursorAccountsAccessNotice.d.ts +11 -0
  81. package/cursor-accounts/CursorAccountsAccessNotice.d.ts.map +1 -0
  82. package/cursor-accounts/CursorAccountsAccessNotice.js +14 -0
  83. package/cursor-accounts/CursorAccountsAccessNotice.js.map +1 -0
  84. package/cursor-accounts/CursorAccountsConsole.d.ts +28 -0
  85. package/cursor-accounts/CursorAccountsConsole.d.ts.map +1 -0
  86. package/cursor-accounts/CursorAccountsConsole.js +275 -0
  87. package/cursor-accounts/CursorAccountsConsole.js.map +1 -0
  88. package/cursor-accounts/cursor-account-format.d.ts +10 -0
  89. package/cursor-accounts/cursor-account-format.d.ts.map +1 -0
  90. package/cursor-accounts/cursor-account-format.js +26 -0
  91. package/cursor-accounts/cursor-account-format.js.map +1 -0
  92. package/cursor-accounts/index.d.ts +18 -0
  93. package/cursor-accounts/index.d.ts.map +1 -0
  94. package/cursor-accounts/index.js +13 -0
  95. package/cursor-accounts/index.js.map +1 -0
  96. package/cursor-accounts/useCursorAccountView.d.ts +30 -0
  97. package/cursor-accounts/useCursorAccountView.d.ts.map +1 -0
  98. package/cursor-accounts/useCursorAccountView.js +25 -0
  99. package/cursor-accounts/useCursorAccountView.js.map +1 -0
  100. package/cursor-accounts/useCursorAccounts.d.ts +33 -0
  101. package/cursor-accounts/useCursorAccounts.d.ts.map +1 -0
  102. package/cursor-accounts/useCursorAccounts.js +25 -0
  103. package/cursor-accounts/useCursorAccounts.js.map +1 -0
  104. package/cursor-accounts/useCursorMemberKeyActions.d.ts +49 -0
  105. package/cursor-accounts/useCursorMemberKeyActions.d.ts.map +1 -0
  106. package/cursor-accounts/useCursorMemberKeyActions.js +38 -0
  107. package/cursor-accounts/useCursorMemberKeyActions.js.map +1 -0
  108. package/cursor-accounts/useDeleteCursorAccount.d.ts +30 -0
  109. package/cursor-accounts/useDeleteCursorAccount.d.ts.map +1 -0
  110. package/cursor-accounts/useDeleteCursorAccount.js +32 -0
  111. package/cursor-accounts/useDeleteCursorAccount.js.map +1 -0
  112. package/cursor-accounts/useSyncCursorAccount.d.ts +23 -0
  113. package/cursor-accounts/useSyncCursorAccount.d.ts.map +1 -0
  114. package/cursor-accounts/useSyncCursorAccount.js +31 -0
  115. package/cursor-accounts/useSyncCursorAccount.js.map +1 -0
  116. package/cursor-accounts/useUpsertCursorAccount.d.ts +26 -0
  117. package/cursor-accounts/useUpsertCursorAccount.d.ts.map +1 -0
  118. package/cursor-accounts/useUpsertCursorAccount.js +34 -0
  119. package/cursor-accounts/useUpsertCursorAccount.js.map +1 -0
  120. package/datastore/CollectionRecordsBrowser.d.ts +34 -0
  121. package/datastore/CollectionRecordsBrowser.d.ts.map +1 -0
  122. package/datastore/CollectionRecordsBrowser.js +209 -0
  123. package/datastore/CollectionRecordsBrowser.js.map +1 -0
  124. package/datastore/CollectionSchemaView.d.ts +29 -0
  125. package/datastore/CollectionSchemaView.d.ts.map +1 -0
  126. package/datastore/CollectionSchemaView.js +93 -0
  127. package/datastore/CollectionSchemaView.js.map +1 -0
  128. package/datastore/DatastoreDetailView.d.ts +44 -0
  129. package/datastore/DatastoreDetailView.d.ts.map +1 -0
  130. package/datastore/DatastoreDetailView.js +76 -0
  131. package/datastore/DatastoreDetailView.js.map +1 -0
  132. package/datastore/DatastoreSyncReport.d.ts +19 -0
  133. package/datastore/DatastoreSyncReport.d.ts.map +1 -0
  134. package/datastore/DatastoreSyncReport.js +45 -0
  135. package/datastore/DatastoreSyncReport.js.map +1 -0
  136. package/datastore/DeleteDatastoreDialog.d.ts +35 -0
  137. package/datastore/DeleteDatastoreDialog.d.ts.map +1 -0
  138. package/datastore/DeleteDatastoreDialog.js +90 -0
  139. package/datastore/DeleteDatastoreDialog.js.map +1 -0
  140. package/datastore/FieldValueControl.d.ts +55 -0
  141. package/datastore/FieldValueControl.d.ts.map +1 -0
  142. package/datastore/FieldValueControl.js +138 -0
  143. package/datastore/FieldValueControl.js.map +1 -0
  144. package/datastore/RecordFilterBuilder.d.ts +30 -0
  145. package/datastore/RecordFilterBuilder.d.ts.map +1 -0
  146. package/datastore/RecordFilterBuilder.js +122 -0
  147. package/datastore/RecordFilterBuilder.js.map +1 -0
  148. package/datastore/RecordFormPanel.d.ts +45 -0
  149. package/datastore/RecordFormPanel.d.ts.map +1 -0
  150. package/datastore/RecordFormPanel.js +215 -0
  151. package/datastore/RecordFormPanel.js.map +1 -0
  152. package/datastore/index.d.ts +43 -0
  153. package/datastore/index.d.ts.map +1 -0
  154. package/datastore/index.js +22 -0
  155. package/datastore/index.js.map +1 -0
  156. package/datastore/recordFilter.d.ts +54 -0
  157. package/datastore/recordFilter.d.ts.map +1 -0
  158. package/datastore/recordFilter.js +93 -0
  159. package/datastore/recordFilter.js.map +1 -0
  160. package/datastore/recordValues.d.ts +85 -0
  161. package/datastore/recordValues.d.ts.map +1 -0
  162. package/datastore/recordValues.js +282 -0
  163. package/datastore/recordValues.js.map +1 -0
  164. package/datastore/useDatastore.d.ts +39 -0
  165. package/datastore/useDatastore.d.ts.map +1 -0
  166. package/datastore/useDatastore.js +44 -0
  167. package/datastore/useDatastore.js.map +1 -0
  168. package/datastore/useDatastoreCount.d.ts +48 -0
  169. package/datastore/useDatastoreCount.d.ts.map +1 -0
  170. package/datastore/useDatastoreCount.js +27 -0
  171. package/datastore/useDatastoreCount.js.map +1 -0
  172. package/datastore/useDatastoreDescription.d.ts +54 -0
  173. package/datastore/useDatastoreDescription.d.ts.map +1 -0
  174. package/datastore/useDatastoreDescription.js +50 -0
  175. package/datastore/useDatastoreDescription.js.map +1 -0
  176. package/datastore/useDatastoreList.d.ts +57 -0
  177. package/datastore/useDatastoreList.d.ts.map +1 -0
  178. package/datastore/useDatastoreList.js +29 -0
  179. package/datastore/useDatastoreList.js.map +1 -0
  180. package/datastore/useDatastoreSearch.d.ts +19 -0
  181. package/datastore/useDatastoreSearch.d.ts.map +1 -0
  182. package/datastore/useDatastoreSearch.js +22 -0
  183. package/datastore/useDatastoreSearch.js.map +1 -0
  184. package/datastore/useDeleteDatastore.d.ts +53 -0
  185. package/datastore/useDeleteDatastore.d.ts.map +1 -0
  186. package/datastore/useDeleteDatastore.js +40 -0
  187. package/datastore/useDeleteDatastore.js.map +1 -0
  188. package/datastore/useDeleteRecord.d.ts +34 -0
  189. package/datastore/useDeleteRecord.d.ts.map +1 -0
  190. package/datastore/useDeleteRecord.js +43 -0
  191. package/datastore/useDeleteRecord.js.map +1 -0
  192. package/datastore/useInsertRecord.d.ts +50 -0
  193. package/datastore/useInsertRecord.d.ts.map +1 -0
  194. package/datastore/useInsertRecord.js +55 -0
  195. package/datastore/useInsertRecord.js.map +1 -0
  196. package/datastore/useRecordCollection.d.ts +104 -0
  197. package/datastore/useRecordCollection.d.ts.map +1 -0
  198. package/datastore/useRecordCollection.js +136 -0
  199. package/datastore/useRecordCollection.js.map +1 -0
  200. package/datastore/useRecordList.d.ts +66 -0
  201. package/datastore/useRecordList.d.ts.map +1 -0
  202. package/datastore/useRecordList.js +58 -0
  203. package/datastore/useRecordList.js.map +1 -0
  204. package/datastore/useUpdateRecord.d.ts +52 -0
  205. package/datastore/useUpdateRecord.d.ts.map +1 -0
  206. package/datastore/useUpdateRecord.js +55 -0
  207. package/datastore/useUpdateRecord.js.map +1 -0
  208. package/environment/EnvironmentListPanel.d.ts.map +1 -1
  209. package/environment/EnvironmentListPanel.js +12 -7
  210. package/environment/EnvironmentListPanel.js.map +1 -1
  211. package/iam-policy/index.d.ts +1 -1
  212. package/iam-policy/index.d.ts.map +1 -1
  213. package/iam-policy/index.js.map +1 -1
  214. package/iam-policy/useCheckPermission.d.ts +32 -11
  215. package/iam-policy/useCheckPermission.d.ts.map +1 -1
  216. package/iam-policy/useCheckPermission.js +24 -19
  217. package/iam-policy/useCheckPermission.js.map +1 -1
  218. package/index.d.ts +12 -6
  219. package/index.d.ts.map +1 -1
  220. package/index.js +14 -3
  221. package/index.js.map +1 -1
  222. package/library/index.d.ts +0 -7
  223. package/library/index.d.ts.map +1 -1
  224. package/library/index.js +0 -4
  225. package/library/index.js.map +1 -1
  226. package/library/useApplyResource.d.ts +12 -12
  227. package/library/useApplyResource.d.ts.map +1 -1
  228. package/library/useApplyResource.js +16 -25
  229. package/library/useApplyResource.js.map +1 -1
  230. package/library/useExportResource.d.ts +13 -9
  231. package/library/useExportResource.d.ts.map +1 -1
  232. package/library/useExportResource.js +18 -36
  233. package/library/useExportResource.js.map +1 -1
  234. package/manifest/ApplyManifestDialog.d.ts +48 -0
  235. package/manifest/ApplyManifestDialog.d.ts.map +1 -0
  236. package/manifest/ApplyManifestDialog.js +135 -0
  237. package/manifest/ApplyManifestDialog.js.map +1 -0
  238. package/manifest/EditResourceYamlDialog.d.ts +51 -0
  239. package/manifest/EditResourceYamlDialog.d.ts.map +1 -0
  240. package/manifest/EditResourceYamlDialog.js +104 -0
  241. package/manifest/EditResourceYamlDialog.js.map +1 -0
  242. package/manifest/RedactedSecretsNotice.d.ts +14 -0
  243. package/manifest/RedactedSecretsNotice.d.ts.map +1 -0
  244. package/manifest/RedactedSecretsNotice.js +14 -0
  245. package/manifest/RedactedSecretsNotice.js.map +1 -0
  246. package/manifest/YamlEditor.d.ts +44 -0
  247. package/manifest/YamlEditor.d.ts.map +1 -0
  248. package/manifest/YamlEditor.js +216 -0
  249. package/manifest/YamlEditor.js.map +1 -0
  250. package/manifest/index.d.ts +13 -0
  251. package/manifest/index.d.ts.map +1 -0
  252. package/manifest/index.js +13 -0
  253. package/manifest/index.js.map +1 -0
  254. package/manifest/useApplyManifest.d.ts +82 -0
  255. package/manifest/useApplyManifest.d.ts.map +1 -0
  256. package/manifest/useApplyManifest.js +180 -0
  257. package/manifest/useApplyManifest.js.map +1 -0
  258. package/manifest/useEditResourceYaml.d.ts +106 -0
  259. package/manifest/useEditResourceYaml.d.ts.map +1 -0
  260. package/manifest/useEditResourceYaml.js +168 -0
  261. package/manifest/useEditResourceYaml.js.map +1 -0
  262. package/mcp-server/steps/ReviewStep.d.ts.map +1 -1
  263. package/mcp-server/steps/ReviewStep.js +2 -3
  264. package/mcp-server/steps/ReviewStep.js.map +1 -1
  265. package/package.json +4 -4
  266. package/resource-creation/templates/workflow-templates.js +4 -4
  267. package/session/useEditSessionPrep.js +3 -3
  268. package/session/useEditSessionPrep.js.map +1 -1
  269. package/settings/index.d.ts +2 -1
  270. package/settings/index.d.ts.map +1 -1
  271. package/settings/index.js +2 -1
  272. package/settings/index.js.map +1 -1
  273. package/settings/settings-nav.d.ts +22 -0
  274. package/settings/settings-nav.d.ts.map +1 -1
  275. package/settings/settings-nav.js +32 -1
  276. package/settings/settings-nav.js.map +1 -1
  277. package/settings/useSettingsNavGroups.d.ts +29 -0
  278. package/settings/useSettingsNavGroups.d.ts.map +1 -0
  279. package/settings/useSettingsNavGroups.js +61 -0
  280. package/settings/useSettingsNavGroups.js.map +1 -0
  281. package/src/agent/steps/ReviewStep.tsx +2 -3
  282. package/src/billing/BaselineEditor.tsx +619 -0
  283. package/src/billing/ModelCatalogPanel.tsx +283 -0
  284. package/src/billing/ModelGovernanceDetail.tsx +289 -0
  285. package/src/billing/OperatorAccessNotice.tsx +32 -0
  286. package/src/billing/PricingGovernanceConsole.tsx +465 -0
  287. package/src/billing/PricingGovernancePanel.tsx +166 -0
  288. package/src/billing/RetireConfirm.tsx +82 -0
  289. package/src/billing/__tests__/ModelCatalogPanel.test.tsx +253 -0
  290. package/src/billing/__tests__/PricingGovernanceConsole.test.tsx +410 -0
  291. package/src/billing/__tests__/useModelGovernanceView.test.tsx +308 -0
  292. package/src/billing/form-primitives.tsx +68 -0
  293. package/src/billing/governance-primitives.tsx +133 -0
  294. package/src/billing/index.ts +37 -0
  295. package/src/billing/pricing-format.ts +53 -0
  296. package/src/billing/useDecidePricingOverride.ts +78 -0
  297. package/src/billing/useModelGovernanceView.ts +290 -0
  298. package/src/billing/useModelPricingBaselines.ts +69 -0
  299. package/src/billing/usePricingGovernance.ts +57 -0
  300. package/src/billing/useRetireModelPricingBaseline.ts +65 -0
  301. package/src/billing/useUpsertModelPricingBaseline.ts +72 -0
  302. package/src/channel/AgentChannelsPanel.tsx +27 -1
  303. package/src/composer/SessionComposer.tsx +1 -1
  304. package/src/cursor-accounts/CursorAccountEditor.tsx +181 -0
  305. package/src/cursor-accounts/CursorAccountsAccessNotice.tsx +36 -0
  306. package/src/cursor-accounts/CursorAccountsConsole.tsx +810 -0
  307. package/src/cursor-accounts/__tests__/CursorAccountsConsole.test.tsx +384 -0
  308. package/src/cursor-accounts/cursor-account-format.ts +29 -0
  309. package/src/cursor-accounts/index.ts +29 -0
  310. package/src/cursor-accounts/useCursorAccountView.ts +49 -0
  311. package/src/cursor-accounts/useCursorAccounts.ts +49 -0
  312. package/src/cursor-accounts/useCursorMemberKeyActions.ts +106 -0
  313. package/src/cursor-accounts/useDeleteCursorAccount.ts +62 -0
  314. package/src/cursor-accounts/useSyncCursorAccount.ts +54 -0
  315. package/src/cursor-accounts/useUpsertCursorAccount.ts +57 -0
  316. package/src/datastore/CollectionRecordsBrowser.tsx +544 -0
  317. package/src/datastore/CollectionSchemaView.tsx +247 -0
  318. package/src/datastore/DatastoreDetailView.tsx +201 -0
  319. package/src/datastore/DatastoreSyncReport.tsx +105 -0
  320. package/src/datastore/DeleteDatastoreDialog.tsx +202 -0
  321. package/src/datastore/FieldValueControl.tsx +289 -0
  322. package/src/datastore/RecordFilterBuilder.tsx +411 -0
  323. package/src/datastore/RecordFormPanel.tsx +432 -0
  324. package/src/datastore/__tests__/CollectionRecordsBrowser.test.tsx +207 -0
  325. package/src/datastore/__tests__/DeleteDatastoreDialog.test.tsx +133 -0
  326. package/src/datastore/__tests__/FieldValueControl.test.tsx +160 -0
  327. package/src/datastore/__tests__/RecordFilterBuilder.test.tsx +141 -0
  328. package/src/datastore/__tests__/RecordFormPanel.test.tsx +227 -0
  329. package/src/datastore/__tests__/recordFilter.test.ts +156 -0
  330. package/src/datastore/__tests__/recordMutations.test.tsx +195 -0
  331. package/src/datastore/__tests__/recordValues.test.ts +359 -0
  332. package/src/datastore/__tests__/schemaAndSyncViews.test.tsx +142 -0
  333. package/src/datastore/__tests__/useDatastoreDescription.test.tsx +143 -0
  334. package/src/datastore/__tests__/useRecordCollection.test.tsx +250 -0
  335. package/src/datastore/__tests__/useRecordList.test.tsx +85 -0
  336. package/src/datastore/index.ts +111 -0
  337. package/src/datastore/recordFilter.ts +140 -0
  338. package/src/datastore/recordValues.ts +327 -0
  339. package/src/datastore/useDatastore.ts +67 -0
  340. package/src/datastore/useDatastoreCount.ts +67 -0
  341. package/src/datastore/useDatastoreDescription.ts +90 -0
  342. package/src/datastore/useDatastoreList.ts +79 -0
  343. package/src/datastore/useDatastoreSearch.ts +39 -0
  344. package/src/datastore/useDeleteDatastore.ts +87 -0
  345. package/src/datastore/useDeleteRecord.ts +77 -0
  346. package/src/datastore/useInsertRecord.ts +92 -0
  347. package/src/datastore/useRecordCollection.ts +256 -0
  348. package/src/datastore/useRecordList.ts +131 -0
  349. package/src/datastore/useUpdateRecord.ts +95 -0
  350. package/src/environment/EnvironmentListPanel.tsx +24 -0
  351. package/src/execution/__tests__/useArtifactInspection.test.tsx +12 -2
  352. package/src/iam-policy/__tests__/useCheckPermission.test.tsx +221 -0
  353. package/src/iam-policy/index.ts +1 -0
  354. package/src/iam-policy/useCheckPermission.ts +45 -19
  355. package/src/index.ts +163 -13
  356. package/src/library/index.ts +0 -20
  357. package/src/library/useApplyResource.ts +27 -34
  358. package/src/library/useExportResource.ts +21 -40
  359. package/src/manifest/ApplyManifestDialog.tsx +315 -0
  360. package/src/manifest/EditResourceYamlDialog.tsx +265 -0
  361. package/src/manifest/RedactedSecretsNotice.tsx +30 -0
  362. package/src/manifest/YamlEditor.tsx +272 -0
  363. package/src/manifest/__tests__/EditResourceYamlDialog.test.tsx +118 -0
  364. package/src/manifest/__tests__/useApplyManifest.test.tsx +237 -0
  365. package/src/manifest/__tests__/useEditResourceYaml.test.tsx +252 -0
  366. package/src/manifest/index.ts +33 -0
  367. package/src/manifest/useApplyManifest.ts +270 -0
  368. package/src/manifest/useEditResourceYaml.ts +273 -0
  369. package/src/mcp-server/steps/ReviewStep.tsx +2 -3
  370. package/src/resource-creation/templates/workflow-templates.ts +4 -4
  371. package/src/session/useEditSessionPrep.ts +3 -3
  372. package/src/settings/__tests__/useSettingsNavGroups.test.tsx +138 -0
  373. package/src/settings/index.ts +5 -1
  374. package/src/settings/settings-nav.ts +43 -0
  375. package/src/settings/useSettingsNavGroups.ts +81 -0
  376. package/src/workflow/WorkflowYamlEditor.tsx +6 -270
  377. package/styles.css +1 -1
  378. package/workflow/CanvasTransitionEdge.d.ts +1 -1
  379. package/workflow/WorkflowYamlEditor.d.ts +2 -42
  380. package/workflow/WorkflowYamlEditor.d.ts.map +1 -1
  381. package/workflow/WorkflowYamlEditor.js +5 -214
  382. package/workflow/WorkflowYamlEditor.js.map +1 -1
  383. package/library/ImportResourceDialog.d.ts +0 -43
  384. package/library/ImportResourceDialog.d.ts.map +0 -1
  385. package/library/ImportResourceDialog.js +0 -90
  386. package/library/ImportResourceDialog.js.map +0 -1
  387. package/library/parse-resource-yaml.d.ts +0 -63
  388. package/library/parse-resource-yaml.d.ts.map +0 -1
  389. package/library/parse-resource-yaml.js +0 -407
  390. package/library/parse-resource-yaml.js.map +0 -1
  391. package/library/serialize-resource-yaml.d.ts +0 -103
  392. package/library/serialize-resource-yaml.d.ts.map +0 -1
  393. package/library/serialize-resource-yaml.js +0 -565
  394. package/library/serialize-resource-yaml.js.map +0 -1
  395. package/library/useImportResource.d.ts +0 -84
  396. package/library/useImportResource.d.ts.map +0 -1
  397. package/library/useImportResource.js +0 -188
  398. package/library/useImportResource.js.map +0 -1
  399. package/src/library/ImportResourceDialog.tsx +0 -227
  400. package/src/library/parse-resource-yaml.ts +0 -630
  401. package/src/library/serialize-resource-yaml.ts +0 -756
  402. package/src/library/useImportResource.ts +0 -253
package/src/index.ts CHANGED
@@ -677,6 +677,88 @@ export type {
677
677
  AgentWizardData,
678
678
  } from "./agent/index.js";
679
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
+
680
762
  // Environment — data hooks, list hook, personal convenience hook, secret reveal, variable management, env var form, system env vars, and styled components
681
763
  export {
682
764
  useEnvironment,
@@ -770,6 +852,7 @@ export type {
770
852
  UseShareFlowReturn,
771
853
  ShareFlowResource,
772
854
  UseCheckPermissionReturn,
855
+ CheckPermissionOptions,
773
856
  PermissionCheckResource,
774
857
  RoleSelectorProps,
775
858
  PrincipalPickerProps,
@@ -832,9 +915,15 @@ export {
832
915
  useCreditLedger,
833
916
  useBillingUsageReport,
834
917
  useCustomerModelPricing,
918
+ usePricingGovernance,
919
+ useModelPricingBaselines,
920
+ useModelGovernanceView,
835
921
  useCreateCheckoutSession,
836
922
  useCreateBillingPortalSession,
837
923
  useSetAutoRechargeConfig,
924
+ useDecidePricingOverride,
925
+ useUpsertModelPricingBaseline,
926
+ useRetireModelPricingBaseline,
838
927
  BillingSection,
839
928
  CreditBalanceCard,
840
929
  PaymentMethodCard,
@@ -842,6 +931,9 @@ export {
842
931
  CreditPackGrid,
843
932
  CreditLedgerTable,
844
933
  LowBalanceBanner,
934
+ PricingGovernancePanel,
935
+ ModelCatalogPanel,
936
+ PricingGovernanceConsole,
845
937
  CREDIT_PACKS,
846
938
  formatPackPrice,
847
939
  formatCreditCount,
@@ -858,11 +950,23 @@ export type {
858
950
  UseCreditLedgerOptions,
859
951
  UseBillingUsageReportReturn,
860
952
  UseCustomerModelPricingReturn,
953
+ UsePricingGovernanceReturn,
954
+ UseModelPricingBaselinesOptions,
955
+ UseModelPricingBaselinesReturn,
956
+ GovernanceFlow,
957
+ ModelGovernanceRow,
958
+ UseModelGovernanceViewReturn,
861
959
  CreateCheckoutSessionInput,
862
960
  UseCreateCheckoutSessionReturn,
863
961
  UseCreateBillingPortalSessionReturn,
864
962
  SetAutoRechargeConfigInput,
865
963
  UseSetAutoRechargeConfigReturn,
964
+ DecidePricingOverrideInput,
965
+ UseDecidePricingOverrideReturn,
966
+ UpsertModelPricingBaselineInput,
967
+ UseUpsertModelPricingBaselineReturn,
968
+ RetireModelPricingBaselineInput,
969
+ UseRetireModelPricingBaselineReturn,
866
970
  BillingSectionProps,
867
971
  CreditBalanceCardProps,
868
972
  PaymentMethodCardProps,
@@ -870,11 +974,46 @@ export type {
870
974
  CreditPackGridProps,
871
975
  CreditLedgerTableProps,
872
976
  LowBalanceBannerProps,
977
+ PricingGovernancePanelProps,
978
+ ModelCatalogPanelProps,
979
+ PricingGovernanceConsoleProps,
980
+ PricingGovernanceTab,
873
981
  CreditPackInfo,
874
982
  } from "./billing/index.js";
875
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
+
876
1011
  // Settings — navigation structure + section components shared across app shells
877
- 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";
878
1017
  export type { SettingsNavItem, SettingsNavGroup } from "./settings/index.js";
879
1018
  export { ApiKeysSection } from "./settings/index.js";
880
1019
  export { MembersSection } from "./settings/index.js";
@@ -1138,15 +1277,8 @@ export {
1138
1277
  findStreamingPlan,
1139
1278
  PLAN_ARTIFACT_NAME,
1140
1279
  PLAN_ARTIFACT_SUFFIX,
1141
- parseResourceYaml,
1142
- serializeAgentYaml,
1143
- serializeMcpServerYaml,
1144
- serializeAgentInputYaml,
1145
- serializeMcpServerInputYaml,
1146
1280
  useApplyResource,
1147
1281
  useExportResource,
1148
- useImportResource,
1149
- ImportResourceDialog,
1150
1282
  VisibilitySelector,
1151
1283
  VisibilityBadge,
1152
1284
  blueprintVisibilityLevels,
@@ -1163,16 +1295,11 @@ export type {
1163
1295
  SessionPlan,
1164
1296
  StreamingPlan,
1165
1297
  UseDetectSkillPackageReturn,
1166
- ParsedResource,
1167
1298
  UseApplyResourceReturn,
1168
1299
  ApplyResourceResult,
1169
1300
  PushSkillParams,
1170
1301
  UseExportResourceOptions,
1171
1302
  UseExportResourceReturn,
1172
- ImportFormat,
1173
- ImportPreview,
1174
- UseImportResourceReturn,
1175
- ImportResourceDialogProps,
1176
1303
  VisibilitySelectorProps,
1177
1304
  VisibilityBadgeProps,
1178
1305
  VisibilityLevelOption,
@@ -1181,6 +1308,29 @@ export type {
1181
1308
  UseUpdateVisibilityReturn,
1182
1309
  } from "./library/index.js";
1183
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
+
1184
1334
  // Action menu — compound component for resource item actions
1185
1335
  export { ActionMenu } from "./action-menu/index.js";
1186
1336
  export type {
@@ -40,16 +40,6 @@ export type { StreamingPlan } from "./detect-streaming-plan.js";
40
40
  export { useDetectSkillPackage } from "./useDetectSkillPackage.js";
41
41
  export type { UseDetectSkillPackageReturn } from "./useDetectSkillPackage.js";
42
42
 
43
- export { parseResourceYaml } from "./parse-resource-yaml.js";
44
- export type { ParsedResource } from "./parse-resource-yaml.js";
45
-
46
- export {
47
- serializeAgentYaml,
48
- serializeMcpServerYaml,
49
- serializeAgentInputYaml,
50
- serializeMcpServerInputYaml,
51
- } from "./serialize-resource-yaml.js";
52
-
53
43
  export { serializeWorkflowYaml, parseWorkflowYaml } from "../workflow/serialize-workflow-yaml.js";
54
44
 
55
45
  export { useApplyResource } from "./useApplyResource.js";
@@ -65,16 +55,6 @@ export type {
65
55
  UseExportResourceReturn,
66
56
  } from "./useExportResource.js";
67
57
 
68
- export { useImportResource } from "./useImportResource.js";
69
- export type {
70
- ImportFormat,
71
- ImportPreview,
72
- UseImportResourceReturn,
73
- } from "./useImportResource.js";
74
-
75
- export { ImportResourceDialog } from "./ImportResourceDialog.js";
76
- export type { ImportResourceDialogProps } from "./ImportResourceDialog.js";
77
-
78
58
  export { VisibilitySelector, VisibilityBadge } from "./VisibilitySelector.js";
79
59
  export type {
80
60
  VisibilitySelectorProps,
@@ -3,9 +3,9 @@
3
3
  import { useCallback, useState } from "react";
4
4
  import { create } from "@bufbuild/protobuf";
5
5
  import { PushSkillFromExecutionArtifactRequestSchema } from "@stigmer/protos/ai/stigmer/agentic/skill/v1/io_pb";
6
+ import { parseManifest } from "@stigmer/sdk";
6
7
  import { useStigmer } from "../hooks.js";
7
8
  import { toError } from "../internal/toError.js";
8
- import { parseResourceYaml } from "./parse-resource-yaml.js";
9
9
 
10
10
  /**
11
11
  * Result returned after successfully applying a resource to an organization.
@@ -14,8 +14,8 @@ import { parseResourceYaml } from "./parse-resource-yaml.js";
14
14
  * link to the resource in the Library (e.g., `/library/agents`).
15
15
  */
16
16
  export interface ApplyResourceResult {
17
- /** The resource kind that was applied. */
18
- readonly kind: "Agent" | "McpServer" | "Skill";
17
+ /** The resource kind that was applied (`"Agent"`, `"McpServer"`, `"Skill"`, …). */
18
+ readonly kind: string;
19
19
  /** The resource name (from response metadata). */
20
20
  readonly name: string;
21
21
  /** The organization the resource was applied to. */
@@ -44,14 +44,14 @@ export interface PushSkillParams {
44
44
  /** Return value of {@link useApplyResource}. */
45
45
  export interface UseApplyResourceReturn {
46
46
  /**
47
- * Apply a Stigmer resource YAML (Agent or McpServer) to an organization.
47
+ * Apply a Stigmer resource YAML to an organization.
48
48
  *
49
- * Parses the YAML content, converts it to the appropriate SDK input type,
50
- * and calls `stigmer.agent.apply()` or `stigmer.mcpServer.apply()` based
51
- * on the detected `kind`.
49
+ * Parses the YAML against the kind's generated proto schema via the SDK
50
+ * manifest engine and applies it through `stigmer.manifest.apply()`
51
+ * any registry-supported kind, full fidelity.
52
52
  *
53
- * The `org` parameter overrides `metadata.org` in the YAML — matching
54
- * the "Apply to [my-org]" UX intent.
53
+ * The `org` parameter fills in `metadata.org` when the YAML omits it
54
+ * matching the "Apply to [my-org]" UX intent.
55
55
  *
56
56
  * @throws Re-throws the original error after setting `error` state, so
57
57
  * callers can optionally catch for flow control.
@@ -93,9 +93,9 @@ export interface UseApplyResourceReturn {
93
93
  *
94
94
  * Handles two parallel apply paths:
95
95
  *
96
- * 1. **YAML resources** (Agent, McpServer): `applyYamlResource(content, org)`
97
- * parses the YAML, converts snake_case fields to SDK input types, and
98
- * calls the appropriate `apply()` method.
96
+ * 1. **YAML resources**: `applyYamlResource(content, org)` parses the YAML
97
+ * against the generated proto schema (SDK manifest engine) and applies
98
+ * it through the kind's `apply` RPC.
99
99
  *
100
100
  * 2. **Skill packages** (directory artifacts): `pushSkillPackage(params)`
101
101
  * delegates to the server-side `pushFromExecutionArtifact` RPC.
@@ -129,7 +129,7 @@ export interface UseApplyResourceReturn {
129
129
  * };
130
130
  * ```
131
131
  *
132
- * @see {@link parseResourceYaml} for the pure YAML-to-input conversion
132
+ * @see {@link parseManifest} for the YAML-to-proto conversion
133
133
  * @see {@link detectStigmerResource} for YAML resource detection
134
134
  * @see {@link useDetectSkillPackage} for skill package detection
135
135
  */
@@ -146,28 +146,21 @@ export function useApplyResource(): UseApplyResourceReturn {
146
146
  setError(null);
147
147
 
148
148
  try {
149
- const parsed = parseResourceYaml(content, org);
150
-
151
- switch (parsed.kind) {
152
- case "Agent": {
153
- const agent = await stigmer.agent.apply(parsed.input);
154
- return {
155
- kind: "Agent",
156
- name: agent.metadata?.name ?? parsed.input.name,
157
- org: agent.metadata?.org ?? org,
158
- slug: agent.metadata?.slug ?? parsed.input.name,
159
- };
160
- }
161
- case "McpServer": {
162
- const mcpServer = await stigmer.mcpServer.apply(parsed.input);
163
- return {
164
- kind: "McpServer",
165
- name: mcpServer.metadata?.name ?? parsed.input.name,
166
- org: mcpServer.metadata?.org ?? org,
167
- slug: mcpServer.metadata?.slug ?? parsed.input.name,
168
- };
169
- }
149
+ const documents = parseManifest(content, { org });
150
+ if (documents.length > 1) {
151
+ throw new Error(
152
+ "This artifact contains multiple resource documents. " +
153
+ "Use Apply YAML in the Library to apply multi-document manifests.",
154
+ );
170
155
  }
156
+
157
+ const applied = await stigmer.manifest.apply(documents[0]);
158
+ return {
159
+ kind: applied.yamlKind,
160
+ name: applied.name,
161
+ org: applied.org,
162
+ slug: applied.slug,
163
+ };
171
164
  } catch (err) {
172
165
  setError(toError(err));
173
166
  throw err;
@@ -3,10 +3,11 @@
3
3
  import { useCallback, useMemo } from "react";
4
4
  import { parse as parseYaml } from "yaml";
5
5
  import type { Agent } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/api_pb";
6
+ import type { Datastore } from "@stigmer/protos/ai/stigmer/agentic/datastore/v1/api_pb";
6
7
  import type { McpServer } from "@stigmer/protos/ai/stigmer/agentic/mcpserver/v1/api_pb";
7
8
  import type { Workflow } from "@stigmer/protos/ai/stigmer/agentic/workflow/v1/api_pb";
9
+ import { serializeManifest } from "@stigmer/sdk";
8
10
  import { toast } from "../feedback/toast.js";
9
- import { serializeAgentYaml, serializeMcpServerYaml } from "./serialize-resource-yaml.js";
10
11
  import { serializeWorkflowYaml } from "../workflow/serialize-workflow-yaml.js";
11
12
 
12
13
  // ---------------------------------------------------------------------------
@@ -16,9 +17,9 @@ import { serializeWorkflowYaml } from "../workflow/serialize-workflow-yaml.js";
16
17
  /** Options for {@link useExportResource}. */
17
18
  export interface UseExportResourceOptions {
18
19
  /** The resource kind — determines which serializer is used. */
19
- readonly kind: "Agent" | "McpServer" | "Workflow";
20
+ readonly kind: "Agent" | "McpServer" | "Workflow" | "Datastore";
20
21
  /** The proto resource to export, or `null` when not yet loaded. */
21
- readonly resource: Agent | McpServer | Workflow | null;
22
+ readonly resource: Agent | McpServer | Workflow | Datastore | null;
22
23
  }
23
24
 
24
25
  /** Return value of {@link useExportResource}. */
@@ -42,16 +43,19 @@ export interface UseExportResourceReturn {
42
43
  // ---------------------------------------------------------------------------
43
44
 
44
45
  /**
45
- * Headless export hook for Stigmer resources (Agent, McpServer).
46
+ * Headless export hook for Stigmer resources (Agent, McpServer,
47
+ * Workflow, Datastore).
46
48
  *
47
49
  * Serializes the resource into YAML and JSON formats and provides
48
50
  * stable callbacks for copying to clipboard or triggering a file
49
51
  * download. All operations are client-side — no additional API calls.
50
52
  *
51
- * The serialized output uses the canonical Stigmer resource format
52
- * (`apiVersion`, `kind`, `metadata`, `spec`) with snake_case field
53
- * names, identical to what the CLI produces and what `parseResourceYaml`
54
- * accepts ensuring full round-trip compatibility.
53
+ * Non-workflow kinds serialize through the SDK manifest engine
54
+ * ({@link serializeManifest}) the canonical Stigmer resource format
55
+ * (`apiVersion`, `kind`, `metadata`, `spec`, snake_case fields) that
56
+ * round-trips through `parseManifest` and `stigmer apply -f`. Workflows
57
+ * use their own canonical serializer, shared with the workflow Editor
58
+ * tab, so one workflow has exactly one YAML shape across the product.
55
59
  *
56
60
  * @param options - Resource kind and the proto resource object.
57
61
  * @returns Stable callbacks and memoized serialized strings.
@@ -68,8 +72,8 @@ export interface UseExportResourceReturn {
68
72
  * <ActionMenu.Item onSelect={downloadYaml}>Download YAML</ActionMenu.Item>
69
73
  * ```
70
74
  *
71
- * @see {@link serializeAgentYaml} for the underlying Agent serializer
72
- * @see {@link serializeMcpServerYaml} for the underlying McpServer serializer
75
+ * @see {@link serializeManifest} for the underlying Agent/McpServer serializer
76
+ * @see {@link serializeWorkflowYaml} for the workflow-canonical serializer
73
77
  */
74
78
  export function useExportResource({
75
79
  kind,
@@ -77,15 +81,17 @@ export function useExportResource({
77
81
  }: UseExportResourceOptions): UseExportResourceReturn {
78
82
  const yaml = useMemo<string | null>(() => {
79
83
  if (!resource) return null;
80
- if (kind === "Agent") return serializeAgentYaml(resource as Agent);
81
84
  if (kind === "Workflow") return serializeWorkflowYaml(resource as Workflow);
82
- return serializeMcpServerYaml(resource as McpServer);
85
+ return serializeManifest(resource);
83
86
  }, [kind, resource]);
84
87
 
85
88
  const json = useMemo<string | null>(() => {
86
- if (!resource) return null;
87
- return serializeResourceJson(resource, kind);
88
- }, [kind, resource]);
89
+ if (!yaml) return null;
90
+ // Parse the YAML output to re-stringify as JSON — this guarantees the
91
+ // JSON structure is identical to the YAML structure (snake_case
92
+ // fields, no status).
93
+ return JSON.stringify(parseYaml(yaml), null, 2);
94
+ }, [yaml]);
89
95
 
90
96
  const slug = useMemo<string>(() => {
91
97
  if (!resource) return "resource";
@@ -120,31 +126,6 @@ export function useExportResource({
120
126
  );
121
127
  }
122
128
 
123
- // ---------------------------------------------------------------------------
124
- // JSON serialization
125
- // ---------------------------------------------------------------------------
126
-
127
- /**
128
- * Produces a JSON representation of the resource using the same canonical
129
- * structure as the YAML export (apiVersion, kind, metadata, spec).
130
- *
131
- * Internally parses the YAML output to get a clean plain object, then
132
- * re-stringifies as JSON. This guarantees the JSON structure is identical
133
- * to the YAML structure (snake_case fields, no status).
134
- */
135
- function serializeResourceJson(
136
- resource: Agent | McpServer | Workflow,
137
- kind: "Agent" | "McpServer" | "Workflow",
138
- ): string {
139
- let yamlStr: string;
140
- if (kind === "Agent") yamlStr = serializeAgentYaml(resource as Agent);
141
- else if (kind === "Workflow") yamlStr = serializeWorkflowYaml(resource as Workflow);
142
- else yamlStr = serializeMcpServerYaml(resource as McpServer);
143
-
144
- const doc = parseYaml(yamlStr);
145
- return JSON.stringify(doc, null, 2);
146
- }
147
-
148
129
  // ---------------------------------------------------------------------------
149
130
  // Clipboard
150
131
  // ---------------------------------------------------------------------------