@pyric/cli 0.1.0-alpha.11 → 0.1.0-alpha.13

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 (424) hide show
  1. package/dist/cli/serve.js +4 -4
  2. package/dist/cli/serve.js.map +1 -1
  3. package/dist/conformance/.generated/can-i-use-browser.d.ts.map +1 -1
  4. package/dist/conformance/.generated/can-i-use-browser.js +1 -1
  5. package/dist/conformance/.generated/can-i-use-browser.js.map +1 -1
  6. package/dist/conformance/.generated/can-i-use.d.ts.map +1 -1
  7. package/dist/conformance/.generated/can-i-use.js +2 -2
  8. package/dist/conformance/.generated/can-i-use.js.map +1 -1
  9. package/dist/serve/bundler.d.ts +13 -8
  10. package/dist/serve/bundler.d.ts.map +1 -1
  11. package/dist/serve/bundler.js +31 -36
  12. package/dist/serve/bundler.js.map +1 -1
  13. package/dist/serve/docs-ui/docs/_rhythm/index.html +1 -1
  14. package/dist/serve/docs-ui/docs/agent/set-up-your-agent/index.html +1 -1
  15. package/dist/serve/docs-ui/docs/agent/watch-and-review/index.html +1 -1
  16. package/dist/serve/docs-ui/docs/agent/work-with-an-agent/index.html +1 -1
  17. package/dist/serve/docs-ui/docs/ai-compat/index.html +1 -1
  18. package/dist/serve/docs-ui/docs/api-reference/index.html +2 -2
  19. package/dist/serve/docs-ui/docs/api-reference.md +1 -1
  20. package/dist/serve/docs-ui/docs/app-compat/index.html +1 -1
  21. package/dist/serve/docs-ui/docs/auth-compat/index.html +1 -1
  22. package/dist/serve/docs-ui/docs/build/ai-logic/index.html +44 -22
  23. package/dist/serve/docs-ui/docs/build/ai-logic.md +69 -21
  24. package/dist/serve/docs-ui/docs/build/authentication/index.html +1 -1
  25. package/dist/serve/docs-ui/docs/build/cloud-firestore/index.html +1 -1
  26. package/dist/serve/docs-ui/docs/build/cloud-messaging/index.html +1 -1
  27. package/dist/serve/docs-ui/docs/build/cloud-storage/index.html +1 -1
  28. package/dist/serve/docs-ui/docs/build/realtime-database/index.html +1 -1
  29. package/dist/serve/docs-ui/docs/conformance-scores/index.html +1 -1
  30. package/dist/serve/docs-ui/docs/create-pyric-reference-api/index.html +1 -1
  31. package/dist/serve/docs-ui/docs/database-compat/index.html +1 -1
  32. package/dist/serve/docs-ui/docs/firestore-compat/index.html +1 -1
  33. package/dist/serve/docs-ui/docs/functions-rtdb-compat/index.html +1 -1
  34. package/dist/serve/docs-ui/docs/get-started/how-the-swap-works/index.html +2 -1
  35. package/dist/serve/docs-ui/docs/get-started/how-the-swap-works.md +2 -0
  36. package/dist/serve/docs-ui/docs/get-started/start-building/index.html +3 -2
  37. package/dist/serve/docs-ui/docs/get-started/start-building.md +3 -1
  38. package/dist/serve/docs-ui/docs/index.json +349 -29
  39. package/dist/serve/docs-ui/docs/messaging-compat/index.html +1 -1
  40. package/dist/serve/docs-ui/docs/observe/resolve-runtime-status/index.html +28 -0
  41. package/dist/serve/docs-ui/docs/observe/resolve-runtime-status.md +47 -0
  42. package/dist/serve/docs-ui/docs/observe/see-whats-happening/index.html +1 -1
  43. package/dist/serve/docs-ui/docs/observe/shape-your-data/index.html +1 -1
  44. package/dist/serve/docs-ui/docs/overview/index.html +1 -1
  45. package/dist/serve/docs-ui/docs/pyric-admin-app-reference-api/index.html +1 -1
  46. package/dist/serve/docs-ui/docs/pyric-admin-auth-reference-api/index.html +1 -1
  47. package/dist/serve/docs-ui/docs/pyric-admin-database-reference-api/index.html +1 -1
  48. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-api/index.html +1 -1
  49. package/dist/serve/docs-ui/docs/pyric-admin-messaging-reference-api/index.html +916 -0
  50. package/dist/serve/docs-ui/docs/pyric-admin-messaging-reference-api.md +706 -0
  51. package/dist/serve/docs-ui/docs/pyric-admin-storage-reference-api/index.html +1 -1
  52. package/dist/serve/docs-ui/docs/pyric-ai-reference-api/index.html +1 -1
  53. package/dist/serve/docs-ui/docs/pyric-ai-scripting-reference-api/index.html +1 -1
  54. package/dist/serve/docs-ui/docs/pyric-app-reference-api/index.html +1 -1
  55. package/dist/serve/docs-ui/docs/pyric-auth-reference-api/index.html +1 -1
  56. package/dist/serve/docs-ui/docs/pyric-cli-assurance-browser-reference-api/index.html +1 -1
  57. package/dist/serve/docs-ui/docs/pyric-cli-assurance-reference-api/index.html +1 -1
  58. package/dist/serve/docs-ui/docs/pyric-cli-bridge-client-reference-api/index.html +1 -1
  59. package/dist/serve/docs-ui/docs/pyric-cli-bridge-reference-api/index.html +1 -1
  60. package/dist/serve/docs-ui/docs/pyric-cli-conformance-browser-reference-api/index.html +1 -1
  61. package/dist/serve/docs-ui/docs/pyric-cli-conformance-docs-reference-api/index.html +1 -1
  62. package/dist/serve/docs-ui/docs/pyric-cli-conformance-reference-api/index.html +1 -1
  63. package/dist/serve/docs-ui/docs/pyric-cli-credentials-node-reference-api/index.html +1 -1
  64. package/dist/serve/docs-ui/docs/pyric-cli-discover-reference-api/index.html +1 -1
  65. package/dist/serve/docs-ui/docs/pyric-cli-register-reference-api/index.html +1 -1
  66. package/dist/serve/docs-ui/docs/pyric-cli-remote-reference-api/index.html +1 -1
  67. package/dist/serve/docs-ui/docs/pyric-cli-serve-worker-reference-api/index.html +168 -76
  68. package/dist/serve/docs-ui/docs/pyric-cli-serve-worker-reference-api.md +156 -73
  69. package/dist/serve/docs-ui/docs/pyric-cli-verify-reference-api/index.html +1 -1
  70. package/dist/serve/docs-ui/docs/pyric-cli-vite-reference-api/index.html +11 -8
  71. package/dist/serve/docs-ui/docs/pyric-cli-vite-reference-api.md +17 -4
  72. package/dist/serve/docs-ui/docs/pyric-database-reference-api/index.html +1 -1
  73. package/dist/serve/docs-ui/docs/pyric-firestore-reference-api/index.html +1 -1
  74. package/dist/serve/docs-ui/docs/pyric-messaging-reference-api/index.html +1 -1
  75. package/dist/serve/docs-ui/docs/pyric-messaging-sw-reference-api/index.html +1 -1
  76. package/dist/serve/docs-ui/docs/pyric-rules-reference-api/index.html +1 -1
  77. package/dist/serve/docs-ui/docs/pyric-sandbox-database-reference-api/index.html +1 -1
  78. package/dist/serve/docs-ui/docs/pyric-sandbox-firestore-reference-api/index.html +1 -1
  79. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-api/index.html +37 -14
  80. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-api.md +28 -8
  81. package/dist/serve/docs-ui/docs/pyric-storage-reference-api/index.html +1 -1
  82. package/dist/serve/docs-ui/docs/pyric-ui-agents-reference-api/index.html +1 -1
  83. package/dist/serve/docs-ui/docs/pyric-ui-auth-hooks-reference-api/index.html +1 -1
  84. package/dist/serve/docs-ui/docs/pyric-ui-auth-reference-api/index.html +1 -1
  85. package/dist/serve/docs-ui/docs/pyric-ui-events-hooks-reference-api/index.html +1 -1
  86. package/dist/serve/docs-ui/docs/pyric-ui-events-reference-api/index.html +1 -1
  87. package/dist/serve/docs-ui/docs/pyric-ui-firestore-hooks-reference-api/index.html +1 -1
  88. package/dist/serve/docs-ui/docs/pyric-ui-firestore-reference-api/index.html +1 -1
  89. package/dist/serve/docs-ui/docs/pyric-ui-primitives-reference-api/index.html +1 -1
  90. package/dist/serve/docs-ui/docs/pyric-ui-rtdb-reference-api/index.html +1 -1
  91. package/dist/serve/docs-ui/docs/pyric-ui-rules-hooks-reference-api/index.html +1 -1
  92. package/dist/serve/docs-ui/docs/pyric-ui-rules-reference-api/index.html +1 -1
  93. package/dist/serve/docs-ui/docs/pyric-ui-storage-hooks-reference-api/index.html +1 -1
  94. package/dist/serve/docs-ui/docs/pyric-ui-storage-reference-api/index.html +1 -1
  95. package/dist/serve/docs-ui/docs/pyric-ui-traffic-hooks-reference-api/index.html +1 -1
  96. package/dist/serve/docs-ui/docs/pyric-ui-traffic-reference-api/index.html +1 -1
  97. package/dist/serve/docs-ui/docs/rules-compat/index.html +1 -1
  98. package/dist/serve/docs-ui/docs/secure/audit-your-rules/index.html +1 -1
  99. package/dist/serve/docs-ui/docs/secure/firestore-rules-limits/index.html +1 -1
  100. package/dist/serve/docs-ui/docs/secure/read-a-denial/index.html +1 -1
  101. package/dist/serve/docs-ui/docs/secure/rtdb-rules-in-typescript/index.html +1 -1
  102. package/dist/serve/docs-ui/docs/secure/rules-standard-library/index.html +1 -1
  103. package/dist/serve/docs-ui/docs/secure/secure-it-with-rules/index.html +1 -1
  104. package/dist/serve/docs-ui/docs/secure/simulate-and-lint/index.html +1 -1
  105. package/dist/serve/docs-ui/docs/secure/write-a-rules-test-suite/index.html +1 -1
  106. package/dist/serve/docs-ui/docs/ship/ship-to-production/index.html +1 -1
  107. package/dist/serve/docs-ui/docs/ship/test-in-node/index.html +1 -1
  108. package/dist/serve/docs-ui/docs/storage-compat/index.html +1 -1
  109. package/dist/serve/docs-ui/docs/trust/how-we-know-it-matches-firebase/index.html +1 -1
  110. package/dist/serve/docs-ui/docs/trust/versioning-and-compatibility/index.html +1 -1
  111. package/dist/serve/docs-ui/docs/tutorial/index.html +429 -0
  112. package/dist/serve/docs-ui/docs/tutorial.md +701 -0
  113. package/dist/serve/docs-ui/llms.txt +3 -1
  114. package/dist/serve/entries/init.d.ts.map +1 -1
  115. package/dist/serve/entries/init.js +3 -0
  116. package/dist/serve/entries/init.js.map +1 -1
  117. package/dist/serve/entries/runtime.d.ts.map +1 -1
  118. package/dist/serve/entries/runtime.js +20 -5
  119. package/dist/serve/entries/runtime.js.map +1 -1
  120. package/dist/serve/entries/worker-runtime.d.ts +2 -2
  121. package/dist/serve/entries/worker-runtime.d.ts.map +1 -1
  122. package/dist/serve/entries/worker-runtime.js +45 -10
  123. package/dist/serve/entries/worker-runtime.js.map +1 -1
  124. package/dist/serve/runtime/chip-config.d.ts +19 -0
  125. package/dist/serve/runtime/chip-config.d.ts.map +1 -0
  126. package/dist/serve/runtime/chip-config.js +19 -0
  127. package/dist/serve/runtime/chip-config.js.map +1 -0
  128. package/dist/serve/runtime/chip-install.d.ts +10 -0
  129. package/dist/serve/runtime/chip-install.d.ts.map +1 -0
  130. package/dist/serve/runtime/chip-install.js +15 -0
  131. package/dist/serve/runtime/chip-install.js.map +1 -0
  132. package/dist/serve/runtime/chip.d.ts +17 -0
  133. package/dist/serve/runtime/chip.d.ts.map +1 -0
  134. package/dist/serve/runtime/chip.js +257 -0
  135. package/dist/serve/runtime/chip.js.map +1 -0
  136. package/dist/serve/runtime/manifest.d.ts +22 -0
  137. package/dist/serve/runtime/manifest.d.ts.map +1 -0
  138. package/dist/serve/runtime/manifest.js +20 -0
  139. package/dist/serve/runtime/manifest.js.map +1 -0
  140. package/dist/serve/runtime/status.d.ts +49 -0
  141. package/dist/serve/runtime/status.d.ts.map +1 -0
  142. package/dist/serve/runtime/status.js +164 -0
  143. package/dist/serve/runtime/status.js.map +1 -0
  144. package/dist/serve/runtime/worker-connection.d.ts +4 -0
  145. package/dist/serve/runtime/worker-connection.d.ts.map +1 -0
  146. package/dist/serve/runtime/worker-connection.js +11 -0
  147. package/dist/serve/runtime/worker-connection.js.map +1 -0
  148. package/dist/serve/runtime/worker-generation.d.ts +14 -0
  149. package/dist/serve/runtime/worker-generation.d.ts.map +1 -0
  150. package/dist/serve/runtime/worker-generation.js +56 -0
  151. package/dist/serve/runtime/worker-generation.js.map +1 -0
  152. package/dist/serve/runtime/worker-replacement.d.ts +18 -0
  153. package/dist/serve/runtime/worker-replacement.d.ts.map +1 -0
  154. package/dist/serve/runtime/worker-replacement.js +29 -0
  155. package/dist/serve/runtime/worker-replacement.js.map +1 -0
  156. package/dist/serve/standalone-assets.d.ts +2 -2
  157. package/dist/serve/standalone-assets.d.ts.map +1 -1
  158. package/dist/serve/standalone-assets.js +1 -1
  159. package/dist/serve/standalone-assets.js.map +1 -1
  160. package/dist/serve/studio-ui/assets/{RulesCodeEditor-CxVYcZXw.js → RulesCodeEditor-BDlH-5lp.js} +1 -1
  161. package/dist/serve/studio-ui/assets/{index-cpSfgQ7H.js → index-Bf9SSE8L.js} +5 -5
  162. package/dist/serve/studio-ui/assets/{seed-DeuFKi4J.js → seed-D_UjxfOU.js} +1 -1
  163. package/dist/serve/studio-ui/index.html +1 -1
  164. package/dist/serve/vite-ai-config.d.ts +25 -0
  165. package/dist/serve/vite-ai-config.d.ts.map +1 -0
  166. package/dist/serve/vite-ai-config.js +45 -0
  167. package/dist/serve/vite-ai-config.js.map +1 -0
  168. package/dist/serve/vite-plugin.d.ts +17 -36
  169. package/dist/serve/vite-plugin.d.ts.map +1 -1
  170. package/dist/serve/vite-plugin.js +38 -57
  171. package/dist/serve/vite-plugin.js.map +1 -1
  172. package/dist/serve/vite-rules-source.d.ts +8 -0
  173. package/dist/serve/vite-rules-source.d.ts.map +1 -0
  174. package/dist/serve/vite-rules-source.js +23 -0
  175. package/dist/serve/vite-rules-source.js.map +1 -0
  176. package/dist/serve/vite-worker-runtime.d.ts +20 -0
  177. package/dist/serve/vite-worker-runtime.d.ts.map +1 -0
  178. package/dist/serve/vite-worker-runtime.js +25 -0
  179. package/dist/serve/vite-worker-runtime.js.map +1 -0
  180. package/dist/serve/worker/client/connection.d.ts +7 -2
  181. package/dist/serve/worker/client/connection.d.ts.map +1 -1
  182. package/dist/serve/worker/client/connection.js +13 -16
  183. package/dist/serve/worker/client/connection.js.map +1 -1
  184. package/dist/serve/worker/client/core.d.ts +7 -0
  185. package/dist/serve/worker/client/core.d.ts.map +1 -1
  186. package/dist/serve/worker/client/core.js +28 -0
  187. package/dist/serve/worker/client/core.js.map +1 -1
  188. package/dist/serve/worker/client/runtime-control.d.ts +8 -0
  189. package/dist/serve/worker/client/runtime-control.d.ts.map +1 -0
  190. package/dist/serve/worker/client/runtime-control.js +11 -0
  191. package/dist/serve/worker/client/runtime-control.js.map +1 -0
  192. package/dist/serve/worker/entry.js +44 -2
  193. package/dist/serve/worker/entry.js.map +1 -1
  194. package/dist/serve/worker/host/core.js +1 -1
  195. package/dist/serve/worker/host/core.js.map +1 -1
  196. package/dist/serve/worker/host/firestore-writes.d.ts.map +1 -1
  197. package/dist/serve/worker/host/firestore-writes.js +3 -2
  198. package/dist/serve/worker/host/firestore-writes.js.map +1 -1
  199. package/dist/serve/worker/host/studio.js +1 -1
  200. package/dist/serve/worker/host/studio.js.map +1 -1
  201. package/dist/serve/worker/host-context.d.ts +1 -1
  202. package/dist/serve/worker/host-context.d.ts.map +1 -1
  203. package/dist/serve/worker/index.d.ts +2 -1
  204. package/dist/serve/worker/index.d.ts.map +1 -1
  205. package/dist/serve/worker/index.js +2 -1
  206. package/dist/serve/worker/index.js.map +1 -1
  207. package/dist/serve/worker/protocol.d.ts +15 -1
  208. package/dist/serve/worker/protocol.d.ts.map +1 -1
  209. package/dist/serve/worker/protocol.js +2 -2
  210. package/dist/serve/worker/protocol.js.map +1 -1
  211. package/dist/serve/worker/retirement.d.ts +21 -0
  212. package/dist/serve/worker/retirement.d.ts.map +1 -0
  213. package/dist/serve/worker/retirement.js +97 -0
  214. package/dist/serve/worker/retirement.js.map +1 -0
  215. package/dist/serve/worker/serve-init.d.ts.map +1 -1
  216. package/dist/serve/worker/serve-init.js +5 -6
  217. package/dist/serve/worker/serve-init.js.map +1 -1
  218. package/dist/vite.d.ts +1 -0
  219. package/dist/vite.d.ts.map +1 -1
  220. package/dist/vite.js.map +1 -1
  221. package/package.json +6 -4
  222. package/src/assurance/.generated/conformance-verdicts.ts +1090 -0
  223. package/src/assurance/attachment.ts +211 -0
  224. package/src/assurance/browser.ts +80 -0
  225. package/src/assurance/campaign.ts +496 -0
  226. package/src/assurance/capabilities.ts +446 -0
  227. package/src/assurance/cases.ts +43 -0
  228. package/src/assurance/index.ts +75 -0
  229. package/src/assurance/runner.ts +885 -0
  230. package/src/assurance/tool-names.ts +15 -0
  231. package/src/assurance/tools.ts +830 -0
  232. package/src/assurance/types.ts +352 -0
  233. package/src/assurance/validation.ts +434 -0
  234. package/src/bridge/client/bridge.ts +550 -0
  235. package/src/bridge/client/dispatch.ts +137 -0
  236. package/src/bridge/client.ts +45 -0
  237. package/src/bridge/protocol.ts +351 -0
  238. package/src/bridge/server/audit.ts +53 -0
  239. package/src/bridge/server/bridge.ts +597 -0
  240. package/src/bridge/server/headless.ts +160 -0
  241. package/src/bridge/server/json-schema-to-zod.ts +108 -0
  242. package/src/bridge/server/local-bridge.ts +66 -0
  243. package/src/bridge/server/logger.ts +50 -0
  244. package/src/bridge/server/mcp-contract.ts +93 -0
  245. package/src/bridge/server/mcp.ts +129 -0
  246. package/src/bridge/server/peer.ts +232 -0
  247. package/src/bridge/server/standalone.ts +347 -0
  248. package/src/bridge/server/tool-metadata.ts +99 -0
  249. package/src/bridge/server.ts +28 -0
  250. package/src/cli/can-i-use.ts +50 -0
  251. package/src/cli/cli.test.ts +493 -0
  252. package/src/cli/database-rules.ts +329 -0
  253. package/src/cli/dev-runner.ts +282 -0
  254. package/src/cli/firebase-json.ts +100 -0
  255. package/src/cli/firestore-indexes.ts +70 -0
  256. package/src/cli/index.ts +425 -0
  257. package/src/cli/init.ts +260 -0
  258. package/src/cli/mcp-proxy.ts +196 -0
  259. package/src/cli/parse-args.ts +80 -0
  260. package/src/cli/rules.ts +259 -0
  261. package/src/cli/scope.ts +67 -0
  262. package/src/cli/serve.ts +996 -0
  263. package/src/cli/service-commands.ts +73 -0
  264. package/src/cli/snapshot.ts +164 -0
  265. package/src/cli/storage-rules.ts +172 -0
  266. package/src/cli/verify.ts +416 -0
  267. package/src/conformance/.generated/can-i-use-browser.ts +113 -0
  268. package/src/conformance/.generated/can-i-use.ts +117 -0
  269. package/src/conformance/.generated/conformance-docs.ts +14 -0
  270. package/src/conformance/browser.ts +24 -0
  271. package/src/conformance/can-i-use-tool.ts +51 -0
  272. package/src/conformance/can-i-use.ts +18 -0
  273. package/src/conformance/docs.ts +8 -0
  274. package/src/conformance/index.ts +20 -0
  275. package/src/conformance/tools.ts +16 -0
  276. package/src/credentials/core/memoize-ttl.ts +142 -0
  277. package/src/credentials/core/types.ts +10 -0
  278. package/src/credentials/node/from-adc.ts +96 -0
  279. package/src/credentials/node/from-service-account.ts +133 -0
  280. package/src/credentials/node/index.ts +6 -0
  281. package/src/discover/concurrency.ts +127 -0
  282. package/src/discover/crawler-adapter.ts +142 -0
  283. package/src/discover/crawler.ts +1127 -0
  284. package/src/discover/credential-free.ts +27 -0
  285. package/src/discover/findCollectionGroup.ts +131 -0
  286. package/src/discover/firestore-source.ts +59 -0
  287. package/src/discover/index.ts +5 -0
  288. package/src/discover/merge.ts +523 -0
  289. package/src/discover/session.ts +402 -0
  290. package/src/discover/tools.ts +201 -0
  291. package/src/discover/types.ts +187 -0
  292. package/src/discover/wire.ts +324 -0
  293. package/src/functions-rtdb/child.ts +382 -0
  294. package/src/functions-rtdb/delivery.ts +7 -0
  295. package/src/functions-rtdb/discovery.ts +136 -0
  296. package/src/functions-rtdb/event.ts +64 -0
  297. package/src/functions-rtdb/execution.ts +111 -0
  298. package/src/functions-rtdb/in-memory-delivery.ts +40 -0
  299. package/src/functions-rtdb/project.ts +74 -0
  300. package/src/functions-rtdb/projection.ts +104 -0
  301. package/src/functions-rtdb/reference-pattern.ts +20 -0
  302. package/src/functions-rtdb/remote-delivery.ts +23 -0
  303. package/src/pkg-version.ts +49 -0
  304. package/src/register/esm-exports.ts +63 -0
  305. package/src/register/hooks.ts +30 -0
  306. package/src/register/index.ts +150 -0
  307. package/src/register/mapping.ts +33 -0
  308. package/src/remote/index.ts +1050 -0
  309. package/src/rtdb/crawl-snapshot.ts +118 -0
  310. package/src/rtdb/inspection.ts +137 -0
  311. package/src/rtdb/load-rules-document.ts +56 -0
  312. package/src/rtdb/rules-generation-tool.ts +38 -0
  313. package/src/rtdb/rules-json.ts +29 -0
  314. package/src/serve/activity-guard.ts +29 -0
  315. package/src/serve/activity-route.ts +164 -0
  316. package/src/serve/activity-warning.ts +26 -0
  317. package/src/serve/bridge-mount.ts +200 -0
  318. package/src/serve/bundler.ts +519 -0
  319. package/src/serve/capture-store.ts +65 -0
  320. package/src/serve/discovery.ts +199 -0
  321. package/src/serve/entries/ai.ts +292 -0
  322. package/src/serve/entries/app-backend.ts +4 -0
  323. package/src/serve/entries/app-client.ts +26 -0
  324. package/src/serve/entries/app-session-store.ts +47 -0
  325. package/src/serve/entries/app.ts +11 -0
  326. package/src/serve/entries/auth-helper-core.ts +181 -0
  327. package/src/serve/entries/auth-helper-dom.ts +134 -0
  328. package/src/serve/entries/auth-helper-runtime.ts +20 -0
  329. package/src/serve/entries/auth.ts +255 -0
  330. package/src/serve/entries/bridge-url.ts +31 -0
  331. package/src/serve/entries/database.ts +129 -0
  332. package/src/serve/entries/firestore.ts +232 -0
  333. package/src/serve/entries/init.ts +49 -0
  334. package/src/serve/entries/keepalive.ts +46 -0
  335. package/src/serve/entries/messaging-sw.ts +75 -0
  336. package/src/serve/entries/messaging.ts +96 -0
  337. package/src/serve/entries/runtime.ts +556 -0
  338. package/src/serve/entries/session-store.ts +97 -0
  339. package/src/serve/entries/storage.ts +92 -0
  340. package/src/serve/entries/tab-sync-wiring.ts +274 -0
  341. package/src/serve/entries/worker-runtime.ts +135 -0
  342. package/src/serve/init-payload.ts +42 -0
  343. package/src/serve/namespace.ts +675 -0
  344. package/src/serve/open-browser.ts +68 -0
  345. package/src/serve/rules.ts +272 -0
  346. package/src/serve/runtime/chip-config.ts +30 -0
  347. package/src/serve/runtime/chip-install.ts +27 -0
  348. package/src/serve/runtime/chip.ts +282 -0
  349. package/src/serve/runtime/manifest.ts +37 -0
  350. package/src/serve/runtime/status.ts +216 -0
  351. package/src/serve/runtime/worker-connection.ts +14 -0
  352. package/src/serve/runtime/worker-generation.ts +75 -0
  353. package/src/serve/runtime/worker-replacement.ts +42 -0
  354. package/src/serve/sandbox-marker.ts +31 -0
  355. package/src/serve/server.ts +428 -0
  356. package/src/serve/standalone-assets.ts +180 -0
  357. package/src/serve/state-store.ts +166 -0
  358. package/src/serve/studio/disk-project-store.ts +185 -0
  359. package/src/serve/studio/disk-workspace.ts +162 -0
  360. package/src/serve/studio/index.ts +20 -0
  361. package/src/serve/studio/routes.ts +237 -0
  362. package/src/serve/studio/store-types.ts +48 -0
  363. package/src/serve/studio/studio-storage.test.ts +289 -0
  364. package/src/serve/vite-ai-config.ts +77 -0
  365. package/src/serve/vite-plugin.ts +1075 -0
  366. package/src/serve/vite-rules-source.ts +28 -0
  367. package/src/serve/vite-worker-runtime.ts +51 -0
  368. package/src/serve/worker/activity-bootstrap.ts +24 -0
  369. package/src/serve/worker/client/admin-firestore.ts +38 -0
  370. package/src/serve/worker/client/ai.ts +124 -0
  371. package/src/serve/worker/client/auth.ts +489 -0
  372. package/src/serve/worker/client/connection.ts +227 -0
  373. package/src/serve/worker/client/core.ts +384 -0
  374. package/src/serve/worker/client/disconnect.ts +45 -0
  375. package/src/serve/worker/client/firestore-reads.ts +181 -0
  376. package/src/serve/worker/client/firestore-refs.ts +226 -0
  377. package/src/serve/worker/client/firestore-writes.ts +232 -0
  378. package/src/serve/worker/client/handles.ts +91 -0
  379. package/src/serve/worker/client/messaging.ts +119 -0
  380. package/src/serve/worker/client/presence.ts +174 -0
  381. package/src/serve/worker/client/rtdb.ts +311 -0
  382. package/src/serve/worker/client/rules.ts +63 -0
  383. package/src/serve/worker/client/runtime-control.ts +22 -0
  384. package/src/serve/worker/client/service-worker-connection.ts +59 -0
  385. package/src/serve/worker/client/snapshots.ts +86 -0
  386. package/src/serve/worker/client/storage.ts +195 -0
  387. package/src/serve/worker/client/studio.ts +88 -0
  388. package/src/serve/worker/client.ts +57 -0
  389. package/src/serve/worker/durable-persistence.ts +137 -0
  390. package/src/serve/worker/entry.ts +223 -0
  391. package/src/serve/worker/host/admin-firestore.ts +88 -0
  392. package/src/serve/worker/host/connection.ts +179 -0
  393. package/src/serve/worker/host/core.ts +387 -0
  394. package/src/serve/worker/host/dispatch.ts +316 -0
  395. package/src/serve/worker/host/firestore-reads.ts +117 -0
  396. package/src/serve/worker/host/firestore-writes.ts +456 -0
  397. package/src/serve/worker/host/presence.ts +312 -0
  398. package/src/serve/worker/host/rtdb.ts +136 -0
  399. package/src/serve/worker/host/rules.ts +128 -0
  400. package/src/serve/worker/host/storage.ts +312 -0
  401. package/src/serve/worker/host/studio.ts +75 -0
  402. package/src/serve/worker/host/subscriptions.ts +238 -0
  403. package/src/serve/worker/host-ai.ts +165 -0
  404. package/src/serve/worker/host-auth.ts +469 -0
  405. package/src/serve/worker/host-context.ts +273 -0
  406. package/src/serve/worker/host-events.ts +94 -0
  407. package/src/serve/worker/host-messaging.ts +240 -0
  408. package/src/serve/worker/host.ts +47 -0
  409. package/src/serve/worker/index.ts +196 -0
  410. package/src/serve/worker/presence-timing.ts +15 -0
  411. package/src/serve/worker/protocol.ts +1124 -0
  412. package/src/serve/worker/retirement.ts +125 -0
  413. package/src/serve/worker/serve-init.ts +605 -0
  414. package/src/serve/worker/service-worker-channel.ts +33 -0
  415. package/src/serve/worker/service-worker-relay.ts +86 -0
  416. package/src/serve/writer-lock.ts +53 -0
  417. package/src/verify/cases.ts +233 -0
  418. package/src/verify/fixture.ts +258 -0
  419. package/src/verify/index.ts +519 -0
  420. package/src/verify/tools.ts +108 -0
  421. package/src/version/compat-target.ts +17 -0
  422. package/src/vite.ts +18 -0
  423. package/dist/serve/docs-ui/docs/pyric-firestore-values-reference-api/index.html +0 -31
  424. package/dist/serve/docs-ui/docs/pyric-firestore-values-reference-api.md +0 -29
