@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
@@ -0,0 +1,215 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useCallback, useEffect, useId, useMemo, useRef, useState } from "react";
4
+ import { cn } from "@stigmer/theme";
5
+ import { timestampDate } from "@bufbuild/protobuf/wkt";
6
+ import { getRecordConstraint, getUserMessage } from "@stigmer/sdk";
7
+ import { FieldValueControl } from "./FieldValueControl.js";
8
+ import { buildUpdateFields, coerceFieldValue, formatSystemTimestamp, } from "./recordValues.js";
9
+ import { formatSubject } from "./CollectionSchemaView.js";
10
+ import { useInsertRecord } from "./useInsertRecord.js";
11
+ import { useUpdateRecord } from "./useUpdateRecord.js";
12
+ /**
13
+ * The record write surface (DD-008 SD-4): one schema-generated panel
14
+ * form serving insert and edit, with typed controls dispatched from
15
+ * `FieldDeclaration`.
16
+ *
17
+ * - **Insert** submits every field the operator set; required fields
18
+ * gate the submit (error prevention — the server remains the
19
+ * enforcer).
20
+ * - **Edit** submits a **partial merge**: only dirty fields travel, and
21
+ * the per-field clear affordance sends an explicit `null` — the form
22
+ * is honest about the RPC's tri-state. System fields render read-only
23
+ * and never travel.
24
+ * - **Errors replay the DD-002/DD-005 contract for humans**: a
25
+ * constraint violation renders the declared message **verbatim** —
26
+ * field-adjacent when the `ErrorInfo` constraint name maps through
27
+ * the spec to declared fields (unique constraints), as a form-level
28
+ * banner otherwise. The console operator and the WhatsApp patient
29
+ * read the same bytes.
30
+ *
31
+ * All visual properties flow through `--stgm-*` design tokens.
32
+ * Zero Console dependencies — safe for platform builder embedding.
33
+ */
34
+ export function RecordFormPanel({ open, onOpenChange, scope, collection, record, onSaved, }) {
35
+ const dialogRef = useRef(null);
36
+ const isEdit = record != null;
37
+ const insert = useInsertRecord();
38
+ const update = useUpdateRecord();
39
+ const isSaving = insert.isInserting || update.isUpdating;
40
+ const [edits, setEdits] = useState(new Map());
41
+ const [fieldErrors, setFieldErrors] = useState(new Map());
42
+ const [bannerError, setBannerError] = useState(null);
43
+ // Reset form state whenever the panel opens (fresh draft per open).
44
+ // Deps narrowed to the stable clearError callbacks (DD-010).
45
+ const clearInsertError = insert.clearError;
46
+ const clearUpdateError = update.clearError;
47
+ useEffect(() => {
48
+ if (open) {
49
+ setEdits(new Map());
50
+ setFieldErrors(new Map());
51
+ setBannerError(null);
52
+ clearInsertError();
53
+ clearUpdateError();
54
+ }
55
+ }, [open, record?.id, clearInsertError, clearUpdateError]);
56
+ // Native <dialog> open/close sync (the ConfirmDialog pattern).
57
+ useEffect(() => {
58
+ const dialog = dialogRef.current;
59
+ if (!dialog)
60
+ return;
61
+ if (open && !dialog.open)
62
+ dialog.showModal();
63
+ else if (!open && dialog.open)
64
+ dialog.close();
65
+ }, [open]);
66
+ const handleDialogCancel = useCallback((e) => {
67
+ e.preventDefault();
68
+ onOpenChange(false);
69
+ }, [onOpenChange]);
70
+ /** The effective value a field's control shows: edit > stored > empty. */
71
+ const effectiveValue = useCallback((field) => {
72
+ const edit = edits.get(field.name);
73
+ if (edit)
74
+ return edit.kind === "cleared" ? undefined : edit.value;
75
+ if (isEdit) {
76
+ const stored = record?.fields?.[field.name];
77
+ return stored === null ? undefined : stored;
78
+ }
79
+ return undefined;
80
+ }, [edits, isEdit, record]);
81
+ const setFieldValue = useCallback((name, value) => {
82
+ setEdits((prev) => {
83
+ const next = new Map(prev);
84
+ if (value === undefined) {
85
+ // Emptying the control: in insert mode the field simply won't
86
+ // travel; in edit mode an emptied control is an explicit clear.
87
+ next.set(name, { kind: "cleared" });
88
+ }
89
+ else {
90
+ next.set(name, { kind: "value", value });
91
+ }
92
+ return next;
93
+ });
94
+ setFieldErrors((prev) => {
95
+ if (!prev.has(name))
96
+ return prev;
97
+ const next = new Map(prev);
98
+ next.delete(name);
99
+ return next;
100
+ });
101
+ }, []);
102
+ const clearField = useCallback((name) => {
103
+ setEdits((prev) => new Map(prev).set(name, { kind: "cleared" }));
104
+ }, []);
105
+ // Required fields gate the submit in insert mode (error prevention).
106
+ const missingRequired = useMemo(() => {
107
+ if (isEdit)
108
+ return [];
109
+ return collection.fields
110
+ .filter((f) => f.required && f.default === undefined)
111
+ .filter((f) => {
112
+ const edit = edits.get(f.name);
113
+ return !edit || edit.kind === "cleared";
114
+ })
115
+ .map((f) => f.name);
116
+ }, [collection, edits, isEdit]);
117
+ const handleSubmit = useCallback(async () => {
118
+ setBannerError(null);
119
+ // Client-side coercion (a projection of the server contract): fail
120
+ // fast with field-adjacent messages; the server stays the enforcer.
121
+ const coerced = new Map();
122
+ const errors = new Map();
123
+ for (const field of collection.fields) {
124
+ const edit = edits.get(field.name);
125
+ if (!edit)
126
+ continue;
127
+ if (edit.kind === "cleared") {
128
+ if (isEdit)
129
+ coerced.set(field.name, null);
130
+ continue;
131
+ }
132
+ const result = coerceFieldValue(field, edit.value);
133
+ if (result.ok) {
134
+ coerced.set(field.name, result.value);
135
+ }
136
+ else {
137
+ errors.set(field.name, result.error);
138
+ }
139
+ }
140
+ if (errors.size > 0) {
141
+ setFieldErrors(errors);
142
+ return;
143
+ }
144
+ try {
145
+ let saved;
146
+ if (isEdit) {
147
+ if (coerced.size === 0) {
148
+ onOpenChange(false); // nothing dirty — an honest no-op
149
+ return;
150
+ }
151
+ saved = await update.updateRecord({
152
+ ...scope,
153
+ id: record.id,
154
+ fields: buildUpdateFields(coerced),
155
+ });
156
+ }
157
+ else {
158
+ const payload = {};
159
+ for (const [name, value] of coerced) {
160
+ if (value !== null)
161
+ payload[name] = value;
162
+ }
163
+ saved = await insert.insertRecord({ ...scope, record: payload });
164
+ }
165
+ onSaved?.(saved);
166
+ onOpenChange(false);
167
+ }
168
+ catch (err) {
169
+ placeServerError(err, collection, setFieldErrors, setBannerError);
170
+ }
171
+ }, [collection, edits, isEdit, record, scope, insert, update, onSaved, onOpenChange]);
172
+ if (!open)
173
+ return null;
174
+ return (_jsx("dialog", { ref: dialogRef, onCancel: handleDialogCancel, "aria-label": isEdit
175
+ ? `Edit record in ${collection.name}`
176
+ : `Insert record into ${collection.name}`, className: cn("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", "backdrop:bg-black/50", "open:animate-in open:fade-in-0 open:zoom-in-95"), children: _jsxs("div", { className: "flex max-h-[80vh] flex-col gap-4 overflow-y-auto p-6", children: [_jsxs("h3", { className: "text-base font-semibold text-foreground", children: [isEdit ? "Edit record" : "Insert record", _jsx("span", { className: "ml-2 font-mono text-xs font-normal text-muted-foreground", children: collection.name })] }), bannerError && (_jsx("div", { role: "alert", className: "rounded-md border border-destructive bg-card px-3 py-2 text-sm text-destructive", children: bannerError })), isEdit && record && _jsx(SystemFieldsSummary, { record: record }), _jsx("div", { className: "flex flex-col gap-3", children: collection.fields.map((field) => (_jsx(FieldRow, { field: field, value: effectiveValue(field), error: fieldErrors.get(field.name), isEdit: isEdit, cleared: edits.get(field.name)?.kind === "cleared", onChange: (v) => setFieldValue(field.name, v), onClear: () => clearField(field.name) }, field.name))) }), _jsxs("div", { className: "flex items-center justify-end gap-2", children: [missingRequired.length > 0 && (_jsxs("span", { className: "mr-auto text-xs text-muted-foreground", children: ["Required: ", missingRequired.join(", ")] })), _jsx("button", { type: "button", onClick: () => onOpenChange(false), className: cn("rounded-md border border-input bg-background px-3 py-1.5 text-sm font-medium text-foreground", "hover:bg-accent hover:text-accent-foreground", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"), children: "Cancel" }), _jsx("button", { type: "button", onClick: handleSubmit, disabled: isSaving || missingRequired.length > 0, className: cn("rounded-md bg-primary px-3 py-1.5 text-sm font-medium text-primary-foreground", "hover:bg-primary-hover", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", "disabled:pointer-events-none disabled:opacity-50"), children: isSaving ? "Saving…" : isEdit ? "Save changes" : "Insert" })] })] }) }));
177
+ }
178
+ // ---------------------------------------------------------------------------
179
+ // Server-error placement (DD-008 SD-4)
180
+ // ---------------------------------------------------------------------------
181
+ /**
182
+ * Place a record-write error: field-adjacent when the ErrorInfo
183
+ * constraint name maps to a unique constraint's declared fields, a
184
+ * form-level banner otherwise. Either way the message is the server's
185
+ * bytes, verbatim.
186
+ */
187
+ function placeServerError(err, collection, setFieldErrors, setBannerError) {
188
+ const message = getUserMessage(err);
189
+ const constraintName = getRecordConstraint(err);
190
+ if (constraintName) {
191
+ const unique = collection.uniques.find((u) => u.name === constraintName);
192
+ if (unique && unique.fields.length > 0) {
193
+ setFieldErrors(new Map(unique.fields.map((f) => [f, message])));
194
+ return;
195
+ }
196
+ }
197
+ setBannerError(message);
198
+ }
199
+ // ---------------------------------------------------------------------------
200
+ // Rows
201
+ // ---------------------------------------------------------------------------
202
+ function FieldRow({ field, value, error, isEdit, cleared, onChange, onClear, }) {
203
+ const controlId = useId();
204
+ const showClear = isEdit && !field.required && !cleared && value !== undefined;
205
+ return (_jsxs("div", { className: "flex flex-col gap-1", children: [_jsxs("div", { className: "flex items-baseline gap-1", children: [_jsxs("label", { htmlFor: controlId, className: "text-xs font-medium text-muted-foreground", children: [field.name, field.required && (_jsxs("span", { className: "text-destructive", "aria-label": "required", children: [" ", "*"] }))] }), showClear && (_jsx("button", { type: "button", onClick: onClear, "aria-label": `Clear ${field.name}`, className: cn("ml-auto text-xs text-muted-foreground underline-offset-2 hover:text-foreground hover:underline", "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"), children: "Clear" })), cleared && (_jsx("span", { className: "ml-auto text-xs italic text-muted-foreground", children: "will be cleared" }))] }), field.description && (_jsx("p", { className: "text-xs leading-tight text-muted-foreground", children: field.description })), _jsx(FieldValueControl, { id: controlId, field: field, value: value, onChange: onChange }), error && (_jsx("span", { role: "alert", className: "text-xs text-destructive", children: error }))] }));
206
+ }
207
+ /** Read-only envelope columns shown in edit mode; never editable, never submitted. */
208
+ function SystemFieldsSummary({ record }) {
209
+ return (_jsxs("dl", { className: "grid grid-cols-[auto_1fr] gap-x-3 gap-y-1 rounded-md bg-muted p-3 text-xs", children: [_jsx("dt", { className: "font-medium text-muted-foreground", children: "id" }), _jsx("dd", { className: "truncate font-mono text-foreground", children: record.id }), _jsx("dt", { className: "font-medium text-muted-foreground", children: "created_at" }), _jsx("dd", { className: "font-mono text-foreground", children: record.createdAt
210
+ ? formatSystemTimestamp(timestampDate(record.createdAt).toISOString())
211
+ : "" }), _jsx("dt", { className: "font-medium text-muted-foreground", children: "updated_at" }), _jsx("dd", { className: "font-mono text-foreground", children: record.updatedAt
212
+ ? formatSystemTimestamp(timestampDate(record.updatedAt).toISOString())
213
+ : "" }), _jsx("dt", { className: "font-medium text-muted-foreground", children: "created_by" }), _jsx("dd", { className: "truncate font-mono text-foreground", children: formatSubject(record.createdBy) })] }));
214
+ }
215
+ //# sourceMappingURL=RecordFormPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RecordFormPanel.js","sourceRoot":"","sources":["../../src/datastore/RecordFormPanel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ export { useDatastore } from "./useDatastore.js";
2
+ export type { UseDatastoreReturn } from "./useDatastore.js";
3
+ export { useDatastoreList } from "./useDatastoreList.js";
4
+ export type { UseDatastoreListOptions, UseDatastoreListReturn, } from "./useDatastoreList.js";
5
+ export { useDatastoreCount } from "./useDatastoreCount.js";
6
+ export type { UseDatastoreCountOptions, UseDatastoreCountReturn, } from "./useDatastoreCount.js";
7
+ export { useDatastoreSearch } from "./useDatastoreSearch.js";
8
+ export type { UseDatastoreSearchOptions, UseDatastoreSearchReturn, } from "./useDatastoreSearch.js";
9
+ export { useDatastoreDescription, DEFAULT_PARTITION } from "./useDatastoreDescription.js";
10
+ export type { UseDatastoreDescriptionReturn } from "./useDatastoreDescription.js";
11
+ export { useRecordList } from "./useRecordList.js";
12
+ export type { RecordScope, UseRecordListParams, UseRecordListReturn, } from "./useRecordList.js";
13
+ export { useInsertRecord } from "./useInsertRecord.js";
14
+ export type { InsertRecordArgs, UseInsertRecordReturn, } from "./useInsertRecord.js";
15
+ export { useUpdateRecord } from "./useUpdateRecord.js";
16
+ export type { UpdateRecordArgs, UseUpdateRecordReturn, } from "./useUpdateRecord.js";
17
+ export { useDeleteRecord } from "./useDeleteRecord.js";
18
+ export type { DeleteRecordArgs, UseDeleteRecordReturn, } from "./useDeleteRecord.js";
19
+ export { useRecordCollection } from "./useRecordCollection.js";
20
+ export type { RecordColumnDef, UseRecordCollectionOptions, UseRecordCollectionReturn, } from "./useRecordCollection.js";
21
+ export { useDeleteDatastore } from "./useDeleteDatastore.js";
22
+ export type { DeleteDatastoreArgs, UseDeleteDatastoreReturn, } from "./useDeleteDatastore.js";
23
+ export { buildUpdateFields, coerceFieldValue, formatFieldValue, formatSystemTimestamp, isListOperator, isSortableField, isValuelessOperator, operatorsForField, OPERATOR_LABELS, RESERVED_FIELD_NAMES, SYSTEM_FIELD_OPERATORS, } from "./recordValues.js";
24
+ export type { CoerceResult } from "./recordValues.js";
25
+ export { buildRecordFilter, filterableFields, formatConditionChip, isConditionComplete, } from "./recordFilter.js";
26
+ export type { FilterableField, RecordConditionDraft } from "./recordFilter.js";
27
+ export { FieldValueControl, FIELD_INPUT_CLASSES } from "./FieldValueControl.js";
28
+ export type { FieldValueControlProps } from "./FieldValueControl.js";
29
+ export { CollectionSchemaView, formatSubject } from "./CollectionSchemaView.js";
30
+ export type { CollectionSchemaViewProps } from "./CollectionSchemaView.js";
31
+ export { DatastoreSyncReport } from "./DatastoreSyncReport.js";
32
+ export type { DatastoreSyncReportProps } from "./DatastoreSyncReport.js";
33
+ export { RecordFilterBuilder } from "./RecordFilterBuilder.js";
34
+ export type { RecordFilterBuilderProps } from "./RecordFilterBuilder.js";
35
+ export { RecordFormPanel } from "./RecordFormPanel.js";
36
+ export type { RecordFormPanelProps } from "./RecordFormPanel.js";
37
+ export { CollectionRecordsBrowser } from "./CollectionRecordsBrowser.js";
38
+ export type { CollectionRecordsBrowserProps } from "./CollectionRecordsBrowser.js";
39
+ export { DeleteDatastoreDialog } from "./DeleteDatastoreDialog.js";
40
+ export type { DeleteDatastoreDialogProps } from "./DeleteDatastoreDialog.js";
41
+ export { DatastoreDetailView, DatastoreIcon } from "./DatastoreDetailView.js";
42
+ export type { DatastoreDetailTab, DatastoreDetailViewProps, } from "./DatastoreDetailView.js";
43
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/datastore/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ export { useDatastore } from "./useDatastore.js";
2
+ export { useDatastoreList } from "./useDatastoreList.js";
3
+ export { useDatastoreCount } from "./useDatastoreCount.js";
4
+ export { useDatastoreSearch } from "./useDatastoreSearch.js";
5
+ export { useDatastoreDescription, DEFAULT_PARTITION } from "./useDatastoreDescription.js";
6
+ export { useRecordList } from "./useRecordList.js";
7
+ export { useInsertRecord } from "./useInsertRecord.js";
8
+ export { useUpdateRecord } from "./useUpdateRecord.js";
9
+ export { useDeleteRecord } from "./useDeleteRecord.js";
10
+ export { useRecordCollection } from "./useRecordCollection.js";
11
+ export { useDeleteDatastore } from "./useDeleteDatastore.js";
12
+ export { buildUpdateFields, coerceFieldValue, formatFieldValue, formatSystemTimestamp, isListOperator, isSortableField, isValuelessOperator, operatorsForField, OPERATOR_LABELS, RESERVED_FIELD_NAMES, SYSTEM_FIELD_OPERATORS, } from "./recordValues.js";
13
+ export { buildRecordFilter, filterableFields, formatConditionChip, isConditionComplete, } from "./recordFilter.js";
14
+ export { FieldValueControl, FIELD_INPUT_CLASSES } from "./FieldValueControl.js";
15
+ export { CollectionSchemaView, formatSubject } from "./CollectionSchemaView.js";
16
+ export { DatastoreSyncReport } from "./DatastoreSyncReport.js";
17
+ export { RecordFilterBuilder } from "./RecordFilterBuilder.js";
18
+ export { RecordFormPanel } from "./RecordFormPanel.js";
19
+ export { CollectionRecordsBrowser } from "./CollectionRecordsBrowser.js";
20
+ export { DeleteDatastoreDialog } from "./DeleteDatastoreDialog.js";
21
+ export { DatastoreDetailView, DatastoreIcon } from "./DatastoreDetailView.js";
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/datastore/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAMzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAM3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAM7D,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAG1F,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAMvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAMvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAMvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAO/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAM7D,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAGhF,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAGhF,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAG/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAG/D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAGzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAGnE,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,62 @@
1
+ import { type JsonValue } from "@bufbuild/protobuf";
2
+ import { RecordConditionOp, type RecordFilter } from "@stigmer/protos/ai/stigmer/agentic/datastore/v1/record_io_pb";
3
+ import { FieldType, type CollectionDeclaration, type FieldDeclaration } from "@stigmer/protos/ai/stigmer/agentic/datastore/v1/spec_pb";
4
+ /**
5
+ * One draft condition in the filter builder — the client-side twin of
6
+ * the proto `RecordCondition`, with plain JSON values (converted to
7
+ * `google.protobuf.Value` only at request-build time).
8
+ */
9
+ export interface RecordConditionDraft {
10
+ /** Declared field name, or a filterable system field (`id`, `created_at`, `updated_at`). */
11
+ readonly field: string;
12
+ /** Comparison operator — must be admitted by the field's operator set. */
13
+ readonly op: RecordConditionOp;
14
+ /** Scalar comparison value. Absent for `is_null`/`not_null` and list operators. */
15
+ readonly value?: JsonValue;
16
+ /** Comparison values for `is_in`/`not_in`. */
17
+ readonly values?: readonly JsonValue[];
18
+ }
19
+ /**
20
+ * A field the builder can offer: a declared filterable field or a
21
+ * filterable system field, with the exact operator set the server
22
+ * admits for it.
23
+ */
24
+ export interface FilterableField {
25
+ readonly name: string;
26
+ /** The declaration, or `undefined` for system fields. */
27
+ readonly declaration?: FieldDeclaration;
28
+ /** The field type driving the value control (system fields use fixed types). */
29
+ readonly type: FieldType;
30
+ readonly operators: readonly RecordConditionOp[];
31
+ }
32
+ /**
33
+ * The fields a collection's filter builder offers: declared filterable
34
+ * fields (json is not filterable) followed by the filterable system
35
+ * fields. `id` conditions take string values; the audit timestamps take
36
+ * RFC 3339 timestamps — both ride the `timestamp`/`string` value
37
+ * controls.
38
+ *
39
+ * `readableFields` is the caller's column-level read access from
40
+ * `describeDatastore` (the read verb's `readable_fields`; empty means
41
+ * every field). When restricted, unreadable declared fields are not
42
+ * offered — the server refuses conditions on them (the existence-oracle
43
+ * guard), and the builder must stay structurally unable to express an
44
+ * unservable filter (DD-008 invariant 2). System fields are always
45
+ * readable and always offered.
46
+ */
47
+ export declare function filterableFields(collection: CollectionDeclaration, readableFields?: readonly string[]): FilterableField[];
48
+ /**
49
+ * Whether a draft is complete enough to serve: value-less operators
50
+ * need nothing, list operators need at least one value, scalar
51
+ * operators need a value.
52
+ */
53
+ export declare function isConditionComplete(draft: RecordConditionDraft): boolean;
54
+ /**
55
+ * Build the proto `RecordFilter` from complete drafts. Returns
56
+ * `undefined` for an empty set (an absent filter, not an empty one, is
57
+ * the RPC's "no filter").
58
+ */
59
+ export declare function buildRecordFilter(conditions: readonly RecordConditionDraft[]): RecordFilter | undefined;
60
+ /** Chip text for an active condition, e.g. `status = confirmed` or `notes is empty`. */
61
+ export declare function formatConditionChip(draft: RecordConditionDraft): string;
62
+ //# sourceMappingURL=recordFilter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recordFilter.d.ts","sourceRoot":"","sources":["../../src/datastore/recordFilter.ts"],"names":[],"mappings":"AAWA,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEtE,OAAO,EACL,iBAAiB,EAGjB,KAAK,YAAY,EAClB,MAAM,8DAA8D,CAAC;AACtE,OAAO,EACL,SAAS,EACT,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACtB,MAAM,yDAAyD,CAAC;AASjE;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,4FAA4F;IAC5F,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,EAAE,iBAAiB,CAAC;IAC/B,mFAAmF;IACnF,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAC3B,8CAA8C;IAC9C,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;CACxC;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,yDAAyD;IACzD,QAAQ,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC;IACxC,gFAAgF;IAChF,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAClD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,qBAAqB,EACjC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,GACjC,eAAe,EAAE,CAwBnB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAKxE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,SAAS,oBAAoB,EAAE,GAC1C,YAAY,GAAG,SAAS,CAa1B;AAED,wFAAwF;AACxF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,CAOvE"}
@@ -0,0 +1,104 @@
1
+ // The records-specific filter model (DD-008 SD-3) — typed 1:1 against
2
+ // `RecordConditionOp`.
3
+ //
4
+ // Deliberately NOT the workbench `FilterDef`/`FilterValue` model: its
5
+ // `string | string[]` value shape cannot carry typed values or
6
+ // value-less null operators, and its operator set includes `contains`,
7
+ // which `findRecords` cannot serve. Welding a server-grammar contract
8
+ // onto a client-filter model would couple two contracts that evolve
9
+ // independently — so this model mirrors the RPC grammar exactly and can
10
+ // express nothing the RPC cannot serve (DD-008 invariant 2).
11
+ import { create, fromJson } from "@bufbuild/protobuf";
12
+ import { ValueSchema } from "@bufbuild/protobuf/wkt";
13
+ import { RecordConditionOp, RecordConditionSchema, RecordFilterSchema, } from "@stigmer/protos/ai/stigmer/agentic/datastore/v1/record_io_pb";
14
+ import { FieldType, } from "@stigmer/protos/ai/stigmer/agentic/datastore/v1/spec_pb";
15
+ import { isListOperator, isValuelessOperator, OPERATOR_LABELS, SYSTEM_FIELD_OPERATORS, operatorsForField, } from "./recordValues.js";
16
+ /**
17
+ * The fields a collection's filter builder offers: declared filterable
18
+ * fields (json is not filterable) followed by the filterable system
19
+ * fields. `id` conditions take string values; the audit timestamps take
20
+ * RFC 3339 timestamps — both ride the `timestamp`/`string` value
21
+ * controls.
22
+ *
23
+ * `readableFields` is the caller's column-level read access from
24
+ * `describeDatastore` (the read verb's `readable_fields`; empty means
25
+ * every field). When restricted, unreadable declared fields are not
26
+ * offered — the server refuses conditions on them (the existence-oracle
27
+ * guard), and the builder must stay structurally unable to express an
28
+ * unservable filter (DD-008 invariant 2). System fields are always
29
+ * readable and always offered.
30
+ */
31
+ export function filterableFields(collection, readableFields) {
32
+ const readable = readableFields !== undefined && readableFields.length > 0 ? new Set(readableFields) : null;
33
+ const declared = [];
34
+ for (const field of collection.fields) {
35
+ const operators = operatorsForField(field);
36
+ if (operators.length === 0)
37
+ continue; // json — not filterable
38
+ if (readable !== null && !readable.has(field.name))
39
+ continue; // not readable under the grant
40
+ declared.push({ name: field.name, declaration: field, type: field.type, operators });
41
+ }
42
+ return [
43
+ ...declared,
44
+ { name: "id", type: FieldType.string, operators: SYSTEM_FIELD_OPERATORS.get("id") },
45
+ {
46
+ name: "created_at",
47
+ type: FieldType.timestamp,
48
+ operators: SYSTEM_FIELD_OPERATORS.get("created_at"),
49
+ },
50
+ {
51
+ name: "updated_at",
52
+ type: FieldType.timestamp,
53
+ operators: SYSTEM_FIELD_OPERATORS.get("updated_at"),
54
+ },
55
+ ];
56
+ }
57
+ /**
58
+ * Whether a draft is complete enough to serve: value-less operators
59
+ * need nothing, list operators need at least one value, scalar
60
+ * operators need a value.
61
+ */
62
+ export function isConditionComplete(draft) {
63
+ if (draft.op === RecordConditionOp.record_condition_op_unspecified)
64
+ return false;
65
+ if (isValuelessOperator(draft.op))
66
+ return true;
67
+ if (isListOperator(draft.op))
68
+ return (draft.values?.length ?? 0) > 0;
69
+ return draft.value !== undefined;
70
+ }
71
+ /**
72
+ * Build the proto `RecordFilter` from complete drafts. Returns
73
+ * `undefined` for an empty set (an absent filter, not an empty one, is
74
+ * the RPC's "no filter").
75
+ */
76
+ export function buildRecordFilter(conditions) {
77
+ const complete = conditions.filter(isConditionComplete);
78
+ if (complete.length === 0)
79
+ return undefined;
80
+ return create(RecordFilterSchema, {
81
+ conditions: complete.map((draft) => create(RecordConditionSchema, {
82
+ field: draft.field,
83
+ op: draft.op,
84
+ value: draft.value !== undefined ? fromJson(ValueSchema, draft.value) : undefined,
85
+ values: (draft.values ?? []).map((v) => fromJson(ValueSchema, v)),
86
+ })),
87
+ });
88
+ }
89
+ /** Chip text for an active condition, e.g. `status = confirmed` or `notes is empty`. */
90
+ export function formatConditionChip(draft) {
91
+ const op = OPERATOR_LABELS.get(draft.op) ?? "?";
92
+ if (isValuelessOperator(draft.op))
93
+ return `${draft.field} ${op}`;
94
+ if (isListOperator(draft.op)) {
95
+ return `${draft.field} ${op} [${(draft.values ?? []).map(formatChipValue).join(", ")}]`;
96
+ }
97
+ return `${draft.field} ${op} ${formatChipValue(draft.value)}`;
98
+ }
99
+ function formatChipValue(value) {
100
+ if (value === undefined || value === null)
101
+ return "";
102
+ return typeof value === "string" ? value : JSON.stringify(value);
103
+ }
104
+ //# sourceMappingURL=recordFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recordFilter.js","sourceRoot":"","sources":["../../src/datastore/recordFilter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ import type { JsonObject, JsonValue } from "@bufbuild/protobuf";
2
+ import { FieldType, type FieldDeclaration } from "@stigmer/protos/ai/stigmer/agentic/datastore/v1/spec_pb";
3
+ import { RecordConditionOp } from "@stigmer/protos/ai/stigmer/agentic/datastore/v1/record_io_pb";
4
+ /**
5
+ * Record-envelope system field names (plus the cloud tenancy column and
6
+ * the DD-010 partition label). Never declarable, never caller-writable.
7
+ */
8
+ export declare const RESERVED_FIELD_NAMES: ReadonlySet<string>;
9
+ /** Result of {@link coerceFieldValue}: a canonical value or a field-level message. */
10
+ export type CoerceResult = {
11
+ readonly ok: true;
12
+ readonly value: JsonValue | null;
13
+ } | {
14
+ readonly ok: false;
15
+ readonly error: string;
16
+ };
17
+ /**
18
+ * Validate a caller-supplied field value against its declaration and
19
+ * return the canonical JSON encoding (see module doc). `null` means
20
+ * explicit null — valid here for any field; required-ness is write-path
21
+ * policy (updates only see the supplied subset), exactly as in the
22
+ * server's CanonicalizeValue.
23
+ *
24
+ * Error messages match the server's shape (`field "x" must be …`) so a
25
+ * client-side rejection reads the same as the server rejection it
26
+ * pre-empts.
27
+ */
28
+ export declare function coerceFieldValue(field: FieldDeclaration, value: JsonValue | null): CoerceResult;
29
+ /**
30
+ * Format a canonical field value for grid-cell display. Values render
31
+ * in their DD-004 canonical encodings (honest, timezone-free); the one
32
+ * concession to readability is trimming a timestamp's zero fractional
33
+ * seconds (storage pads to nine digits for lexicographic ordering —
34
+ * "…T04:30:00.000000000Z" and "…T04:30:00Z" are the same RFC 3339 UTC
35
+ * instant).
36
+ */
37
+ export declare function formatFieldValue(type: FieldType, value: JsonValue | null | undefined): string;
38
+ /** Also used for the envelope's created_at/updated_at system columns. */
39
+ export declare function formatSystemTimestamp(value: string): string;
40
+ /**
41
+ * The per-type operator matrix (record_io.proto @internal, DD-005 SD-2)
42
+ * — a projection of the server's opsForFieldType. The filter builder
43
+ * offers exactly these, making an unservable operator structurally
44
+ * unofferable (DD-008 invariant 2):
45
+ *
46
+ * string (incl. enum): eq, neq, is_in, not_in
47
+ * bool: eq, neq
48
+ * integer, number,
49
+ * timestamp, date, time: eq, neq, gt, gte, lt, lte
50
+ * json: not filterable
51
+ * + is_null / not_null on any optional (non-required) field
52
+ */
53
+ export declare function operatorsForField(field: FieldDeclaration): RecordConditionOp[];
54
+ /**
55
+ * The filterable system fields and their operator sets (mirrors the
56
+ * server's buildSystemCondition): `id` by identity, the audit
57
+ * timestamps by range. `created_by`, `org`, and `partition` are not
58
+ * filterable — attribution is the grant system's privacy boundary and
59
+ * partition is ambient scope, never data.
60
+ */
61
+ export declare const SYSTEM_FIELD_OPERATORS: ReadonlyMap<string, readonly RecordConditionOp[]>;
62
+ /** Operators that take no value (null tests). */
63
+ export declare function isValuelessOperator(op: RecordConditionOp): boolean;
64
+ /** Operators that take a value list (`values`) rather than a scalar. */
65
+ export declare function isListOperator(op: RecordConditionOp): boolean;
66
+ /**
67
+ * Human labels for the filter builder and chips. `is_in` is displayed
68
+ * as "in" — the proto spelling exists only because `in` is reserved in
69
+ * Java/Python, a substrate detail operators never see.
70
+ */
71
+ export declare const OPERATOR_LABELS: ReadonlyMap<RecordConditionOp, string>;
72
+ /**
73
+ * Sortable fields: any declared non-json field, plus the system id and
74
+ * audit timestamps (mirrors the server's BuildOrderBy).
75
+ */
76
+ export declare function isSortableField(field: FieldDeclaration): boolean;
77
+ /**
78
+ * Build an update payload from per-field edits (DD-005 partial merge).
79
+ * The RPC's tri-state: a key present with a value replaces the field, a
80
+ * key present with `null` explicitly clears it, an absent key leaves
81
+ * the stored value untouched. Callers pass only the dirty fields —
82
+ * cleared ones as `null`.
83
+ */
84
+ export declare function buildUpdateFields(edits: ReadonlyMap<string, JsonValue | null>): JsonObject;
85
+ //# sourceMappingURL=recordValues.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recordValues.d.ts","sourceRoot":"","sources":["../../src/datastore/recordValues.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EACL,SAAS,EACT,KAAK,gBAAgB,EACtB,MAAM,yDAAyD,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8DAA8D,CAAC;AAEjG;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAOnD,CAAC;AAEH,sFAAsF;AACtF,MAAM,MAAM,YAAY,GACpB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAA;CAAE,GACvD;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAgBnD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,gBAAgB,EACvB,KAAK,EAAE,SAAS,GAAG,IAAI,GACtB,YAAY,CA0Ed;AAeD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,SAAS,GAAG,IAAI,GAAG,SAAS,GAClC,MAAM,CAaR;AAED,yEAAyE;AACzE,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3D;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,EAAE,CAM9E;AAgCD;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAWjF,CAAC;AAEL,iDAAiD;AACjD,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,iBAAiB,GAAG,OAAO,CAElE;AAED,wEAAwE;AACxE,wBAAgB,cAAc,CAAC,EAAE,EAAE,iBAAiB,GAAG,OAAO,CAE7D;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,WAAW,CAAC,iBAAiB,EAAE,MAAM,CAWjE,CAAC;AAEH;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAEhE;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC,GAC3C,UAAU,CAMZ"}