@pyric/cli 0.1.0-alpha.10 → 0.1.0-alpha.12

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 (498) hide show
  1. package/README.md.orig +2 -2
  2. package/dist/assurance/.generated/conformance-verdicts.d.ts +16 -0
  3. package/dist/assurance/.generated/conformance-verdicts.d.ts.map +1 -1
  4. package/dist/assurance/.generated/conformance-verdicts.js +16 -0
  5. package/dist/assurance/.generated/conformance-verdicts.js.map +1 -1
  6. package/dist/bridge/server/peer.d.ts +1 -1
  7. package/dist/bridge/server.d.ts +1 -1
  8. package/dist/bridge/server.js +1 -1
  9. package/dist/cli/index.d.ts +11 -0
  10. package/dist/cli/index.d.ts.map +1 -1
  11. package/dist/cli/index.js +13 -1
  12. package/dist/cli/index.js.map +1 -1
  13. package/dist/cli/init.d.ts +3 -3
  14. package/dist/cli/init.d.ts.map +1 -1
  15. package/dist/cli/init.js +5 -5
  16. package/dist/cli/init.js.map +1 -1
  17. package/dist/cli/serve.d.ts.map +1 -1
  18. package/dist/cli/serve.js +8 -2
  19. package/dist/cli/serve.js.map +1 -1
  20. package/dist/conformance/.generated/can-i-use-browser.d.ts.map +1 -1
  21. package/dist/conformance/.generated/can-i-use-browser.js +1 -1
  22. package/dist/conformance/.generated/can-i-use-browser.js.map +1 -1
  23. package/dist/conformance/.generated/can-i-use.d.ts.map +1 -1
  24. package/dist/conformance/.generated/can-i-use.js +2 -2
  25. package/dist/conformance/.generated/can-i-use.js.map +1 -1
  26. package/dist/conformance/.generated/conformance-docs.d.ts +12 -0
  27. package/dist/conformance/.generated/conformance-docs.d.ts.map +1 -0
  28. package/dist/conformance/.generated/conformance-docs.js +2 -0
  29. package/dist/conformance/.generated/conformance-docs.js.map +1 -0
  30. package/dist/conformance/docs.d.ts +6 -0
  31. package/dist/conformance/docs.d.ts.map +1 -0
  32. package/dist/conformance/docs.js +6 -0
  33. package/dist/conformance/docs.js.map +1 -0
  34. package/dist/remote/index.d.ts.map +1 -1
  35. package/dist/remote/index.js +1 -0
  36. package/dist/remote/index.js.map +1 -1
  37. package/dist/serve/activity-guard.d.ts +4 -0
  38. package/dist/serve/activity-guard.d.ts.map +1 -0
  39. package/dist/serve/activity-guard.js +22 -0
  40. package/dist/serve/activity-guard.js.map +1 -0
  41. package/dist/serve/activity-route.d.ts +4 -0
  42. package/dist/serve/activity-route.d.ts.map +1 -0
  43. package/dist/serve/activity-route.js +157 -0
  44. package/dist/serve/activity-route.js.map +1 -0
  45. package/dist/serve/activity-warning.d.ts +4 -0
  46. package/dist/serve/activity-warning.d.ts.map +1 -0
  47. package/dist/serve/activity-warning.js +21 -0
  48. package/dist/serve/activity-warning.js.map +1 -0
  49. package/dist/serve/bridge-mount.d.ts +5 -0
  50. package/dist/serve/bridge-mount.d.ts.map +1 -1
  51. package/dist/serve/bridge-mount.js +1 -0
  52. package/dist/serve/bridge-mount.js.map +1 -1
  53. package/dist/serve/docs-ui/404.html +3 -0
  54. package/dist/serve/docs-ui/_astro/{_slug_.DPUwShm2.css → _slug_.CXh9yTP1.css} +1 -1
  55. package/dist/serve/docs-ui/_astro/_slug_.DUci-duz.css +1 -0
  56. package/dist/serve/docs-ui/docs/_rhythm/index.html +2 -1
  57. package/dist/serve/docs-ui/docs/agent/set-up-your-agent/index.html +3 -2
  58. package/dist/serve/docs-ui/docs/agent/set-up-your-agent.md +1 -1
  59. package/dist/serve/docs-ui/docs/agent/watch-and-review/index.html +2 -1
  60. package/dist/serve/docs-ui/docs/agent/work-with-an-agent/index.html +2 -1
  61. package/dist/serve/docs-ui/docs/ai-compat/index.html +2 -1
  62. package/dist/serve/docs-ui/docs/api-reference/index.html +51 -49
  63. package/dist/serve/docs-ui/docs/api-reference.md +3 -3
  64. package/dist/serve/docs-ui/docs/app-compat/index.html +2 -1
  65. package/dist/serve/docs-ui/docs/auth-compat/index.html +2 -1
  66. package/dist/serve/docs-ui/docs/build/ai-logic/index.html +18 -3
  67. package/dist/serve/docs-ui/docs/build/ai-logic.md +30 -2
  68. package/dist/serve/docs-ui/docs/build/authentication/index.html +2 -1
  69. package/dist/serve/docs-ui/docs/build/authentication.md +1 -1
  70. package/dist/serve/docs-ui/docs/build/cloud-firestore/index.html +2 -1
  71. package/dist/serve/docs-ui/docs/build/cloud-messaging/index.html +46 -2
  72. package/dist/serve/docs-ui/docs/build/cloud-messaging.md +56 -1
  73. package/dist/serve/docs-ui/docs/build/cloud-storage/index.html +2 -1
  74. package/dist/serve/docs-ui/docs/build/cloud-storage.md +1 -1
  75. package/dist/serve/docs-ui/docs/build/realtime-database/index.html +21 -3
  76. package/dist/serve/docs-ui/docs/build/realtime-database.md +25 -1
  77. package/dist/serve/docs-ui/docs/conformance-scores/index.html +2 -1
  78. package/dist/serve/docs-ui/docs/create-pyric-reference-api/index.html +61 -28
  79. package/dist/serve/docs-ui/docs/create-pyric-reference-api.md +65 -20
  80. package/dist/serve/docs-ui/docs/database-compat/index.html +2 -1
  81. package/dist/serve/docs-ui/docs/firestore-compat/index.html +6 -5
  82. package/dist/serve/docs-ui/docs/firestore-compat.md +4 -4
  83. package/dist/serve/docs-ui/docs/functions-rtdb-compat/index.html +2 -1
  84. package/dist/serve/docs-ui/docs/get-started/how-the-swap-works/index.html +2 -1
  85. package/dist/serve/docs-ui/docs/get-started/start-building/index.html +4 -3
  86. package/dist/serve/docs-ui/docs/get-started/start-building.md +2 -2
  87. package/dist/serve/docs-ui/docs/index.json +979 -579
  88. package/dist/serve/docs-ui/docs/messaging-compat/index.html +2 -1
  89. package/dist/serve/docs-ui/docs/observe/see-whats-happening/index.html +2 -1
  90. package/dist/serve/docs-ui/docs/observe/shape-your-data/index.html +2 -1
  91. package/dist/serve/docs-ui/docs/overview/index.html +2 -1
  92. package/dist/serve/docs-ui/docs/pyric-admin-app-reference-api/index.html +5 -4
  93. package/dist/serve/docs-ui/docs/pyric-admin-app-reference-api.md +3 -4
  94. package/dist/serve/docs-ui/docs/pyric-admin-auth-reference-api/index.html +5 -4
  95. package/dist/serve/docs-ui/docs/pyric-admin-auth-reference-api.md +3 -4
  96. package/dist/serve/docs-ui/docs/pyric-admin-database-reference-api/index.html +5 -4
  97. package/dist/serve/docs-ui/docs/pyric-admin-database-reference-api.md +3 -4
  98. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-api/index.html +2503 -12
  99. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-api.md +2219 -8
  100. package/dist/serve/docs-ui/docs/pyric-admin-messaging-reference-api/index.html +916 -0
  101. package/dist/serve/docs-ui/docs/pyric-admin-messaging-reference-api.md +706 -0
  102. package/dist/serve/docs-ui/docs/pyric-admin-storage-reference-api/index.html +4 -3
  103. package/dist/serve/docs-ui/docs/pyric-admin-storage-reference-api.md +2 -3
  104. package/dist/serve/docs-ui/docs/pyric-ai-reference-api/index.html +16 -11
  105. package/dist/serve/docs-ui/docs/pyric-ai-reference-api.md +14 -13
  106. package/dist/serve/docs-ui/docs/pyric-ai-scripting-reference-api/index.html +4 -3
  107. package/dist/serve/docs-ui/docs/pyric-ai-scripting-reference-api.md +2 -3
  108. package/dist/serve/docs-ui/docs/pyric-app-reference-api/index.html +7 -2
  109. package/dist/serve/docs-ui/docs/pyric-app-reference-api.md +5 -2
  110. package/dist/serve/docs-ui/docs/pyric-auth-reference-api/index.html +23 -12
  111. package/dist/serve/docs-ui/docs/pyric-auth-reference-api.md +15 -12
  112. package/dist/serve/docs-ui/docs/pyric-cli-assurance-browser-reference-api/index.html +10 -48
  113. package/dist/serve/docs-ui/docs/pyric-cli-assurance-browser-reference-api.md +11 -24
  114. package/dist/serve/docs-ui/docs/pyric-cli-assurance-reference-api/index.html +87 -97
  115. package/dist/serve/docs-ui/docs/pyric-cli-assurance-reference-api.md +53 -65
  116. package/dist/serve/docs-ui/docs/pyric-cli-bridge-client-reference-api/index.html +14 -15
  117. package/dist/serve/docs-ui/docs/pyric-cli-bridge-client-reference-api.md +19 -28
  118. package/dist/serve/docs-ui/docs/pyric-cli-bridge-reference-api/index.html +4 -3
  119. package/dist/serve/docs-ui/docs/pyric-cli-bridge-reference-api.md +2 -3
  120. package/dist/serve/docs-ui/docs/pyric-cli-conformance-browser-reference-api/index.html +3 -2
  121. package/dist/serve/docs-ui/docs/pyric-cli-conformance-browser-reference-api.md +1 -2
  122. package/dist/serve/docs-ui/docs/pyric-cli-conformance-docs-reference-api/index.html +51 -0
  123. package/dist/serve/docs-ui/docs/pyric-cli-conformance-docs-reference-api.md +36 -0
  124. package/dist/serve/docs-ui/docs/pyric-cli-conformance-reference-api/index.html +3 -2
  125. package/dist/serve/docs-ui/docs/pyric-cli-conformance-reference-api.md +1 -2
  126. package/dist/serve/docs-ui/docs/pyric-cli-credentials-node-reference-api/index.html +3 -2
  127. package/dist/serve/docs-ui/docs/pyric-cli-credentials-node-reference-api.md +1 -2
  128. package/dist/serve/docs-ui/docs/pyric-cli-discover-reference-api/index.html +3 -2
  129. package/dist/serve/docs-ui/docs/pyric-cli-discover-reference-api.md +1 -2
  130. package/dist/serve/docs-ui/docs/pyric-cli-register-reference-api/index.html +3 -2
  131. package/dist/serve/docs-ui/docs/pyric-cli-register-reference-api.md +1 -2
  132. package/dist/serve/docs-ui/docs/pyric-cli-remote-reference-api/index.html +1067 -83
  133. package/dist/serve/docs-ui/docs/pyric-cli-remote-reference-api.md +1291 -160
  134. package/dist/serve/docs-ui/docs/pyric-cli-serve-worker-reference-api/index.html +253 -157
  135. package/dist/serve/docs-ui/docs/pyric-cli-serve-worker-reference-api.md +179 -85
  136. package/dist/serve/docs-ui/docs/pyric-cli-verify-reference-api/index.html +72 -7
  137. package/dist/serve/docs-ui/docs/pyric-cli-verify-reference-api.md +22 -7
  138. package/dist/serve/docs-ui/docs/pyric-cli-vite-reference-api/index.html +33 -12
  139. package/dist/serve/docs-ui/docs/pyric-cli-vite-reference-api.md +15 -12
  140. package/dist/serve/docs-ui/docs/pyric-database-reference-api/index.html +18 -17
  141. package/dist/serve/docs-ui/docs/pyric-database-reference-api.md +19 -22
  142. package/dist/serve/docs-ui/docs/pyric-firestore-reference-api/index.html +1512 -545
  143. package/dist/serve/docs-ui/docs/pyric-firestore-reference-api.md +1311 -316
  144. package/dist/serve/docs-ui/docs/pyric-messaging-reference-api/index.html +5 -4
  145. package/dist/serve/docs-ui/docs/pyric-messaging-reference-api.md +3 -4
  146. package/dist/serve/docs-ui/docs/pyric-messaging-sw-reference-api/index.html +69 -369
  147. package/dist/serve/docs-ui/docs/pyric-messaging-sw-reference-api.md +103 -216
  148. package/dist/serve/docs-ui/docs/pyric-rules-reference-api/index.html +10 -9
  149. package/dist/serve/docs-ui/docs/pyric-rules-reference-api.md +9 -10
  150. package/dist/serve/docs-ui/docs/pyric-sandbox-database-reference-api/index.html +8 -7
  151. package/dist/serve/docs-ui/docs/pyric-sandbox-database-reference-api.md +6 -7
  152. package/dist/serve/docs-ui/docs/pyric-sandbox-firestore-reference-api/index.html +10 -9
  153. package/dist/serve/docs-ui/docs/pyric-sandbox-firestore-reference-api.md +9 -10
  154. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-api/index.html +371 -884
  155. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-api.md +369 -883
  156. package/dist/serve/docs-ui/docs/pyric-storage-reference-api/index.html +25 -17
  157. package/dist/serve/docs-ui/docs/pyric-storage-reference-api.md +21 -19
  158. package/dist/serve/docs-ui/docs/pyric-ui-agents-reference-api/index.html +3 -2
  159. package/dist/serve/docs-ui/docs/pyric-ui-agents-reference-api.md +1 -2
  160. package/dist/serve/docs-ui/docs/pyric-ui-auth-hooks-reference-api/index.html +63 -776
  161. package/dist/serve/docs-ui/docs/pyric-ui-auth-hooks-reference-api.md +69 -510
  162. package/dist/serve/docs-ui/docs/pyric-ui-auth-reference-api/index.html +22 -21
  163. package/dist/serve/docs-ui/docs/pyric-ui-auth-reference-api.md +29 -30
  164. package/dist/serve/docs-ui/docs/pyric-ui-events-hooks-reference-api/index.html +15 -168
  165. package/dist/serve/docs-ui/docs/pyric-ui-events-hooks-reference-api.md +17 -87
  166. package/dist/serve/docs-ui/docs/pyric-ui-events-reference-api/index.html +6 -5
  167. package/dist/serve/docs-ui/docs/pyric-ui-events-reference-api.md +5 -6
  168. package/dist/serve/docs-ui/docs/pyric-ui-firestore-hooks-reference-api/index.html +82 -970
  169. package/dist/serve/docs-ui/docs/pyric-ui-firestore-hooks-reference-api.md +104 -479
  170. package/dist/serve/docs-ui/docs/pyric-ui-firestore-reference-api/index.html +30 -29
  171. package/dist/serve/docs-ui/docs/pyric-ui-firestore-reference-api.md +54 -55
  172. package/dist/serve/docs-ui/docs/pyric-ui-primitives-reference-api/index.html +3 -2
  173. package/dist/serve/docs-ui/docs/pyric-ui-primitives-reference-api.md +1 -2
  174. package/dist/serve/docs-ui/docs/pyric-ui-rtdb-reference-api/index.html +5 -4
  175. package/dist/serve/docs-ui/docs/pyric-ui-rtdb-reference-api.md +3 -4
  176. package/dist/serve/docs-ui/docs/pyric-ui-rules-hooks-reference-api/index.html +9 -124
  177. package/dist/serve/docs-ui/docs/pyric-ui-rules-hooks-reference-api.md +7 -58
  178. package/dist/serve/docs-ui/docs/pyric-ui-rules-reference-api/index.html +24 -23
  179. package/dist/serve/docs-ui/docs/pyric-ui-rules-reference-api.md +31 -34
  180. package/dist/serve/docs-ui/docs/pyric-ui-storage-hooks-reference-api/index.html +104 -1385
  181. package/dist/serve/docs-ui/docs/pyric-ui-storage-hooks-reference-api.md +133 -817
  182. package/dist/serve/docs-ui/docs/pyric-ui-storage-reference-api/index.html +34 -33
  183. package/dist/serve/docs-ui/docs/pyric-ui-storage-reference-api.md +37 -38
  184. package/dist/serve/docs-ui/docs/pyric-ui-traffic-hooks-reference-api/index.html +116 -1169
  185. package/dist/serve/docs-ui/docs/pyric-ui-traffic-hooks-reference-api.md +142 -590
  186. package/dist/serve/docs-ui/docs/pyric-ui-traffic-reference-api/index.html +4 -3
  187. package/dist/serve/docs-ui/docs/pyric-ui-traffic-reference-api.md +3 -4
  188. package/dist/serve/docs-ui/docs/rules-compat/index.html +34 -1
  189. package/dist/serve/docs-ui/docs/rules-compat.md +32 -0
  190. package/dist/serve/docs-ui/docs/secure/audit-your-rules/index.html +19 -2
  191. package/dist/serve/docs-ui/docs/secure/audit-your-rules.md +32 -0
  192. package/dist/serve/docs-ui/docs/secure/firestore-rules-limits/index.html +2 -1
  193. package/dist/serve/docs-ui/docs/secure/read-a-denial/index.html +2 -1
  194. package/dist/serve/docs-ui/docs/secure/rtdb-rules-in-typescript/index.html +2 -1
  195. package/dist/serve/docs-ui/docs/secure/rtdb-rules-in-typescript.md +1 -1
  196. package/dist/serve/docs-ui/docs/secure/rules-standard-library/index.html +2 -1
  197. package/dist/serve/docs-ui/docs/secure/secure-it-with-rules/index.html +2 -1
  198. package/dist/serve/docs-ui/docs/secure/simulate-and-lint/index.html +2 -1
  199. package/dist/serve/docs-ui/docs/secure/write-a-rules-test-suite/index.html +2 -1
  200. package/dist/serve/docs-ui/docs/ship/ship-to-production/index.html +2 -1
  201. package/dist/serve/docs-ui/docs/ship/test-in-node/index.html +2 -1
  202. package/dist/serve/docs-ui/docs/storage-compat/index.html +2 -1
  203. package/dist/serve/docs-ui/docs/trust/how-we-know-it-matches-firebase/index.html +2 -1
  204. package/dist/serve/docs-ui/docs/trust/versioning-and-compatibility/index.html +2 -1
  205. package/dist/serve/docs-ui/llms.txt +2 -1
  206. package/dist/serve/entries/ai.d.ts.map +1 -1
  207. package/dist/serve/entries/ai.js +39 -1
  208. package/dist/serve/entries/ai.js.map +1 -1
  209. package/dist/serve/entries/messaging-sw.d.ts.map +1 -1
  210. package/dist/serve/entries/messaging-sw.js +5 -1
  211. package/dist/serve/entries/messaging-sw.js.map +1 -1
  212. package/dist/serve/entries/messaging.d.ts.map +1 -1
  213. package/dist/serve/entries/messaging.js +7 -1
  214. package/dist/serve/entries/messaging.js.map +1 -1
  215. package/dist/serve/entries/runtime.d.ts.map +1 -1
  216. package/dist/serve/entries/runtime.js +20 -1
  217. package/dist/serve/entries/runtime.js.map +1 -1
  218. package/dist/serve/init-payload.d.ts +25 -0
  219. package/dist/serve/init-payload.d.ts.map +1 -1
  220. package/dist/serve/namespace.d.ts +39 -0
  221. package/dist/serve/namespace.d.ts.map +1 -1
  222. package/dist/serve/namespace.js +80 -1
  223. package/dist/serve/namespace.js.map +1 -1
  224. package/dist/serve/standalone-assets.d.ts +11 -9
  225. package/dist/serve/standalone-assets.d.ts.map +1 -1
  226. package/dist/serve/standalone-assets.js +6 -5
  227. package/dist/serve/standalone-assets.js.map +1 -1
  228. package/dist/serve/studio-ui/assets/{RulesCodeEditor-CXdSLKhO.js → RulesCodeEditor-CxVYcZXw.js} +1 -1
  229. package/dist/serve/studio-ui/assets/index-cpSfgQ7H.js +1218 -0
  230. package/dist/serve/studio-ui/assets/seed-DeuFKi4J.js +20 -0
  231. package/dist/serve/studio-ui/index.html +1 -1
  232. package/dist/serve/vite-plugin.d.ts +92 -15
  233. package/dist/serve/vite-plugin.d.ts.map +1 -1
  234. package/dist/serve/vite-plugin.js +281 -11
  235. package/dist/serve/vite-plugin.js.map +1 -1
  236. package/dist/serve/worker/activity-bootstrap.d.ts +8 -0
  237. package/dist/serve/worker/activity-bootstrap.d.ts.map +1 -0
  238. package/dist/serve/worker/activity-bootstrap.js +11 -0
  239. package/dist/serve/worker/activity-bootstrap.js.map +1 -0
  240. package/dist/serve/worker/client/connection.d.ts.map +1 -1
  241. package/dist/serve/worker/client/connection.js +17 -5
  242. package/dist/serve/worker/client/connection.js.map +1 -1
  243. package/dist/serve/worker/client/core.d.ts +2 -2
  244. package/dist/serve/worker/client/core.d.ts.map +1 -1
  245. package/dist/serve/worker/client/core.js +33 -5
  246. package/dist/serve/worker/client/core.js.map +1 -1
  247. package/dist/serve/worker/client/firestore-writes.d.ts.map +1 -1
  248. package/dist/serve/worker/client/firestore-writes.js +1 -0
  249. package/dist/serve/worker/client/firestore-writes.js.map +1 -1
  250. package/dist/serve/worker/client/messaging.d.ts +9 -1
  251. package/dist/serve/worker/client/messaging.d.ts.map +1 -1
  252. package/dist/serve/worker/client/messaging.js +15 -0
  253. package/dist/serve/worker/client/messaging.js.map +1 -1
  254. package/dist/serve/worker/client/studio.d.ts +10 -0
  255. package/dist/serve/worker/client/studio.d.ts.map +1 -1
  256. package/dist/serve/worker/client/studio.js +11 -0
  257. package/dist/serve/worker/client/studio.js.map +1 -1
  258. package/dist/serve/worker/durable-persistence.d.ts +12 -0
  259. package/dist/serve/worker/durable-persistence.d.ts.map +1 -0
  260. package/dist/serve/worker/durable-persistence.js +118 -0
  261. package/dist/serve/worker/durable-persistence.js.map +1 -0
  262. package/dist/serve/worker/entry.d.ts +7 -3
  263. package/dist/serve/worker/entry.d.ts.map +1 -1
  264. package/dist/serve/worker/entry.js +7 -3
  265. package/dist/serve/worker/entry.js.map +1 -1
  266. package/dist/serve/worker/host/core.d.ts +9 -5
  267. package/dist/serve/worker/host/core.d.ts.map +1 -1
  268. package/dist/serve/worker/host/core.js +34 -9
  269. package/dist/serve/worker/host/core.js.map +1 -1
  270. package/dist/serve/worker/host/dispatch.d.ts.map +1 -1
  271. package/dist/serve/worker/host/dispatch.js +9 -2
  272. package/dist/serve/worker/host/dispatch.js.map +1 -1
  273. package/dist/serve/worker/host/firestore-writes.d.ts.map +1 -1
  274. package/dist/serve/worker/host/firestore-writes.js +3 -2
  275. package/dist/serve/worker/host/firestore-writes.js.map +1 -1
  276. package/dist/serve/worker/host/studio.d.ts +1 -1
  277. package/dist/serve/worker/host/studio.d.ts.map +1 -1
  278. package/dist/serve/worker/host/studio.js +36 -1
  279. package/dist/serve/worker/host/studio.js.map +1 -1
  280. package/dist/serve/worker/host/subscriptions.d.ts.map +1 -1
  281. package/dist/serve/worker/host/subscriptions.js +27 -7
  282. package/dist/serve/worker/host/subscriptions.js.map +1 -1
  283. package/dist/serve/worker/host-context.d.ts +15 -0
  284. package/dist/serve/worker/host-context.d.ts.map +1 -1
  285. package/dist/serve/worker/host-context.js +10 -0
  286. package/dist/serve/worker/host-context.js.map +1 -1
  287. package/dist/serve/worker/host-messaging.d.ts.map +1 -1
  288. package/dist/serve/worker/host-messaging.js +9 -2
  289. package/dist/serve/worker/host-messaging.js.map +1 -1
  290. package/dist/serve/worker/index.d.ts +3 -2
  291. package/dist/serve/worker/index.d.ts.map +1 -1
  292. package/dist/serve/worker/index.js +4 -1
  293. package/dist/serve/worker/index.js.map +1 -1
  294. package/dist/serve/worker/protocol.d.ts +25 -3
  295. package/dist/serve/worker/protocol.d.ts.map +1 -1
  296. package/dist/serve/worker/protocol.js +2 -2
  297. package/dist/serve/worker/protocol.js.map +1 -1
  298. package/dist/serve/worker/serve-init.d.ts +23 -37
  299. package/dist/serve/worker/serve-init.d.ts.map +1 -1
  300. package/dist/serve/worker/serve-init.js +95 -172
  301. package/dist/serve/worker/serve-init.js.map +1 -1
  302. package/dist/vite.d.ts +4 -4
  303. package/dist/vite.d.ts.map +1 -1
  304. package/dist/vite.js +3 -3
  305. package/dist/vite.js.map +1 -1
  306. package/package.json +9 -4
  307. package/src/assurance/.generated/conformance-verdicts.ts +1090 -0
  308. package/src/assurance/attachment.ts +211 -0
  309. package/src/assurance/browser.ts +80 -0
  310. package/src/assurance/campaign.ts +496 -0
  311. package/src/assurance/capabilities.ts +446 -0
  312. package/src/assurance/cases.ts +43 -0
  313. package/src/assurance/index.ts +75 -0
  314. package/src/assurance/runner.ts +885 -0
  315. package/src/assurance/tool-names.ts +15 -0
  316. package/src/assurance/tools.ts +830 -0
  317. package/src/assurance/types.ts +352 -0
  318. package/src/assurance/validation.ts +434 -0
  319. package/src/bridge/client/bridge.ts +550 -0
  320. package/src/bridge/client/dispatch.ts +137 -0
  321. package/src/bridge/client.ts +45 -0
  322. package/src/bridge/protocol.ts +351 -0
  323. package/src/bridge/server/audit.ts +53 -0
  324. package/src/bridge/server/bridge.ts +597 -0
  325. package/src/bridge/server/headless.ts +160 -0
  326. package/src/bridge/server/json-schema-to-zod.ts +108 -0
  327. package/src/bridge/server/local-bridge.ts +66 -0
  328. package/src/bridge/server/logger.ts +50 -0
  329. package/src/bridge/server/mcp-contract.ts +93 -0
  330. package/src/bridge/server/mcp.ts +129 -0
  331. package/src/bridge/server/peer.ts +232 -0
  332. package/src/bridge/server/standalone.ts +347 -0
  333. package/src/bridge/server/tool-metadata.ts +99 -0
  334. package/src/bridge/server.ts +28 -0
  335. package/src/cli/can-i-use.ts +50 -0
  336. package/src/cli/cli.test.ts +493 -0
  337. package/src/cli/database-rules.ts +329 -0
  338. package/src/cli/dev-runner.ts +282 -0
  339. package/src/cli/firebase-json.ts +100 -0
  340. package/src/cli/firestore-indexes.ts +70 -0
  341. package/src/cli/index.ts +425 -0
  342. package/src/cli/init.ts +260 -0
  343. package/src/cli/mcp-proxy.ts +196 -0
  344. package/src/cli/parse-args.ts +80 -0
  345. package/src/cli/rules.ts +259 -0
  346. package/src/cli/scope.ts +67 -0
  347. package/src/cli/serve.ts +996 -0
  348. package/src/cli/service-commands.ts +73 -0
  349. package/src/cli/snapshot.ts +164 -0
  350. package/src/cli/storage-rules.ts +172 -0
  351. package/src/cli/verify.ts +416 -0
  352. package/src/conformance/.generated/can-i-use-browser.ts +113 -0
  353. package/src/conformance/.generated/can-i-use.ts +117 -0
  354. package/src/conformance/.generated/conformance-docs.ts +14 -0
  355. package/src/conformance/browser.ts +24 -0
  356. package/src/conformance/can-i-use-tool.ts +51 -0
  357. package/src/conformance/can-i-use.ts +18 -0
  358. package/src/conformance/docs.ts +8 -0
  359. package/src/conformance/index.ts +20 -0
  360. package/src/conformance/tools.ts +16 -0
  361. package/src/credentials/core/memoize-ttl.ts +142 -0
  362. package/src/credentials/core/types.ts +10 -0
  363. package/src/credentials/node/from-adc.ts +96 -0
  364. package/src/credentials/node/from-service-account.ts +133 -0
  365. package/src/credentials/node/index.ts +6 -0
  366. package/src/discover/concurrency.ts +127 -0
  367. package/src/discover/crawler-adapter.ts +142 -0
  368. package/src/discover/crawler.ts +1127 -0
  369. package/src/discover/credential-free.ts +27 -0
  370. package/src/discover/findCollectionGroup.ts +131 -0
  371. package/src/discover/firestore-source.ts +59 -0
  372. package/src/discover/index.ts +5 -0
  373. package/src/discover/merge.ts +523 -0
  374. package/src/discover/session.ts +402 -0
  375. package/src/discover/tools.ts +201 -0
  376. package/src/discover/types.ts +187 -0
  377. package/src/discover/wire.ts +324 -0
  378. package/src/functions-rtdb/child.ts +382 -0
  379. package/src/functions-rtdb/delivery.ts +7 -0
  380. package/src/functions-rtdb/discovery.ts +136 -0
  381. package/src/functions-rtdb/event.ts +64 -0
  382. package/src/functions-rtdb/execution.ts +111 -0
  383. package/src/functions-rtdb/in-memory-delivery.ts +40 -0
  384. package/src/functions-rtdb/project.ts +74 -0
  385. package/src/functions-rtdb/projection.ts +104 -0
  386. package/src/functions-rtdb/reference-pattern.ts +20 -0
  387. package/src/functions-rtdb/remote-delivery.ts +23 -0
  388. package/src/pkg-version.ts +49 -0
  389. package/src/register/esm-exports.ts +63 -0
  390. package/src/register/hooks.ts +30 -0
  391. package/src/register/index.ts +150 -0
  392. package/src/register/mapping.ts +33 -0
  393. package/src/remote/index.ts +1050 -0
  394. package/src/rtdb/crawl-snapshot.ts +118 -0
  395. package/src/rtdb/inspection.ts +137 -0
  396. package/src/rtdb/load-rules-document.ts +56 -0
  397. package/src/rtdb/rules-generation-tool.ts +38 -0
  398. package/src/rtdb/rules-json.ts +29 -0
  399. package/src/serve/activity-guard.ts +29 -0
  400. package/src/serve/activity-route.ts +164 -0
  401. package/src/serve/activity-warning.ts +26 -0
  402. package/src/serve/bridge-mount.ts +200 -0
  403. package/src/serve/bundler.ts +493 -0
  404. package/src/serve/capture-store.ts +65 -0
  405. package/src/serve/discovery.ts +199 -0
  406. package/src/serve/entries/ai.ts +292 -0
  407. package/src/serve/entries/app-backend.ts +4 -0
  408. package/src/serve/entries/app-client.ts +26 -0
  409. package/src/serve/entries/app-session-store.ts +47 -0
  410. package/src/serve/entries/app.ts +11 -0
  411. package/src/serve/entries/auth-helper-core.ts +181 -0
  412. package/src/serve/entries/auth-helper-dom.ts +134 -0
  413. package/src/serve/entries/auth-helper-runtime.ts +20 -0
  414. package/src/serve/entries/auth.ts +255 -0
  415. package/src/serve/entries/bridge-url.ts +31 -0
  416. package/src/serve/entries/database.ts +129 -0
  417. package/src/serve/entries/firestore.ts +232 -0
  418. package/src/serve/entries/init.ts +46 -0
  419. package/src/serve/entries/keepalive.ts +46 -0
  420. package/src/serve/entries/messaging-sw.ts +75 -0
  421. package/src/serve/entries/messaging.ts +96 -0
  422. package/src/serve/entries/runtime.ts +540 -0
  423. package/src/serve/entries/session-store.ts +97 -0
  424. package/src/serve/entries/storage.ts +92 -0
  425. package/src/serve/entries/tab-sync-wiring.ts +274 -0
  426. package/src/serve/entries/worker-runtime.ts +75 -0
  427. package/src/serve/init-payload.ts +42 -0
  428. package/src/serve/namespace.ts +675 -0
  429. package/src/serve/open-browser.ts +68 -0
  430. package/src/serve/rules.ts +272 -0
  431. package/src/serve/sandbox-marker.ts +31 -0
  432. package/src/serve/server.ts +428 -0
  433. package/src/serve/standalone-assets.ts +180 -0
  434. package/src/serve/state-store.ts +166 -0
  435. package/src/serve/studio/disk-project-store.ts +185 -0
  436. package/src/serve/studio/disk-workspace.ts +162 -0
  437. package/src/serve/studio/index.ts +20 -0
  438. package/src/serve/studio/routes.ts +237 -0
  439. package/src/serve/studio/store-types.ts +48 -0
  440. package/src/serve/studio/studio-storage.test.ts +289 -0
  441. package/src/serve/vite-plugin.ts +1102 -0
  442. package/src/serve/worker/activity-bootstrap.ts +24 -0
  443. package/src/serve/worker/client/admin-firestore.ts +38 -0
  444. package/src/serve/worker/client/ai.ts +124 -0
  445. package/src/serve/worker/client/auth.ts +489 -0
  446. package/src/serve/worker/client/connection.ts +202 -0
  447. package/src/serve/worker/client/core.ts +350 -0
  448. package/src/serve/worker/client/disconnect.ts +45 -0
  449. package/src/serve/worker/client/firestore-reads.ts +181 -0
  450. package/src/serve/worker/client/firestore-refs.ts +226 -0
  451. package/src/serve/worker/client/firestore-writes.ts +232 -0
  452. package/src/serve/worker/client/handles.ts +91 -0
  453. package/src/serve/worker/client/messaging.ts +119 -0
  454. package/src/serve/worker/client/presence.ts +174 -0
  455. package/src/serve/worker/client/rtdb.ts +311 -0
  456. package/src/serve/worker/client/rules.ts +63 -0
  457. package/src/serve/worker/client/service-worker-connection.ts +59 -0
  458. package/src/serve/worker/client/snapshots.ts +86 -0
  459. package/src/serve/worker/client/storage.ts +195 -0
  460. package/src/serve/worker/client/studio.ts +88 -0
  461. package/src/serve/worker/client.ts +57 -0
  462. package/src/serve/worker/durable-persistence.ts +137 -0
  463. package/src/serve/worker/entry.ts +179 -0
  464. package/src/serve/worker/host/admin-firestore.ts +88 -0
  465. package/src/serve/worker/host/connection.ts +179 -0
  466. package/src/serve/worker/host/core.ts +387 -0
  467. package/src/serve/worker/host/dispatch.ts +316 -0
  468. package/src/serve/worker/host/firestore-reads.ts +117 -0
  469. package/src/serve/worker/host/firestore-writes.ts +456 -0
  470. package/src/serve/worker/host/presence.ts +312 -0
  471. package/src/serve/worker/host/rtdb.ts +136 -0
  472. package/src/serve/worker/host/rules.ts +128 -0
  473. package/src/serve/worker/host/storage.ts +312 -0
  474. package/src/serve/worker/host/studio.ts +75 -0
  475. package/src/serve/worker/host/subscriptions.ts +238 -0
  476. package/src/serve/worker/host-ai.ts +165 -0
  477. package/src/serve/worker/host-auth.ts +469 -0
  478. package/src/serve/worker/host-context.ts +273 -0
  479. package/src/serve/worker/host-events.ts +94 -0
  480. package/src/serve/worker/host-messaging.ts +240 -0
  481. package/src/serve/worker/host.ts +47 -0
  482. package/src/serve/worker/index.ts +196 -0
  483. package/src/serve/worker/presence-timing.ts +15 -0
  484. package/src/serve/worker/protocol.ts +1112 -0
  485. package/src/serve/worker/serve-init.ts +606 -0
  486. package/src/serve/worker/service-worker-channel.ts +33 -0
  487. package/src/serve/worker/service-worker-relay.ts +86 -0
  488. package/src/serve/writer-lock.ts +53 -0
  489. package/src/verify/cases.ts +233 -0
  490. package/src/verify/fixture.ts +258 -0
  491. package/src/verify/index.ts +519 -0
  492. package/src/verify/tools.ts +108 -0
  493. package/src/version/compat-target.ts +17 -0
  494. package/src/vite.ts +17 -0
  495. package/dist/serve/docs-ui/docs/pyric-firestore-values-reference-api/index.html +0 -30
  496. package/dist/serve/docs-ui/docs/pyric-firestore-values-reference-api.md +0 -30
  497. package/dist/serve/studio-ui/assets/index-BvtQIpGn.js +0 -1211
  498. package/dist/serve/studio-ui/assets/seed-3DMedLL3.js +0 -2
