@pyric/ui 0.1.0-alpha.7

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 (594) hide show
  1. package/README.md +79 -0
  2. package/dist/agents/ContextWindowUsage.d.ts +67 -0
  3. package/dist/agents/ContextWindowUsage.d.ts.map +1 -0
  4. package/dist/agents/ContextWindowUsage.js +115 -0
  5. package/dist/agents/ContextWindowUsage.js.map +1 -0
  6. package/dist/agents/EmptyState.d.ts +18 -0
  7. package/dist/agents/EmptyState.d.ts.map +1 -0
  8. package/dist/agents/EmptyState.js +11 -0
  9. package/dist/agents/EmptyState.js.map +1 -0
  10. package/dist/agents/Fold.d.ts +37 -0
  11. package/dist/agents/Fold.d.ts.map +1 -0
  12. package/dist/agents/Fold.js +18 -0
  13. package/dist/agents/Fold.js.map +1 -0
  14. package/dist/agents/Modal.d.ts +25 -0
  15. package/dist/agents/Modal.d.ts.map +1 -0
  16. package/dist/agents/Modal.js +28 -0
  17. package/dist/agents/Modal.js.map +1 -0
  18. package/dist/agents/PulsingDot.d.ts +21 -0
  19. package/dist/agents/PulsingDot.d.ts.map +1 -0
  20. package/dist/agents/PulsingDot.js +18 -0
  21. package/dist/agents/PulsingDot.js.map +1 -0
  22. package/dist/agents/index.d.ts +15 -0
  23. package/dist/agents/index.d.ts.map +1 -0
  24. package/dist/agents/index.js +15 -0
  25. package/dist/agents/index.js.map +1 -0
  26. package/dist/auth/authApi.d.ts +32 -0
  27. package/dist/auth/authApi.d.ts.map +1 -0
  28. package/dist/auth/authApi.js +27 -0
  29. package/dist/auth/authApi.js.map +1 -0
  30. package/dist/auth/claims.d.ts +27 -0
  31. package/dist/auth/claims.d.ts.map +1 -0
  32. package/dist/auth/claims.js +58 -0
  33. package/dist/auth/claims.js.map +1 -0
  34. package/dist/auth/components/AuthProviderToggles.d.ts +31 -0
  35. package/dist/auth/components/AuthProviderToggles.d.ts.map +1 -0
  36. package/dist/auth/components/AuthProviderToggles.js +48 -0
  37. package/dist/auth/components/AuthProviderToggles.js.map +1 -0
  38. package/dist/auth/components/AuthSignInHelper.d.ts +57 -0
  39. package/dist/auth/components/AuthSignInHelper.d.ts.map +1 -0
  40. package/dist/auth/components/AuthSignInHelper.js +69 -0
  41. package/dist/auth/components/AuthSignInHelper.js.map +1 -0
  42. package/dist/auth/components/AuthUserForm.d.ts +84 -0
  43. package/dist/auth/components/AuthUserForm.d.ts.map +1 -0
  44. package/dist/auth/components/AuthUserForm.js +89 -0
  45. package/dist/auth/components/AuthUserForm.js.map +1 -0
  46. package/dist/auth/components/AuthUserList.d.ts +51 -0
  47. package/dist/auth/components/AuthUserList.d.ts.map +1 -0
  48. package/dist/auth/components/AuthUserList.js +46 -0
  49. package/dist/auth/components/AuthUserList.js.map +1 -0
  50. package/dist/auth/components/ClaimsField.d.ts +22 -0
  51. package/dist/auth/components/ClaimsField.d.ts.map +1 -0
  52. package/dist/auth/components/ClaimsField.js +11 -0
  53. package/dist/auth/components/ClaimsField.js.map +1 -0
  54. package/dist/auth/components/confirmActions.d.ts +40 -0
  55. package/dist/auth/components/confirmActions.d.ts.map +1 -0
  56. package/dist/auth/components/confirmActions.js +49 -0
  57. package/dist/auth/components/confirmActions.js.map +1 -0
  58. package/dist/auth/controller.d.ts +73 -0
  59. package/dist/auth/controller.d.ts.map +1 -0
  60. package/dist/auth/controller.js +139 -0
  61. package/dist/auth/controller.js.map +1 -0
  62. package/dist/auth/hooks/index.d.ts +7 -0
  63. package/dist/auth/hooks/index.d.ts.map +1 -0
  64. package/dist/auth/hooks/index.js +7 -0
  65. package/dist/auth/hooks/index.js.map +1 -0
  66. package/dist/auth/hooks/useAuthFlowHelper.d.ts +30 -0
  67. package/dist/auth/hooks/useAuthFlowHelper.d.ts.map +1 -0
  68. package/dist/auth/hooks/useAuthFlowHelper.js +30 -0
  69. package/dist/auth/hooks/useAuthFlowHelper.js.map +1 -0
  70. package/dist/auth/hooks/useAuthProviderConfig.d.ts +37 -0
  71. package/dist/auth/hooks/useAuthProviderConfig.d.ts.map +1 -0
  72. package/dist/auth/hooks/useAuthProviderConfig.js +98 -0
  73. package/dist/auth/hooks/useAuthProviderConfig.js.map +1 -0
  74. package/dist/auth/hooks/useAuthUserEditor.d.ts +30 -0
  75. package/dist/auth/hooks/useAuthUserEditor.d.ts.map +1 -0
  76. package/dist/auth/hooks/useAuthUserEditor.js +27 -0
  77. package/dist/auth/hooks/useAuthUserEditor.js.map +1 -0
  78. package/dist/auth/hooks/useAuthUsers.d.ts +38 -0
  79. package/dist/auth/hooks/useAuthUsers.d.ts.map +1 -0
  80. package/dist/auth/hooks/useAuthUsers.js +111 -0
  81. package/dist/auth/hooks/useAuthUsers.js.map +1 -0
  82. package/dist/auth/index.d.ts +11 -0
  83. package/dist/auth/index.d.ts.map +1 -0
  84. package/dist/auth/index.js +13 -0
  85. package/dist/auth/index.js.map +1 -0
  86. package/dist/auth/providers.d.ts +11 -0
  87. package/dist/auth/providers.d.ts.map +1 -0
  88. package/dist/auth/providers.js +28 -0
  89. package/dist/auth/providers.js.map +1 -0
  90. package/dist/auth/reducers/userEditor.d.ts +55 -0
  91. package/dist/auth/reducers/userEditor.d.ts.map +1 -0
  92. package/dist/auth/reducers/userEditor.js +136 -0
  93. package/dist/auth/reducers/userEditor.js.map +1 -0
  94. package/dist/events/components/ActivityActionItems.d.ts +45 -0
  95. package/dist/events/components/ActivityActionItems.d.ts.map +1 -0
  96. package/dist/events/components/ActivityActionItems.js +68 -0
  97. package/dist/events/components/ActivityActionItems.js.map +1 -0
  98. package/dist/events/components/ActivityGrid.d.ts +65 -0
  99. package/dist/events/components/ActivityGrid.d.ts.map +1 -0
  100. package/dist/events/components/ActivityGrid.js +61 -0
  101. package/dist/events/components/ActivityGrid.js.map +1 -0
  102. package/dist/events/components/ActivityGridRow.d.ts +31 -0
  103. package/dist/events/components/ActivityGridRow.d.ts.map +1 -0
  104. package/dist/events/components/ActivityGridRow.js +23 -0
  105. package/dist/events/components/ActivityGridRow.js.map +1 -0
  106. package/dist/events/components/ProposedChangeDiff.d.ts +46 -0
  107. package/dist/events/components/ProposedChangeDiff.d.ts.map +1 -0
  108. package/dist/events/components/ProposedChangeDiff.js +60 -0
  109. package/dist/events/components/ProposedChangeDiff.js.map +1 -0
  110. package/dist/events/components/format.d.ts +11 -0
  111. package/dist/events/components/format.d.ts.map +1 -0
  112. package/dist/events/components/format.js +26 -0
  113. package/dist/events/components/format.js.map +1 -0
  114. package/dist/events/components/index.d.ts +6 -0
  115. package/dist/events/components/index.d.ts.map +1 -0
  116. package/dist/events/components/index.js +6 -0
  117. package/dist/events/components/index.js.map +1 -0
  118. package/dist/events/digest.d.ts +167 -0
  119. package/dist/events/digest.d.ts.map +1 -0
  120. package/dist/events/digest.js +426 -0
  121. package/dist/events/digest.js.map +1 -0
  122. package/dist/events/hooks/index.d.ts +3 -0
  123. package/dist/events/hooks/index.d.ts.map +1 -0
  124. package/dist/events/hooks/index.js +3 -0
  125. package/dist/events/hooks/index.js.map +1 -0
  126. package/dist/events/hooks/useActivityDigest.d.ts +27 -0
  127. package/dist/events/hooks/useActivityDigest.d.ts.map +1 -0
  128. package/dist/events/hooks/useActivityDigest.js +18 -0
  129. package/dist/events/hooks/useActivityDigest.js.map +1 -0
  130. package/dist/events/hooks/useActivityStream.d.ts +44 -0
  131. package/dist/events/hooks/useActivityStream.d.ts.map +1 -0
  132. package/dist/events/hooks/useActivityStream.js +38 -0
  133. package/dist/events/hooks/useActivityStream.js.map +1 -0
  134. package/dist/events/index.d.ts +15 -0
  135. package/dist/events/index.d.ts.map +1 -0
  136. package/dist/events/index.js +14 -0
  137. package/dist/events/index.js.map +1 -0
  138. package/dist/events/types.d.ts +160 -0
  139. package/dist/events/types.d.ts.map +1 -0
  140. package/dist/events/types.js +21 -0
  141. package/dist/events/types.js.map +1 -0
  142. package/dist/firestore/components/CollectionList.d.ts +22 -0
  143. package/dist/firestore/components/CollectionList.d.ts.map +1 -0
  144. package/dist/firestore/components/CollectionList.js +21 -0
  145. package/dist/firestore/components/CollectionList.js.map +1 -0
  146. package/dist/firestore/components/DeleteWithConfirm.d.ts +38 -0
  147. package/dist/firestore/components/DeleteWithConfirm.d.ts.map +1 -0
  148. package/dist/firestore/components/DeleteWithConfirm.js +33 -0
  149. package/dist/firestore/components/DeleteWithConfirm.js.map +1 -0
  150. package/dist/firestore/components/DocumentEditor.d.ts +47 -0
  151. package/dist/firestore/components/DocumentEditor.d.ts.map +1 -0
  152. package/dist/firestore/components/DocumentEditor.js +176 -0
  153. package/dist/firestore/components/DocumentEditor.js.map +1 -0
  154. package/dist/firestore/components/DocumentList.d.ts +60 -0
  155. package/dist/firestore/components/DocumentList.d.ts.map +1 -0
  156. package/dist/firestore/components/DocumentList.js +39 -0
  157. package/dist/firestore/components/DocumentList.js.map +1 -0
  158. package/dist/firestore/components/DocumentPreview.d.ts +68 -0
  159. package/dist/firestore/components/DocumentPreview.d.ts.map +1 -0
  160. package/dist/firestore/components/DocumentPreview.js +76 -0
  161. package/dist/firestore/components/DocumentPreview.js.map +1 -0
  162. package/dist/firestore/components/FieldRenderer.d.ts +17 -0
  163. package/dist/firestore/components/FieldRenderer.d.ts.map +1 -0
  164. package/dist/firestore/components/FieldRenderer.js +16 -0
  165. package/dist/firestore/components/FieldRenderer.js.map +1 -0
  166. package/dist/firestore/components/QueryBuilder.d.ts +25 -0
  167. package/dist/firestore/components/QueryBuilder.d.ts.map +1 -0
  168. package/dist/firestore/components/QueryBuilder.js +78 -0
  169. package/dist/firestore/components/QueryBuilder.js.map +1 -0
  170. package/dist/firestore/components/ReferencePicker.d.ts +33 -0
  171. package/dist/firestore/components/ReferencePicker.d.ts.map +1 -0
  172. package/dist/firestore/components/ReferencePicker.js +42 -0
  173. package/dist/firestore/components/ReferencePicker.js.map +1 -0
  174. package/dist/firestore/components/TreeEntry.d.ts +15 -0
  175. package/dist/firestore/components/TreeEntry.d.ts.map +1 -0
  176. package/dist/firestore/components/TreeEntry.js +23 -0
  177. package/dist/firestore/components/TreeEntry.js.map +1 -0
  178. package/dist/firestore/components/context.d.ts +18 -0
  179. package/dist/firestore/components/context.d.ts.map +1 -0
  180. package/dist/firestore/components/context.js +7 -0
  181. package/dist/firestore/components/context.js.map +1 -0
  182. package/dist/firestore/fieldEditors/array.d.ts +3 -0
  183. package/dist/firestore/fieldEditors/array.d.ts.map +1 -0
  184. package/dist/firestore/fieldEditors/array.js +16 -0
  185. package/dist/firestore/fieldEditors/array.js.map +1 -0
  186. package/dist/firestore/fieldEditors/boolean.d.ts +3 -0
  187. package/dist/firestore/fieldEditors/boolean.d.ts.map +1 -0
  188. package/dist/firestore/fieldEditors/boolean.js +13 -0
  189. package/dist/firestore/fieldEditors/boolean.js.map +1 -0
  190. package/dist/firestore/fieldEditors/bytes.d.ts +4 -0
  191. package/dist/firestore/fieldEditors/bytes.d.ts.map +1 -0
  192. package/dist/firestore/fieldEditors/bytes.js +31 -0
  193. package/dist/firestore/fieldEditors/bytes.js.map +1 -0
  194. package/dist/firestore/fieldEditors/geopoint.d.ts +4 -0
  195. package/dist/firestore/fieldEditors/geopoint.d.ts.map +1 -0
  196. package/dist/firestore/fieldEditors/geopoint.js +32 -0
  197. package/dist/firestore/fieldEditors/geopoint.js.map +1 -0
  198. package/dist/firestore/fieldEditors/map.d.ts +3 -0
  199. package/dist/firestore/fieldEditors/map.d.ts.map +1 -0
  200. package/dist/firestore/fieldEditors/map.js +19 -0
  201. package/dist/firestore/fieldEditors/map.js.map +1 -0
  202. package/dist/firestore/fieldEditors/null.d.ts +3 -0
  203. package/dist/firestore/fieldEditors/null.d.ts.map +1 -0
  204. package/dist/firestore/fieldEditors/null.js +17 -0
  205. package/dist/firestore/fieldEditors/null.js.map +1 -0
  206. package/dist/firestore/fieldEditors/number.d.ts +3 -0
  207. package/dist/firestore/fieldEditors/number.d.ts.map +1 -0
  208. package/dist/firestore/fieldEditors/number.js +24 -0
  209. package/dist/firestore/fieldEditors/number.js.map +1 -0
  210. package/dist/firestore/fieldEditors/reference.d.ts +4 -0
  211. package/dist/firestore/fieldEditors/reference.d.ts.map +1 -0
  212. package/dist/firestore/fieldEditors/reference.js +49 -0
  213. package/dist/firestore/fieldEditors/reference.js.map +1 -0
  214. package/dist/firestore/fieldEditors/registry.d.ts +16 -0
  215. package/dist/firestore/fieldEditors/registry.d.ts.map +1 -0
  216. package/dist/firestore/fieldEditors/registry.js +42 -0
  217. package/dist/firestore/fieldEditors/registry.js.map +1 -0
  218. package/dist/firestore/fieldEditors/string.d.ts +3 -0
  219. package/dist/firestore/fieldEditors/string.d.ts.map +1 -0
  220. package/dist/firestore/fieldEditors/string.js +13 -0
  221. package/dist/firestore/fieldEditors/string.js.map +1 -0
  222. package/dist/firestore/fieldEditors/timestamp.d.ts +4 -0
  223. package/dist/firestore/fieldEditors/timestamp.d.ts.map +1 -0
  224. package/dist/firestore/fieldEditors/timestamp.js +52 -0
  225. package/dist/firestore/fieldEditors/timestamp.js.map +1 -0
  226. package/dist/firestore/fieldEditors/types.d.ts +64 -0
  227. package/dist/firestore/fieldEditors/types.d.ts.map +1 -0
  228. package/dist/firestore/fieldEditors/types.js +2 -0
  229. package/dist/firestore/fieldEditors/types.js.map +1 -0
  230. package/dist/firestore/fieldEditors/vector.d.ts +29 -0
  231. package/dist/firestore/fieldEditors/vector.d.ts.map +1 -0
  232. package/dist/firestore/fieldEditors/vector.js +93 -0
  233. package/dist/firestore/fieldEditors/vector.js.map +1 -0
  234. package/dist/firestore/firestoreApi.d.ts +35 -0
  235. package/dist/firestore/firestoreApi.d.ts.map +1 -0
  236. package/dist/firestore/firestoreApi.js +28 -0
  237. package/dist/firestore/firestoreApi.js.map +1 -0
  238. package/dist/firestore/hooks/coerceError.d.ts +17 -0
  239. package/dist/firestore/hooks/coerceError.d.ts.map +1 -0
  240. package/dist/firestore/hooks/coerceError.js +41 -0
  241. package/dist/firestore/hooks/coerceError.js.map +1 -0
  242. package/dist/firestore/hooks/index.d.ts +10 -0
  243. package/dist/firestore/hooks/index.d.ts.map +1 -0
  244. package/dist/firestore/hooks/index.js +10 -0
  245. package/dist/firestore/hooks/index.js.map +1 -0
  246. package/dist/firestore/hooks/useCollectionList.d.ts +37 -0
  247. package/dist/firestore/hooks/useCollectionList.d.ts.map +1 -0
  248. package/dist/firestore/hooks/useCollectionList.js +51 -0
  249. package/dist/firestore/hooks/useCollectionList.js.map +1 -0
  250. package/dist/firestore/hooks/useDocumentEditor.d.ts +58 -0
  251. package/dist/firestore/hooks/useDocumentEditor.d.ts.map +1 -0
  252. package/dist/firestore/hooks/useDocumentEditor.js +68 -0
  253. package/dist/firestore/hooks/useDocumentEditor.js.map +1 -0
  254. package/dist/firestore/hooks/useDocumentList.d.ts +45 -0
  255. package/dist/firestore/hooks/useDocumentList.d.ts.map +1 -0
  256. package/dist/firestore/hooks/useDocumentList.js +112 -0
  257. package/dist/firestore/hooks/useDocumentList.js.map +1 -0
  258. package/dist/firestore/hooks/useDocumentSubcollections.d.ts +29 -0
  259. package/dist/firestore/hooks/useDocumentSubcollections.d.ts.map +1 -0
  260. package/dist/firestore/hooks/useDocumentSubcollections.js +48 -0
  261. package/dist/firestore/hooks/useDocumentSubcollections.js.map +1 -0
  262. package/dist/firestore/hooks/useFirestoreCollection.d.ts +14 -0
  263. package/dist/firestore/hooks/useFirestoreCollection.d.ts.map +1 -0
  264. package/dist/firestore/hooks/useFirestoreCollection.js +35 -0
  265. package/dist/firestore/hooks/useFirestoreCollection.js.map +1 -0
  266. package/dist/firestore/hooks/useFirestoreDoc.d.ts +17 -0
  267. package/dist/firestore/hooks/useFirestoreDoc.d.ts.map +1 -0
  268. package/dist/firestore/hooks/useFirestoreDoc.js +34 -0
  269. package/dist/firestore/hooks/useFirestoreDoc.js.map +1 -0
  270. package/dist/firestore/hooks/useQueryBuilder.d.ts +51 -0
  271. package/dist/firestore/hooks/useQueryBuilder.d.ts.map +1 -0
  272. package/dist/firestore/hooks/useQueryBuilder.js +110 -0
  273. package/dist/firestore/hooks/useQueryBuilder.js.map +1 -0
  274. package/dist/firestore/hooks/useRecursiveDelete.d.ts +40 -0
  275. package/dist/firestore/hooks/useRecursiveDelete.d.ts.map +1 -0
  276. package/dist/firestore/hooks/useRecursiveDelete.js +44 -0
  277. package/dist/firestore/hooks/useRecursiveDelete.js.map +1 -0
  278. package/dist/firestore/hooks/useReferencePicker.d.ts +70 -0
  279. package/dist/firestore/hooks/useReferencePicker.d.ts.map +1 -0
  280. package/dist/firestore/hooks/useReferencePicker.js +140 -0
  281. package/dist/firestore/hooks/useReferencePicker.js.map +1 -0
  282. package/dist/firestore/import/parseImport.d.ts +55 -0
  283. package/dist/firestore/import/parseImport.d.ts.map +1 -0
  284. package/dist/firestore/import/parseImport.js +101 -0
  285. package/dist/firestore/import/parseImport.js.map +1 -0
  286. package/dist/firestore/index.d.ts +20 -0
  287. package/dist/firestore/index.d.ts.map +1 -0
  288. package/dist/firestore/index.js +28 -0
  289. package/dist/firestore/index.js.map +1 -0
  290. package/dist/firestore/reducers/defaults.d.ts +10 -0
  291. package/dist/firestore/reducers/defaults.d.ts.map +1 -0
  292. package/dist/firestore/reducers/defaults.js +37 -0
  293. package/dist/firestore/reducers/defaults.js.map +1 -0
  294. package/dist/firestore/reducers/documentEditor.d.ts +23 -0
  295. package/dist/firestore/reducers/documentEditor.d.ts.map +1 -0
  296. package/dist/firestore/reducers/documentEditor.js +199 -0
  297. package/dist/firestore/reducers/documentEditor.js.map +1 -0
  298. package/dist/firestore/reducers/tree.d.ts +28 -0
  299. package/dist/firestore/reducers/tree.d.ts.map +1 -0
  300. package/dist/firestore/reducers/tree.js +129 -0
  301. package/dist/firestore/reducers/tree.js.map +1 -0
  302. package/dist/firestore/reducers/types.d.ts +112 -0
  303. package/dist/firestore/reducers/types.d.ts.map +1 -0
  304. package/dist/firestore/reducers/types.js +2 -0
  305. package/dist/firestore/reducers/types.js.map +1 -0
  306. package/dist/firestore/reducers/validation.d.ts +25 -0
  307. package/dist/firestore/reducers/validation.d.ts.map +1 -0
  308. package/dist/firestore/reducers/validation.js +121 -0
  309. package/dist/firestore/reducers/validation.js.map +1 -0
  310. package/dist/firestore/types.d.ts +77 -0
  311. package/dist/firestore/types.d.ts.map +1 -0
  312. package/dist/firestore/types.js +196 -0
  313. package/dist/firestore/types.js.map +1 -0
  314. package/dist/firestore/validation/ids.d.ts +23 -0
  315. package/dist/firestore/validation/ids.d.ts.map +1 -0
  316. package/dist/firestore/validation/ids.js +46 -0
  317. package/dist/firestore/validation/ids.js.map +1 -0
  318. package/dist/index.d.ts +2 -0
  319. package/dist/index.d.ts.map +1 -0
  320. package/dist/index.js +2 -0
  321. package/dist/index.js.map +1 -0
  322. package/dist/primitives/Badge.d.ts +28 -0
  323. package/dist/primitives/Badge.d.ts.map +1 -0
  324. package/dist/primitives/Badge.js +11 -0
  325. package/dist/primitives/Badge.js.map +1 -0
  326. package/dist/primitives/ConfirmDialog.d.ts +42 -0
  327. package/dist/primitives/ConfirmDialog.d.ts.map +1 -0
  328. package/dist/primitives/ConfirmDialog.js +61 -0
  329. package/dist/primitives/ConfirmDialog.js.map +1 -0
  330. package/dist/primitives/CopyButton.d.ts +28 -0
  331. package/dist/primitives/CopyButton.d.ts.map +1 -0
  332. package/dist/primitives/CopyButton.js +27 -0
  333. package/dist/primitives/CopyButton.js.map +1 -0
  334. package/dist/primitives/JsonView.d.ts +29 -0
  335. package/dist/primitives/JsonView.d.ts.map +1 -0
  336. package/dist/primitives/JsonView.js +56 -0
  337. package/dist/primitives/JsonView.js.map +1 -0
  338. package/dist/primitives/SegmentedControl.d.ts +37 -0
  339. package/dist/primitives/SegmentedControl.d.ts.map +1 -0
  340. package/dist/primitives/SegmentedControl.js +18 -0
  341. package/dist/primitives/SegmentedControl.js.map +1 -0
  342. package/dist/primitives/Toast.d.ts +48 -0
  343. package/dist/primitives/Toast.d.ts.map +1 -0
  344. package/dist/primitives/Toast.js +60 -0
  345. package/dist/primitives/Toast.js.map +1 -0
  346. package/dist/primitives/VirtualList.d.ts +37 -0
  347. package/dist/primitives/VirtualList.d.ts.map +1 -0
  348. package/dist/primitives/VirtualList.js +47 -0
  349. package/dist/primitives/VirtualList.js.map +1 -0
  350. package/dist/primitives/hooks/useContainerSize.d.ts +29 -0
  351. package/dist/primitives/hooks/useContainerSize.d.ts.map +1 -0
  352. package/dist/primitives/hooks/useContainerSize.js +45 -0
  353. package/dist/primitives/hooks/useContainerSize.js.map +1 -0
  354. package/dist/primitives/index.d.ts +10 -0
  355. package/dist/primitives/index.d.ts.map +1 -0
  356. package/dist/primitives/index.js +10 -0
  357. package/dist/primitives/index.js.map +1 -0
  358. package/dist/primitives/useConfirm.d.ts +34 -0
  359. package/dist/primitives/useConfirm.d.ts.map +1 -0
  360. package/dist/primitives/useConfirm.js +63 -0
  361. package/dist/primitives/useConfirm.js.map +1 -0
  362. package/dist/rtdb/components/RtdbPathBar.d.ts +31 -0
  363. package/dist/rtdb/components/RtdbPathBar.d.ts.map +1 -0
  364. package/dist/rtdb/components/RtdbPathBar.js +47 -0
  365. package/dist/rtdb/components/RtdbPathBar.js.map +1 -0
  366. package/dist/rtdb/components/RtdbTree.d.ts +38 -0
  367. package/dist/rtdb/components/RtdbTree.d.ts.map +1 -0
  368. package/dist/rtdb/components/RtdbTree.js +103 -0
  369. package/dist/rtdb/components/RtdbTree.js.map +1 -0
  370. package/dist/rtdb/editor.d.ts +25 -0
  371. package/dist/rtdb/editor.d.ts.map +1 -0
  372. package/dist/rtdb/editor.js +79 -0
  373. package/dist/rtdb/editor.js.map +1 -0
  374. package/dist/rtdb/hooks/useRtdbTree.d.ts +31 -0
  375. package/dist/rtdb/hooks/useRtdbTree.d.ts.map +1 -0
  376. package/dist/rtdb/hooks/useRtdbTree.js +49 -0
  377. package/dist/rtdb/hooks/useRtdbTree.js.map +1 -0
  378. package/dist/rtdb/index.d.ts +17 -0
  379. package/dist/rtdb/index.d.ts.map +1 -0
  380. package/dist/rtdb/index.js +21 -0
  381. package/dist/rtdb/index.js.map +1 -0
  382. package/dist/rtdb/pathInput.d.ts +28 -0
  383. package/dist/rtdb/pathInput.d.ts.map +1 -0
  384. package/dist/rtdb/pathInput.js +40 -0
  385. package/dist/rtdb/pathInput.js.map +1 -0
  386. package/dist/rtdb/reducers/tree.d.ts +86 -0
  387. package/dist/rtdb/reducers/tree.d.ts.map +1 -0
  388. package/dist/rtdb/reducers/tree.js +131 -0
  389. package/dist/rtdb/reducers/tree.js.map +1 -0
  390. package/dist/rtdb/rtdbApi.d.ts +20 -0
  391. package/dist/rtdb/rtdbApi.d.ts.map +1 -0
  392. package/dist/rtdb/rtdbApi.js +2 -0
  393. package/dist/rtdb/rtdbApi.js.map +1 -0
  394. package/dist/rtdb/values.d.ts +44 -0
  395. package/dist/rtdb/values.d.ts.map +1 -0
  396. package/dist/rtdb/values.js +143 -0
  397. package/dist/rtdb/values.js.map +1 -0
  398. package/dist/rules/components/DenialInspector.d.ts +18 -0
  399. package/dist/rules/components/DenialInspector.d.ts.map +1 -0
  400. package/dist/rules/components/DenialInspector.js +58 -0
  401. package/dist/rules/components/DenialInspector.js.map +1 -0
  402. package/dist/rules/components/format.d.ts +56 -0
  403. package/dist/rules/components/format.d.ts.map +1 -0
  404. package/dist/rules/components/format.js +137 -0
  405. package/dist/rules/components/format.js.map +1 -0
  406. package/dist/rules/components/index.d.ts +4 -0
  407. package/dist/rules/components/index.d.ts.map +1 -0
  408. package/dist/rules/components/index.js +4 -0
  409. package/dist/rules/components/index.js.map +1 -0
  410. package/dist/rules/components/scope.d.ts +10 -0
  411. package/dist/rules/components/scope.d.ts.map +1 -0
  412. package/dist/rules/components/scope.js +72 -0
  413. package/dist/rules/components/scope.js.map +1 -0
  414. package/dist/rules/hooks/index.d.ts +2 -0
  415. package/dist/rules/hooks/index.d.ts.map +1 -0
  416. package/dist/rules/hooks/index.js +2 -0
  417. package/dist/rules/hooks/index.js.map +1 -0
  418. package/dist/rules/hooks/useDenialTrace.d.ts +51 -0
  419. package/dist/rules/hooks/useDenialTrace.d.ts.map +1 -0
  420. package/dist/rules/hooks/useDenialTrace.js +58 -0
  421. package/dist/rules/hooks/useDenialTrace.js.map +1 -0
  422. package/dist/rules/index.d.ts +14 -0
  423. package/dist/rules/index.d.ts.map +1 -0
  424. package/dist/rules/index.js +13 -0
  425. package/dist/rules/index.js.map +1 -0
  426. package/dist/rules/types.d.ts +75 -0
  427. package/dist/rules/types.d.ts.map +1 -0
  428. package/dist/rules/types.js +2 -0
  429. package/dist/rules/types.js.map +1 -0
  430. package/dist/storage/collisionRename.d.ts +73 -0
  431. package/dist/storage/collisionRename.d.ts.map +1 -0
  432. package/dist/storage/collisionRename.js +113 -0
  433. package/dist/storage/collisionRename.js.map +1 -0
  434. package/dist/storage/components/DeleteSelectionWithConfirm.d.ts +68 -0
  435. package/dist/storage/components/DeleteSelectionWithConfirm.d.ts.map +1 -0
  436. package/dist/storage/components/DeleteSelectionWithConfirm.js +82 -0
  437. package/dist/storage/components/DeleteSelectionWithConfirm.js.map +1 -0
  438. package/dist/storage/components/ObjectBrowser.d.ts +75 -0
  439. package/dist/storage/components/ObjectBrowser.d.ts.map +1 -0
  440. package/dist/storage/components/ObjectBrowser.js +59 -0
  441. package/dist/storage/components/ObjectBrowser.js.map +1 -0
  442. package/dist/storage/components/ObjectInspector.d.ts +43 -0
  443. package/dist/storage/components/ObjectInspector.d.ts.map +1 -0
  444. package/dist/storage/components/ObjectInspector.js +92 -0
  445. package/dist/storage/components/ObjectInspector.js.map +1 -0
  446. package/dist/storage/components/PathBreadcrumb.d.ts +30 -0
  447. package/dist/storage/components/PathBreadcrumb.d.ts.map +1 -0
  448. package/dist/storage/components/PathBreadcrumb.js +26 -0
  449. package/dist/storage/components/PathBreadcrumb.js.map +1 -0
  450. package/dist/storage/components/UploadDropzone.d.ts +50 -0
  451. package/dist/storage/components/UploadDropzone.d.ts.map +1 -0
  452. package/dist/storage/components/UploadDropzone.js +109 -0
  453. package/dist/storage/components/UploadDropzone.js.map +1 -0
  454. package/dist/storage/folderPlaceholder.d.ts +14 -0
  455. package/dist/storage/folderPlaceholder.d.ts.map +1 -0
  456. package/dist/storage/folderPlaceholder.js +27 -0
  457. package/dist/storage/folderPlaceholder.js.map +1 -0
  458. package/dist/storage/hooks/index.d.ts +9 -0
  459. package/dist/storage/hooks/index.d.ts.map +1 -0
  460. package/dist/storage/hooks/index.js +9 -0
  461. package/dist/storage/hooks/index.js.map +1 -0
  462. package/dist/storage/hooks/useMetadataEditor.d.ts +114 -0
  463. package/dist/storage/hooks/useMetadataEditor.d.ts.map +1 -0
  464. package/dist/storage/hooks/useMetadataEditor.js +193 -0
  465. package/dist/storage/hooks/useMetadataEditor.js.map +1 -0
  466. package/dist/storage/hooks/useObjectUpload.d.ts +109 -0
  467. package/dist/storage/hooks/useObjectUpload.d.ts.map +1 -0
  468. package/dist/storage/hooks/useObjectUpload.js +134 -0
  469. package/dist/storage/hooks/useObjectUpload.js.map +1 -0
  470. package/dist/storage/hooks/usePathState.d.ts +43 -0
  471. package/dist/storage/hooks/usePathState.d.ts.map +1 -0
  472. package/dist/storage/hooks/usePathState.js +42 -0
  473. package/dist/storage/hooks/usePathState.js.map +1 -0
  474. package/dist/storage/hooks/useStorageDelete.d.ts +73 -0
  475. package/dist/storage/hooks/useStorageDelete.d.ts.map +1 -0
  476. package/dist/storage/hooks/useStorageDelete.js +114 -0
  477. package/dist/storage/hooks/useStorageDelete.js.map +1 -0
  478. package/dist/storage/hooks/useStorageList.d.ts +74 -0
  479. package/dist/storage/hooks/useStorageList.d.ts.map +1 -0
  480. package/dist/storage/hooks/useStorageList.js +167 -0
  481. package/dist/storage/hooks/useStorageList.js.map +1 -0
  482. package/dist/storage/hooks/useStorageObject.d.ts +34 -0
  483. package/dist/storage/hooks/useStorageObject.d.ts.map +1 -0
  484. package/dist/storage/hooks/useStorageObject.js +114 -0
  485. package/dist/storage/hooks/useStorageObject.js.map +1 -0
  486. package/dist/storage/hooks/useStorageRulesGate.d.ts +128 -0
  487. package/dist/storage/hooks/useStorageRulesGate.d.ts.map +1 -0
  488. package/dist/storage/hooks/useStorageRulesGate.js +158 -0
  489. package/dist/storage/hooks/useStorageRulesGate.js.map +1 -0
  490. package/dist/storage/hooks/useStorageSelection.d.ts +32 -0
  491. package/dist/storage/hooks/useStorageSelection.d.ts.map +1 -0
  492. package/dist/storage/hooks/useStorageSelection.js +55 -0
  493. package/dist/storage/hooks/useStorageSelection.js.map +1 -0
  494. package/dist/storage/index.d.ts +11 -0
  495. package/dist/storage/index.d.ts.map +1 -0
  496. package/dist/storage/index.js +17 -0
  497. package/dist/storage/index.js.map +1 -0
  498. package/dist/storage/pendingPrefixes.d.ts +73 -0
  499. package/dist/storage/pendingPrefixes.d.ts.map +1 -0
  500. package/dist/storage/pendingPrefixes.js +98 -0
  501. package/dist/storage/pendingPrefixes.js.map +1 -0
  502. package/dist/storage/previews.d.ts +51 -0
  503. package/dist/storage/previews.d.ts.map +1 -0
  504. package/dist/storage/previews.js +73 -0
  505. package/dist/storage/previews.js.map +1 -0
  506. package/dist/storage/storageApi.d.ts +30 -0
  507. package/dist/storage/storageApi.d.ts.map +1 -0
  508. package/dist/storage/storageApi.js +13 -0
  509. package/dist/storage/storageApi.js.map +1 -0
  510. package/dist/traffic/components/RuleHeatmap.d.ts +34 -0
  511. package/dist/traffic/components/RuleHeatmap.d.ts.map +1 -0
  512. package/dist/traffic/components/RuleHeatmap.js +40 -0
  513. package/dist/traffic/components/RuleHeatmap.js.map +1 -0
  514. package/dist/traffic/components/TrafficDetail.d.ts +33 -0
  515. package/dist/traffic/components/TrafficDetail.d.ts.map +1 -0
  516. package/dist/traffic/components/TrafficDetail.js +28 -0
  517. package/dist/traffic/components/TrafficDetail.js.map +1 -0
  518. package/dist/traffic/components/TrafficGroupRow.d.ts +28 -0
  519. package/dist/traffic/components/TrafficGroupRow.d.ts.map +1 -0
  520. package/dist/traffic/components/TrafficGroupRow.js +18 -0
  521. package/dist/traffic/components/TrafficGroupRow.js.map +1 -0
  522. package/dist/traffic/components/TrafficLineChart.d.ts +34 -0
  523. package/dist/traffic/components/TrafficLineChart.d.ts.map +1 -0
  524. package/dist/traffic/components/TrafficLineChart.js +49 -0
  525. package/dist/traffic/components/TrafficLineChart.js.map +1 -0
  526. package/dist/traffic/components/TrafficLog.d.ts +52 -0
  527. package/dist/traffic/components/TrafficLog.d.ts.map +1 -0
  528. package/dist/traffic/components/TrafficLog.js +34 -0
  529. package/dist/traffic/components/TrafficLog.js.map +1 -0
  530. package/dist/traffic/components/TrafficMetricCards.d.ts +26 -0
  531. package/dist/traffic/components/TrafficMetricCards.d.ts.map +1 -0
  532. package/dist/traffic/components/TrafficMetricCards.js +24 -0
  533. package/dist/traffic/components/TrafficMetricCards.js.map +1 -0
  534. package/dist/traffic/components/TrafficRow.d.ts +40 -0
  535. package/dist/traffic/components/TrafficRow.d.ts.map +1 -0
  536. package/dist/traffic/components/TrafficRow.js +27 -0
  537. package/dist/traffic/components/TrafficRow.js.map +1 -0
  538. package/dist/traffic/components/TrafficStats.d.ts +18 -0
  539. package/dist/traffic/components/TrafficStats.d.ts.map +1 -0
  540. package/dist/traffic/components/TrafficStats.js +19 -0
  541. package/dist/traffic/components/TrafficStats.js.map +1 -0
  542. package/dist/traffic/components/TrafficTimeline.d.ts +81 -0
  543. package/dist/traffic/components/TrafficTimeline.d.ts.map +1 -0
  544. package/dist/traffic/components/TrafficTimeline.js +72 -0
  545. package/dist/traffic/components/TrafficTimeline.js.map +1 -0
  546. package/dist/traffic/components/format.d.ts +13 -0
  547. package/dist/traffic/components/format.d.ts.map +1 -0
  548. package/dist/traffic/components/format.js +24 -0
  549. package/dist/traffic/components/format.js.map +1 -0
  550. package/dist/traffic/components/index.d.ts +11 -0
  551. package/dist/traffic/components/index.d.ts.map +1 -0
  552. package/dist/traffic/components/index.js +11 -0
  553. package/dist/traffic/components/index.js.map +1 -0
  554. package/dist/traffic/hooks/index.d.ts +8 -0
  555. package/dist/traffic/hooks/index.d.ts.map +1 -0
  556. package/dist/traffic/hooks/index.js +8 -0
  557. package/dist/traffic/hooks/index.js.map +1 -0
  558. package/dist/traffic/hooks/useRuleHeatmap.d.ts +33 -0
  559. package/dist/traffic/hooks/useRuleHeatmap.d.ts.map +1 -0
  560. package/dist/traffic/hooks/useRuleHeatmap.js +54 -0
  561. package/dist/traffic/hooks/useRuleHeatmap.js.map +1 -0
  562. package/dist/traffic/hooks/useTrafficBuckets.d.ts +71 -0
  563. package/dist/traffic/hooks/useTrafficBuckets.d.ts.map +1 -0
  564. package/dist/traffic/hooks/useTrafficBuckets.js +74 -0
  565. package/dist/traffic/hooks/useTrafficBuckets.js.map +1 -0
  566. package/dist/traffic/hooks/useTrafficFilter.d.ts +40 -0
  567. package/dist/traffic/hooks/useTrafficFilter.d.ts.map +1 -0
  568. package/dist/traffic/hooks/useTrafficFilter.js +33 -0
  569. package/dist/traffic/hooks/useTrafficFilter.js.map +1 -0
  570. package/dist/traffic/hooks/useTrafficGroups.d.ts +47 -0
  571. package/dist/traffic/hooks/useTrafficGroups.d.ts.map +1 -0
  572. package/dist/traffic/hooks/useTrafficGroups.js +73 -0
  573. package/dist/traffic/hooks/useTrafficGroups.js.map +1 -0
  574. package/dist/traffic/hooks/useTrafficMetrics.d.ts +66 -0
  575. package/dist/traffic/hooks/useTrafficMetrics.d.ts.map +1 -0
  576. package/dist/traffic/hooks/useTrafficMetrics.js +156 -0
  577. package/dist/traffic/hooks/useTrafficMetrics.js.map +1 -0
  578. package/dist/traffic/hooks/useTrafficMonitor.d.ts +56 -0
  579. package/dist/traffic/hooks/useTrafficMonitor.d.ts.map +1 -0
  580. package/dist/traffic/hooks/useTrafficMonitor.js +58 -0
  581. package/dist/traffic/hooks/useTrafficMonitor.js.map +1 -0
  582. package/dist/traffic/hooks/useTrafficStats.d.ts +32 -0
  583. package/dist/traffic/hooks/useTrafficStats.d.ts.map +1 -0
  584. package/dist/traffic/hooks/useTrafficStats.js +45 -0
  585. package/dist/traffic/hooks/useTrafficStats.js.map +1 -0
  586. package/dist/traffic/index.d.ts +4 -0
  587. package/dist/traffic/index.d.ts.map +1 -0
  588. package/dist/traffic/index.js +3 -0
  589. package/dist/traffic/index.js.map +1 -0
  590. package/dist/traffic/types.d.ts +72 -0
  591. package/dist/traffic/types.d.ts.map +1 -0
  592. package/dist/traffic/types.js +10 -0
  593. package/dist/traffic/types.js.map +1 -0
  594. package/package.json +116 -0