@@ -1,5 +1,5 @@
1
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-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-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-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-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
+ <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> <details class="docs-nav-group"> <summary>Overview</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/overview/"> Overview </a> </li><li> <a href="/__pyric/ui/docs/tutorial/"> Tutorial </a> </li> </ul> </div> </div> </details><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/resolve-runtime-status/"> Runtime status </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> <details class="docs-nav-group" id="nav-group-overview"> <summary>Overview</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/overview/"> Overview </a> </li><li> <a href="/__pyric/ui/docs/tutorial/"> Tutorial </a> </li> </ul> </div> </div> </details><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/resolve-runtime-status/"> Runtime status </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">
3
3
  Generated from the TypeScript declarations shipped at this import path.
4
4
  </p> </header> <article class="prose api-reference-body"> <!-- Generated from published package declarations via TypeDoc. Rendered by the api-reference content loader. -->
5
5
  <h2 id="interfaces">Interfaces</h2>
@@ -66,7 +66,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
66
66
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
67
67
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
68
68
  </ul>
69
- <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)
70
71
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
71
72
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
72
73
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -147,7 +148,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
147
148
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
148
149
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
149
150
  </ul>
150
- <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)
151
153
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
152
154
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
153
155
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -192,7 +194,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
192
194
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
193
195
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
194
196
  </ul>