@@ -1,6 +1,7 @@
1
- <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>API reference: @pyric/cli/serve/worker · Pyric Studio</title><meta name="description" content="Published declarations for @pyric/cli/serve/worker."><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet"><link rel="stylesheet" href="/__pyric/ui/_astro/_slug_.DPUwShm2.css"></head> <body> <header class="studio__bar"> <div class="studio__bar-inner"> <a class="studio__brand" href="/__pyric/ui/" aria-label="Pyric Studio">Pyric</a> <nav class="studio__nav" aria-label="Studio tabs"> <a class="studio__nav-tab" href="/__pyric/ui/"> Home </a><a class="studio__nav-tab" href="/__pyric/ui/firestore"> Firestore </a><a class="studio__nav-tab" href="/__pyric/ui/auth"> Auth </a><a class="studio__nav-tab" href="/__pyric/ui/rtdb"> RTDB </a><a class="studio__nav-tab" href="/__pyric/ui/storage"> Storage </a><a class="studio__nav-tab" href="/__pyric/ui/traffic"> Traffic </a><a class="studio__nav-tab" href="/__pyric/ui/settings"> Settings </a><a class="studio__nav-tab" href="/__pyric/ui/docs" aria-current="page"> Docs </a> </nav> </div> </header> <div class="docs-shell"> <details class="docs-nav-drawer"> <summary>Navigate</summary> <nav class="docs-nav" aria-label="Documentation"> <div class="docs-search" data-index-url="/__pyric/ui/docs/index.json"> <div class="docs-search-field"> <svg class="docs-search-icon" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"> <path d="M11.5 11.5 15 15M13 7A6 6 0 1 1 1 7a6 6 0 0 1 12 0Z" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"></path> </svg> <input type="text" class="docs-search-input" placeholder="Search docs" aria-label="Search docs" autocomplete="off" spellcheck="false"> <kbd class="docs-search-kbd">⌘K</kbd> </div> <ul class="docs-search-results" hidden></ul> </div> <script type="module">let i=null;function d(t){return i||(i=fetch(t).then(e=>e.json())),i}function l(t,e){return t.title.toLowerCase().includes(e)||t.excerpt.toLowerCase().includes(e)?!0:t.headings.some(r=>r.text.toLowerCase().includes(e))}function u(t,e,r){if(e.innerHTML="",t.length===0){e.hidden=!1;{const n=document.createElement("li");n.className="docs-search-empty",n.textContent="No matches",e.appendChild(n)}return}e.hidden=!1;for(const n of t.slice(0,8)){const s=document.createElement("li"),c=document.createElement("a");c.href=n.path;const o=document.createElement("span");o.className="docs-search-result-title",o.textContent=n.title;const a=document.createElement("span");a.className="docs-search-result-meta",a.textContent=[n.group,n.section].filter(Boolean).join(" / "),c.append(o,a),s.appendChild(c),e.appendChild(s)}}document.querySelectorAll(".docs-search").forEach(t=>{const e=t.dataset.indexUrl,r=t.querySelector(".docs-search-input"),n=t.querySelector(".docs-search-results");r.addEventListener("input",async()=>{const s=r.value.trim().toLowerCase();if(!s){n.hidden=!0,n.innerHTML="";return}const{pages:c}=await d(e);r.value.trim().toLowerCase()===s&&u(c.filter(o=>l(o,s)),n)}),r.addEventListener("focus",()=>{d(e),n.childElementCount>0&&(n.hidden=!1)}),r.addEventListener("keydown",s=>{s.key==="Escape"&&(r.value="",n.hidden=!0,n.innerHTML="",r.blur())}),r.addEventListener("blur",()=>{window.setTimeout(()=>{n.hidden=!0},150)})});document.addEventListener("keydown",t=>{if(!(t.metaKey||t.ctrlKey)||t.key.toLowerCase()!=="k")return;const e=[...document.querySelectorAll(".docs-search-input")].find(r=>r.offsetParent!==null);e&&(t.preventDefault(),e.focus(),e.select())});</script> <a class="docs-nav-toplink" href="/__pyric/ui/docs/overview/"> Overview </a><details class="docs-nav-group"> <summary>Get started</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/get-started/start-building/"> Quickstart </a> </li><li> <a href="/__pyric/ui/docs/get-started/how-the-swap-works/"> How the swap works </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Build</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/build/authentication/"> Authentication </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-firestore/"> Cloud Firestore </a> </li><li> <a href="/__pyric/ui/docs/build/realtime-database/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-storage/"> Cloud Storage </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-messaging/"> Cloud Messaging </a> </li><li> <a href="/__pyric/ui/docs/build/ai-logic/"> AI Logic </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Secure &amp; debug</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/secure/secure-it-with-rules/"> Security Rules </a> </li><li> <a href="/__pyric/ui/docs/secure/simulate-and-lint/"> Simulate and lint before you deploy </a> </li><li> <a href="/__pyric/ui/docs/secure/write-a-rules-test-suite/"> Write a rules test suite </a> </li><li> <a href="/__pyric/ui/docs/secure/read-a-denial/"> Read a denial and understand it </a> </li><li> <a href="/__pyric/ui/docs/secure/rules-standard-library/"> The rules standard library </a> </li><li> <a href="/__pyric/ui/docs/secure/rtdb-rules-in-typescript/"> RTDB rules in TypeScript </a> </li><li> <a href="/__pyric/ui/docs/secure/firestore-rules-limits/"> Rules limits </a> </li><li> <a href="/__pyric/ui/docs/secure/audit-your-rules/"> Audit rules and data </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Observe &amp; shape</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/observe/see-whats-happening/"> Traffic &amp; rule verdicts </a> </li><li> <a href="/__pyric/ui/docs/observe/shape-your-data/"> Seed, snapshot, replay </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Ship &amp; test</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/ship/ship-to-production/"> Ship to production </a> </li><li> <a href="/__pyric/ui/docs/ship/test-in-node/"> Test in Node </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Work with an agent</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/agent/set-up-your-agent/"> Connect an agent </a> </li><li> <a href="/__pyric/ui/docs/agent/work-with-an-agent/"> Use the MCP tools </a> </li><li> <a href="/__pyric/ui/docs/agent/watch-and-review/"> Watch in Pyric Studio </a> </li> </ul> </div> </div> </details><a class="docs-nav-toplink" href="/__pyric/ui/docs/trust/versioning-and-compatibility/"> Trust </a><details class="docs-nav-group"> <summary>Conformance</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/conformance-scores/"> Public API coverage </a> </li><li> <a href="/__pyric/ui/docs/trust/how-we-know-it-matches-firebase/"> How we know it matches Firebase </a> </li><li> <a href="/__pyric/ui/docs/app-compat/"> App </a> </li><li> <a href="/__pyric/ui/docs/ai-compat/"> AI Logic </a> </li><li> <a href="/__pyric/ui/docs/auth-compat/"> Auth </a> </li><li> <a href="/__pyric/ui/docs/firestore-compat/"> Firestore </a> </li><li> <a href="/__pyric/ui/docs/database-compat/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/storage-compat/"> Storage </a> </li><li> <a href="/__pyric/ui/docs/messaging-compat/"> Messaging </a> </li><li> <a href="/__pyric/ui/docs/functions-rtdb-compat/"> Functions · RTDB </a> </li><li> <a href="/__pyric/ui/docs/rules-compat/"> Rules </a> </li> </ul> </div> </div> </details> <details class="docs-nav-group" open> <summary>Reference</summary> <div class="docs-nav-group-body docs-nav-group-body--reference"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/api-reference/"> API reference </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-app-reference-api/"> pyric/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore-reference-api/"> pyric/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-auth-reference-api/"> pyric/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-reference-api/"> pyric/ai </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-scripting-reference-api/"> pyric/ai/scripting </a> </li><li> <a href="/__pyric/ui/docs/pyric-database-reference-api/"> pyric/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-storage-reference-api/"> pyric/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-reference-api/"> pyric/messaging </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-sw-reference-api/"> pyric/messaging/sw </a> </li><li> <a href="/__pyric/ui/docs/pyric-rules-reference-api/"> pyric/rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore-values-reference-api/"> pyric/firestore-values </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-reference-api/"> pyric/sandbox </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-firestore-reference-api/"> pyric/sandbox/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-database-reference-api/"> pyric/sandbox/database </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric-admin</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-admin-app-reference-api/"> pyric-admin/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-firestore-reference-api/"> pyric-admin/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-auth-reference-api/"> pyric-admin/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-database-reference-api/"> pyric-admin/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-storage-reference-api/"> pyric-admin/storage </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">create-pyric</h2> <ul> <li> <a href="/__pyric/ui/docs/create-pyric-reference-api/"> create-pyric </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">@pyric/cli</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-cli-credentials-node-reference-api/"> @pyric/cli/credentials/node </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-verify-reference-api/"> @pyric/cli/verify </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-reference-api/"> @pyric/cli/conformance </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-browser-reference-api/"> @pyric/cli/conformance/browser </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-assurance-reference-api/"> @pyric/cli/assurance </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-assurance-browser-reference-api/"> @pyric/cli/assurance/browser </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-bridge-reference-api/"> @pyric/cli/bridge </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-bridge-client-reference-api/"> @pyric/cli/bridge/client </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-discover-reference-api/"> @pyric/cli/discover </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-vite-reference-api/"> @pyric/cli/vite </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-serve-worker-reference-api/" aria-current="page"> @pyric/cli/serve/worker </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-remote-reference-api/"> @pyric/cli/remote </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-register-reference-api/"> @pyric/cli/register </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">@pyric/ui</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-ui-auth-reference-api/"> @pyric/ui/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-auth-hooks-reference-api/"> @pyric/ui/auth/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-primitives-reference-api/"> @pyric/ui/primitives </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-firestore-reference-api/"> @pyric/ui/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-firestore-hooks-reference-api/"> @pyric/ui/firestore/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rtdb-reference-api/"> @pyric/ui/rtdb </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-storage-reference-api/"> @pyric/ui/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-storage-hooks-reference-api/"> @pyric/ui/storage/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-traffic-reference-api/"> @pyric/ui/traffic </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-traffic-hooks-reference-api/"> @pyric/ui/traffic/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-events-reference-api/"> @pyric/ui/events </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-events-hooks-reference-api/"> @pyric/ui/events/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-agents-reference-api/"> @pyric/ui/agents </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rules-reference-api/"> @pyric/ui/rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rules-hooks-reference-api/"> @pyric/ui/rules/hooks </a> </li> </ul> </div> </div> </details> </nav> </details> <nav class="docs-nav" aria-label="Documentation"> <div class="docs-search" data-index-url="/__pyric/ui/docs/index.json"> <div class="docs-search-field"> <svg class="docs-search-icon" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"> <path d="M11.5 11.5 15 15M13 7A6 6 0 1 1 1 7a6 6 0 0 1 12 0Z" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"></path> </svg> <input type="text" class="docs-search-input" placeholder="Search docs" aria-label="Search docs" autocomplete="off" spellcheck="false"> <kbd class="docs-search-kbd">⌘K</kbd> </div> <ul class="docs-search-results" hidden></ul> </div> <a class="docs-nav-toplink" href="/__pyric/ui/docs/overview/" id="nav-group-overview"> Overview </a><details class="docs-nav-group" id="nav-group-get-started"> <summary>Get started</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/get-started/start-building/"> Quickstart </a> </li><li> <a href="/__pyric/ui/docs/get-started/how-the-swap-works/"> How the swap works </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-build"> <summary>Build</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/build/authentication/"> Authentication </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-firestore/"> Cloud Firestore </a> </li><li> <a href="/__pyric/ui/docs/build/realtime-database/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-storage/"> Cloud Storage </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-messaging/"> Cloud Messaging </a> </li><li> <a href="/__pyric/ui/docs/build/ai-logic/"> AI Logic </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-secure-debug"> <summary>Secure &amp; debug</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/secure/secure-it-with-rules/"> Security Rules </a> </li><li> <a href="/__pyric/ui/docs/secure/simulate-and-lint/"> Simulate and lint before you deploy </a> </li><li> <a href="/__pyric/ui/docs/secure/write-a-rules-test-suite/"> Write a rules test suite </a> </li><li> <a href="/__pyric/ui/docs/secure/read-a-denial/"> Read a denial and understand it </a> </li><li> <a href="/__pyric/ui/docs/secure/rules-standard-library/"> The rules standard library </a> </li><li> <a href="/__pyric/ui/docs/secure/rtdb-rules-in-typescript/"> RTDB rules in TypeScript </a> </li><li> <a href="/__pyric/ui/docs/secure/firestore-rules-limits/"> Rules limits </a> </li><li> <a href="/__pyric/ui/docs/secure/audit-your-rules/"> Audit rules and data </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-observe-shape"> <summary>Observe &amp; shape</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/observe/see-whats-happening/"> Traffic &amp; rule verdicts </a> </li><li> <a href="/__pyric/ui/docs/observe/shape-your-data/"> Seed, snapshot, replay </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-ship-test"> <summary>Ship &amp; test</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/ship/ship-to-production/"> Ship to production </a> </li><li> <a href="/__pyric/ui/docs/ship/test-in-node/"> Test in Node </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-work-with-an-agent"> <summary>Work with an agent</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/agent/set-up-your-agent/"> Connect an agent </a> </li><li> <a href="/__pyric/ui/docs/agent/work-with-an-agent/"> Use the MCP tools </a> </li><li> <a href="/__pyric/ui/docs/agent/watch-and-review/"> Watch in Pyric Studio </a> </li> </ul> </div> </div> </details><a class="docs-nav-toplink" href="/__pyric/ui/docs/trust/versioning-and-compatibility/" id="nav-group-trust"> Trust </a><details class="docs-nav-group" id="nav-group-conformance"> <summary>Conformance</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/conformance-scores/"> Public API coverage </a> </li><li> <a href="/__pyric/ui/docs/trust/how-we-know-it-matches-firebase/"> How we know it matches Firebase </a> </li><li> <a href="/__pyric/ui/docs/app-compat/"> App </a> </li><li> <a href="/__pyric/ui/docs/ai-compat/"> AI Logic </a> </li><li> <a href="/__pyric/ui/docs/auth-compat/"> Auth </a> </li><li> <a href="/__pyric/ui/docs/firestore-compat/"> Firestore </a> </li><li> <a href="/__pyric/ui/docs/database-compat/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/storage-compat/"> Storage </a> </li><li> <a href="/__pyric/ui/docs/messaging-compat/"> Messaging </a> </li><li> <a href="/__pyric/ui/docs/functions-rtdb-compat/"> Functions · RTDB </a> </li><li> <a href="/__pyric/ui/docs/rules-compat/"> Rules </a> </li> </ul> </div> </div> </details> <details class="docs-nav-group" id="nav-group-reference" open> <summary>Reference</summary> <div class="docs-nav-group-body docs-nav-group-body--reference"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/api-reference/"> API reference </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-app-reference-api/"> pyric/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore-reference-api/"> pyric/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-auth-reference-api/"> pyric/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-reference-api/"> pyric/ai </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-scripting-reference-api/"> pyric/ai/scripting </a> </li><li> <a href="/__pyric/ui/docs/pyric-database-reference-api/"> pyric/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-storage-reference-api/"> pyric/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-reference-api/"> pyric/messaging </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-sw-reference-api/"> pyric/messaging/sw </a> </li><li> <a href="/__pyric/ui/docs/pyric-rules-reference-api/"> pyric/rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore-values-reference-api/"> pyric/firestore-values </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-reference-api/"> pyric/sandbox </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-firestore-reference-api/"> pyric/sandbox/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-database-reference-api/"> pyric/sandbox/database </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric-admin</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-admin-app-reference-api/"> pyric-admin/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-firestore-reference-api/"> pyric-admin/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-auth-reference-api/"> pyric-admin/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-database-reference-api/"> pyric-admin/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-storage-reference-api/"> pyric-admin/storage </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">create-pyric</h2> <ul> <li> <a href="/__pyric/ui/docs/create-pyric-reference-api/"> create-pyric </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">@pyric/cli</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-cli-credentials-node-reference-api/"> @pyric/cli/credentials/node </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-verify-reference-api/"> @pyric/cli/verify </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-reference-api/"> @pyric/cli/conformance </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-browser-reference-api/"> @pyric/cli/conformance/browser </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-assurance-reference-api/"> @pyric/cli/assurance </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-assurance-browser-reference-api/"> @pyric/cli/assurance/browser </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-bridge-reference-api/"> @pyric/cli/bridge </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-bridge-client-reference-api/"> @pyric/cli/bridge/client </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-discover-reference-api/"> @pyric/cli/discover </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-vite-reference-api/"> @pyric/cli/vite </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-serve-worker-reference-api/" aria-current="page"> @pyric/cli/serve/worker </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-remote-reference-api/"> @pyric/cli/remote </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-register-reference-api/"> @pyric/cli/register </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">@pyric/ui</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-ui-auth-reference-api/"> @pyric/ui/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-auth-hooks-reference-api/"> @pyric/ui/auth/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-primitives-reference-api/"> @pyric/ui/primitives </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-firestore-reference-api/"> @pyric/ui/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-firestore-hooks-reference-api/"> @pyric/ui/firestore/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rtdb-reference-api/"> @pyric/ui/rtdb </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-storage-reference-api/"> @pyric/ui/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-storage-hooks-reference-api/"> @pyric/ui/storage/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-traffic-reference-api/"> @pyric/ui/traffic </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-traffic-hooks-reference-api/"> @pyric/ui/traffic/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-events-reference-api/"> @pyric/ui/events </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-events-hooks-reference-api/"> @pyric/ui/events/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-agents-reference-api/"> @pyric/ui/agents </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rules-reference-api/"> @pyric/ui/rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rules-hooks-reference-api/"> @pyric/ui/rules/hooks </a> </li> </ul> </div> </div> </details> </nav> <main class="doc-main"> <nav class="docs-breadcrumbs" aria-label="Breadcrumb"> <ol> <li> <a href="/__pyric/ui/docs/api-reference/">API reference</a> </li><li> <span class="docs-breadcrumbs-sep" aria-hidden="true">/</span> <span>@pyric/cli</span> </li><li> <span class="docs-breadcrumbs-sep" aria-hidden="true">/</span> <span aria-current="page">@pyric/cli/serve/worker</span> </li> </ol> </nav> <header class="api-reference-header"> <p class="api-reference-kicker">API reference</p> <h1><code>@pyric/cli/serve/worker</code></h1> <p class="api-reference-meta"> 144 published symbols from <code>@pyric/cli</code> </p> <p class="api-reference-source">
1
+ <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>API reference: @pyric/cli/serve/worker · Pyric Studio</title><meta name="description" content="Published declarations for @pyric/cli/serve/worker."><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet"><link rel="stylesheet" href="/__pyric/ui/_astro/_slug_.CXh9yTP1.css">
2
+ <link rel="stylesheet" href="/__pyric/ui/_astro/_slug_.DUci-duz.css"></head> <body> <header class="studio__bar"> <div class="studio__bar-inner"> <a class="studio__brand" href="/__pyric/ui/" aria-label="Pyric Studio">Pyric</a> <nav class="studio__nav" aria-label="Studio tabs"> <a class="studio__nav-tab" href="/__pyric/ui/"> Home </a><a class="studio__nav-tab" href="/__pyric/ui/firestore"> Firestore </a><a class="studio__nav-tab" href="/__pyric/ui/auth"> Auth </a><a class="studio__nav-tab" href="/__pyric/ui/rtdb"> RTDB </a><a class="studio__nav-tab" href="/__pyric/ui/storage"> Storage </a><a class="studio__nav-tab" href="/__pyric/ui/traffic"> Traffic </a><a class="studio__nav-tab" href="/__pyric/ui/settings"> Settings </a><a class="studio__nav-tab" href="/__pyric/ui/docs" aria-current="page"> Docs </a> </nav> </div> </header> <div class="docs-shell"> <details class="docs-nav-drawer"> <summary>Navigate</summary> <nav class="docs-nav" aria-label="Documentation"> <div class="docs-search" data-index-url="/__pyric/ui/docs/index.json"> <div class="docs-search-field"> <svg class="docs-search-icon" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"> <path d="M11.5 11.5 15 15M13 7A6 6 0 1 1 1 7a6 6 0 0 1 12 0Z" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"></path> </svg> <input type="text" class="docs-search-input" placeholder="Search docs" aria-label="Search docs" autocomplete="off" spellcheck="false"> <kbd class="docs-search-kbd">⌘K</kbd> </div> <ul class="docs-search-results" hidden></ul> </div> <script type="module">let i=null;function d(t){return i||(i=fetch(t).then(e=>e.json())),i}function l(t,e){return t.title.toLowerCase().includes(e)||t.excerpt.toLowerCase().includes(e)?!0:t.headings.some(r=>r.text.toLowerCase().includes(e))}function u(t,e,r){if(e.innerHTML="",t.length===0){e.hidden=!1;{const n=document.createElement("li");n.className="docs-search-empty",n.textContent="No matches",e.appendChild(n)}return}e.hidden=!1;for(const n of t.slice(0,8)){const s=document.createElement("li"),c=document.createElement("a");c.href=n.path;const o=document.createElement("span");o.className="docs-search-result-title",o.textContent=n.title;const a=document.createElement("span");a.className="docs-search-result-meta",a.textContent=[n.group,n.section].filter(Boolean).join(" / "),c.append(o,a),s.appendChild(c),e.appendChild(s)}}document.querySelectorAll(".docs-search").forEach(t=>{const e=t.dataset.indexUrl,r=t.querySelector(".docs-search-input"),n=t.querySelector(".docs-search-results");r.addEventListener("input",async()=>{const s=r.value.trim().toLowerCase();if(!s){n.hidden=!0,n.innerHTML="";return}const{pages:c}=await d(e);r.value.trim().toLowerCase()===s&&u(c.filter(o=>l(o,s)),n)}),r.addEventListener("focus",()=>{d(e),n.childElementCount>0&&(n.hidden=!1)}),r.addEventListener("keydown",s=>{s.key==="Escape"&&(r.value="",n.hidden=!0,n.innerHTML="",r.blur())}),r.addEventListener("blur",()=>{window.setTimeout(()=>{n.hidden=!0},150)})});document.addEventListener("keydown",t=>{if(!(t.metaKey||t.ctrlKey)||t.key.toLowerCase()!=="k")return;const e=[...document.querySelectorAll(".docs-search-input")].find(r=>r.offsetParent!==null);e&&(t.preventDefault(),e.focus(),e.select())});</script> <a class="docs-nav-toplink" href="/__pyric/ui/docs/overview/"> Overview </a><details class="docs-nav-group"> <summary>Get started</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/get-started/start-building/"> Quickstart </a> </li><li> <a href="/__pyric/ui/docs/get-started/how-the-swap-works/"> How the swap works </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Build</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/build/authentication/"> Authentication </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-firestore/"> Cloud Firestore </a> </li><li> <a href="/__pyric/ui/docs/build/realtime-database/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-storage/"> Cloud Storage </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-messaging/"> Cloud Messaging </a> </li><li> <a href="/__pyric/ui/docs/build/ai-logic/"> AI Logic </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Secure &amp; debug</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/secure/secure-it-with-rules/"> Security Rules </a> </li><li> <a href="/__pyric/ui/docs/secure/simulate-and-lint/"> Simulate and lint before you deploy </a> </li><li> <a href="/__pyric/ui/docs/secure/write-a-rules-test-suite/"> Write a rules test suite </a> </li><li> <a href="/__pyric/ui/docs/secure/read-a-denial/"> Read a denial and understand it </a> </li><li> <a href="/__pyric/ui/docs/secure/rules-standard-library/"> The rules standard library </a> </li><li> <a href="/__pyric/ui/docs/secure/rtdb-rules-in-typescript/"> RTDB rules in TypeScript </a> </li><li> <a href="/__pyric/ui/docs/secure/firestore-rules-limits/"> Rules limits </a> </li><li> <a href="/__pyric/ui/docs/secure/audit-your-rules/"> Audit rules and data </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Observe &amp; shape</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/observe/see-whats-happening/"> Traffic &amp; rule verdicts </a> </li><li> <a href="/__pyric/ui/docs/observe/shape-your-data/"> Seed, snapshot, replay </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Ship &amp; test</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/ship/ship-to-production/"> Ship to production </a> </li><li> <a href="/__pyric/ui/docs/ship/test-in-node/"> Test in Node </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Work with an agent</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/agent/set-up-your-agent/"> Connect an agent </a> </li><li> <a href="/__pyric/ui/docs/agent/work-with-an-agent/"> Use the MCP tools </a> </li><li> <a href="/__pyric/ui/docs/agent/watch-and-review/"> Watch in Pyric Studio </a> </li> </ul> </div> </div> </details><a class="docs-nav-toplink" href="/__pyric/ui/docs/trust/versioning-and-compatibility/"> Trust </a><details class="docs-nav-group"> <summary>Conformance</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/conformance-scores/"> Public API coverage </a> </li><li> <a href="/__pyric/ui/docs/trust/how-we-know-it-matches-firebase/"> How we know it matches Firebase </a> </li><li> <a href="/__pyric/ui/docs/app-compat/"> App </a> </li><li> <a href="/__pyric/ui/docs/ai-compat/"> AI Logic </a> </li><li> <a href="/__pyric/ui/docs/auth-compat/"> Auth </a> </li><li> <a href="/__pyric/ui/docs/firestore-compat/"> Firestore </a> </li><li> <a href="/__pyric/ui/docs/database-compat/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/storage-compat/"> Storage </a> </li><li> <a href="/__pyric/ui/docs/messaging-compat/"> Messaging </a> </li><li> <a href="/__pyric/ui/docs/functions-rtdb-compat/"> Functions · RTDB </a> </li><li> <a href="/__pyric/ui/docs/rules-compat/"> Rules </a> </li> </ul> </div> </div> </details> <details class="docs-nav-group" open> <summary>Reference</summary> <div class="docs-nav-group-body docs-nav-group-body--reference"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/api-reference/"> API reference </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-app-reference-api/"> pyric/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore-reference-api/"> pyric/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-auth-reference-api/"> pyric/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-reference-api/"> pyric/ai </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-scripting-reference-api/"> pyric/ai/scripting </a> </li><li> <a href="/__pyric/ui/docs/pyric-database-reference-api/"> pyric/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-storage-reference-api/"> pyric/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-reference-api/"> pyric/messaging </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-sw-reference-api/"> pyric/messaging/sw </a> </li><li> <a href="/__pyric/ui/docs/pyric-rules-reference-api/"> pyric/rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-reference-api/"> pyric/sandbox </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-firestore-reference-api/"> pyric/sandbox/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-database-reference-api/"> pyric/sandbox/database </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric-admin</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-admin-app-reference-api/"> pyric-admin/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-firestore-reference-api/"> pyric-admin/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-auth-reference-api/"> pyric-admin/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-database-reference-api/"> pyric-admin/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-storage-reference-api/"> pyric-admin/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-messaging-reference-api/"> pyric-admin/messaging </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">create-pyric</h2> <ul> <li> <a href="/__pyric/ui/docs/create-pyric-reference-api/"> create-pyric </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">@pyric/cli</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-cli-credentials-node-reference-api/"> @pyric/cli/credentials/node </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-verify-reference-api/"> @pyric/cli/verify </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-reference-api/"> @pyric/cli/conformance </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-browser-reference-api/"> @pyric/cli/conformance/browser </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-docs-reference-api/"> @pyric/cli/conformance/docs </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-assurance-reference-api/"> @pyric/cli/assurance </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-assurance-browser-reference-api/"> @pyric/cli/assurance/browser </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-bridge-reference-api/"> @pyric/cli/bridge </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-bridge-client-reference-api/"> @pyric/cli/bridge/client </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-discover-reference-api/"> @pyric/cli/discover </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-vite-reference-api/"> @pyric/cli/vite </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-serve-worker-reference-api/" aria-current="page"> @pyric/cli/serve/worker </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-remote-reference-api/"> @pyric/cli/remote </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-register-reference-api/"> @pyric/cli/register </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">@pyric/ui</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-ui-auth-reference-api/"> @pyric/ui/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-auth-hooks-reference-api/"> @pyric/ui/auth/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-primitives-reference-api/"> @pyric/ui/primitives </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-firestore-reference-api/"> @pyric/ui/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-firestore-hooks-reference-api/"> @pyric/ui/firestore/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rtdb-reference-api/"> @pyric/ui/rtdb </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-storage-reference-api/"> @pyric/ui/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-storage-hooks-reference-api/"> @pyric/ui/storage/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-traffic-reference-api/"> @pyric/ui/traffic </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-traffic-hooks-reference-api/"> @pyric/ui/traffic/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-events-reference-api/"> @pyric/ui/events </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-events-hooks-reference-api/"> @pyric/ui/events/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-agents-reference-api/"> @pyric/ui/agents </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rules-reference-api/"> @pyric/ui/rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rules-hooks-reference-api/"> @pyric/ui/rules/hooks </a> </li> </ul> </div> </div> </details> </nav> </details> <nav class="docs-nav" aria-label="Documentation"> <div class="docs-search" data-index-url="/__pyric/ui/docs/index.json"> <div class="docs-search-field"> <svg class="docs-search-icon" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"> <path d="M11.5 11.5 15 15M13 7A6 6 0 1 1 1 7a6 6 0 0 1 12 0Z" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"></path> </svg> <input type="text" class="docs-search-input" placeholder="Search docs" aria-label="Search docs" autocomplete="off" spellcheck="false"> <kbd class="docs-search-kbd">⌘K</kbd> </div> <ul class="docs-search-results" hidden></ul> </div> <a class="docs-nav-toplink" href="/__pyric/ui/docs/overview/" id="nav-group-overview"> Overview </a><details class="docs-nav-group" id="nav-group-get-started"> <summary>Get started</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/get-started/start-building/"> Quickstart </a> </li><li> <a href="/__pyric/ui/docs/get-started/how-the-swap-works/"> How the swap works </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-build"> <summary>Build</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/build/authentication/"> Authentication </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-firestore/"> Cloud Firestore </a> </li><li> <a href="/__pyric/ui/docs/build/realtime-database/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-storage/"> Cloud Storage </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-messaging/"> Cloud Messaging </a> </li><li> <a href="/__pyric/ui/docs/build/ai-logic/"> AI Logic </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-secure-debug"> <summary>Secure &amp; debug</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/secure/secure-it-with-rules/"> Security Rules </a> </li><li> <a href="/__pyric/ui/docs/secure/simulate-and-lint/"> Simulate and lint before you deploy </a> </li><li> <a href="/__pyric/ui/docs/secure/write-a-rules-test-suite/"> Write a rules test suite </a> </li><li> <a href="/__pyric/ui/docs/secure/read-a-denial/"> Read a denial and understand it </a> </li><li> <a href="/__pyric/ui/docs/secure/rules-standard-library/"> The rules standard library </a> </li><li> <a href="/__pyric/ui/docs/secure/rtdb-rules-in-typescript/"> RTDB rules in TypeScript </a> </li><li> <a href="/__pyric/ui/docs/secure/firestore-rules-limits/"> Rules limits </a> </li><li> <a href="/__pyric/ui/docs/secure/audit-your-rules/"> Audit rules and data </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-observe-shape"> <summary>Observe &amp; shape</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/observe/see-whats-happening/"> Traffic &amp; rule verdicts </a> </li><li> <a href="/__pyric/ui/docs/observe/shape-your-data/"> Seed, snapshot, replay </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-ship-test"> <summary>Ship &amp; test</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/ship/ship-to-production/"> Ship to production </a> </li><li> <a href="/__pyric/ui/docs/ship/test-in-node/"> Test in Node </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-work-with-an-agent"> <summary>Work with an agent</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/agent/set-up-your-agent/"> Connect an agent </a> </li><li> <a href="/__pyric/ui/docs/agent/work-with-an-agent/"> Use the MCP tools </a> </li><li> <a href="/__pyric/ui/docs/agent/watch-and-review/"> Watch in Pyric Studio </a> </li> </ul> </div> </div> </details><a class="docs-nav-toplink" href="/__pyric/ui/docs/trust/versioning-and-compatibility/" id="nav-group-trust"> Trust </a><details class="docs-nav-group" id="nav-group-conformance"> <summary>Conformance</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/conformance-scores/"> Public API coverage </a> </li><li> <a href="/__pyric/ui/docs/trust/how-we-know-it-matches-firebase/"> How we know it matches Firebase </a> </li><li> <a href="/__pyric/ui/docs/app-compat/"> App </a> </li><li> <a href="/__pyric/ui/docs/ai-compat/"> AI Logic </a> </li><li> <a href="/__pyric/ui/docs/auth-compat/"> Auth </a> </li><li> <a href="/__pyric/ui/docs/firestore-compat/"> Firestore </a> </li><li> <a href="/__pyric/ui/docs/database-compat/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/storage-compat/"> Storage </a> </li><li> <a href="/__pyric/ui/docs/messaging-compat/"> Messaging </a> </li><li> <a href="/__pyric/ui/docs/functions-rtdb-compat/"> Functions · RTDB </a> </li><li> <a href="/__pyric/ui/docs/rules-compat/"> Rules </a> </li> </ul> </div> </div> </details> <details class="docs-nav-group" id="nav-group-reference" open> <summary>Reference</summary> <div class="docs-nav-group-body docs-nav-group-body--reference"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/api-reference/"> API reference </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-app-reference-api/"> pyric/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore-reference-api/"> pyric/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-auth-reference-api/"> pyric/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-reference-api/"> pyric/ai </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-scripting-reference-api/"> pyric/ai/scripting </a> </li><li> <a href="/__pyric/ui/docs/pyric-database-reference-api/"> pyric/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-storage-reference-api/"> pyric/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-reference-api/"> pyric/messaging </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-sw-reference-api/"> pyric/messaging/sw </a> </li><li> <a href="/__pyric/ui/docs/pyric-rules-reference-api/"> pyric/rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-reference-api/"> pyric/sandbox </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-firestore-reference-api/"> pyric/sandbox/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-database-reference-api/"> pyric/sandbox/database </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric-admin</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-admin-app-reference-api/"> pyric-admin/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-firestore-reference-api/"> pyric-admin/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-auth-reference-api/"> pyric-admin/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-database-reference-api/"> pyric-admin/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-storage-reference-api/"> pyric-admin/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-messaging-reference-api/"> pyric-admin/messaging </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">create-pyric</h2> <ul> <li> <a href="/__pyric/ui/docs/create-pyric-reference-api/"> create-pyric </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">@pyric/cli</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-cli-credentials-node-reference-api/"> @pyric/cli/credentials/node </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-verify-reference-api/"> @pyric/cli/verify </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-reference-api/"> @pyric/cli/conformance </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-browser-reference-api/"> @pyric/cli/conformance/browser </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-docs-reference-api/"> @pyric/cli/conformance/docs </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-assurance-reference-api/"> @pyric/cli/assurance </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-assurance-browser-reference-api/"> @pyric/cli/assurance/browser </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-bridge-reference-api/"> @pyric/cli/bridge </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-bridge-client-reference-api/"> @pyric/cli/bridge/client </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-discover-reference-api/"> @pyric/cli/discover </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-vite-reference-api/"> @pyric/cli/vite </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-serve-worker-reference-api/" aria-current="page"> @pyric/cli/serve/worker </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-remote-reference-api/"> @pyric/cli/remote </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-register-reference-api/"> @pyric/cli/register </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">@pyric/ui</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-ui-auth-reference-api/"> @pyric/ui/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-auth-hooks-reference-api/"> @pyric/ui/auth/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-primitives-reference-api/"> @pyric/ui/primitives </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-firestore-reference-api/"> @pyric/ui/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-firestore-hooks-reference-api/"> @pyric/ui/firestore/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rtdb-reference-api/"> @pyric/ui/rtdb </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-storage-reference-api/"> @pyric/ui/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-storage-hooks-reference-api/"> @pyric/ui/storage/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-traffic-reference-api/"> @pyric/ui/traffic </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-traffic-hooks-reference-api/"> @pyric/ui/traffic/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-events-reference-api/"> @pyric/ui/events </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-events-hooks-reference-api/"> @pyric/ui/events/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-agents-reference-api/"> @pyric/ui/agents </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rules-reference-api/"> @pyric/ui/rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rules-hooks-reference-api/"> @pyric/ui/rules/hooks </a> </li> </ul> </div> </div> </details> </nav> <main class="doc-main"> <nav class="docs-breadcrumbs" aria-label="Breadcrumb"> <ol> <li> <a href="/__pyric/ui/docs/api-reference/">API reference</a> </li><li> <span class="docs-breadcrumbs-sep" aria-hidden="true">/</span> <span>@pyric/cli</span> </li><li> <span class="docs-breadcrumbs-sep" aria-hidden="true">/</span> <span aria-current="page">@pyric/cli/serve/worker</span> </li> </ol> </nav> <header class="api-reference-header"> <p class="api-reference-kicker">API reference</p> <h1><code>@pyric/cli/serve/worker</code></h1> <p class="api-reference-meta"> 145 published symbols from <code>@pyric/cli</code> </p> <p class="api-reference-source">
2
3
  Generated from the TypeScript declarations shipped at this import path.
