@stigmer/react 3.2.2 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (513) hide show
  1. package/agent/AgentDetailView.d.ts.map +1 -1
  2. package/agent/AgentDetailView.js +6 -3
  3. package/agent/AgentDetailView.js.map +1 -1
  4. package/agent/steps/ReviewStep.d.ts.map +1 -1
  5. package/agent/steps/ReviewStep.js +2 -3
  6. package/agent/steps/ReviewStep.js.map +1 -1
  7. package/billing/BaselineEditor.d.ts +9 -0
  8. package/billing/BaselineEditor.d.ts.map +1 -0
  9. package/billing/BaselineEditor.js +253 -0
  10. package/billing/BaselineEditor.js.map +1 -0
  11. package/billing/ModelCatalogPanel.d.ts +28 -0
  12. package/billing/ModelCatalogPanel.d.ts.map +1 -0
  13. package/billing/ModelCatalogPanel.js +102 -0
  14. package/billing/ModelCatalogPanel.js.map +1 -0
  15. package/billing/ModelGovernanceDetail.d.ts +8 -0
  16. package/billing/ModelGovernanceDetail.d.ts.map +1 -0
  17. package/billing/ModelGovernanceDetail.js +64 -0
  18. package/billing/ModelGovernanceDetail.js.map +1 -0
  19. package/billing/OperatorAccessNotice.d.ts +12 -0
  20. package/billing/OperatorAccessNotice.d.ts.map +1 -0
  21. package/billing/OperatorAccessNotice.js +15 -0
  22. package/billing/OperatorAccessNotice.js.map +1 -0
  23. package/billing/PricingGovernanceConsole.d.ts +57 -0
  24. package/billing/PricingGovernanceConsole.d.ts.map +1 -0
  25. package/billing/PricingGovernanceConsole.js +164 -0
  26. package/billing/PricingGovernanceConsole.js.map +1 -0
  27. package/billing/PricingGovernancePanel.d.ts +26 -0
  28. package/billing/PricingGovernancePanel.d.ts.map +1 -0
  29. package/billing/PricingGovernancePanel.js +64 -0
  30. package/billing/PricingGovernancePanel.js.map +1 -0
  31. package/billing/RetireConfirm.d.ts +9 -0
  32. package/billing/RetireConfirm.d.ts.map +1 -0
  33. package/billing/RetireConfirm.js +19 -0
  34. package/billing/RetireConfirm.js.map +1 -0
  35. package/billing/form-primitives.d.ts +18 -0
  36. package/billing/form-primitives.d.ts.map +1 -0
  37. package/billing/form-primitives.js +19 -0
  38. package/billing/form-primitives.js.map +1 -0
  39. package/billing/governance-primitives.d.ts +33 -0
  40. package/billing/governance-primitives.d.ts.map +1 -0
  41. package/billing/governance-primitives.js +43 -0
  42. package/billing/governance-primitives.js.map +1 -0
  43. package/billing/index.d.ts +18 -0
  44. package/billing/index.d.ts.map +1 -1
  45. package/billing/index.js +9 -0
  46. package/billing/index.js.map +1 -1
  47. package/billing/pricing-format.d.ts +12 -0
  48. package/billing/pricing-format.d.ts.map +1 -0
  49. package/billing/pricing-format.js +50 -0
  50. package/billing/pricing-format.js.map +1 -0
  51. package/billing/useDecidePricingOverride.d.ts +46 -0
  52. package/billing/useDecidePricingOverride.d.ts.map +1 -0
  53. package/billing/useDecidePricingOverride.js +44 -0
  54. package/billing/useDecidePricingOverride.js.map +1 -0
  55. package/billing/useModelGovernanceView.d.ts +103 -0
  56. package/billing/useModelGovernanceView.d.ts.map +1 -0
  57. package/billing/useModelGovernanceView.js +144 -0
  58. package/billing/useModelGovernanceView.js.map +1 -0
  59. package/billing/useModelPricingBaselines.d.ts +40 -0
  60. package/billing/useModelPricingBaselines.d.ts.map +1 -0
  61. package/billing/useModelPricingBaselines.js +32 -0
  62. package/billing/useModelPricingBaselines.js.map +1 -0
  63. package/billing/usePricingGovernance.d.ts +39 -0
  64. package/billing/usePricingGovernance.d.ts.map +1 -0
  65. package/billing/usePricingGovernance.js +31 -0
  66. package/billing/usePricingGovernance.js.map +1 -0
  67. package/billing/useRetireModelPricingBaseline.d.ts +31 -0
  68. package/billing/useRetireModelPricingBaseline.d.ts.map +1 -0
  69. package/billing/useRetireModelPricingBaseline.js +36 -0
  70. package/billing/useRetireModelPricingBaseline.js.map +1 -0
  71. package/billing/useUpsertModelPricingBaseline.d.ts +38 -0
  72. package/billing/useUpsertModelPricingBaseline.d.ts.map +1 -0
  73. package/billing/useUpsertModelPricingBaseline.js +37 -0
  74. package/billing/useUpsertModelPricingBaseline.js.map +1 -0
  75. package/channel/AgentChannelsPanel.d.ts.map +1 -1
  76. package/channel/AgentChannelsPanel.js +11 -5
  77. package/channel/AgentChannelsPanel.js.map +1 -1
  78. package/composer/SessionComposer.d.ts +1 -1
  79. package/cursor-accounts/CursorAccountEditor.d.ts +28 -0
  80. package/cursor-accounts/CursorAccountEditor.d.ts.map +1 -0
  81. package/cursor-accounts/CursorAccountEditor.js +51 -0
  82. package/cursor-accounts/CursorAccountEditor.js.map +1 -0
  83. package/cursor-accounts/CursorAccountsAccessNotice.d.ts +11 -0
  84. package/cursor-accounts/CursorAccountsAccessNotice.d.ts.map +1 -0
  85. package/cursor-accounts/CursorAccountsAccessNotice.js +14 -0
  86. package/cursor-accounts/CursorAccountsAccessNotice.js.map +1 -0
  87. package/cursor-accounts/CursorAccountsConsole.d.ts +28 -0
  88. package/cursor-accounts/CursorAccountsConsole.d.ts.map +1 -0
  89. package/cursor-accounts/CursorAccountsConsole.js +275 -0
  90. package/cursor-accounts/CursorAccountsConsole.js.map +1 -0
  91. package/cursor-accounts/cursor-account-format.d.ts +10 -0
  92. package/cursor-accounts/cursor-account-format.d.ts.map +1 -0
  93. package/cursor-accounts/cursor-account-format.js +26 -0
  94. package/cursor-accounts/cursor-account-format.js.map +1 -0
  95. package/cursor-accounts/index.d.ts +18 -0
  96. package/cursor-accounts/index.d.ts.map +1 -0
  97. package/cursor-accounts/index.js +13 -0
  98. package/cursor-accounts/index.js.map +1 -0
  99. package/cursor-accounts/useCursorAccountView.d.ts +30 -0
  100. package/cursor-accounts/useCursorAccountView.d.ts.map +1 -0
  101. package/cursor-accounts/useCursorAccountView.js +25 -0
  102. package/cursor-accounts/useCursorAccountView.js.map +1 -0
  103. package/cursor-accounts/useCursorAccounts.d.ts +33 -0
  104. package/cursor-accounts/useCursorAccounts.d.ts.map +1 -0
  105. package/cursor-accounts/useCursorAccounts.js +25 -0
  106. package/cursor-accounts/useCursorAccounts.js.map +1 -0
  107. package/cursor-accounts/useCursorMemberKeyActions.d.ts +49 -0
  108. package/cursor-accounts/useCursorMemberKeyActions.d.ts.map +1 -0
  109. package/cursor-accounts/useCursorMemberKeyActions.js +38 -0
  110. package/cursor-accounts/useCursorMemberKeyActions.js.map +1 -0
  111. package/cursor-accounts/useDeleteCursorAccount.d.ts +30 -0
  112. package/cursor-accounts/useDeleteCursorAccount.d.ts.map +1 -0
  113. package/cursor-accounts/useDeleteCursorAccount.js +32 -0
  114. package/cursor-accounts/useDeleteCursorAccount.js.map +1 -0
  115. package/cursor-accounts/useSyncCursorAccount.d.ts +23 -0
  116. package/cursor-accounts/useSyncCursorAccount.d.ts.map +1 -0
  117. package/cursor-accounts/useSyncCursorAccount.js +31 -0
  118. package/cursor-accounts/useSyncCursorAccount.js.map +1 -0
  119. package/cursor-accounts/useUpsertCursorAccount.d.ts +26 -0
  120. package/cursor-accounts/useUpsertCursorAccount.d.ts.map +1 -0
  121. package/cursor-accounts/useUpsertCursorAccount.js +34 -0
  122. package/cursor-accounts/useUpsertCursorAccount.js.map +1 -0
  123. package/datastore/CollectionRecordsBrowser.d.ts +34 -0
  124. package/datastore/CollectionRecordsBrowser.d.ts.map +1 -0
  125. package/datastore/CollectionRecordsBrowser.js +209 -0
  126. package/datastore/CollectionRecordsBrowser.js.map +1 -0
  127. package/datastore/CollectionSchemaView.d.ts +29 -0
  128. package/datastore/CollectionSchemaView.d.ts.map +1 -0
  129. package/datastore/CollectionSchemaView.js +93 -0
  130. package/datastore/CollectionSchemaView.js.map +1 -0
  131. package/datastore/DatastoreDetailView.d.ts +44 -0
  132. package/datastore/DatastoreDetailView.d.ts.map +1 -0
  133. package/datastore/DatastoreDetailView.js +76 -0
  134. package/datastore/DatastoreDetailView.js.map +1 -0
  135. package/datastore/DatastoreSyncReport.d.ts +19 -0
  136. package/datastore/DatastoreSyncReport.d.ts.map +1 -0
  137. package/datastore/DatastoreSyncReport.js +45 -0
  138. package/datastore/DatastoreSyncReport.js.map +1 -0
  139. package/datastore/DeleteDatastoreDialog.d.ts +35 -0
  140. package/datastore/DeleteDatastoreDialog.d.ts.map +1 -0
  141. package/datastore/DeleteDatastoreDialog.js +90 -0
  142. package/datastore/DeleteDatastoreDialog.js.map +1 -0
  143. package/datastore/FieldValueControl.d.ts +55 -0
  144. package/datastore/FieldValueControl.d.ts.map +1 -0
  145. package/datastore/FieldValueControl.js +138 -0
  146. package/datastore/FieldValueControl.js.map +1 -0
  147. package/datastore/RecordFilterBuilder.d.ts +30 -0
  148. package/datastore/RecordFilterBuilder.d.ts.map +1 -0
  149. package/datastore/RecordFilterBuilder.js +122 -0
  150. package/datastore/RecordFilterBuilder.js.map +1 -0
  151. package/datastore/RecordFormPanel.d.ts +45 -0
  152. package/datastore/RecordFormPanel.d.ts.map +1 -0
  153. package/datastore/RecordFormPanel.js +215 -0
  154. package/datastore/RecordFormPanel.js.map +1 -0
  155. package/datastore/index.d.ts +43 -0
  156. package/datastore/index.d.ts.map +1 -0
  157. package/datastore/index.js +22 -0
  158. package/datastore/index.js.map +1 -0
  159. package/datastore/recordFilter.d.ts +54 -0
  160. package/datastore/recordFilter.d.ts.map +1 -0
  161. package/datastore/recordFilter.js +93 -0
  162. package/datastore/recordFilter.js.map +1 -0
  163. package/datastore/recordValues.d.ts +85 -0
  164. package/datastore/recordValues.d.ts.map +1 -0
  165. package/datastore/recordValues.js +282 -0
  166. package/datastore/recordValues.js.map +1 -0
  167. package/datastore/useDatastore.d.ts +39 -0
  168. package/datastore/useDatastore.d.ts.map +1 -0
  169. package/datastore/useDatastore.js +44 -0
  170. package/datastore/useDatastore.js.map +1 -0
  171. package/datastore/useDatastoreCount.d.ts +48 -0
  172. package/datastore/useDatastoreCount.d.ts.map +1 -0
  173. package/datastore/useDatastoreCount.js +27 -0
  174. package/datastore/useDatastoreCount.js.map +1 -0
  175. package/datastore/useDatastoreDescription.d.ts +54 -0
  176. package/datastore/useDatastoreDescription.d.ts.map +1 -0
  177. package/datastore/useDatastoreDescription.js +50 -0
  178. package/datastore/useDatastoreDescription.js.map +1 -0
  179. package/datastore/useDatastoreList.d.ts +57 -0
  180. package/datastore/useDatastoreList.d.ts.map +1 -0
  181. package/datastore/useDatastoreList.js +29 -0
  182. package/datastore/useDatastoreList.js.map +1 -0
  183. package/datastore/useDatastoreSearch.d.ts +19 -0
  184. package/datastore/useDatastoreSearch.d.ts.map +1 -0
  185. package/datastore/useDatastoreSearch.js +22 -0
  186. package/datastore/useDatastoreSearch.js.map +1 -0
  187. package/datastore/useDeleteDatastore.d.ts +53 -0
  188. package/datastore/useDeleteDatastore.d.ts.map +1 -0
  189. package/datastore/useDeleteDatastore.js +40 -0
  190. package/datastore/useDeleteDatastore.js.map +1 -0
  191. package/datastore/useDeleteRecord.d.ts +34 -0
  192. package/datastore/useDeleteRecord.d.ts.map +1 -0
  193. package/datastore/useDeleteRecord.js +43 -0
  194. package/datastore/useDeleteRecord.js.map +1 -0
  195. package/datastore/useInsertRecord.d.ts +50 -0
  196. package/datastore/useInsertRecord.d.ts.map +1 -0
  197. package/datastore/useInsertRecord.js +55 -0
  198. package/datastore/useInsertRecord.js.map +1 -0
  199. package/datastore/useRecordCollection.d.ts +104 -0
  200. package/datastore/useRecordCollection.d.ts.map +1 -0
  201. package/datastore/useRecordCollection.js +136 -0
  202. package/datastore/useRecordCollection.js.map +1 -0
  203. package/datastore/useRecordList.d.ts +66 -0
  204. package/datastore/useRecordList.d.ts.map +1 -0
  205. package/datastore/useRecordList.js +58 -0
  206. package/datastore/useRecordList.js.map +1 -0
  207. package/datastore/useUpdateRecord.d.ts +52 -0
  208. package/datastore/useUpdateRecord.d.ts.map +1 -0
  209. package/datastore/useUpdateRecord.js +55 -0
  210. package/datastore/useUpdateRecord.js.map +1 -0
  211. package/environment/EnvironmentListPanel.d.ts.map +1 -1
  212. package/environment/EnvironmentListPanel.js +12 -7
  213. package/environment/EnvironmentListPanel.js.map +1 -1
  214. package/execution/index.d.ts +1 -2
  215. package/execution/index.d.ts.map +1 -1
  216. package/execution/index.js +0 -1
  217. package/execution/index.js.map +1 -1
  218. package/execution/useLiveAgentExecution.d.ts +17 -1
  219. package/execution/useLiveAgentExecution.d.ts.map +1 -1
  220. package/execution/useLiveAgentExecution.js +19 -4
  221. package/execution/useLiveAgentExecution.js.map +1 -1
  222. package/iam-policy/index.d.ts +1 -1
  223. package/iam-policy/index.d.ts.map +1 -1
  224. package/iam-policy/index.js.map +1 -1
  225. package/iam-policy/useCheckPermission.d.ts +32 -11
  226. package/iam-policy/useCheckPermission.d.ts.map +1 -1
  227. package/iam-policy/useCheckPermission.js +24 -19
  228. package/iam-policy/useCheckPermission.js.map +1 -1
  229. package/index.d.ts +16 -10
  230. package/index.d.ts.map +1 -1
  231. package/index.js +16 -5
  232. package/index.js.map +1 -1
  233. package/internal/useInViewport.d.ts +24 -0
  234. package/internal/useInViewport.d.ts.map +1 -0
  235. package/internal/useInViewport.js +49 -0
  236. package/internal/useInViewport.js.map +1 -0
  237. package/library/VisibilitySelector.d.ts +22 -6
  238. package/library/VisibilitySelector.d.ts.map +1 -1
  239. package/library/VisibilitySelector.js +12 -4
  240. package/library/VisibilitySelector.js.map +1 -1
  241. package/library/index.d.ts +1 -8
  242. package/library/index.d.ts.map +1 -1
  243. package/library/index.js +0 -4
  244. package/library/index.js.map +1 -1
  245. package/library/useApplyResource.d.ts +12 -12
  246. package/library/useApplyResource.d.ts.map +1 -1
  247. package/library/useApplyResource.js +16 -25
  248. package/library/useApplyResource.js.map +1 -1
  249. package/library/useExportResource.d.ts +13 -9
  250. package/library/useExportResource.d.ts.map +1 -1
  251. package/library/useExportResource.js +18 -36
  252. package/library/useExportResource.js.map +1 -1
  253. package/manifest/ApplyManifestDialog.d.ts +48 -0
  254. package/manifest/ApplyManifestDialog.d.ts.map +1 -0
  255. package/manifest/ApplyManifestDialog.js +135 -0
  256. package/manifest/ApplyManifestDialog.js.map +1 -0
  257. package/manifest/EditResourceYamlDialog.d.ts +51 -0
  258. package/manifest/EditResourceYamlDialog.d.ts.map +1 -0
  259. package/manifest/EditResourceYamlDialog.js +104 -0
  260. package/manifest/EditResourceYamlDialog.js.map +1 -0
  261. package/manifest/RedactedSecretsNotice.d.ts +14 -0
  262. package/manifest/RedactedSecretsNotice.d.ts.map +1 -0
  263. package/manifest/RedactedSecretsNotice.js +14 -0
  264. package/manifest/RedactedSecretsNotice.js.map +1 -0
  265. package/manifest/YamlEditor.d.ts +44 -0
  266. package/manifest/YamlEditor.d.ts.map +1 -0
  267. package/manifest/YamlEditor.js +216 -0
  268. package/manifest/YamlEditor.js.map +1 -0
  269. package/manifest/index.d.ts +13 -0
  270. package/manifest/index.d.ts.map +1 -0
  271. package/manifest/index.js +13 -0
  272. package/manifest/index.js.map +1 -0
  273. package/manifest/useApplyManifest.d.ts +82 -0
  274. package/manifest/useApplyManifest.d.ts.map +1 -0
  275. package/manifest/useApplyManifest.js +180 -0
  276. package/manifest/useApplyManifest.js.map +1 -0
  277. package/manifest/useEditResourceYaml.d.ts +106 -0
  278. package/manifest/useEditResourceYaml.d.ts.map +1 -0
  279. package/manifest/useEditResourceYaml.js +168 -0
  280. package/manifest/useEditResourceYaml.js.map +1 -0
  281. package/mcp-server/McpServerDetailView.d.ts.map +1 -1
  282. package/mcp-server/McpServerDetailView.js +4 -3
  283. package/mcp-server/McpServerDetailView.js.map +1 -1
  284. package/mcp-server/steps/ReviewStep.d.ts.map +1 -1
  285. package/mcp-server/steps/ReviewStep.js +2 -3
  286. package/mcp-server/steps/ReviewStep.js.map +1 -1
  287. package/package.json +4 -4
  288. package/resource-creation/templates/workflow-templates.js +4 -4
  289. package/session/SessionViewer.js +8 -1
  290. package/session/SessionViewer.js.map +1 -1
  291. package/session/audience.d.ts +6 -1
  292. package/session/audience.d.ts.map +1 -1
  293. package/session/useEditSessionPrep.js +3 -3
  294. package/session/useEditSessionPrep.js.map +1 -1
  295. package/settings/index.d.ts +2 -1
  296. package/settings/index.d.ts.map +1 -1
  297. package/settings/index.js +2 -1
  298. package/settings/index.js.map +1 -1
  299. package/settings/settings-nav.d.ts +22 -0
  300. package/settings/settings-nav.d.ts.map +1 -1
  301. package/settings/settings-nav.js +32 -1
  302. package/settings/settings-nav.js.map +1 -1
  303. package/settings/useSettingsNavGroups.d.ts +29 -0
  304. package/settings/useSettingsNavGroups.d.ts.map +1 -0
  305. package/settings/useSettingsNavGroups.js +61 -0
  306. package/settings/useSettingsNavGroups.js.map +1 -0
  307. package/skill/SkillDetailView.d.ts.map +1 -1
  308. package/skill/SkillDetailView.js +4 -3
  309. package/skill/SkillDetailView.js.map +1 -1
  310. package/src/access/__tests__/useManageAccess.test.tsx +104 -0
  311. package/src/agent/AgentDetailView.tsx +9 -3
  312. package/src/agent/steps/ReviewStep.tsx +2 -3
  313. package/src/billing/BaselineEditor.tsx +619 -0
  314. package/src/billing/ModelCatalogPanel.tsx +283 -0
  315. package/src/billing/ModelGovernanceDetail.tsx +289 -0
  316. package/src/billing/OperatorAccessNotice.tsx +32 -0
  317. package/src/billing/PricingGovernanceConsole.tsx +465 -0
  318. package/src/billing/PricingGovernancePanel.tsx +166 -0
  319. package/src/billing/RetireConfirm.tsx +82 -0
  320. package/src/billing/__tests__/ModelCatalogPanel.test.tsx +253 -0
  321. package/src/billing/__tests__/PricingGovernanceConsole.test.tsx +410 -0
  322. package/src/billing/__tests__/useModelGovernanceView.test.tsx +308 -0
  323. package/src/billing/form-primitives.tsx +68 -0
  324. package/src/billing/governance-primitives.tsx +133 -0
  325. package/src/billing/index.ts +37 -0
  326. package/src/billing/pricing-format.ts +53 -0
  327. package/src/billing/useDecidePricingOverride.ts +78 -0
  328. package/src/billing/useModelGovernanceView.ts +290 -0
  329. package/src/billing/useModelPricingBaselines.ts +69 -0
  330. package/src/billing/usePricingGovernance.ts +57 -0
  331. package/src/billing/useRetireModelPricingBaseline.ts +65 -0
  332. package/src/billing/useUpsertModelPricingBaseline.ts +72 -0
  333. package/src/channel/AgentChannelsPanel.tsx +27 -1
  334. package/src/composer/SessionComposer.tsx +1 -1
  335. package/src/cursor-accounts/CursorAccountEditor.tsx +181 -0
  336. package/src/cursor-accounts/CursorAccountsAccessNotice.tsx +36 -0
  337. package/src/cursor-accounts/CursorAccountsConsole.tsx +810 -0
  338. package/src/cursor-accounts/__tests__/CursorAccountsConsole.test.tsx +384 -0
  339. package/src/cursor-accounts/cursor-account-format.ts +29 -0
  340. package/src/cursor-accounts/index.ts +29 -0
  341. package/src/cursor-accounts/useCursorAccountView.ts +49 -0
  342. package/src/cursor-accounts/useCursorAccounts.ts +49 -0
  343. package/src/cursor-accounts/useCursorMemberKeyActions.ts +106 -0
  344. package/src/cursor-accounts/useDeleteCursorAccount.ts +62 -0
  345. package/src/cursor-accounts/useSyncCursorAccount.ts +54 -0
  346. package/src/cursor-accounts/useUpsertCursorAccount.ts +57 -0
  347. package/src/datastore/CollectionRecordsBrowser.tsx +544 -0
  348. package/src/datastore/CollectionSchemaView.tsx +247 -0
  349. package/src/datastore/DatastoreDetailView.tsx +201 -0
  350. package/src/datastore/DatastoreSyncReport.tsx +105 -0
  351. package/src/datastore/DeleteDatastoreDialog.tsx +202 -0
  352. package/src/datastore/FieldValueControl.tsx +289 -0
  353. package/src/datastore/RecordFilterBuilder.tsx +411 -0
  354. package/src/datastore/RecordFormPanel.tsx +432 -0
  355. package/src/datastore/__tests__/CollectionRecordsBrowser.test.tsx +207 -0
  356. package/src/datastore/__tests__/DeleteDatastoreDialog.test.tsx +133 -0
  357. package/src/datastore/__tests__/FieldValueControl.test.tsx +160 -0
  358. package/src/datastore/__tests__/RecordFilterBuilder.test.tsx +141 -0
  359. package/src/datastore/__tests__/RecordFormPanel.test.tsx +227 -0
  360. package/src/datastore/__tests__/recordFilter.test.ts +156 -0
  361. package/src/datastore/__tests__/recordMutations.test.tsx +195 -0
  362. package/src/datastore/__tests__/recordValues.test.ts +359 -0
  363. package/src/datastore/__tests__/schemaAndSyncViews.test.tsx +142 -0
  364. package/src/datastore/__tests__/useDatastoreDescription.test.tsx +143 -0
  365. package/src/datastore/__tests__/useRecordCollection.test.tsx +250 -0
  366. package/src/datastore/__tests__/useRecordList.test.tsx +85 -0
  367. package/src/datastore/index.ts +111 -0
  368. package/src/datastore/recordFilter.ts +140 -0
  369. package/src/datastore/recordValues.ts +327 -0
  370. package/src/datastore/useDatastore.ts +67 -0
  371. package/src/datastore/useDatastoreCount.ts +67 -0
  372. package/src/datastore/useDatastoreDescription.ts +90 -0
  373. package/src/datastore/useDatastoreList.ts +79 -0
  374. package/src/datastore/useDatastoreSearch.ts +39 -0
  375. package/src/datastore/useDeleteDatastore.ts +87 -0
  376. package/src/datastore/useDeleteRecord.ts +77 -0
  377. package/src/datastore/useInsertRecord.ts +92 -0
  378. package/src/datastore/useRecordCollection.ts +256 -0
  379. package/src/datastore/useRecordList.ts +131 -0
  380. package/src/datastore/useUpdateRecord.ts +95 -0
  381. package/src/environment/EnvironmentListPanel.tsx +24 -0
  382. package/src/execution/__tests__/useArtifactInspection.test.tsx +12 -2
  383. package/src/execution/__tests__/useLiveAgentExecution.test.tsx +125 -0
  384. package/src/execution/index.ts +4 -7
  385. package/src/execution/useLiveAgentExecution.ts +41 -3
  386. package/src/iam-policy/__tests__/useCheckPermission.test.tsx +221 -0
  387. package/src/iam-policy/index.ts +1 -0
  388. package/src/iam-policy/useCheckPermission.ts +45 -19
  389. package/src/index.ts +167 -18
  390. package/src/internal/__tests__/useInViewport.test.tsx +115 -0
  391. package/src/internal/useInViewport.ts +63 -0
  392. package/src/library/VisibilitySelector.tsx +50 -9
  393. package/src/library/__tests__/VisibilitySelector.test.tsx +38 -0
  394. package/src/library/index.ts +4 -21
  395. package/src/library/useApplyResource.ts +27 -34
  396. package/src/library/useExportResource.ts +21 -40
  397. package/src/manifest/ApplyManifestDialog.tsx +315 -0
  398. package/src/manifest/EditResourceYamlDialog.tsx +265 -0
  399. package/src/manifest/RedactedSecretsNotice.tsx +30 -0
  400. package/src/manifest/YamlEditor.tsx +272 -0
  401. package/src/manifest/__tests__/EditResourceYamlDialog.test.tsx +118 -0
  402. package/src/manifest/__tests__/useApplyManifest.test.tsx +237 -0
  403. package/src/manifest/__tests__/useEditResourceYaml.test.tsx +252 -0
  404. package/src/manifest/index.ts +33 -0
  405. package/src/manifest/useApplyManifest.ts +270 -0
  406. package/src/manifest/useEditResourceYaml.ts +273 -0
  407. package/src/mcp-server/McpServerDetailView.tsx +7 -3
  408. package/src/mcp-server/steps/ReviewStep.tsx +2 -3
  409. package/src/resource-creation/templates/workflow-templates.ts +4 -4
  410. package/src/session/SessionViewer.tsx +7 -1
  411. package/src/session/__tests__/audienceWiring.test.tsx +31 -1
  412. package/src/session/audience.ts +6 -1
  413. package/src/session/useEditSessionPrep.ts +3 -3
  414. package/src/settings/__tests__/useSettingsNavGroups.test.tsx +138 -0
  415. package/src/settings/index.ts +5 -1
  416. package/src/settings/settings-nav.ts +43 -0
  417. package/src/settings/useSettingsNavGroups.ts +81 -0
  418. package/src/skill/SkillDetailView.tsx +7 -3
  419. package/src/workflow/WorkflowAgentCallTranscript.tsx +279 -0
  420. package/src/workflow/WorkflowDetailView.tsx +7 -3
  421. package/src/workflow/WorkflowExecutionViewer.tsx +20 -77
  422. package/src/workflow/WorkflowTaskApprovalSummary.tsx +45 -8
  423. package/src/workflow/WorkflowYamlEditor.tsx +6 -270
  424. package/src/workflow/__tests__/WorkflowAgentCallTranscript.liveregion.test.tsx +124 -0
  425. package/src/workflow/__tests__/{WorkflowAgentExecutionDocument.test.tsx → WorkflowAgentCallTranscript.test.tsx} +146 -121
  426. package/src/workflow/__tests__/WorkflowExecutionViewer.approvals.test.tsx +81 -220
  427. package/src/workflow/__tests__/WorkflowExecutionViewer.reconciliation.test.tsx +17 -16
  428. package/src/workflow/__tests__/WorkflowTaskApprovalSummary.test.tsx +52 -2
  429. package/src/workflow/__tests__/WorkflowTaskThread.test.tsx +168 -185
  430. package/src/workflow/__tests__/agent-call-live-experience.test.ts +4 -4
  431. package/src/workflow/__tests__/task-approval.test.ts +119 -0
  432. package/src/workflow/__tests__/task-presentation.test.ts +35 -1
  433. package/src/workflow/__tests__/useWorkflowExecutionPanel.test.ts +0 -57
  434. package/src/workflow/index.ts +6 -3
  435. package/src/workflow/task-detail/index.ts +3 -0
  436. package/src/workflow/task-detail/task-approval.ts +95 -1
  437. package/src/workflow/thread/WorkflowTaskThread.tsx +96 -252
  438. package/src/workflow/thread/task-presentation.ts +8 -2
  439. package/src/workflow/useWorkflowExecutionPanel.ts +0 -47
  440. package/styles.css +1 -1
  441. package/workflow/CanvasTransitionEdge.d.ts +1 -1
  442. package/workflow/WorkflowAgentCallTranscript.d.ts +87 -0
  443. package/workflow/WorkflowAgentCallTranscript.d.ts.map +1 -0
  444. package/workflow/WorkflowAgentCallTranscript.js +98 -0
  445. package/workflow/WorkflowAgentCallTranscript.js.map +1 -0
  446. package/workflow/WorkflowDetailView.d.ts.map +1 -1
  447. package/workflow/WorkflowDetailView.js +4 -3
  448. package/workflow/WorkflowDetailView.js.map +1 -1
  449. package/workflow/WorkflowExecutionViewer.d.ts.map +1 -1
  450. package/workflow/WorkflowExecutionViewer.js +23 -52
  451. package/workflow/WorkflowExecutionViewer.js.map +1 -1
  452. package/workflow/WorkflowTaskApprovalSummary.d.ts +1 -1
  453. package/workflow/WorkflowTaskApprovalSummary.d.ts.map +1 -1
  454. package/workflow/WorkflowTaskApprovalSummary.js +18 -1
  455. package/workflow/WorkflowTaskApprovalSummary.js.map +1 -1
  456. package/workflow/WorkflowYamlEditor.d.ts +2 -42
  457. package/workflow/WorkflowYamlEditor.d.ts.map +1 -1
  458. package/workflow/WorkflowYamlEditor.js +5 -214
  459. package/workflow/WorkflowYamlEditor.js.map +1 -1
  460. package/workflow/index.d.ts +2 -2
  461. package/workflow/index.d.ts.map +1 -1
  462. package/workflow/index.js +2 -2
  463. package/workflow/index.js.map +1 -1
  464. package/workflow/task-detail/index.d.ts +1 -1
  465. package/workflow/task-detail/index.d.ts.map +1 -1
  466. package/workflow/task-detail/index.js +1 -1
  467. package/workflow/task-detail/index.js.map +1 -1
  468. package/workflow/task-detail/task-approval.d.ts +44 -1
  469. package/workflow/task-detail/task-approval.d.ts.map +1 -1
  470. package/workflow/task-detail/task-approval.js +47 -0
  471. package/workflow/task-detail/task-approval.js.map +1 -1
  472. package/workflow/thread/WorkflowTaskThread.d.ts +17 -25
  473. package/workflow/thread/WorkflowTaskThread.d.ts.map +1 -1
  474. package/workflow/thread/WorkflowTaskThread.js +60 -105
  475. package/workflow/thread/WorkflowTaskThread.js.map +1 -1
  476. package/workflow/thread/task-presentation.d.ts.map +1 -1
  477. package/workflow/thread/task-presentation.js +7 -2
  478. package/workflow/thread/task-presentation.js.map +1 -1
  479. package/workflow/useWorkflowExecutionPanel.d.ts +0 -12
  480. package/workflow/useWorkflowExecutionPanel.d.ts.map +1 -1
  481. package/workflow/useWorkflowExecutionPanel.js +0 -12
  482. package/workflow/useWorkflowExecutionPanel.js.map +1 -1
  483. package/execution/agent-execution-document.d.ts +0 -31
  484. package/execution/agent-execution-document.d.ts.map +0 -1
  485. package/execution/agent-execution-document.js +0 -48
  486. package/execution/agent-execution-document.js.map +0 -1
  487. package/library/ImportResourceDialog.d.ts +0 -43
  488. package/library/ImportResourceDialog.d.ts.map +0 -1
  489. package/library/ImportResourceDialog.js +0 -90
  490. package/library/ImportResourceDialog.js.map +0 -1
  491. package/library/parse-resource-yaml.d.ts +0 -63
  492. package/library/parse-resource-yaml.d.ts.map +0 -1
  493. package/library/parse-resource-yaml.js +0 -407
  494. package/library/parse-resource-yaml.js.map +0 -1
  495. package/library/serialize-resource-yaml.d.ts +0 -103
  496. package/library/serialize-resource-yaml.d.ts.map +0 -1
  497. package/library/serialize-resource-yaml.js +0 -565
  498. package/library/serialize-resource-yaml.js.map +0 -1
  499. package/library/useImportResource.d.ts +0 -84
  500. package/library/useImportResource.d.ts.map +0 -1
  501. package/library/useImportResource.js +0 -188
  502. package/library/useImportResource.js.map +0 -1
  503. package/src/execution/__tests__/agent-execution-document.test.ts +0 -45
  504. package/src/execution/agent-execution-document.ts +0 -54
  505. package/src/library/ImportResourceDialog.tsx +0 -227
  506. package/src/library/parse-resource-yaml.ts +0 -630
  507. package/src/library/serialize-resource-yaml.ts +0 -756
  508. package/src/library/useImportResource.ts +0 -253
  509. package/src/workflow/WorkflowAgentExecutionDocument.tsx +0 -283
  510. package/workflow/WorkflowAgentExecutionDocument.d.ts +0 -79
  511. package/workflow/WorkflowAgentExecutionDocument.d.ts.map +0 -1
  512. package/workflow/WorkflowAgentExecutionDocument.js +0 -87
  513. package/workflow/WorkflowAgentExecutionDocument.js.map +0 -1