195
- <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)
196
199
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
197
200
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
198
201
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -712,7 +715,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
712
715
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
713
716
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
714
717
  </ul>
715
- <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)
716
720
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
717
721
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
718
722
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -853,7 +857,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
853
857
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
854
858
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
855
859
  </ul>
856
- <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)
857
862
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
858
863
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
859
864
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -984,7 +989,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
984
989
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
985
990
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
986
991
  </ul>
987
- <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)
988
994
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
989
995
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
990
996
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -1226,7 +1232,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
1226
1232
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
1227
1233
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
1228
1234
  </ul>
1229
- <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)
1230
1237
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
1231
1238
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
1232
1239
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -1251,7 +1258,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
1251
1258
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
1252
1259
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
1253
1260
  </ul>
1254
- <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)
1255
1263
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
1256
1264
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
1257
1265
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -1328,7 +1336,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
1328
1336
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
1329
1337
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
1330
1338
  </ul>
1331
- <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)
1332
1341
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
1333
1342
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
1334
1343
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -1368,7 +1377,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
1368
1377
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
1369
1378
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
1370
1379
  </ul>
1371
- <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)
1372
1382
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
1373
1383
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
1374
1384
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -1404,7 +1414,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
1404
1414
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
1405
1415
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
1406
1416
  </ul>