3
- </p> </header> <article class="prose api-reference-body"> <!-- Generated from published package declarations via TypeDoc. Do not edit by hand; run bun run docs:api:generate. -->
4
+ </p> </header> <article class="prose api-reference-body"> <!-- Generated from published package declarations via TypeDoc. Rendered by the api-reference content loader. -->
4
5
  <h2 id="interfaces">Interfaces</h2>
5
6
  <p><a id="clientauth"></a></p>
6
7
  <h3 id="clientauth">ClientAuth</h3>
@@ -65,7 +66,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
65
66
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
66
67
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
67
68
  </ul>
68
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
69
+ <p><code>client.ts</code> imports only the value codec
70
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
69
71
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
70
72
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
71
73
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -146,7 +148,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
146
148
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
147
149
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
148
150
  </ul>
149
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
151
+ <p><code>client.ts</code> imports only the value codec
152
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
150
153
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
151
154
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
152
155
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -191,7 +194,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
191
194
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
192
195
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
193
196
  </ul>
194
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
197
+ <p><code>client.ts</code> imports only the value codec
198
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
195
199
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
196
200
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
197
201
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -523,7 +527,7 @@ that RPC back to the worker. Mirrors <code>firebase/auth</code>’s <code>User</
523
527
 
524
528
 
525
529
 
