@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
@@ -0,0 +1,29 @@
1
+ "use client";
2
+ import { useCallback } from "react";
3
+ import { useStigmer } from "../hooks.js";
4
+ import { useResourceList } from "../search/index.js";
5
+ /**
6
+ * Data hook that fetches a paginated list of datastores for the Library.
7
+ *
8
+ * Wraps `stigmer.datastore.list()` (SearchService-backed) with
9
+ * pagination, scope filtering, and text search. All parameters are
10
+ * externally controlled — the consumer manages page state, query
11
+ * debouncing, and scope toggling.
12
+ *
13
+ * Pass `null` as `org` to skip fetching (stable no-op).
14
+ *
15
+ * @example
16
+ * ```tsx
17
+ * const { datastores, totalCount, isLoading } = useDatastoreList("acme", {
18
+ * page: 1,
19
+ * pageSize: 20,
20
+ * });
21
+ * ```
22
+ */
23
+ export function useDatastoreList(org, options) {
24
+ const stigmer = useStigmer();
25
+ const listFn = useCallback((params) => stigmer.datastore.list(params), [stigmer]);
26
+ const { entries, totalCount, totalPages, currentPage, isLoading, error, refetch } = useResourceList(listFn, org, options);
27
+ return { datastores: entries, totalCount, totalPages, currentPage, isLoading, error, refetch };
28
+ }
29
+ //# sourceMappingURL=useDatastoreList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDatastoreList.js","sourceRoot":"","sources":["../../src/datastore/useDatastoreList.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEpC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,eAAe,EAA0B,MAAM,oBAAoB,CAAC;AAuC7E;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,gBAAgB,CAC9B,GAAkB,EAClB,OAAiC;IAEjC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAE7B,MAAM,MAAM,GAAG,WAAW,CACxB,CAAC,MAAoD,EAAE,EAAE,CACvD,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAChC,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAC/E,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAExC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AACjG,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { type UseResourceSearchOptions, type UseResourceSearchReturn } from "../search/index.js";
2
+ /** Options for {@link useDatastoreSearch}. Delegates to the shared resource search options. */
3
+ export type UseDatastoreSearchOptions = UseResourceSearchOptions;
4
+ /** Return value of {@link useDatastoreSearch}. Delegates to the shared resource search return. */
5
+ export type UseDatastoreSearchReturn = UseResourceSearchReturn;
6
+ /**
7
+ * Data hook that searches datastores available in the given organization.
8
+ *
9
+ * Wraps `stigmer.datastore.list()` with debounced search, loading/error
10
+ * tracking, and cancellation-safe fetching. Platform builders use this
11
+ * when they want full control over rendering.
12
+ *
13
+ * @example
14
+ * ```tsx
15
+ * const { results, isLoading, query, setQuery } = useDatastoreSearch("acme");
16
+ * ```
17
+ */
18
+ export declare function useDatastoreSearch(org: string, options?: UseDatastoreSearchOptions): UseDatastoreSearchReturn;
19
+ //# sourceMappingURL=useDatastoreSearch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDatastoreSearch.d.ts","sourceRoot":"","sources":["../../src/datastore/useDatastoreSearch.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC7B,MAAM,oBAAoB,CAAC;AAE5B,+FAA+F;AAC/F,MAAM,MAAM,yBAAyB,GAAG,wBAAwB,CAAC;AACjE,kGAAkG;AAClG,MAAM,MAAM,wBAAwB,GAAG,uBAAuB,CAAC;AAE/D;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,yBAAyB,GAClC,wBAAwB,CAQ1B"}
@@ -0,0 +1,22 @@
1
+ "use client";
2
+ import { useCallback } from "react";
3
+ import { useStigmer } from "../hooks.js";
4
+ import { useResourceSearch, } from "../search/index.js";
5
+ /**
6
+ * Data hook that searches datastores available in the given organization.
7
+ *
8
+ * Wraps `stigmer.datastore.list()` with debounced search, loading/error
9
+ * tracking, and cancellation-safe fetching. Platform builders use this
10
+ * when they want full control over rendering.
11
+ *
12
+ * @example
13
+ * ```tsx
14
+ * const { results, isLoading, query, setQuery } = useDatastoreSearch("acme");
15
+ * ```
16
+ */
17
+ export function useDatastoreSearch(org, options) {
18
+ const stigmer = useStigmer();
19
+ const listFn = useCallback((params) => stigmer.datastore.list(params), [stigmer]);
20
+ return useResourceSearch(listFn, org, options);
21
+ }
22
+ //# sourceMappingURL=useDatastoreSearch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDatastoreSearch.js","sourceRoot":"","sources":["../../src/datastore/useDatastoreSearch.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,iBAAiB,GAGlB,MAAM,oBAAoB,CAAC;AAO5B;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAChC,GAAW,EACX,OAAmC;IAEnC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,WAAW,CACxB,CAAC,MAAoD,EAAE,EAAE,CACvD,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAChC,CAAC,OAAO,CAAC,CACV,CAAC;IACF,OAAO,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC"}
@@ -0,0 +1,53 @@
1
+ import type { Datastore } from "@stigmer/protos/ai/stigmer/agentic/datastore/v1/api_pb";
2
+ /** Arguments for {@link UseDeleteDatastoreReturn.deleteDatastore}. */
3
+ export interface DeleteDatastoreArgs {
4
+ /** Datastore resource id (`dst_…`). */
5
+ readonly resourceId: string;
6
+ /**
7
+ * Acknowledgment that the datastore's records will be destroyed.
8
+ * Required for non-empty datastores (the server's GuardNonEmpty
9
+ * rejects without it, reporting record and collection counts);
10
+ * meaningless for empty ones. `DeleteDatastoreDialog` arms it only
11
+ * after the operator types the datastore slug.
12
+ */
13
+ readonly force?: boolean;
14
+ }
15
+ /** Return value of {@link useDeleteDatastore}. */
16
+ export interface UseDeleteDatastoreReturn {
17
+ /**
18
+ * Delete a datastore through its two server guards (DD-003), in
19
+ * order:
20
+ *
21
+ * 1. **Agent-reference block** — a datastore referenced by any
22
+ * agent's `datastore_usages` cannot be deleted, force or not; the
23
+ * `FAILED_PRECONDITION` names the referencing agents (detach
24
+ * first).
25
+ * 2. **Non-empty acknowledgment** — held records require `force`;
26
+ * without it the error reports current record/collection counts.
27
+ *
28
+ * Rejects — and sets `error` — when a guard refuses; the message is
29
+ * the server's authoritative text with fresh counts, so on drift the
30
+ * dialog re-renders the guard rather than pre-empting it (DD-008
31
+ * invariant 6).
32
+ */
33
+ readonly deleteDatastore: (args: DeleteDatastoreArgs) => Promise<Datastore>;
34
+ /** `true` while the delete is in flight. */
35
+ readonly isDeleting: boolean;
36
+ /** Error from the last refused or failed delete, or `null` when healthy. */
37
+ readonly error: Error | null;
38
+ /** Reset `error` to `null`. */
39
+ readonly clearError: () => void;
40
+ }
41
+ /**
42
+ * Behavior hook for the platform's only record-destroying resource
43
+ * delete.
44
+ *
45
+ * Deliberately domain-local rather than a new arm in the generic
46
+ * `useDeleteResource` kind-switch: datastore deletion carries an
47
+ * acknowledgment protocol (`force`) and guard-error rendering that the
48
+ * generic one-shot delete contract must not absorb (DD-003 — extending
49
+ * it would leak record-destruction semantics platform-wide). No
50
+ * success/failure toasts here; `DeleteDatastoreDialog` owns the UX.
51
+ */
52
+ export declare function useDeleteDatastore(): UseDeleteDatastoreReturn;
53
+ //# sourceMappingURL=useDeleteDatastore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDeleteDatastore.d.ts","sourceRoot":"","sources":["../../src/datastore/useDeleteDatastore.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wDAAwD,CAAC;AAIxF,sEAAsE;AACtE,MAAM,WAAW,mBAAmB;IAClC,uCAAuC;IACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,kDAAkD;AAClD,MAAM,WAAW,wBAAwB;IACvC;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE,mBAAmB,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5E,4CAA4C;IAC5C,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,4EAA4E;IAC5E,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC7B,+BAA+B;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC;CACjC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,IAAI,wBAAwB,CA2B7D"}
@@ -0,0 +1,40 @@
1
+ "use client";
2
+ import { useCallback, useState } from "react";
3
+ import { useStigmer } from "../hooks.js";
4
+ import { toError } from "../internal/toError.js";
5
+ /**
6
+ * Behavior hook for the platform's only record-destroying resource
7
+ * delete.
8
+ *
9
+ * Deliberately domain-local rather than a new arm in the generic
10
+ * `useDeleteResource` kind-switch: datastore deletion carries an
11
+ * acknowledgment protocol (`force`) and guard-error rendering that the
12
+ * generic one-shot delete contract must not absorb (DD-003 — extending
13
+ * it would leak record-destruction semantics platform-wide). No
14
+ * success/failure toasts here; `DeleteDatastoreDialog` owns the UX.
15
+ */
16
+ export function useDeleteDatastore() {
17
+ const stigmer = useStigmer();
18
+ const [isDeleting, setIsDeleting] = useState(false);
19
+ const [error, setError] = useState(null);
20
+ const clearError = useCallback(() => setError(null), []);
21
+ const deleteDatastore = useCallback(async (args) => {
22
+ setIsDeleting(true);
23
+ setError(null);
24
+ try {
25
+ return await stigmer.datastore.delete({
26
+ resourceId: args.resourceId,
27
+ force: args.force,
28
+ });
29
+ }
30
+ catch (err) {
31
+ setError(toError(err));
32
+ throw err;
33
+ }
34
+ finally {
35
+ setIsDeleting(false);
36
+ }
37
+ }, [stigmer]);
38
+ return { deleteDatastore, isDeleting, error, clearError };
39
+ }
40
+ //# sourceMappingURL=useDeleteDatastore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDeleteDatastore.js","sourceRoot":"","sources":["../../src/datastore/useDeleteDatastore.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE9C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AA2CjD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAe,IAAI,CAAC,CAAC;IAEvD,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAEzD,MAAM,eAAe,GAAG,WAAW,CACjC,KAAK,EAAE,IAAyB,EAAsB,EAAE;QACtD,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC;gBACpC,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YACvB,MAAM,GAAG,CAAC;QACZ,CAAC;gBAAS,CAAC;YACT,aAAa,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,EACD,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAC5D,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { type RecordEnvelope } from "@stigmer/protos/ai/stigmer/agentic/datastore/v1/record_io_pb";
2
+ import type { RecordScope } from "./useRecordList.js";
3
+ /** Arguments for a single record delete. */
4
+ export interface DeleteRecordArgs extends RecordScope {
5
+ /** Record id (`dsr_…`). */
6
+ readonly id: string;
7
+ }
8
+ /** Return value of {@link useDeleteRecord}. */
9
+ export interface UseDeleteRecordReturn {
10
+ /**
11
+ * Delete one record by id. Resolves with the deleted record's final
12
+ * envelope (usable for an undo-by-reinsert growth path). Rejects —
13
+ * and sets `error` — on denial; the error's message is the server's
14
+ * relayable text, byte-for-byte.
15
+ */
16
+ readonly deleteRecord: (args: DeleteRecordArgs) => Promise<RecordEnvelope>;
17
+ /** `true` while the delete is in flight. */
18
+ readonly isDeleting: boolean;
19
+ /** Error from the last failed delete, or `null` when healthy. */
20
+ readonly error: Error | null;
21
+ /** Reset `error` to `null`. */
22
+ readonly clearError: () => void;
23
+ }
24
+ /**
25
+ * Behavior hook that wraps `datastore.deleteRecord()` with loading and
26
+ * error state.
27
+ *
28
+ * Record deletes are id-addressed with a blast radius of one — the
29
+ * standard destructive confirm suffices (DD-008 SD-4). Deleting the
30
+ * datastore itself is a different, guarded operation: see
31
+ * {@link useDeleteDatastore}.
32
+ */
33
+ export declare function useDeleteRecord(): UseDeleteRecordReturn;
34
+ //# sourceMappingURL=useDeleteRecord.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDeleteRecord.d.ts","sourceRoot":"","sources":["../../src/datastore/useDeleteRecord.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,8DAA8D,CAAC;AAGtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,4CAA4C;AAC5C,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED,+CAA+C;AAC/C,MAAM,WAAW,qBAAqB;IACpC;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3E,4CAA4C;IAC5C,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,iEAAiE;IACjE,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC7B,+BAA+B;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC;CACjC;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,IAAI,qBAAqB,CAgCvD"}
@@ -0,0 +1,43 @@
1
+ "use client";
2
+ import { useCallback, useState } from "react";
3
+ import { create } from "@bufbuild/protobuf";
4
+ import { DeleteRecordRequestSchema, } from "@stigmer/protos/ai/stigmer/agentic/datastore/v1/record_io_pb";
5
+ import { useStigmer } from "../hooks.js";
6
+ import { toError } from "../internal/toError.js";
7
+ /**
8
+ * Behavior hook that wraps `datastore.deleteRecord()` with loading and
9
+ * error state.
10
+ *
11
+ * Record deletes are id-addressed with a blast radius of one — the
12
+ * standard destructive confirm suffices (DD-008 SD-4). Deleting the
13
+ * datastore itself is a different, guarded operation: see
14
+ * {@link useDeleteDatastore}.
15
+ */
16
+ export function useDeleteRecord() {
17
+ const stigmer = useStigmer();
18
+ const [isDeleting, setIsDeleting] = useState(false);
19
+ const [error, setError] = useState(null);
20
+ const clearError = useCallback(() => setError(null), []);
21
+ const deleteRecord = useCallback(async (args) => {
22
+ setIsDeleting(true);
23
+ setError(null);
24
+ try {
25
+ return await stigmer.datastore.deleteRecord(create(DeleteRecordRequestSchema, {
26
+ org: args.org,
27
+ datastore: args.datastore,
28
+ collection: args.collection,
29
+ partition: args.partition ?? "",
30
+ id: args.id,
31
+ }));
32
+ }
33
+ catch (err) {
34
+ setError(toError(err));
35
+ throw err;
36
+ }
37
+ finally {
38
+ setIsDeleting(false);
39
+ }
40
+ }, [stigmer]);
41
+ return { deleteRecord, isDeleting, error, clearError };
42
+ }
43
+ //# sourceMappingURL=useDeleteRecord.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDeleteRecord.js","sourceRoot":"","sources":["../../src/datastore/useDeleteRecord.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EACL,yBAAyB,GAE1B,MAAM,8DAA8D,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AA0BjD;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAe,IAAI,CAAC,CAAC;IAEvD,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAEzD,MAAM,YAAY,GAAG,WAAW,CAC9B,KAAK,EAAE,IAAsB,EAA2B,EAAE;QACxD,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC,SAAS,CAAC,YAAY,CACzC,MAAM,CAAC,yBAAyB,EAAE;gBAChC,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE;gBAC/B,EAAE,EAAE,IAAI,CAAC,EAAE;aACZ,CAAC,CACH,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YACvB,MAAM,GAAG,CAAC;QACZ,CAAC;gBAAS,CAAC;YACT,aAAa,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,EACD,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AACzD,CAAC"}
@@ -0,0 +1,50 @@
1
+ import { type JsonObject } from "@bufbuild/protobuf";
2
+ import { type RecordEnvelope } from "@stigmer/protos/ai/stigmer/agentic/datastore/v1/record_io_pb";
3
+ import type { RecordScope } from "./useRecordList.js";
4
+ /** Arguments for a single record insert. */
5
+ export interface InsertRecordArgs extends RecordScope {
6
+ /**
7
+ * Declared field values in their canonical encodings (DD-004). System
8
+ * field names (`id`, `created_at`, …) are rejected by the server.
9
+ */
10
+ readonly record: JsonObject;
11
+ }
12
+ /** Return value of {@link useInsertRecord}. */
13
+ export interface UseInsertRecordReturn {
14
+ /**
15
+ * Insert one record. Resolves with the server-stamped envelope (id,
16
+ * timestamps, attribution). Rejects — and sets `error` — on denial or
17
+ * constraint violation; the error's message is the server's relayable
18
+ * text, byte-for-byte (render it verbatim, DD-008 invariant 4).
19
+ */
20
+ readonly insertRecord: (args: InsertRecordArgs) => Promise<RecordEnvelope>;
21
+ /** `true` while the insert is in flight. */
22
+ readonly isInserting: boolean;
23
+ /** Error from the last failed insert, or `null` when healthy. */
24
+ readonly error: Error | null;
25
+ /** Reset `error` to `null`. */
26
+ readonly clearError: () => void;
27
+ }
28
+ /**
29
+ * Behavior hook that wraps `datastore.insertRecord()` with loading and
30
+ * error state.
31
+ *
32
+ * Constraint violations (`ALREADY_EXISTS` for uniques,
33
+ * `FAILED_PRECONDITION` for checks) carry the constraint's declared
34
+ * message plus a `google.rpc.ErrorInfo` naming the constraint — use
35
+ * `getRecordConstraint` from `@stigmer/sdk` to place the message next
36
+ * to the fields it covers.
37
+ *
38
+ * @example
39
+ * ```tsx
40
+ * const { insertRecord, isInserting, error } = useInsertRecord();
41
+ * await insertRecord({
42
+ * org: "acme",
43
+ * datastore: "clinic",
44
+ * collection: "bookings",
45
+ * record: { slot_date: "2026-07-22", slot_time: "09:30:00" },
46
+ * });
47
+ * ```
48
+ */
49
+ export declare function useInsertRecord(): UseInsertRecordReturn;
50
+ //# sourceMappingURL=useInsertRecord.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInsertRecord.d.ts","sourceRoot":"","sources":["../../src/datastore/useInsertRecord.ts"],"names":[],"mappings":"AAGA,OAAO,EAAU,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,8DAA8D,CAAC;AAGtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,4CAA4C;AAC5C,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAC7B;AAED,+CAA+C;AAC/C,MAAM,WAAW,qBAAqB;IACpC;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3E,4CAA4C;IAC5C,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,iEAAiE;IACjE,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC7B,+BAA+B;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,eAAe,IAAI,qBAAqB,CAgCvD"}
@@ -0,0 +1,55 @@
1
+ "use client";
2
+ import { useCallback, useState } from "react";
3
+ import { create } from "@bufbuild/protobuf";
4
+ import { InsertRecordRequestSchema, } from "@stigmer/protos/ai/stigmer/agentic/datastore/v1/record_io_pb";
5
+ import { useStigmer } from "../hooks.js";
6
+ import { toError } from "../internal/toError.js";
7
+ /**
8
+ * Behavior hook that wraps `datastore.insertRecord()` with loading and
9
+ * error state.
10
+ *
11
+ * Constraint violations (`ALREADY_EXISTS` for uniques,
12
+ * `FAILED_PRECONDITION` for checks) carry the constraint's declared
13
+ * message plus a `google.rpc.ErrorInfo` naming the constraint — use
14
+ * `getRecordConstraint` from `@stigmer/sdk` to place the message next
15
+ * to the fields it covers.
16
+ *
17
+ * @example
18
+ * ```tsx
19
+ * const { insertRecord, isInserting, error } = useInsertRecord();
20
+ * await insertRecord({
21
+ * org: "acme",
22
+ * datastore: "clinic",
23
+ * collection: "bookings",
24
+ * record: { slot_date: "2026-07-22", slot_time: "09:30:00" },
25
+ * });
26
+ * ```
27
+ */
28
+ export function useInsertRecord() {
29
+ const stigmer = useStigmer();
30
+ const [isInserting, setIsInserting] = useState(false);
31
+ const [error, setError] = useState(null);
32
+ const clearError = useCallback(() => setError(null), []);
33
+ const insertRecord = useCallback(async (args) => {
34
+ setIsInserting(true);
35
+ setError(null);
36
+ try {
37
+ return await stigmer.datastore.insertRecord(create(InsertRecordRequestSchema, {
38
+ org: args.org,
39
+ datastore: args.datastore,
40
+ collection: args.collection,
41
+ partition: args.partition ?? "",
42
+ record: args.record,
43
+ }));
44
+ }
45
+ catch (err) {
46
+ setError(toError(err));
47
+ throw err;
48
+ }
49
+ finally {
50
+ setIsInserting(false);
51
+ }
52
+ }, [stigmer]);
53
+ return { insertRecord, isInserting, error, clearError };
54
+ }
55
+ //# sourceMappingURL=useInsertRecord.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInsertRecord.js","sourceRoot":"","sources":["../../src/datastore/useInsertRecord.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAmB,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EACL,yBAAyB,GAE1B,MAAM,8DAA8D,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AA6BjD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAe,IAAI,CAAC,CAAC;IAEvD,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAEzD,MAAM,YAAY,GAAG,WAAW,CAC9B,KAAK,EAAE,IAAsB,EAA2B,EAAE;QACxD,cAAc,CAAC,IAAI,CAAC,CAAC;QACrB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC,SAAS,CAAC,YAAY,CACzC,MAAM,CAAC,yBAAyB,EAAE;gBAChC,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE;gBAC/B,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC,CACH,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YACvB,MAAM,GAAG,CAAC;QACZ,CAAC;gBAAS,CAAC;YACT,cAAc,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,EACD,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,104 @@
1
+ import { type Table } from "@tanstack/react-table";
2
+ import { type RecordEnvelope, type RecordFilter } from "@stigmer/protos/ai/stigmer/agentic/datastore/v1/record_io_pb";
3
+ import type { SortValue, WorkbenchColumnDef } from "../resource-workbench/types.js";
4
+ /** Column definition for the records grid — a row is a {@link RecordEnvelope}. */
5
+ export type RecordColumnDef = WorkbenchColumnDef<RecordEnvelope>;
6
+ /** Options for {@link useRecordCollection}. */
7
+ export interface UseRecordCollectionOptions {
8
+ /** Organization slug. Pass `null` to disable fetching. */
9
+ readonly org: string | null;
10
+ /** Datastore slug. Pass `null` to disable fetching. */
11
+ readonly datastore: string | null;
12
+ /** Collection name. Pass `null` to disable fetching. */
13
+ readonly collection: string | null;
14
+ /** Data partition. Empty or omitted means `"default"` (DD-010). */
15
+ readonly partition?: string;
16
+ /**
17
+ * Typed AND-only filter in the proto shape (DD-005 grammar). The hook
18
+ * adds no grammar — anything expressible here is exactly what
19
+ * `findRecords` serves (DD-008 invariant 1).
20
+ */
21
+ readonly filter?: RecordFilter;
22
+ /** Current page number (1-indexed). @default 1 */
23
+ readonly page?: number;
24
+ /**
25
+ * Page size, 1–100 (the RPC max — one surface, one limit).
26
+ * @default 25 (the RPC default)
27
+ */
28
+ readonly pageSize?: number;
29
+ /**
30
+ * Active sort: `id` is a sortable field name (declared non-json
31
+ * field, or system `id`/`created_at`/`updated_at`). `null` keeps the
32
+ * server default (`created_at` desc, `id` tiebreak).
33
+ */
34
+ readonly sort?: SortValue | null;
35
+ /** Called when the user changes the sort via a column header click. */
36
+ readonly onSortChange?: (sort: SortValue | null) => void;
37
+ /** Column definitions for the grid, converted to TanStack columns internally. */
38
+ readonly columns?: readonly RecordColumnDef[];
39
+ }
40
+ /** Return value of {@link useRecordCollection}. */
41
+ export interface UseRecordCollectionReturn {
42
+ /** Records in the current page. */
43
+ readonly records: readonly RecordEnvelope[];
44
+ /** Total records matching the filter (across all pages). */
45
+ readonly total: number;
46
+ /** Total number of pages at the current page size. */
47
+ readonly totalPages: number;
48
+ /** The current page number (mirrors input). */
49
+ readonly currentPage: number;
50
+ /** `true` during the initial fetch (no data yet). */
51
+ readonly isLoading: boolean;
52
+ /** `true` during a background refetch while stale data is shown. */
53
+ readonly isRefetching: boolean;
54
+ /**
55
+ * Error from the last failed fetch, or `null`. A record-layer
56
+ * `PERMISSION_DENIED` lands here carrying the server's relayable
57
+ * message verbatim — render it as the denied panel, never a silently
58
+ * empty grid (DD-008 SD-3).
59
+ */
60
+ readonly error: Error | null;
61
+ /** Imperatively trigger a refetch (e.g. after a record write). */
62
+ readonly refetch: () => void;
63
+ /**
64
+ * The TanStack Table instance for `ResourceTable` (or custom
65
+ * renderers). `null` when no columns are provided.
66
+ */
67
+ readonly table: Table<RecordEnvelope> | null;
68
+ }
69
+ /**
70
+ * Headless hook that manages records-grid state: `findRecords` fetching,
71
+ * server-side sort, and RPC limit/offset pagination.
72
+ *
73
+ * The deliberate sibling of `useResourceCollection` (DD-008 SD-2):
74
+ * same headless shape — `useFetch` underneath, TanStack table with
75
+ * `manualPagination`/`manualSorting`, controlled sort via
76
+ * `sort`/`onSortChange` — but the record data contract, which the
77
+ * resource collection structurally cannot carry (its fetch path is
78
+ * hardcoded to `ListParams`/`SearchResult`). Mirrored, not retrofitted,
79
+ * so the SDK stays learnable; the produced table feeds the same
80
+ * presentational `ResourceTable`.
81
+ *
82
+ * Everything is server-side: filtering (the typed proto filter),
83
+ * sorting (single-field `order_by`), and pagination (limit/offset,
84
+ * default 25, max 100). The hook performs no client-side filtering or
85
+ * sorting — one query surface (DD-008 invariant 1).
86
+ *
87
+ * @example
88
+ * ```tsx
89
+ * const collection = useRecordCollection({
90
+ * org: "acme",
91
+ * datastore: "clinic",
92
+ * collection: "bookings",
93
+ * partition,
94
+ * filter,
95
+ * page,
96
+ * sort,
97
+ * onSortChange: setSort,
98
+ * columns: recordColumns,
99
+ * });
100
+ * return <ResourceTable table={collection.table} />;
101
+ * ```
102
+ */
103
+ export declare function useRecordCollection(options: UseRecordCollectionOptions): UseRecordCollectionReturn;
104
+ //# sourceMappingURL=useRecordCollection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRecordCollection.d.ts","sourceRoot":"","sources":["../../src/datastore/useRecordCollection.ts"],"names":[],"mappings":"AAGA,OAAO,EAKL,KAAK,KAAK,EACX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAKL,KAAK,cAAc,EACnB,KAAK,YAAY,EAClB,MAAM,8DAA8D,CAAC;AAGtE,OAAO,KAAK,EAAiB,SAAS,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEnG,kFAAkF;AAClF,MAAM,MAAM,eAAe,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC;AAEjE,+CAA+C;AAC/C,MAAM,WAAW,0BAA0B;IACzC,0DAA0D;IAC1D,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,uDAAuD;IACvD,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,wDAAwD;IACxD,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,mEAAmE;IACnE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAC/B,kDAAkD;IAClD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IACjC,uEAAuE;IACvE,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,CAAC;IACzD,iFAAiF;IACjF,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;CAC/C;AAED,mDAAmD;AACnD,MAAM,WAAW,yBAAyB;IACxC,mCAAmC;IACnC,QAAQ,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,CAAC;IAC5C,4DAA4D;IAC5D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,sDAAsD;IACtD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,+CAA+C;IAC/C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,qDAAqD;IACrD,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,oEAAoE;IACpE,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC7B,kEAAkE;IAClE,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;CAC9C;AAYD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,0BAA0B,GAClC,yBAAyB,CAsH3B"}
@@ -0,0 +1,136 @@
1
+ "use client";
2
+ import { useCallback, useMemo, useRef } from "react";
3
+ import { getCoreRowModel, useReactTable, } from "@tanstack/react-table";
4
+ import { create, toJsonString } from "@bufbuild/protobuf";
5
+ import { FindRecordsRequestSchema, RecordFilterSchema, RecordOrderBySchema, RecordSortDirection, } from "@stigmer/protos/ai/stigmer/agentic/datastore/v1/record_io_pb";
6
+ import { useStigmer } from "../hooks.js";
7
+ import { useFetch } from "../internal/useFetch.js";
8
+ const DEFAULT_PAGE_SIZE = 25;
9
+ const MAX_PAGE_SIZE = 100;
10
+ const INITIAL_DATA = { records: [], total: 0 };
11
+ /**
12
+ * Headless hook that manages records-grid state: `findRecords` fetching,
13
+ * server-side sort, and RPC limit/offset pagination.
14
+ *
15
+ * The deliberate sibling of `useResourceCollection` (DD-008 SD-2):
16
+ * same headless shape — `useFetch` underneath, TanStack table with
17
+ * `manualPagination`/`manualSorting`, controlled sort via
18
+ * `sort`/`onSortChange` — but the record data contract, which the
19
+ * resource collection structurally cannot carry (its fetch path is
20
+ * hardcoded to `ListParams`/`SearchResult`). Mirrored, not retrofitted,
21
+ * so the SDK stays learnable; the produced table feeds the same
22
+ * presentational `ResourceTable`.
23
+ *
24
+ * Everything is server-side: filtering (the typed proto filter),
25
+ * sorting (single-field `order_by`), and pagination (limit/offset,
26
+ * default 25, max 100). The hook performs no client-side filtering or
27
+ * sorting — one query surface (DD-008 invariant 1).
28
+ *
29
+ * @example
30
+ * ```tsx
31
+ * const collection = useRecordCollection({
32
+ * org: "acme",
33
+ * datastore: "clinic",
34
+ * collection: "bookings",
35
+ * partition,
36
+ * filter,
37
+ * page,
38
+ * sort,
39
+ * onSortChange: setSort,
40
+ * columns: recordColumns,
41
+ * });
42
+ * return <ResourceTable table={collection.table} />;
43
+ * ```
44
+ */
45
+ export function useRecordCollection(options) {
46
+ const { org, datastore, collection, partition = "", filter, page = 1, pageSize = DEFAULT_PAGE_SIZE, sort = null, onSortChange, columns = [], } = options;
47
+ const stigmer = useStigmer();
48
+ const limit = Math.min(Math.max(pageSize, 1), MAX_PAGE_SIZE);
49
+ const offset = (Math.max(page, 1) - 1) * limit;
50
+ // Proto messages are typically rebuilt each render; serialized JSON is
51
+ // the stable identity for dependency comparison.
52
+ const filterKey = filter ? toJsonString(RecordFilterSchema, filter) : "";
53
+ const orderBy = useMemo(() => {
54
+ if (!sort)
55
+ return undefined;
56
+ return create(RecordOrderBySchema, {
57
+ field: sort.id,
58
+ direction: sort.direction === "desc" ? RecordSortDirection.desc : RecordSortDirection.asc,
59
+ });
60
+ }, [sort]);
61
+ const orderByKey = orderBy ? toJsonString(RecordOrderBySchema, orderBy) : "";
62
+ // --- Data fetching via useFetch -----------------------------------------
63
+ const { data, isLoading, isRefetching, error, refetch } = useFetch(org && datastore && collection
64
+ ? async () => {
65
+ const result = await stigmer.datastore.findRecords(create(FindRecordsRequestSchema, {
66
+ org,
67
+ datastore,
68
+ collection,
69
+ partition,
70
+ filter,
71
+ orderBy,
72
+ limit,
73
+ offset,
74
+ }));
75
+ return { records: result.records, total: result.total };
76
+ }
77
+ : null, [org, datastore, collection, partition, filterKey, orderByKey, limit, offset, stigmer], INITIAL_DATA);
78
+ // --- TanStack Table sorting bridge --------------------------------------
79
+ const sortingState = useMemo(() => {
80
+ if (!sort)
81
+ return [];
82
+ return [{ id: sort.id, desc: sort.direction === "desc" }];
83
+ }, [sort]);
84
+ const onSortChangeRef = useRef(onSortChange);
85
+ onSortChangeRef.current = onSortChange;
86
+ const handleSortingChange = useCallback((updater) => {
87
+ const next = typeof updater === "function" ? updater(sortingState) : updater;
88
+ if (next.length === 0) {
89
+ onSortChangeRef.current?.(null);
90
+ }
91
+ else {
92
+ const col = next[0];
93
+ onSortChangeRef.current?.({
94
+ id: col.id,
95
+ direction: (col.desc ? "desc" : "asc"),
96
+ });
97
+ }
98
+ }, [sortingState]);
99
+ // --- TanStack Table column conversion -----------------------------------
100
+ const tanstackColumns = useMemo(() => {
101
+ return columns.map((col) => ({
102
+ id: col.id,
103
+ header: col.header,
104
+ cell: (info) => col.cell(info.row.original),
105
+ enableSorting: col.sortable ?? false,
106
+ size: col.minWidth,
107
+ minSize: col.minWidth,
108
+ }));
109
+ }, [columns]);
110
+ // --- TanStack Table instance -------------------------------------------
111
+ // No getSortedRowModel: sorting is entirely server-side (manualSorting)
112
+ // and the page arrives in server order — a client sort model would be
113
+ // dead code implying a second sorting authority.
114
+ const table = useReactTable({
115
+ data: data.records,
116
+ columns: tanstackColumns,
117
+ state: { sorting: sortingState },
118
+ onSortingChange: handleSortingChange,
119
+ getCoreRowModel: getCoreRowModel(),
120
+ getRowId: (row) => row.id,
121
+ manualPagination: true,
122
+ manualSorting: true,
123
+ });
124
+ return {
125
+ records: data.records,
126
+ total: data.total,
127
+ totalPages: Math.ceil(data.total / limit),
128
+ currentPage: page,
129
+ isLoading,
130
+ isRefetching,
131
+ error,
132
+ refetch,
133
+ table: tanstackColumns.length > 0 ? table : null,
134
+ };
135
+ }
136
+ //# sourceMappingURL=useRecordCollection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRecordCollection.js","sourceRoot":"","sources":["../../src/datastore/useRecordCollection.ts"],"names":[],"mappings":"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"}