1407
- <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)
1408
1419
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
1409
1420
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
1410
1421
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -1444,7 +1455,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
1444
1455
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
1445
1456
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
1446
1457
  </ul>
1447
- <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)
1448
1460
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
1449
1461
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
1450
1462
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -1484,7 +1496,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
1484
1496
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
1485
1497
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
1486
1498
  </ul>
1487
- <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)
1488
1501
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
1489
1502
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
1490
1503
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -1524,7 +1537,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
1524
1537
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
1525
1538
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
1526
1539
  </ul>
1527
- <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)
1528
1542
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
1529
1543
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
1530
1544
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -1564,7 +1578,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
1564
1578
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
1565
1579
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
1566
1580
  </ul>
1567
- <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)
1568
1583
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
1569
1584
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
1570
1585
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -1608,7 +1623,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
1608
1623
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
1609
1624
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
1610
1625
  </ul>
1611
- <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)
1612
1628
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
1613
1629
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
1614
1630
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -1652,7 +1668,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
1652
1668
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
1653
1669
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
1654
1670
  </ul>
1655
- <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)
1656
1673
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
1657
1674
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
1658
1675
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -1691,7 +1708,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
1691
1708
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
1692
1709
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
1693
1710
  </ul>
1694
- <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)
1695
1713
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
1696
1714
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
1697
1715
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -1742,7 +1760,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
1742
1760
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
1743
1761
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
1744
1762
  </ul>