526
- <table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="operationtype"></a> <code>operationType</code></td><td align="left"><code>"signIn"</code> | <code>"reauthenticate"</code> | <code>"link"</code></td></tr><tr><td align="left"><a id="providerid-1"></a> <code>providerId</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="user"></a> <code>user</code></td><td align="left"><a href="#clientuser"><code>ClientUser</code></a></td></tr></tbody></table></div>
530
+ <table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="operationtype"></a> <code>operationType</code></td><td align="left"><code>"signIn"</code> | <code>"link"</code> | <code>"reauthenticate"</code></td></tr><tr><td align="left"><a id="providerid-1"></a> <code>providerId</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="user"></a> <code>user</code></td><td align="left"><a href="#clientuser"><code>ClientUser</code></a></td></tr></tbody></table></div>
527
531
  <hr>
528
532
  <p><a id="clientwritebatch"></a></p>
529
533
  <h3 id="clientwritebatch">ClientWriteBatch</h3>
@@ -711,7 +715,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
711
715
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
712
716
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
713
717
  </ul>
714
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
718
+ <p><code>client.ts</code> imports only the value codec
719
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
715
720
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
716
721
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
717
722
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -852,7 +857,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
852
857
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
853
858
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
854
859
  </ul>
855
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
860
+ <p><code>client.ts</code> imports only the value codec
861
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
856
862
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
857
863
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
858
864
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -983,7 +989,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
983
989
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
984
990
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
985
991
  </ul>
986
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
992
+ <p><code>client.ts</code> imports only the value codec
993
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
987
994
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
988
995
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
989
996
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -1173,7 +1180,7 @@ worker (the worker holds the one real user).</p>
1173
1180
 
1174
1181
 
1175
1182
 
1176
- <table><thead><tr><th align="left">Property</th><th align="left">Modifier</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="operationtype-1"></a> <code>operationType</code></td><td align="left"><code>readonly</code></td><td align="left"><code>"signIn"</code> | <code>"reauthenticate"</code> | <code>"link"</code></td></tr><tr><td align="left"><a id="providerid-4"></a> <code>providerId</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="user-1"></a> <code>user</code></td><td align="left"><code>readonly</code></td><td align="left"><a href="#serializeduser"><code>SerializedUser</code></a></td></tr></tbody></table></div>
1183
+ <table><thead><tr><th align="left">Property</th><th align="left">Modifier</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="operationtype-1"></a> <code>operationType</code></td><td align="left"><code>readonly</code></td><td align="left"><code>"signIn"</code> | <code>"link"</code> | <code>"reauthenticate"</code></td></tr><tr><td align="left"><a id="providerid-4"></a> <code>providerId</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="user-1"></a> <code>user</code></td><td align="left"><code>readonly</code></td><td align="left"><a href="#serializeduser"><code>SerializedUser</code></a></td></tr></tbody></table></div>
1177
1184
  <h2 id="type-aliases">Type Aliases</h2>
1178
1185
  <p><a id="anyhandle"></a></p>
1179
1186
  <h3 id="anyhandle">AnyHandle</h3>
@@ -1225,7 +1232,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
1225
1232
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
1226
1233
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
1227
1234
  </ul>
1228
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
1235
+ <p><code>client.ts</code> imports only the value codec
1236
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
1229
1237
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
1230
1238
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
1231
1239
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -1250,7 +1258,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
1250
1258
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
1251
1259
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
1252
1260
  </ul>
1253
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
1261
+ <p><code>client.ts</code> imports only the value codec
1262
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
1254
1263
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
1255
1264
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
1256
1265
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -1327,7 +1336,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
1327
1336
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
1328
1337
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
1329
1338
  </ul>
1330
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
1339
+ <p><code>client.ts</code> imports only the value codec
1340
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
1331
1341
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
1332
1342
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
1333
1343
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -1367,7 +1377,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
1367
1377
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
1368
1378
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
1369
1379
  </ul>
1370
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
1380
+ <p><code>client.ts</code> imports only the value codec
1381
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
1371
1382
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
1372
1383
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
1373
1384
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -1403,7 +1414,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
1403
1414
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
1404
1415
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
1405
1416
  </ul>
1406
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
1417
+ <p><code>client.ts</code> imports only the value codec
1418
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
1407
1419
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
1408
1420
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
1409
1421
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -1426,9 +1438,9 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
1426
1438
 
1427
1439
 
1428
1440
 
1429
- <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>auth</code></td><td align="left"><a href="#clientauth"><code>ClientAuth</code></a></td></tr><tr><td align="left"><code>request</code></td><td align="left"><code>CreateUserRequest</code></td></tr></tbody></table></div>
1441
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>auth</code></td><td align="left"><a href="#clientauth"><code>ClientAuth</code></a></td></tr><tr><td align="left"><code>request</code></td><td align="left"><a href="/docs/pyric-auth-reference-api/#createuserrequest"><code>CreateUserRequest</code></a></td></tr></tbody></table></div>
1430
1442
  <h4 id="returns-26">Returns</h4>
1431
- <p><code>Promise</code>&#x3C;<code>AuthUserRecord</code>></p>
1443
+ <p><code>Promise</code>&#x3C;<a href="/docs/pyric-auth-reference-api/#authuserrecord"><code>AuthUserRecord</code></a>></p>
1432
1444
  <hr>
1433
1445
  <p><a id="admindeletedocument"></a></p>
1434
1446
  <h3 id="admindeletedocument">adminDeleteDocument()</h3>
@@ -1443,7 +1455,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
1443
1455
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
1444
1456
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
1445
1457
  </ul>
1446
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
1458
+ <p><code>client.ts</code> imports only the value codec
1459
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
1447
1460
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
1448
1461
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
1449
1462
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -1483,7 +1496,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
1483
1496
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
1484
1497
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
1485
1498
  </ul>
1486
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
1499
+ <p><code>client.ts</code> imports only the value codec
1500
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
1487
1501
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
1488
1502
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
1489
1503
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -1523,7 +1537,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
1523
1537
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
1524
1538
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
1525
1539
  </ul>
1526
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
1540
+ <p><code>client.ts</code> imports only the value codec
1541
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
1527
1542
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
1528
1543
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
1529
1544
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -1563,7 +1578,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
1563
1578
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
1564
1579
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
1565
1580
  </ul>
1566
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
1581
+ <p><code>client.ts</code> imports only the value codec
1582
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
1567
1583
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
1568
1584
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
1569
1585
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -1607,7 +1623,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
1607
1623
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
1608
1624
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
1609
1625
  </ul>
1610
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
1626
+ <p><code>client.ts</code> imports only the value codec
1627
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
1611
1628
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
1612
1629
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
1613
1630
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -1651,7 +1668,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
1651
1668
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
1652
1669
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
1653
1670
  </ul>
1654
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
1671
+ <p><code>client.ts</code> imports only the value codec
1672
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
1655
1673
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
1656
1674
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
1657
1675
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -1690,7 +1708,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
1690
1708
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
1691
1709
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
1692
1710
  </ul>
1693
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
1711
+ <p><code>client.ts</code> imports only the value codec
1712
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
1694
1713
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
1695
1714
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
1696
1715
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -1741,7 +1760,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
1741
1760
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
1742
1761
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
1743
1762
  </ul>
1744
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
1763
+ <p><code>client.ts</code> imports only the value codec
1764
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
1745
1765
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
1746
1766
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
1747
1767
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -1788,7 +1808,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
1788
1808
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
1789
1809
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
1790
1810
  </ul>
1791
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
1811
+ <p><code>client.ts</code> imports only the value codec
1812
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
1792
1813
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
1793
1814
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
1794
1815
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -1879,7 +1900,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
1879
1900
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
1880
1901
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
1881
1902
  </ul>
1882
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
1903
+ <p><code>client.ts</code> imports only the value codec
1904
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
1883
1905
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
1884
1906
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
1885
1907
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -1926,7 +1948,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
1926
1948
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
1927
1949
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
1928
1950
  </ul>
1929
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
1951
+ <p><code>client.ts</code> imports only the value codec
1952
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
1930
1953
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
1931
1954
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
1932
1955
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -1953,9 +1976,9 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
1953
1976
 
1954
1977
 
1955
1978
 
1956
- <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>auth</code></td><td align="left"><a href="#clientauth"><code>ClientAuth</code></a></td></tr><tr><td align="left"><code>uid</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>request</code></td><td align="left"><code>UpdateUserRequest</code></td></tr></tbody></table></div>
1979
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>auth</code></td><td align="left"><a href="#clientauth"><code>ClientAuth</code></a></td></tr><tr><td align="left"><code>uid</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>request</code></td><td align="left"><a href="/docs/pyric-auth-reference-api/#updateuserrequest"><code>UpdateUserRequest</code></a></td></tr></tbody></table></div>
1957
1980
  <h4 id="returns-38">Returns</h4>
1958
- <p><code>Promise</code>&#x3C;<code>AuthUserRecord</code>></p>
1981
+ <p><code>Promise</code>&#x3C;<a href="/docs/pyric-auth-reference-api/#authuserrecord"><code>AuthUserRecord</code></a>></p>
1959
1982
  <hr>
1960
1983
  <p><a id="and"></a></p>
1961
1984
  <h3 id="and">and()</h3>
@@ -1992,7 +2015,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
1992
2015
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
1993
2016
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
1994
2017
  </ul>
1995
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
2018
+ <p><code>client.ts</code> imports only the value codec
2019
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
1996
2020
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
1997
2021
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
1998
2022
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -2028,7 +2052,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
2028
2052
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
2029
2053
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
2030
2054
  </ul>
2031
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
2055
+ <p><code>client.ts</code> imports only the value codec
2056
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
2032
2057
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
2033
2058
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
2034
2059
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -2234,7 +2259,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
2234
2259
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
2235
2260
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
2236
2261
  </ul>
2237
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
2262
+ <p><code>client.ts</code> imports only the value codec
2263
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
2238
2264
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
2239
2265
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
2240
2266
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -2278,7 +2304,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
2278
2304
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
2279
2305
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
2280
2306
  </ul>
2281
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
2307
+ <p><code>client.ts</code> imports only the value codec
2308
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
2282
2309
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
2283
2310
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
2284
2311
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -2314,7 +2341,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
2314
2341
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
2315
2342
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
2316
2343
  </ul>
2317
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
2344
+ <p><code>client.ts</code> imports only the value codec
2345
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
2318
2346
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
2319
2347
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
2320
2348
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -2413,7 +2441,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
2413
2441
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
2414
2442
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
2415
2443
  </ul>