@@ -1,188 +0,0 @@
1
- "use client";
2
- import { useCallback, useMemo, useRef, useState } from "react";
3
- import { stringify as stringifyYaml } from "yaml";
4
- import { useStigmer } from "../hooks.js";
5
- import { toError } from "../internal/toError.js";
6
- import { parseResourceYaml } from "./parse-resource-yaml.js";
7
- // ---------------------------------------------------------------------------
8
- // Hook
9
- // ---------------------------------------------------------------------------
10
- /**
11
- * Headless import hook for Stigmer resources.
12
- *
13
- * Orchestrates the file import workflow:
14
- * 1. User selects a `.yaml`, `.yml`, or `.json` file
15
- * 2. `readFile` reads the content, detects the format, and validates
16
- * the structure via `parseResourceYaml`
17
- * 3. On success, `preview` is populated with kind, name, slug, format
18
- * 4. On validation error, `error` is populated with a user-facing message
19
- * 5. User confirms → `apply(org)` calls the appropriate SDK `apply()` method
20
- *
21
- * Follows the established mutation-hook pattern: `isApplying` + `error` +
22
- * `reset`. The `preview` state enables a confirmation step before committing
23
- * (Nielsen heuristic #3: user control, #5: error prevention).
24
- *
25
- * @example
26
- * ```tsx
27
- * const { readFile, preview, error, reset, apply, isApplying } = useImportResource();
28
- *
29
- * const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {
30
- * const file = e.target.files?.[0];
31
- * if (file) readFile(file);
32
- * };
33
- *
34
- * if (preview) {
35
- * return (
36
- * <div>
37
- * <p>Import {preview.kind}: {preview.name}</p>
38
- * <button onClick={() => apply(org)} disabled={isApplying}>
39
- * Confirm
40
- * </button>
41
- * </div>
42
- * );
43
- * }
44
- * ```
45
- *
46
- * @see {@link parseResourceYaml} for the validation logic
47
- * @see {@link ImportResourceDialog} for the styled component that composes this hook
48
- */
49
- export function useImportResource() {
50
- const stigmer = useStigmer();
51
- const [preview, setPreview] = useState(null);
52
- const [error, setError] = useState(null);
53
- const [isApplying, setIsApplying] = useState(false);
54
- const contentRef = useRef(null);
55
- const parsedRef = useRef(null);
56
- const reset = useCallback(() => {
57
- setPreview(null);
58
- setError(null);
59
- setIsApplying(false);
60
- contentRef.current = null;
61
- parsedRef.current = null;
62
- }, []);
63
- const readFile = useCallback(async (file) => {
64
- setPreview(null);
65
- setError(null);
66
- contentRef.current = null;
67
- parsedRef.current = null;
68
- let text;
69
- try {
70
- text = await file.text();
71
- }
72
- catch {
73
- setError("Failed to read the selected file.");
74
- return;
75
- }
76
- if (!text.trim()) {
77
- setError("The selected file is empty.");
78
- return;
79
- }
80
- const format = detectFormat(file.name, text);
81
- // For JSON files, convert to YAML-parseable content first.
82
- // parseResourceYaml expects YAML, but since YAML is a superset of JSON,
83
- // we can pass JSON directly. However for cleaner error messages, we
84
- // normalize JSON → plain object → YAML string if needed.
85
- let yamlContent;
86
- if (format === "json") {
87
- try {
88
- const parsed = JSON.parse(text);
89
- if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
90
- setError("JSON file must contain a single object (not an array or primitive).");
91
- return;
92
- }
93
- yamlContent = stringifyYaml(parsed);
94
- }
95
- catch {
96
- setError("The file does not contain valid JSON.");
97
- return;
98
- }
99
- }
100
- else {
101
- yamlContent = text;
102
- }
103
- // Validate structure using the existing parser. We use a dummy org
104
- // here — the real org is provided at apply time.
105
- let parsed;
106
- try {
107
- parsed = parseResourceYaml(yamlContent, "__preview__");
108
- }
109
- catch (err) {
110
- setError(err instanceof Error ? err.message : "Failed to validate resource file.");
111
- return;
112
- }
113
- contentRef.current = yamlContent;
114
- parsedRef.current = parsed;
115
- setPreview({
116
- kind: parsed.kind,
117
- name: parsed.input.name,
118
- slug: "slug" in parsed.input ? parsed.input.slug : undefined,
119
- format,
120
- rawContent: text,
121
- });
122
- }, []);
123
- const apply = useCallback(async (org) => {
124
- const content = contentRef.current;
125
- if (!content) {
126
- throw new Error("No file has been validated. Call readFile first.");
127
- }
128
- setIsApplying(true);
129
- setError(null);
130
- try {
131
- const parsed = parseResourceYaml(content, org);
132
- switch (parsed.kind) {
133
- case "Agent": {
134
- const agent = await stigmer.agent.apply(parsed.input);
135
- return {
136
- kind: "Agent",
137
- name: agent.metadata?.name ?? parsed.input.name,
138
- org: agent.metadata?.org ?? org,
139
- slug: agent.metadata?.slug ?? parsed.input.name,
140
- };
141
- }
142
- case "McpServer": {
143
- const mcpServer = await stigmer.mcpServer.apply(parsed.input);
144
- return {
145
- kind: "McpServer",
146
- name: mcpServer.metadata?.name ?? parsed.input.name,
147
- org: mcpServer.metadata?.org ?? org,
148
- slug: mcpServer.metadata?.slug ?? parsed.input.name,
149
- };
150
- }
151
- }
152
- }
153
- catch (err) {
154
- const message = toError(err).message;
155
- setError(message);
156
- throw err;
157
- }
158
- finally {
159
- setIsApplying(false);
160
- }
161
- }, [stigmer]);
162
- return useMemo(() => ({ readFile, preview, error, reset, apply, isApplying }), [readFile, preview, error, reset, apply, isApplying]);
163
- }
164
- // ---------------------------------------------------------------------------
165
- // Format detection
166
- // ---------------------------------------------------------------------------
167
- const JSON_EXTENSIONS = new Set([".json"]);
168
- const YAML_EXTENSIONS = new Set([".yaml", ".yml"]);
169
- function detectFormat(filename, content) {
170
- const lowerName = filename.toLowerCase();
171
- const dotIndex = lowerName.lastIndexOf(".");
172
- if (dotIndex >= 0) {
173
- const ext = lowerName.slice(dotIndex);
174
- if (JSON_EXTENSIONS.has(ext))
175
- return "json";
176
- if (YAML_EXTENSIONS.has(ext))
177
- return "yaml";
178
- }
179
- // Fallback: try parsing as JSON. If it parses, treat as JSON.
180
- try {
181
- JSON.parse(content);
182
- return "json";
183
- }
184
- catch {
185
- return "yaml";
186
- }
187
- }
188
- //# sourceMappingURL=useImportResource.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useImportResource.js","sourceRoot":"","sources":["../../src/library/useImportResource.ts"],"names":[],"mappings":"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"}
@@ -1,45 +0,0 @@
1
- import { describe, it, expect } from "vitest";
2
- import {
3
- AGENT_EXECUTION_DOCUMENT_ENTRY_ID,
4
- agentExecutionTabPath,
5
- parseAgentExecutionTabPath,
6
- } from "../agent-execution-document";
7
- import { ARTIFACT_DOCUMENT_ENTRY_ID } from "../artifact-document";
8
- import { FILE_CHANGE_DOCUMENT_ENTRY_ID } from "../file-change-document";
9
-
10
- describe("agent-execution-document identity", () => {
11
- it("has a distinct family id from the other virtual-document families", () => {
12
- expect(AGENT_EXECUTION_DOCUMENT_ENTRY_ID).not.toBe(ARTIFACT_DOCUMENT_ENTRY_ID);
13
- expect(AGENT_EXECUTION_DOCUMENT_ENTRY_ID).not.toBe(FILE_CHANGE_DOCUMENT_ENTRY_ID);
14
- // NUL-namespaced so it can never alias a real workspace entry id.
15
- expect(AGENT_EXECUTION_DOCUMENT_ENTRY_ID.startsWith("\u0000")).toBe(true);
16
- });
17
-
18
- it("labels the tab with the task name (path basename)", () => {
19
- const path = agentExecutionTabPath("aex_abc123", "summarize-report");
20
- expect(path).toBe("aex_abc123/summarize-report");
21
- expect(path.split("/").pop()).toBe("summarize-report");
22
- });
23
-
24
- it("round-trips the child execution id", () => {
25
- const path = agentExecutionTabPath("aex_abc123", "summarize-report");
26
- expect(parseAgentExecutionTabPath(path)).toBe("aex_abc123");
27
- });
28
-
29
- it("round-trips the id when the task name itself contains a separator", () => {
30
- const path = agentExecutionTabPath("aex_abc123", "stage/publish");
31
- expect(parseAgentExecutionTabPath(path)).toBe("aex_abc123");
32
- });
33
-
34
- it("keeps two calls to the same agent distinct (per-child identity)", () => {
35
- const first = agentExecutionTabPath("aex_1", "call-agent");
36
- const second = agentExecutionTabPath("aex_2", "call-agent");
37
- expect(first).not.toBe(second);
38
- expect(parseAgentExecutionTabPath(first)).toBe("aex_1");
39
- expect(parseAgentExecutionTabPath(second)).toBe("aex_2");
40
- });
41
-
42
- it("degrades to the whole path when no separator is present", () => {
43
- expect(parseAgentExecutionTabPath("aex_bare")).toBe("aex_bare");
44
- });
45
- });
@@ -1,54 +0,0 @@
1
- // Identity of agent-execution transcript tabs in the workspace surface's
2
- // editor group. Domain: execution (the transcript renderer and the
3
- // AgentExecution data model are execution-domain; the workflow panel is the
4
- // first host, and a future session-side consumer — e.g. sub-agent expansion —
5
- // would share this identity rather than minting a divergent one).
6
- //
7
- // Kept in its own module (not in a component file) so behavior-only
8
- // consumers — the panel controller opens the tabs, the viewer routes them —
9
- // depend on the identity without pulling the transcript renderer into their
10
- // module graph (DD-003 headless-first). Mirrors artifact-document.ts and
11
- // file-change-document.ts.
12
-
13
- import { virtualEntryId } from "../internal/store/index.js";
14
-
15
- /**
16
- * Virtual entry id of the agent-execution transcript document FAMILY. Like
17
- * artifacts and file changes (and unlike the session's single plan tab),
18
- * transcripts are many: every opened child AgentExecution shares this one
19
- * entry id and is distinguished by its id-derived tab path, so
20
- * `editorKey(AGENT_EXECUTION_DOCUMENT_ENTRY_ID, path)` yields one tab per
21
- * child execution — the VS Code "each file is a tab" model. The
22
- * NUL-namespaced virtual id can never alias a real workspace entry, and its
23
- * distinct `"agentexec"` kind can never collide with the
24
- * `"artifact"`/`"filechange"`/`"plan"` families.
25
- */
26
- export const AGENT_EXECUTION_DOCUMENT_ENTRY_ID = virtualEntryId("agentexec");
27
-
28
- /**
29
- * The identity of a child AgentExecution's transcript tab within the family.
30
- *
31
- * The path deliberately CARRIES the child execution id (unlike artifact tabs,
32
- * which need an owner-level record map to resolve content): a transcript
33
- * needs only the id to fetch/stream itself, so the viewer parses it straight
34
- * back out with {@link parseAgentExecutionTabPath} — no lookup map to keep in
35
- * sync. The suffix is the AGENT_CALL task name because the editor tab's LABEL
36
- * is the path's basename: the task name correlates the tab with the DAG node
37
- * the user opened it from, and keeps two calls to the same agent distinct.
38
- */
39
- export function agentExecutionTabPath(
40
- childExecutionId: string,
41
- taskName: string,
42
- ): string {
43
- return `${childExecutionId}/${taskName}`;
44
- }
45
-
46
- /**
47
- * Recovers the child execution id from a transcript tab's path — the inverse
48
- * of {@link agentExecutionTabPath}. Splits on the FIRST separator: execution
49
- * ids never contain `/`, so a task name that does still round-trips.
50
- */
51
- export function parseAgentExecutionTabPath(path: string): string {
52
- const separator = path.indexOf("/");
53
- return separator === -1 ? path : path.slice(0, separator);
54
- }
@@ -1,227 +0,0 @@
1
- "use client";
2
-
3
- import { useCallback, useEffect, useRef } from "react";
4
- import { cn } from "@stigmer/theme";
5
- import { toast } from "../feedback/toast.js";
6
- import { useImportResource } from "./useImportResource.js";
7
- import type { ApplyResourceResult } from "./useApplyResource.js";
8
-
9
- // ---------------------------------------------------------------------------
10
- // Props
11
- // ---------------------------------------------------------------------------
12
-
13
- /** Props for {@link ImportResourceDialog}. */
14
- export interface ImportResourceDialogProps {
15
- /** Whether the dialog is open. */
16
- readonly open: boolean;
17
- /** Called when the dialog should open or close. */
18
- readonly onOpenChange: (open: boolean) => void;
19
- /** Target organization slug to apply the imported resource to. */
20
- readonly org: string;
21
- /** Called after a successful import. Use for navigation or list refresh. */
22
- readonly onSuccess?: (result: ApplyResourceResult) => void;
23
- }
24
-
25
- // ---------------------------------------------------------------------------
26
- // Component
27
- // ---------------------------------------------------------------------------
28
-
29
- /**
30
- * Modal dialog for importing a Stigmer resource from a YAML or JSON file.
31
- *
32
- * Workflow:
33
- * 1. User selects a `.yaml`, `.yml`, or `.json` file via the file picker
34
- * 2. The file is validated and a preview card shows the detected resource
35
- * 3. User confirms the import, which calls `apply()` on the target org
36
- * 4. On success: toast notification and `onSuccess` callback
37
- * 5. On error: inline error message with guidance
38
- *
39
- * Uses the native `<dialog>` element for built-in focus trapping, Escape
40
- * key handling, and backdrop — consistent with {@link ConfirmDialog}.
41
- *
42
- * Zero Console dependencies — safe for platform builder embedding.
43
- *
44
- * @example
45
- * ```tsx
46
- * const [open, setOpen] = useState(false);
47
- *
48
- * <ImportResourceDialog
49
- * open={open}
50
- * onOpenChange={setOpen}
51
- * org={activeOrg}
52
- * onSuccess={(result) => {
53
- * router.push(`/library/${result.kind === "Agent" ? "agents" : "mcp-servers"}`);
54
- * }}
55
- * />
56
- * ```
57
- */
58
- export function ImportResourceDialog({
59
- open,
60
- onOpenChange,
61
- org,
62
- onSuccess,
63
- }: ImportResourceDialogProps) {
64
- const dialogRef = useRef<HTMLDialogElement>(null);
65
- const fileInputRef = useRef<HTMLInputElement>(null);
66
- const { readFile, preview, error, reset, apply, isApplying } = useImportResource();
67
-
68
- // Sync dialog open state with the native <dialog> element.
69
- useEffect(() => {
70
- const dialog = dialogRef.current;
71
- if (!dialog) return;
72
- if (open && !dialog.open) {
73
- dialog.showModal();
74
- } else if (!open && dialog.open) {
75
- dialog.close();
76
- }
77
- }, [open]);
78
-
79
- // Reset state when the dialog opens.
80
- useEffect(() => {
81
- if (open) {
82
- reset();
83
- if (fileInputRef.current) {
84
- fileInputRef.current.value = "";
85
- }
86
- }
87
- }, [open, reset]);
88
-
89
- const handleCancel = useCallback(
90
- (e: React.SyntheticEvent) => {
91
- e.preventDefault();
92
- onOpenChange(false);
93
- },
94
- [onOpenChange],
95
- );
96
-
97
- const handleClose = useCallback(() => {
98
- onOpenChange(false);
99
- }, [onOpenChange]);
100
-
101
- const handleFileChange = useCallback(
102
- (e: React.ChangeEvent<HTMLInputElement>) => {
103
- const file = e.target.files?.[0];
104
- if (file) {
105
- readFile(file);
106
- }
107
- },
108
- [readFile],
109
- );
110
-
111
- const handleConfirm = useCallback(async () => {
112
- try {
113
- const result = await apply(org);
114
- toast.success(`${result.kind === "Agent" ? "Agent" : "MCP Server"} "${result.name}" imported successfully`);
115
- onOpenChange(false);
116
- onSuccess?.(result);
117
- } catch {
118
- // error is set by the hook
119
- }
120
- }, [apply, org, onOpenChange, onSuccess]);
121
-
122
- return (
123
- <dialog
124
- ref={dialogRef}
125
- onCancel={handleCancel}
126
- className={cn(
127
- "fixed inset-0 z-50 m-auto w-full max-w-md rounded-lg border border-border bg-popover p-0 text-popover-foreground shadow-lg",
128
- "backdrop:bg-black/50",
129
- "open:animate-in open:fade-in-0 open:zoom-in-95",
130
- )}
131
- >
132
- <div className="flex flex-col gap-5 p-6">
133
- {/* Header */}
134
- <div className="flex flex-col gap-1">
135
- <h3 className="text-base font-semibold text-foreground">
136
- Import resource
137
- </h3>
138
- <p className="text-sm text-muted-foreground">
139
- Select a YAML or JSON file containing a Stigmer Agent or MCP Server definition.
140
- </p>
141
- </div>
142
-
143
- {/* File picker */}
144
- <div>
145
- <input
146
- ref={fileInputRef}
147
- type="file"
148
- accept=".yaml,.yml,.json"
149
- onChange={handleFileChange}
150
- className={cn(
151
- "w-full rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground",
152
- "file:mr-3 file:rounded-md file:border-0 file:bg-primary file:px-2.5 file:py-1 file:text-xs file:font-medium file:text-primary-foreground",
153
- "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
154
- )}
155
- aria-label="Select resource file"
156
- />
157
- </div>
158
-
159
- {/* Validation error */}
160
- {error && (
161
- <div
162
- role="alert"
163
- className="rounded-md border border-destructive bg-card px-3 py-2.5 text-sm text-destructive"
164
- >
165
- {error}
166
- </div>
167
- )}
168
-
169
- {/* Preview card */}
170
- {preview && !error && (
171
- <div className="rounded-md border border-border bg-card px-4 py-3">
172
- <div className="flex items-center gap-2">
173
- <span className="inline-flex rounded bg-muted px-1.5 py-0.5 text-xs font-medium text-muted-foreground">
174
- {preview.kind === "Agent" ? "Agent" : "MCP Server"}
175
- </span>
176
- <span className="inline-flex rounded bg-muted px-1.5 py-0.5 text-xs text-muted-foreground uppercase">
177
- {preview.format}
178
- </span>
179
- </div>
180
- <p className="mt-1.5 text-sm font-medium text-foreground">
181
- {preview.name}
182
- </p>
183
- {preview.slug && preview.slug !== preview.name && (
184
- <p className="mt-0.5 text-xs text-muted-foreground">
185
- {preview.slug}
186
- </p>
187
- )}
188
- <p className="mt-1.5 text-xs text-muted-foreground">
189
- Will be applied to <span className="font-medium text-foreground">{org}</span>
190
- </p>
191
- </div>
192
- )}
193
-
194
- {/* Actions */}
195
- <div className="flex justify-end gap-2">
196
- <button
197
- type="button"
198
- onClick={handleClose}
199
- disabled={isApplying}
200
- className={cn(
201
- "rounded-md px-3 py-1.5 text-sm font-medium transition-colors",
202
- "border border-input bg-background text-foreground",
203
- "hover:bg-accent hover:text-accent-foreground",
204
- "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
205
- "disabled:pointer-events-none disabled:opacity-50",
206
- )}
207
- >
208
- Cancel
209
- </button>
210
- <button
211
- type="button"
212
- onClick={handleConfirm}
213
- disabled={!preview || !!error || isApplying}
214
- className={cn(
215
- "rounded-md px-3 py-1.5 text-sm font-medium transition-colors",
216
- "bg-primary text-primary-foreground hover:bg-primary-hover",
217
- "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
218
- "disabled:pointer-events-none disabled:opacity-50",
219
- )}
220
- >
221
- {isApplying ? "Importing\u2026" : "Import"}
222
- </button>
223
- </div>
224
- </div>
225
- </dialog>
226
- );
227
- }