1745
- <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)
1746
1765
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
1747
1766
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
1748
1767
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -1789,7 +1808,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
1789
1808
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
1790
1809
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
1791
1810
  </ul>
1792
- <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)
1793
1813
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
1794
1814
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
1795
1815
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -1880,7 +1900,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
1880
1900
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
1881
1901
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
1882
1902
  </ul>
1883
- <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)
1884
1905
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
1885
1906
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
1886
1907
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -1927,7 +1948,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
1927
1948
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
1928
1949
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
1929
1950
  </ul>
1930
- <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)
1931
1953
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
1932
1954
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
1933
1955
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -1993,7 +2015,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
1993
2015
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
1994
2016
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
1995
2017
  </ul>
1996
- <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)
1997
2020
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
1998
2021
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
1999
2022
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -2029,7 +2052,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
2029
2052
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
2030
2053
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
2031
2054
  </ul>
2032
- <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)
2033
2057
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
2034
2058
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
2035
2059
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -2235,7 +2259,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
2235
2259
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
2236
2260
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
2237
2261
  </ul>
2238
- <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)
2239
2264
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
2240
2265
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
2241
2266
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -2279,7 +2304,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
2279
2304
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
2280
2305
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
2281
2306
  </ul>
2282
- <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)
2283
2309
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
2284
2310
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
2285
2311
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -2315,7 +2341,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
2315
2341
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
2316
2342
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
2317
2343
  </ul>
