@pyric/cli 0.1.0-alpha.9

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 (1169) hide show
  1. package/LICENSE +216 -0
  2. package/README.md +156 -0
  3. package/README.md.orig +138 -0
  4. package/dist/assurance/attachment.d.ts +24 -0
  5. package/dist/assurance/attachment.d.ts.map +1 -0
  6. package/dist/assurance/attachment.js +138 -0
  7. package/dist/assurance/attachment.js.map +1 -0
  8. package/dist/assurance/browser.d.ts +7 -0
  9. package/dist/assurance/browser.d.ts.map +1 -0
  10. package/dist/assurance/browser.js +68 -0
  11. package/dist/assurance/browser.js.map +1 -0
  12. package/dist/assurance/campaign.d.ts +41 -0
  13. package/dist/assurance/campaign.d.ts.map +1 -0
  14. package/dist/assurance/campaign.js +364 -0
  15. package/dist/assurance/campaign.js.map +1 -0
  16. package/dist/assurance/capabilities.d.ts +7 -0
  17. package/dist/assurance/capabilities.d.ts.map +1 -0
  18. package/dist/assurance/capabilities.js +295 -0
  19. package/dist/assurance/capabilities.js.map +1 -0
  20. package/dist/assurance/cases.d.ts +14 -0
  21. package/dist/assurance/cases.d.ts.map +1 -0
  22. package/dist/assurance/cases.js +27 -0
  23. package/dist/assurance/cases.js.map +1 -0
  24. package/dist/assurance/generated-capabilities.d.ts +52 -0
  25. package/dist/assurance/generated-capabilities.d.ts.map +1 -0
  26. package/dist/assurance/generated-capabilities.js +329 -0
  27. package/dist/assurance/generated-capabilities.js.map +1 -0
  28. package/dist/assurance/index.d.ts +11 -0
  29. package/dist/assurance/index.d.ts.map +1 -0
  30. package/dist/assurance/index.js +9 -0
  31. package/dist/assurance/index.js.map +1 -0
  32. package/dist/assurance/runner.d.ts +3 -0
  33. package/dist/assurance/runner.d.ts.map +1 -0
  34. package/dist/assurance/runner.js +633 -0
  35. package/dist/assurance/runner.js.map +1 -0
  36. package/dist/assurance/tool-names.d.ts +4 -0
  37. package/dist/assurance/tool-names.d.ts.map +1 -0
  38. package/dist/assurance/tool-names.js +14 -0
  39. package/dist/assurance/tool-names.js.map +1 -0
  40. package/dist/assurance/tools.d.ts +19 -0
  41. package/dist/assurance/tools.d.ts.map +1 -0
  42. package/dist/assurance/tools.js +740 -0
  43. package/dist/assurance/tools.js.map +1 -0
  44. package/dist/assurance/types.d.ts +348 -0
  45. package/dist/assurance/types.d.ts.map +1 -0
  46. package/dist/assurance/types.js +7 -0
  47. package/dist/assurance/types.js.map +1 -0
  48. package/dist/assurance/validation.d.ts +8 -0
  49. package/dist/assurance/validation.d.ts.map +1 -0
  50. package/dist/assurance/validation.js +269 -0
  51. package/dist/assurance/validation.js.map +1 -0
  52. package/dist/bridge/client/bridge.d.ts +133 -0
  53. package/dist/bridge/client/bridge.d.ts.map +1 -0
  54. package/dist/bridge/client/bridge.js +429 -0
  55. package/dist/bridge/client/bridge.js.map +1 -0
  56. package/dist/bridge/client/dispatch.d.ts +41 -0
  57. package/dist/bridge/client/dispatch.d.ts.map +1 -0
  58. package/dist/bridge/client/dispatch.js +111 -0
  59. package/dist/bridge/client/dispatch.js.map +1 -0
  60. package/dist/bridge/client.d.ts +24 -0
  61. package/dist/bridge/client.d.ts.map +1 -0
  62. package/dist/bridge/client.js +26 -0
  63. package/dist/bridge/client.js.map +1 -0
  64. package/dist/bridge/protocol.d.ts +227 -0
  65. package/dist/bridge/protocol.d.ts.map +1 -0
  66. package/dist/bridge/protocol.js +131 -0
  67. package/dist/bridge/protocol.js.map +1 -0
  68. package/dist/bridge/server/audit.d.ts +19 -0
  69. package/dist/bridge/server/audit.d.ts.map +1 -0
  70. package/dist/bridge/server/audit.js +46 -0
  71. package/dist/bridge/server/audit.js.map +1 -0
  72. package/dist/bridge/server/bridge.d.ts +126 -0
  73. package/dist/bridge/server/bridge.d.ts.map +1 -0
  74. package/dist/bridge/server/bridge.js +383 -0
  75. package/dist/bridge/server/bridge.js.map +1 -0
  76. package/dist/bridge/server/headless.d.ts +36 -0
  77. package/dist/bridge/server/headless.d.ts.map +1 -0
  78. package/dist/bridge/server/headless.js +142 -0
  79. package/dist/bridge/server/headless.js.map +1 -0
  80. package/dist/bridge/server/json-schema-to-zod.d.ts +37 -0
  81. package/dist/bridge/server/json-schema-to-zod.d.ts.map +1 -0
  82. package/dist/bridge/server/json-schema-to-zod.js +93 -0
  83. package/dist/bridge/server/json-schema-to-zod.js.map +1 -0
  84. package/dist/bridge/server/local-bridge.d.ts +33 -0
  85. package/dist/bridge/server/local-bridge.d.ts.map +1 -0
  86. package/dist/bridge/server/local-bridge.js +41 -0
  87. package/dist/bridge/server/local-bridge.js.map +1 -0
  88. package/dist/bridge/server/logger.d.ts +28 -0
  89. package/dist/bridge/server/logger.d.ts.map +1 -0
  90. package/dist/bridge/server/logger.js +42 -0
  91. package/dist/bridge/server/logger.js.map +1 -0
  92. package/dist/bridge/server/mcp-contract.d.ts +21 -0
  93. package/dist/bridge/server/mcp-contract.d.ts.map +1 -0
  94. package/dist/bridge/server/mcp-contract.js +62 -0
  95. package/dist/bridge/server/mcp-contract.js.map +1 -0
  96. package/dist/bridge/server/mcp.d.ts +26 -0
  97. package/dist/bridge/server/mcp.d.ts.map +1 -0
  98. package/dist/bridge/server/mcp.js +102 -0
  99. package/dist/bridge/server/mcp.js.map +1 -0
  100. package/dist/bridge/server/peer.d.ts +39 -0
  101. package/dist/bridge/server/peer.d.ts.map +1 -0
  102. package/dist/bridge/server/peer.js +189 -0
  103. package/dist/bridge/server/peer.js.map +1 -0
  104. package/dist/bridge/server/standalone.d.ts +49 -0
  105. package/dist/bridge/server/standalone.d.ts.map +1 -0
  106. package/dist/bridge/server/standalone.js +267 -0
  107. package/dist/bridge/server/standalone.js.map +1 -0
  108. package/dist/bridge/server/tool-metadata.d.ts +38 -0
  109. package/dist/bridge/server/tool-metadata.d.ts.map +1 -0
  110. package/dist/bridge/server/tool-metadata.js +81 -0
  111. package/dist/bridge/server/tool-metadata.js.map +1 -0
  112. package/dist/bridge/server.d.ts +21 -0
  113. package/dist/bridge/server.d.ts.map +1 -0
  114. package/dist/bridge/server.js +18 -0
  115. package/dist/bridge/server.js.map +1 -0
  116. package/dist/cli/database-rules.d.ts +43 -0
  117. package/dist/cli/database-rules.d.ts.map +1 -0
  118. package/dist/cli/database-rules.js +261 -0
  119. package/dist/cli/database-rules.js.map +1 -0
  120. package/dist/cli/dev-runner.d.ts +112 -0
  121. package/dist/cli/dev-runner.d.ts.map +1 -0
  122. package/dist/cli/dev-runner.js +239 -0
  123. package/dist/cli/dev-runner.js.map +1 -0
  124. package/dist/cli/firebase-json.d.ts +66 -0
  125. package/dist/cli/firebase-json.d.ts.map +1 -0
  126. package/dist/cli/firebase-json.js +60 -0
  127. package/dist/cli/firebase-json.js.map +1 -0
  128. package/dist/cli/firestore-indexes.d.ts +21 -0
  129. package/dist/cli/firestore-indexes.d.ts.map +1 -0
  130. package/dist/cli/firestore-indexes.js +39 -0
  131. package/dist/cli/firestore-indexes.js.map +1 -0
  132. package/dist/cli/index.d.ts +56 -0
  133. package/dist/cli/index.d.ts.map +1 -0
  134. package/dist/cli/index.js +379 -0
  135. package/dist/cli/index.js.map +1 -0
  136. package/dist/cli/init.d.ts +50 -0
  137. package/dist/cli/init.d.ts.map +1 -0
  138. package/dist/cli/init.js +182 -0
  139. package/dist/cli/init.js.map +1 -0
  140. package/dist/cli/mcp-proxy.d.ts +10 -0
  141. package/dist/cli/mcp-proxy.d.ts.map +1 -0
  142. package/dist/cli/mcp-proxy.js +129 -0
  143. package/dist/cli/mcp-proxy.js.map +1 -0
  144. package/dist/cli/parse-args.d.ts +20 -0
  145. package/dist/cli/parse-args.d.ts.map +1 -0
  146. package/dist/cli/parse-args.js +69 -0
  147. package/dist/cli/parse-args.js.map +1 -0
  148. package/dist/cli/rules.d.ts +55 -0
  149. package/dist/cli/rules.d.ts.map +1 -0
  150. package/dist/cli/rules.js +199 -0
  151. package/dist/cli/rules.js.map +1 -0
  152. package/dist/cli/scope.d.ts +12 -0
  153. package/dist/cli/scope.d.ts.map +1 -0
  154. package/dist/cli/scope.js +44 -0
  155. package/dist/cli/scope.js.map +1 -0
  156. package/dist/cli/serve.d.ts +122 -0
  157. package/dist/cli/serve.d.ts.map +1 -0
  158. package/dist/cli/serve.js +844 -0
  159. package/dist/cli/serve.js.map +1 -0
  160. package/dist/cli/service-commands.d.ts +8 -0
  161. package/dist/cli/service-commands.d.ts.map +1 -0
  162. package/dist/cli/service-commands.js +58 -0
  163. package/dist/cli/service-commands.js.map +1 -0
  164. package/dist/cli/snapshot.d.ts +22 -0
  165. package/dist/cli/snapshot.d.ts.map +1 -0
  166. package/dist/cli/snapshot.js +139 -0
  167. package/dist/cli/snapshot.js.map +1 -0
  168. package/dist/cli/storage-rules.d.ts +21 -0
  169. package/dist/cli/storage-rules.d.ts.map +1 -0
  170. package/dist/cli/storage-rules.js +121 -0
  171. package/dist/cli/storage-rules.js.map +1 -0
  172. package/dist/cli/verify.d.ts +23 -0
  173. package/dist/cli/verify.d.ts.map +1 -0
  174. package/dist/cli/verify.js +349 -0
  175. package/dist/cli/verify.js.map +1 -0
  176. package/dist/credentials/core/memoize-ttl.d.ts +58 -0
  177. package/dist/credentials/core/memoize-ttl.d.ts.map +1 -0
  178. package/dist/credentials/core/memoize-ttl.js +88 -0
  179. package/dist/credentials/core/memoize-ttl.js.map +1 -0
  180. package/dist/credentials/core/types.d.ts +11 -0
  181. package/dist/credentials/core/types.d.ts.map +1 -0
  182. package/dist/credentials/core/types.js +2 -0
  183. package/dist/credentials/core/types.js.map +1 -0
  184. package/dist/credentials/node/from-adc.d.ts +10 -0
  185. package/dist/credentials/node/from-adc.d.ts.map +1 -0
  186. package/dist/credentials/node/from-adc.js +76 -0
  187. package/dist/credentials/node/from-adc.js.map +1 -0
  188. package/dist/credentials/node/from-service-account.d.ts +24 -0
  189. package/dist/credentials/node/from-service-account.d.ts.map +1 -0
  190. package/dist/credentials/node/from-service-account.js +108 -0
  191. package/dist/credentials/node/from-service-account.js.map +1 -0
  192. package/dist/credentials/node/index.d.ts +7 -0
  193. package/dist/credentials/node/index.d.ts.map +1 -0
  194. package/dist/credentials/node/index.js +7 -0
  195. package/dist/credentials/node/index.js.map +1 -0
  196. package/dist/discover/concurrency.d.ts +42 -0
  197. package/dist/discover/concurrency.d.ts.map +1 -0
  198. package/dist/discover/concurrency.js +113 -0
  199. package/dist/discover/concurrency.js.map +1 -0
  200. package/dist/discover/crawler-adapter.d.ts +48 -0
  201. package/dist/discover/crawler-adapter.d.ts.map +1 -0
  202. package/dist/discover/crawler-adapter.js +92 -0
  203. package/dist/discover/crawler-adapter.js.map +1 -0
  204. package/dist/discover/crawler.d.ts +294 -0
  205. package/dist/discover/crawler.d.ts.map +1 -0
  206. package/dist/discover/crawler.js +764 -0
  207. package/dist/discover/crawler.js.map +1 -0
  208. package/dist/discover/credential-free.d.ts +19 -0
  209. package/dist/discover/credential-free.d.ts.map +1 -0
  210. package/dist/discover/credential-free.js +18 -0
  211. package/dist/discover/credential-free.js.map +1 -0
  212. package/dist/discover/findCollectionGroup.d.ts +44 -0
  213. package/dist/discover/findCollectionGroup.d.ts.map +1 -0
  214. package/dist/discover/findCollectionGroup.js +81 -0
  215. package/dist/discover/findCollectionGroup.js.map +1 -0
  216. package/dist/discover/firestore-source.d.ts +60 -0
  217. package/dist/discover/firestore-source.d.ts.map +1 -0
  218. package/dist/discover/firestore-source.js +11 -0
  219. package/dist/discover/firestore-source.js.map +1 -0
  220. package/dist/discover/index.d.ts +3 -0
  221. package/dist/discover/index.d.ts.map +1 -0
  222. package/dist/discover/index.js +5 -0
  223. package/dist/discover/index.js.map +1 -0
  224. package/dist/discover/merge.d.ts +108 -0
  225. package/dist/discover/merge.d.ts.map +1 -0
  226. package/dist/discover/merge.js +394 -0
  227. package/dist/discover/merge.js.map +1 -0
  228. package/dist/discover/session.d.ts +116 -0
  229. package/dist/discover/session.d.ts.map +1 -0
  230. package/dist/discover/session.js +331 -0
  231. package/dist/discover/session.js.map +1 -0
  232. package/dist/discover/tools.d.ts +58 -0
  233. package/dist/discover/tools.d.ts.map +1 -0
  234. package/dist/discover/tools.js +115 -0
  235. package/dist/discover/tools.js.map +1 -0
  236. package/dist/discover/types.d.ts +190 -0
  237. package/dist/discover/types.d.ts.map +1 -0
  238. package/dist/discover/types.js +12 -0
  239. package/dist/discover/types.js.map +1 -0
  240. package/dist/discover/wire.d.ts +70 -0
  241. package/dist/discover/wire.d.ts.map +1 -0
  242. package/dist/discover/wire.js +309 -0
  243. package/dist/discover/wire.js.map +1 -0
  244. package/dist/functions-rtdb/child.d.ts +52 -0
  245. package/dist/functions-rtdb/child.d.ts.map +1 -0
  246. package/dist/functions-rtdb/child.js +283 -0
  247. package/dist/functions-rtdb/child.js.map +1 -0
  248. package/dist/functions-rtdb/delivery.d.ts +4 -0
  249. package/dist/functions-rtdb/delivery.d.ts.map +1 -0
  250. package/dist/functions-rtdb/delivery.js +2 -0
  251. package/dist/functions-rtdb/delivery.js.map +1 -0
  252. package/dist/functions-rtdb/discovery.d.ts +41 -0
  253. package/dist/functions-rtdb/discovery.d.ts.map +1 -0
  254. package/dist/functions-rtdb/discovery.js +86 -0
  255. package/dist/functions-rtdb/discovery.js.map +1 -0
  256. package/dist/functions-rtdb/event.d.ts +20 -0
  257. package/dist/functions-rtdb/event.d.ts.map +1 -0
  258. package/dist/functions-rtdb/event.js +45 -0
  259. package/dist/functions-rtdb/event.js.map +1 -0
  260. package/dist/functions-rtdb/execution.d.ts +20 -0
  261. package/dist/functions-rtdb/execution.d.ts.map +1 -0
  262. package/dist/functions-rtdb/execution.js +70 -0
  263. package/dist/functions-rtdb/execution.js.map +1 -0
  264. package/dist/functions-rtdb/in-memory-delivery.d.ts +9 -0
  265. package/dist/functions-rtdb/in-memory-delivery.d.ts.map +1 -0
  266. package/dist/functions-rtdb/in-memory-delivery.js +36 -0
  267. package/dist/functions-rtdb/in-memory-delivery.js.map +1 -0
  268. package/dist/functions-rtdb/project.d.ts +7 -0
  269. package/dist/functions-rtdb/project.d.ts.map +1 -0
  270. package/dist/functions-rtdb/project.js +54 -0
  271. package/dist/functions-rtdb/project.js.map +1 -0
  272. package/dist/functions-rtdb/projection.d.ts +14 -0
  273. package/dist/functions-rtdb/projection.d.ts.map +1 -0
  274. package/dist/functions-rtdb/projection.js +65 -0
  275. package/dist/functions-rtdb/projection.js.map +1 -0
  276. package/dist/functions-rtdb/reference-pattern.d.ts +5 -0
  277. package/dist/functions-rtdb/reference-pattern.d.ts.map +1 -0
  278. package/dist/functions-rtdb/reference-pattern.js +14 -0
  279. package/dist/functions-rtdb/reference-pattern.js.map +1 -0
  280. package/dist/functions-rtdb/remote-delivery.d.ts +9 -0
  281. package/dist/functions-rtdb/remote-delivery.d.ts.map +1 -0
  282. package/dist/functions-rtdb/remote-delivery.js +11 -0
  283. package/dist/functions-rtdb/remote-delivery.js.map +1 -0
  284. package/dist/pkg-version.d.ts +2 -0
  285. package/dist/pkg-version.d.ts.map +1 -0
  286. package/dist/pkg-version.js +47 -0
  287. package/dist/pkg-version.js.map +1 -0
  288. package/dist/register/esm-exports.d.ts +26 -0
  289. package/dist/register/esm-exports.d.ts.map +1 -0
  290. package/dist/register/esm-exports.js +61 -0
  291. package/dist/register/esm-exports.js.map +1 -0
  292. package/dist/register/hooks.d.ts +13 -0
  293. package/dist/register/hooks.d.ts.map +1 -0
  294. package/dist/register/hooks.js +15 -0
  295. package/dist/register/hooks.js.map +1 -0
  296. package/dist/register/index.d.ts +5 -0
  297. package/dist/register/index.d.ts.map +1 -0
  298. package/dist/register/index.js +124 -0
  299. package/dist/register/index.js.map +1 -0
  300. package/dist/register/mapping.d.ts +19 -0
  301. package/dist/register/mapping.d.ts.map +1 -0
  302. package/dist/register/mapping.js +35 -0
  303. package/dist/register/mapping.js.map +1 -0
  304. package/dist/remote/index.d.ts +232 -0
  305. package/dist/remote/index.d.ts.map +1 -0
  306. package/dist/remote/index.js +720 -0
  307. package/dist/remote/index.js.map +1 -0
  308. package/dist/rtdb/crawl-snapshot.d.ts +17 -0
  309. package/dist/rtdb/crawl-snapshot.d.ts.map +1 -0
  310. package/dist/rtdb/crawl-snapshot.js +72 -0
  311. package/dist/rtdb/crawl-snapshot.js.map +1 -0
  312. package/dist/rtdb/inspection.d.ts +8 -0
  313. package/dist/rtdb/inspection.d.ts.map +1 -0
  314. package/dist/rtdb/inspection.js +111 -0
  315. package/dist/rtdb/inspection.js.map +1 -0
  316. package/dist/rtdb/load-rules-document.d.ts +25 -0
  317. package/dist/rtdb/load-rules-document.d.ts.map +1 -0
  318. package/dist/rtdb/load-rules-document.js +38 -0
  319. package/dist/rtdb/load-rules-document.js.map +1 -0
  320. package/dist/rtdb/rules-generation-tool.d.ts +4 -0
  321. package/dist/rtdb/rules-generation-tool.d.ts.map +1 -0
  322. package/dist/rtdb/rules-generation-tool.js +35 -0
  323. package/dist/rtdb/rules-generation-tool.js.map +1 -0
  324. package/dist/rtdb/rules-json.d.ts +8 -0
  325. package/dist/rtdb/rules-json.d.ts.map +1 -0
  326. package/dist/rtdb/rules-json.js +17 -0
  327. package/dist/rtdb/rules-json.js.map +1 -0
  328. package/dist/serve/bridge-mount.d.ts +36 -0
  329. package/dist/serve/bridge-mount.d.ts.map +1 -0
  330. package/dist/serve/bridge-mount.js +162 -0
  331. package/dist/serve/bridge-mount.js.map +1 -0
  332. package/dist/serve/bundler.d.ts +110 -0
  333. package/dist/serve/bundler.d.ts.map +1 -0
  334. package/dist/serve/bundler.js +432 -0
  335. package/dist/serve/bundler.js.map +1 -0
  336. package/dist/serve/capture-store.d.ts +27 -0
  337. package/dist/serve/capture-store.d.ts.map +1 -0
  338. package/dist/serve/capture-store.js +47 -0
  339. package/dist/serve/capture-store.js.map +1 -0
  340. package/dist/serve/discovery.d.ts +71 -0
  341. package/dist/serve/discovery.d.ts.map +1 -0
  342. package/dist/serve/discovery.js +158 -0
  343. package/dist/serve/discovery.js.map +1 -0
  344. package/dist/serve/docs-ui/_astro/_slug_.CQYSemvw.css +1 -0
  345. package/dist/serve/docs-ui/docs/_rhythm/index.html +99 -0
  346. package/dist/serve/docs-ui/docs/_rhythm.md +101 -0
  347. package/dist/serve/docs-ui/docs/api-reference/index.html +64 -0
  348. package/dist/serve/docs-ui/docs/api-reference.md +67 -0
  349. package/dist/serve/docs-ui/docs/audit-your-rules/index.html +34 -0
  350. package/dist/serve/docs-ui/docs/audit-your-rules.md +50 -0
  351. package/dist/serve/docs-ui/docs/create-pyric-reference-api/index.html +498 -0
  352. package/dist/serve/docs-ui/docs/create-pyric-reference-api.md +345 -0
  353. package/dist/serve/docs-ui/docs/firestore-rules-limits/index.html +59 -0
  354. package/dist/serve/docs-ui/docs/firestore-rules-limits.md +54 -0
  355. package/dist/serve/docs-ui/docs/how-the-swap-works/index.html +47 -0
  356. package/dist/serve/docs-ui/docs/how-the-swap-works.md +43 -0
  357. package/dist/serve/docs-ui/docs/how-we-know-it-matches-firebase/index.html +131 -0
  358. package/dist/serve/docs-ui/docs/how-we-know-it-matches-firebase.md +169 -0
  359. package/dist/serve/docs-ui/docs/index.html +2 -0
  360. package/dist/serve/docs-ui/docs/index.json +18637 -0
  361. package/dist/serve/docs-ui/docs/overview/index.html +23 -0
  362. package/dist/serve/docs-ui/docs/overview.md +40 -0
  363. package/dist/serve/docs-ui/docs/pyric-admin-app/index.html +19 -0
  364. package/dist/serve/docs-ui/docs/pyric-admin-app-reference-api/index.html +185 -0
  365. package/dist/serve/docs-ui/docs/pyric-admin-app-reference-api.md +206 -0
  366. package/dist/serve/docs-ui/docs/pyric-admin-app.md +27 -0
  367. package/dist/serve/docs-ui/docs/pyric-admin-auth/index.html +24 -0
  368. package/dist/serve/docs-ui/docs/pyric-admin-auth-reference-api/index.html +617 -0
  369. package/dist/serve/docs-ui/docs/pyric-admin-auth-reference-api.md +441 -0
  370. package/dist/serve/docs-ui/docs/pyric-admin-auth.md +29 -0
  371. package/dist/serve/docs-ui/docs/pyric-admin-database/index.html +26 -0
  372. package/dist/serve/docs-ui/docs/pyric-admin-database-reference-api/index.html +583 -0
  373. package/dist/serve/docs-ui/docs/pyric-admin-database-reference-api.md +597 -0
  374. package/dist/serve/docs-ui/docs/pyric-admin-database.md +31 -0
  375. package/dist/serve/docs-ui/docs/pyric-admin-firestore/index.html +38 -0
  376. package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-error-translation/index.html +57 -0
  377. package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-error-translation.md +95 -0
  378. package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-per-call-delegate/index.html +58 -0
  379. package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-per-call-delegate.md +94 -0
  380. package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-why-mirror-admin-shape/index.html +59 -0
  381. package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-why-mirror-admin-shape.md +88 -0
  382. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-run-a-transaction/index.html +53 -0
  383. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-run-a-transaction.md +76 -0
  384. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-seed-and-set-rules/index.html +62 -0
  385. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-seed-and-set-rules.md +96 -0
  386. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-translate-denials/index.html +80 -0
  387. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-translate-denials.md +98 -0
  388. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-use-onsnapshot/index.html +57 -0
  389. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-use-onsnapshot.md +88 -0
  390. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-write-a-batch/index.html +50 -0
  391. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-write-a-batch.md +73 -0
  392. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-api/index.html +32 -0
  393. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-api.md +30 -0
  394. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-onsnapshot/index.html +68 -0
  395. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-onsnapshot.md +81 -0
  396. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-re-exported-types/index.html +76 -0
  397. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-re-exported-types.md +103 -0
  398. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-sandbox-firestore/index.html +40 -0
  399. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-sandbox-firestore.md +77 -0
  400. package/dist/serve/docs-ui/docs/pyric-admin-firestore-tutorials-01-first-admin-session/index.html +118 -0
  401. package/dist/serve/docs-ui/docs/pyric-admin-firestore-tutorials-01-first-admin-session.md +166 -0
  402. package/dist/serve/docs-ui/docs/pyric-admin-firestore.md +53 -0
  403. package/dist/serve/docs-ui/docs/pyric-admin-storage/index.html +25 -0
  404. package/dist/serve/docs-ui/docs/pyric-admin-storage-reference-api/index.html +317 -0
  405. package/dist/serve/docs-ui/docs/pyric-admin-storage-reference-api.md +285 -0
  406. package/dist/serve/docs-ui/docs/pyric-admin-storage.md +30 -0
  407. package/dist/serve/docs-ui/docs/pyric-ai-compat/index.html +436 -0
  408. package/dist/serve/docs-ui/docs/pyric-ai-compat.md +471 -0
  409. package/dist/serve/docs-ui/docs/pyric-ai-reference-api/index.html +5831 -0
  410. package/dist/serve/docs-ui/docs/pyric-ai-reference-api.md +5440 -0
  411. package/dist/serve/docs-ui/docs/pyric-ai-scripting-reference-api/index.html +159 -0
  412. package/dist/serve/docs-ui/docs/pyric-ai-scripting-reference-api.md +122 -0
  413. package/dist/serve/docs-ui/docs/pyric-app-compat/index.html +180 -0
  414. package/dist/serve/docs-ui/docs/pyric-app-compat.md +199 -0
  415. package/dist/serve/docs-ui/docs/pyric-app-reference-api/index.html +420 -0
  416. package/dist/serve/docs-ui/docs/pyric-app-reference-api.md +326 -0
  417. package/dist/serve/docs-ui/docs/pyric-auth/index.html +59 -0
  418. package/dist/serve/docs-ui/docs/pyric-auth-compat/index.html +804 -0
  419. package/dist/serve/docs-ui/docs/pyric-auth-compat.md +847 -0
  420. package/dist/serve/docs-ui/docs/pyric-auth-reference-api/index.html +5452 -0
  421. package/dist/serve/docs-ui/docs/pyric-auth-reference-api.md +5271 -0
  422. package/dist/serve/docs-ui/docs/pyric-auth-reference-feature-matrix/index.html +781 -0
  423. package/dist/serve/docs-ui/docs/pyric-auth-reference-feature-matrix.md +198 -0
  424. package/dist/serve/docs-ui/docs/pyric-auth-reference-sandbox-test-driver/index.html +71 -0
  425. package/dist/serve/docs-ui/docs/pyric-auth-reference-sandbox-test-driver.md +108 -0
  426. package/dist/serve/docs-ui/docs/pyric-auth.md +86 -0
  427. package/dist/serve/docs-ui/docs/pyric-cli/index.html +40 -0
  428. package/dist/serve/docs-ui/docs/pyric-cli-assurance-browser-reference-api/index.html +98 -0
  429. package/dist/serve/docs-ui/docs/pyric-cli-assurance-browser-reference-api.md +88 -0
  430. package/dist/serve/docs-ui/docs/pyric-cli-assurance-reference-api/index.html +2355 -0
  431. package/dist/serve/docs-ui/docs/pyric-cli-assurance-reference-api.md +1554 -0
  432. package/dist/serve/docs-ui/docs/pyric-cli-bridge/index.html +69 -0
  433. package/dist/serve/docs-ui/docs/pyric-cli-bridge-client-reference-api/index.html +546 -0
  434. package/dist/serve/docs-ui/docs/pyric-cli-bridge-client-reference-api.md +485 -0
  435. package/dist/serve/docs-ui/docs/pyric-cli-bridge-reference-api/index.html +506 -0
  436. package/dist/serve/docs-ui/docs/pyric-cli-bridge-reference-api.md +419 -0
  437. package/dist/serve/docs-ui/docs/pyric-cli-bridge.md +99 -0
  438. package/dist/serve/docs-ui/docs/pyric-cli-credentials-node-reference-api/index.html +67 -0
  439. package/dist/serve/docs-ui/docs/pyric-cli-credentials-node-reference-api.md +59 -0
  440. package/dist/serve/docs-ui/docs/pyric-cli-discover-reference-api/index.html +2355 -0
  441. package/dist/serve/docs-ui/docs/pyric-cli-discover-reference-api.md +2036 -0
  442. package/dist/serve/docs-ui/docs/pyric-cli-functions-rtdb-compat/index.html +112 -0
  443. package/dist/serve/docs-ui/docs/pyric-cli-functions-rtdb-compat.md +124 -0
  444. package/dist/serve/docs-ui/docs/pyric-cli-how-to-build-a-standalone-binary/index.html +91 -0
  445. package/dist/serve/docs-ui/docs/pyric-cli-how-to-build-a-standalone-binary.md +105 -0
  446. package/dist/serve/docs-ui/docs/pyric-cli-how-to-promote-sandbox-state-to-a-fixture/index.html +52 -0
  447. package/dist/serve/docs-ui/docs/pyric-cli-how-to-promote-sandbox-state-to-a-fixture.md +98 -0
  448. package/dist/serve/docs-ui/docs/pyric-cli-how-to-run-rtdb-onvaluecreated/index.html +66 -0
  449. package/dist/serve/docs-ui/docs/pyric-cli-how-to-run-rtdb-onvaluecreated.md +100 -0
  450. package/dist/serve/docs-ui/docs/pyric-cli-how-to-serve-persistence-and-multi-tab/index.html +228 -0
  451. package/dist/serve/docs-ui/docs/pyric-cli-how-to-serve-persistence-and-multi-tab.md +179 -0
  452. package/dist/serve/docs-ui/docs/pyric-cli-how-to-use-the-vite-plugin/index.html +341 -0
  453. package/dist/serve/docs-ui/docs/pyric-cli-how-to-use-the-vite-plugin.md +309 -0
  454. package/dist/serve/docs-ui/docs/pyric-cli-how-to-verify-against-a-captured-session/index.html +128 -0
  455. package/dist/serve/docs-ui/docs/pyric-cli-how-to-verify-against-a-captured-session.md +207 -0
  456. package/dist/serve/docs-ui/docs/pyric-cli-reference-cli/index.html +404 -0
  457. package/dist/serve/docs-ui/docs/pyric-cli-reference-cli.md +249 -0
  458. package/dist/serve/docs-ui/docs/pyric-cli-reference-package-and-resolution/index.html +93 -0
  459. package/dist/serve/docs-ui/docs/pyric-cli-reference-package-and-resolution.md +65 -0
  460. package/dist/serve/docs-ui/docs/pyric-cli-reference-verify/index.html +81 -0
  461. package/dist/serve/docs-ui/docs/pyric-cli-reference-verify.md +110 -0
  462. package/dist/serve/docs-ui/docs/pyric-cli-register-reference-api/index.html +10 -0
  463. package/dist/serve/docs-ui/docs/pyric-cli-register-reference-api.md +16 -0
  464. package/dist/serve/docs-ui/docs/pyric-cli-remote-reference-api/index.html +1044 -0
  465. package/dist/serve/docs-ui/docs/pyric-cli-remote-reference-api.md +952 -0
  466. package/dist/serve/docs-ui/docs/pyric-cli-serve-worker-reference-api/index.html +5041 -0
  467. package/dist/serve/docs-ui/docs/pyric-cli-serve-worker-reference-api.md +4739 -0
  468. package/dist/serve/docs-ui/docs/pyric-cli-tutorials-server-adoption/index.html +219 -0
  469. package/dist/serve/docs-ui/docs/pyric-cli-tutorials-server-adoption.md +251 -0
  470. package/dist/serve/docs-ui/docs/pyric-cli-tutorials-wire-claude-code/index.html +136 -0
  471. package/dist/serve/docs-ui/docs/pyric-cli-tutorials-wire-claude-code.md +217 -0
  472. package/dist/serve/docs-ui/docs/pyric-cli-verify-reference-api/index.html +926 -0
  473. package/dist/serve/docs-ui/docs/pyric-cli-verify-reference-api.md +586 -0
  474. package/dist/serve/docs-ui/docs/pyric-cli-vite-reference-api/index.html +102 -0
  475. package/dist/serve/docs-ui/docs/pyric-cli-vite-reference-api.md +76 -0
  476. package/dist/serve/docs-ui/docs/pyric-cli.md +42 -0
  477. package/dist/serve/docs-ui/docs/pyric-conformance-scores/index.html +180 -0
  478. package/dist/serve/docs-ui/docs/pyric-conformance-scores.md +184 -0
  479. package/dist/serve/docs-ui/docs/pyric-database/index.html +43 -0
  480. package/dist/serve/docs-ui/docs/pyric-database-compat/index.html +1224 -0
  481. package/dist/serve/docs-ui/docs/pyric-database-compat.md +1289 -0
  482. package/dist/serve/docs-ui/docs/pyric-database-explanation-rules-authoring-and-deploy-are-separate/index.html +16 -0
  483. package/dist/serve/docs-ui/docs/pyric-database-explanation-rules-authoring-and-deploy-are-separate.md +23 -0
  484. package/dist/serve/docs-ui/docs/pyric-database-reference-api/index.html +1851 -0
  485. package/dist/serve/docs-ui/docs/pyric-database-reference-api.md +1842 -0
  486. package/dist/serve/docs-ui/docs/pyric-database-reference-constraints/index.html +381 -0
  487. package/dist/serve/docs-ui/docs/pyric-database-reference-constraints.md +168 -0
  488. package/dist/serve/docs-ui/docs/pyric-database-reference-rules-tooling/index.html +218 -0
  489. package/dist/serve/docs-ui/docs/pyric-database-reference-rules-tooling.md +303 -0
  490. package/dist/serve/docs-ui/docs/pyric-database-tutorials-01-author-rtdb-rules-with-constraints/index.html +125 -0
  491. package/dist/serve/docs-ui/docs/pyric-database-tutorials-01-author-rtdb-rules-with-constraints.md +171 -0
  492. package/dist/serve/docs-ui/docs/pyric-database.md +26 -0
  493. package/dist/serve/docs-ui/docs/pyric-explanation-versioning-and-compatibility/index.html +40 -0
  494. package/dist/serve/docs-ui/docs/pyric-explanation-versioning-and-compatibility.md +68 -0
  495. package/dist/serve/docs-ui/docs/pyric-firestore/index.html +48 -0
  496. package/dist/serve/docs-ui/docs/pyric-firestore-compat/index.html +868 -0
  497. package/dist/serve/docs-ui/docs/pyric-firestore-compat.md +939 -0
  498. package/dist/serve/docs-ui/docs/pyric-firestore-explanation-rules-tooling-is-separate/index.html +92 -0
  499. package/dist/serve/docs-ui/docs/pyric-firestore-explanation-rules-tooling-is-separate.md +70 -0
  500. package/dist/serve/docs-ui/docs/pyric-firestore-explanation-target-symbol-opacity/index.html +59 -0
  501. package/dist/serve/docs-ui/docs/pyric-firestore-explanation-target-symbol-opacity.md +91 -0
  502. package/dist/serve/docs-ui/docs/pyric-firestore-explanation-two-backends-one-surface/index.html +43 -0
  503. package/dist/serve/docs-ui/docs/pyric-firestore-explanation-two-backends-one-surface.md +58 -0
  504. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-migrate-from-firebase-firestore/index.html +58 -0
  505. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-migrate-from-firebase-firestore.md +86 -0
  506. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-pick-a-backend/index.html +52 -0
  507. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-pick-a-backend.md +83 -0
  508. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-run-a-transaction/index.html +42 -0
  509. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-run-a-transaction.md +59 -0
  510. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-onsnapshot/index.html +66 -0
  511. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-onsnapshot.md +96 -0
  512. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-sandbox-ops/index.html +61 -0
  513. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-sandbox-ops.md +92 -0
  514. package/dist/serve/docs-ui/docs/pyric-firestore-reference-api/index.html +3623 -0
  515. package/dist/serve/docs-ui/docs/pyric-firestore-reference-api.md +3399 -0
  516. package/dist/serve/docs-ui/docs/pyric-firestore-reference-feature-matrix/index.html +80 -0
  517. package/dist/serve/docs-ui/docs/pyric-firestore-reference-feature-matrix.md +66 -0
  518. package/dist/serve/docs-ui/docs/pyric-firestore-reference-getfirestore/index.html +46 -0
  519. package/dist/serve/docs-ui/docs/pyric-firestore-reference-getfirestore.md +73 -0
  520. package/dist/serve/docs-ui/docs/pyric-firestore-reference-query-constraints/index.html +80 -0
  521. package/dist/serve/docs-ui/docs/pyric-firestore-reference-query-constraints.md +129 -0
  522. package/dist/serve/docs-ui/docs/pyric-firestore-reference-sandbox-ops/index.html +58 -0
  523. package/dist/serve/docs-ui/docs/pyric-firestore-reference-sandbox-ops.md +88 -0
  524. package/dist/serve/docs-ui/docs/pyric-firestore-reference-tool-factories/index.html +51 -0
  525. package/dist/serve/docs-ui/docs/pyric-firestore-reference-tool-factories.md +71 -0
  526. package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-01-write-a-sandbox-demo/index.html +130 -0
  527. package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-01-write-a-sandbox-demo.md +180 -0
  528. package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-02-swap-to-prod-backend/index.html +59 -0
  529. package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-02-swap-to-prod-backend.md +92 -0
  530. package/dist/serve/docs-ui/docs/pyric-firestore-values-reference-api/index.html +30 -0
  531. package/dist/serve/docs-ui/docs/pyric-firestore-values-reference-api.md +30 -0
  532. package/dist/serve/docs-ui/docs/pyric-firestore.md +72 -0
  533. package/dist/serve/docs-ui/docs/pyric-messaging-compat/index.html +300 -0
  534. package/dist/serve/docs-ui/docs/pyric-messaging-compat.md +321 -0
  535. package/dist/serve/docs-ui/docs/pyric-messaging-reference-api/index.html +508 -0
  536. package/dist/serve/docs-ui/docs/pyric-messaging-reference-api.md +374 -0
  537. package/dist/serve/docs-ui/docs/pyric-messaging-sw-reference-api/index.html +482 -0
  538. package/dist/serve/docs-ui/docs/pyric-messaging-sw-reference-api.md +348 -0
  539. package/dist/serve/docs-ui/docs/pyric-rules/index.html +87 -0
  540. package/dist/serve/docs-ui/docs/pyric-rules-compat/index.html +328 -0
  541. package/dist/serve/docs-ui/docs/pyric-rules-compat.md +347 -0
  542. package/dist/serve/docs-ui/docs/pyric-rules-explanation-agent-failure-modes/index.html +50 -0
  543. package/dist/serve/docs-ui/docs/pyric-rules-explanation-agent-failure-modes.md +78 -0
  544. package/dist/serve/docs-ui/docs/pyric-rules-explanation-lint-vs-validate-vs-simulate-vs-test/index.html +79 -0
  545. package/dist/serve/docs-ui/docs/pyric-rules-explanation-lint-vs-validate-vs-simulate-vs-test.md +69 -0
  546. package/dist/serve/docs-ui/docs/pyric-rules-explanation-runtime-budget-and-shared-gates/index.html +67 -0
  547. package/dist/serve/docs-ui/docs/pyric-rules-explanation-runtime-budget-and-shared-gates.md +75 -0
  548. package/dist/serve/docs-ui/docs/pyric-rules-explanation-sentinel-expression-engine/index.html +49 -0
  549. package/dist/serve/docs-ui/docs/pyric-rules-explanation-sentinel-expression-engine.md +74 -0
  550. package/dist/serve/docs-ui/docs/pyric-rules-explanation-simulator-vs-rules-test-api/index.html +95 -0
  551. package/dist/serve/docs-ui/docs/pyric-rules-explanation-simulator-vs-rules-test-api.md +80 -0
  552. package/dist/serve/docs-ui/docs/pyric-rules-explanation-the-2-plus-modules-extension/index.html +58 -0
  553. package/dist/serve/docs-ui/docs/pyric-rules-explanation-the-2-plus-modules-extension.md +79 -0
  554. package/dist/serve/docs-ui/docs/pyric-rules-explanation-value-wrappers-design/index.html +63 -0
  555. package/dist/serve/docs-ui/docs/pyric-rules-explanation-value-wrappers-design.md +84 -0
  556. package/dist/serve/docs-ui/docs/pyric-rules-explanation-why-this-package-exists/index.html +34 -0
  557. package/dist/serve/docs-ui/docs/pyric-rules-explanation-why-this-package-exists.md +43 -0
  558. package/dist/serve/docs-ui/docs/pyric-rules-how-to-compare-rulesets-for-weakening/index.html +55 -0
  559. package/dist/serve/docs-ui/docs/pyric-rules-how-to-compare-rulesets-for-weakening.md +77 -0
  560. package/dist/serve/docs-ui/docs/pyric-rules-how-to-inspect-rules-via-the-ast/index.html +90 -0
  561. package/dist/serve/docs-ui/docs/pyric-rules-how-to-inspect-rules-via-the-ast.md +129 -0
  562. package/dist/serve/docs-ui/docs/pyric-rules-how-to-lint-rules-source/index.html +55 -0
  563. package/dist/serve/docs-ui/docs/pyric-rules-how-to-lint-rules-source.md +84 -0
  564. package/dist/serve/docs-ui/docs/pyric-rules-how-to-pin-request-time/index.html +49 -0
  565. package/dist/serve/docs-ui/docs/pyric-rules-how-to-pin-request-time.md +64 -0
  566. package/dist/serve/docs-ui/docs/pyric-rules-how-to-register-tools-with-an-agent/index.html +61 -0
  567. package/dist/serve/docs-ui/docs/pyric-rules-how-to-register-tools-with-an-agent.md +87 -0
  568. package/dist/serve/docs-ui/docs/pyric-rules-how-to-resolve-module-imports/index.html +93 -0
  569. package/dist/serve/docs-ui/docs/pyric-rules-how-to-resolve-module-imports.md +105 -0
  570. package/dist/serve/docs-ui/docs/pyric-rules-how-to-simulate-rules-locally/index.html +89 -0
  571. package/dist/serve/docs-ui/docs/pyric-rules-how-to-simulate-rules-locally.md +134 -0
  572. package/dist/serve/docs-ui/docs/pyric-rules-how-to-test-rules-against-firebase/index.html +66 -0
  573. package/dist/serve/docs-ui/docs/pyric-rules-how-to-test-rules-against-firebase.md +102 -0
  574. package/dist/serve/docs-ui/docs/pyric-rules-reference-api/index.html +2629 -0
  575. package/dist/serve/docs-ui/docs/pyric-rules-reference-api.md +2213 -0
  576. package/dist/serve/docs-ui/docs/pyric-rules-reference-ast/index.html +85 -0
  577. package/dist/serve/docs-ui/docs/pyric-rules-reference-ast.md +121 -0
  578. package/dist/serve/docs-ui/docs/pyric-rules-reference-conformance-gaps/index.html +277 -0
  579. package/dist/serve/docs-ui/docs/pyric-rules-reference-conformance-gaps.md +360 -0
  580. package/dist/serve/docs-ui/docs/pyric-rules-reference-errors/index.html +76 -0
  581. package/dist/serve/docs-ui/docs/pyric-rules-reference-errors.md +123 -0
  582. package/dist/serve/docs-ui/docs/pyric-rules-reference-lint-rules/index.html +148 -0
  583. package/dist/serve/docs-ui/docs/pyric-rules-reference-lint-rules.md +159 -0
  584. package/dist/serve/docs-ui/docs/pyric-rules-reference-simulator-context/index.html +66 -0
  585. package/dist/serve/docs-ui/docs/pyric-rules-reference-simulator-context.md +104 -0
  586. package/dist/serve/docs-ui/docs/pyric-rules-reference-stdlib-modules/index.html +241 -0
  587. package/dist/serve/docs-ui/docs/pyric-rules-reference-stdlib-modules.md +143 -0
  588. package/dist/serve/docs-ui/docs/pyric-rules-reference-test-case-schema/index.html +94 -0
  589. package/dist/serve/docs-ui/docs/pyric-rules-reference-test-case-schema.md +121 -0
  590. package/dist/serve/docs-ui/docs/pyric-rules-reference-validator-findings/index.html +87 -0
  591. package/dist/serve/docs-ui/docs/pyric-rules-reference-validator-findings.md +117 -0
  592. package/dist/serve/docs-ui/docs/pyric-rules-reference-value-wrappers/index.html +102 -0
  593. package/dist/serve/docs-ui/docs/pyric-rules-reference-value-wrappers.md +152 -0
  594. package/dist/serve/docs-ui/docs/pyric-rules.md +93 -0
  595. package/dist/serve/docs-ui/docs/pyric-sandbox/index.html +67 -0
  596. package/dist/serve/docs-ui/docs/pyric-sandbox-database-reference-api/index.html +120 -0
  597. package/dist/serve/docs-ui/docs/pyric-sandbox-database-reference-api.md +110 -0
  598. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-every-op-is-a-request/index.html +141 -0
  599. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-every-op-is-a-request.md +161 -0
  600. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-identity-is-a-context/index.html +66 -0
  601. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-identity-is-a-context.md +110 -0
  602. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-internal-adapter-protocol/index.html +71 -0
  603. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-internal-adapter-protocol.md +111 -0
  604. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-listener-re-evaluation/index.html +56 -0
  605. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-listener-re-evaluation.md +82 -0
  606. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-local-backend-vs-firestore-offline/index.html +64 -0
  607. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-local-backend-vs-firestore-offline.md +56 -0
  608. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-why-adapters-are-siblings/index.html +92 -0
  609. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-why-adapters-are-siblings.md +90 -0
  610. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-why-this-package-exists/index.html +69 -0
  611. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-why-this-package-exists.md +57 -0
  612. package/dist/serve/docs-ui/docs/pyric-sandbox-firestore-reference-api/index.html +202 -0
  613. package/dist/serve/docs-ui/docs/pyric-sandbox-firestore-reference-api.md +134 -0
  614. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-multiple-isolated-sandboxes/index.html +63 -0
  615. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-multiple-isolated-sandboxes.md +89 -0
  616. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-observe-events/index.html +159 -0
  617. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-observe-events.md +168 -0
  618. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-pick-an-adapter/index.html +79 -0
  619. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-pick-an-adapter.md +75 -0
  620. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-replay-events/index.html +88 -0
  621. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-replay-events.md +92 -0
  622. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-reset-between-tests/index.html +68 -0
  623. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-reset-between-tests.md +92 -0
  624. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-seed-data-and-rules/index.html +91 -0
  625. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-seed-data-and-rules.md +122 -0
  626. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-switch-users/index.html +50 -0
  627. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-switch-users.md +78 -0
  628. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-use-admin-reads/index.html +54 -0
  629. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-use-admin-reads.md +85 -0
  630. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-api/index.html +5019 -0
  631. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-api.md +4060 -0
  632. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-divergences/index.html +125 -0
  633. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-divergences.md +151 -0
  634. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-error-codes/index.html +110 -0
  635. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-error-codes.md +118 -0
  636. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-internal-protocol/index.html +72 -0
  637. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-internal-protocol.md +109 -0
  638. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-sandbox-and-context/index.html +90 -0
  639. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-sandbox-and-context.md +140 -0
  640. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-sandbox-event/index.html +146 -0
  641. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-sandbox-event.md +204 -0
  642. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-snapshot-and-admin/index.html +53 -0
  643. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-snapshot-and-admin.md +89 -0
  644. package/dist/serve/docs-ui/docs/pyric-sandbox-tutorials-01-your-first-sandbox-session/index.html +115 -0
  645. package/dist/serve/docs-ui/docs/pyric-sandbox-tutorials-01-your-first-sandbox-session.md +176 -0
  646. package/dist/serve/docs-ui/docs/pyric-sandbox.md +69 -0
  647. package/dist/serve/docs-ui/docs/pyric-storage/index.html +65 -0
  648. package/dist/serve/docs-ui/docs/pyric-storage-compat/index.html +676 -0
  649. package/dist/serve/docs-ui/docs/pyric-storage-compat.md +699 -0
  650. package/dist/serve/docs-ui/docs/pyric-storage-explanation-implementation-scope/index.html +52 -0
  651. package/dist/serve/docs-ui/docs/pyric-storage-explanation-implementation-scope.md +85 -0
  652. package/dist/serve/docs-ui/docs/pyric-storage-explanation-session-archive-use-case/index.html +58 -0
  653. package/dist/serve/docs-ui/docs/pyric-storage-explanation-session-archive-use-case.md +82 -0
  654. package/dist/serve/docs-ui/docs/pyric-storage-explanation-why-indexeddb/index.html +50 -0
  655. package/dist/serve/docs-ui/docs/pyric-storage-explanation-why-indexeddb.md +82 -0
  656. package/dist/serve/docs-ui/docs/pyric-storage-how-to-enforce-rules/index.html +120 -0
  657. package/dist/serve/docs-ui/docs/pyric-storage-how-to-enforce-rules.md +127 -0
  658. package/dist/serve/docs-ui/docs/pyric-storage-how-to-list-and-delete/index.html +53 -0
  659. package/dist/serve/docs-ui/docs/pyric-storage-how-to-list-and-delete.md +86 -0
  660. package/dist/serve/docs-ui/docs/pyric-storage-how-to-switch-backends/index.html +43 -0
  661. package/dist/serve/docs-ui/docs/pyric-storage-how-to-switch-backends.md +65 -0
  662. package/dist/serve/docs-ui/docs/pyric-storage-how-to-test-rule-expressions/index.html +70 -0
  663. package/dist/serve/docs-ui/docs/pyric-storage-how-to-test-rule-expressions.md +88 -0
  664. package/dist/serve/docs-ui/docs/pyric-storage-reference-api/index.html +2120 -0
  665. package/dist/serve/docs-ui/docs/pyric-storage-reference-api.md +1687 -0
  666. package/dist/serve/docs-ui/docs/pyric-storage-reference-conformance-gaps/index.html +137 -0
  667. package/dist/serve/docs-ui/docs/pyric-storage-reference-conformance-gaps.md +171 -0
  668. package/dist/serve/docs-ui/docs/pyric-storage-reference-error-codes/index.html +37 -0
  669. package/dist/serve/docs-ui/docs/pyric-storage-reference-error-codes.md +57 -0
  670. package/dist/serve/docs-ui/docs/pyric-storage-reference-rules-subset/index.html +96 -0
  671. package/dist/serve/docs-ui/docs/pyric-storage-reference-rules-subset.md +134 -0
  672. package/dist/serve/docs-ui/docs/pyric-storage-reference-storage-options/index.html +39 -0
  673. package/dist/serve/docs-ui/docs/pyric-storage-reference-storage-options.md +61 -0
  674. package/dist/serve/docs-ui/docs/pyric-storage.md +67 -0
  675. package/dist/serve/docs-ui/docs/pyric-ui-agents-reference-api/index.html +638 -0
  676. package/dist/serve/docs-ui/docs/pyric-ui-agents-reference-api.md +430 -0
  677. package/dist/serve/docs-ui/docs/pyric-ui-auth-hooks-reference-api/index.html +813 -0
  678. package/dist/serve/docs-ui/docs/pyric-ui-auth-hooks-reference-api.md +634 -0
  679. package/dist/serve/docs-ui/docs/pyric-ui-auth-reference-api/index.html +1708 -0
  680. package/dist/serve/docs-ui/docs/pyric-ui-auth-reference-api.md +1300 -0
  681. package/dist/serve/docs-ui/docs/pyric-ui-events-hooks-reference-api/index.html +177 -0
  682. package/dist/serve/docs-ui/docs/pyric-ui-events-hooks-reference-api.md +111 -0
  683. package/dist/serve/docs-ui/docs/pyric-ui-events-reference-api/index.html +1542 -0
  684. package/dist/serve/docs-ui/docs/pyric-ui-events-reference-api.md +903 -0
  685. package/dist/serve/docs-ui/docs/pyric-ui-firestore-hooks-reference-api/index.html +1024 -0
  686. package/dist/serve/docs-ui/docs/pyric-ui-firestore-hooks-reference-api.md +640 -0
  687. package/dist/serve/docs-ui/docs/pyric-ui-firestore-reference-api/index.html +2753 -0
  688. package/dist/serve/docs-ui/docs/pyric-ui-firestore-reference-api.md +2171 -0
  689. package/dist/serve/docs-ui/docs/pyric-ui-primitives-reference-api/index.html +1005 -0
  690. package/dist/serve/docs-ui/docs/pyric-ui-primitives-reference-api.md +693 -0
  691. package/dist/serve/docs-ui/docs/pyric-ui-rtdb-reference-api/index.html +1388 -0
  692. package/dist/serve/docs-ui/docs/pyric-ui-rtdb-reference-api.md +1340 -0
  693. package/dist/serve/docs-ui/docs/pyric-ui-rules-hooks-reference-api/index.html +131 -0
  694. package/dist/serve/docs-ui/docs/pyric-ui-rules-hooks-reference-api.md +76 -0
  695. package/dist/serve/docs-ui/docs/pyric-ui-rules-reference-api/index.html +648 -0
  696. package/dist/serve/docs-ui/docs/pyric-ui-rules-reference-api.md +508 -0
  697. package/dist/serve/docs-ui/docs/pyric-ui-storage-hooks-reference-api/index.html +1457 -0
  698. package/dist/serve/docs-ui/docs/pyric-ui-storage-hooks-reference-api.md +1029 -0
  699. package/dist/serve/docs-ui/docs/pyric-ui-storage-reference-api/index.html +2476 -0
  700. package/dist/serve/docs-ui/docs/pyric-ui-storage-reference-api.md +1919 -0
  701. package/dist/serve/docs-ui/docs/pyric-ui-traffic-hooks-reference-api/index.html +1241 -0
  702. package/dist/serve/docs-ui/docs/pyric-ui-traffic-hooks-reference-api.md +817 -0
  703. package/dist/serve/docs-ui/docs/pyric-ui-traffic-reference-api/index.html +2289 -0
  704. package/dist/serve/docs-ui/docs/pyric-ui-traffic-reference-api.md +1489 -0
  705. package/dist/serve/docs-ui/docs/read-a-denial/index.html +40 -0
  706. package/dist/serve/docs-ui/docs/read-a-denial.md +62 -0
  707. package/dist/serve/docs-ui/docs/receive-messages/index.html +28 -0
  708. package/dist/serve/docs-ui/docs/receive-messages.md +43 -0
  709. package/dist/serve/docs-ui/docs/rtdb-rules-in-typescript/index.html +67 -0
  710. package/dist/serve/docs-ui/docs/rtdb-rules-in-typescript.md +101 -0
  711. package/dist/serve/docs-ui/docs/rules-patterns/index.html +68 -0
  712. package/dist/serve/docs-ui/docs/rules-patterns.md +104 -0
  713. package/dist/serve/docs-ui/docs/rules-standard-library/index.html +87 -0
  714. package/dist/serve/docs-ui/docs/rules-standard-library.md +93 -0
  715. package/dist/serve/docs-ui/docs/run-ai-logic-locally/index.html +27 -0
  716. package/dist/serve/docs-ui/docs/run-ai-logic-locally.md +43 -0
  717. package/dist/serve/docs-ui/docs/secure-it-with-rules/index.html +69 -0
  718. package/dist/serve/docs-ui/docs/secure-it-with-rules.md +101 -0
  719. package/dist/serve/docs-ui/docs/see-whats-happening/index.html +73 -0
  720. package/dist/serve/docs-ui/docs/see-whats-happening.md +77 -0
  721. package/dist/serve/docs-ui/docs/set-up-the-project/index.html +14 -0
  722. package/dist/serve/docs-ui/docs/set-up-the-project.md +19 -0
  723. package/dist/serve/docs-ui/docs/set-up-your-agent/index.html +42 -0
  724. package/dist/serve/docs-ui/docs/set-up-your-agent.md +86 -0
  725. package/dist/serve/docs-ui/docs/shape-your-data/index.html +44 -0
  726. package/dist/serve/docs-ui/docs/shape-your-data.md +88 -0
  727. package/dist/serve/docs-ui/docs/ship-to-production/index.html +36 -0
  728. package/dist/serve/docs-ui/docs/ship-to-production.md +80 -0
  729. package/dist/serve/docs-ui/docs/sign-in-and-manage-users/index.html +31 -0
  730. package/dist/serve/docs-ui/docs/sign-in-and-manage-users.md +50 -0
  731. package/dist/serve/docs-ui/docs/simulate-and-lint/index.html +95 -0
  732. package/dist/serve/docs-ui/docs/simulate-and-lint.md +99 -0
  733. package/dist/serve/docs-ui/docs/skills/index.html +20 -0
  734. package/dist/serve/docs-ui/docs/skills.md +34 -0
  735. package/dist/serve/docs-ui/docs/start-building/index.html +32 -0
  736. package/dist/serve/docs-ui/docs/start-building.md +64 -0
  737. package/dist/serve/docs-ui/docs/store-and-query-data/index.html +16 -0
  738. package/dist/serve/docs-ui/docs/store-and-query-data.md +33 -0
  739. package/dist/serve/docs-ui/docs/store-files/index.html +13 -0
  740. package/dist/serve/docs-ui/docs/store-files.md +25 -0
  741. package/dist/serve/docs-ui/docs/sync-realtime-data/index.html +15 -0
  742. package/dist/serve/docs-ui/docs/sync-realtime-data.md +27 -0
  743. package/dist/serve/docs-ui/docs/test-in-node/index.html +74 -0
  744. package/dist/serve/docs-ui/docs/test-in-node.md +100 -0
  745. package/dist/serve/docs-ui/docs/ui/index.html +76 -0
  746. package/dist/serve/docs-ui/docs/ui-auth-authsigninhelper/index.html +194 -0
  747. package/dist/serve/docs-ui/docs/ui-auth-authsigninhelper.md +114 -0
  748. package/dist/serve/docs-ui/docs/ui-auth-authusers/index.html +263 -0
  749. package/dist/serve/docs-ui/docs/ui-auth-authusers.md +183 -0
  750. package/dist/serve/docs-ui/docs/ui-firestore-collectionlist/index.html +92 -0
  751. package/dist/serve/docs-ui/docs/ui-firestore-collectionlist.md +79 -0
  752. package/dist/serve/docs-ui/docs/ui-firestore-deletewithconfirm/index.html +128 -0
  753. package/dist/serve/docs-ui/docs/ui-firestore-deletewithconfirm.md +104 -0
  754. package/dist/serve/docs-ui/docs/ui-firestore-documenteditor/index.html +154 -0
  755. package/dist/serve/docs-ui/docs/ui-firestore-documenteditor.md +117 -0
  756. package/dist/serve/docs-ui/docs/ui-firestore-documentlist/index.html +132 -0
  757. package/dist/serve/docs-ui/docs/ui-firestore-documentlist.md +92 -0
  758. package/dist/serve/docs-ui/docs/ui-firestore-documentpreview/index.html +159 -0
  759. package/dist/serve/docs-ui/docs/ui-firestore-documentpreview.md +84 -0
  760. package/dist/serve/docs-ui/docs/ui-firestore-querybuilder/index.html +104 -0
  761. package/dist/serve/docs-ui/docs/ui-firestore-querybuilder.md +103 -0
  762. package/dist/serve/docs-ui/docs/ui-firestore-referencepicker/index.html +113 -0
  763. package/dist/serve/docs-ui/docs/ui-firestore-referencepicker.md +93 -0
  764. package/dist/serve/docs-ui/docs/ui-primitives-badge/index.html +56 -0
  765. package/dist/serve/docs-ui/docs/ui-primitives-badge.md +40 -0
  766. package/dist/serve/docs-ui/docs/ui-primitives-confirmdialog/index.html +140 -0
  767. package/dist/serve/docs-ui/docs/ui-primitives-confirmdialog.md +108 -0
  768. package/dist/serve/docs-ui/docs/ui-primitives-copybutton/index.html +58 -0
  769. package/dist/serve/docs-ui/docs/ui-primitives-copybutton.md +37 -0
  770. package/dist/serve/docs-ui/docs/ui-primitives-jsonview/index.html +58 -0
  771. package/dist/serve/docs-ui/docs/ui-primitives-jsonview.md +47 -0
  772. package/dist/serve/docs-ui/docs/ui-primitives-segmentedcontrol/index.html +70 -0
  773. package/dist/serve/docs-ui/docs/ui-primitives-segmentedcontrol.md +50 -0
  774. package/dist/serve/docs-ui/docs/ui-primitives-toast/index.html +87 -0
  775. package/dist/serve/docs-ui/docs/ui-primitives-toast.md +82 -0
  776. package/dist/serve/docs-ui/docs/ui-primitives-virtuallist/index.html +85 -0
  777. package/dist/serve/docs-ui/docs/ui-primitives-virtuallist.md +54 -0
  778. package/dist/serve/docs-ui/docs/ui-storage/index.html +150 -0
  779. package/dist/serve/docs-ui/docs/ui-storage-deleteselectionwithconfirm/index.html +126 -0
  780. package/dist/serve/docs-ui/docs/ui-storage-deleteselectionwithconfirm.md +88 -0
  781. package/dist/serve/docs-ui/docs/ui-storage-objectbrowser/index.html +137 -0
  782. package/dist/serve/docs-ui/docs/ui-storage-objectbrowser.md +90 -0
  783. package/dist/serve/docs-ui/docs/ui-storage-objectinspector/index.html +139 -0
  784. package/dist/serve/docs-ui/docs/ui-storage-objectinspector.md +93 -0
  785. package/dist/serve/docs-ui/docs/ui-storage-pathbreadcrumb/index.html +72 -0
  786. package/dist/serve/docs-ui/docs/ui-storage-pathbreadcrumb.md +57 -0
  787. package/dist/serve/docs-ui/docs/ui-storage-rules-aware-affordances/index.html +60 -0
  788. package/dist/serve/docs-ui/docs/ui-storage-rules-aware-affordances.md +52 -0
  789. package/dist/serve/docs-ui/docs/ui-storage-uploaddropzone/index.html +93 -0
  790. package/dist/serve/docs-ui/docs/ui-storage-uploaddropzone.md +78 -0
  791. package/dist/serve/docs-ui/docs/ui-storage-usestoragerulesgate/index.html +144 -0
  792. package/dist/serve/docs-ui/docs/ui-storage-usestoragerulesgate.md +101 -0
  793. package/dist/serve/docs-ui/docs/ui-storage.md +165 -0
  794. package/dist/serve/docs-ui/docs/ui-traffic/index.html +88 -0
  795. package/dist/serve/docs-ui/docs/ui-traffic-ruleheatmap/index.html +79 -0
  796. package/dist/serve/docs-ui/docs/ui-traffic-ruleheatmap.md +60 -0
  797. package/dist/serve/docs-ui/docs/ui-traffic-trafficdetail/index.html +78 -0
  798. package/dist/serve/docs-ui/docs/ui-traffic-trafficdetail.md +59 -0
  799. package/dist/serve/docs-ui/docs/ui-traffic-trafficlog/index.html +118 -0
  800. package/dist/serve/docs-ui/docs/ui-traffic-trafficlog.md +69 -0
  801. package/dist/serve/docs-ui/docs/ui-traffic-trafficstats/index.html +51 -0
  802. package/dist/serve/docs-ui/docs/ui-traffic-trafficstats.md +46 -0
  803. package/dist/serve/docs-ui/docs/ui-traffic.md +102 -0
  804. package/dist/serve/docs-ui/docs/ui.md +90 -0
  805. package/dist/serve/docs-ui/docs/watch-and-review/index.html +25 -0
  806. package/dist/serve/docs-ui/docs/watch-and-review.md +40 -0
  807. package/dist/serve/docs-ui/docs/what-your-agent-can-do/index.html +81 -0
  808. package/dist/serve/docs-ui/docs/what-your-agent-can-do.md +78 -0
  809. package/dist/serve/docs-ui/docs/whats-experimental/index.html +22 -0
  810. package/dist/serve/docs-ui/docs/whats-experimental.md +33 -0
  811. package/dist/serve/docs-ui/docs/whats-possible/index.html +63 -0
  812. package/dist/serve/docs-ui/docs/whats-possible.md +53 -0
  813. package/dist/serve/docs-ui/docs/which-data-service/index.html +8 -0
  814. package/dist/serve/docs-ui/docs/which-data-service.md +11 -0
  815. package/dist/serve/docs-ui/docs/write-a-rules-test-suite/index.html +85 -0
  816. package/dist/serve/docs-ui/docs/write-a-rules-test-suite.md +119 -0
  817. package/dist/serve/docs-ui/index.html +1 -0
  818. package/dist/serve/docs-ui/llms.txt +308 -0
  819. package/dist/serve/entries/ai.d.ts +4 -0
  820. package/dist/serve/entries/ai.d.ts.map +1 -0
  821. package/dist/serve/entries/ai.js +184 -0
  822. package/dist/serve/entries/ai.js.map +1 -0
  823. package/dist/serve/entries/app-backend.d.ts +2 -0
  824. package/dist/serve/entries/app-backend.d.ts.map +1 -0
  825. package/dist/serve/entries/app-backend.js +4 -0
  826. package/dist/serve/entries/app-backend.js.map +1 -0
  827. package/dist/serve/entries/app-client.d.ts +5 -0
  828. package/dist/serve/entries/app-client.d.ts.map +1 -0
  829. package/dist/serve/entries/app-client.js +23 -0
  830. package/dist/serve/entries/app-client.js.map +1 -0
  831. package/dist/serve/entries/app-session-store.d.ts +14 -0
  832. package/dist/serve/entries/app-session-store.d.ts.map +1 -0
  833. package/dist/serve/entries/app-session-store.js +37 -0
  834. package/dist/serve/entries/app-session-store.js.map +1 -0
  835. package/dist/serve/entries/app.d.ts +2 -0
  836. package/dist/serve/entries/app.d.ts.map +1 -0
  837. package/dist/serve/entries/app.js +10 -0
  838. package/dist/serve/entries/app.js.map +1 -0
  839. package/dist/serve/entries/auth-helper-core.d.ts +52 -0
  840. package/dist/serve/entries/auth-helper-core.d.ts.map +1 -0
  841. package/dist/serve/entries/auth-helper-core.js +118 -0
  842. package/dist/serve/entries/auth-helper-core.js.map +1 -0
  843. package/dist/serve/entries/auth-helper-dom.d.ts +14 -0
  844. package/dist/serve/entries/auth-helper-dom.d.ts.map +1 -0
  845. package/dist/serve/entries/auth-helper-dom.js +116 -0
  846. package/dist/serve/entries/auth-helper-dom.js.map +1 -0
  847. package/dist/serve/entries/auth-helper-runtime.d.ts +5 -0
  848. package/dist/serve/entries/auth-helper-runtime.d.ts.map +1 -0
  849. package/dist/serve/entries/auth-helper-runtime.js +11 -0
  850. package/dist/serve/entries/auth-helper-runtime.js.map +1 -0
  851. package/dist/serve/entries/auth.d.ts +77 -0
  852. package/dist/serve/entries/auth.d.ts.map +1 -0
  853. package/dist/serve/entries/auth.js +201 -0
  854. package/dist/serve/entries/auth.js.map +1 -0
  855. package/dist/serve/entries/bridge-url.d.ts +25 -0
  856. package/dist/serve/entries/bridge-url.d.ts.map +1 -0
  857. package/dist/serve/entries/bridge-url.js +30 -0
  858. package/dist/serve/entries/bridge-url.js.map +1 -0
  859. package/dist/serve/entries/database.d.ts +46 -0
  860. package/dist/serve/entries/database.d.ts.map +1 -0
  861. package/dist/serve/entries/database.js +80 -0
  862. package/dist/serve/entries/database.js.map +1 -0
  863. package/dist/serve/entries/firestore.d.ts +104 -0
  864. package/dist/serve/entries/firestore.d.ts.map +1 -0
  865. package/dist/serve/entries/firestore.js +202 -0
  866. package/dist/serve/entries/firestore.js.map +1 -0
  867. package/dist/serve/entries/init.d.ts +2 -0
  868. package/dist/serve/entries/init.d.ts.map +1 -0
  869. package/dist/serve/entries/init.js +40 -0
  870. package/dist/serve/entries/init.js.map +1 -0
  871. package/dist/serve/entries/keepalive.d.ts +20 -0
  872. package/dist/serve/entries/keepalive.d.ts.map +1 -0
  873. package/dist/serve/entries/keepalive.js +38 -0
  874. package/dist/serve/entries/keepalive.js.map +1 -0
  875. package/dist/serve/entries/messaging-sw.d.ts +10 -0
  876. package/dist/serve/entries/messaging-sw.d.ts.map +1 -0
  877. package/dist/serve/entries/messaging-sw.js +36 -0
  878. package/dist/serve/entries/messaging-sw.js.map +1 -0
  879. package/dist/serve/entries/messaging.d.ts +11 -0
  880. package/dist/serve/entries/messaging.d.ts.map +1 -0
  881. package/dist/serve/entries/messaging.js +53 -0
  882. package/dist/serve/entries/messaging.js.map +1 -0
  883. package/dist/serve/entries/runtime.d.ts +46 -0
  884. package/dist/serve/entries/runtime.d.ts.map +1 -0
  885. package/dist/serve/entries/runtime.js +435 -0
  886. package/dist/serve/entries/runtime.js.map +1 -0
  887. package/dist/serve/entries/session-store.d.ts +48 -0
  888. package/dist/serve/entries/session-store.d.ts.map +1 -0
  889. package/dist/serve/entries/session-store.js +82 -0
  890. package/dist/serve/entries/session-store.js.map +1 -0
  891. package/dist/serve/entries/storage.d.ts +25 -0
  892. package/dist/serve/entries/storage.d.ts.map +1 -0
  893. package/dist/serve/entries/storage.js +61 -0
  894. package/dist/serve/entries/storage.js.map +1 -0
  895. package/dist/serve/entries/tab-sync-wiring.d.ts +88 -0
  896. package/dist/serve/entries/tab-sync-wiring.d.ts.map +1 -0
  897. package/dist/serve/entries/tab-sync-wiring.js +217 -0
  898. package/dist/serve/entries/tab-sync-wiring.js.map +1 -0
  899. package/dist/serve/entries/worker-runtime.d.ts +10 -0
  900. package/dist/serve/entries/worker-runtime.d.ts.map +1 -0
  901. package/dist/serve/entries/worker-runtime.js +59 -0
  902. package/dist/serve/entries/worker-runtime.js.map +1 -0
  903. package/dist/serve/init-payload.d.ts +21 -0
  904. package/dist/serve/init-payload.d.ts.map +1 -0
  905. package/dist/serve/init-payload.js +2 -0
  906. package/dist/serve/init-payload.js.map +1 -0
  907. package/dist/serve/namespace.d.ts +73 -0
  908. package/dist/serve/namespace.d.ts.map +1 -0
  909. package/dist/serve/namespace.js +470 -0
  910. package/dist/serve/namespace.js.map +1 -0
  911. package/dist/serve/open-browser.d.ts +23 -0
  912. package/dist/serve/open-browser.d.ts.map +1 -0
  913. package/dist/serve/open-browser.js +58 -0
  914. package/dist/serve/open-browser.js.map +1 -0
  915. package/dist/serve/rules.d.ts +77 -0
  916. package/dist/serve/rules.d.ts.map +1 -0
  917. package/dist/serve/rules.js +202 -0
  918. package/dist/serve/rules.js.map +1 -0
  919. package/dist/serve/sandbox-marker.d.ts +9 -0
  920. package/dist/serve/sandbox-marker.d.ts.map +1 -0
  921. package/dist/serve/sandbox-marker.js +31 -0
  922. package/dist/serve/sandbox-marker.js.map +1 -0
  923. package/dist/serve/server.d.ts +135 -0
  924. package/dist/serve/server.d.ts.map +1 -0
  925. package/dist/serve/server.js +328 -0
  926. package/dist/serve/server.js.map +1 -0
  927. package/dist/serve/standalone-assets.d.ts +67 -0
  928. package/dist/serve/standalone-assets.d.ts.map +1 -0
  929. package/dist/serve/standalone-assets.js +134 -0
  930. package/dist/serve/standalone-assets.js.map +1 -0
  931. package/dist/serve/state-store.d.ts +45 -0
  932. package/dist/serve/state-store.d.ts.map +1 -0
  933. package/dist/serve/state-store.js +120 -0
  934. package/dist/serve/state-store.js.map +1 -0
  935. package/dist/serve/studio/disk-project-store.d.ts +9 -0
  936. package/dist/serve/studio/disk-project-store.d.ts.map +1 -0
  937. package/dist/serve/studio/disk-project-store.js +173 -0
  938. package/dist/serve/studio/disk-project-store.js.map +1 -0
  939. package/dist/serve/studio/disk-workspace.d.ts +14 -0
  940. package/dist/serve/studio/disk-workspace.d.ts.map +1 -0
  941. package/dist/serve/studio/disk-workspace.js +152 -0
  942. package/dist/serve/studio/disk-workspace.js.map +1 -0
  943. package/dist/serve/studio/index.d.ts +10 -0
  944. package/dist/serve/studio/index.d.ts.map +1 -0
  945. package/dist/serve/studio/index.js +9 -0
  946. package/dist/serve/studio/index.js.map +1 -0
  947. package/dist/serve/studio/routes.d.ts +40 -0
  948. package/dist/serve/studio/routes.d.ts.map +1 -0
  949. package/dist/serve/studio/routes.js +182 -0
  950. package/dist/serve/studio/routes.js.map +1 -0
  951. package/dist/serve/studio/store-types.d.ts +45 -0
  952. package/dist/serve/studio/store-types.d.ts.map +1 -0
  953. package/dist/serve/studio/store-types.js +11 -0
  954. package/dist/serve/studio/store-types.js.map +1 -0
  955. package/dist/serve/studio-ui/assets/RulesCodeEditor-BZpD57II.js +23 -0
  956. package/dist/serve/studio-ui/assets/index-Bsa-TQNK.css +1 -0
  957. package/dist/serve/studio-ui/assets/index-DGaVuOhE.js +1211 -0
  958. package/dist/serve/studio-ui/assets/seed-CTmn6YuO.js +2 -0
  959. package/dist/serve/studio-ui/index.html +32 -0
  960. package/dist/serve/studio-ui/pyric-logo.svg +76 -0
  961. package/dist/serve/vite-plugin.d.ts +57 -0
  962. package/dist/serve/vite-plugin.d.ts.map +1 -0
  963. package/dist/serve/vite-plugin.js +658 -0
  964. package/dist/serve/vite-plugin.js.map +1 -0
  965. package/dist/serve/worker/client/admin-firestore.d.ts +18 -0
  966. package/dist/serve/worker/client/admin-firestore.d.ts.map +1 -0
  967. package/dist/serve/worker/client/admin-firestore.js +26 -0
  968. package/dist/serve/worker/client/admin-firestore.js.map +1 -0
  969. package/dist/serve/worker/client/ai.d.ts +31 -0
  970. package/dist/serve/worker/client/ai.d.ts.map +1 -0
  971. package/dist/serve/worker/client/ai.js +89 -0
  972. package/dist/serve/worker/client/ai.js.map +1 -0
  973. package/dist/serve/worker/client/auth.d.ts +168 -0
  974. package/dist/serve/worker/client/auth.d.ts.map +1 -0
  975. package/dist/serve/worker/client/auth.js +322 -0
  976. package/dist/serve/worker/client/auth.js.map +1 -0
  977. package/dist/serve/worker/client/connection.d.ts +80 -0
  978. package/dist/serve/worker/client/connection.d.ts.map +1 -0
  979. package/dist/serve/worker/client/connection.js +148 -0
  980. package/dist/serve/worker/client/connection.js.map +1 -0
  981. package/dist/serve/worker/client/core.d.ts +109 -0
  982. package/dist/serve/worker/client/core.d.ts.map +1 -0
  983. package/dist/serve/worker/client/core.js +248 -0
  984. package/dist/serve/worker/client/core.js.map +1 -0
  985. package/dist/serve/worker/client/disconnect.d.ts +7 -0
  986. package/dist/serve/worker/client/disconnect.d.ts.map +1 -0
  987. package/dist/serve/worker/client/disconnect.js +26 -0
  988. package/dist/serve/worker/client/disconnect.js.map +1 -0
  989. package/dist/serve/worker/client/firestore-reads.d.ts +49 -0
  990. package/dist/serve/worker/client/firestore-reads.d.ts.map +1 -0
  991. package/dist/serve/worker/client/firestore-reads.js +139 -0
  992. package/dist/serve/worker/client/firestore-reads.js.map +1 -0
  993. package/dist/serve/worker/client/firestore-refs.d.ts +54 -0
  994. package/dist/serve/worker/client/firestore-refs.d.ts.map +1 -0
  995. package/dist/serve/worker/client/firestore-refs.js +167 -0
  996. package/dist/serve/worker/client/firestore-refs.js.map +1 -0
  997. package/dist/serve/worker/client/firestore-writes.d.ts +70 -0
  998. package/dist/serve/worker/client/firestore-writes.d.ts.map +1 -0
  999. package/dist/serve/worker/client/firestore-writes.js +169 -0
  1000. package/dist/serve/worker/client/firestore-writes.js.map +1 -0
  1001. package/dist/serve/worker/client/handles.d.ts +73 -0
  1002. package/dist/serve/worker/client/handles.d.ts.map +1 -0
  1003. package/dist/serve/worker/client/handles.js +4 -0
  1004. package/dist/serve/worker/client/handles.js.map +1 -0
  1005. package/dist/serve/worker/client/messaging.d.ts +16 -0
  1006. package/dist/serve/worker/client/messaging.d.ts.map +1 -0
  1007. package/dist/serve/worker/client/messaging.js +60 -0
  1008. package/dist/serve/worker/client/messaging.js.map +1 -0
  1009. package/dist/serve/worker/client/presence.d.ts +43 -0
  1010. package/dist/serve/worker/client/presence.d.ts.map +1 -0
  1011. package/dist/serve/worker/client/presence.js +132 -0
  1012. package/dist/serve/worker/client/presence.js.map +1 -0
  1013. package/dist/serve/worker/client/rtdb.d.ts +36 -0
  1014. package/dist/serve/worker/client/rtdb.d.ts.map +1 -0
  1015. package/dist/serve/worker/client/rtdb.js +241 -0
  1016. package/dist/serve/worker/client/rtdb.js.map +1 -0
  1017. package/dist/serve/worker/client/rules.d.ts +24 -0
  1018. package/dist/serve/worker/client/rules.d.ts.map +1 -0
  1019. package/dist/serve/worker/client/rules.js +44 -0
  1020. package/dist/serve/worker/client/rules.js.map +1 -0
  1021. package/dist/serve/worker/client/service-worker-connection.d.ts +3 -0
  1022. package/dist/serve/worker/client/service-worker-connection.d.ts.map +1 -0
  1023. package/dist/serve/worker/client/service-worker-connection.js +53 -0
  1024. package/dist/serve/worker/client/service-worker-connection.js.map +1 -0
  1025. package/dist/serve/worker/client/snapshots.d.ts +32 -0
  1026. package/dist/serve/worker/client/snapshots.d.ts.map +1 -0
  1027. package/dist/serve/worker/client/snapshots.js +46 -0
  1028. package/dist/serve/worker/client/snapshots.js.map +1 -0
  1029. package/dist/serve/worker/client/storage.d.ts +64 -0
  1030. package/dist/serve/worker/client/storage.d.ts.map +1 -0
  1031. package/dist/serve/worker/client/storage.js +125 -0
  1032. package/dist/serve/worker/client/storage.js.map +1 -0
  1033. package/dist/serve/worker/client/studio.d.ts +32 -0
  1034. package/dist/serve/worker/client/studio.d.ts.map +1 -0
  1035. package/dist/serve/worker/client/studio.js +61 -0
  1036. package/dist/serve/worker/client/studio.js.map +1 -0
  1037. package/dist/serve/worker/client.d.ts +43 -0
  1038. package/dist/serve/worker/client.d.ts.map +1 -0
  1039. package/dist/serve/worker/client.js +44 -0
  1040. package/dist/serve/worker/client.js.map +1 -0
  1041. package/dist/serve/worker/entry.d.ts +40 -0
  1042. package/dist/serve/worker/entry.d.ts.map +1 -0
  1043. package/dist/serve/worker/entry.js +144 -0
  1044. package/dist/serve/worker/entry.js.map +1 -0
  1045. package/dist/serve/worker/host/admin-firestore.d.ts +17 -0
  1046. package/dist/serve/worker/host/admin-firestore.d.ts.map +1 -0
  1047. package/dist/serve/worker/host/admin-firestore.js +92 -0
  1048. package/dist/serve/worker/host/admin-firestore.js.map +1 -0
  1049. package/dist/serve/worker/host/connection.d.ts +40 -0
  1050. package/dist/serve/worker/host/connection.d.ts.map +1 -0
  1051. package/dist/serve/worker/host/connection.js +153 -0
  1052. package/dist/serve/worker/host/connection.js.map +1 -0
  1053. package/dist/serve/worker/host/core.d.ts +159 -0
  1054. package/dist/serve/worker/host/core.d.ts.map +1 -0
  1055. package/dist/serve/worker/host/core.js +296 -0
  1056. package/dist/serve/worker/host/core.js.map +1 -0
  1057. package/dist/serve/worker/host/dispatch.d.ts +34 -0
  1058. package/dist/serve/worker/host/dispatch.d.ts.map +1 -0
  1059. package/dist/serve/worker/host/dispatch.js +267 -0
  1060. package/dist/serve/worker/host/dispatch.js.map +1 -0
  1061. package/dist/serve/worker/host/firestore-reads.d.ts +17 -0
  1062. package/dist/serve/worker/host/firestore-reads.d.ts.map +1 -0
  1063. package/dist/serve/worker/host/firestore-reads.js +108 -0
  1064. package/dist/serve/worker/host/firestore-reads.js.map +1 -0
  1065. package/dist/serve/worker/host/firestore-writes.d.ts +37 -0
  1066. package/dist/serve/worker/host/firestore-writes.d.ts.map +1 -0
  1067. package/dist/serve/worker/host/firestore-writes.js +409 -0
  1068. package/dist/serve/worker/host/firestore-writes.js.map +1 -0
  1069. package/dist/serve/worker/host/presence.d.ts +38 -0
  1070. package/dist/serve/worker/host/presence.d.ts.map +1 -0
  1071. package/dist/serve/worker/host/presence.js +280 -0
  1072. package/dist/serve/worker/host/presence.js.map +1 -0
  1073. package/dist/serve/worker/host/rtdb.d.ts +18 -0
  1074. package/dist/serve/worker/host/rtdb.d.ts.map +1 -0
  1075. package/dist/serve/worker/host/rtdb.js +128 -0
  1076. package/dist/serve/worker/host/rtdb.js.map +1 -0
  1077. package/dist/serve/worker/host/rules.d.ts +17 -0
  1078. package/dist/serve/worker/host/rules.d.ts.map +1 -0
  1079. package/dist/serve/worker/host/rules.js +118 -0
  1080. package/dist/serve/worker/host/rules.js.map +1 -0
  1081. package/dist/serve/worker/host/storage.d.ts +19 -0
  1082. package/dist/serve/worker/host/storage.d.ts.map +1 -0
  1083. package/dist/serve/worker/host/storage.js +260 -0
  1084. package/dist/serve/worker/host/storage.js.map +1 -0
  1085. package/dist/serve/worker/host/studio.d.ts +13 -0
  1086. package/dist/serve/worker/host/studio.d.ts.map +1 -0
  1087. package/dist/serve/worker/host/studio.js +30 -0
  1088. package/dist/serve/worker/host/studio.js.map +1 -0
  1089. package/dist/serve/worker/host/subscriptions.d.ts +21 -0
  1090. package/dist/serve/worker/host/subscriptions.d.ts.map +1 -0
  1091. package/dist/serve/worker/host/subscriptions.js +162 -0
  1092. package/dist/serve/worker/host/subscriptions.js.map +1 -0
  1093. package/dist/serve/worker/host-ai.d.ts +59 -0
  1094. package/dist/serve/worker/host-ai.d.ts.map +1 -0
  1095. package/dist/serve/worker/host-ai.js +158 -0
  1096. package/dist/serve/worker/host-ai.js.map +1 -0
  1097. package/dist/serve/worker/host-auth.d.ts +47 -0
  1098. package/dist/serve/worker/host-auth.d.ts.map +1 -0
  1099. package/dist/serve/worker/host-auth.js +464 -0
  1100. package/dist/serve/worker/host-auth.js.map +1 -0
  1101. package/dist/serve/worker/host-context.d.ts +220 -0
  1102. package/dist/serve/worker/host-context.d.ts.map +1 -0
  1103. package/dist/serve/worker/host-context.js +45 -0
  1104. package/dist/serve/worker/host-context.js.map +1 -0
  1105. package/dist/serve/worker/host-events.d.ts +21 -0
  1106. package/dist/serve/worker/host-events.d.ts.map +1 -0
  1107. package/dist/serve/worker/host-events.js +87 -0
  1108. package/dist/serve/worker/host-events.js.map +1 -0
  1109. package/dist/serve/worker/host-messaging.d.ts +60 -0
  1110. package/dist/serve/worker/host-messaging.d.ts.map +1 -0
  1111. package/dist/serve/worker/host-messaging.js +226 -0
  1112. package/dist/serve/worker/host-messaging.js.map +1 -0
  1113. package/dist/serve/worker/host.d.ts +36 -0
  1114. package/dist/serve/worker/host.d.ts.map +1 -0
  1115. package/dist/serve/worker/host.js +39 -0
  1116. package/dist/serve/worker/host.js.map +1 -0
  1117. package/dist/serve/worker/index.d.ts +22 -0
  1118. package/dist/serve/worker/index.d.ts.map +1 -0
  1119. package/dist/serve/worker/index.js +61 -0
  1120. package/dist/serve/worker/index.js.map +1 -0
  1121. package/dist/serve/worker/presence-timing.d.ts +14 -0
  1122. package/dist/serve/worker/presence-timing.d.ts.map +1 -0
  1123. package/dist/serve/worker/presence-timing.js +14 -0
  1124. package/dist/serve/worker/presence-timing.js.map +1 -0
  1125. package/dist/serve/worker/protocol.d.ts +1150 -0
  1126. package/dist/serve/worker/protocol.d.ts.map +1 -0
  1127. package/dist/serve/worker/protocol.js +228 -0
  1128. package/dist/serve/worker/protocol.js.map +1 -0
  1129. package/dist/serve/worker/serve-init.d.ts +201 -0
  1130. package/dist/serve/worker/serve-init.d.ts.map +1 -0
  1131. package/dist/serve/worker/serve-init.js +579 -0
  1132. package/dist/serve/worker/serve-init.js.map +1 -0
  1133. package/dist/serve/worker/service-worker-channel.d.ts +23 -0
  1134. package/dist/serve/worker/service-worker-channel.d.ts.map +1 -0
  1135. package/dist/serve/worker/service-worker-channel.js +9 -0
  1136. package/dist/serve/worker/service-worker-channel.js.map +1 -0
  1137. package/dist/serve/worker/service-worker-relay.d.ts +22 -0
  1138. package/dist/serve/worker/service-worker-relay.d.ts.map +1 -0
  1139. package/dist/serve/worker/service-worker-relay.js +63 -0
  1140. package/dist/serve/worker/service-worker-relay.js.map +1 -0
  1141. package/dist/serve/writer-lock.d.ts +32 -0
  1142. package/dist/serve/writer-lock.d.ts.map +1 -0
  1143. package/dist/serve/writer-lock.js +43 -0
  1144. package/dist/serve/writer-lock.js.map +1 -0
  1145. package/dist/verify/cases.d.ts +37 -0
  1146. package/dist/verify/cases.d.ts.map +1 -0
  1147. package/dist/verify/cases.js +173 -0
  1148. package/dist/verify/cases.js.map +1 -0
  1149. package/dist/verify/fixture.d.ts +100 -0
  1150. package/dist/verify/fixture.d.ts.map +1 -0
  1151. package/dist/verify/fixture.js +156 -0
  1152. package/dist/verify/fixture.js.map +1 -0
  1153. package/dist/verify/index.d.ts +102 -0
  1154. package/dist/verify/index.d.ts.map +1 -0
  1155. package/dist/verify/index.js +318 -0
  1156. package/dist/verify/index.js.map +1 -0
  1157. package/dist/verify/tools.d.ts +7 -0
  1158. package/dist/verify/tools.d.ts.map +1 -0
  1159. package/dist/verify/tools.js +83 -0
  1160. package/dist/verify/tools.js.map +1 -0
  1161. package/dist/version/compat-target.d.ts +18 -0
  1162. package/dist/version/compat-target.d.ts.map +1 -0
  1163. package/dist/version/compat-target.js +18 -0
  1164. package/dist/version/compat-target.js.map +1 -0
  1165. package/dist/vite.d.ts +12 -0
  1166. package/dist/vite.d.ts.map +1 -0
  1167. package/dist/vite.js +16 -0
  1168. package/dist/vite.js.map +1 -0
  1169. package/package.json +133 -0