@@ -0,0 +1,167 @@
1
+ /**
2
+ * The pure activity-digest reducer — folds a `SandboxEvent[]` (the
3
+ * unified stream) into the banded digest the activity grid renders.
4
+ *
5
+ * Kept free of React so it's trivially testable and reusable by a
6
+ * non-React consumer (a CLI session summary, say). `useActivityDigest`
7
+ * is a thin `useMemo` wrapper over `computeActivityDigest`.
8
+ *
9
+ * The categorization is the product (see
10
+ * the design rationale): the can't-miss bands are
11
+ * **denied** (surfaced first, loudly), **added**, **updated**,
12
+ * **removed**, **signed-in / signed-out**, and the catch-alls. Every
13
+ * row + band carries provenance (actor / lens / on-behalf-of) so
14
+ * attribution rides every aggregate, and the band order LEADS with the
15
+ * highest-consequence category present.
16
+ */
17
+ import type { ActivityActor, ActivityEvent, ActivityLens, AnyActivityEvent, ActivityService } from './types.js';
18
+ /**
19
+ * The band a row falls into. `denied` leads; the write bands
20
+ * (added/updated/removed) and the auth bands (signed-in/signed-out)
21
+ * follow; `read`, `errored`, and `other` are the long-tail catch-alls.
22
+ *
23
+ * - `denied` — a rules denial (firestore `request` with `result: 'deny'`).
24
+ * - `errored` — an operational failure (`request` with `result: 'unsupported'`).
25
+ * - `added` — a doc/object created, or a user created.
26
+ * - `updated` — a doc/object/user/rtdb path mutated in place.
27
+ * - `removed` — a doc/object/user deleted.
28
+ * - `signed-in` — an auth sign-in.
29
+ * - `signed-out` — an auth sign-out.
30
+ * - `read` — an allowed firestore read (`get`/`list`).
31
+ * - `other` — anything modelled but uncategorized (e.g. an unknown service op).
32
+ */
33
+ export type ActivityBandKey = 'denied' | 'errored' | 'added' | 'updated' | 'removed' | 'signed-in' | 'signed-out' | 'read' | 'other';
34
+ /**
35
+ * A single grid row — the projection of one event onto the
36
+ * `target · change · for · lens · when` column contract from
37
+ * `c-result.html`. All display-ready strings plus the structured
38
+ * provenance the host may style on.
39
+ */
40
+ export interface ActivityRow {
41
+ /** The originating event's id — stable React key. */
42
+ id: string;
43
+ /** `Date.now()` at the op. Drives the `when` column + recency sort. */
44
+ at: number;
45
+ /** Which band this row was sorted into. */
46
+ band: ActivityBandKey;
47
+ /** True for denials — first-class so hosts flag the row distinctly. */
48
+ denied: boolean;
49
+ /** Originating service. */
50
+ service: ActivityService;
51
+ /** `target` — what was mutated, in the service's addressing scheme
52
+ * (a doc path `notes/3agHoZHZ`, a `uid`, a storage `fullPath`, an
53
+ * rtdb path). Empty string when the event has no addressable target. */
54
+ target: string;
55
+ /** `change` — a short human description of the mutation
56
+ * (`update, owner rule`, `done → true`, `created`, `signed in`). */
57
+ change: string;
58
+ /** `for` — the subject the op acted on behalf of: `request.auth.uid`
59
+ * for firestore, the affected `uid` for auth, else the acting
60
+ * identity. Empty when anonymous / not applicable. */
61
+ for: string;
62
+ /** `lens` — the privilege the op ran under, display-ready
63
+ * (`app`, `as alice`, `admin`). */
64
+ lens: string;
65
+ /** `when` — left undterived here; the grid formats `at` itself, but a
66
+ * pre-rendered relative string is offered for headless consumers. */
67
+ when: string;
68
+ actor: ActivityActor;
69
+ authLens: ActivityLens;
70
+ /** The on-behalf-of subject uid, structured (mirrors `for`). */
71
+ subjectUid: string | null;
72
+ /** Agent plan id, when the op was part of a plan. */
73
+ planId?: string;
74
+ /** The pivot key this row fell under — set only when the digest was
75
+ * computed with `groupBy !== 'none'`. Mirrors the row's `subgroup`. */
76
+ groupKey?: string;
77
+ /** The original event, for drill-in. */
78
+ event: ActivityEvent;
79
+ }
80
+ /**
81
+ * One category band: a header (`label · count · attribution`) plus its
82
+ * rows. Mirrors the mock's `.band` + `.r.data` structure.
83
+ */
84
+ export interface ActivityBand {
85
+ key: ActivityBandKey;
86
+ /** Display label — `Denied`, `Added`, `Updated`, … */
87
+ label: string;
88
+ /** Total rows in the band (== `rows.length`; explicit for the header). */
89
+ count: number;
90
+ /** A short attribution phrase when the band has a dominant actor /
91
+ * subject (`all by alice`, `by the app`, `by agent atlas`). Absent
92
+ * when attribution is mixed — the header then shows just the count. */
93
+ attribution?: string;
94
+ rows: ActivityRow[];
95
+ }
96
+ /**
97
+ * The banded digest — the activity grid's entire model. Bands are
98
+ * pre-sorted lead-with-consequence; `denials` is a flat projection of
99
+ * the consequential rows for the action-items tier.
100
+ */
101
+ export interface ActivityDigest {
102
+ /** Bands in render order — highest-consequence first. Empty bands
103
+ * omitted. Each band may carry `subgroups` when `groupBy !== 'none'`. */
104
+ bands: ActivityBandWithGroups[];
105
+ /** Total rows across all bands (events the digest categorized). */
106
+ total: number;
107
+ /** Of those, how many were denials. */
108
+ deniedCount: number;
109
+ /**
110
+ * The denial rows, flat + recency-sorted — the source for the
111
+ * action-items tier ("4 writes to /notes were denied"). A projection,
112
+ * not a separate aggregation: these rows also live in the `denied` band.
113
+ */
114
+ denials: ActivityRow[];
115
+ }
116
+ /** How rows within each band are pivoted/grouped. */
117
+ export type ActivityGroupBy = 'none' | 'actor' | 'lens' | 'subject' | 'service';
118
+ export interface ActivityDigestOptions {
119
+ /**
120
+ * Row order within a band. `recency` (default) is newest-first to
121
+ * match the mock's `when` column. `chronological` is oldest-first.
122
+ */
123
+ order?: 'recency' | 'chronological';
124
+ /**
125
+ * Pivot rows within each band by an attribution axis. `'none'`
126
+ * (default) leaves the band flat. Any other value splits each band's
127
+ * rows into sub-groups keyed by that axis — surfaced on the row via
128
+ * `groupKey` and exposed as `band.subgroups`. The flat `rows` are
129
+ * always present regardless.
130
+ */
131
+ groupBy?: ActivityGroupBy;
132
+ /**
133
+ * Cap rows kept per band (the mock shows ~3–4 then "N more"). The
134
+ * digest keeps ALL rows but records the overflow via `band.count` vs
135
+ * `rows.length`. Set to a number to actually trim `rows`; the header
136
+ * `count` still reflects the true total. Default: keep all.
137
+ */
138
+ rowsPerBand?: number;
139
+ }
140
+ export interface ActivitySubgroup {
141
+ key: string;
142
+ count: number;
143
+ rows: ActivityRow[];
144
+ }
145
+ /**
146
+ * A band that may carry pivot sub-groups. `subgroups` is populated only
147
+ * when the digest was computed with `groupBy !== 'none'`; otherwise the
148
+ * band is flat (`rows` only). `computeActivityDigest` always returns
149
+ * bands of this shape so consumers can branch on `subgroups` presence.
150
+ */
151
+ export interface ActivityBandWithGroups extends ActivityBand {
152
+ /** Present only when `groupBy !== 'none'`. */
153
+ subgroups?: ActivitySubgroup[];
154
+ }
155
+ /**
156
+ * Fold a unified event stream into the banded activity digest. PURE —
157
+ * no React, no clock reads except the injected `now` (defaults to
158
+ * `Date.now()`, but pass a fixed value in tests for determinism).
159
+ *
160
+ * Events the digest doesn't model (listener lifecycle, snapshot
161
+ * delivery, session boundaries, unknown kinds) are skipped — a full
162
+ * `SandboxEvent[]` from `sandbox.history()` flows in unfiltered.
163
+ */
164
+ export declare function computeActivityDigest(events: readonly AnyActivityEvent[], opts?: ActivityDigestOptions & {
165
+ now?: number;
166
+ }): ActivityDigest;
167
+ //# sourceMappingURL=digest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"digest.d.ts","sourceRoot":"","sources":["../../src/events/digest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,YAAY,EAIZ,gBAAgB,EAChB,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,eAAe,GACvB,QAAQ,GACR,SAAS,GACT,OAAO,GACP,SAAS,GACT,SAAS,GACT,WAAW,GACX,YAAY,GACZ,MAAM,GACN,OAAO,CAAC;AAEZ;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,qDAAqD;IACrD,EAAE,EAAE,MAAM,CAAC;IACX,uEAAuE;IACvE,EAAE,EAAE,MAAM,CAAC;IACX,2CAA2C;IAC3C,IAAI,EAAE,eAAe,CAAC;IACtB,uEAAuE;IACvE,MAAM,EAAE,OAAO,CAAC;IAChB,2BAA2B;IAC3B,OAAO,EAAE,eAAe,CAAC;IAGzB;;6EAEyE;IACzE,MAAM,EAAE,MAAM,CAAC;IACf;yEACqE;IACrE,MAAM,EAAE,MAAM,CAAC;IACf;;2DAEuD;IACvD,GAAG,EAAE,MAAM,CAAC;IACZ;wCACoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb;0EACsE;IACtE,IAAI,EAAE,MAAM,CAAC;IAGb,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,YAAY,CAAC;IACvB,gEAAgE;IAChE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;4EACwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,KAAK,EAAE,aAAa,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,eAAe,CAAC;IACrB,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,KAAK,EAAE,MAAM,CAAC;IACd;;4EAEwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,WAAW,EAAE,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B;8EAC0E;IAC1E,KAAK,EAAE,sBAAsB,EAAE,CAAC;IAChC,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAED,qDAAqD;AACrD,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;AAEhF,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,GAAG,eAAe,CAAC;IACpC;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAgXD,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,WAAW,EAAE,CAAC;CACrB;AAED;;;;;GAKG;AACH,MAAM,WAAW,sBAAuB,SAAQ,YAAY;IAC1D,8CAA8C;IAC9C,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAChC;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,gBAAgB,EAAE,EACnC,IAAI,GAAE,qBAAqB,GAAG;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAClD,cAAc,CAiEhB"}
@@ -0,0 +1,426 @@
1
+ /**
2
+ * The pure activity-digest reducer — folds a `SandboxEvent[]` (the
3
+ * unified stream) into the banded digest the activity grid renders.
4
+ *
5
+ * Kept free of React so it's trivially testable and reusable by a
6
+ * non-React consumer (a CLI session summary, say). `useActivityDigest`
7
+ * is a thin `useMemo` wrapper over `computeActivityDigest`.
8
+ *
9
+ * The categorization is the product (see
10
+ * the design rationale): the can't-miss bands are
11
+ * **denied** (surfaced first, loudly), **added**, **updated**,
12
+ * **removed**, **signed-in / signed-out**, and the catch-alls. Every
13
+ * row + band carries provenance (actor / lens / on-behalf-of) so
14
+ * attribution rides every aggregate, and the band order LEADS with the
15
+ * highest-consequence category present.
16
+ */
17
+ // ── Band ordering: lead-with-consequence ──────────────────────────────
18
+ // Lower rank renders first. Denials lead; operational errors next; then
19
+ // the write bands; auth; reads; catch-all. (design-ideation.md:
20
+ // "the answer LEADS with the highest-consequence category present".)
21
+ const BAND_RANK = {
22
+ denied: 0,
23
+ errored: 1,
24
+ added: 2,
25
+ updated: 3,
26
+ removed: 4,
27
+ 'signed-in': 5,
28
+ 'signed-out': 6,
29
+ read: 7,
30
+ other: 8,
31
+ };
32
+ const BAND_LABEL = {
33
+ denied: 'Denied',
34
+ errored: 'Errored',
35
+ added: 'Added',
36
+ updated: 'Updated',
37
+ removed: 'Removed',
38
+ 'signed-in': 'Signed in',
39
+ 'signed-out': 'Signed out',
40
+ read: 'Read',
41
+ other: 'Other',
42
+ };
43
+ /** The kinds the digest models. Everything else is skipped. */
44
+ function isModelled(e) {
45
+ return (e.kind === 'request' ||
46
+ e.kind === 'write' ||
47
+ e.kind === 'service_mutation');
48
+ }
49
+ function lastSegment(path) {
50
+ const trimmed = path.replace(/\/+$/, '');
51
+ const i = trimmed.lastIndexOf('/');
52
+ return i === -1 ? trimmed : trimmed.slice(i + 1);
53
+ }
54
+ function defaultActor(actor) {
55
+ return actor ?? { kind: 'app' };
56
+ }
57
+ function defaultLens(lens) {
58
+ return lens ?? { mode: 'app-session' };
59
+ }
60
+ function lensLabel(lens) {
61
+ switch (lens.mode) {
62
+ case 'admin':
63
+ return 'admin';
64
+ case 'as':
65
+ return lens.uid;
66
+ case 'app-session':
67
+ return 'app';
68
+ }
69
+ }
70
+ function actorLabel(actor) {
71
+ switch (actor.kind) {
72
+ case 'app':
73
+ return 'the app';
74
+ case 'studio':
75
+ return 'studio';
76
+ case 'app-builder':
77
+ return 'the app builder';
78
+ case 'agent':
79
+ return `agent ${actor.name}`;
80
+ }
81
+ }
82
+ /** A stable identity key for an actor (for attribution counting). */
83
+ function actorKey(actor) {
84
+ return actor.kind === 'agent' ? `agent:${actor.name}` : actor.kind;
85
+ }
86
+ /** The deciding rule on a denial, parsed from the simulator reasons.
87
+ * Best-effort — falls back to a generic phrase. */
88
+ function denialRulePhrase(reasons) {
89
+ // Reasons look like `Rule #0 (update) → DENY`. We surface the op the
90
+ // rule governs when present; the design copy says "owner rule" but
91
+ // that's app-semantic naming the library can't know, so we stay
92
+ // mechanical: name the failing op.
93
+ for (const r of reasons) {
94
+ const m = /Rule #\d+\s*\(([^)]+)\)/i.exec(r);
95
+ if (m)
96
+ return `${m[1]} rule`;
97
+ }
98
+ return undefined;
99
+ }
100
+ function relativeWhen(at, now) {
101
+ const deltaMs = Math.max(0, now - at);
102
+ const s = Math.floor(deltaMs / 1000);
103
+ if (s < 1)
104
+ return 'now';
105
+ if (s < 60)
106
+ return `${s}s`;
107
+ const m = Math.floor(s / 60);
108
+ if (m < 60)
109
+ return `${m}m`;
110
+ const h = Math.floor(m / 60);
111
+ return `${h}h`;
112
+ }
113
+ // ── Per-kind projection: event → { band, row fields } ─────────────────
114
+ function projectRequest(e) {
115
+ if (e.result === 'deny') {
116
+ const rule = denialRulePhrase(e.reasons);
117
+ const change = rule ? `${e.method}, ${rule}` : `${e.method} denied`;
118
+ return { band: 'denied', change, subjectUid: e.auth?.uid ?? null };
119
+ }
120
+ if (e.result === 'unsupported') {
121
+ return {
122
+ band: 'errored',
123
+ change: `${e.method} unsupported`,
124
+ subjectUid: e.auth?.uid ?? null,
125
+ };
126
+ }
127
+ // Allowed request. Reads land in `read`; allowed writes that DIDN'T
128
+ // also emit a `write` event still get a band so nothing is dropped.
129
+ const subjectUid = e.auth?.uid ?? null;
130
+ if (e.method === 'get' || e.method === 'list') {
131
+ return { band: 'read', change: e.method, subjectUid };
132
+ }
133
+ if (e.method === 'delete') {
134
+ return { band: 'removed', change: 'deleted', subjectUid };
135
+ }
136
+ if (e.method === 'create') {
137
+ return { band: 'added', change: 'created', subjectUid };
138
+ }
139
+ return { band: 'updated', change: e.method, subjectUid };
140
+ }
141
+ /** A compact change summary for a write, diffing prior→next when cheap. */
142
+ function writeChange(e) {
143
+ if (e.method === 'delete')
144
+ return 'deleted';
145
+ if (e.method === 'create') {
146
+ // Surface a representative field value if present (mock shows the
147
+ // note title in quotes). Pick the first string-ish scalar.
148
+ const data = e.nextState ?? e.data ?? null;
149
+ const preview = data ? firstScalarPreview(data) : undefined;
150
+ return preview !== undefined ? preview : 'created';
151
+ }
152
+ // update / set — try to show a single changed field as `key → value`.
153
+ const single = singleFieldDiff(e.priorState, e.nextState);
154
+ if (single)
155
+ return single;
156
+ return e.method === 'set' ? 'replaced' : 'updated';
157
+ }
158
+ function firstScalarPreview(data) {
159
+ for (const v of Object.values(data)) {
160
+ if (typeof v === 'string')
161
+ return `"${v}"`;
162
+ }
163
+ for (const v of Object.values(data)) {
164
+ if (typeof v === 'number' || typeof v === 'boolean')
165
+ return String(v);
166
+ }
167
+ return undefined;
168
+ }
169
+ function singleFieldDiff(prior, next) {
170
+ if (!next)
171
+ return undefined;
172
+ const before = prior ?? {};
173
+ const changed = [];
174
+ for (const k of Object.keys(next)) {
175
+ if (!shallowEqual(before[k], next[k]))
176
+ changed.push(k);
177
+ }
178
+ if (changed.length !== 1) {
179
+ return changed.length > 1 ? `${changed.length} fields changed` : undefined;
180
+ }
181
+ const key = changed[0];
182
+ const v = next[key];
183
+ if (typeof v === 'string' ||
184
+ typeof v === 'number' ||
185
+ typeof v === 'boolean') {
186
+ const shown = typeof v === 'string' ? v : String(v);
187
+ return `${key} → ${shown}`;
188
+ }
189
+ return `${key} changed`;
190
+ }
191
+ function shallowEqual(a, b) {
192
+ if (a === b)
193
+ return true;
194
+ if (typeof a !== typeof b)
195
+ return false;
196
+ if (typeof a === 'object' && a && b) {
197
+ return JSON.stringify(a) === JSON.stringify(b);
198
+ }
199
+ return false;
200
+ }
201
+ function projectWrite(e) {
202
+ const subjectUid = e.auth?.uid ?? null;
203
+ if (e.method === 'delete')
204
+ return { band: 'removed', change: 'deleted', subjectUid };
205
+ if (e.method === 'create')
206
+ return { band: 'added', change: writeChange(e), subjectUid };
207
+ return { band: 'updated', change: writeChange(e), subjectUid };
208
+ }
209
+ function projectServiceMutation(e) {
210
+ const op = e.op;
211
+ // auth ops carry the affected uid in `path` (or `*` for a clear-all).
212
+ if (e.service === 'auth') {
213
+ const affected = e.path && e.path !== '*' ? e.path : null;
214
+ const subjectUid = affected ?? e.auth?.uid ?? null;
215
+ switch (op) {
216
+ case 'sign_in':
217
+ return { band: 'signed-in', change: 'signed in', subjectUid };
218
+ case 'sign_out':
219
+ return { band: 'signed-out', change: 'signed out', subjectUid };
220
+ case 'user_create':
221
+ return { band: 'added', change: 'user created', subjectUid };
222
+ case 'user_update':
223
+ return { band: 'updated', change: 'user updated', subjectUid };
224
+ case 'user_delete':
225
+ return { band: 'removed', change: 'user deleted', subjectUid };
226
+ case 'users_clear':
227
+ return { band: 'removed', change: 'all users cleared', subjectUid };
228
+ default:
229
+ return { band: 'other', change: op, subjectUid };
230
+ }
231
+ }
232
+ const subjectUid = e.auth?.uid ?? null;
233
+ if (e.service === 'storage') {
234
+ switch (op) {
235
+ case 'object_put':
236
+ // create vs overwrite: `before` present ⇒ overwrite.
237
+ return e.before !== undefined
238
+ ? { band: 'updated', change: 'object replaced', subjectUid }
239
+ : { band: 'added', change: 'object uploaded', subjectUid };
240
+ case 'object_delete':
241
+ return { band: 'removed', change: 'object deleted', subjectUid };
242
+ case 'metadata_update':
243
+ return { band: 'updated', change: 'metadata updated', subjectUid };
244
+ default:
245
+ return { band: 'other', change: op, subjectUid };
246
+ }
247
+ }
248
+ // rtdb
249
+ switch (op) {
250
+ case 'set':
251
+ return e.before !== undefined && e.before !== null
252
+ ? { band: 'updated', change: 'set', subjectUid }
253
+ : { band: 'added', change: 'set', subjectUid };
254
+ case 'update':
255
+ return { band: 'updated', change: 'update', subjectUid };
256
+ case 'remove':
257
+ return { band: 'removed', change: 'removed', subjectUid };
258
+ case 'transaction':
259
+ return { band: 'updated', change: 'transaction', subjectUid };
260
+ default:
261
+ return { band: 'other', change: op, subjectUid };
262
+ }
263
+ }
264
+ function project(e) {
265
+ switch (e.kind) {
266
+ case 'request':
267
+ return projectRequest(e);
268
+ case 'write':
269
+ return projectWrite(e);
270
+ case 'service_mutation':
271
+ return projectServiceMutation(e);
272
+ }
273
+ }
274
+ function targetOf(e) {
275
+ switch (e.kind) {
276
+ case 'request':
277
+ case 'write':
278
+ return e.path;
279
+ case 'service_mutation':
280
+ // auth: the affected uid; storage/rtdb: the path.
281
+ if (e.service === 'auth')
282
+ return e.path && e.path !== '*' ? e.path : '*';
283
+ return e.path ?? '';
284
+ }
285
+ }
286
+ function serviceOf(e) {
287
+ if (e.kind === 'service_mutation')
288
+ return e.service;
289
+ return e.service ?? 'firestore';
290
+ }
291
+ /** Build a row from a modelled event. */
292
+ function toRow(e, now) {
293
+ const { band, change, subjectUid } = project(e);
294
+ const actor = defaultActor(e.actor);
295
+ const authLens = defaultLens(e.authLens);
296
+ const row = {
297
+ id: e.id,
298
+ at: e.at,
299
+ band,
300
+ denied: band === 'denied',
301
+ service: serviceOf(e),
302
+ target: targetOf(e),
303
+ change,
304
+ for: subjectUid ?? '',
305
+ lens: lensLabel(authLens),
306
+ when: relativeWhen(e.at, now),
307
+ actor,
308
+ authLens,
309
+ subjectUid,
310
+ event: e,
311
+ };
312
+ if (e.planId !== undefined)
313
+ row.planId = e.planId;
314
+ return row;
315
+ }
316
+ /** The pivot key for a row under a given group-by axis. */
317
+ function groupKeyFor(row, by) {
318
+ switch (by) {
319
+ case 'actor':
320
+ return actorKey(row.actor);
321
+ case 'lens':
322
+ return row.authLens.mode === 'as'
323
+ ? `as:${row.authLens.uid}`
324
+ : row.authLens.mode;
325
+ case 'subject':
326
+ return row.subjectUid ?? '(anonymous)';
327
+ case 'service':
328
+ return row.service;
329
+ case 'none':
330
+ return '';
331
+ }
332
+ }
333
+ /**
334
+ * Compute the band attribution phrase: when one actor OR one subject
335
+ * dominates the band, say so ("all by alice", "by the app"). Mixed ⇒
336
+ * undefined (header shows just the count).
337
+ */
338
+ function attributionFor(rows) {
339
+ if (rows.length === 0)
340
+ return undefined;
341
+ // Subject dominance first ("all by alice") — it's the most pointed.
342
+ const subjects = new Set();
343
+ for (const r of rows)
344
+ if (r.subjectUid)
345
+ subjects.add(r.subjectUid);
346
+ const anonCount = rows.filter((r) => !r.subjectUid).length;
347
+ if (subjects.size === 1 && anonCount === 0) {
348
+ const [only] = subjects;
349
+ return rows.length > 1 ? `all by ${only}` : `by ${only}`;
350
+ }
351
+ // Actor dominance ("by the app", "by agent atlas").
352
+ const actors = new Set();
353
+ for (const r of rows)
354
+ actors.add(actorKey(r.actor));
355
+ if (actors.size === 1) {
356
+ return `by ${actorLabel(rows[0].actor)}`;
357
+ }
358
+ return undefined;
359
+ }
360
+ /**
361
+ * Fold a unified event stream into the banded activity digest. PURE —
362
+ * no React, no clock reads except the injected `now` (defaults to
363
+ * `Date.now()`, but pass a fixed value in tests for determinism).
364
+ *
365
+ * Events the digest doesn't model (listener lifecycle, snapshot
366
+ * delivery, session boundaries, unknown kinds) are skipped — a full
367
+ * `SandboxEvent[]` from `sandbox.history()` flows in unfiltered.
368
+ */
369
+ export function computeActivityDigest(events, opts = {}) {
370
+ const { order = 'recency', groupBy = 'none', rowsPerBand, now = Date.now(), } = opts;
371
+ const byBand = new Map();
372
+ let deniedCount = 0;
373
+ for (const e of events) {
374
+ if (!isModelled(e))
375
+ continue;
376
+ const row = toRow(e, now);
377
+ if (row.denied)
378
+ deniedCount++;
379
+ const list = byBand.get(row.band);
380
+ if (list)
381
+ list.push(row);
382
+ else
383
+ byBand.set(row.band, [row]);
384
+ }
385
+ const sortRows = (rows) => rows.sort((a, b) => order === 'recency' ? b.at - a.at : a.at - b.at);
386
+ const bands = [];
387
+ let total = 0;
388
+ for (const [key, allRows] of byBand) {
389
+ sortRows(allRows);
390
+ const count = allRows.length;
391
+ total += count;
392
+ const rows = rowsPerBand !== undefined ? allRows.slice(0, rowsPerBand) : allRows;
393
+ if (groupBy !== 'none') {
394
+ for (const r of rows)
395
+ r.groupKey = groupKeyFor(r, groupBy);
396
+ }
397
+ const band = {
398
+ key,
399
+ label: BAND_LABEL[key],
400
+ count,
401
+ rows,
402
+ };
403
+ const attr = attributionFor(allRows);
404
+ if (attr)
405
+ band.attribution = attr;
406
+ if (groupBy !== 'none') {
407
+ const groups = new Map();
408
+ for (const r of rows) {
409
+ const gk = groupKeyFor(r, groupBy);
410
+ const g = groups.get(gk);
411
+ if (g)
412
+ g.push(r);
413
+ else
414
+ groups.set(gk, [r]);
415
+ }
416
+ band.subgroups = [...groups.entries()]
417
+ .map(([k, rs]) => ({ key: k, count: rs.length, rows: rs }))
418
+ .sort((a, b) => b.count - a.count || a.key.localeCompare(b.key));
419
+ }
420
+ bands.push(band);
421
+ }
422
+ bands.sort((a, b) => BAND_RANK[a.key] - BAND_RANK[b.key]);
423
+ const denials = sortRows((byBand.get('denied') ?? []).slice());
424
+ return { bands, total, deniedCount, denials };
425
+ }
426
+ //# sourceMappingURL=digest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"digest.js","sourceRoot":"","sources":["../../src/events/digest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { useActivityDigest, type UseActivityDigestOptions, } from './useActivityDigest.js';
2
+ export { useActivityStream, type UseActivityStreamOptions, type UseActivityStreamResult, } from './useActivityStream.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/events/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,KAAK,wBAAwB,GAC9B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,iBAAiB,EACjB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,GAC7B,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { useActivityDigest, } from './useActivityDigest.js';
2
+ export { useActivityStream, } from './useActivityStream.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/events/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,GAElB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,iBAAiB,GAGlB,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { AnyActivityEvent } from '../types.js';
2
+ import { type ActivityDigest, type ActivityDigestOptions } from '../digest.js';
3
+ export interface UseActivityDigestOptions extends ActivityDigestOptions {
4
+ /**
5
+ * Clock injection for the relative `when` column. Defaults to
6
+ * `Date.now()` read once per recompute. Pass a fixed value (or a
7
+ * frozen "session now") for deterministic rendering / tests.
8
+ *
9
+ * NOTE: changing `now` between renders re-folds the digest, so don't
10
+ * pass a fresh `Date.now()` inline unless you want a recompute every
11
+ * render — pin it (e.g. a ticking value updated on an interval).
12
+ */
13
+ now?: number;
14
+ }
15
+ /**
16
+ * React wrapper over {@link computeActivityDigest} — memoizes the pure
17
+ * fold over the unified `SandboxEvent` stream into the banded activity
18
+ * digest. Feed it `sandbox.history()` (a snapshot) or the live buffer
19
+ * from {@link useActivityStream}; the reducer is identical either way.
20
+ *
21
+ * The fold re-runs when `events` identity, any grouping option, or
22
+ * `now` changes. Keep `events` referentially stable across renders that
23
+ * shouldn't recompute (the stream hook already returns a stable array
24
+ * per emission).
25
+ */
26
+ export declare function useActivityDigest(events: readonly AnyActivityEvent[], options?: UseActivityDigestOptions): ActivityDigest;
27
+ //# sourceMappingURL=useActivityDigest.d.ts.map