@stigmer/react 3.2.3 → 3.4.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 (460) 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/index.d.ts.map +1 -1
  5. package/billing/index.js +4 -0
  6. package/billing/index.js.map +1 -1
  7. package/channel/AgentChannelsPanel.d.ts.map +1 -1
  8. package/channel/AgentChannelsPanel.js +11 -5
  9. package/channel/AgentChannelsPanel.js.map +1 -1
  10. package/composer/SessionComposer.d.ts +1 -1
  11. package/cursor-accounts/CursorAccountEditor.d.ts +34 -0
  12. package/cursor-accounts/CursorAccountEditor.d.ts.map +1 -0
  13. package/cursor-accounts/CursorAccountEditor.js +67 -0
  14. package/cursor-accounts/CursorAccountEditor.js.map +1 -0
  15. package/cursor-accounts/CursorAccountsAccessNotice.d.ts +11 -0
  16. package/cursor-accounts/CursorAccountsAccessNotice.d.ts.map +1 -0
  17. package/cursor-accounts/CursorAccountsAccessNotice.js +14 -0
  18. package/cursor-accounts/CursorAccountsAccessNotice.js.map +1 -0
  19. package/cursor-accounts/CursorAccountsConsole.d.ts +32 -0
  20. package/cursor-accounts/CursorAccountsConsole.d.ts.map +1 -0
  21. package/cursor-accounts/CursorAccountsConsole.js +169 -0
  22. package/cursor-accounts/CursorAccountsConsole.js.map +1 -0
  23. package/cursor-accounts/MemberCoverageTable.d.ts +29 -0
  24. package/cursor-accounts/MemberCoverageTable.d.ts.map +1 -0
  25. package/cursor-accounts/MemberCoverageTable.js +150 -0
  26. package/cursor-accounts/MemberCoverageTable.js.map +1 -0
  27. package/cursor-accounts/MemberKeysPanel.d.ts +25 -0
  28. package/cursor-accounts/MemberKeysPanel.d.ts.map +1 -0
  29. package/cursor-accounts/MemberKeysPanel.js +115 -0
  30. package/cursor-accounts/MemberKeysPanel.js.map +1 -0
  31. package/cursor-accounts/badges.d.ts +9 -0
  32. package/cursor-accounts/badges.d.ts.map +1 -0
  33. package/cursor-accounts/badges.js +10 -0
  34. package/cursor-accounts/badges.js.map +1 -0
  35. package/cursor-accounts/cursor-account-coverage.d.ts +41 -0
  36. package/cursor-accounts/cursor-account-coverage.d.ts.map +1 -0
  37. package/cursor-accounts/cursor-account-coverage.js +26 -0
  38. package/cursor-accounts/cursor-account-coverage.js.map +1 -0
  39. package/cursor-accounts/cursor-account-format.d.ts +23 -0
  40. package/cursor-accounts/cursor-account-format.d.ts.map +1 -0
  41. package/cursor-accounts/cursor-account-format.js +41 -0
  42. package/cursor-accounts/cursor-account-format.js.map +1 -0
  43. package/cursor-accounts/index.d.ts +18 -0
  44. package/cursor-accounts/index.d.ts.map +1 -0
  45. package/cursor-accounts/index.js +13 -0
  46. package/cursor-accounts/index.js.map +1 -0
  47. package/cursor-accounts/useCursorAccountView.d.ts +30 -0
  48. package/cursor-accounts/useCursorAccountView.d.ts.map +1 -0
  49. package/cursor-accounts/useCursorAccountView.js +25 -0
  50. package/cursor-accounts/useCursorAccountView.js.map +1 -0
  51. package/cursor-accounts/useCursorAccounts.d.ts +33 -0
  52. package/cursor-accounts/useCursorAccounts.d.ts.map +1 -0
  53. package/cursor-accounts/useCursorAccounts.js +25 -0
  54. package/cursor-accounts/useCursorAccounts.js.map +1 -0
  55. package/cursor-accounts/useCursorMemberKeyActions.d.ts +49 -0
  56. package/cursor-accounts/useCursorMemberKeyActions.d.ts.map +1 -0
  57. package/cursor-accounts/useCursorMemberKeyActions.js +38 -0
  58. package/cursor-accounts/useCursorMemberKeyActions.js.map +1 -0
  59. package/cursor-accounts/useDeleteCursorAccount.d.ts +30 -0
  60. package/cursor-accounts/useDeleteCursorAccount.d.ts.map +1 -0
  61. package/cursor-accounts/useDeleteCursorAccount.js +32 -0
  62. package/cursor-accounts/useDeleteCursorAccount.js.map +1 -0
  63. package/cursor-accounts/useSyncCursorAccount.d.ts +23 -0
  64. package/cursor-accounts/useSyncCursorAccount.d.ts.map +1 -0
  65. package/cursor-accounts/useSyncCursorAccount.js +31 -0
  66. package/cursor-accounts/useSyncCursorAccount.js.map +1 -0
  67. package/cursor-accounts/useUpsertCursorAccount.d.ts +26 -0
  68. package/cursor-accounts/useUpsertCursorAccount.d.ts.map +1 -0
  69. package/cursor-accounts/useUpsertCursorAccount.js +34 -0
  70. package/cursor-accounts/useUpsertCursorAccount.js.map +1 -0
  71. package/datastore/CollectionRecordsBrowser.d.ts +34 -0
  72. package/datastore/CollectionRecordsBrowser.d.ts.map +1 -0
  73. package/datastore/CollectionRecordsBrowser.js +223 -0
  74. package/datastore/CollectionRecordsBrowser.js.map +1 -0
  75. package/datastore/CollectionSchemaView.d.ts +29 -0
  76. package/datastore/CollectionSchemaView.d.ts.map +1 -0
  77. package/datastore/CollectionSchemaView.js +93 -0
  78. package/datastore/CollectionSchemaView.js.map +1 -0
  79. package/datastore/DatastoreDetailView.d.ts +44 -0
  80. package/datastore/DatastoreDetailView.d.ts.map +1 -0
  81. package/datastore/DatastoreDetailView.js +76 -0
  82. package/datastore/DatastoreDetailView.js.map +1 -0
  83. package/datastore/DatastoreSyncReport.d.ts +19 -0
  84. package/datastore/DatastoreSyncReport.d.ts.map +1 -0
  85. package/datastore/DatastoreSyncReport.js +45 -0
  86. package/datastore/DatastoreSyncReport.js.map +1 -0
  87. package/datastore/DeleteDatastoreDialog.d.ts +35 -0
  88. package/datastore/DeleteDatastoreDialog.d.ts.map +1 -0
  89. package/datastore/DeleteDatastoreDialog.js +90 -0
  90. package/datastore/DeleteDatastoreDialog.js.map +1 -0
  91. package/datastore/FieldValueControl.d.ts +55 -0
  92. package/datastore/FieldValueControl.d.ts.map +1 -0
  93. package/datastore/FieldValueControl.js +138 -0
  94. package/datastore/FieldValueControl.js.map +1 -0
  95. package/datastore/RecordFilterBuilder.d.ts +37 -0
  96. package/datastore/RecordFilterBuilder.d.ts.map +1 -0
  97. package/datastore/RecordFilterBuilder.js +122 -0
  98. package/datastore/RecordFilterBuilder.js.map +1 -0
  99. package/datastore/RecordFormPanel.d.ts +45 -0
  100. package/datastore/RecordFormPanel.d.ts.map +1 -0
  101. package/datastore/RecordFormPanel.js +215 -0
  102. package/datastore/RecordFormPanel.js.map +1 -0
  103. package/datastore/index.d.ts +43 -0
  104. package/datastore/index.d.ts.map +1 -0
  105. package/datastore/index.js +22 -0
  106. package/datastore/index.js.map +1 -0
  107. package/datastore/recordFilter.d.ts +62 -0
  108. package/datastore/recordFilter.d.ts.map +1 -0
  109. package/datastore/recordFilter.js +104 -0
  110. package/datastore/recordFilter.js.map +1 -0
  111. package/datastore/recordValues.d.ts +85 -0
  112. package/datastore/recordValues.d.ts.map +1 -0
  113. package/datastore/recordValues.js +282 -0
  114. package/datastore/recordValues.js.map +1 -0
  115. package/datastore/useDatastore.d.ts +39 -0
  116. package/datastore/useDatastore.d.ts.map +1 -0
  117. package/datastore/useDatastore.js +44 -0
  118. package/datastore/useDatastore.js.map +1 -0
  119. package/datastore/useDatastoreCount.d.ts +48 -0
  120. package/datastore/useDatastoreCount.d.ts.map +1 -0
  121. package/datastore/useDatastoreCount.js +27 -0
  122. package/datastore/useDatastoreCount.js.map +1 -0
  123. package/datastore/useDatastoreDescription.d.ts +54 -0
  124. package/datastore/useDatastoreDescription.d.ts.map +1 -0
  125. package/datastore/useDatastoreDescription.js +50 -0
  126. package/datastore/useDatastoreDescription.js.map +1 -0
  127. package/datastore/useDatastoreList.d.ts +57 -0
  128. package/datastore/useDatastoreList.d.ts.map +1 -0
  129. package/datastore/useDatastoreList.js +29 -0
  130. package/datastore/useDatastoreList.js.map +1 -0
  131. package/datastore/useDatastoreSearch.d.ts +19 -0
  132. package/datastore/useDatastoreSearch.d.ts.map +1 -0
  133. package/datastore/useDatastoreSearch.js +22 -0
  134. package/datastore/useDatastoreSearch.js.map +1 -0
  135. package/datastore/useDeleteDatastore.d.ts +53 -0
  136. package/datastore/useDeleteDatastore.d.ts.map +1 -0
  137. package/datastore/useDeleteDatastore.js +40 -0
  138. package/datastore/useDeleteDatastore.js.map +1 -0
  139. package/datastore/useDeleteRecord.d.ts +34 -0
  140. package/datastore/useDeleteRecord.d.ts.map +1 -0
  141. package/datastore/useDeleteRecord.js +43 -0
  142. package/datastore/useDeleteRecord.js.map +1 -0
  143. package/datastore/useInsertRecord.d.ts +50 -0
  144. package/datastore/useInsertRecord.d.ts.map +1 -0
  145. package/datastore/useInsertRecord.js +55 -0
  146. package/datastore/useInsertRecord.js.map +1 -0
  147. package/datastore/useRecordCollection.d.ts +104 -0
  148. package/datastore/useRecordCollection.d.ts.map +1 -0
  149. package/datastore/useRecordCollection.js +136 -0
  150. package/datastore/useRecordCollection.js.map +1 -0
  151. package/datastore/useRecordList.d.ts +66 -0
  152. package/datastore/useRecordList.d.ts.map +1 -0
  153. package/datastore/useRecordList.js +58 -0
  154. package/datastore/useRecordList.js.map +1 -0
  155. package/datastore/useUpdateRecord.d.ts +52 -0
  156. package/datastore/useUpdateRecord.d.ts.map +1 -0
  157. package/datastore/useUpdateRecord.js +55 -0
  158. package/datastore/useUpdateRecord.js.map +1 -0
  159. package/environment/EnvironmentListPanel.d.ts.map +1 -1
  160. package/environment/EnvironmentListPanel.js +12 -7
  161. package/environment/EnvironmentListPanel.js.map +1 -1
  162. package/execution/ExecutionProgress.d.ts.map +1 -1
  163. package/execution/ExecutionProgress.js +13 -4
  164. package/execution/ExecutionProgress.js.map +1 -1
  165. package/execution/MessageThread.d.ts.map +1 -1
  166. package/execution/MessageThread.js +10 -2
  167. package/execution/MessageThread.js.map +1 -1
  168. package/execution/useCreateAgentExecution.d.ts +31 -1
  169. package/execution/useCreateAgentExecution.d.ts.map +1 -1
  170. package/execution/useCreateAgentExecution.js +2 -0
  171. package/execution/useCreateAgentExecution.js.map +1 -1
  172. package/iam-policy/index.d.ts +1 -1
  173. package/iam-policy/index.d.ts.map +1 -1
  174. package/iam-policy/index.js.map +1 -1
  175. package/iam-policy/useCheckPermission.d.ts +32 -11
  176. package/iam-policy/useCheckPermission.d.ts.map +1 -1
  177. package/iam-policy/useCheckPermission.js +24 -19
  178. package/iam-policy/useCheckPermission.js.map +1 -1
  179. package/index.d.ts +12 -4
  180. package/index.d.ts.map +1 -1
  181. package/index.js +18 -3
  182. package/index.js.map +1 -1
  183. package/internal/form-primitives.d.ts +10 -0
  184. package/internal/form-primitives.d.ts.map +1 -0
  185. package/internal/form-primitives.js +15 -0
  186. package/internal/form-primitives.js.map +1 -0
  187. package/library/index.d.ts +0 -7
  188. package/library/index.d.ts.map +1 -1
  189. package/library/index.js +0 -4
  190. package/library/index.js.map +1 -1
  191. package/library/useApplyResource.d.ts +12 -12
  192. package/library/useApplyResource.d.ts.map +1 -1
  193. package/library/useApplyResource.js +16 -25
  194. package/library/useApplyResource.js.map +1 -1
  195. package/library/useExportResource.d.ts +13 -9
  196. package/library/useExportResource.d.ts.map +1 -1
  197. package/library/useExportResource.js +18 -36
  198. package/library/useExportResource.js.map +1 -1
  199. package/manifest/ApplyManifestDialog.d.ts +48 -0
  200. package/manifest/ApplyManifestDialog.d.ts.map +1 -0
  201. package/manifest/ApplyManifestDialog.js +135 -0
  202. package/manifest/ApplyManifestDialog.js.map +1 -0
  203. package/manifest/EditResourceYamlDialog.d.ts +51 -0
  204. package/manifest/EditResourceYamlDialog.d.ts.map +1 -0
  205. package/manifest/EditResourceYamlDialog.js +104 -0
  206. package/manifest/EditResourceYamlDialog.js.map +1 -0
  207. package/manifest/RedactedSecretsNotice.d.ts +14 -0
  208. package/manifest/RedactedSecretsNotice.d.ts.map +1 -0
  209. package/manifest/RedactedSecretsNotice.js +14 -0
  210. package/manifest/RedactedSecretsNotice.js.map +1 -0
  211. package/manifest/YamlEditor.d.ts +44 -0
  212. package/manifest/YamlEditor.d.ts.map +1 -0
  213. package/manifest/YamlEditor.js +216 -0
  214. package/manifest/YamlEditor.js.map +1 -0
  215. package/manifest/index.d.ts +13 -0
  216. package/manifest/index.d.ts.map +1 -0
  217. package/manifest/index.js +13 -0
  218. package/manifest/index.js.map +1 -0
  219. package/manifest/useApplyManifest.d.ts +82 -0
  220. package/manifest/useApplyManifest.d.ts.map +1 -0
  221. package/manifest/useApplyManifest.js +180 -0
  222. package/manifest/useApplyManifest.js.map +1 -0
  223. package/manifest/useEditResourceYaml.d.ts +106 -0
  224. package/manifest/useEditResourceYaml.d.ts.map +1 -0
  225. package/manifest/useEditResourceYaml.js +168 -0
  226. package/manifest/useEditResourceYaml.js.map +1 -0
  227. package/mcp-server/steps/ReviewStep.d.ts.map +1 -1
  228. package/mcp-server/steps/ReviewStep.js +2 -3
  229. package/mcp-server/steps/ReviewStep.js.map +1 -1
  230. package/package.json +4 -4
  231. package/pricing-governance/BaselineEditor.d.ts +9 -0
  232. package/pricing-governance/BaselineEditor.d.ts.map +1 -0
  233. package/pricing-governance/BaselineEditor.js +270 -0
  234. package/pricing-governance/BaselineEditor.js.map +1 -0
  235. package/pricing-governance/ModelCatalogPanel.d.ts +28 -0
  236. package/pricing-governance/ModelCatalogPanel.d.ts.map +1 -0
  237. package/pricing-governance/ModelCatalogPanel.js +102 -0
  238. package/pricing-governance/ModelCatalogPanel.js.map +1 -0
  239. package/pricing-governance/ModelGovernanceDetail.d.ts +8 -0
  240. package/pricing-governance/ModelGovernanceDetail.d.ts.map +1 -0
  241. package/pricing-governance/ModelGovernanceDetail.js +64 -0
  242. package/pricing-governance/ModelGovernanceDetail.js.map +1 -0
  243. package/pricing-governance/OperatorAccessNotice.d.ts +12 -0
  244. package/pricing-governance/OperatorAccessNotice.d.ts.map +1 -0
  245. package/pricing-governance/OperatorAccessNotice.js +15 -0
  246. package/pricing-governance/OperatorAccessNotice.js.map +1 -0
  247. package/pricing-governance/PricingGovernanceConsole.d.ts +57 -0
  248. package/pricing-governance/PricingGovernanceConsole.d.ts.map +1 -0
  249. package/pricing-governance/PricingGovernanceConsole.js +164 -0
  250. package/pricing-governance/PricingGovernanceConsole.js.map +1 -0
  251. package/pricing-governance/PricingGovernancePanel.d.ts +26 -0
  252. package/pricing-governance/PricingGovernancePanel.d.ts.map +1 -0
  253. package/pricing-governance/PricingGovernancePanel.js +64 -0
  254. package/pricing-governance/PricingGovernancePanel.js.map +1 -0
  255. package/pricing-governance/RetireConfirm.d.ts +9 -0
  256. package/pricing-governance/RetireConfirm.d.ts.map +1 -0
  257. package/pricing-governance/RetireConfirm.js +19 -0
  258. package/pricing-governance/RetireConfirm.js.map +1 -0
  259. package/pricing-governance/governance-primitives.d.ts +33 -0
  260. package/pricing-governance/governance-primitives.d.ts.map +1 -0
  261. package/pricing-governance/governance-primitives.js +43 -0
  262. package/pricing-governance/governance-primitives.js.map +1 -0
  263. package/pricing-governance/index.d.ts +19 -0
  264. package/pricing-governance/index.d.ts.map +1 -0
  265. package/pricing-governance/index.js +20 -0
  266. package/pricing-governance/index.js.map +1 -0
  267. package/pricing-governance/pricing-format.d.ts +12 -0
  268. package/pricing-governance/pricing-format.d.ts.map +1 -0
  269. package/pricing-governance/pricing-format.js +50 -0
  270. package/pricing-governance/pricing-format.js.map +1 -0
  271. package/pricing-governance/useDecidePricingOverride.d.ts +46 -0
  272. package/pricing-governance/useDecidePricingOverride.d.ts.map +1 -0
  273. package/pricing-governance/useDecidePricingOverride.js +44 -0
  274. package/pricing-governance/useDecidePricingOverride.js.map +1 -0
  275. package/pricing-governance/useModelGovernanceView.d.ts +103 -0
  276. package/pricing-governance/useModelGovernanceView.d.ts.map +1 -0
  277. package/pricing-governance/useModelGovernanceView.js +144 -0
  278. package/pricing-governance/useModelGovernanceView.js.map +1 -0
  279. package/pricing-governance/useModelPricingBaselines.d.ts +40 -0
  280. package/pricing-governance/useModelPricingBaselines.d.ts.map +1 -0
  281. package/pricing-governance/useModelPricingBaselines.js +32 -0
  282. package/pricing-governance/useModelPricingBaselines.js.map +1 -0
  283. package/pricing-governance/usePricingGovernance.d.ts +39 -0
  284. package/pricing-governance/usePricingGovernance.d.ts.map +1 -0
  285. package/pricing-governance/usePricingGovernance.js +31 -0
  286. package/pricing-governance/usePricingGovernance.js.map +1 -0
  287. package/pricing-governance/useRetireModelPricingBaseline.d.ts +31 -0
  288. package/pricing-governance/useRetireModelPricingBaseline.d.ts.map +1 -0
  289. package/pricing-governance/useRetireModelPricingBaseline.js +36 -0
  290. package/pricing-governance/useRetireModelPricingBaseline.js.map +1 -0
  291. package/pricing-governance/useUpsertModelPricingBaseline.d.ts +38 -0
  292. package/pricing-governance/useUpsertModelPricingBaseline.d.ts.map +1 -0
  293. package/pricing-governance/useUpsertModelPricingBaseline.js +37 -0
  294. package/pricing-governance/useUpsertModelPricingBaseline.js.map +1 -0
  295. package/resource-creation/templates/workflow-templates.js +4 -4
  296. package/session/useCreateSession.d.ts +28 -0
  297. package/session/useCreateSession.d.ts.map +1 -1
  298. package/session/useCreateSession.js +2 -1
  299. package/session/useCreateSession.js.map +1 -1
  300. package/session/useEditSessionPrep.js +3 -3
  301. package/session/useEditSessionPrep.js.map +1 -1
  302. package/session/useNewSessionFlow.d.ts +30 -0
  303. package/session/useNewSessionFlow.d.ts.map +1 -1
  304. package/session/useNewSessionFlow.js +7 -1
  305. package/session/useNewSessionFlow.js.map +1 -1
  306. package/session/useUpdateSession.d.ts +29 -10
  307. package/session/useUpdateSession.d.ts.map +1 -1
  308. package/session/useUpdateSession.js +29 -10
  309. package/session/useUpdateSession.js.map +1 -1
  310. package/settings/index.d.ts +2 -1
  311. package/settings/index.d.ts.map +1 -1
  312. package/settings/index.js +2 -1
  313. package/settings/index.js.map +1 -1
  314. package/settings/settings-nav.d.ts +22 -0
  315. package/settings/settings-nav.d.ts.map +1 -1
  316. package/settings/settings-nav.js +32 -1
  317. package/settings/settings-nav.js.map +1 -1
  318. package/settings/useSettingsNavGroups.d.ts +29 -0
  319. package/settings/useSettingsNavGroups.d.ts.map +1 -0
  320. package/settings/useSettingsNavGroups.js +61 -0
  321. package/settings/useSettingsNavGroups.js.map +1 -0
  322. package/src/agent/steps/ReviewStep.tsx +2 -3
  323. package/src/billing/index.ts +5 -0
  324. package/src/channel/AgentChannelsPanel.tsx +27 -1
  325. package/src/composer/SessionComposer.tsx +1 -1
  326. package/src/cursor-accounts/CursorAccountEditor.tsx +229 -0
  327. package/src/cursor-accounts/CursorAccountsAccessNotice.tsx +36 -0
  328. package/src/cursor-accounts/CursorAccountsConsole.tsx +454 -0
  329. package/src/cursor-accounts/MemberCoverageTable.tsx +439 -0
  330. package/src/cursor-accounts/MemberKeysPanel.tsx +278 -0
  331. package/src/cursor-accounts/__tests__/CursorAccountsConsole.test.tsx +680 -0
  332. package/src/cursor-accounts/__tests__/cursor-account-coverage.test.ts +73 -0
  333. package/src/cursor-accounts/badges.tsx +26 -0
  334. package/src/cursor-accounts/cursor-account-coverage.ts +71 -0
  335. package/src/cursor-accounts/cursor-account-format.ts +45 -0
  336. package/src/cursor-accounts/index.ts +29 -0
  337. package/src/cursor-accounts/useCursorAccountView.ts +49 -0
  338. package/src/cursor-accounts/useCursorAccounts.ts +49 -0
  339. package/src/cursor-accounts/useCursorMemberKeyActions.ts +106 -0
  340. package/src/cursor-accounts/useDeleteCursorAccount.ts +62 -0
  341. package/src/cursor-accounts/useSyncCursorAccount.ts +54 -0
  342. package/src/cursor-accounts/useUpsertCursorAccount.ts +57 -0
  343. package/src/datastore/CollectionRecordsBrowser.tsx +570 -0
  344. package/src/datastore/CollectionSchemaView.tsx +247 -0
  345. package/src/datastore/DatastoreDetailView.tsx +201 -0
  346. package/src/datastore/DatastoreSyncReport.tsx +105 -0
  347. package/src/datastore/DeleteDatastoreDialog.tsx +202 -0
  348. package/src/datastore/FieldValueControl.tsx +289 -0
  349. package/src/datastore/RecordFilterBuilder.tsx +422 -0
  350. package/src/datastore/RecordFormPanel.tsx +432 -0
  351. package/src/datastore/__tests__/CollectionRecordsBrowser.test.tsx +245 -0
  352. package/src/datastore/__tests__/DeleteDatastoreDialog.test.tsx +133 -0
  353. package/src/datastore/__tests__/FieldValueControl.test.tsx +160 -0
  354. package/src/datastore/__tests__/RecordFilterBuilder.test.tsx +155 -0
  355. package/src/datastore/__tests__/RecordFormPanel.test.tsx +227 -0
  356. package/src/datastore/__tests__/recordFilter.test.ts +169 -0
  357. package/src/datastore/__tests__/recordMutations.test.tsx +195 -0
  358. package/src/datastore/__tests__/recordValues.test.ts +359 -0
  359. package/src/datastore/__tests__/schemaAndSyncViews.test.tsx +142 -0
  360. package/src/datastore/__tests__/useDatastoreDescription.test.tsx +143 -0
  361. package/src/datastore/__tests__/useRecordCollection.test.tsx +250 -0
  362. package/src/datastore/__tests__/useRecordList.test.tsx +85 -0
  363. package/src/datastore/index.ts +111 -0
  364. package/src/datastore/recordFilter.ts +154 -0
  365. package/src/datastore/recordValues.ts +327 -0
  366. package/src/datastore/useDatastore.ts +67 -0
  367. package/src/datastore/useDatastoreCount.ts +67 -0
  368. package/src/datastore/useDatastoreDescription.ts +90 -0
  369. package/src/datastore/useDatastoreList.ts +79 -0
  370. package/src/datastore/useDatastoreSearch.ts +39 -0
  371. package/src/datastore/useDeleteDatastore.ts +87 -0
  372. package/src/datastore/useDeleteRecord.ts +77 -0
  373. package/src/datastore/useInsertRecord.ts +92 -0
  374. package/src/datastore/useRecordCollection.ts +256 -0
  375. package/src/datastore/useRecordList.ts +131 -0
  376. package/src/datastore/useUpdateRecord.ts +95 -0
  377. package/src/environment/EnvironmentListPanel.tsx +24 -0
  378. package/src/execution/ExecutionProgress.tsx +14 -4
  379. package/src/execution/MessageThread.tsx +10 -2
  380. package/src/execution/__tests__/ExecutionProgress.test.tsx +67 -0
  381. package/src/execution/__tests__/MessageThread.test.tsx +44 -0
  382. package/src/execution/__tests__/useArtifactInspection.test.tsx +12 -2
  383. package/src/execution/__tests__/useCreateAgentExecution.test.tsx +86 -0
  384. package/src/execution/useCreateAgentExecution.ts +41 -6
  385. package/src/iam-policy/__tests__/useCheckPermission.test.tsx +221 -0
  386. package/src/iam-policy/index.ts +1 -0
  387. package/src/iam-policy/useCheckPermission.ts +45 -19
  388. package/src/index.ts +172 -14
  389. package/src/internal/form-primitives.tsx +40 -0
  390. package/src/library/index.ts +0 -20
  391. package/src/library/useApplyResource.ts +27 -34
  392. package/src/library/useExportResource.ts +21 -40
  393. package/src/manifest/ApplyManifestDialog.tsx +315 -0
  394. package/src/manifest/EditResourceYamlDialog.tsx +265 -0
  395. package/src/manifest/RedactedSecretsNotice.tsx +30 -0
  396. package/src/manifest/YamlEditor.tsx +272 -0
  397. package/src/manifest/__tests__/EditResourceYamlDialog.test.tsx +118 -0
  398. package/src/manifest/__tests__/useApplyManifest.test.tsx +237 -0
  399. package/src/manifest/__tests__/useEditResourceYaml.test.tsx +252 -0
  400. package/src/manifest/index.ts +33 -0
  401. package/src/manifest/useApplyManifest.ts +270 -0
  402. package/src/manifest/useEditResourceYaml.ts +273 -0
  403. package/src/mcp-server/steps/ReviewStep.tsx +2 -3
  404. package/src/pricing-governance/BaselineEditor.tsx +652 -0
  405. package/src/pricing-governance/ModelCatalogPanel.tsx +283 -0
  406. package/src/pricing-governance/ModelGovernanceDetail.tsx +289 -0
  407. package/src/pricing-governance/OperatorAccessNotice.tsx +32 -0
  408. package/src/pricing-governance/PricingGovernanceConsole.tsx +465 -0
  409. package/src/pricing-governance/PricingGovernancePanel.tsx +166 -0
  410. package/src/pricing-governance/RetireConfirm.tsx +82 -0
  411. package/src/pricing-governance/__tests__/ModelCatalogPanel.test.tsx +253 -0
  412. package/src/pricing-governance/__tests__/PricingGovernanceConsole.test.tsx +410 -0
  413. package/src/pricing-governance/__tests__/useModelGovernanceView.test.tsx +308 -0
  414. package/src/pricing-governance/governance-primitives.tsx +133 -0
  415. package/src/pricing-governance/index.ts +50 -0
  416. package/src/pricing-governance/pricing-format.ts +53 -0
  417. package/src/pricing-governance/useDecidePricingOverride.ts +78 -0
  418. package/src/pricing-governance/useModelGovernanceView.ts +290 -0
  419. package/src/pricing-governance/useModelPricingBaselines.ts +69 -0
  420. package/src/pricing-governance/usePricingGovernance.ts +57 -0
  421. package/src/pricing-governance/useRetireModelPricingBaseline.ts +65 -0
  422. package/src/pricing-governance/useUpsertModelPricingBaseline.ts +72 -0
  423. package/src/resource-creation/templates/workflow-templates.ts +4 -4
  424. package/src/session/__tests__/useCreateSession.test.tsx +94 -0
  425. package/src/session/__tests__/useNewSessionFlow.test.tsx +33 -0
  426. package/src/session/useCreateSession.ts +30 -0
  427. package/src/session/useEditSessionPrep.ts +3 -3
  428. package/src/session/useNewSessionFlow.ts +45 -1
  429. package/src/session/useUpdateSession.ts +29 -10
  430. package/src/settings/__tests__/useSettingsNavGroups.test.tsx +138 -0
  431. package/src/settings/index.ts +5 -1
  432. package/src/settings/settings-nav.ts +43 -0
  433. package/src/settings/useSettingsNavGroups.ts +81 -0
  434. package/src/workflow/WorkflowYamlEditor.tsx +6 -270
  435. package/styles.css +1 -1
  436. package/workflow/CanvasTransitionEdge.d.ts +1 -1
  437. package/workflow/WorkflowYamlEditor.d.ts +2 -42
  438. package/workflow/WorkflowYamlEditor.d.ts.map +1 -1
  439. package/workflow/WorkflowYamlEditor.js +5 -214
  440. package/workflow/WorkflowYamlEditor.js.map +1 -1
  441. package/library/ImportResourceDialog.d.ts +0 -43
  442. package/library/ImportResourceDialog.d.ts.map +0 -1
  443. package/library/ImportResourceDialog.js +0 -90
  444. package/library/ImportResourceDialog.js.map +0 -1
  445. package/library/parse-resource-yaml.d.ts +0 -63
  446. package/library/parse-resource-yaml.d.ts.map +0 -1
  447. package/library/parse-resource-yaml.js +0 -407
  448. package/library/parse-resource-yaml.js.map +0 -1
  449. package/library/serialize-resource-yaml.d.ts +0 -103
  450. package/library/serialize-resource-yaml.d.ts.map +0 -1
  451. package/library/serialize-resource-yaml.js +0 -565
  452. package/library/serialize-resource-yaml.js.map +0 -1
  453. package/library/useImportResource.d.ts +0 -84
  454. package/library/useImportResource.d.ts.map +0 -1
  455. package/library/useImportResource.js +0 -188
  456. package/library/useImportResource.js.map +0 -1
  457. package/src/library/ImportResourceDialog.tsx +0 -227
  458. package/src/library/parse-resource-yaml.ts +0 -630
  459. package/src/library/serialize-resource-yaml.ts +0 -756
  460. package/src/library/useImportResource.ts +0 -253