2318
- <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)
2319
2346
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
2320
2347
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
2321
2348
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -2414,7 +2441,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
2414
2441
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
2415
2442
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
2416
2443
  </ul>
2417
- <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)
2418
2446
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
2419
2447
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
2420
2448
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -2450,7 +2478,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
2450
2478
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
2451
2479
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
2452
2480
  </ul>
2453
- <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)
2454
2483
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
2455
2484
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
2456
2485
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -2535,7 +2564,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
2535
2564
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
2536
2565
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
2537
2566
  </ul>
2538
- <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)
2539
2569
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
2540
2570
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
2541
2571
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -2707,7 +2737,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
2707
2737
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
2708
2738
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
2709
2739
  </ul>
2710
- <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)
2711
2742
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
2712
2743
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
2713
2744
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -2747,7 +2778,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
2747
2778
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
2748
2779
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
2749
2780
  </ul>
2750
- <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)
2751
2783
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
2752
2784
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
2753
2785
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -2783,7 +2815,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
2783
2815
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
2784
2816
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
2785
2817
  </ul>
2786
- <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)
2787
2820
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
2788
2821
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
2789
2822
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -2830,13 +2863,26 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
2830
2863
  <hr>
2831
2864
  <p><a id="getfirestore"></a></p>
2832
2865
  <h3 id="getfirestore">getFirestore()</h3>