2416
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
2444
+ <p><code>client.ts</code> imports only the value codec
2445
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
2417
2446
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
2418
2447
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
2419
2448
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -2449,7 +2478,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
2449
2478
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
2450
2479
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
2451
2480
  </ul>
2452
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
2481
+ <p><code>client.ts</code> imports only the value codec
2482
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
2453
2483
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
2454
2484
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
2455
2485
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -2495,7 +2525,7 @@ subscription. Useful for a late, snapshot-only consumer.</p>
2495
2525
 
2496
2526
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>db</code></td><td align="left"><a href="#clientdb"><code>ClientDb</code></a></td></tr></tbody></table></div>
2497
2527
  <h4 id="returns-56">Returns</h4>
2498
- <p><code>Promise</code>&#x3C;readonly <code>SandboxEvent</code>[]></p>
2528
+ <p><code>Promise</code>&#x3C;readonly <a href="/docs/pyric-sandbox-reference-api/#sandboxevent"><code>SandboxEvent</code></a>[]></p>
2499
2529
  <hr>
2500
2530
  <p><a id="exportworkerstate"></a></p>
2501
2531
  <h3 id="exportworkerstate">exportWorkerState()</h3>
@@ -2534,7 +2564,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
2534
2564
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
2535
2565
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
2536
2566
  </ul>
2537
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
2567
+ <p><code>client.ts</code> imports only the value codec
2568
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
2538
2569
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
2539
2570
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
2540
2571
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -2706,7 +2737,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
2706
2737
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
2707
2738
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
2708
2739
  </ul>
2709
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
2740
+ <p><code>client.ts</code> imports only the value codec
2741
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
2710
2742
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
2711
2743
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
2712
2744
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -2746,7 +2778,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
2746
2778
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
2747
2779
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
2748
2780
  </ul>
2749
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
2781
+ <p><code>client.ts</code> imports only the value codec
2782
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
2750
2783
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
2751
2784
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
2752
2785
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -2782,7 +2815,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
2782
2815
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
2783
2816
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
2784
2817
  </ul>
2785
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
2818
+ <p><code>client.ts</code> imports only the value codec
2819
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
2786
2820
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
2787
2821
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
2788
2822
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -2912,10 +2946,10 @@ but returns a <code>ClientDb</code> backed by a <code>MessagePort</code> instead
2912
2946
  <hr>
2913
2947
  <p><a id="getlens"></a></p>
2914
2948
  <h3 id="getlens">getLens()</h3>
2915
- <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> getLens</span><span style="color:#ABB2BF">(): </span><span style="color:#E5C07B">any</span><span style="color:#ABB2BF">;</span></span></code></pre>
2949
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> getLens</span><span style="color:#ABB2BF">(): </span><span style="color:#E5C07B">AuthLens</span><span style="color:#ABB2BF">;</span></span></code></pre>
2916
2950
  <p>The active default lens (read-only view), for Studio UI to reflect state.</p>
2917
2951
  <h4 id="returns-70">Returns</h4>
2918
- <p><code>any</code></p>
2952
+ <p><a href="/docs/pyric-sandbox-reference-api/#authlens-2"><code>AuthLens</code></a></p>
2919
2953
  <hr>
2920
2954
  <p><a id="getmetadata"></a></p>
2921
2955
  <h3 id="getmetadata">getMetadata()</h3>
@@ -2937,7 +2971,7 @@ but returns a <code>ClientDb</code> backed by a <code>MessagePort</code> instead
2937
2971
 
2938
2972
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>reference</code></td><td align="left"><a href="#clientstoragereference"><code>ClientStorageReference</code></a></td></tr></tbody></table></div>
2939
2973
  <h4 id="returns-71">Returns</h4>
2940
- <p><code>Promise</code>&#x3C;<code>FullMetadata</code>></p>
2974
+ <p><code>Promise</code>&#x3C;<a href="/docs/pyric-storage-reference-api/#fullmetadata"><code>FullMetadata</code></a>></p>
2941
2975
  <hr>
2942
2976
  <p><a id="getproviderconfig"></a></p>
2943
2977
  <h3 id="getproviderconfig">getProviderConfig()</h3>
@@ -2955,7 +2989,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
2955
2989
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
2956
2990
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
2957
2991
  </ul>
2958
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
2992
+ <p><code>client.ts</code> imports only the value codec
2993
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
2959
2994
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
2960
2995
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
2961
2996
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -2994,7 +3029,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
2994
3029
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
2995
3030
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
2996
3031
  </ul>
2997
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
3032
+ <p><code>client.ts</code> imports only the value codec
3033
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
2998
3034
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
2999
3035
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3000
3036
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -3043,7 +3079,7 @@ attempting user, on a throwaway branch (no live mutation).</p>
3043
3079
 
3044
3080
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>db</code></td><td align="left"><a href="#clientdb"><code>ClientDb</code></a></td></tr></tbody></table></div>
3045
3081
  <h4 id="returns-74">Returns</h4>
3046
- <p><code>Promise</code>&#x3C;<code>SandboxSnapshot</code>></p>
3082
+ <p><code>Promise</code>&#x3C;<a href="/docs/pyric-sandbox-reference-api/#sandboxsnapshot"><code>SandboxSnapshot</code></a>></p>
3047
3083
  <hr>
3048
3084
  <p><a id="getstorage"></a></p>
3049
3085
  <h3 id="getstorage">getStorage()</h3>
@@ -3161,7 +3197,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
3161
3197
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
3162
3198
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
3163
3199
  </ul>
3164
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
3200
+ <p><code>client.ts</code> imports only the value codec
3201
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
3165
3202
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
3166
3203
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3167
3204
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -3197,7 +3234,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
3197
3234
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
3198
3235
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
3199
3236
  </ul>
3200
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
3237
+ <p><code>client.ts</code> imports only the value codec
3238
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
3201
3239
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
3202
3240
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3203
3241
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -3233,7 +3271,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
3233
3271
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
3234
3272
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
3235
3273
  </ul>
3236
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
3274
+ <p><code>client.ts</code> imports only the value codec
3275
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
3237
3276
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
3238
3277
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3239
3278
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -3349,7 +3388,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
3349
3388
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
3350
3389
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
3351
3390
  </ul>
3352
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
3391
+ <p><code>client.ts</code> imports only the value codec
3392
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
3353
3393
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
3354
3394
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3355
3395
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -3370,7 +3410,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3370
3410
 
3371
3411
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>auth</code></td><td align="left"><a href="#clientauth"><code>ClientAuth</code></a></td></tr></tbody></table></div>
3372
3412
  <h4 id="returns-85">Returns</h4>
3373
- <p><code>Promise</code>&#x3C;<code>AuthUserRecord</code>[]></p>
3413
+ <p><code>Promise</code>&#x3C;<a href="/docs/pyric-auth-reference-api/#authuserrecord"><code>AuthUserRecord</code></a>[]></p>
3374
3414
  <hr>
3375
3415
  <p><a id="listworkerbranches"></a></p>
3376
3416
  <h3 id="listworkerbranches">listWorkerBranches()</h3>
@@ -3536,7 +3576,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
3536
3576
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
3537
3577
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
3538
3578
  </ul>
3539
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
3579
+ <p><code>client.ts</code> imports only the value codec
3580
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
3540
3581
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
3541
3582
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3542
3583
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -3690,6 +3731,36 @@ history batches aren’t coalescible, so it needs bounded backpressure first
3690
3731
  <h5 id="returns-97">Returns</h5>
3691
3732
  <p><code>void</code></p>
3692
3733
  <hr>
3734
+ <p><a id="resetall"></a></p>
3735
+ <h3 id="resetall">resetAll()</h3>
3736
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> resetAll</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">db</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientDb</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;{</span></span>
3737
+ <span class="line"><span style="color:#E06C75"> errors</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">[];</span></span>
3738
+ <span class="line"><span style="color:#ABB2BF">}>;</span></span></code></pre>
3739
+ <p>Sandbox-owned full reset (issue #359): <code>sandbox.resetAll()</code> on the worker.
3740
+ Clears the Firestore env, the signed-in session, and EVERY registered
3741
+ persistable service — auth users, the RTDB tree, storage objects. Resolves
3742
+ once the worker acks (all services finished clearing). This is the served
3743
+ counterpart of calling <code>sandbox.resetAll()</code> on an in-process sandbox.</p>
3744
+ <h4 id="parameters-82">Parameters</h4>
3745
+ <div class="table-scroll">
3746
+
3747
+
3748
+
3749
+
3750
+
3751
+
3752
+
3753
+
3754
+
3755
+
3756
+
3757
+
3758
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>db</code></td><td align="left"><a href="#clientdb"><code>ClientDb</code></a></td></tr></tbody></table></div>
3759
+ <h4 id="returns-98">Returns</h4>
3760
+ <p><code>Promise</code>&#x3C;{
3761
+ <code>errors</code>: <code>string</code>[];
3762
+ }></p>
3763
+ <hr>
3693
3764
  <p><a id="rtdbchild"></a></p>
3694
3765
  <h3 id="rtdbchild">rtdbChild()</h3>
3695
3766
  <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> rtdbChild</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">parent</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">RtdbRefHandle</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">path</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">RtdbRefHandle</span><span style="color:#ABB2BF">;</span></span></code></pre>
@@ -3703,12 +3774,13 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
3703
3774
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
3704
3775
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
3705
3776
  </ul>
3706
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
3777
+ <p><code>client.ts</code> imports only the value codec
3778
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
3707
3779
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
3708
3780
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3709
3781
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
3710
3782
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
3711
- <h4 id="parameters-82">Parameters</h4>
3783
+ <h4 id="parameters-83">Parameters</h4>
3712
3784
  <div class="table-scroll">
3713
3785
 
3714
3786
 
@@ -3727,7 +3799,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3727
3799
 
3728
3800
 
3729
3801
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>parent</code></td><td align="left"><a href="#rtdbrefhandle"><code>RtdbRefHandle</code></a></td></tr><tr><td align="left"><code>path</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
3730
- <h4 id="returns-98">Returns</h4>
3802
+ <h4 id="returns-99">Returns</h4>
3731
3803
  <p><a href="#rtdbrefhandle"><code>RtdbRefHandle</code></a></p>
3732
3804
  <hr>
3733
3805
  <p><a id="rtdbconnectdatabaseemulator"></a></p>
@@ -3743,12 +3815,13 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
3743
3815
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
3744
3816
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
3745
3817
  </ul>
3746
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
3818
+ <p><code>client.ts</code> imports only the value codec
3819
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
3747
3820
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
3748
3821
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3749
3822
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
3750
3823
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
3751
- <h4 id="returns-99">Returns</h4>
3824
+ <h4 id="returns-100">Returns</h4>
3752
3825
  <p><code>void</code></p>
3753
3826
  <hr>
3754
3827
  <p><a id="rtdbget"></a></p>
@@ -3764,12 +3837,13 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
3764
3837
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
3765
3838
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
3766
3839
  </ul>
3767
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
3840
+ <p><code>client.ts</code> imports only the value codec
3841
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
3768
3842
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
3769
3843
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3770
3844
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
3771
3845
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
3772
- <h4 id="parameters-83">Parameters</h4>
3846
+ <h4 id="parameters-84">Parameters</h4>
3773
3847
  <div class="table-scroll">
3774
3848
 
3775
3849
 
@@ -3784,7 +3858,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3784
3858
 
3785
3859
 
3786
3860
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>r</code></td><td align="left"><a href="#rtdbrefhandle"><code>RtdbRefHandle</code></a></td></tr></tbody></table></div>
3787
- <h4 id="returns-100">Returns</h4>
3861
+ <h4 id="returns-101">Returns</h4>
3788
3862
  <p><code>Promise</code>&#x3C;<a href="#rtdbdatasnapshot"><code>RtdbDataSnapshot</code></a>></p>
3789
3863
  <hr>
3790
3864
  <p><a id="rtdbgetdatabase"></a></p>
@@ -3800,12 +3874,13 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
3800
3874
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
3801
3875
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
3802
3876
  </ul>
3803
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
3877
+ <p><code>client.ts</code> imports only the value codec
3878
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
3804
3879
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
3805
3880
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3806
3881
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
3807
3882
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
3808
- <h4 id="parameters-84">Parameters</h4>
3883
+ <h4 id="parameters-85">Parameters</h4>
3809
3884
  <div class="table-scroll">
3810
3885
 
3811
3886
 
@@ -3824,7 +3899,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3824
3899
 
3825
3900
 
3826
3901
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>source?</code></td><td align="left"><code>string</code> | <a href="#clientdb"><code>ClientDb</code></a> | <code>URL</code></td></tr><tr><td align="left"><code>name?</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
3827
- <h4 id="returns-101">Returns</h4>
3902
+ <h4 id="returns-102">Returns</h4>
3828
3903
  <p><a href="#clientrtdb"><code>ClientRtdb</code></a></p>
3829
3904
  <hr>
3830
3905
  <p><a id="rtdboff"></a></p>
@@ -3843,12 +3918,13 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
3843
3918
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
3844
3919
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
3845
3920
  </ul>
3846
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
3921
+ <p><code>client.ts</code> imports only the value codec
3922
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
3847
3923
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
3848
3924
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3849
3925
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
3850
3926
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
3851
- <h4 id="parameters-85">Parameters</h4>
3927
+ <h4 id="parameters-86">Parameters</h4>
3852
3928
  <div class="table-scroll">
3853
3929
 
3854
3930
 
@@ -3871,7 +3947,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3871
3947
 
3872
3948
 
3873
3949
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>_r</code></td><td align="left"><a href="#rtdbrefhandle"><code>RtdbRefHandle</code></a></td></tr><tr><td align="left"><code>_eventType?</code></td><td align="left"><code>unknown</code></td></tr><tr><td align="left"><code>_callback?</code></td><td align="left"><code>unknown</code></td></tr></tbody></table></div>
3874
- <h4 id="returns-102">Returns</h4>
3950
+ <h4 id="returns-103">Returns</h4>
3875
3951
  <p><code>void</code></p>
3876
3952
  <hr>
3877
3953
  <p><a id="rtdbonvalue"></a></p>
@@ -3890,12 +3966,13 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
3890
3966
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
3891
3967
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
3892
3968
  </ul>
3893
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
3969
+ <p><code>client.ts</code> imports only the value codec
3970
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
3894
3971
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
3895
3972
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3896
3973
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
3897
3974
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
3898
- <h4 id="parameters-86">Parameters</h4>
3975
+ <h4 id="parameters-87">Parameters</h4>
3899
3976
  <div class="table-scroll">
3900
3977
 
3901
3978
 
@@ -3918,7 +3995,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3918
3995
 
3919
3996
 
3920
3997
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>r</code></td><td align="left"><a href="#rtdbrefhandle"><code>RtdbRefHandle</code></a></td></tr><tr><td align="left"><code>next</code></td><td align="left">(<code>snap</code>: <a href="#rtdbdatasnapshot"><code>RtdbDataSnapshot</code></a>) => <code>void</code></td></tr><tr><td align="left"><code>error?</code></td><td align="left">(<code>err</code>: <code>unknown</code>) => <code>void</code></td></tr></tbody></table></div>
3921
- <h4 id="returns-103">Returns</h4>
3998
+ <h4 id="returns-104">Returns</h4>
3922
3999
  <p><a href="#unsubscribe"><code>Unsubscribe</code></a></p>
3923
4000
  <hr>
3924
4001
  <p><a id="rtdbpush"></a></p>
@@ -3934,12 +4011,13 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
3934
4011
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
3935
4012
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
3936
4013
  </ul>
3937
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
4014
+ <p><code>client.ts</code> imports only the value codec
4015
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
3938
4016
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
3939
4017
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3940
4018
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
3941
4019
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
3942
- <h4 id="parameters-87">Parameters</h4>
4020
+ <h4 id="parameters-88">Parameters</h4>
3943
4021
  <div class="table-scroll">
3944
4022
 
3945
4023
 
@@ -3958,7 +4036,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3958
4036
 
3959
4037
 
3960
4038
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>r</code></td><td align="left"><a href="#rtdbrefhandle"><code>RtdbRefHandle</code></a></td></tr><tr><td align="left"><code>value?</code></td><td align="left"><code>unknown</code></td></tr></tbody></table></div>
3961
- <h4 id="returns-104">Returns</h4>
4039
+ <h4 id="returns-105">Returns</h4>
3962
4040
  <p><a href="#rtdbrefhandle"><code>RtdbRefHandle</code></a> &#x26; <code>PromiseLike</code>&#x3C;<a href="#rtdbrefhandle"><code>RtdbRefHandle</code></a>></p>
3963
4041
  <hr>
3964
4042
  <p><a id="rtdbref"></a></p>
@@ -3974,12 +4052,13 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
3974
4052
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
3975
4053
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
3976
4054
  </ul>
3977
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
4055
+ <p><code>client.ts</code> imports only the value codec
4056
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
3978
4057
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
3979
4058
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3980
4059
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
3981
4060
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
3982
- <h4 id="parameters-88">Parameters</h4>
4061
+ <h4 id="parameters-89">Parameters</h4>
3983
4062
  <div class="table-scroll">
3984
4063
 
3985
4064
 
@@ -3998,7 +4077,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3998
4077
 
3999
4078
 
4000
4079
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>db</code></td><td align="left"><a href="#clientrtdb"><code>ClientRtdb</code></a></td></tr><tr><td align="left"><code>path?</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
4001
- <h4 id="returns-105">Returns</h4>
4080
+ <h4 id="returns-106">Returns</h4>
4002
4081
  <p><a href="#rtdbrefhandle"><code>RtdbRefHandle</code></a></p>
4003
4082
  <hr>
4004
4083
  <p><a id="rtdbremove"></a></p>
@@ -4014,12 +4093,13 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
4014
4093
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
4015
4094
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
4016
4095
  </ul>
4017
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
4096
+ <p><code>client.ts</code> imports only the value codec
4097
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
4018
4098
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
4019
4099
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4020
4100
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
4021
4101
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
4022
- <h4 id="parameters-89">Parameters</h4>
4102
+ <h4 id="parameters-90">Parameters</h4>
4023
4103
  <div class="table-scroll">
4024
4104
 
4025
4105
 
@@ -4034,7 +4114,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4034
4114
 
4035
4115
 
4036
4116
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>r</code></td><td align="left"><a href="#rtdbrefhandle"><code>RtdbRefHandle</code></a></td></tr></tbody></table></div>
4037
- <h4 id="returns-106">Returns</h4>
4117
+ <h4 id="returns-107">Returns</h4>
4038
4118
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
4039
4119
  <hr>
4040
4120
  <p><a id="rtdbservertimestamp"></a></p>
@@ -4051,12 +4131,13 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
4051
4131
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
4052
4132
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
4053
4133
  </ul>
4054
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
4134
+ <p><code>client.ts</code> imports only the value codec
4135
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
4055
4136
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
4056
4137
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4057
4138
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
4058
4139
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
4059
- <h4 id="returns-107">Returns</h4>
4140
+ <h4 id="returns-108">Returns</h4>
4060
4141
  <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#ABB2BF">{</span></span>
4061
4142
  <span class="line"><span style="color:#ABB2BF">}</span></span></code></pre>
4062
4143
  <hr>
@@ -4073,12 +4154,13 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
4073
4154
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
4074
4155
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
4075
4156
  </ul>
4076
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
4157
+ <p><code>client.ts</code> imports only the value codec
4158
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
4077
4159
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
4078
4160
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4079
4161
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
4080
4162
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
4081
- <h4 id="parameters-90">Parameters</h4>
4163
+ <h4 id="parameters-91">Parameters</h4>
4082
4164
  <div class="table-scroll">
4083
4165
 
4084
4166
 
@@ -4097,7 +4179,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4097
4179
 
4098
4180
 
4099
4181
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>r</code></td><td align="left"><a href="#rtdbrefhandle"><code>RtdbRefHandle</code></a></td></tr><tr><td align="left"><code>value</code></td><td align="left"><code>unknown</code></td></tr></tbody></table></div>
4100
- <h4 id="returns-108">Returns</h4>
4182
+ <h4 id="returns-109">Returns</h4>
4101
4183
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
4102
4184
  <hr>
4103
4185
  <p><a id="rtdbupdate"></a></p>
@@ -4113,12 +4195,13 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
4113
4195
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
4114
4196
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
4115
4197
  </ul>
4116
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
4198
+ <p><code>client.ts</code> imports only the value codec
4199
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
4117
4200
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
4118
4201
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4119
4202
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
4120
4203
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
4121
- <h4 id="parameters-91">Parameters</h4>
4204
+ <h4 id="parameters-92">Parameters</h4>
4122
4205
  <div class="table-scroll">
4123
4206
 
4124
4207
 
@@ -4137,7 +4220,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4137
4220
 
4138
4221
 
4139
4222
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>r</code></td><td align="left"><a href="#rtdbrefhandle"><code>RtdbRefHandle</code></a></td></tr><tr><td align="left"><code>values</code></td><td align="left"><code>Record</code>&#x3C;<code>string</code>, <code>unknown</code>></td></tr></tbody></table></div>
4140
- <h4 id="returns-109">Returns</h4>
4223
+ <h4 id="returns-110">Returns</h4>
4141
4224
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
4142
4225
  <hr>
4143
4226
  <p><a id="runtransaction"></a></p>
@@ -4177,7 +4260,7 @@ on conflict rather than surfacing the error immediately.</p>
4177
4260
 
4178
4261
 
4179
4262
  <table><thead><tr><th align="left">Type Parameter</th></tr></thead><tbody><tr><td align="left"><code>R</code></td></tr></tbody></table></div>