@@ -1,756 +0,0 @@
1
- import { stringify as stringifyYaml } from "yaml";
2
- import type {
3
- AgentInput,
4
- McpServerInput,
5
- McpServerUsageInput,
6
- SubAgentInput,
7
- McpAccessInput,
8
- ToolApprovalOverrideInput,
9
- ResourceRef,
10
- } from "@stigmer/sdk";
11
- import type { Agent } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/api_pb";
12
- import type {
13
- AgentSpec,
14
- McpServerUsage,
15
- SubAgent,
16
- McpAccess,
17
- ToolApprovalOverride,
18
- } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/spec_pb";
19
- import type { McpServer } from "@stigmer/protos/ai/stigmer/agentic/mcpserver/v1/api_pb";
20
- import type {
21
- McpServerSpec,
22
- StdioServerConfig,
23
- HttpServerConfig,
24
- ToolApprovalPolicy,
25
- } from "@stigmer/protos/ai/stigmer/agentic/mcpserver/v1/spec_pb";
26
- import type { ApiResourceReference } from "@stigmer/protos/ai/stigmer/commons/apiresource/io_pb";
27
- import type { EnvVarDeclaration } from "@stigmer/protos/ai/stigmer/agentic/environment/v1/spec_pb";
28
-
29
- /**
30
- * Serializes a proto `Agent` into the canonical Stigmer YAML format.
31
- *
32
- * This is the inverse of {@link parseResourceYaml} — the serialized YAML
33
- * is round-trip compatible and can be fed back through `parseResourceYaml`
34
- * to produce a valid `AgentInput`.
35
- *
36
- * Only emits `apiVersion`, `kind`, `metadata`, and `spec`. The `status`
37
- * field is system-managed and never included in the YAML output.
38
- *
39
- * Uses snake_case field names in the YAML to match the proto canonical form,
40
- * which is the format expected by both the backend and `parseResourceYaml`.
41
- *
42
- * @param agent - The proto `Agent` resource to serialize.
43
- * @returns A YAML string suitable for editing and re-applying.
44
- *
45
- * @example
46
- * ```ts
47
- * import { serializeAgentYaml } from "@stigmer/react";
48
- *
49
- * const yaml = serializeAgentYaml(agent);
50
- * const file = new File([yaml], "my-agent.yaml", { type: "text/yaml" });
51
- * ```
52
- *
53
- * @see {@link parseResourceYaml} for the inverse operation
54
- */
55
- export function serializeAgentYaml(agent: Agent): string {
56
- const doc: Record<string, unknown> = {
57
- apiVersion: agent.apiVersion || "agentic.stigmer.ai/v1",
58
- kind: agent.kind || "Agent",
59
- metadata: buildMetadata(agent.metadata),
60
- spec: buildAgentSpec(agent.spec),
61
- };
62
-
63
- return stringifyYaml(doc, { lineWidth: 0, blockQuote: "literal" });
64
- }
65
-
66
- /**
67
- * Serializes a proto `McpServer` into the canonical Stigmer YAML format.
68
- *
69
- * This is the inverse of {@link parseResourceYaml} for McpServer resources.
70
- * Same round-trip guarantee and snake_case convention as {@link serializeAgentYaml}.
71
- *
72
- * @param mcpServer - The proto `McpServer` resource to serialize.
73
- * @returns A YAML string suitable for editing and re-applying.
74
- *
75
- * @example
76
- * ```ts
77
- * import { serializeMcpServerYaml } from "@stigmer/react";
78
- *
79
- * const yaml = serializeMcpServerYaml(mcpServer);
80
- * const file = new File([yaml], "my-server.yaml", { type: "text/yaml" });
81
- * ```
82
- *
83
- * @see {@link parseResourceYaml} for the inverse operation
84
- */
85
- export function serializeMcpServerYaml(mcpServer: McpServer): string {
86
- const doc: Record<string, unknown> = {
87
- apiVersion: mcpServer.apiVersion || "agentic.stigmer.ai/v1",
88
- kind: mcpServer.kind || "McpServer",
89
- metadata: buildMetadata(mcpServer.metadata),
90
- spec: buildMcpServerSpec(mcpServer.spec),
91
- };
92
-
93
- return stringifyYaml(doc, { lineWidth: 0, blockQuote: "literal" });
94
- }
95
-
96
- // ---------------------------------------------------------------------------
97
- // Metadata
98
- // ---------------------------------------------------------------------------
99
-
100
- function buildMetadata(
101
- metadata: Agent["metadata"] | McpServer["metadata"],
102
- ): Record<string, unknown> {
103
- if (!metadata) return {};
104
-
105
- const result: Record<string, unknown> = {
106
- name: metadata.name,
107
- };
108
-
109
- if (metadata.org) {
110
- result.org = metadata.org;
111
- }
112
-
113
- if (metadata.slug && metadata.slug !== metadata.name) {
114
- result.slug = metadata.slug;
115
- }
116
-
117
- if (hasEntries(metadata.labels)) {
118
- result.labels = { ...metadata.labels };
119
- }
120
-
121
- return result;
122
- }
123
-
124
- // ---------------------------------------------------------------------------
125
- // Agent spec
126
- // ---------------------------------------------------------------------------
127
-
128
- function buildAgentSpec(
129
- spec: AgentSpec | undefined,
130
- ): Record<string, unknown> {
131
- if (!spec) return {};
132
-
133
- const result: Record<string, unknown> = {};
134
-
135
- if (spec.description) {
136
- result.description = spec.description;
137
- }
138
-
139
- if (spec.iconUrl) {
140
- result.icon_url = spec.iconUrl;
141
- }
142
-
143
- if (spec.instructions) {
144
- result.instructions = spec.instructions;
145
- }
146
-
147
- if (spec.mcpServerUsages.length > 0) {
148
- result.mcp_server_usages = spec.mcpServerUsages.map(serializeMcpServerUsage);
149
- }
150
-
151
- if (spec.skillRefs.length > 0) {
152
- result.skill_refs = spec.skillRefs.map(serializeResourceRef);
153
- }
154
-
155
- if (spec.subAgents.length > 0) {
156
- result.sub_agents = spec.subAgents.map(serializeSubAgent);
157
- }
158
-
159
- if (hasEntries(spec.env)) {
160
- const env = serializeEnv(spec.env);
161
- if (env) {
162
- result.env = env;
163
- }
164
- }
165
-
166
- return result;
167
- }
168
-
169
- function serializeMcpServerUsage(
170
- usage: McpServerUsage,
171
- ): Record<string, unknown> {
172
- const result: Record<string, unknown> = {};
173
-
174
- if (usage.mcpServerRef) {
175
- result.mcp_server_ref = serializeResourceRef(usage.mcpServerRef);
176
- }
177
-
178
- if (usage.enabledTools.length > 0) {
179
- result.enabled_tools = [...usage.enabledTools];
180
- }
181
-
182
- if (usage.toolApprovalOverrides.length > 0) {
183
- result.tool_approval_overrides =
184
- usage.toolApprovalOverrides.map(serializeToolApprovalOverride);
185
- }
186
-
187
- return result;
188
- }
189
-
190
- function serializeToolApprovalOverride(
191
- override: ToolApprovalOverride,
192
- ): Record<string, unknown> {
193
- const result: Record<string, unknown> = {
194
- tool_name: override.toolName,
195
- requires_approval: override.requiresApproval,
196
- };
197
-
198
- if (override.message) {
199
- result.message = override.message;
200
- }
201
-
202
- return result;
203
- }
204
-
205
- function serializeSubAgent(sub: SubAgent): Record<string, unknown> {
206
- const result: Record<string, unknown> = {
207
- name: sub.name,
208
- };
209
-
210
- if (sub.description) {
211
- result.description = sub.description;
212
- }
213
-
214
- if (sub.instructions) {
215
- result.instructions = sub.instructions;
216
- }
217
-
218
- if (sub.modelOverride) {
219
- result.model_override = sub.modelOverride;
220
- }
221
-
222
- if (sub.mcpAccess.length > 0) {
223
- result.mcp_access = sub.mcpAccess.map(serializeMcpAccess);
224
- }
225
-
226
- if (sub.skillRefs.length > 0) {
227
- result.skill_refs = sub.skillRefs.map(serializeResourceRef);
228
- }
229
-
230
- return result;
231
- }
232
-
233
- function serializeMcpAccess(access: McpAccess): Record<string, unknown> {
234
- const result: Record<string, unknown> = {
235
- mcp_server: access.mcpServer,
236
- };
237
-
238
- if (access.enabledTools.length > 0) {
239
- result.enabled_tools = [...access.enabledTools];
240
- }
241
-
242
- return result;
243
- }
244
-
245
- // ---------------------------------------------------------------------------
246
- // McpServer spec
247
- // ---------------------------------------------------------------------------
248
-
249
- function buildMcpServerSpec(
250
- spec: McpServerSpec | undefined,
251
- ): Record<string, unknown> {
252
- if (!spec) return {};
253
-
254
- const result: Record<string, unknown> = {};
255
-
256
- if (spec.description) {
257
- result.description = spec.description;
258
- }
259
-
260
- if (spec.iconUrl) {
261
- result.icon_url = spec.iconUrl;
262
- }
263
-
264
- if (spec.tags.length > 0) {
265
- result.tags = [...spec.tags];
266
- }
267
-
268
- if (spec.serverType.case === "stdio") {
269
- result.stdio = serializeStdioConfig(spec.serverType.value);
270
- } else if (spec.serverType.case === "http") {
271
- result.http = serializeHttpConfig(spec.serverType.value);
272
- }
273
-
274
- if (spec.defaultEnabledTools.length > 0) {
275
- result.default_enabled_tools = [...spec.defaultEnabledTools];
276
- }
277
-
278
- if (spec.pinnedToolApprovals.length > 0) {
279
- result.pinned_tool_approvals =
280
- spec.pinnedToolApprovals.map(serializeToolApprovalPolicy);
281
- }
282
-
283
- if (hasEntries(spec.env)) {
284
- const env = serializeEnv(spec.env);
285
- if (env) {
286
- result.env = env;
287
- }
288
- }
289
-
290
- return result;
291
- }
292
-
293
- function serializeStdioConfig(
294
- config: StdioServerConfig,
295
- ): Record<string, unknown> {
296
- const result: Record<string, unknown> = {
297
- command: config.command,
298
- };
299
-
300
- if (config.args.length > 0) {
301
- result.args = [...config.args];
302
- }
303
-
304
- if (config.workingDir) {
305
- result.working_dir = config.workingDir;
306
- }
307
-
308
- return result;
309
- }
310
-
311
- function serializeHttpConfig(
312
- config: HttpServerConfig,
313
- ): Record<string, unknown> {
314
- const result: Record<string, unknown> = {
315
- url: config.url,
316
- };
317
-
318
- if (hasEntries(config.headers)) {
319
- result.headers = { ...config.headers };
320
- }
321
-
322
- if (hasEntries(config.queryParams)) {
323
- result.query_params = { ...config.queryParams };
324
- }
325
-
326
- if (config.timeoutSeconds > 0) {
327
- result.timeout_seconds = config.timeoutSeconds;
328
- }
329
-
330
- return result;
331
- }
332
-
333
- function serializeToolApprovalPolicy(
334
- policy: ToolApprovalPolicy,
335
- ): Record<string, unknown> {
336
- const result: Record<string, unknown> = {
337
- tool_name: policy.toolName,
338
- };
339
-
340
- if (policy.message) {
341
- result.message = policy.message;
342
- }
343
-
344
- return result;
345
- }
346
-
347
- // ---------------------------------------------------------------------------
348
- // Shared serializers
349
- // ---------------------------------------------------------------------------
350
-
351
- function serializeResourceRef(
352
- ref: ApiResourceReference,
353
- ): Record<string, unknown> {
354
- const result: Record<string, unknown> = {};
355
-
356
- if (ref.org) {
357
- result.org = ref.org;
358
- }
359
-
360
- if (ref.kind) {
361
- result.kind = ref.kind;
362
- }
363
-
364
- result.slug = ref.slug;
365
-
366
- if (ref.version) {
367
- result.version = ref.version;
368
- }
369
-
370
- return result;
371
- }
372
-
373
- function serializeEnv(
374
- env: { [key: string]: EnvVarDeclaration },
375
- ): Record<string, Record<string, unknown>> | undefined {
376
- const keys = Object.keys(env);
377
- if (keys.length === 0) return undefined;
378
-
379
- const result: Record<string, Record<string, unknown>> = {};
380
-
381
- for (const [key, val] of Object.entries(env)) {
382
- const entry: Record<string, unknown> = {};
383
-
384
- if (val.isSecret) {
385
- entry.is_secret = val.isSecret;
386
- }
387
-
388
- if (val.description) {
389
- entry.description = val.description;
390
- }
391
-
392
- if (val.optional) {
393
- entry.optional = val.optional;
394
- }
395
-
396
- result[key] = entry;
397
- }
398
-
399
- return result;
400
- }
401
-
402
- // ---------------------------------------------------------------------------
403
- // Utilities
404
- // ---------------------------------------------------------------------------
405
-
406
- function hasEntries(obj: Record<string, unknown> | undefined): boolean {
407
- if (!obj) return false;
408
- return Object.keys(obj).length > 0;
409
- }
410
-
411
- // ===========================================================================
412
- // AgentInput serialization (from SDK input type, not proto)
413
- // ===========================================================================
414
-
415
- /**
416
- * Serializes an {@link AgentInput} (SDK input type) into the canonical
417
- * Stigmer YAML format.
418
- *
419
- * Unlike {@link serializeAgentYaml} which takes a proto `Agent`, this
420
- * function works from the SDK input type — the same shape used by
421
- * `stigmer.agent.apply()`. This is used by the creation wizard to
422
- * preview the YAML before submission.
423
- *
424
- * The output is round-trip compatible with {@link parseResourceYaml}.
425
- *
426
- * @param input - The SDK `AgentInput` to serialize.
427
- * @returns A YAML string in the canonical Stigmer resource format.
428
- *
429
- * @example
430
- * ```ts
431
- * import { serializeAgentInputYaml } from "@stigmer/react";
432
- *
433
- * const yaml = serializeAgentInputYaml({
434
- * name: "my-agent",
435
- * org: "acme",
436
- * instructions: "You are a helpful assistant.",
437
- * });
438
- * ```
439
- */
440
- export function serializeAgentInputYaml(input: AgentInput): string {
441
- const doc: Record<string, unknown> = {
442
- apiVersion: "agentic.stigmer.ai/v1",
443
- kind: "Agent",
444
- metadata: buildInputMetadata(input),
445
- spec: buildAgentInputSpec(input),
446
- };
447
-
448
- return stringifyYaml(doc, { lineWidth: 0, blockQuote: "literal" });
449
- }
450
-
451
- function buildInputMetadata(input: AgentInput): Record<string, unknown> {
452
- const result: Record<string, unknown> = {
453
- name: input.name,
454
- };
455
-
456
- if (input.org) {
457
- result.org = input.org;
458
- }
459
-
460
- if (input.slug && input.slug !== input.name) {
461
- result.slug = input.slug;
462
- }
463
-
464
- if (input.labels && Object.keys(input.labels).length > 0) {
465
- result.labels = { ...input.labels };
466
- }
467
-
468
- return result;
469
- }
470
-
471
- function buildAgentInputSpec(input: AgentInput): Record<string, unknown> {
472
- const result: Record<string, unknown> = {};
473
-
474
- if (input.description) {
475
- result.description = input.description;
476
- }
477
-
478
- if (input.iconUrl) {
479
- result.icon_url = input.iconUrl;
480
- }
481
-
482
- if (input.instructions) {
483
- result.instructions = input.instructions;
484
- }
485
-
486
- if (input.mcpServerUsages && input.mcpServerUsages.length > 0) {
487
- result.mcp_server_usages = input.mcpServerUsages.map(serializeInputMcpUsage);
488
- }
489
-
490
- if (input.skillRefs && input.skillRefs.length > 0) {
491
- result.skill_refs = input.skillRefs.map(serializeInputRef);
492
- }
493
-
494
- if (input.subAgents && input.subAgents.length > 0) {
495
- result.sub_agents = input.subAgents.map(serializeInputSubAgent);
496
- }
497
-
498
- if (input.env && Object.keys(input.env).length > 0) {
499
- result.env = serializeInputEnv(input.env);
500
- }
501
-
502
- return result;
503
- }
504
-
505
- function serializeInputMcpUsage(
506
- usage: McpServerUsageInput,
507
- ): Record<string, unknown> {
508
- const result: Record<string, unknown> = {
509
- mcp_server_ref: serializeInputRef(usage.mcpServerRef),
510
- };
511
-
512
- if (usage.enabledTools && usage.enabledTools.length > 0) {
513
- result.enabled_tools = [...usage.enabledTools];
514
- }
515
-
516
- if (usage.toolApprovalOverrides && usage.toolApprovalOverrides.length > 0) {
517
- result.tool_approval_overrides =
518
- usage.toolApprovalOverrides.map(serializeInputApprovalOverride);
519
- }
520
-
521
- return result;
522
- }
523
-
524
- function serializeInputApprovalOverride(
525
- override: ToolApprovalOverrideInput,
526
- ): Record<string, unknown> {
527
- const result: Record<string, unknown> = {};
528
-
529
- if (override.toolName) {
530
- result.tool_name = override.toolName;
531
- }
532
- if (override.requiresApproval != null) {
533
- result.requires_approval = override.requiresApproval;
534
- }
535
- if (override.message) {
536
- result.message = override.message;
537
- }
538
-
539
- return result;
540
- }
541
-
542
- function serializeInputSubAgent(sub: SubAgentInput): Record<string, unknown> {
543
- const result: Record<string, unknown> = {
544
- name: sub.name,
545
- };
546
-
547
- if (sub.description) {
548
- result.description = sub.description;
549
- }
550
- if (sub.instructions) {
551
- result.instructions = sub.instructions;
552
- }
553
- if (sub.modelOverride) {
554
- result.model_override = sub.modelOverride;
555
- }
556
- if (sub.mcpAccess && sub.mcpAccess.length > 0) {
557
- result.mcp_access = sub.mcpAccess.map(serializeInputMcpAccess);
558
- }
559
- if (sub.skillRefs && sub.skillRefs.length > 0) {
560
- result.skill_refs = sub.skillRefs.map(serializeInputRef);
561
- }
562
-
563
- return result;
564
- }
565
-
566
- function serializeInputMcpAccess(
567
- access: McpAccessInput,
568
- ): Record<string, unknown> {
569
- const result: Record<string, unknown> = {
570
- mcp_server: access.mcpServer,
571
- };
572
-
573
- if (access.enabledTools && access.enabledTools.length > 0) {
574
- result.enabled_tools = [...access.enabledTools];
575
- }
576
-
577
- return result;
578
- }
579
-
580
- function serializeInputRef(ref: ResourceRef): Record<string, unknown> {
581
- const result: Record<string, unknown> = {};
582
-
583
- if (ref.org) {
584
- result.org = ref.org;
585
- }
586
- result.slug = ref.slug;
587
-
588
- if (ref.version) {
589
- result.version = ref.version;
590
- }
591
-
592
- return result;
593
- }
594
-
595
- function serializeInputEnv(
596
- env: NonNullable<AgentInput["env"]>,
597
- ): Record<string, Record<string, unknown>> {
598
- const result: Record<string, Record<string, unknown>> = {};
599
-
600
- for (const [key, val] of Object.entries(env)) {
601
- const entry: Record<string, unknown> = {};
602
-
603
- if (val.isSecret) {
604
- entry.is_secret = val.isSecret;
605
- }
606
- if (val.description) {
607
- entry.description = val.description;
608
- }
609
- if (val.optional) {
610
- entry.optional = val.optional;
611
- }
612
-
613
- result[key] = entry;
614
- }
615
-
616
- return result;
617
- }
618
-
619
- // ===========================================================================
620
- // McpServerInput serialization (from SDK input type, not proto)
621
- // ===========================================================================
622
-
623
- /**
624
- * Serializes a {@link McpServerInput} (SDK input type) into the canonical
625
- * Stigmer YAML format.
626
- *
627
- * Unlike {@link serializeMcpServerYaml} which takes a proto `McpServer`,
628
- * this function works from the SDK input type — the same shape used by
629
- * `stigmer.mcpServer.apply()`. This is used by the creation wizard to
630
- * preview the YAML before submission.
631
- *
632
- * The output is round-trip compatible with {@link parseResourceYaml}.
633
- *
634
- * @param input - The SDK `McpServerInput` to serialize.
635
- * @returns A YAML string in the canonical Stigmer resource format.
636
- *
637
- * @example
638
- * ```ts
639
- * import { serializeMcpServerInputYaml } from "@stigmer/react";
640
- *
641
- * const yaml = serializeMcpServerInputYaml({
642
- * name: "github",
643
- * org: "acme",
644
- * http: { url: "https://mcp.github.com/sse" },
645
- * });
646
- * ```
647
- */
648
- export function serializeMcpServerInputYaml(input: McpServerInput): string {
649
- const doc: Record<string, unknown> = {
650
- apiVersion: "agentic.stigmer.ai/v1",
651
- kind: "McpServer",
652
- metadata: buildMcpServerInputMetadata(input),
653
- spec: buildMcpServerInputSpec(input),
654
- };
655
-
656
- return stringifyYaml(doc, { lineWidth: 0, blockQuote: "literal" });
657
- }
658
-
659
- function buildMcpServerInputMetadata(
660
- input: McpServerInput,
661
- ): Record<string, unknown> {
662
- const result: Record<string, unknown> = {
663
- name: input.name,
664
- };
665
-
666
- if (input.org) {
667
- result.org = input.org;
668
- }
669
-
670
- if (input.slug && input.slug !== input.name) {
671
- result.slug = input.slug;
672
- }
673
-
674
- if (input.labels && Object.keys(input.labels).length > 0) {
675
- result.labels = { ...input.labels };
676
- }
677
-
678
- return result;
679
- }
680
-
681
- function buildMcpServerInputSpec(
682
- input: McpServerInput,
683
- ): Record<string, unknown> {
684
- const result: Record<string, unknown> = {};
685
-
686
- if (input.description) {
687
- result.description = input.description;
688
- }
689
-
690
- if (input.iconUrl) {
691
- result.icon_url = input.iconUrl;
692
- }
693
-
694
- if (input.stdio) {
695
- const stdio: Record<string, unknown> = {
696
- command: input.stdio.command,
697
- };
698
- if (input.stdio.args && input.stdio.args.length > 0) {
699
- stdio.args = [...input.stdio.args];
700
- }
701
- if (input.stdio.workingDir) {
702
- stdio.working_dir = input.stdio.workingDir;
703
- }
704
- result.stdio = stdio;
705
- }
706
-
707
- if (input.http) {
708
- const http: Record<string, unknown> = {
709
- url: input.http.url,
710
- };
711
- if (input.http.headers && Object.keys(input.http.headers).length > 0) {
712
- http.headers = { ...input.http.headers };
713
- }
714
- if (input.http.queryParams && Object.keys(input.http.queryParams).length > 0) {
715
- http.query_params = { ...input.http.queryParams };
716
- }
717
- if (input.http.timeoutSeconds && input.http.timeoutSeconds > 0) {
718
- http.timeout_seconds = input.http.timeoutSeconds;
719
- }
720
- result.http = http;
721
- }
722
-
723
- if (input.env && Object.keys(input.env).length > 0) {
724
- result.env = serializeInputEnv(input.env);
725
- }
726
-
727
- if (input.auth) {
728
- result.auth = serializeInputMcpServerAuth(input.auth);
729
- }
730
-
731
- return result;
732
- }
733
-
734
- function serializeInputMcpServerAuth(
735
- auth: NonNullable<McpServerInput["auth"]>,
736
- ): Record<string, unknown> {
737
- const result: Record<string, unknown> = {};
738
-
739
- if (auth.oauthAppRef) {
740
- result.oauth_app_ref = serializeInputRef(auth.oauthAppRef);
741
- }
742
- if (auth.targetEnvVar) {
743
- result.target_env_var = auth.targetEnvVar;
744
- }
745
- if (auth.tokenLifetimeHint) {
746
- result.token_lifetime_hint = auth.tokenLifetimeHint;
747
- }
748
- if (auth.scopeHints && auth.scopeHints.length > 0) {
749
- result.scope_hints = [...auth.scopeHints];
750
- }
751
- if (auth.discoveryUrl) {
752
- result.discovery_url = auth.discoveryUrl;
753
- }
754
-
755
- return result;
756
- }