2833
- <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"> getFirestore</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">workerUrl</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">URL</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">name</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">ClientDb</span><span style="color:#ABB2BF">;</span></span></code></pre>
2834
- <p>Connect to the SharedWorker and return a client Firestore handle.</p>
2835
- <p>Pass the URL of the SharedWorker script as <code>workerUrl</code>. Under <code>pyric dev</code>
2836
- this is <code>/__pyric/sdk/worker.js</code>; for tests or standalone use, pass the path
2837
- explicitly.</p>
2838
- <p><code>getFirestore</code> mirrors <code>pyric/firestore</code>’s <code>getFirestore(sandbox)</code> shape
2839
- but returns a <code>ClientDb</code> backed by a <code>MessagePort</code> instead of a sandbox.</p>
2866
+ <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"> getFirestore</span><span style="color:#ABB2BF">(</span></span>
2867
+ <span class="line"><span style="color:#E06C75;font-style:italic"> workerUrl</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">URL</span><span style="color:#ABB2BF">,</span></span>
2868
+ <span class="line"><span style="color:#E06C75;font-style:italic"> name</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
2869
+ <span class="line"><span style="color:#E06C75;font-style:italic"> options</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">SharedWorkerConnectionOptions</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">ClientDb</span><span style="color:#ABB2BF">;</span></span></code></pre>
2870
+ <p>Browser-safe SharedWorker CLIENT surface (Pyric Studio data plane).</p>
2871
+ <p>This barrel exports ONLY the leaf client + the wire-protocol types — the
2872
+ pieces a browser app (the served page, or Pyric Studio’s Vite app) imports to
2873
+ connect to the <code>pyric-shared-worker</code> over its <code>MessagePort</code>. It deliberately
2874
+ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
2875
+ <ul>
2876
+ <li><code>host.ts</code> imports the full <code>pyric/firestore</code> + <code>pyric/auth</code> engine (it IS
2877
+ the backend) — node/engine-heavy, never wanted in a page bundle.</li>
2878
+ <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
2879
+ </ul>
2880
+ <p><code>client.ts</code> imports only the value codec
2881
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
2882
+ and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
2883
+ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
2884
+ <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
2885
+ <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
2840
2886
  <h4 id="parameters-54">Parameters</h4>
2841
2887
  <div class="table-scroll">
2842
2888
 
@@ -2855,7 +2901,11 @@ but returns a <code>ClientDb</code> backed by a <code>MessagePort</code> instead
2855
2901
 
2856
2902
 
2857
2903
 
2858
- <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>workerUrl</code></td><td align="left"><code>string</code> | <code>URL</code></td></tr><tr><td align="left"><code>name?</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
2904
+
2905
+
2906
+
2907
+
2908
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>workerUrl</code></td><td align="left"><code>string</code> | <code>URL</code></td></tr><tr><td align="left"><code>name?</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>options?</code></td><td align="left"><code>SharedWorkerConnectionOptions</code></td></tr></tbody></table></div>
2859
2909
  <h4 id="returns-67">Returns</h4>
2860
2910
  <p><a href="#clientdb"><code>ClientDb</code></a></p>
2861
2911
  <hr>
@@ -2956,7 +3006,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
2956
3006
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
2957
3007
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
2958
3008
  </ul>
2959
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
3009
+ <p><code>client.ts</code> imports only the value codec
3010
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
2960
3011
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
2961
3012
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
2962
3013
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -2995,7 +3046,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
2995
3046
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
2996
3047
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
2997
3048
  </ul>
2998
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
3049
+ <p><code>client.ts</code> imports only the value codec
3050
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
2999
3051
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
3000
3052
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3001
3053
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -3101,7 +3153,9 @@ the two are told apart.</p>
3101
3153
  <hr>
3102
3154
  <p><a id="getworkerversion"></a></p>
3103
3155
  <h3 id="getworkerversion">getWorkerVersion()</h3>
3104
- <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"> getWorkerVersion</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 style="color:#E5C07B">string</span><span style="color:#ABB2BF">>;</span></span></code></pre>
3156
+ <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"> getWorkerVersion</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">options</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: {</span></span>
3157
+ <span class="line"><span style="color:#E06C75"> timeoutMs</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">number</span><span style="color:#ABB2BF">;</span></span>
3158
+ <span class="line"><span style="color:#ABB2BF">}): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">>;</span></span></code></pre>
3105
3159
  <p>Ask the worker for its baked build version (staleness guard). The page
3106
3160
  compares it to the served bundle version and warns when a still-running OLD
3107
3161
  worker is older than what’s served (a SharedWorker can’t hot-update).</p>
@@ -3119,7 +3173,15 @@ worker is older than what’s served (a SharedWorker can’t hot-update).</p>
3119
3173
 
3120
3174
 
3121
3175
 
3122
- <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>
3176
+
3177
+
3178
+
3179
+
3180
+
3181
+
3182
+
3183
+
3184
+ <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>options?</code></td><td align="left">{ <code>timeoutMs?</code>: <code>number</code>; }</td></tr><tr><td align="left"><code>options.timeoutMs?</code></td><td align="left"><code>number</code></td></tr></tbody></table></div>
3123
3185
  <h4 id="returns-77">Returns</h4>
3124
3186
  <p><code>Promise</code>&#x3C;<code>string</code>></p>
3125
3187
  <hr>
@@ -3162,7 +3224,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
3162
3224
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
3163
3225
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
3164
3226
  </ul>
3165
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
3227
+ <p><code>client.ts</code> imports only the value codec
3228
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
3166
3229
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
3167
3230
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3168
3231
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -3198,7 +3261,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
3198
3261
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
3199
3262
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
3200
3263
  </ul>
3201
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
3264
+ <p><code>client.ts</code> imports only the value codec
3265
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
3202
3266
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
3203
3267
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3204
3268
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -3234,7 +3298,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
3234
3298
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
3235
3299
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
3236
3300
  </ul>
3237
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
3301
+ <p><code>client.ts</code> imports only the value codec
3302
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
3238
3303
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
3239
3304
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3240
3305
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -3350,7 +3415,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
3350
3415
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
3351
3416
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
3352
3417
  </ul>
3353
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
3418
+ <p><code>client.ts</code> imports only the value codec
3419
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
3354
3420
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
3355
3421
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3356
3422
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -3537,7 +3603,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
3537
3603
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
3538
3604
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
3539
3605
  </ul>
3540
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
3606
+ <p><code>client.ts</code> imports only the value codec
3607
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
3541
3608
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
3542
3609
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3543
3610
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -3734,7 +3801,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
3734
3801
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
3735
3802
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
3736
3803
  </ul>