@@ -0,0 +1,2171 @@
1
+
2
+ <!-- Generated from published package declarations via TypeDoc. Do not edit by hand; run bun run docs:api:generate. -->
3
+
4
+ ## Interfaces
5
+
6
+ <a id="collectionlistprops"></a>
7
+
8
+ ### CollectionListProps
9
+
10
+ #### Properties
11
+
12
+ | Property | Type | Description |
13
+ | :------ | :------ | :------ |
14
+ | <a id="classname"></a> `className?` | `string` | - |
15
+ | <a id="collections"></a> `collections` | `CollectionReference`[] | - |
16
+ | <a id="emptystate"></a> `emptyState?` | `ReactNode` | Optional empty-state node. Rendered when `collections.length` is 0 and the list isn't loading. |
17
+ | <a id="error"></a> `error?` | `Error` | - |
18
+ | <a id="isloading"></a> `isLoading?` | `boolean` | - |
19
+ | <a id="onselect"></a> `onSelect?` | (`collection`: `CollectionReference`) => `void` | Fired when a list item is clicked. Consumer wires navigation. |
20
+
21
+ ***
22
+
23
+ <a id="deletewithconfirmprops"></a>
24
+
25
+ ### DeleteWithConfirmProps
26
+
27
+ #### Properties
28
+
29
+ | Property | Type | Description |
30
+ | :------ | :------ | :------ |
31
+ | <a id="body"></a> `body?` | `ReactNode` | Confirm-dialog body. |
32
+ | <a id="classname-1"></a> `className?` | `string` | Class forwarded to the default trigger button. |
33
+ | <a id="confirmlabel"></a> `confirmLabel?` | `string` | Label on the destructive button. |
34
+ | <a id="impl"></a> `impl` | [`RecursiveDeleteImpl`](#recursivedeleteimpl) | Implementation that walks the tree + deletes. Consumer-supplied. Sandbox-backed apps usually wire `pyric/sandbox` introspection; production apps usually call a Cloud Function. |
35
+ | <a id="ondeleted"></a> `onDeleted?` | () => `void` | Fired after the delete iterator finishes successfully. |
36
+ | <a id="rendertrigger"></a> `renderTrigger?` | (`props`: \{ `isRunning`: `boolean`; `onClick`: () => `void`; `progress`: `number`; \}) => `ReactNode` | Optional render override for the trigger button. |
37
+ | <a id="target"></a> `target` | `any` | The doc / collection to delete. |
38
+ | <a id="title"></a> `title?` | `string` | Confirm-dialog title. Defaults to a sensible derivation from the target's path. |
39
+
40
+ ***
41
+
42
+ <a id="documenteditorrootprops"></a>
43
+
44
+ ### DocumentEditorRootProps
45
+
46
+ #### Properties
47
+
48
+ | Property | Type | Description |
49
+ | :------ | :------ | :------ |
50
+ | <a id="children"></a> `children` | `ReactNode` | - |
51
+ | <a id="classname-2"></a> `className?` | `string` | - |
52
+ | <a id="fieldeditors"></a> `fieldEditors?` | [`FieldEditorRegistry`](#fieldeditorregistry) | Override or extend the built-in field editors. |
53
+ | <a id="initial"></a> `initial?` | `Record`\<`string`, `unknown`\> | Initial document data. Built into the editor's tree on first mount; later changes don't rebuild — call `editor.reset()` to re-initialize from a fresh `initial`. |
54
+ | <a id="onchange"></a> `onChange?` | (`state`: [`UseDocumentEditorResult`](#usedocumenteditorresult)) => `void` | Called on every state change with the latest editor state. The parent typically watches `state.isValid` + `state.isDirty` to enable/disable a Save button. |
55
+
56
+ ***
57
+
58
+ <a id="documenteditorstate"></a>
59
+
60
+ ### DocumentEditorState
61
+
62
+ Reducer state. `tree` is the live document under edit; `initial`
63
+ is the snapshot the editor was constructed from (used to
64
+ implement `reset` and `isDirty`).
65
+
66
+ #### Extended by
67
+
68
+ - [`UseDocumentEditorResult`](#usedocumenteditorresult)
69
+
70
+ #### Properties
71
+
72
+ | Property | Type | Description |
73
+ | :------ | :------ | :------ |
74
+ | <a id="errorcount"></a> `errorCount` | `number` | Count of nodes with an active `error`. Derived after every action; the reducer keeps it in state to avoid a tree walk on every render. |
75
+ | <a id="initial-1"></a> `initial` | [`EditorTree`](#editortree) | Frozen copy of the tree at construction. `reset` restores from here; `isDirty` is computed by comparing serializations. |
76
+ | <a id="tree"></a> `tree` | [`EditorTree`](#editortree) | - |
77
+
78
+ ***
79
+
80
+ <a id="documentlistprops"></a>
81
+
82
+ ### DocumentListProps
83
+
84
+ #### Properties
85
+
86
+ | Property | Type | Description |
87
+ | :------ | :------ | :------ |
88
+ | <a id="classname-3"></a> `className?` | `string` | - |
89
+ | <a id="documents"></a> `documents` | `QueryDocumentSnapshot`[] | - |
90
+ | <a id="emptystate-1"></a> `emptyState?` | `ReactNode` | - |
91
+ | <a id="error-1"></a> `error?` | `Error` | - |
92
+ | <a id="hasmore"></a> `hasMore?` | `boolean` | - |
93
+ | <a id="isloading-1"></a> `isLoading?` | `boolean` | - |
94
+ | <a id="onloadmore"></a> `onLoadMore?` | () => `void` | Fired when the user requests another page. Wire to the hook's `loadMore`. The component will not render a Load More button when this is undefined. |
95
+ | <a id="onselect-1"></a> `onSelect?` | (`ref`: `DocumentReference`) => `void` | - |
96
+ | <a id="renderlabel"></a> `renderLabel?` | (`doc`: `QueryDocumentSnapshot`) => `ReactNode` | Optional renderer for the row label. Default renders the doc id. Override to show a field value alongside, an icon, etc. |
97
+ | <a id="renderrowaction"></a> `renderRowAction?` | (`doc`: `QueryDocumentSnapshot`) => `ReactNode` | Optional per-row action(s), rendered as a SIBLING of the row's select button inside the entry (not nested in it — so the action carries its own click handling without an invalid button-in-button). Used for row-level affordances like delete. |
98
+ | <a id="rowheight"></a> `rowHeight?` | `number` \| (`index`: `number`) => `number` | Estimated row height when virtualizing. Default 36 — matches a single-line text button at 13px font + ~10px padding. Pass a function for variable sizing (TanStack measures the actual height via ResizeObserver after the first paint anyway). |
99
+ | <a id="updatescope"></a> `updateScope?` | `string` | Stable collection/query identity used to reset update highlighting when the rendered list changes scope. |
100
+ | <a id="virtualizedheight"></a> `virtualizedHeight?` | `string` \| `number` | Pixel height the virtualized scroll container fills. Only applies when `documents.length > virtualizeThreshold`. Default `'60vh'` — consumers usually constrain via their layout. |
101
+ | <a id="virtualizethreshold"></a> `virtualizeThreshold?` | `number` | Above this row count, the list switches to virtualization via `<VirtualList>`. Default 100. Set to `Infinity` to disable (e.g. when measuring layout shifts is more important than scroll perf). |
102
+
103
+ ***
104
+
105
+ <a id="documentpreviewprops"></a>
106
+
107
+ ### DocumentPreviewProps
108
+
109
+ #### Properties
110
+
111
+ | Property | Type | Description |
112
+ | :------ | :------ | :------ |
113
+ | <a id="classname-4"></a> `className?` | `string` | Forwarded to the root `<div>`. |
114
+ | <a id="documentref"></a> `documentRef?` | `any` | The document's own reference. Required to surface its subcollections — `DocumentSnapshot` (as typed by `pyric/firestore`) doesn't expose `.ref`, so the consumer threads the ref it already holds from fetching the doc. Without it (or without [listSubcollections](#listsubcollections)) the Subcollections section is omitted. |
115
+ | <a id="emptystate-2"></a> `emptyState?` | `ReactNode` | Content rendered when the snapshot is missing or `!exists()`. Defaults to `null` (renders nothing). |
116
+ | <a id="fieldeditors-1"></a> `fieldEditors?` | [`FieldEditorRegistry`](#fieldeditorregistry) | Override or extend the built-in field editors. Merged on top of [defaultFieldEditors](#defaultfieldeditors) — only the keys you provide override. |
117
+ | <a id="firestore"></a> `firestore?` | `Firestore` | Firestore handle passed to [listSubcollections](#listsubcollections). Required alongside `documentRef` + `listSubcollections` to surface the Subcollections section (the same explicit-handle shape `ReferencePicker` uses). |
118
+ | <a id="listsubcollections"></a> `listSubcollections?` | [`ListSubcollections`](#listsubcollections-2) | Injected lister for the document's subcollections. The modular Web SDK has no client-side `listCollections`; sandbox-backed apps wire `pyric/sandbox`'s in-process listing, production apps pass a known list or a server proxy. Same shape `ReferencePicker` / `useCollectionList` use. Omit to hide the Subcollections section. |
119
+ | <a id="onreferenceclick"></a> `onReferenceClick?` | (`ref`: `DocumentReference`) => `void` | Fired when a reference field is clicked. When supplied, the reference Display renders as an interactive `<button>` (with `data-pyric-clickable`); when omitted, it stays inert as a `<span>`. Consumers wire navigation here — the library does not depend on a router. |
120
+ | <a id="onsubcollectionclick"></a> `onSubcollectionClick?` | (`collection`: `CollectionReference`) => `void` | Fired when a subcollection's drill affordance is activated. Receives the subcollection's `CollectionReference` (its `.path` is the navigate target). Consumers wire navigation here. |
121
+ | <a id="snapshot"></a> `snapshot` | `any` | Snapshot from `useFirestoreDoc` or `getDoc`. When `null` / `undefined`, renders [emptyState](#emptystate-2). |
122
+
123
+ ***
124
+
125
+ <a id="editortree"></a>
126
+
127
+ ### EditorTree
128
+
129
+ Normalized tree of nodes. `nodes` is the lookup; `childIds` is the
130
+ ordered child list per parent. The root node is itself a `map`
131
+ node (its children are the document's top-level fields).
132
+
133
+ #### Properties
134
+
135
+ | Property | Type |
136
+ | :------ | :------ |
137
+ | <a id="childids"></a> `childIds` | `Record`\<`string`, `string`[]\> |
138
+ | <a id="nodes"></a> `nodes` | `Record`\<`string`, [`FieldNode`](#fieldnode)\> |
139
+ | <a id="rootid"></a> `rootId` | `string` |
140
+
141
+ ***
142
+
143
+ <a id="fielddisplayprops"></a>
144
+
145
+ ### FieldDisplayProps
146
+
147
+ #### Type Parameters
148
+
149
+ | Type Parameter | Default type |
150
+ | :------ | :------ |
151
+ | `V` | `unknown` |
152
+
153
+ #### Properties
154
+
155
+ | Property | Type | Description |
156
+ | :------ | :------ | :------ |
157
+ | <a id="fieldeditors-2"></a> `fieldEditors?` | [`FieldEditorRegistry`](#fieldeditorregistry) | Recursive editors (Map, Array) need the registry to dispatch on their children. Leaf editors (String, Number, …) can ignore this prop. Required-but-optional because the consumer of the component (`<FieldRenderer>`, `<DocumentPreview>`) always threads it through. |
158
+ | <a id="path"></a> `path?` | `string` | Dotted/bracketed path from the document root, e.g. `users.alice` or `tags[0]`. Forwarded so consumer styles can target nested positions via `[data-field-path="users.alice"]`. |
159
+ | <a id="value"></a> `value` | `V` | Value to display. The component's `V` generic narrows this. |
160
+
161
+ ***
162
+
163
+ <a id="fieldeditorcontract"></a>
164
+
165
+ ### FieldEditorContract
166
+
167
+ Contract for one Firestore value type. `Display` (read-mode) is
168
+ required; `Edit` + `validate` + `defaultValue` are required for
169
+ leaf types that participate in M3's editor. Map/array contracts
170
+ supply only `Display` — their edit affordances come from the
171
+ `<DocumentEditor>` compound component.
172
+
173
+ #### Type Parameters
174
+
175
+ | Type Parameter | Default type |
176
+ | :------ | :------ |
177
+ | `V` | `unknown` |
178
+
179
+ #### Properties
180
+
181
+ | Property | Type |
182
+ | :------ | :------ |
183
+ | <a id="display"></a> `Display` | `ComponentType`\<[`FieldDisplayProps`](#fielddisplayprops)\<`V`\>\> |
184
+ | <a id="edit"></a> `Edit?` | `ComponentType`\<[`FieldEditProps`](#fieldeditprops)\<`V`\>\> |
185
+ | <a id="type"></a> `type` | [`FieldType`](#fieldtype) |
186
+
187
+ ***
188
+
189
+ <a id="fieldeditprops"></a>
190
+
191
+ ### FieldEditProps
192
+
193
+ Props passed to a per-type `Edit` component. The leaf editors
194
+ (string, number, …) consume this directly. Map/array editing is
195
+ handled by the `<DocumentEditor>` compound component itself, not
196
+ by individual editors — Firestore's container shapes are special
197
+ enough that pushing them through the registry costs more than
198
+ it's worth.
199
+
200
+ #### Type Parameters
201
+
202
+ | Type Parameter | Default type |
203
+ | :------ | :------ |
204
+ | `V` | `unknown` |
205
+
206
+ #### Properties
207
+
208
+ | Property | Type | Description |
209
+ | :------ | :------ | :------ |
210
+ | <a id="error-2"></a> `error?` | `string` | Validation error attached by the reducer. Editors render it inline alongside the input. |
211
+ | <a id="onchange-1"></a> `onChange` | (`next`: `V`) => `void` | Commit a new value. The hook wires this to the reducer's `setValue` action. |
212
+ | <a id="path-1"></a> `path?` | `string` | Dotted/bracketed path from the document root. |
213
+ | <a id="value-1"></a> `value` | `V` | Current value. |
214
+
215
+ ***
216
+
217
+ <a id="fieldnode"></a>
218
+
219
+ ### FieldNode
220
+
221
+ One node in the normalized editor tree. Every Firestore field —
222
+ leaf or container — is a node with a uuid, a parent pointer, a
223
+ type, and a value. Containers (map, array) carry no value of
224
+ their own; their children represent the value.
225
+
226
+ #### Properties
227
+
228
+ | Property | Type | Description |
229
+ | :------ | :------ | :------ |
230
+ | <a id="error-3"></a> `error?` | `string` | Validation error message attached to the node by the reducer after every action. `undefined` when valid. Computed on EVERY action regardless of [touched](#touched) — `errorCount` / `isValid` must reflect the true state so Save stays disabled. `touched` governs only whether a consumer chooses to DISPLAY the error. |
231
+ | <a id="id"></a> `id` | `string` | Stable uuid. Used as React `key` and as the action target. |
232
+ | <a id="key"></a> `key` | `string` | Map children carry their key here. Array children carry `null` (position comes from the parent's `childIds` order). The root also carries `null` (it has no parent). |
233
+ | <a id="parentid"></a> `parentId` | `string` | Parent uuid; `null` for the root. |
234
+ | <a id="touched"></a> `touched?` | `boolean` | Set once the field has been blurred (or a submit attempt swept the whole tree via `touchAll`). Consumers gate error display on `touched && error` so a freshly-added empty row doesn't show "Field name is required" before the user has interacted with it. |
235
+ | <a id="type-1"></a> `type` | [`FieldType`](#fieldtype) | Discriminated type. Drives which editor renders. |
236
+ | <a id="value-2"></a> `value` | `unknown` | Leaf value. `undefined` for `map` / `array` — those carry their value as children. `null` field type has `value === null`. |
237
+
238
+ ***
239
+
240
+ <a id="fieldrendererprops"></a>
241
+
242
+ ### FieldRendererProps
243
+
244
+ #### Properties
245
+
246
+ | Property | Type | Description |
247
+ | :------ | :------ | :------ |
248
+ | <a id="fieldeditors-3"></a> `fieldEditors` | [`FieldEditorRegistry`](#fieldeditorregistry) | Registry to dispatch through. Pass the merged registry — this component does not fall back to defaults on its own (to avoid a circular import with the editors). `<DocumentPreview>` is the entry point that merges user overrides into defaults. |
249
+ | <a id="path-2"></a> `path?` | `string` | - |
250
+ | <a id="value-3"></a> `value` | `unknown` | - |
251
+
252
+ ***
253
+
254
+ <a id="parsedimportdoc"></a>
255
+
256
+ ### ParsedImportDoc
257
+
258
+ One document to create. `id === null` means "let Firestore auto-id it"
259
+ (only produced by the array shape when no `generateId` option is given —
260
+ a map key is always a chosen id).
261
+
262
+ #### Properties
263
+
264
+ | Property | Type |
265
+ | :------ | :------ |
266
+ | <a id="data"></a> `data` | `Record`\<`string`, `unknown`\> |
267
+ | <a id="id-1"></a> `id` | `string` |
268
+
269
+ ***
270
+
271
+ <a id="parseimportoptions"></a>
272
+
273
+ ### ParseImportOptions
274
+
275
+ #### Properties
276
+
277
+ | Property | Type | Description |
278
+ | :------ | :------ | :------ |
279
+ | <a id="generateid"></a> `generateId?` | () => `string` | When provided, array-shape entries get their auto-id GENERATED AT PARSE TIME (instead of `id: null` / addDoc-at-write-time). Fixing ids at parse makes a retry after a partial failure idempotent: the same parse's ids are reused, so re-running the import cannot duplicate already-written docs. Use [firestoreAutoId](#firestoreautoid) for prod-parity ids. |
280
+
281
+ ***
282
+
283
+ <a id="parseimportresult"></a>
284
+
285
+ ### ParseImportResult
286
+
287
+ #### Properties
288
+
289
+ | Property | Type | Description |
290
+ | :------ | :------ | :------ |
291
+ | <a id="docs"></a> `docs` | [`ParsedImportDoc`](#parsedimportdoc)[] | - |
292
+ | <a id="errors"></a> `errors` | `string`[] | Human-readable problems found while parsing. A non-empty `errors` does NOT necessarily mean `docs` is empty — the parser is per-item tolerant so one bad entry doesn't block the rest; the caller decides whether to block on any error or proceed with the valid subset. |
293
+
294
+ ***
295
+
296
+ <a id="querybuilderactions"></a>
297
+
298
+ ### QueryBuilderActions
299
+
300
+ #### Properties
301
+
302
+ | Property | Type | Description |
303
+ | :------ | :------ | :------ |
304
+ | <a id="addcondition"></a> `addCondition` | (`c?`: `Partial`\<`Omit`\<[`QueryCondition`](#querycondition), `"id"`\>\>) => `void` | - |
305
+ | <a id="buildquery"></a> `buildQuery` | (`base`: `any`) => `Query` | Compose the state into a Firestore `Query`. Returns the base collection when there are no conditions / orderBy / limit. Conditions with empty `field` are skipped — the builder UI lets users add a row before they've filled it in. |
306
+ | <a id="removecondition"></a> `removeCondition` | (`id`: `string`) => `void` | - |
307
+ | <a id="reset"></a> `reset` | () => `void` | - |
308
+ | <a id="setlimit"></a> `setLimit` | (`limit?`: `number`) => `void` | - |
309
+ | <a id="setorderby"></a> `setOrderBy` | (`orderBy?`: \{ `direction`: `OrderDirection`; `field`: `string`; \}) => `void` | - |
310
+ | <a id="updatecondition"></a> `updateCondition` | (`id`: `string`, `patch`: `Partial`\<`Omit`\<[`QueryCondition`](#querycondition), `"id"`\>\>) => `void` | - |
311
+
312
+ ***
313
+
314
+ <a id="querybuilderprops"></a>
315
+
316
+ ### QueryBuilderProps
317
+
318
+ #### Properties
319
+
320
+ | Property | Type | Description |
321
+ | :------ | :------ | :------ |
322
+ | <a id="classname-5"></a> `className?` | `string` | - |
323
+ | <a id="initial-2"></a> `initial?` | `Partial`\<[`QueryBuilderState`](#querybuilderstate)\> | Drives the hook used internally. Both the state and the composed Query are exposed via `onChange`. |
324
+ | <a id="onchange-2"></a> `onChange?` | (`builder`: [`UseQueryBuilderResult`](#usequerybuilderresult)) => `void` | Fired on every state change with the latest builder API. The parent typically calls `builder.buildQuery(collection)` and feeds the result into `useDocumentList` / `useFirestoreCollection`. |
325
+
326
+ ***
327
+
328
+ <a id="querybuilderstate"></a>
329
+
330
+ ### QueryBuilderState
331
+
332
+ #### Properties
333
+
334
+ | Property | Type |
335
+ | :------ | :------ |
336
+ | <a id="conditions"></a> `conditions` | [`QueryCondition`](#querycondition)[] |
337
+ | <a id="limit"></a> `limit?` | `number` |
338
+ | <a id="orderby"></a> `orderBy?` | \{ `direction`: `OrderDirection`; `field`: `string`; \} |
339
+ | `orderBy.direction` | `OrderDirection` |
340
+ | `orderBy.field` | `string` |
341
+
342
+ ***
343
+
344
+ <a id="querycondition"></a>
345
+
346
+ ### QueryCondition
347
+
348
+ #### Properties
349
+
350
+ | Property | Type |
351
+ | :------ | :------ |
352
+ | <a id="field"></a> `field` | `string` |
353
+ | <a id="id-2"></a> `id` | `string` |
354
+ | <a id="op"></a> `op` | `WhereFilterOp` |
355
+ | <a id="value-4"></a> `value` | `unknown` |
356
+
357
+ ***
358
+
359
+ <a id="recursivedeleteimpl"></a>
360
+
361
+ ### RecursiveDeleteImpl
362
+
363
+ Implementation injected by the consumer. The library doesn't ship
364
+ one — sandbox-backed apps usually walk `pyric/sandbox`'s in-process
365
+ tree; production apps usually call a Cloud Function. Either way,
366
+ `start` returns an async iterator emitting progress.
367
+
368
+ #### Properties
369
+
370
+ | Property | Type |
371
+ | :------ | :------ |
372
+ | <a id="start"></a> `start` | (`target`: `any`) => `AsyncIterableIterator`\<[`RecursiveDeleteProgress`](#recursivedeleteprogress)\> |
373
+
374
+ ***
375
+
376
+ <a id="recursivedeleteprogress"></a>
377
+
378
+ ### RecursiveDeleteProgress
379
+
380
+ #### Properties
381
+
382
+ | Property | Type | Description |
383
+ | :------ | :------ | :------ |
384
+ | <a id="deletedcount"></a> `deletedCount` | `number` | Total nodes deleted so far. |
385
+ | <a id="done"></a> `done` | `boolean` | True for the final emission. |
386
+
387
+ ***
388
+
389
+ <a id="referencepickerprops"></a>
390
+
391
+ ### ReferencePickerProps
392
+
393
+ #### Properties
394
+
395
+ | Property | Type | Description |
396
+ | :------ | :------ | :------ |
397
+ | <a id="classname-6"></a> `className?` | `string` | Forwarded to the root. |
398
+ | <a id="firestore-1"></a> `firestore` | `Firestore` | - |
399
+ | <a id="initialpath"></a> `initialPath?` | `string` | Initial path text. |
400
+ | <a id="listcollections"></a> `listCollections` | (`firestore`: `Firestore`, `parent`: `any`) => `Promise`\<`CollectionReference`[]\> | Lister for subcollections. Required — see `useReferencePicker` docs for the rationale. |
401
+ | <a id="onpick"></a> `onPick?` | (`ref`: `DocumentReference`) => `void` | Fired when the user commits a picked reference (browse pick OR a valid manually-typed path with the Commit button). |
402
+ | <a id="pathlabel"></a> `pathLabel?` | `string` | Label for the path text input. Default 'Document path'. |
403
+
404
+ ***
405
+
406
+ <a id="subscriptionstate"></a>
407
+
408
+ ### SubscriptionState
409
+
410
+ #### Type Parameters
411
+
412
+ | Type Parameter |
413
+ | :------ |
414
+ | `T` |
415
+
416
+ #### Properties
417
+
418
+ | Property | Type |
419
+ | :------ | :------ |
420
+ | <a id="data-1"></a> `data` | `T` |
421
+ | <a id="error-4"></a> `error` | `Error` |
422
+ | <a id="isloading-2"></a> `isLoading` | `boolean` |
423
+
424
+ ***
425
+
426
+ <a id="usecollectionlistoptions"></a>
427
+
428
+ ### UseCollectionListOptions
429
+
430
+ #### Properties
431
+
432
+ | Property | Type | Description |
433
+ | :------ | :------ | :------ |
434
+ | <a id="firestore-2"></a> `firestore` | `Firestore` | - |
435
+ | <a id="listcollections-1"></a> `listCollections` | (`firestore`: `Firestore`, `parent`: `any`) => `Promise`\<`CollectionReference`[]\> | Injected collection-listing function. The library doesn't ship a default — the modular Web SDK doesn't expose `listCollections` on the client. Sandbox-backed apps usually wire `pyric/sandbox`'s in-process listing; production apps either pass a known list (e.g. from a schema) or call a server proxy. |
436
+ | <a id="parent"></a> `parent?` | `any` | Parent document, or `null`/`undefined` for root collections. |
437
+
438
+ ***
439
+
440
+ <a id="usecollectionlistresult"></a>
441
+
442
+ ### UseCollectionListResult
443
+
444
+ #### Properties
445
+
446
+ | Property | Type | Description |
447
+ | :------ | :------ | :------ |
448
+ | <a id="collections-1"></a> `collections` | `CollectionReference`[] | - |
449
+ | <a id="createcollection"></a> `createCollection` | (`collectionId`: `string`, `firstDoc`: \{ `data`: `Record`\<`string`, `unknown`\>; `id`: `string`; \}) => `Promise`\<`DocumentReference`\> | Create a new collection by writing its first document. Firestore collections don't exist independently of their documents — `setDoc` on the first child path materializes the collection. |
450
+ | <a id="error-5"></a> `error` | `Error` | - |
451
+ | <a id="isloading-3"></a> `isLoading` | `boolean` | - |
452
+ | <a id="refresh"></a> `refresh` | () => `void` | Re-run the listing function. |
453
+
454
+ ***
455
+
456
+ <a id="usedocumenteditoroptions"></a>
457
+
458
+ ### UseDocumentEditorOptions
459
+
460
+ #### Properties
461
+
462
+ | Property | Type | Description |
463
+ | :------ | :------ | :------ |
464
+ | <a id="initial-3"></a> `initial?` | `Record`\<`string`, `unknown`\> | Initial document data — the same shape a `DocumentSnapshot.data()` call returns. |
465
+
466
+ ***
467
+
468
+ <a id="usedocumenteditorresult"></a>
469
+
470
+ ### UseDocumentEditorResult
471
+
472
+ Reducer state. `tree` is the live document under edit; `initial`
473
+ is the snapshot the editor was constructed from (used to
474
+ implement `reset` and `isDirty`).
475
+
476
+ #### Extends
477
+
478
+ - [`DocumentEditorState`](#documenteditorstate)
479
+
480
+ #### Properties
481
+
482
+ | Property | Type | Description |
483
+ | :------ | :------ | :------ |
484
+ | <a id="addarrayentry"></a> `addArrayEntry` | (`parentId`: `string`, `childType`: [`FieldType`](#fieldtype)) => `void` | Append a child to an array. Nested arrays are silently rejected by the reducer (Firestore disallows them). |
485
+ | <a id="addmapentry"></a> `addMapEntry` | (`parentId`: `string`, `key`: `string`, `childType`: [`FieldType`](#fieldtype)) => `void` | Append a child to a map. |
486
+ | <a id="dispatch"></a> `dispatch` | (`action`: [`DocumentEditorAction`](#documenteditoraction)) => `void` | Raw dispatch — drops to the reducer-action surface. Prefer the named helpers below. |
487
+ | <a id="errorcount-1"></a> `errorCount` | `number` | Count of nodes with an active `error`. Derived after every action; the reducer keeps it in state to avoid a tree walk on every render. |
488
+ | <a id="initial-4"></a> `initial` | [`EditorTree`](#editortree) | Frozen copy of the tree at construction. `reset` restores from here; `isDirty` is computed by comparing serializations. |
489
+ | <a id="isdirty"></a> `isDirty` | `boolean` | `true` once any modifying action has fired since the last `reset`. Cleared by `reset`. Does NOT clear when the user manually re-enters the original values — checking that would require a full serialization comparison on every dispatch. |
490
+ | <a id="isvalid"></a> `isValid` | `boolean` | Convenience: `errorCount === 0`. |
491
+ | <a id="remove"></a> `remove` | (`nodeId`: `string`) => `void` | Remove a node (and all its descendants). Removing the root is a no-op. |
492
+ | <a id="replacedata"></a> `replaceData` | (`data`: `Record`\<`string`, `unknown`\>) => `void` | Replace the editor with a newly delivered snapshot and adopt it as the clean baseline. Intended for live document viewers. |
493
+ | <a id="reset-1"></a> `reset` | () => `void` | Restore the tree to its initial state. Clears `isDirty`. |
494
+ | <a id="setkey"></a> `setKey` | (`nodeId`: `string`, `key`: `string`) => `void` | Set a map-child's key. |
495
+ | <a id="settype"></a> `setType` | (`nodeId`: `string`, `newType`: [`FieldType`](#fieldtype)) => `void` | Switch a node's type. Map/array nodes drop their children. |
496
+ | <a id="setvalue"></a> `setValue` | (`nodeId`: `string`, `value`: `unknown`) => `void` | Update a leaf value. |
497
+ | <a id="todata"></a> `toData` | () => `Record`\<`string`, `unknown`\> | Serialize the tree back to a Firestore-shaped object suitable for `setDoc` / `updateDoc`. |
498
+ | <a id="touch"></a> `touch` | (`nodeId`: `string`) => `void` | Mark one node touched (dispatch on blur). Gates error display — a freshly-added row stays quiet until the user leaves it. |
499
+ | <a id="touchall"></a> `touchAll` | () => `void` | Mark every node touched (dispatch on a submit attempt) so any hidden errors surface at once. |
500
+ | <a id="tree-1"></a> `tree` | [`EditorTree`](#editortree) | - |
501
+
502
+ ***
503
+
504
+ <a id="usedocumentlistoptions"></a>
505
+
506
+ ### UseDocumentListOptions
507
+
508
+ #### Properties
509
+
510
+ | Property | Type | Description |
511
+ | :------ | :------ | :------ |
512
+ | <a id="collection"></a> `collection` | `CollectionReference` | - |
513
+ | <a id="mode"></a> `mode?` | `"paged"` \| `"live"` | `paged` preserves the historical get-based cursor behavior. `live` keeps the currently requested window under an `onSnapshot` subscription and grows that window when `loadMore` is requested. Default `paged`. |
514
+ | <a id="pagesize"></a> `pageSize?` | `number` | Page size for cursor-based pagination. Default 50. |
515
+ | <a id="query"></a> `query?` | `Query` | Optional filter / sort. If omitted, the raw collection is used. |
516
+
517
+ ***
518
+
519
+ <a id="usedocumentlistresult"></a>
520
+
521
+ ### UseDocumentListResult
522
+
523
+ #### Properties
524
+
525
+ | Property | Type | Description |
526
+ | :------ | :------ | :------ |
527
+ | <a id="createdocument"></a> `createDocument` | (`id`: `string`, `data`: `Record`\<`string`, `unknown`\>, `opts?`: \{ `onExisting?`: `"overwrite"` \| `"fail"`; \}) => `Promise`\<`DocumentReference`\> | Create a document. If `id` is null, Firestore generates one via `addDoc`. With `onExisting: 'fail'` (CREATE semantics, the admin `create()` analog) an id that already exists rejects with `code: 'already-exists'` instead of silently overwriting — checked against the BACKEND (a `getDoc` probe), not any loaded page, so it is honest beyond pagination. Default: 'overwrite' (plain `setDoc`, the historical behavior). |
528
+ | <a id="deletedocument"></a> `deleteDocument` | (`ref`: `DocumentReference`) => `Promise`\<`void`\> | - |
529
+ | <a id="documents-1"></a> `documents` | `QueryDocumentSnapshot`[] | - |
530
+ | <a id="error-6"></a> `error` | `Error` | - |
531
+ | <a id="hasmore-1"></a> `hasMore` | `boolean` | True if there might be another page. The hook tracks this via the last fetch's length === pageSize. |
532
+ | <a id="isloading-4"></a> `isLoading` | `boolean` | - |
533
+ | <a id="loadmore"></a> `loadMore` | () => `void` | Fetch the next page; live mode grows and re-establishes its window. |
534
+ | <a id="refresh-1"></a> `refresh` | () => `void` | Re-establish the active read/subscription. Useful after the consumer mutates data outside this hook. |
535
+ | <a id="subscriptiongeneration"></a> `subscriptionGeneration` | `number` | Identifies the active live subscription. Consumers that diff result snapshots can include this in their scope so a re-subscription (including load-more) establishes a silent baseline instead of looking like writes. |
536
+
537
+ ***
538
+
539
+ <a id="usedocumentsubcollectionsoptions"></a>
540
+
541
+ ### UseDocumentSubcollectionsOptions
542
+
543
+ #### Properties
544
+
545
+ | Property | Type | Description |
546
+ | :------ | :------ | :------ |
547
+ | <a id="documentref-1"></a> `documentRef` | `any` | The document whose subcollections to list. When `null`/`undefined` the hook stays idle (empty, not loading) — used when the preview has no ref to drill from. |
548
+ | <a id="firestore-3"></a> `firestore` | `Firestore` | - |
549
+ | <a id="listsubcollections-1"></a> `listSubcollections` | [`ListSubcollections`](#listsubcollections-2) | - |
550
+
551
+ ***
552
+
553
+ <a id="usedocumentsubcollectionsresult"></a>
554
+
555
+ ### UseDocumentSubcollectionsResult
556
+
557
+ #### Properties
558
+
559
+ | Property | Type |
560
+ | :------ | :------ |
561
+ | <a id="error-7"></a> `error` | `Error` |
562
+ | <a id="isloading-5"></a> `isLoading` | `boolean` |
563
+ | <a id="subcollections"></a> `subcollections` | `CollectionReference`[] |
564
+
565
+ ***
566
+
567
+ <a id="usequerybuilderoptions"></a>
568
+
569
+ ### UseQueryBuilderOptions
570
+
571
+ #### Properties
572
+
573
+ | Property | Type | Description |
574
+ | :------ | :------ | :------ |
575
+ | <a id="initial-5"></a> `initial?` | `Partial`\<[`QueryBuilderState`](#querybuilderstate)\> | Pre-populate the builder. |
576
+
577
+ ***
578
+
579
+ <a id="userecursivedeleteresult"></a>
580
+
581
+ ### UseRecursiveDeleteResult
582
+
583
+ #### Properties
584
+
585
+ | Property | Type | Description |
586
+ | :------ | :------ | :------ |
587
+ | <a id="delete"></a> `delete` | (`target`: `any`) => `Promise`\<`void`\> | Run the delete. Resolves when the iterator signals `done`. |
588
+ | <a id="error-8"></a> `error` | `Error` | Error thrown by the iterator, if any. Cleared at the start of the next call. |
589
+ | <a id="isrunning"></a> `isRunning` | `boolean` | True while an iteration is in flight. |
590
+ | <a id="progress"></a> `progress` | `number` | Number of nodes deleted in the current/last run. |
591
+
592
+ ***
593
+
594
+ <a id="usereferencepickeroptions"></a>
595
+
596
+ ### UseReferencePickerOptions
597
+
598
+ #### Properties
599
+
600
+ | Property | Type | Description |
601
+ | :------ | :------ | :------ |
602
+ | <a id="firestore-4"></a> `firestore` | `Firestore` | - |
603
+ | <a id="initialpath-1"></a> `initialPath?` | `string` | Initial value to pre-populate the text input + parse. |
604
+ | <a id="listcollections-2"></a> `listCollections` | (`firestore`: `Firestore`, `parent`: `any`) => `Promise`\<`CollectionReference`[]\> | Lister for subcollections under a parent (or root when `parent == null`). The library does not ship a default — see `useCollectionList` for the same rationale (the modular Web SDK can't enumerate collections client-side). |
605
+ | <a id="pagesize-1"></a> `pageSize?` | `number` | Default page size for the document list when browsing inside a collection. Default 20. |
606
+
607
+ ***
608
+
609
+ <a id="usereferencepickerresult"></a>
610
+
611
+ ### UseReferencePickerResult
612
+
613
+ #### Properties
614
+
615
+ | Property | Type | Description |
616
+ | :------ | :------ | :------ |
617
+ | <a id="browselocation"></a> `browseLocation` | [`BrowseLocation`](#browselocation-1) | Current browse position in the tree. |
618
+ | <a id="candrillback"></a> `canDrillBack` | `boolean` | Whether `drillBack` has anywhere to go. |
619
+ | <a id="clear"></a> `clear` | () => `void` | Clear the path input + reset browse to root. |
620
+ | <a id="collections-2"></a> `collections` | `CollectionReference`[] | Collections available at the current browse level. Populated when `browseLocation` is `root` or `document`. |
621
+ | <a id="documents-2"></a> `documents` | `QueryDocumentSnapshot`[] | First page of documents in the current collection — populated when `browseLocation.kind === 'collection'`. |
622
+ | <a id="drillback"></a> `drillBack` | () => `void` | Step back one level. No-op when at root. |
623
+ | <a id="drillintocollection"></a> `drillIntoCollection` | (`ref`: `CollectionReference`) => `void` | Drill into a collection — fetches its first page of documents. |
624
+ | <a id="drillintodocument"></a> `drillIntoDocument` | (`ref`: `DocumentReference`) => `void` | Drill into a document — fetches its subcollections. |
625
+ | <a id="error-9"></a> `error` | `string` | Parse error, or `null` when valid. |
626
+ | <a id="isloading-6"></a> `isLoading` | `boolean` | True while a fetch is in flight. |
627
+ | <a id="pathinput"></a> `pathInput` | `string` | Current text input value. |
628
+ | <a id="pick"></a> `pick` | (`ref`: `DocumentReference`) => `void` | Commit a chosen reference. Updates `pathInput` (and therefore the parsed `reference`). |
629
+ | <a id="reference"></a> `reference` | `any` | Validated `DocumentReference` parsed from `pathInput`, or `null` when the path is empty / invalid. |
630
+ | <a id="setpathinput"></a> `setPathInput` | (`path`: `string`) => `void` | Set the text-input value. Parses on every change. |
631
+
632
+ ***
633
+
634
+ <a id="vectorview"></a>
635
+
636
+ ### VectorView
637
+
638
+ Normalized read-side view of a Firestore vector (embedding) value.
639
+ Editors and the renderer work against this rather than the raw shape
640
+ so they don't have to care which backend produced the value.
641
+
642
+ #### Properties
643
+
644
+ | Property | Modifier | Type | Description |
645
+ | :------ | :------ | :------ | :------ |
646
+ | <a id="dimension"></a> `dimension` | `readonly` | `number` | Number of components. Equivalent to `values.length`; surfaced separately because that's what the UI labels (`vector · <dims>`). |
647
+ | <a id="values"></a> `values` | `readonly` | `number`[] | The embedding components. Defensive copy — safe to read freely. |
648
+
649
+ ## Type Aliases
650
+
651
+ <a id="browselocation-1"></a>
652
+
653
+ ### BrowseLocation
654
+
655
+ ```ts
656
+ type BrowseLocation =
657
+ | {
658
+ kind: "root";
659
+ }
660
+ | {
661
+ kind: "document";
662
+ ref: DocumentReference;
663
+ }
664
+ | {
665
+ kind: "collection";
666
+ ref: CollectionReference;
667
+ };
668
+ ```
669
+
670
+ ***
671
+
672
+ <a id="documenteditoraction"></a>
673
+
674
+ ### DocumentEditorAction
675
+
676
+ ```ts
677
+ type DocumentEditorAction =
678
+ | {
679
+ nodeId: string;
680
+ type: "setValue";
681
+ value: unknown;
682
+ }
683
+ | {
684
+ newType: FieldType;
685
+ nodeId: string;
686
+ type: "setType";
687
+ }
688
+ | {
689
+ key: string;
690
+ nodeId: string;
691
+ type: "setKey";
692
+ }
693
+ | {
694
+ childType: FieldType;
695
+ key: string;
696
+ parentId: string;
697
+ type: "addMapEntry";
698
+ }
699
+ | {
700
+ childType: FieldType;
701
+ parentId: string;
702
+ type: "addArrayEntry";
703
+ }
704
+ | {
705
+ nodeId: string;
706
+ type: "remove";
707
+ }
708
+ | {
709
+ type: "reset";
710
+ }
711
+ | {
712
+ data: Record<string, unknown>;
713
+ type: "replaceData";
714
+ }
715
+ | {
716
+ nodeId: string;
717
+ type: "touch";
718
+ }
719
+ | {
720
+ type: "touchAll";
721
+ };
722
+ ```
723
+
724
+ Discriminated union of every action the reducer accepts. Each
725
+ action carries a `type` discriminator plus the data the reducer
726
+ needs to apply it.
727
+
728
+ #### Type Declaration
729
+
730
+ ```ts
731
+ {
732
+ nodeId: string;
733
+ type: "setValue";
734
+ value: unknown;
735
+ }
736
+ ```
737
+
738
+ ##### nodeId
739
+
740
+ ```ts
741
+ nodeId: string;
742
+ ```
743
+
744
+ ##### type
745
+
746
+ ```ts
747
+ type: "setValue";
748
+ ```
749
+
750
+ ##### value
751
+
752
+ ```ts
753
+ value: unknown;
754
+ ```
755
+
756
+ ```ts
757
+ {
758
+ newType: FieldType;
759
+ nodeId: string;
760
+ type: "setType";
761
+ }
762
+ ```
763
+
764
+ ##### newType
765
+
766
+ ```ts
767
+ newType: FieldType;
768
+ ```
769
+
770
+ ##### nodeId
771
+
772
+ ```ts
773
+ nodeId: string;
774
+ ```
775
+
776
+ ##### type
777
+
778
+ ```ts
779
+ type: "setType";
780
+ ```
781
+
782
+ ```ts
783
+ {
784
+ key: string;
785
+ nodeId: string;
786
+ type: "setKey";
787
+ }
788
+ ```
789
+
790
+ ##### key
791
+
792
+ ```ts
793
+ key: string;
794
+ ```
795
+
796
+ ##### nodeId
797
+
798
+ ```ts
799
+ nodeId: string;
800
+ ```
801
+
802
+ ##### type
803
+
804
+ ```ts
805
+ type: "setKey";
806
+ ```
807
+
808
+ ```ts
809
+ {
810
+ childType: FieldType;
811
+ key: string;
812
+ parentId: string;
813
+ type: "addMapEntry";
814
+ }
815
+ ```
816
+
817
+ ##### childType
818
+
819
+ ```ts
820
+ childType: FieldType;
821
+ ```
822
+
823
+ ##### key
824
+
825
+ ```ts
826
+ key: string;
827
+ ```
828
+
829
+ ##### parentId
830
+
831
+ ```ts
832
+ parentId: string;
833
+ ```
834
+
835
+ ##### type
836
+
837
+ ```ts
838
+ type: "addMapEntry";
839
+ ```
840
+
841
+ ```ts
842
+ {
843
+ childType: FieldType;
844
+ parentId: string;
845
+ type: "addArrayEntry";
846
+ }
847
+ ```
848
+
849
+ ##### childType
850
+
851
+ ```ts
852
+ childType: FieldType;
853
+ ```
854
+
855
+ ##### parentId
856
+
857
+ ```ts
858
+ parentId: string;
859
+ ```
860
+
861
+ ##### type
862
+
863
+ ```ts
864
+ type: "addArrayEntry";
865
+ ```
866
+
867
+ ```ts
868
+ {
869
+ nodeId: string;
870
+ type: "remove";
871
+ }
872
+ ```
873
+
874
+ ##### nodeId
875
+
876
+ ```ts
877
+ nodeId: string;
878
+ ```
879
+
880
+ ##### type
881
+
882
+ ```ts
883
+ type: "remove";
884
+ ```
885
+
886
+ ```ts
887
+ {
888
+ type: "reset";
889
+ }
890
+ ```
891
+
892
+ ##### type
893
+
894
+ ```ts
895
+ type: "reset";
896
+ ```
897
+
898
+ ```ts
899
+ {
900
+ data: Record<string, unknown>;
901
+ type: "replaceData";
902
+ }
903
+ ```
904
+
905
+ ##### data
906
+
907
+ ```ts
908
+ data: Record<string, unknown>;
909
+ ```
910
+
911
+ ##### type
912
+
913
+ ```ts
914
+ type: "replaceData";
915
+ ```
916
+
917
+ ```ts
918
+ {
919
+ nodeId: string;
920
+ type: "touch";
921
+ }
922
+ ```
923
+
924
+ ##### nodeId
925
+
926
+ ```ts
927
+ nodeId: string;
928
+ ```
929
+
930
+ ##### type
931
+
932
+ ```ts
933
+ type: "touch";
934
+ ```
935
+
936
+ Mark one node touched (dispatched on blur). Doesn't change any
937
+ value — only gates error display for consumers that check it.
938
+
939
+ ```ts
940
+ {
941
+ type: "touchAll";
942
+ }
943
+ ```
944
+
945
+ ##### type
946
+
947
+ ```ts
948
+ type: "touchAll";
949
+ ```
950
+
951
+ Mark every node touched (dispatched on a submit attempt), so
952
+ errors that were hidden pre-interaction all surface at once.
953
+
954
+ ***
955
+
956
+ <a id="fieldeditorregistry"></a>
957
+
958
+ ### FieldEditorRegistry
959
+
960
+ ```ts
961
+ type FieldEditorRegistry = Partial<Record<FieldType, FieldEditorContract<any>>>;
962
+ ```
963
+
964
+ Map of field-type to editor contract. `Partial<…>` so consumers
965
+ can override one type without re-supplying the rest — the merge
966
+ happens at the `<DocumentPreview>` boundary.
967
+
968
+ The stored value type is `FieldEditorContract<any>` rather than
969
+ `FieldEditorContract<unknown>` because each per-type contract
970
+ narrows its generic (e.g., `FieldEditorContract<Timestamp>` for
971
+ timestamp) and TypeScript's `ComponentType` is invariant in
972
+ props. `any` at the registry layer means the type-safety lives
973
+ at the per-contract definition site, not in the dispatch map.
974
+ `FieldRenderer` narrows back from `unknown` -> the right contract
975
+ via `inferType` at dispatch time.
976
+
977
+ ***
978
+
979
+ <a id="fieldtype"></a>
980
+
981
+ ### FieldType
982
+
983
+ ```ts
984
+ type FieldType =
985
+ | "string"
986
+ | "number"
987
+ | "boolean"
988
+ | "null"
989
+ | "timestamp"
990
+ | "geopoint"
991
+ | "reference"
992
+ | "bytes"
993
+ | "map"
994
+ | "array"
995
+ | "vector";
996
+ ```
997
+
998
+ The set of value types `@pyric/ui` knows how to display + edit.
999
+ Maps 1:1 to Firestore's serializable value shapes; consumers can
1000
+ extend the registry but the built-in editors cover these.
1001
+
1002
+ ***
1003
+
1004
+ <a id="firestoreapi"></a>
1005
+
1006
+ ### FirestoreApi
1007
+
1008
+ ```ts
1009
+ type FirestoreApi = Pick<any,
1010
+ | "addDoc"
1011
+ | "collection"
1012
+ | "deleteDoc"
1013
+ | "doc"
1014
+ | "getDoc"
1015
+ | "getDocs"
1016
+ | "limit"
1017
+ | "onSnapshot"
1018
+ | "query"
1019
+ | "setDoc"
1020
+ | "startAfter">;
1021
+ ```
1022
+
1023
+ The modular Firestore functions the data hooks call, as an INJECTABLE bundle.
1024
+
1025
+ WHY: the hooks default to the in-process `pyric/firestore` API, but Pyric
1026
+ Studio's served mode drives the SAME ops over a SharedWorker via a PARALLEL
1027
+ modular client (`@pyric/cli/serve/worker`: its own `collection`/`getDocs`/...
1028
+ over a `MessagePort`, and a `ClientDb` that is not a `pyric/firestore`
1029
+ `Firestore`). Statically importing the in-process fns hardwires the hooks to
1030
+ the in-page sandbox; reading them from this context lets a consumer inject the
1031
+ worker client's fns so the hooks operate on the live worker backend without
1032
+ the hooks (or the components) knowing which backend they hit.
1033
+
1034
+ The bundle is typed to the in-process signatures. A worker bundle is adapted
1035
+ (cast) to this shape at the Studio boundary: the worker handles + snapshots
1036
+ are runtime-compatible at the surface the hooks use (`.id` / `.data()` /
1037
+ `.docs` / `.ref`), which is the contract function-injection relies on.
1038
+
1039
+ Default = the real `pyric/firestore` fns, so every existing consumer (the
1040
+ dev-seed review build, tests, any app embedding `@pyric/ui`) is unchanged: no
1041
+ provider needed unless you are swapping the backend.
1042
+
1043
+ ***
1044
+
1045
+ <a id="listsubcollections-2"></a>
1046
+
1047
+ ### ListSubcollections()
1048
+
1049
+ ```ts
1050
+ type ListSubcollections = (firestore: Firestore, parent: DocumentReference) => Promise<CollectionReference[]>;
1051
+ ```
1052
+
1053
+ Lister for a document's own subcollections. Same injected-lister
1054
+ shape as `useCollectionList` / `ReferencePicker` use — the modular
1055
+ Web SDK doesn't expose a native `listCollections` on the client, so
1056
+ the caller wires it (sandbox in-process listing, a server proxy, or
1057
+ a known schema list).
1058
+
1059
+ #### Parameters
1060
+
1061
+ | Parameter | Type |
1062
+ | :------ | :------ |
1063
+ | `firestore` | `Firestore` |
1064
+ | `parent` | `DocumentReference` |
1065
+
1066
+ #### Returns
1067
+
1068
+ `Promise`\<`CollectionReference`[]\>
1069
+
1070
+ ***
1071
+
1072
+ <a id="queryop"></a>
1073
+
1074
+ ### QueryOp
1075
+
1076
+ ```ts
1077
+ type QueryOp = WhereFilterOp;
1078
+ ```
1079
+
1080
+ ***
1081
+
1082
+ <a id="usequerybuilderresult"></a>
1083
+
1084
+ ### UseQueryBuilderResult
1085
+
1086
+ ```ts
1087
+ type UseQueryBuilderResult = QueryBuilderState & QueryBuilderActions;
1088
+ ```
1089
+
1090
+ ## Variables
1091
+
1092
+ <a id="defaultfieldeditors"></a>
1093
+
1094
+ ### defaultFieldEditors
1095
+
1096
+ ```ts
1097
+ const defaultFieldEditors: FieldEditorRegistry;
1098
+ ```
1099
+
1100
+ Default registry. Covers every [FieldType](#fieldtype). Consumers extend
1101
+ or override by passing their own (partial) registry into
1102
+ `<DocumentPreview>` / `<FieldRenderer>` — the components merge
1103
+ overrides into these defaults so a consumer can swap just one
1104
+ editor without re-declaring the rest.
1105
+
1106
+ ***
1107
+
1108
+ <a id="documenteditor"></a>
1109
+
1110
+ ### DocumentEditor
1111
+
1112
+ ```ts
1113
+ const DocumentEditor: {
1114
+ Fields: typeof DocumentEditorFields;
1115
+ Root: typeof DocumentEditorRoot;
1116
+ };
1117
+ ```
1118
+
1119
+ Compound root export. Consumers pattern-match via dot access:
1120
+
1121
+ <DocumentEditor.Root initial={data} onChange={…}>
1122
+ <DocumentEditor.Fields />
1123
+ </DocumentEditor.Root>
1124
+
1125
+ #### Type Declaration
1126
+
1127
+ <a id="fields"></a>
1128
+
1129
+ ##### Fields
1130
+
1131
+ ```ts
1132
+ Fields: typeof DocumentEditorFields;
1133
+ ```
1134
+
1135
+ <a id="root"></a>
1136
+
1137
+ ##### Root
1138
+
1139
+ ```ts
1140
+ Root: typeof DocumentEditorRoot;
1141
+ ```
1142
+
1143
+ ***
1144
+
1145
+ <a id="multi_value_ops"></a>
1146
+
1147
+ ### MULTI\_VALUE\_OPS
1148
+
1149
+ ```ts
1150
+ const MULTI_VALUE_OPS: ReadonlySet<QueryOp>;
1151
+ ```
1152
+
1153
+ Ops that accept an array of values. The value editor in the
1154
+ bundled <QueryBuilder> parses the input as JSON for these.
1155
+
1156
+ ***
1157
+
1158
+ <a id="query_ops"></a>
1159
+
1160
+ ### QUERY\_OPS
1161
+
1162
+ ```ts
1163
+ const QUERY_OPS: readonly QueryOp[];
1164
+ ```
1165
+
1166
+ ## Functions
1167
+
1168
+ <a id="asvectorview"></a>
1169
+
1170
+ ### asVectorView()
1171
+
1172
+ ```ts
1173
+ function asVectorView(value: unknown): VectorView;
1174
+ ```
1175
+
1176
+ Detect + normalize a Firestore vector value, or return `null` if the
1177
+ value isn't a vector. Vectors reach `@pyric/ui` in several runtime
1178
+ shapes depending on the backend the snapshot came from — there is no
1179
+ single `VectorValue` class `pyric/firestore` re-exports, so we match
1180
+ structurally (the same strategy isDocumentReferenceShape uses
1181
+ for refs):
1182
+
1183
+ 1. **pyric `Vector` wrapper** — frozen `.value: number[]` array plus
1184
+ a `.dimension` getter (sandbox / rules-side reads).
1185
+ 2. **firebase/firestore (web) `VectorValue`** — exposes `.toArray()`
1186
+ and nothing else publicly.
1187
+ 3. **firebase-admin `VectorValue`** — internal `._values: number[]`
1188
+ (also a `.toArray()`).
1189
+ 4. **wire sentinel** — `{ __type__: '__vector__', value: number[] }`,
1190
+ the plain-object encoded form a discover crawler / seed emits.
1191
+
1192
+ A bare `number[]` is intentionally NOT a vector — those stay `array`.
1193
+ Only the typed/branded shapes above match.
1194
+
1195
+ #### Parameters
1196
+
1197
+ | Parameter | Type |
1198
+ | :------ | :------ |
1199
+ | `value` | `unknown` |
1200
+
1201
+ #### Returns
1202
+
1203
+ [`VectorView`](#vectorview)
1204
+
1205
+ ***
1206
+
1207
+ <a id="collectionlist"></a>
1208
+
1209
+ ### CollectionList()
1210
+
1211
+ ```ts
1212
+ function CollectionList(__namedParameters: CollectionListProps): Element;
1213
+ ```
1214
+
1215
+ Headless collection list. Takes a pre-fetched array of references
1216
+ (from `useCollectionList`) plus a select callback. Renders one
1217
+ row per collection with `data-pyric-collection-id` for styling
1218
+ and testing. The library does not own the data fetch — the hook
1219
+ does — so this component is a thin presentational layer.
1220
+
1221
+ #### Parameters
1222
+
1223
+ | Parameter | Type |
1224
+ | :------ | :------ |
1225
+ | `__namedParameters` | [`CollectionListProps`](#collectionlistprops) |
1226
+
1227
+ #### Returns
1228
+
1229
+ `Element`
1230
+
1231
+ ***
1232
+
1233
+ <a id="deletewithconfirm"></a>
1234
+
1235
+ ### DeleteWithConfirm()
1236
+
1237
+ ```ts
1238
+ function DeleteWithConfirm(__namedParameters: DeleteWithConfirmProps): Element;
1239
+ ```
1240
+
1241
+ Composition that wires `useConfirm` + `useRecursiveDelete`. Requires
1242
+ a `<ConfirmProvider>` ancestor.
1243
+
1244
+ The default trigger renders a plain `<button>` carrying the
1245
+ destructive intent (the consumer styles via `[data-pyric-destructive]`).
1246
+ Consumers wanting different chrome pass `renderTrigger`.
1247
+
1248
+ #### Parameters
1249
+
1250
+ | Parameter | Type |
1251
+ | :------ | :------ |
1252
+ | `__namedParameters` | [`DeleteWithConfirmProps`](#deletewithconfirmprops) |
1253
+
1254
+ #### Returns
1255
+
1256
+ `Element`
1257
+
1258
+ ***
1259
+
1260
+ <a id="detectcollisions"></a>
1261
+
1262
+ ### detectCollisions()
1263
+
1264
+ ```ts
1265
+ function detectCollisions(existingIds: readonly string[], docs: readonly ParsedImportDoc[]): string[];
1266
+ ```
1267
+
1268
+ Ids in `docs` (map-shape entries only — `id !== null`) that already exist
1269
+ in `existingIds`. The UI shows the skip-or-overwrite policy choice ONLY
1270
+ when this returns a non-empty list.
1271
+
1272
+ #### Parameters
1273
+
1274
+ | Parameter | Type |
1275
+ | :------ | :------ |
1276
+ | `existingIds` | readonly `string`[] |
1277
+ | `docs` | readonly [`ParsedImportDoc`](#parsedimportdoc)[] |
1278
+
1279
+ #### Returns
1280
+
1281
+ `string`[]
1282
+
1283
+ ***
1284
+
1285
+ <a id="documenteditorfields-1"></a>
1286
+
1287
+ ### DocumentEditorFields()
1288
+
1289
+ ```ts
1290
+ function DocumentEditorFields(): Element;
1291
+ ```
1292
+
1293
+ Renders the top-level fields of the document. For finer control,
1294
+ a consumer can call `useDocumentEditorContext()` and render the
1295
+ tree themselves.
1296
+
1297
+ #### Returns
1298
+
1299
+ `Element`
1300
+
1301
+ ***
1302
+
1303
+ <a id="documenteditorroot-1"></a>
1304
+
1305
+ ### DocumentEditorRoot()
1306
+
1307
+ ```ts
1308
+ function DocumentEditorRoot(__namedParameters: DocumentEditorRootProps): Element;
1309
+ ```
1310
+
1311
+ Wires the `useDocumentEditor` hook + field-editor registry into a
1312
+ React context so `<DocumentEditor.Fields>` and `<DocumentEditor.AddField>`
1313
+ can render the tree without prop drilling.
1314
+
1315
+ Pattern: hook + compound component. Consumers wanting full control
1316
+ over the layout call `useDocumentEditor` directly and render their
1317
+ own tree; consumers wanting the default rendering use this.
1318
+
1319
+ #### Parameters
1320
+
1321
+ | Parameter | Type |
1322
+ | :------ | :------ |
1323
+ | `__namedParameters` | [`DocumentEditorRootProps`](#documenteditorrootprops) |
1324
+
1325
+ #### Returns
1326
+
1327
+ `Element`
1328
+
1329
+ ***
1330
+
1331
+ <a id="documentlist"></a>
1332
+
1333
+ ### DocumentList()
1334
+
1335
+ ```ts
1336
+ function DocumentList(__namedParameters: DocumentListProps): Element;
1337
+ ```
1338
+
1339
+ Headless document list. Below `virtualizeThreshold`, renders a
1340
+ plain `<ul>`; above it, switches to TanStack-Virtual via
1341
+ `<VirtualList>` so 10k-doc collections don't bloat the DOM.
1342
+
1343
+ The hook owns pagination state; this component just renders. The
1344
+ Load More button only renders when `hasMore` is true AND
1345
+ `onLoadMore` is provided. Consumers wanting infinite scroll
1346
+ trigger `onLoadMore` from a sentinel `IntersectionObserver` in
1347
+ their own code — the component doesn't bake that policy in.
1348
+
1349
+ #### Parameters
1350
+
1351
+ | Parameter | Type |
1352
+ | :------ | :------ |
1353
+ | `__namedParameters` | [`DocumentListProps`](#documentlistprops) |
1354
+
1355
+ #### Returns
1356
+
1357
+ `Element`
1358
+
1359
+ ***
1360
+
1361
+ <a id="documentpreview"></a>
1362
+
1363
+ ### DocumentPreview()
1364
+
1365
+ ```ts
1366
+ function DocumentPreview(__namedParameters: DocumentPreviewProps): Element;
1367
+ ```
1368
+
1369
+ Read-only renderer for a Firestore document. Iterates top-level
1370
+ fields in lexicographic order; each field dispatches through the
1371
+ field-editor registry on its inferred type.
1372
+
1373
+ Headless — no shipped CSS. Consumers style via `className` on the
1374
+ root and `[data-pyric-field-type]` / `[data-pyric-field-path]`
1375
+ attribute selectors on the per-field nodes.
1376
+
1377
+ Editing arrives in M3 (`<DocumentEditor>`). M2 only displays.
1378
+
1379
+ #### Parameters
1380
+
1381
+ | Parameter | Type |
1382
+ | :------ | :------ |
1383
+ | `__namedParameters` | [`DocumentPreviewProps`](#documentpreviewprops) |
1384
+
1385
+ #### Returns
1386
+
1387
+ `Element`
1388
+
1389
+ ***
1390
+
1391
+ <a id="fieldrenderer"></a>
1392
+
1393
+ ### FieldRenderer()
1394
+
1395
+ ```ts
1396
+ function FieldRenderer(__namedParameters: FieldRendererProps): Element;
1397
+ ```
1398
+
1399
+ Dispatches a single value to its registered display component.
1400
+ Recursive editors (Map, Array) re-enter through this component
1401
+ for their children, threading the same registry.
1402
+
1403
+ #### Parameters
1404
+
1405
+ | Parameter | Type |
1406
+ | :------ | :------ |
1407
+ | `__namedParameters` | [`FieldRendererProps`](#fieldrendererprops) |
1408
+
1409
+ #### Returns
1410
+
1411
+ `Element`
1412
+
1413
+ ***
1414
+
1415
+ <a id="firestoreapiprovider"></a>
1416
+
1417
+ ### FirestoreApiProvider()
1418
+
1419
+ ```ts
1420
+ function FirestoreApiProvider(__namedParameters: {
1421
+ children: ReactNode;
1422
+ value: FirestoreApi;
1423
+ }): FunctionComponentElement<ProviderProps<FirestoreApi>>;
1424
+ ```
1425
+
1426
+ Provide a Firestore API bundle to the subtree. Pyric Studio wraps its data
1427
+ surface with this, supplying the in-process bundle for dev-seed review and the
1428
+ SharedWorker client bundle under `pyric dev --ui`.
1429
+
1430
+ #### Parameters
1431
+
1432
+ | Parameter | Type |
1433
+ | :------ | :------ |
1434
+ | `__namedParameters` | \{ `children`: `ReactNode`; `value`: [`FirestoreApi`](#firestoreapi); \} |
1435
+ | `__namedParameters.children` | `ReactNode` |
1436
+ | `__namedParameters.value` | [`FirestoreApi`](#firestoreapi) |
1437
+
1438
+ #### Returns
1439
+
1440
+ `FunctionComponentElement`\<`ProviderProps`\<[`FirestoreApi`](#firestoreapi)\>\>
1441
+
1442
+ ***
1443
+
1444
+ <a id="firestoreautoid"></a>
1445
+
1446
+ ### firestoreAutoId()
1447
+
1448
+ ```ts
1449
+ function firestoreAutoId(): string;
1450
+ ```
1451
+
1452
+ A Firestore-style 20-char auto id (same alphabet/length the SDK uses).
1453
+
1454
+ #### Returns
1455
+
1456
+ `string`
1457
+
1458
+ ***
1459
+
1460
+ <a id="firestorevaluesequal"></a>
1461
+
1462
+ ### firestoreValuesEqual()
1463
+
1464
+ ```ts
1465
+ function firestoreValuesEqual(previous: unknown, next: unknown): boolean;
1466
+ ```
1467
+
1468
+ Firestore-aware structural equality for values delivered by either the
1469
+ in-process SDK or the SharedWorker serializer.
1470
+
1471
+ #### Parameters
1472
+
1473
+ | Parameter | Type |
1474
+ | :------ | :------ |
1475
+ | `previous` | `unknown` |
1476
+ | `next` | `unknown` |
1477
+
1478
+ #### Returns
1479
+
1480
+ `boolean`
1481
+
1482
+ ***
1483
+
1484
+ <a id="infertype"></a>
1485
+
1486
+ ### inferType()
1487
+
1488
+ ```ts
1489
+ function inferType(value: unknown): FieldType;
1490
+ ```
1491
+
1492
+ Runtime-classify a value into one of the [FieldType](#fieldtype)s.
1493
+
1494
+ The discrimination order matters:
1495
+ - `null` checked before `typeof === 'object'` (null is an object)
1496
+ - vector (a typed embedding wrapper) checked before `Array.isArray`
1497
+ and before generic objects — its wire-sentinel shape is a plain
1498
+ object, and a bare `number[]` must stay `array`, not `vector`
1499
+ - `Array.isArray` checked before generic objects
1500
+ - Firestore special types (Timestamp/GeoPoint/Bytes/DocumentRef)
1501
+ checked before falling through to `map`
1502
+
1503
+ `undefined` values aren't legal Firestore field values; we coerce
1504
+ them to `'null'` rather than throw — the caller can decide whether
1505
+ to display or filter.
1506
+
1507
+ #### Parameters
1508
+
1509
+ | Parameter | Type |
1510
+ | :------ | :------ |
1511
+ | `value` | `unknown` |
1512
+
1513
+ #### Returns
1514
+
1515
+ [`FieldType`](#fieldtype)
1516
+
1517
+ ***
1518
+
1519
+ <a id="initstate"></a>
1520
+
1521
+ ### initState()
1522
+
1523
+ ```ts
1524
+ function initState(initial: Record<string, unknown>): DocumentEditorState;
1525
+ ```
1526
+
1527
+ Initial state factory. Builds tree + initial snapshot + error count.
1528
+
1529
+ #### Parameters
1530
+
1531
+ | Parameter | Type |
1532
+ | :------ | :------ |
1533
+ | `initial` | `Record`\<`string`, `unknown`\> |
1534
+
1535
+ #### Returns
1536
+
1537
+ [`DocumentEditorState`](#documenteditorstate)
1538
+
1539
+ ***
1540
+
1541
+ <a id="mergefieldeditors"></a>
1542
+
1543
+ ### mergeFieldEditors()
1544
+
1545
+ ```ts
1546
+ function mergeFieldEditors(override: Partial<Record<FieldType, FieldEditorContract<any>>>): FieldEditorRegistry;
1547
+ ```
1548
+
1549
+ Merge a consumer-supplied registry over the defaults. `undefined`
1550
+ input returns the defaults as-is. Used internally by
1551
+ `<DocumentPreview>` so consumers don't have to spread manually.
1552
+
1553
+ #### Parameters
1554
+
1555
+ | Parameter | Type |
1556
+ | :------ | :------ |
1557
+ | `override` | `Partial`\<`Record`\<[`FieldType`](#fieldtype), [`FieldEditorContract`](#fieldeditorcontract)\<`any`\>\>\> |
1558
+
1559
+ #### Returns
1560
+
1561
+ [`FieldEditorRegistry`](#fieldeditorregistry)
1562
+
1563
+ ***
1564
+
1565
+ <a id="parseimport"></a>
1566
+
1567
+ ### parseImport()
1568
+
1569
+ ```ts
1570
+ function parseImport(input: string, options?: ParseImportOptions): ParseImportResult;
1571
+ ```
1572
+
1573
+ Parse raw JSON text into the documents it would create. Never throws —
1574
+ a JSON syntax error or a wrong top-level shape becomes an entry in
1575
+ `errors` with an empty `docs` array.
1576
+
1577
+ #### Parameters
1578
+
1579
+ | Parameter | Type |
1580
+ | :------ | :------ |
1581
+ | `input` | `string` |
1582
+ | `options?` | [`ParseImportOptions`](#parseimportoptions) |
1583
+
1584
+ #### Returns
1585
+
1586
+ [`ParseImportResult`](#parseimportresult)
1587
+
1588
+ ***
1589
+
1590
+ <a id="querybuilder"></a>
1591
+
1592
+ ### QueryBuilder()
1593
+
1594
+ ```ts
1595
+ function QueryBuilder(__namedParameters: QueryBuilderProps): Element;
1596
+ ```
1597
+
1598
+ Default visible composition over `useQueryBuilder`. Renders the
1599
+ condition list + orderBy + limit form. Headless — every node
1600
+ carries `data-pyric-*` for styling.
1601
+
1602
+ Values are JSON-parsed on input. `42`, `"text"`, `true`, `null`,
1603
+ and `[1, 2, 3]` (for `in`/`not-in`/`array-contains-any`) all
1604
+ work; raw strings that aren't JSON-parsable fall through as-is.
1605
+ For non-JSON Firestore values (Timestamp, GeoPoint, Reference,
1606
+ Bytes), consumers either use the hook directly with their own
1607
+ value editors or swap the rendered component out.
1608
+
1609
+ #### Parameters
1610
+
1611
+ | Parameter | Type |
1612
+ | :------ | :------ |
1613
+ | `__namedParameters` | [`QueryBuilderProps`](#querybuilderprops) |
1614
+
1615
+ #### Returns
1616
+
1617
+ `Element`
1618
+
1619
+ ***
1620
+
1621
+ <a id="reducer"></a>
1622
+
1623
+ ### reducer()
1624
+
1625
+ ```ts
1626
+ function reducer(state: DocumentEditorState, action: DocumentEditorAction): DocumentEditorState;
1627
+ ```
1628
+
1629
+ Pure reducer. Every action returns a fresh state — no in-place
1630
+ mutation of `state.tree`. Validation re-runs after the structural
1631
+ change so `errorCount` is always current. Container nodes (map /
1632
+ array) ignore actions that don't apply to them rather than
1633
+ throwing; the components only render valid affordances per type.
1634
+
1635
+ #### Parameters
1636
+
1637
+ | Parameter | Type |
1638
+ | :------ | :------ |
1639
+ | `state` | [`DocumentEditorState`](#documenteditorstate) |
1640
+ | `action` | [`DocumentEditorAction`](#documenteditoraction) |
1641
+
1642
+ #### Returns
1643
+
1644
+ [`DocumentEditorState`](#documenteditorstate)
1645
+
1646
+ ***
1647
+
1648
+ <a id="referencepicker"></a>
1649
+
1650
+ ### ReferencePicker()
1651
+
1652
+ ```ts
1653
+ function ReferencePicker(__namedParameters: ReferencePickerProps): Element;
1654
+ ```
1655
+
1656
+ Visible reference picker — text input + browseable panel.
1657
+
1658
+ Two ways to commit a reference:
1659
+
1660
+ 1. Type a path, then click Commit (enabled only when the path
1661
+ parses to a valid `DocumentReference`).
1662
+ 2. Drill into a collection in the panel and click a document
1663
+ row.
1664
+
1665
+ Either path fires `onPick(ref)`. Headless — emits structural
1666
+ `data-pyric-*` for styling.
1667
+
1668
+ #### Parameters
1669
+
1670
+ | Parameter | Type |
1671
+ | :------ | :------ |
1672
+ | `__namedParameters` | [`ReferencePickerProps`](#referencepickerprops) |
1673
+
1674
+ #### Returns
1675
+
1676
+ `Element`
1677
+
1678
+ ***
1679
+
1680
+ <a id="treefromdata"></a>
1681
+
1682
+ ### treeFromData()
1683
+
1684
+ ```ts
1685
+ function treeFromData(data: Record<string, unknown>): EditorTree;
1686
+ ```
1687
+
1688
+ Build a normalized editor tree from a Firestore-shaped object.
1689
+ The root node is a virtual `map` that holds the document's
1690
+ top-level fields. Order of children mirrors `Object.entries` (the
1691
+ renderer is responsible for any sort it wants).
1692
+
1693
+ #### Parameters
1694
+
1695
+ | Parameter | Type |
1696
+ | :------ | :------ |
1697
+ | `data` | `Record`\<`string`, `unknown`\> |
1698
+
1699
+ #### Returns
1700
+
1701
+ [`EditorTree`](#editortree)
1702
+
1703
+ ***
1704
+
1705
+ <a id="treetodata"></a>
1706
+
1707
+ ### treeToData()
1708
+
1709
+ ```ts
1710
+ function treeToData(tree: EditorTree): Record<string, unknown>;
1711
+ ```
1712
+
1713
+ Serialize a tree back to a Firestore-shaped object. Leaf values
1714
+ pass through unchanged (so a `Timestamp` round-trips as the same
1715
+ `Timestamp` instance). Maps recurse with their sorted keys; arrays
1716
+ recurse in `childIds` order.
1717
+
1718
+ #### Parameters
1719
+
1720
+ | Parameter | Type |
1721
+ | :------ | :------ |
1722
+ | `tree` | [`EditorTree`](#editortree) |
1723
+
1724
+ #### Returns
1725
+
1726
+ `Record`\<`string`, `unknown`\>
1727
+
1728
+ ***
1729
+
1730
+ <a id="truncatevectorsfordisplay"></a>
1731
+
1732
+ ### truncateVectorsForDisplay()
1733
+
1734
+ ```ts
1735
+ function truncateVectorsForDisplay(value: unknown): unknown;
1736
+ ```
1737
+
1738
+ Deep-replace any vector-shaped value with a compact preview STRING, so the
1739
+ result can be `JSON.stringify`'d / formatted without dumping full embeddings.
1740
+ Recurses plain objects + arrays; class instances (Timestamp/GeoPoint) and
1741
+ scalars pass through untouched. Vector instances/sentinels are caught first.
1742
+
1743
+ #### Parameters
1744
+
1745
+ | Parameter | Type |
1746
+ | :------ | :------ |
1747
+ | `value` | `unknown` |
1748
+
1749
+ #### Returns
1750
+
1751
+ `unknown`
1752
+
1753
+ ***
1754
+
1755
+ <a id="usecollectionlist"></a>
1756
+
1757
+ ### useCollectionList()
1758
+
1759
+ ```ts
1760
+ function useCollectionList(__namedParameters: UseCollectionListOptions): UseCollectionListResult;
1761
+ ```
1762
+
1763
+ Operational read + create for collections under a parent (or root).
1764
+ Listing is injected because the modular Web SDK doesn't expose a
1765
+ native `listCollections` on the client — see options docs.
1766
+
1767
+ #### Parameters
1768
+
1769
+ | Parameter | Type |
1770
+ | :------ | :------ |
1771
+ | `__namedParameters` | [`UseCollectionListOptions`](#usecollectionlistoptions) |
1772
+
1773
+ #### Returns
1774
+
1775
+ [`UseCollectionListResult`](#usecollectionlistresult)
1776
+
1777
+ ***
1778
+
1779
+ <a id="usedocumenteditor"></a>
1780
+
1781
+ ### useDocumentEditor()
1782
+
1783
+ ```ts
1784
+ function useDocumentEditor(options?: UseDocumentEditorOptions): UseDocumentEditorResult;
1785
+ ```
1786
+
1787
+ Headless document editor. Owns the entire edit state for one
1788
+ document via a pure reducer. Consumers either render the bundled
1789
+ `<DocumentEditor>` compound component over this hook, or render
1790
+ their own tree using the returned state.
1791
+
1792
+ The hook builds its tree from `initial` on first mount. Changing
1793
+ `initial` later does NOT rebuild the tree; live viewers explicitly call
1794
+ `replaceData()` when a newer snapshot should become the clean baseline.
1795
+ This matches the firebase-tools-ui pattern of treating the editor as a
1796
+ stateful workspace while still allowing snapshot-driven reconciliation.
1797
+
1798
+ #### Parameters
1799
+
1800
+ | Parameter | Type |
1801
+ | :------ | :------ |
1802
+ | `options?` | [`UseDocumentEditorOptions`](#usedocumenteditoroptions) |
1803
+
1804
+ #### Returns
1805
+
1806
+ [`UseDocumentEditorResult`](#usedocumenteditorresult)
1807
+
1808
+ ***
1809
+
1810
+ <a id="usedocumenteditorcontext"></a>
1811
+
1812
+ ### useDocumentEditorContext()
1813
+
1814
+ ```ts
1815
+ function useDocumentEditorContext(): UseDocumentEditorResult;
1816
+ ```
1817
+
1818
+ Read access to the underlying editor state from inside a Root.
1819
+
1820
+ #### Returns
1821
+
1822
+ [`UseDocumentEditorResult`](#usedocumenteditorresult)
1823
+
1824
+ ***
1825
+
1826
+ <a id="usedocumentlist"></a>
1827
+
1828
+ ### useDocumentList()
1829
+
1830
+ ```ts
1831
+ function useDocumentList(__namedParameters: UseDocumentListOptions): UseDocumentListResult;
1832
+ ```
1833
+
1834
+ Paginated document list with two acquisition strategies. The default
1835
+ `paged` mode uses `startAfter` and accumulates one-shot reads. `live` keeps
1836
+ the requested prefix under one `onSnapshot` listener; loading more grows
1837
+ that prefix and establishes a new subscription baseline.
1838
+
1839
+ #### Parameters
1840
+
1841
+ | Parameter | Type |
1842
+ | :------ | :------ |
1843
+ | `__namedParameters` | [`UseDocumentListOptions`](#usedocumentlistoptions) |
1844
+
1845
+ #### Returns
1846
+
1847
+ [`UseDocumentListResult`](#usedocumentlistresult)
1848
+
1849
+ ***
1850
+
1851
+ <a id="usedocumentsubcollections"></a>
1852
+
1853
+ ### useDocumentSubcollections()
1854
+
1855
+ ```ts
1856
+ function useDocumentSubcollections(__namedParameters: UseDocumentSubcollectionsOptions): UseDocumentSubcollectionsResult;
1857
+ ```
1858
+
1859
+ Read a single document's subcollection list. A thin specialization of
1860
+ the `useCollectionList` pattern, scoped to one parent document and
1861
+ read-only (no create — that lives in `useCollectionList`).
1862
+
1863
+ #### Parameters
1864
+
1865
+ | Parameter | Type |
1866
+ | :------ | :------ |
1867
+ | `__namedParameters` | [`UseDocumentSubcollectionsOptions`](#usedocumentsubcollectionsoptions) |
1868
+
1869
+ #### Returns
1870
+
1871
+ [`UseDocumentSubcollectionsResult`](#usedocumentsubcollectionsresult)
1872
+
1873
+ ***
1874
+
1875
+ <a id="usefirestoreapi"></a>
1876
+
1877
+ ### useFirestoreApi()
1878
+
1879
+ ```ts
1880
+ function useFirestoreApi(): FirestoreApi;
1881
+ ```
1882
+
1883
+ Read the active Firestore API bundle (defaults to in-process `pyric/firestore`).
1884
+
1885
+ #### Returns
1886
+
1887
+ [`FirestoreApi`](#firestoreapi)
1888
+
1889
+ ***
1890
+
1891
+ <a id="usefirestorecollection"></a>
1892
+
1893
+ ### useFirestoreCollection()
1894
+
1895
+ ```ts
1896
+ function useFirestoreCollection(query: any): SubscriptionState<QuerySnapshot>;
1897
+ ```
1898
+
1899
+ Subscribe to a Firestore query (a `Query` from `pyric/firestore`'s
1900
+ modular surface, including any `CollectionReference`, which extends
1901
+ `Query`). Returns `{ data, error, isLoading }`.
1902
+
1903
+ Null/undefined query short-circuits to idle. Cleanup is automatic
1904
+ on unmount or query change. `Query` objects don't have a stable
1905
+ structural identity, so the consumer must memoize at the call site
1906
+ — pass the same instance across renders to avoid re-subscribing.
1907
+
1908
+ #### Parameters
1909
+
1910
+ | Parameter | Type |
1911
+ | :------ | :------ |
1912
+ | `query` | `any` |
1913
+
1914
+ #### Returns
1915
+
1916
+ [`SubscriptionState`](#subscriptionstate)\<`QuerySnapshot`\>
1917
+
1918
+ ***
1919
+
1920
+ <a id="usefirestoredoc"></a>
1921
+
1922
+ ### useFirestoreDoc()
1923
+
1924
+ ```ts
1925
+ function useFirestoreDoc(ref: any): SubscriptionState<DocumentSnapshot>;
1926
+ ```
1927
+
1928
+ Subscribe to a single Firestore document. Returns `{ data, error,
1929
+ isLoading }`. Null/undefined ref short-circuits to an idle state
1930
+ (`data: undefined, error: undefined, isLoading: false`) — useful
1931
+ for conditional rendering before a ref is known.
1932
+
1933
+ Cleanup is automatic on unmount or ref change. Memoize the ref at
1934
+ the call site; this hook's effect re-runs on identity change.
1935
+
1936
+ #### Parameters
1937
+
1938
+ | Parameter | Type |
1939
+ | :------ | :------ |
1940
+ | `ref` | `any` |
1941
+
1942
+ #### Returns
1943
+
1944
+ [`SubscriptionState`](#subscriptionstate)\<`DocumentSnapshot`\>
1945
+
1946
+ ***
1947
+
1948
+ <a id="usequerybuilder"></a>
1949
+
1950
+ ### useQueryBuilder()
1951
+
1952
+ ```ts
1953
+ function useQueryBuilder(options?: UseQueryBuilderOptions): UseQueryBuilderResult;
1954
+ ```
1955
+
1956
+ Headless query-builder state machine. Single-level — no nested
1957
+ `and()`/`or()` groups in v1. Consumers compose the state into a
1958
+ Firestore `Query` via `buildQuery(base)` and feed that into
1959
+ `useDocumentList` / `useFirestoreCollection`.
1960
+
1961
+ #### Parameters
1962
+
1963
+ | Parameter | Type |
1964
+ | :------ | :------ |
1965
+ | `options?` | [`UseQueryBuilderOptions`](#usequerybuilderoptions) |
1966
+
1967
+ #### Returns
1968
+
1969
+ [`UseQueryBuilderResult`](#usequerybuilderresult)
1970
+
1971
+ ***
1972
+
1973
+ <a id="userecursivedelete"></a>
1974
+
1975
+ ### useRecursiveDelete()
1976
+
1977
+ ```ts
1978
+ function useRecursiveDelete(impl: RecursiveDeleteImpl): UseRecursiveDeleteResult;
1979
+ ```
1980
+
1981
+ Drive a [RecursiveDeleteImpl](#recursivedeleteimpl) from a React component. Tracks
1982
+ progress + running state so the consumer can render a progress
1983
+ indicator. Errors are caught and surfaced via the returned state,
1984
+ not thrown.
1985
+
1986
+ Stale-run protection: if the component remounts (or the user
1987
+ cancels and starts a new run) before a previous iteration
1988
+ finishes, the older run's progress updates are dropped via a
1989
+ generation token.
1990
+
1991
+ #### Parameters
1992
+
1993
+ | Parameter | Type |
1994
+ | :------ | :------ |
1995
+ | `impl` | [`RecursiveDeleteImpl`](#recursivedeleteimpl) |
1996
+
1997
+ #### Returns
1998
+
1999
+ [`UseRecursiveDeleteResult`](#userecursivedeleteresult)
2000
+
2001
+ ***
2002
+
2003
+ <a id="usereferencepicker"></a>
2004
+
2005
+ ### useReferencePicker()
2006
+
2007
+ ```ts
2008
+ function useReferencePicker(__namedParameters: UseReferencePickerOptions): UseReferencePickerResult;
2009
+ ```
2010
+
2011
+ Picker state machine. Browses a Firestore tree level-by-level
2012
+ (root → collection → document → collection → ...), maintains a
2013
+ separately-validated text-input path, and commits a chosen
2014
+ reference via `pick`.
2015
+
2016
+ Headless — consumers compose the resulting state into their own
2017
+ UI, or use the bundled `<ReferencePicker>` component.
2018
+
2019
+ #### Parameters
2020
+
2021
+ | Parameter | Type |
2022
+ | :------ | :------ |
2023
+ | `__namedParameters` | [`UseReferencePickerOptions`](#usereferencepickeroptions) |
2024
+
2025
+ #### Returns
2026
+
2027
+ [`UseReferencePickerResult`](#usereferencepickerresult)
2028
+
2029
+ ***
2030
+
2031
+ <a id="validatecollectionid"></a>
2032
+
2033
+ ### validateCollectionId()
2034
+
2035
+ ```ts
2036
+ function validateCollectionId(id: string): string;
2037
+ ```
2038
+
2039
+ Validate a collection id. Returns an error message, or `undefined` when valid.
2040
+
2041
+ #### Parameters
2042
+
2043
+ | Parameter | Type |
2044
+ | :------ | :------ |
2045
+ | `id` | `string` |
2046
+
2047
+ #### Returns
2048
+
2049
+ `string`
2050
+
2051
+ ***
2052
+
2053
+ <a id="validatedocumentid"></a>
2054
+
2055
+ ### validateDocumentId()
2056
+
2057
+ ```ts
2058
+ function validateDocumentId(id: string): string;
2059
+ ```
2060
+
2061
+ Validate a document id. Returns an error message, or `undefined` when valid.
2062
+
2063
+ #### Parameters
2064
+
2065
+ | Parameter | Type |
2066
+ | :------ | :------ |
2067
+ | `id` | `string` |
2068
+
2069
+ #### Returns
2070
+
2071
+ `string`
2072
+
2073
+ ***
2074
+
2075
+ <a id="validateleaf"></a>
2076
+
2077
+ ### validateLeaf()
2078
+
2079
+ ```ts
2080
+ function validateLeaf(type: FieldType, value: unknown): string;
2081
+ ```
2082
+
2083
+ Per-type leaf validator. Returns an error message when the value
2084
+ doesn't satisfy the type's constraints, `undefined` when valid.
2085
+
2086
+ `map` and `array` aren't validated here — their integrity comes
2087
+ from their children + (for maps) sibling-key uniqueness, which
2088
+ is enforced in [validateTree](#validatetree).
2089
+
2090
+ #### Parameters
2091
+
2092
+ | Parameter | Type |
2093
+ | :------ | :------ |
2094
+ | `type` | [`FieldType`](#fieldtype) |
2095
+ | `value` | `unknown` |
2096
+
2097
+ #### Returns
2098
+
2099
+ `string`
2100
+
2101
+ ***
2102
+
2103
+ <a id="validatetree"></a>
2104
+
2105
+ ### validateTree()
2106
+
2107
+ ```ts
2108
+ function validateTree(tree: EditorTree): {
2109
+ errorCount: number;
2110
+ tree: EditorTree;
2111
+ };
2112
+ ```
2113
+
2114
+ Walk the tree, attach an `error` to each node, and return the
2115
+ mutated tree along with the total error count. The function does
2116
+ not mutate the input; it returns a fresh tree.
2117
+
2118
+ Per-leaf errors come from [validateLeaf](#validateleaf). Map nodes
2119
+ additionally surface duplicate-key + empty-key errors on the
2120
+ offending children (not on the parent).
2121
+
2122
+ #### Parameters
2123
+
2124
+ | Parameter | Type |
2125
+ | :------ | :------ |
2126
+ | `tree` | [`EditorTree`](#editortree) |
2127
+
2128
+ #### Returns
2129
+
2130
+ ```ts
2131
+ {
2132
+ errorCount: number;
2133
+ tree: EditorTree;
2134
+ }
2135
+ ```
2136
+
2137
+ ##### errorCount
2138
+
2139
+ ```ts
2140
+ errorCount: number;
2141
+ ```
2142
+
2143
+ ##### tree
2144
+
2145
+ ```ts
2146
+ tree: EditorTree;
2147
+ ```
2148
+
2149
+ ***
2150
+
2151
+ <a id="vectorpreview"></a>
2152
+
2153
+ ### vectorPreview()
2154
+
2155
+ ```ts
2156
+ function vectorPreview(view: VectorView): string;
2157
+ ```
2158
+
2159
+ Compact, display-safe rendering of a vector: `vector · <dim> [a, b, c, …]`.
2160
+ So a real embedding never dumps its full array into a diff, a rules trace, or
2161
+ a debugger panel.
2162
+
2163
+ #### Parameters
2164
+
2165
+ | Parameter | Type |
2166
+ | :------ | :------ |
2167
+ | `view` | [`VectorView`](#vectorview) |
2168
+
2169
+ #### Returns
2170
+
2171
+ `string`