4180
- <h4 id="parameters-92">Parameters</h4>
4263
+ <h4 id="parameters-93">Parameters</h4>
4181
4264
  <div class="table-scroll">
4182
4265
 
4183
4266
 
@@ -4196,14 +4279,14 @@ on conflict rather than surfacing the error immediately.</p>
4196
4279
 
4197
4280
 
4198
4281
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>db</code></td><td align="left"><a href="#clientdb"><code>ClientDb</code></a></td></tr><tr><td align="left"><code>updateFn</code></td><td align="left">(<code>txn</code>: <a href="#clienttransaction"><code>ClientTransaction</code></a>) => <code>R</code> | <code>Promise</code>&#x3C;<code>R</code>></td></tr></tbody></table></div>
4199
- <h4 id="returns-110">Returns</h4>
4282
+ <h4 id="returns-111">Returns</h4>
4200
4283
  <p><code>Promise</code>&#x3C;<code>R</code>></p>
4201
4284
  <hr>
4202
4285
  <p><a id="saveworkerbranch"></a></p>
4203
4286
  <h3 id="saveworkerbranch">saveWorkerBranch()</h3>
4204
4287
  <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> saveWorkerBranch</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">db</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientDb</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">name</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">>;</span></span></code></pre>
4205
4288
  <p>Phase 3: save the live sandbox as a named branch (a saved state bundle).</p>
4206
- <h4 id="parameters-93">Parameters</h4>
4289
+ <h4 id="parameters-94">Parameters</h4>
4207
4290
  <div class="table-scroll">
4208
4291
 
4209
4292
 
@@ -4222,7 +4305,7 @@ on conflict rather than surfacing the error immediately.</p>
4222
4305
 
4223
4306
 
4224
4307
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>db</code></td><td align="left"><a href="#clientdb"><code>ClientDb</code></a></td></tr><tr><td align="left"><code>name</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
4225
- <h4 id="returns-111">Returns</h4>
4308
+ <h4 id="returns-112">Returns</h4>
4226
4309
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
4227
4310
  <hr>
4228
4311
  <p><a id="servertimestamp"></a></p>
@@ -4238,12 +4321,13 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
4238
4321
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
4239
4322
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
4240
4323
  </ul>
4241
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
4324
+ <p><code>client.ts</code> imports only the value codec
4325
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
4242
4326
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
4243
4327
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4244
4328
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
4245
4329
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
4246
- <h4 id="returns-112">Returns</h4>
4330
+ <h4 id="returns-113">Returns</h4>
4247
4331
  <p><code>SentinelMarker</code></p>
4248
4332
  <hr>
4249
4333
  <p><a id="setdatabaserules"></a></p>
@@ -4262,12 +4346,13 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
4262
4346
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
4263
4347
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
4264
4348
  </ul>
4265
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
4349
+ <p><code>client.ts</code> imports only the value codec
4350
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
4266
4351
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
4267
4352
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4268
4353
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
4269
4354
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
4270
- <h4 id="parameters-94">Parameters</h4>
4355
+ <h4 id="parameters-95">Parameters</h4>
4271
4356
  <div class="table-scroll">
4272
4357
 
4273
4358
 
@@ -4286,7 +4371,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4286
4371
 
4287
4372
 
4288
4373
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>db</code></td><td align="left"><a href="#clientdb"><code>ClientDb</code></a> | <a href="#clientrtdb"><code>ClientRtdb</code></a></td></tr><tr><td align="left"><code>source</code></td><td align="left"><code>unknown</code></td></tr></tbody></table></div>
4289
- <h4 id="returns-113">Returns</h4>
4374
+ <h4 id="returns-114">Returns</h4>
4290
4375
  <p><code>Promise</code>&#x3C;{
4291
4376
  <code>messages</code>: <code>unknown</code>[];
4292
4377
  <code>ok</code>: <code>boolean</code>;
@@ -4311,12 +4396,13 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
4311
4396
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
4312
4397
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
4313
4398
  </ul>
4314
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
4399
+ <p><code>client.ts</code> imports only the value codec
4400
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
4315
4401
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
4316
4402
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4317
4403
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
4318
4404
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
4319
- <h4 id="parameters-95">Parameters</h4>
4405
+ <h4 id="parameters-96">Parameters</h4>
4320
4406
  <div class="table-scroll">
4321
4407
 
4322
4408
 
@@ -4347,7 +4433,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4347
4433
 
4348
4434
 
4349
4435
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>ref</code></td><td align="left"><a href="#docrefhandle"><code>DocRefHandle</code></a></td></tr><tr><td align="left"><code>data</code></td><td align="left"><code>Record</code>&#x3C;<code>string</code>, <code>unknown</code>></td></tr><tr><td align="left"><code>options?</code></td><td align="left">{ <code>merge?</code>: <code>boolean</code>; <code>mergeFields?</code>: <code>string</code>[]; }</td></tr><tr><td align="left"><code>options.merge?</code></td><td align="left"><code>boolean</code></td></tr><tr><td align="left"><code>options.mergeFields?</code></td><td align="left"><code>string</code>[]</td></tr></tbody></table></div>
4350
- <h4 id="returns-114">Returns</h4>
4436
+ <h4 id="returns-115">Returns</h4>
4351
4437
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
4352
4438
  <hr>
4353
4439
  <p><a id="setfirestorerules"></a></p>
@@ -4367,12 +4453,13 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
4367
4453
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
4368
4454
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
4369
4455
  </ul>
4370
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
4456
+ <p><code>client.ts</code> imports only the value codec
4457
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
4371
4458
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
4372
4459
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4373
4460
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
4374
4461
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
4375
- <h4 id="parameters-96">Parameters</h4>
4462
+ <h4 id="parameters-97">Parameters</h4>
4376
4463
  <div class="table-scroll">
4377
4464
 
4378
4465
 
@@ -4391,7 +4478,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4391
4478
 
4392
4479
 
4393
4480
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>db</code></td><td align="left"><a href="#clientdb"><code>ClientDb</code></a></td></tr><tr><td align="left"><code>source</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
4394
- <h4 id="returns-115">Returns</h4>
4481
+ <h4 id="returns-116">Returns</h4>
4395
4482
  <p><code>Promise</code>&#x3C;{
4396
4483
  <code>messages</code>: <code>unknown</code>[];
4397
4484
  <code>ok</code>: <code>boolean</code>;
@@ -4400,7 +4487,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4400
4487
  <hr>
4401
4488
  <p><a id="setlens"></a></p>
4402
4489
  <h3 id="setlens">setLens()</h3>
4403
- <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> setLens</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">lens</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">any</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">;</span></span></code></pre>
4490
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> setLens</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">lens</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">AuthLens</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">;</span></span></code></pre>
4404
4491
  <p>Set the default auth lens applied to subsequent Firestore DATA ops from this
4405
4492
  client (Pyric Studio). Pass <code>{ mode: 'as', uid }</code> to read/write AS a user
4406
4493
  (rules apply), <code>{ mode: 'admin' }</code> for the admin lens, or
@@ -4408,7 +4495,7 @@ client (Pyric Studio). Pass <code>{ mode: 'as', uid }</code> to read/write AS a
4408
4495
  <p>The lens is process-wide for this client module (one served page = one
4409
4496
  worker port), mirroring how Studio drives a single active identity at a time.
4410
4497
  Auth ops are unaffected — they always operate the real session.</p>
4411
- <h4 id="parameters-97">Parameters</h4>
4498
+ <h4 id="parameters-98">Parameters</h4>
4412
4499
  <div class="table-scroll">
4413
4500
 
4414
4501
 
@@ -4422,15 +4509,15 @@ Auth ops are unaffected — they always operate the real session.</p>
4422
4509
 
4423
4510
 
4424
4511
 
4425
- <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>lens</code></td><td align="left"><code>any</code></td></tr></tbody></table></div>
4426
- <h4 id="returns-116">Returns</h4>
4512
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>lens</code></td><td align="left"><a href="/docs/pyric-sandbox-reference-api/#authlens-2"><code>AuthLens</code></a></td></tr></tbody></table></div>
4513
+ <h4 id="returns-117">Returns</h4>
4427
4514
  <p><code>void</code></p>
4428
4515
  <hr>
4429
4516
  <p><a id="setopissuer"></a></p>
4430
4517
  <h3 id="setopissuer">setOpIssuer()</h3>
4431
4518
  <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> setOpIssuer</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">source</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"studio"</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">;</span></span></code></pre>
4432
4519
  <p>Declare who issues the ops this client module constructs. See _opIssuer.</p>
4433
- <h4 id="parameters-98">Parameters</h4>
4520
+ <h4 id="parameters-99">Parameters</h4>
4434
4521
  <div class="table-scroll">
4435
4522
 
4436
4523
 
@@ -4445,7 +4532,7 @@ Auth ops are unaffected — they always operate the real session.</p>
4445
4532
 
4446
4533
 
4447
4534
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>source</code></td><td align="left"><code>"studio"</code></td></tr></tbody></table></div>
4448
- <h4 id="returns-117">Returns</h4>
4535
+ <h4 id="returns-118">Returns</h4>
4449
4536
  <p><code>void</code></p>
4450
4537
  <hr>
4451
4538
  <p><a id="setpersistence"></a></p>
@@ -4455,7 +4542,7 @@ Auth ops are unaffected — they always operate the real session.</p>
4455
4542
  effective persistence is CLIENT-side (#754): the entry adapter mirrors the
4456
4543
  mode into the page’s SessionStore, which decides where — or whether — this
4457
4544
  tab’s session uid is stored for reload restore.</p>
4458
- <h4 id="parameters-99">Parameters</h4>
4545
+ <h4 id="parameters-100">Parameters</h4>
4459
4546
  <div class="table-scroll">
4460
4547
 
4461
4548
 
@@ -4474,7 +4561,7 @@ tab’s session uid is stored for reload restore.</p>
4474
4561
 
4475
4562
 
4476
4563
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>auth</code></td><td align="left"><a href="#clientauth"><code>ClientAuth</code></a></td></tr><tr><td align="left"><code>persistence</code></td><td align="left"><code>ClientPersistence</code></td></tr></tbody></table></div>
4477
- <h4 id="returns-118">Returns</h4>
4564
+ <h4 id="returns-119">Returns</h4>
4478
4565
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
4479
4566
  <hr>
4480
4567
  <p><a id="setproviderconfig"></a></p>
@@ -4493,12 +4580,13 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
4493
4580
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
4494
4581
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
4495
4582
  </ul>
4496
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
4583
+ <p><code>client.ts</code> imports only the value codec
4584
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
4497
4585
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
4498
4586
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4499
4587
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
4500
4588
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
4501
- <h4 id="parameters-100">Parameters</h4>
4589
+ <h4 id="parameters-101">Parameters</h4>
4502
4590
  <div class="table-scroll">
4503
4591
 
4504
4592
 
@@ -4521,7 +4609,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4521
4609
 
4522
4610
 
4523
4611
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>auth</code></td><td align="left"><a href="#clientauth"><code>ClientAuth</code></a></td></tr><tr><td align="left"><code>providerId</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>enabled</code></td><td align="left"><code>boolean</code></td></tr></tbody></table></div>
4524
- <h4 id="returns-119">Returns</h4>
4612
+ <h4 id="returns-120">Returns</h4>
4525
4613
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
4526
4614
  <hr>
4527
4615
  <p><a id="setrules"></a></p>
@@ -4532,7 +4620,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4532
4620
  <p>Deploy new rules to the worker’s sandbox. Active onSnapshot listeners
4533
4621
  that were allowed by the old rules may start receiving error callbacks
4534
4622
  if the new rules deny them.</p>
4535
- <h4 id="parameters-101">Parameters</h4>
4623
+ <h4 id="parameters-102">Parameters</h4>
4536
4624
  <div class="table-scroll">
4537
4625
 
4538
4626
 
@@ -4551,7 +4639,7 @@ if the new rules deny them.</p>
4551
4639
 
4552
4640
 
4553
4641
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>db</code></td><td align="left"><a href="#clientdb"><code>ClientDb</code></a></td></tr><tr><td align="left"><code>source</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
4554
- <h4 id="returns-120">Returns</h4>
4642
+ <h4 id="returns-121">Returns</h4>
4555
4643
  <p><code>Promise</code>&#x3C;{
4556
4644
  <code>warnings</code>: <code>unknown</code>[];
4557
4645
  }></p>
@@ -4569,12 +4657,13 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
4569
4657
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
4570
4658
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
4571
4659
  </ul>
4572
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
4660
+ <p><code>client.ts</code> imports only the value codec
4661
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
4573
4662
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
4574
4663
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4575
4664
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
4576
4665
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
4577
- <h4 id="parameters-102">Parameters</h4>
4666
+ <h4 id="parameters-103">Parameters</h4>
4578
4667
  <div class="table-scroll">
4579
4668
 
4580
4669
 
@@ -4589,7 +4678,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4589
4678
 
4590
4679
 
4591
4680
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>auth</code></td><td align="left"><a href="#clientauth"><code>ClientAuth</code></a></td></tr></tbody></table></div>
4592
- <h4 id="returns-121">Returns</h4>
4681
+ <h4 id="returns-122">Returns</h4>
4593
4682
  <p><code>Promise</code>&#x3C;<a href="#clientusercredential"><code>ClientUserCredential</code></a>></p>
4594
4683
  <hr>
4595
4684
  <p><a id="signinwithemailandpassword"></a></p>
@@ -4608,12 +4697,13 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
4608
4697
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
4609
4698
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
4610
4699
  </ul>
4611
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
4700
+ <p><code>client.ts</code> imports only the value codec
4701
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
4612
4702
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
4613
4703
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4614
4704
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
4615
4705
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
4616
- <h4 id="parameters-103">Parameters</h4>
4706
+ <h4 id="parameters-104">Parameters</h4>
4617
4707
  <div class="table-scroll">
4618
4708
 
4619
4709
 
@@ -4636,7 +4726,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4636
4726
 
4637
4727
 
4638
4728
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>auth</code></td><td align="left"><a href="#clientauth"><code>ClientAuth</code></a></td></tr><tr><td align="left"><code>email</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>password</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
4639
- <h4 id="returns-122">Returns</h4>
4729
+ <h4 id="returns-123">Returns</h4>
4640
4730
  <p><code>Promise</code>&#x3C;<a href="#clientusercredential"><code>ClientUserCredential</code></a>></p>
4641
4731
  <hr>
4642
4732
  <p><a id="signout"></a></p>
@@ -4652,12 +4742,13 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
4652
4742
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
4653
4743
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
4654
4744
  </ul>
4655
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
4745
+ <p><code>client.ts</code> imports only the value codec
4746
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
4656
4747
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
4657
4748
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4658
4749
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
4659
4750
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
4660
- <h4 id="parameters-104">Parameters</h4>
4751
+ <h4 id="parameters-105">Parameters</h4>
4661
4752
  <div class="table-scroll">
4662
4753
 
4663
4754
 
@@ -4672,7 +4763,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4672
4763
 
4673
4764
 
4674
4765
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>auth</code></td><td align="left"><a href="#clientauth"><code>ClientAuth</code></a></td></tr></tbody></table></div>
4675
- <h4 id="returns-123">Returns</h4>
4766
+ <h4 id="returns-124">Returns</h4>
4676
4767
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
4677
4768
  <hr>
4678
4769
  <p><a id="startafter"></a></p>
@@ -4688,12 +4779,13 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
4688
4779
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
4689
4780
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
4690
4781
  </ul>
4691
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
4782
+ <p><code>client.ts</code> imports only the value codec
4783
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
4692
4784
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
4693
4785
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4694
4786
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
4695
4787
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
4696
- <h4 id="parameters-105">Parameters</h4>
4788
+ <h4 id="parameters-106">Parameters</h4>
4697
4789
  <div class="table-scroll">
4698
4790
 
4699
4791
 
@@ -4708,7 +4800,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4708
4800
 
4709
4801
 
4710
4802
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left">…<code>values</code></td><td align="left"><code>unknown</code>[]</td></tr></tbody></table></div>
4711
- <h4 id="returns-124">Returns</h4>
4803
+ <h4 id="returns-125">Returns</h4>
4712
4804
  <p><code>QueryConstraintHandle</code></p>
4713
4805
  <hr>
4714
4806
  <p><a id="startat"></a></p>
@@ -4724,12 +4816,13 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
4724
4816
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
4725
4817
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
4726
4818
  </ul>
4727
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
4819
+ <p><code>client.ts</code> imports only the value codec
4820
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
4728
4821
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
4729
4822
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4730
4823
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
4731
4824
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
4732
- <h4 id="parameters-106">Parameters</h4>
4825
+ <h4 id="parameters-107">Parameters</h4>
4733
4826
  <div class="table-scroll">
4734
4827
 
4735
4828
 
@@ -4744,7 +4837,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4744
4837
 
4745
4838
 
4746
4839
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left">…<code>values</code></td><td align="left"><code>unknown</code>[]</td></tr></tbody></table></div>
4747
- <h4 id="returns-125">Returns</h4>
4840
+ <h4 id="returns-126">Returns</h4>
4748
4841
  <p><code>QueryConstraintHandle</code></p>
4749
4842
  <hr>
4750
4843
  <p><a id="startpresence"></a></p>
@@ -4752,7 +4845,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4752
4845
  <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> startPresence</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">opts</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">StartPresenceOptions</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">PresenceSession</span><span style="color:#ABB2BF">;</span></span></code></pre>
4753
4846
  <p>Register this page with the worker and keep the lease alive until
4754
4847
  <a href="#stop">PresenceSession.stop</a> or <code>pagehide</code>.</p>
4755
- <h4 id="parameters-107">Parameters</h4>
4848
+ <h4 id="parameters-108">Parameters</h4>
4756
4849
  <div class="table-scroll">
4757
4850
 
4758
4851
 
@@ -4767,7 +4860,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4767
4860
 
4768
4861
 
4769
4862
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>opts</code></td><td align="left"><code>StartPresenceOptions</code></td></tr></tbody></table></div>
4770
- <h4 id="returns-126">Returns</h4>
4863
+ <h4 id="returns-127">Returns</h4>
4771
4864
  <p><a href="#presencesession"><code>PresenceSession</code></a></p>
4772
4865
  <hr>
4773
4866
  <p><a id="subscribeevents"></a></p>
@@ -4780,7 +4873,7 @@ event. Returns an unsubscribe that deregisters on the worker.</p>
4780
4873
  <p>This is the live counterpart to <code>sandbox.onEvent</code> + an initial <code>history()</code>
4781
4874
  fold, collapsed into one subscription so a late subscriber never misses the
4782
4875
  backlog.</p>
4783
- <h4 id="parameters-108">Parameters</h4>
4876
+ <h4 id="parameters-109">Parameters</h4>
4784
4877
  <div class="table-scroll">
4785
4878
 
4786
4879
 
@@ -4798,8 +4891,8 @@ backlog.</p>
4798
4891
 
4799
4892
 
4800
4893
 
4801
- <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>db</code></td><td align="left"><a href="#clientdb"><code>ClientDb</code></a></td></tr><tr><td align="left"><code>callback</code></td><td align="left">(<code>events</code>: readonly <code>SandboxEvent</code>[]) => <code>void</code></td></tr></tbody></table></div>
4802
- <h4 id="returns-127">Returns</h4>
4894
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>db</code></td><td align="left"><a href="#clientdb"><code>ClientDb</code></a></td></tr><tr><td align="left"><code>callback</code></td><td align="left">(<code>events</code>: readonly <a href="/docs/pyric-sandbox-reference-api/#sandboxevent"><code>SandboxEvent</code></a>[]) => <code>void</code></td></tr></tbody></table></div>
4895
+ <h4 id="returns-128">Returns</h4>
4803
4896
  <p><a href="#unsubscribe"><code>Unsubscribe</code></a></p>
4804
4897
  <hr>
4805
4898
  <p><a id="subscribepresence"></a></p>
@@ -4807,7 +4900,7 @@ backlog.</p>
4807
4900
  <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> subscribePresence</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">db</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientDb</span><span style="color:#ABB2BF">, </span><span style="color:#61AFEF">callback</span><span style="color:#ABB2BF">: (</span><span style="color:#E06C75;font-style:italic">snapshot</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">PresenceSnapshot</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">=></span><span style="color:#E5C07B"> void</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Unsubscribe</span><span style="color:#ABB2BF">;</span></span></code></pre>
4808
4901
  <p>Subscribe to the worker’s authoritative presence snapshot. The callback
4809
4902
  fires immediately with the current snapshot, then on every change.</p>
4810
- <h4 id="parameters-109">Parameters</h4>
4903
+ <h4 id="parameters-110">Parameters</h4>
4811
4904
  <div class="table-scroll">
4812
4905
 
4813
4906
 
@@ -4826,14 +4919,14 @@ fires immediately with the current snapshot, then on every change.</p>
4826
4919
 
4827
4920
 
4828
4921
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>db</code></td><td align="left"><a href="#clientdb"><code>ClientDb</code></a></td></tr><tr><td align="left"><code>callback</code></td><td align="left">(<code>snapshot</code>: <a href="#presencesnapshot"><code>PresenceSnapshot</code></a>) => <code>void</code></td></tr></tbody></table></div>
4829
- <h4 id="returns-128">Returns</h4>
4922
+ <h4 id="returns-129">Returns</h4>
4830
4923
  <p><a href="#unsubscribe"><code>Unsubscribe</code></a></p>
4831
4924
  <hr>
4832
4925
  <p><a id="sum"></a></p>
4833
4926
  <h3 id="sum">sum()</h3>