3737
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
3804
+ <p><code>client.ts</code> imports only the value codec
3805
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
3738
3806
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
3739
3807
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3740
3808
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -3774,7 +3842,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
3774
3842
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
3775
3843
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
3776
3844
  </ul>
3777
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
3845
+ <p><code>client.ts</code> imports only the value codec
3846
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
3778
3847
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
3779
3848
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3780
3849
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -3795,7 +3864,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
3795
3864
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
3796
3865
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
3797
3866
  </ul>
3798
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
3867
+ <p><code>client.ts</code> imports only the value codec
3868
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
3799
3869
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
3800
3870
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3801
3871
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -3831,7 +3901,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
3831
3901
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
3832
3902
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
3833
3903
  </ul>
3834
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
3904
+ <p><code>client.ts</code> imports only the value codec
3905
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
3835
3906
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
3836
3907
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3837
3908
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -3874,7 +3945,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
3874
3945
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
3875
3946
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
3876
3947
  </ul>
3877
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
3948
+ <p><code>client.ts</code> imports only the value codec
3949
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
3878
3950
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
3879
3951
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3880
3952
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -3921,7 +3993,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
3921
3993
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
3922
3994
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
3923
3995
  </ul>
3924
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
3996
+ <p><code>client.ts</code> imports only the value codec
3997
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
3925
3998
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
3926
3999
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3927
4000
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -3965,7 +4038,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
3965
4038
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
3966
4039
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
3967
4040
  </ul>
3968
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
4041
+ <p><code>client.ts</code> imports only the value codec
4042
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
3969
4043
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
3970
4044
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3971
4045
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -4005,7 +4079,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
4005
4079
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
4006
4080
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
4007
4081
  </ul>
4008
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
4082
+ <p><code>client.ts</code> imports only the value codec
4083
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
4009
4084
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
4010
4085
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4011
4086
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -4045,7 +4120,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
4045
4120
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
4046
4121
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
4047
4122
  </ul>
4048
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
4123
+ <p><code>client.ts</code> imports only the value codec
4124
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
4049
4125
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
4050
4126
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4051
4127
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -4082,7 +4158,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
4082
4158
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
4083
4159
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
4084
4160
  </ul>
4085
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
4161
+ <p><code>client.ts</code> imports only the value codec
4162
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
4086
4163
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
4087
4164
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4088
4165
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -4104,7 +4181,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
4104
4181
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
4105
4182
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
4106
4183
  </ul>
4107
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
4184
+ <p><code>client.ts</code> imports only the value codec
4185
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
4108
4186
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
4109
4187
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4110
4188
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -4144,7 +4222,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
4144
4222
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
4145
4223
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
4146
4224
  </ul>
4147
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
4225
+ <p><code>client.ts</code> imports only the value codec
4226
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
4148
4227
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
4149
4228
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4150
4229
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -4269,7 +4348,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
4269
4348
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
4270
4349
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
4271
4350
  </ul>
4272
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
4351
+ <p><code>client.ts</code> imports only the value codec
4352
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
4273
4353
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
4274
4354
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4275
4355
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -4293,7 +4373,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
4293
4373
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
4294
4374
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
4295
4375
  </ul>
4296
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
4376
+ <p><code>client.ts</code> imports only the value codec
4377
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
4297
4378
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
4298
4379
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4299
4380
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -4342,7 +4423,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
4342
4423
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
4343
4424
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
4344
4425
  </ul>
4345
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
4426
+ <p><code>client.ts</code> imports only the value codec
4427
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
4346
4428
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
4347
4429
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4348
4430
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -4398,7 +4480,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
4398
4480
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
4399
4481
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
4400
4482
  </ul>
4401
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
4483
+ <p><code>client.ts</code> imports only the value codec
4484
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
4402
4485
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
4403
4486
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4404
4487
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -4524,7 +4607,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
4524
4607
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
4525
4608
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
4526
4609
  </ul>
4527
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
4610
+ <p><code>client.ts</code> imports only the value codec
4611
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
4528
4612
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
4529
4613
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4530
4614
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -4600,7 +4684,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
4600
4684
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
4601
4685
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
4602
4686
  </ul>
4603
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
4687
+ <p><code>client.ts</code> imports only the value codec
4688
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
4604
4689
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
4605
4690
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4606
4691
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -4639,7 +4724,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
4639
4724
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
4640
4725
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
4641
4726
  </ul>
4642
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
4727
+ <p><code>client.ts</code> imports only the value codec
4728
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
4643
4729
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
4644
4730
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4645
4731
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -4683,7 +4769,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
4683
4769
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
4684
4770
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
4685
4771
  </ul>
4686
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
4772
+ <p><code>client.ts</code> imports only the value codec
4773
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
4687
4774
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
4688
4775
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4689
4776
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -4719,7 +4806,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
4719
4806
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
4720
4807
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
4721
4808
  </ul>
4722
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
4809
+ <p><code>client.ts</code> imports only the value codec
4810
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
4723
4811
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
4724
4812
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4725
4813
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -4755,7 +4843,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
4755
4843
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
4756
4844
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
4757
4845
  </ul>
4758
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
4846
+ <p><code>client.ts</code> imports only the value codec
4847
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
4759
4848
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
4760
4849
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4761
4850
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -4921,7 +5010,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
4921
5010
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
4922
5011
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
4923
5012
  </ul>
4924
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
5013
+ <p><code>client.ts</code> imports only the value codec
5014
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
4925
5015
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
4926
5016
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4927
5017
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -5004,7 +5094,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
5004
5094
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
5005
5095
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
5006
5096
  </ul>
5007
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
5097
+ <p><code>client.ts</code> imports only the value codec
5098
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
5008
5099
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
5009
5100
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
5010
5101
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
@@ -5048,7 +5139,8 @@ does NOT re-export <code>host.ts</code>/<code>entry.ts</code>:</p>
5048
5139
  the backend) — node/engine-heavy, never wanted in a page bundle.</li>
5049
5140
  <li><code>entry.ts</code> references <code>SharedWorkerGlobalScope</code> and is esbuild-only.</li>
5050
5141
  </ul>
5051
- <p><code>client.ts</code> imports only the value codec (<code>pyric/firestore-values</code>, a leaf)
5142
+ <p><code>client.ts</code> imports only the value codec
5143
+ (<code>pyric/firestore/internal/value-codec</code>, a leaf internal seam)
5052
5144
  and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays free of
5053
5145
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
5054
5146
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can