4834
4927
  <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> sum</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">field</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">AggregateFieldDescriptor</span><span style="color:#ABB2BF">;</span></span></code></pre>
4835
4928
  <p>Factory: sum-of-<code>field</code> aggregate. Mirrors <code>pyric/firestore</code>’s <code>sum()</code>.</p>
4836
- <h4 id="parameters-110">Parameters</h4>
4929
+ <h4 id="parameters-111">Parameters</h4>
4837
4930
  <div class="table-scroll">
4838
4931
 
4839
4932
 
@@ -4848,14 +4941,14 @@ fires immediately with the current snapshot, then on every change.</p>
4848
4941
 
4849
4942
 
4850
4943
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>field</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
4851
- <h4 id="returns-129">Returns</h4>
4944
+ <h4 id="returns-130">Returns</h4>
4852
4945
  <p><code>AggregateFieldDescriptor</code></p>
4853
4946
  <hr>
4854
4947
  <p><a id="switchworkerbranch"></a></p>
4855
4948
  <h3 id="switchworkerbranch">switchWorkerBranch()</h3>
4856
4949
  <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> switchWorkerBranch</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">db</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientDb</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">name</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">>;</span></span></code></pre>
4857
4950
  <p>Phase 3 (clobber): switch the live sandbox to a named branch’s state.</p>
4858
- <h4 id="parameters-111">Parameters</h4>
4951
+ <h4 id="parameters-112">Parameters</h4>
4859
4952
  <div class="table-scroll">
4860
4953
 
4861
4954
 
@@ -4874,7 +4967,7 @@ fires immediately with the current snapshot, then on every change.</p>
4874
4967
 
4875
4968
 
4876
4969
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>db</code></td><td align="left"><a href="#clientdb"><code>ClientDb</code></a></td></tr><tr><td align="left"><code>name</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
4877
- <h4 id="returns-130">Returns</h4>
4970
+ <h4 id="returns-131">Returns</h4>
4878
4971
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
4879
4972
  <hr>
4880
4973
  <p><a id="updatedoc"></a></p>
@@ -4890,12 +4983,13 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
4890
4983
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
4891
4984
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
4892
4985
  </ul>
4893
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
4986
+ <p><code>client.ts</code> imports only the value codec
4987
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
4894
4988
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
4895
4989
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4896
4990
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
4897
4991
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
4898
- <h4 id="parameters-112">Parameters</h4>
4992
+ <h4 id="parameters-113">Parameters</h4>
4899
4993
  <div class="table-scroll">
4900
4994
 
4901
4995
 
@@ -4914,21 +5008,21 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4914
5008
 
4915
5009
 
4916
5010
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>ref</code></td><td align="left"><a href="#docrefhandle"><code>DocRefHandle</code></a></td></tr><tr><td align="left"><code>data</code></td><td align="left"><code>Record</code>&#x3C;<code>string</code>, <code>unknown</code>></td></tr></tbody></table></div>
4917
- <h4 id="returns-131">Returns</h4>
5011
+ <h4 id="returns-132">Returns</h4>
4918
5012
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
4919
5013
  <hr>
4920
5014
  <p><a id="uploadbytes"></a></p>
4921
5015
  <h3 id="uploadbytes">uploadBytes()</h3>
4922
5016
  <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> uploadBytes</span><span style="color:#ABB2BF">(</span></span>
4923
5017
  <span class="line"><span style="color:#E06C75;font-style:italic"> reference</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientStorageReference</span><span style="color:#ABB2BF">,</span></span>
4924
- <span class="line"><span style="color:#E06C75;font-style:italic"> data</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Blob</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">ArrayBuffer</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">Uint8Array</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">ArrayBufferLike</span><span style="color:#ABB2BF">>,</span></span>
5018
+ <span class="line"><span style="color:#E06C75;font-style:italic"> data</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ArrayBuffer</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">Uint8Array</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">ArrayBufferLike</span><span style="color:#ABB2BF">> | </span><span style="color:#E5C07B">Blob</span><span style="color:#ABB2BF">,</span></span>
4925
5019
  <span class="line"><span style="color:#E06C75;font-style:italic"> metadata</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientSettableMetadata</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;{</span></span>
4926
5020
  <span class="line"><span style="color:#E06C75"> metadata</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FullMetadata</span><span style="color:#ABB2BF">;</span></span>
4927
5021
  <span class="line"><span style="color:#E06C75"> ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientStorageReference</span><span style="color:#ABB2BF">;</span></span>
4928
5022
  <span class="line"><span style="color:#ABB2BF">}>;</span></span></code></pre>
4929
5023
  <p>Upload bytes at the reference’s path (replaces existing content).
4930
5024
  Mirrors <code>pyric/storage</code>’s <code>uploadBytes</code> result shape.</p>
4931
- <h4 id="parameters-113">Parameters</h4>
5025
+ <h4 id="parameters-114">Parameters</h4>
4932
5026
  <div class="table-scroll">
4933
5027
 
4934
5028
 
@@ -4950,10 +5044,10 @@ Mirrors <code>pyric/storage</code>’s <code>uploadBytes</code> result shape.</p
4950
5044
 
4951
5045
 
4952
5046
 
4953
- <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>reference</code></td><td align="left"><a href="#clientstoragereference"><code>ClientStorageReference</code></a></td></tr><tr><td align="left"><code>data</code></td><td align="left"><code>Blob</code> | <code>ArrayBuffer</code> | <code>Uint8Array</code>&#x3C;<code>ArrayBufferLike</code>></td></tr><tr><td align="left"><code>metadata?</code></td><td align="left"><a href="#clientsettablemetadata"><code>ClientSettableMetadata</code></a></td></tr></tbody></table></div>
4954
- <h4 id="returns-132">Returns</h4>
5047
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>reference</code></td><td align="left"><a href="#clientstoragereference"><code>ClientStorageReference</code></a></td></tr><tr><td align="left"><code>data</code></td><td align="left"><code>ArrayBuffer</code> | <code>Uint8Array</code>&#x3C;<code>ArrayBufferLike</code>> | <code>Blob</code></td></tr><tr><td align="left"><code>metadata?</code></td><td align="left"><a href="#clientsettablemetadata"><code>ClientSettableMetadata</code></a></td></tr></tbody></table></div>
5048
+ <h4 id="returns-133">Returns</h4>
4955
5049
  <p><code>Promise</code>&#x3C;{
4956
- <code>metadata</code>: <code>FullMetadata</code>;
5050
+ <code>metadata</code>: <a href="/docs/pyric-storage-reference-api/#fullmetadata"><code>FullMetadata</code></a>;
4957
5051
  <code>ref</code>: <a href="#clientstoragereference"><code>ClientStorageReference</code></a>;
4958
5052
  }></p>
4959
5053
  <hr>
@@ -4973,12 +5067,13 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
4973
5067
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
4974
5068
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
4975
5069
  </ul>
4976
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
5070
+ <p><code>client.ts</code> imports only the value codec
5071
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
4977
5072
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
4978
5073
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4979
5074
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
4980
5075
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
4981
- <h4 id="parameters-114">Parameters</h4>
5076
+ <h4 id="parameters-115">Parameters</h4>
4982
5077
  <div class="table-scroll">
4983
5078
 
4984
5079
 
@@ -5001,7 +5096,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
5001
5096
 
5002
5097
 
5003
5098
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>field</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>op</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>value</code></td><td align="left"><code>unknown</code></td></tr></tbody></table></div>
5004
- <h4 id="returns-133">Returns</h4>
5099
+ <h4 id="returns-134">Returns</h4>
5005
5100
  <p><code>QueryConstraintHandle</code></p>
5006
5101
  <hr>
5007
5102
  <p><a id="writebatch"></a></p>
@@ -5017,12 +5112,13 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
5017
5112
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
5018
5113
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
5019
5114
  </ul>
5020
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
5115
+ <p><code>client.ts</code> imports only the value codec
5116
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
5021
5117
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
5022
5118
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
5023
5119
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
5024
5120
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
5025
- <h4 id="parameters-115">Parameters</h4>
5121
+ <h4 id="parameters-116">Parameters</h4>
5026
5122
  <div class="table-scroll">
5027
5123
 
5028
5124
 
@@ -5037,5 +5133,5 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
5037
5133
 
5038
5134
 
5039
5135
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>db</code></td><td align="left"><a href="#clientdb"><code>ClientDb</code></a></td></tr></tbody></table></div>
5040
- <h4 id="returns-134">Returns</h4>
5041
- <p><a href="#clientwritebatch"><code>ClientWriteBatch</code></a></p> </article> </main> <aside class="doc-toc api-symbols" aria-label="API symbols"> <h2 class="doc-toc-heading">Symbols</h2> <input class="api-symbol-filter" type="search" placeholder="Filter symbols" aria-label="Filter API symbols" data-api-symbol-filter> <div class="api-symbol-groups" data-api-symbol-groups> <section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#interfaces"> Interfaces </a> <ul> <li data-api-symbol="clientauth"> <a href="#clientauth">ClientAuth</a> </li><li data-api-symbol="clientdb"> <a href="#clientdb">ClientDb</a> </li><li data-api-symbol="clientdocsnapshot"> <a href="#clientdocsnapshot">ClientDocSnapshot</a> </li><li data-api-symbol="clientfirebasestorage"> <a href="#clientfirebasestorage">ClientFirebaseStorage</a> </li><li data-api-symbol="clientquerysnapshot"> <a href="#clientquerysnapshot">ClientQuerySnapshot</a> </li><li data-api-symbol="clientrtdb"> <a href="#clientrtdb">ClientRtdb</a> </li><li data-api-symbol="clientsettablemetadata"> <a href="#clientsettablemetadata">ClientSettableMetadata</a> </li><li data-api-symbol="clientstoragereference"> <a href="#clientstoragereference">ClientStorageReference</a> </li><li data-api-symbol="clienttransaction"> <a href="#clienttransaction">ClientTransaction</a> </li><li data-api-symbol="clientuser"> <a href="#clientuser">ClientUser</a> </li><li data-api-symbol="clientusercredential"> <a href="#clientusercredential">ClientUserCredential</a> </li><li data-api-symbol="clientwritebatch"> <a href="#clientwritebatch">ClientWriteBatch</a> </li><li data-api-symbol="collrefhandle"> <a href="#collrefhandle">CollRefHandle</a> </li><li data-api-symbol="docrefhandle"> <a href="#docrefhandle">DocRefHandle</a> </li><li data-api-symbol="presencesession"> <a href="#presencesession">PresenceSession</a> </li><li data-api-symbol="presencesnapshot"> <a href="#presencesnapshot">PresenceSnapshot</a> </li><li data-api-symbol="queryhandle"> <a href="#queryhandle">QueryHandle</a> </li><li data-api-symbol="resolvedidentity"> <a href="#resolvedidentity">ResolvedIdentity</a> </li><li data-api-symbol="rtdbdatasnapshot"> <a href="#rtdbdatasnapshot">RtdbDataSnapshot</a> </li><li data-api-symbol="rtdbrefhandle"> <a href="#rtdbrefhandle">RtdbRefHandle</a> </li><li data-api-symbol="serializedidtokenresult"> <a href="#serializedidtokenresult">SerializedIdTokenResult</a> </li><li data-api-symbol="serializeduser"> <a href="#serializeduser">SerializedUser</a> </li><li data-api-symbol="serializedusercredential"> <a href="#serializedusercredential">SerializedUserCredential</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#type-aliases"> Type Aliases </a> <ul> <li data-api-symbol="anyhandle"> <a href="#anyhandle">AnyHandle</a> </li><li data-api-symbol="authpersistencemode"> <a href="#authpersistencemode">AuthPersistenceMode</a> </li><li data-api-symbol="presenceclientkind"> <a href="#presenceclientkind">PresenceClientKind</a> </li><li data-api-symbol="presencevisibility"> <a href="#presencevisibility">PresenceVisibility</a> </li><li data-api-symbol="unsubscribe()"> <a href="#unsubscribe">Unsubscribe()</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#variables"> Variables </a> <ul> <li data-api-symbol="browserlocalpersistence"> <a href="#browserlocalpersistence">browserLocalPersistence</a> </li><li data-api-symbol="browsersessionpersistence"> <a href="#browsersessionpersistence">browserSessionPersistence</a> </li><li data-api-symbol="inmemorypersistence"> <a href="#inmemorypersistence">inMemoryPersistence</a> </li><li data-api-symbol="presence_heartbeat_interval_ms"> <a href="#presence_heartbeat_interval_ms">PRESENCE_HEARTBEAT_INTERVAL_MS</a> </li><li data-api-symbol="presence_stale_ms"> <a href="#presence_stale_ms">PRESENCE_STALE_MS</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#functions"> Functions </a> <ul> <li data-api-symbol="acceptprovidercredential()"> <a href="#acceptprovidercredential">acceptProviderCredential()</a> </li><li data-api-symbol="adddoc()"> <a href="#adddoc">addDoc()</a> </li><li data-api-symbol="adminclearusers()"> <a href="#adminclearusers">adminClearUsers()</a> </li><li data-api-symbol="admincreateuser()"> <a href="#admincreateuser">adminCreateUser()</a> </li><li data-api-symbol="admindeletedocument()"> <a href="#admindeletedocument">adminDeleteDocument()</a> </li><li data-api-symbol="admindeletertdbvalue()"> <a href="#admindeletertdbvalue">adminDeleteRtdbValue()</a> </li><li data-api-symbol="admindeleteuser()"> <a href="#admindeleteuser">adminDeleteUser()</a> </li><li data-api-symbol="admingetdocument()"> <a href="#admingetdocument">adminGetDocument()</a> </li><li data-api-symbol="adminlistdocuments()"> <a href="#adminlistdocuments">adminListDocuments()</a> </li><li data-api-symbol="adminreadrtdbstate()"> <a href="#adminreadrtdbstate">adminReadRtdbState()</a> </li><li data-api-symbol="adminreadstate()"> <a href="#adminreadstate">adminReadState()</a> </li><li data-api-symbol="adminsetdocument()"> <a href="#adminsetdocument">adminSetDocument()</a> </li><li data-api-symbol="adminsetrtdbvalue()"> <a href="#adminsetrtdbvalue">adminSetRtdbValue()</a> </li><li data-api-symbol="adminsubscribertdbvalue()"> <a href="#adminsubscribertdbvalue">adminSubscribeRtdbValue()</a> </li><li data-api-symbol="adminupdatertdbvalue()"> <a href="#adminupdatertdbvalue">adminUpdateRtdbValue()</a> </li><li data-api-symbol="adminupdateuser()"> <a href="#adminupdateuser">adminUpdateUser()</a> </li><li data-api-symbol="and()"> <a href="#and">and()</a> </li><li data-api-symbol="arrayremove()"> <a href="#arrayremove">arrayRemove()</a> </li><li data-api-symbol="arrayunion()"> <a href="#arrayunion">arrayUnion()</a> </li><li data-api-symbol="average()"> <a href="#average">average()</a> </li><li data-api-symbol="calltool()"> <a href="#calltool">callTool()</a> </li><li data-api-symbol="collection()"> <a href="#collection">collection()</a> </li><li data-api-symbol="collectiongroup()"> <a href="#collectiongroup">collectionGroup()</a> </li><li data-api-symbol="connectauthemulator()"> <a href="#connectauthemulator">connectAuthEmulator()</a> </li><li data-api-symbol="count()"> <a href="#count">count()</a> </li><li data-api-symbol="createuserwithemailandpassword()"> <a href="#createuserwithemailandpassword">createUserWithEmailAndPassword()</a> </li><li data-api-symbol="deletedoc()"> <a href="#deletedoc">deleteDoc()</a> </li><li data-api-symbol="deletefield()"> <a href="#deletefield">deleteField()</a> </li><li data-api-symbol="deleteobject()"> <a href="#deleteobject">deleteObject()</a> </li><li data-api-symbol="deleteworkerbranch()"> <a href="#deleteworkerbranch">deleteWorkerBranch()</a> </li><li data-api-symbol="doc()"> <a href="#doc">doc()</a> </li><li data-api-symbol="endat()"> <a href="#endat">endAt()</a> </li><li data-api-symbol="endbefore()"> <a href="#endbefore">endBefore()</a> </li><li data-api-symbol="eventhistory()"> <a href="#eventhistory">eventHistory()</a> </li><li data-api-symbol="exportworkerstate()"> <a href="#exportworkerstate">exportWorkerState()</a> </li><li data-api-symbol="getactiverules()"> <a href="#getactiverules">getActiveRules()</a> </li><li data-api-symbol="getaggregatefromserver()"> <a href="#getaggregatefromserver">getAggregateFromServer()</a> </li><li data-api-symbol="getauth()"> <a href="#getauth">getAuth()</a> </li><li data-api-symbol="getblob()"> <a href="#getblob">getBlob()</a> </li><li data-api-symbol="getbytes()"> <a href="#getbytes">getBytes()</a> </li><li data-api-symbol="getcountfromserver()"> <a href="#getcountfromserver">getCountFromServer()</a> </li><li data-api-symbol="getdoc()"> <a href="#getdoc">getDoc()</a> </li><li data-api-symbol="getdocs()"> <a href="#getdocs">getDocs()</a> </li><li data-api-symbol="getdownloadurl()"> <a href="#getdownloadurl">getDownloadURL()</a> </li><li data-api-symbol="getfirestore()"> <a href="#getfirestore">getFirestore()</a> </li><li data-api-symbol="getidtoken()"> <a href="#getidtoken-1">getIdToken()</a> </li><li data-api-symbol="getidtokenresult()"> <a href="#getidtokenresult-1">getIdTokenResult()</a> </li><li data-api-symbol="getlens()"> <a href="#getlens">getLens()</a> </li><li data-api-symbol="getmetadata()"> <a href="#getmetadata">getMetadata()</a> </li><li data-api-symbol="getproviderconfig()"> <a href="#getproviderconfig">getProviderConfig()</a> </li><li data-api-symbol="getrulesstatus()"> <a href="#getrulesstatus">getRulesStatus()</a> </li><li data-api-symbol="getsnapshot()"> <a href="#getsnapshot">getSnapshot()</a> </li><li data-api-symbol="getstorage()"> <a href="#getstorage">getStorage()</a> </li><li data-api-symbol="getworkerinstanceid()"> <a href="#getworkerinstanceid">getWorkerInstanceId()</a> </li><li data-api-symbol="getworkerversion()"> <a href="#getworkerversion">getWorkerVersion()</a> </li><li data-api-symbol="importworkerstate()"> <a href="#importworkerstate">importWorkerState()</a> </li><li data-api-symbol="increment()"> <a href="#increment">increment()</a> </li><li data-api-symbol="limit()"> <a href="#limit">limit()</a> </li><li data-api-symbol="limittolast()"> <a href="#limittolast">limitToLast()</a> </li><li data-api-symbol="listall()"> <a href="#listall">listAll()</a> </li><li data-api-symbol="listrootcollections()"> <a href="#listrootcollections">listRootCollections()</a> </li><li data-api-symbol="listsubcollections()"> <a href="#listsubcollections">listSubcollections()</a> </li><li data-api-symbol="listusers()"> <a href="#listusers">listUsers()</a> </li><li data-api-symbol="listworkerbranches()"> <a href="#listworkerbranches">listWorkerBranches()</a> </li><li data-api-symbol="mintpresenceclientid()"> <a href="#mintpresenceclientid">mintPresenceClientId()</a> </li><li data-api-symbol="onauthstatechanged()"> <a href="#onauthstatechanged">onAuthStateChanged()</a> </li><li data-api-symbol="onidtokenchanged()"> <a href="#onidtokenchanged">onIdTokenChanged()</a> </li><li data-api-symbol="onsnapshot()"> <a href="#onsnapshot">onSnapshot()</a> </li><li data-api-symbol="or()"> <a href="#or">or()</a> </li><li data-api-symbol="orderby()"> <a href="#orderby">orderBy()</a> </li><li data-api-symbol="query()"> <a href="#query">query()</a> </li><li data-api-symbol="ref()"> <a href="#ref">ref()</a> </li><li data-api-symbol="relayworkerop()"> <a href="#relayworkerop">relayWorkerOp()</a> </li><li data-api-symbol="relayworkersub()"> <a href="#relayworkersub">relayWorkerSub()</a> </li><li data-api-symbol="rtdbchild()"> <a href="#rtdbchild">rtdbChild()</a> </li><li data-api-symbol="rtdbconnectdatabaseemulator()"> <a href="#rtdbconnectdatabaseemulator">rtdbConnectDatabaseEmulator()</a> </li><li data-api-symbol="rtdbget()"> <a href="#rtdbget">rtdbGet()</a> </li><li data-api-symbol="rtdbgetdatabase()"> <a href="#rtdbgetdatabase">rtdbGetDatabase()</a> </li><li data-api-symbol="rtdboff()"> <a href="#rtdboff">rtdbOff()</a> </li><li data-api-symbol="rtdbonvalue()"> <a href="#rtdbonvalue">rtdbOnValue()</a> </li><li data-api-symbol="rtdbpush()"> <a href="#rtdbpush">rtdbPush()</a> </li><li data-api-symbol="rtdbref()"> <a href="#rtdbref">rtdbRef()</a> </li><li data-api-symbol="rtdbremove()"> <a href="#rtdbremove">rtdbRemove()</a> </li><li data-api-symbol="rtdbservertimestamp()"> <a href="#rtdbservertimestamp">rtdbServerTimestamp()</a> </li><li data-api-symbol="rtdbset()"> <a href="#rtdbset">rtdbSet()</a> </li><li data-api-symbol="rtdbupdate()"> <a href="#rtdbupdate">rtdbUpdate()</a> </li><li data-api-symbol="runtransaction()"> <a href="#runtransaction">runTransaction()</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#multi-tab-correctness--read-set-validation--retry"> MULTI-TAB CORRECTNESS — READ-SET VALIDATION + RETRY </a> <ul> <li data-api-symbol="saveworkerbranch()"> <a href="#saveworkerbranch">saveWorkerBranch()</a> </li><li data-api-symbol="servertimestamp()"> <a href="#servertimestamp">serverTimestamp()</a> </li><li data-api-symbol="setdatabaserules()"> <a href="#setdatabaserules">setDatabaseRules()</a> </li><li data-api-symbol="setdoc()"> <a href="#setdoc">setDoc()</a> </li><li data-api-symbol="setfirestorerules()"> <a href="#setfirestorerules">setFirestoreRules()</a> </li><li data-api-symbol="setlens()"> <a href="#setlens">setLens()</a> </li><li data-api-symbol="setopissuer()"> <a href="#setopissuer">setOpIssuer()</a> </li><li data-api-symbol="setpersistence()"> <a href="#setpersistence">setPersistence()</a> </li><li data-api-symbol="setproviderconfig()"> <a href="#setproviderconfig">setProviderConfig()</a> </li><li data-api-symbol="setrules()"> <a href="#setrules">setRules()</a> </li><li data-api-symbol="signinanonymously()"> <a href="#signinanonymously">signInAnonymously()</a> </li><li data-api-symbol="signinwithemailandpassword()"> <a href="#signinwithemailandpassword">signInWithEmailAndPassword()</a> </li><li data-api-symbol="signout()"> <a href="#signout">signOut()</a> </li><li data-api-symbol="startafter()"> <a href="#startafter">startAfter()</a> </li><li data-api-symbol="startat()"> <a href="#startat">startAt()</a> </li><li data-api-symbol="startpresence()"> <a href="#startpresence">startPresence()</a> </li><li data-api-symbol="subscribeevents()"> <a href="#subscribeevents">subscribeEvents()</a> </li><li data-api-symbol="subscribepresence()"> <a href="#subscribepresence">subscribePresence()</a> </li><li data-api-symbol="sum()"> <a href="#sum">sum()</a> </li><li data-api-symbol="switchworkerbranch()"> <a href="#switchworkerbranch">switchWorkerBranch()</a> </li><li data-api-symbol="updatedoc()"> <a href="#updatedoc">updateDoc()</a> </li><li data-api-symbol="uploadbytes()"> <a href="#uploadbytes">uploadBytes()</a> </li><li data-api-symbol="where()"> <a href="#where">where()</a> </li><li data-api-symbol="writebatch()"> <a href="#writebatch">writeBatch()</a> </li> </ul> </section> <p class="api-symbol-empty" data-api-symbol-empty hidden>No matching symbols</p> </div> </aside> </div> <script type="module">const a=document.querySelector("[data-api-symbol-filter]"),d=[...document.querySelectorAll("[data-api-symbol-group]")],n=document.querySelector("[data-api-symbol-empty]");a?.addEventListener("input",()=>{const t=a.value.trim().toLowerCase();let o=0;for(const i of d){let e=0;i.querySelectorAll("[data-api-symbol]").forEach(l=>{const r=!t||(l.dataset.apiSymbol??"").includes(t);l.hidden=!r,r&&e++}),i.hidden=e===0,o+=e}n&&(n.hidden=o>0)});</script> <script type="module">const s=new Map;document.querySelectorAll('.doc-toc a[href^="#"]').forEach(t=>s.set(decodeURIComponent(t.hash.slice(1)),t));if(s.size>0){const t=new Set,n=()=>{let o=null;for(const e of s.keys())if(t.has(e)){o=e;break}s.forEach((e,c)=>e.classList.toggle("active",c===o))},r=new IntersectionObserver(o=>{for(const e of o)e.isIntersecting?t.add(e.target.id):t.delete(e.target.id);n()},{rootMargin:"-72px 0px -60% 0px"});s.forEach((o,e)=>{const c=document.getElementById(e);c&&r.observe(c)})}</script> <script type="module">document.querySelector('.studio__nav [aria-current="page"]')?.scrollIntoView({block:"nearest",inline:"center"});</script> </body> </html>
5136
+ <h4 id="returns-135">Returns</h4>
5137
+ <p><a href="#clientwritebatch"><code>ClientWriteBatch</code></a></p> </article> </main> <aside class="doc-toc api-symbols" aria-label="API symbols"> <h2 class="doc-toc-heading">Symbols</h2> <input class="api-symbol-filter" type="search" placeholder="Filter symbols" aria-label="Filter API symbols" data-api-symbol-filter> <div class="api-symbol-groups" data-api-symbol-groups> <section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#interfaces"> Interfaces </a> <ul> <li data-api-symbol="clientauth"> <a href="#clientauth">ClientAuth</a> </li><li data-api-symbol="clientdb"> <a href="#clientdb">ClientDb</a> </li><li data-api-symbol="clientdocsnapshot"> <a href="#clientdocsnapshot">ClientDocSnapshot</a> </li><li data-api-symbol="clientfirebasestorage"> <a href="#clientfirebasestorage">ClientFirebaseStorage</a> </li><li data-api-symbol="clientquerysnapshot"> <a href="#clientquerysnapshot">ClientQuerySnapshot</a> </li><li data-api-symbol="clientrtdb"> <a href="#clientrtdb">ClientRtdb</a> </li><li data-api-symbol="clientsettablemetadata"> <a href="#clientsettablemetadata">ClientSettableMetadata</a> </li><li data-api-symbol="clientstoragereference"> <a href="#clientstoragereference">ClientStorageReference</a> </li><li data-api-symbol="clienttransaction"> <a href="#clienttransaction">ClientTransaction</a> </li><li data-api-symbol="clientuser"> <a href="#clientuser">ClientUser</a> </li><li data-api-symbol="clientusercredential"> <a href="#clientusercredential">ClientUserCredential</a> </li><li data-api-symbol="clientwritebatch"> <a href="#clientwritebatch">ClientWriteBatch</a> </li><li data-api-symbol="collrefhandle"> <a href="#collrefhandle">CollRefHandle</a> </li><li data-api-symbol="docrefhandle"> <a href="#docrefhandle">DocRefHandle</a> </li><li data-api-symbol="presencesession"> <a href="#presencesession">PresenceSession</a> </li><li data-api-symbol="presencesnapshot"> <a href="#presencesnapshot">PresenceSnapshot</a> </li><li data-api-symbol="queryhandle"> <a href="#queryhandle">QueryHandle</a> </li><li data-api-symbol="resolvedidentity"> <a href="#resolvedidentity">ResolvedIdentity</a> </li><li data-api-symbol="rtdbdatasnapshot"> <a href="#rtdbdatasnapshot">RtdbDataSnapshot</a> </li><li data-api-symbol="rtdbrefhandle"> <a href="#rtdbrefhandle">RtdbRefHandle</a> </li><li data-api-symbol="serializedidtokenresult"> <a href="#serializedidtokenresult">SerializedIdTokenResult</a> </li><li data-api-symbol="serializeduser"> <a href="#serializeduser">SerializedUser</a> </li><li data-api-symbol="serializedusercredential"> <a href="#serializedusercredential">SerializedUserCredential</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#type-aliases"> Type Aliases </a> <ul> <li data-api-symbol="anyhandle"> <a href="#anyhandle">AnyHandle</a> </li><li data-api-symbol="authpersistencemode"> <a href="#authpersistencemode">AuthPersistenceMode</a> </li><li data-api-symbol="presenceclientkind"> <a href="#presenceclientkind">PresenceClientKind</a> </li><li data-api-symbol="presencevisibility"> <a href="#presencevisibility">PresenceVisibility</a> </li><li data-api-symbol="unsubscribe()"> <a href="#unsubscribe">Unsubscribe()</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#variables"> Variables </a> <ul> <li data-api-symbol="browserlocalpersistence"> <a href="#browserlocalpersistence">browserLocalPersistence</a> </li><li data-api-symbol="browsersessionpersistence"> <a href="#browsersessionpersistence">browserSessionPersistence</a> </li><li data-api-symbol="inmemorypersistence"> <a href="#inmemorypersistence">inMemoryPersistence</a> </li><li data-api-symbol="presence_heartbeat_interval_ms"> <a href="#presence_heartbeat_interval_ms">PRESENCE_HEARTBEAT_INTERVAL_MS</a> </li><li data-api-symbol="presence_stale_ms"> <a href="#presence_stale_ms">PRESENCE_STALE_MS</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#functions"> Functions </a> <ul> <li data-api-symbol="acceptprovidercredential()"> <a href="#acceptprovidercredential">acceptProviderCredential()</a> </li><li data-api-symbol="adddoc()"> <a href="#adddoc">addDoc()</a> </li><li data-api-symbol="adminclearusers()"> <a href="#adminclearusers">adminClearUsers()</a> </li><li data-api-symbol="admincreateuser()"> <a href="#admincreateuser">adminCreateUser()</a> </li><li data-api-symbol="admindeletedocument()"> <a href="#admindeletedocument">adminDeleteDocument()</a> </li><li data-api-symbol="admindeletertdbvalue()"> <a href="#admindeletertdbvalue">adminDeleteRtdbValue()</a> </li><li data-api-symbol="admindeleteuser()"> <a href="#admindeleteuser">adminDeleteUser()</a> </li><li data-api-symbol="admingetdocument()"> <a href="#admingetdocument">adminGetDocument()</a> </li><li data-api-symbol="adminlistdocuments()"> <a href="#adminlistdocuments">adminListDocuments()</a> </li><li data-api-symbol="adminreadrtdbstate()"> <a href="#adminreadrtdbstate">adminReadRtdbState()</a> </li><li data-api-symbol="adminreadstate()"> <a href="#adminreadstate">adminReadState()</a> </li><li data-api-symbol="adminsetdocument()"> <a href="#adminsetdocument">adminSetDocument()</a> </li><li data-api-symbol="adminsetrtdbvalue()"> <a href="#adminsetrtdbvalue">adminSetRtdbValue()</a> </li><li data-api-symbol="adminsubscribertdbvalue()"> <a href="#adminsubscribertdbvalue">adminSubscribeRtdbValue()</a> </li><li data-api-symbol="adminupdatertdbvalue()"> <a href="#adminupdatertdbvalue">adminUpdateRtdbValue()</a> </li><li data-api-symbol="adminupdateuser()"> <a href="#adminupdateuser">adminUpdateUser()</a> </li><li data-api-symbol="and()"> <a href="#and">and()</a> </li><li data-api-symbol="arrayremove()"> <a href="#arrayremove">arrayRemove()</a> </li><li data-api-symbol="arrayunion()"> <a href="#arrayunion">arrayUnion()</a> </li><li data-api-symbol="average()"> <a href="#average">average()</a> </li><li data-api-symbol="calltool()"> <a href="#calltool">callTool()</a> </li><li data-api-symbol="collection()"> <a href="#collection">collection()</a> </li><li data-api-symbol="collectiongroup()"> <a href="#collectiongroup">collectionGroup()</a> </li><li data-api-symbol="connectauthemulator()"> <a href="#connectauthemulator">connectAuthEmulator()</a> </li><li data-api-symbol="count()"> <a href="#count">count()</a> </li><li data-api-symbol="createuserwithemailandpassword()"> <a href="#createuserwithemailandpassword">createUserWithEmailAndPassword()</a> </li><li data-api-symbol="deletedoc()"> <a href="#deletedoc">deleteDoc()</a> </li><li data-api-symbol="deletefield()"> <a href="#deletefield">deleteField()</a> </li><li data-api-symbol="deleteobject()"> <a href="#deleteobject">deleteObject()</a> </li><li data-api-symbol="deleteworkerbranch()"> <a href="#deleteworkerbranch">deleteWorkerBranch()</a> </li><li data-api-symbol="doc()"> <a href="#doc">doc()</a> </li><li data-api-symbol="endat()"> <a href="#endat">endAt()</a> </li><li data-api-symbol="endbefore()"> <a href="#endbefore">endBefore()</a> </li><li data-api-symbol="eventhistory()"> <a href="#eventhistory">eventHistory()</a> </li><li data-api-symbol="exportworkerstate()"> <a href="#exportworkerstate">exportWorkerState()</a> </li><li data-api-symbol="getactiverules()"> <a href="#getactiverules">getActiveRules()</a> </li><li data-api-symbol="getaggregatefromserver()"> <a href="#getaggregatefromserver">getAggregateFromServer()</a> </li><li data-api-symbol="getauth()"> <a href="#getauth">getAuth()</a> </li><li data-api-symbol="getblob()"> <a href="#getblob">getBlob()</a> </li><li data-api-symbol="getbytes()"> <a href="#getbytes">getBytes()</a> </li><li data-api-symbol="getcountfromserver()"> <a href="#getcountfromserver">getCountFromServer()</a> </li><li data-api-symbol="getdoc()"> <a href="#getdoc">getDoc()</a> </li><li data-api-symbol="getdocs()"> <a href="#getdocs">getDocs()</a> </li><li data-api-symbol="getdownloadurl()"> <a href="#getdownloadurl">getDownloadURL()</a> </li><li data-api-symbol="getfirestore()"> <a href="#getfirestore">getFirestore()</a> </li><li data-api-symbol="getidtoken()"> <a href="#getidtoken-1">getIdToken()</a> </li><li data-api-symbol="getidtokenresult()"> <a href="#getidtokenresult-1">getIdTokenResult()</a> </li><li data-api-symbol="getlens()"> <a href="#getlens">getLens()</a> </li><li data-api-symbol="getmetadata()"> <a href="#getmetadata">getMetadata()</a> </li><li data-api-symbol="getproviderconfig()"> <a href="#getproviderconfig">getProviderConfig()</a> </li><li data-api-symbol="getrulesstatus()"> <a href="#getrulesstatus">getRulesStatus()</a> </li><li data-api-symbol="getsnapshot()"> <a href="#getsnapshot">getSnapshot()</a> </li><li data-api-symbol="getstorage()"> <a href="#getstorage">getStorage()</a> </li><li data-api-symbol="getworkerinstanceid()"> <a href="#getworkerinstanceid">getWorkerInstanceId()</a> </li><li data-api-symbol="getworkerversion()"> <a href="#getworkerversion">getWorkerVersion()</a> </li><li data-api-symbol="importworkerstate()"> <a href="#importworkerstate">importWorkerState()</a> </li><li data-api-symbol="increment()"> <a href="#increment">increment()</a> </li><li data-api-symbol="limit()"> <a href="#limit">limit()</a> </li><li data-api-symbol="limittolast()"> <a href="#limittolast">limitToLast()</a> </li><li data-api-symbol="listall()"> <a href="#listall">listAll()</a> </li><li data-api-symbol="listrootcollections()"> <a href="#listrootcollections">listRootCollections()</a> </li><li data-api-symbol="listsubcollections()"> <a href="#listsubcollections">listSubcollections()</a> </li><li data-api-symbol="listusers()"> <a href="#listusers">listUsers()</a> </li><li data-api-symbol="listworkerbranches()"> <a href="#listworkerbranches">listWorkerBranches()</a> </li><li data-api-symbol="mintpresenceclientid()"> <a href="#mintpresenceclientid">mintPresenceClientId()</a> </li><li data-api-symbol="onauthstatechanged()"> <a href="#onauthstatechanged">onAuthStateChanged()</a> </li><li data-api-symbol="onidtokenchanged()"> <a href="#onidtokenchanged">onIdTokenChanged()</a> </li><li data-api-symbol="onsnapshot()"> <a href="#onsnapshot">onSnapshot()</a> </li><li data-api-symbol="or()"> <a href="#or">or()</a> </li><li data-api-symbol="orderby()"> <a href="#orderby">orderBy()</a> </li><li data-api-symbol="query()"> <a href="#query">query()</a> </li><li data-api-symbol="ref()"> <a href="#ref">ref()</a> </li><li data-api-symbol="relayworkerop()"> <a href="#relayworkerop">relayWorkerOp()</a> </li><li data-api-symbol="relayworkersub()"> <a href="#relayworkersub">relayWorkerSub()</a> </li><li data-api-symbol="resetall()"> <a href="#resetall">resetAll()</a> </li><li data-api-symbol="rtdbchild()"> <a href="#rtdbchild">rtdbChild()</a> </li><li data-api-symbol="rtdbconnectdatabaseemulator()"> <a href="#rtdbconnectdatabaseemulator">rtdbConnectDatabaseEmulator()</a> </li><li data-api-symbol="rtdbget()"> <a href="#rtdbget">rtdbGet()</a> </li><li data-api-symbol="rtdbgetdatabase()"> <a href="#rtdbgetdatabase">rtdbGetDatabase()</a> </li><li data-api-symbol="rtdboff()"> <a href="#rtdboff">rtdbOff()</a> </li><li data-api-symbol="rtdbonvalue()"> <a href="#rtdbonvalue">rtdbOnValue()</a> </li><li data-api-symbol="rtdbpush()"> <a href="#rtdbpush">rtdbPush()</a> </li><li data-api-symbol="rtdbref()"> <a href="#rtdbref">rtdbRef()</a> </li><li data-api-symbol="rtdbremove()"> <a href="#rtdbremove">rtdbRemove()</a> </li><li data-api-symbol="rtdbservertimestamp()"> <a href="#rtdbservertimestamp">rtdbServerTimestamp()</a> </li><li data-api-symbol="rtdbset()"> <a href="#rtdbset">rtdbSet()</a> </li><li data-api-symbol="rtdbupdate()"> <a href="#rtdbupdate">rtdbUpdate()</a> </li><li data-api-symbol="runtransaction()"> <a href="#runtransaction">runTransaction()</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#multi-tab-correctness--read-set-validation--retry"> MULTI-TAB CORRECTNESS — READ-SET VALIDATION + RETRY </a> <ul> <li data-api-symbol="saveworkerbranch()"> <a href="#saveworkerbranch">saveWorkerBranch()</a> </li><li data-api-symbol="servertimestamp()"> <a href="#servertimestamp">serverTimestamp()</a> </li><li data-api-symbol="setdatabaserules()"> <a href="#setdatabaserules">setDatabaseRules()</a> </li><li data-api-symbol="setdoc()"> <a href="#setdoc">setDoc()</a> </li><li data-api-symbol="setfirestorerules()"> <a href="#setfirestorerules">setFirestoreRules()</a> </li><li data-api-symbol="setlens()"> <a href="#setlens">setLens()</a> </li><li data-api-symbol="setopissuer()"> <a href="#setopissuer">setOpIssuer()</a> </li><li data-api-symbol="setpersistence()"> <a href="#setpersistence">setPersistence()</a> </li><li data-api-symbol="setproviderconfig()"> <a href="#setproviderconfig">setProviderConfig()</a> </li><li data-api-symbol="setrules()"> <a href="#setrules">setRules()</a> </li><li data-api-symbol="signinanonymously()"> <a href="#signinanonymously">signInAnonymously()</a> </li><li data-api-symbol="signinwithemailandpassword()"> <a href="#signinwithemailandpassword">signInWithEmailAndPassword()</a> </li><li data-api-symbol="signout()"> <a href="#signout">signOut()</a> </li><li data-api-symbol="startafter()"> <a href="#startafter">startAfter()</a> </li><li data-api-symbol="startat()"> <a href="#startat">startAt()</a> </li><li data-api-symbol="startpresence()"> <a href="#startpresence">startPresence()</a> </li><li data-api-symbol="subscribeevents()"> <a href="#subscribeevents">subscribeEvents()</a> </li><li data-api-symbol="subscribepresence()"> <a href="#subscribepresence">subscribePresence()</a> </li><li data-api-symbol="sum()"> <a href="#sum">sum()</a> </li><li data-api-symbol="switchworkerbranch()"> <a href="#switchworkerbranch">switchWorkerBranch()</a> </li><li data-api-symbol="updatedoc()"> <a href="#updatedoc">updateDoc()</a> </li><li data-api-symbol="uploadbytes()"> <a href="#uploadbytes">uploadBytes()</a> </li><li data-api-symbol="where()"> <a href="#where">where()</a> </li><li data-api-symbol="writebatch()"> <a href="#writebatch">writeBatch()</a> </li> </ul> </section> <p class="api-symbol-empty" data-api-symbol-empty hidden>No matching symbols</p> </div> </aside> </div> <script type="module">const a=document.querySelector("[data-api-symbol-filter]"),d=[...document.querySelectorAll("[data-api-symbol-group]")],n=document.querySelector("[data-api-symbol-empty]");a?.addEventListener("input",()=>{const t=a.value.trim().toLowerCase();let o=0;for(const i of d){let e=0;i.querySelectorAll("[data-api-symbol]").forEach(l=>{const r=!t||(l.dataset.apiSymbol??"").includes(t);l.hidden=!r,r&&e++}),i.hidden=e===0,o+=e}n&&(n.hidden=o>0)});</script> <script type="module">const s=new Map;document.querySelectorAll('.doc-toc a[href^="#"]').forEach(t=>s.set(decodeURIComponent(t.hash.slice(1)),t));if(s.size>0){const t=new Set,n=()=>{let o=null;for(const e of s.keys())if(t.has(e)){o=e;break}s.forEach((e,c)=>e.classList.toggle("active",c===o))},r=new IntersectionObserver(o=>{for(const e of o)e.isIntersecting?t.add(e.target.id):t.delete(e.target.id);n()},{rootMargin:"-72px 0px -60% 0px"});s.forEach((o,e)=>{const c=document.getElementById(e);c&&r.observe(c)})}</script> <script type="module">document.querySelector('.studio__nav [aria-current="page"]')?.scrollIntoView({block:"nearest",inline:"center"});</script> </body> </html>