@pyric/cli 0.1.0-alpha.15 → 0.1.0-alpha.17

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 (384) hide show
  1. package/README.md +13 -9
  2. package/dist/assurance/.generated/conformance-verdicts.d.ts +80 -72
  3. package/dist/assurance/.generated/conformance-verdicts.d.ts.map +1 -1
  4. package/dist/assurance/.generated/conformance-verdicts.js +80 -72
  5. package/dist/assurance/.generated/conformance-verdicts.js.map +1 -1
  6. package/dist/bridge/client/dispatch.js +1 -1
  7. package/dist/bridge/client/dispatch.js.map +1 -1
  8. package/dist/cli/database-rules.d.ts.map +1 -1
  9. package/dist/cli/database-rules.js +6 -4
  10. package/dist/cli/database-rules.js.map +1 -1
  11. package/dist/cli/dev-runner.d.ts +9 -0
  12. package/dist/cli/dev-runner.d.ts.map +1 -1
  13. package/dist/cli/dev-runner.js +18 -0
  14. package/dist/cli/dev-runner.js.map +1 -1
  15. package/dist/cli/serve.d.ts.map +1 -1
  16. package/dist/cli/serve.js +61 -6
  17. package/dist/cli/serve.js.map +1 -1
  18. package/dist/cli/verify.js +2 -2
  19. package/dist/cli/verify.js.map +1 -1
  20. package/dist/conformance/.generated/can-i-use-browser.d.ts.map +1 -1
  21. package/dist/conformance/.generated/can-i-use-browser.js +1 -1
  22. package/dist/conformance/.generated/can-i-use-browser.js.map +1 -1
  23. package/dist/conformance/.generated/can-i-use.d.ts.map +1 -1
  24. package/dist/conformance/.generated/can-i-use.js +1 -1
  25. package/dist/conformance/.generated/can-i-use.js.map +1 -1
  26. package/dist/conformance/.generated/conformance-docs.d.ts.map +1 -1
  27. package/dist/conformance/.generated/conformance-docs.js +1 -1
  28. package/dist/conformance/.generated/conformance-docs.js.map +1 -1
  29. package/dist/next/client-aliases.d.ts +11 -0
  30. package/dist/next/client-aliases.d.ts.map +1 -0
  31. package/dist/next/client-aliases.js +38 -0
  32. package/dist/next/client-aliases.js.map +1 -0
  33. package/dist/next/dev-rewrites.d.ts +9 -0
  34. package/dist/next/dev-rewrites.d.ts.map +1 -0
  35. package/dist/next/dev-rewrites.js +53 -0
  36. package/dist/next/dev-rewrites.js.map +1 -0
  37. package/dist/next/guard.d.ts +15 -0
  38. package/dist/next/guard.d.ts.map +1 -0
  39. package/dist/next/guard.js +52 -0
  40. package/dist/next/guard.js.map +1 -0
  41. package/dist/next/index.d.ts +12 -0
  42. package/dist/next/index.d.ts.map +1 -0
  43. package/dist/next/index.js +11 -0
  44. package/dist/next/index.js.map +1 -0
  45. package/dist/next/runtime-env.d.ts +7 -0
  46. package/dist/next/runtime-env.d.ts.map +1 -0
  47. package/dist/next/runtime-env.js +13 -0
  48. package/dist/next/runtime-env.js.map +1 -0
  49. package/dist/next/server-external-packages.d.ts +10 -0
  50. package/dist/next/server-external-packages.d.ts.map +1 -0
  51. package/dist/next/server-external-packages.js +34 -0
  52. package/dist/next/server-external-packages.js.map +1 -0
  53. package/dist/next/target-url.d.ts +11 -0
  54. package/dist/next/target-url.d.ts.map +1 -0
  55. package/dist/next/target-url.js +36 -0
  56. package/dist/next/target-url.js.map +1 -0
  57. package/dist/next/turbopack-config.d.ts +9 -0
  58. package/dist/next/turbopack-config.d.ts.map +1 -0
  59. package/dist/next/turbopack-config.js +39 -0
  60. package/dist/next/turbopack-config.js.map +1 -0
  61. package/dist/next/types.d.ts +40 -0
  62. package/dist/next/types.d.ts.map +1 -0
  63. package/dist/next/types.js +5 -0
  64. package/dist/next/types.js.map +1 -0
  65. package/dist/next/webpack-config.d.ts +11 -0
  66. package/dist/next/webpack-config.d.ts.map +1 -0
  67. package/dist/next/webpack-config.js +51 -0
  68. package/dist/next/webpack-config.js.map +1 -0
  69. package/dist/next/with-pyric.d.ts +22 -0
  70. package/dist/next/with-pyric.d.ts.map +1 -0
  71. package/dist/next/with-pyric.js +49 -0
  72. package/dist/next/with-pyric.js.map +1 -0
  73. package/dist/register/app-bridge.d.ts +9 -0
  74. package/dist/register/app-bridge.d.ts.map +1 -0
  75. package/dist/register/app-bridge.js +56 -0
  76. package/dist/register/app-bridge.js.map +1 -0
  77. package/dist/register/hooks.d.ts.map +1 -1
  78. package/dist/register/hooks.js +6 -1
  79. package/dist/register/hooks.js.map +1 -1
  80. package/dist/register/index.js +1 -1
  81. package/dist/register/index.js.map +1 -1
  82. package/dist/register/mapping.d.ts +3 -1
  83. package/dist/register/mapping.d.ts.map +1 -1
  84. package/dist/register/mapping.js +41 -5
  85. package/dist/register/mapping.js.map +1 -1
  86. package/dist/rtdb/rules-json.d.ts +12 -0
  87. package/dist/rtdb/rules-json.d.ts.map +1 -1
  88. package/dist/rtdb/rules-json.js +98 -0
  89. package/dist/rtdb/rules-json.js.map +1 -1
  90. package/dist/serve/bundler.d.ts.map +1 -1
  91. package/dist/serve/bundler.js +2 -0
  92. package/dist/serve/bundler.js.map +1 -1
  93. package/dist/serve/discovery.d.ts +4 -4
  94. package/dist/serve/discovery.d.ts.map +1 -1
  95. package/dist/serve/discovery.js +59 -38
  96. package/dist/serve/discovery.js.map +1 -1
  97. package/dist/serve/entries/app-ai-passthrough.d.ts +8 -0
  98. package/dist/serve/entries/app-ai-passthrough.d.ts.map +1 -0
  99. package/dist/serve/entries/app-ai-passthrough.js +59 -0
  100. package/dist/serve/entries/app-ai-passthrough.js.map +1 -0
  101. package/dist/serve/entries/auth-helper-core.d.ts +9 -0
  102. package/dist/serve/entries/auth-helper-core.d.ts.map +1 -1
  103. package/dist/serve/entries/auth-helper-core.js +37 -8
  104. package/dist/serve/entries/auth-helper-core.js.map +1 -1
  105. package/dist/serve/entries/auth.d.ts +1 -0
  106. package/dist/serve/entries/auth.d.ts.map +1 -1
  107. package/dist/serve/entries/auth.js +7 -4
  108. package/dist/serve/entries/auth.js.map +1 -1
  109. package/dist/serve/entries/bridge-url.d.ts.map +1 -1
  110. package/dist/serve/entries/bridge-url.js +7 -2
  111. package/dist/serve/entries/bridge-url.js.map +1 -1
  112. package/dist/serve/entries/database.d.ts +1 -0
  113. package/dist/serve/entries/database.d.ts.map +1 -1
  114. package/dist/serve/entries/database.js +1 -0
  115. package/dist/serve/entries/database.js.map +1 -1
  116. package/dist/serve/entries/firestore.d.ts +1 -0
  117. package/dist/serve/entries/firestore.d.ts.map +1 -1
  118. package/dist/serve/entries/firestore.js +1 -0
  119. package/dist/serve/entries/firestore.js.map +1 -1
  120. package/dist/serve/entries/init.d.ts.map +1 -1
  121. package/dist/serve/entries/init.js +4 -2
  122. package/dist/serve/entries/init.js.map +1 -1
  123. package/dist/serve/entries/runtime.js +23 -0
  124. package/dist/serve/entries/runtime.js.map +1 -1
  125. package/dist/serve/entries/storage.d.ts +2 -0
  126. package/dist/serve/entries/storage.d.ts.map +1 -1
  127. package/dist/serve/entries/storage.js +9 -2
  128. package/dist/serve/entries/storage.js.map +1 -1
  129. package/dist/serve/html-injection.d.ts +3 -1
  130. package/dist/serve/html-injection.d.ts.map +1 -1
  131. package/dist/serve/html-injection.js +27 -1
  132. package/dist/serve/html-injection.js.map +1 -1
  133. package/dist/serve/rules.js +2 -2
  134. package/dist/serve/rules.js.map +1 -1
  135. package/dist/serve/runtime/chip-config.d.ts +1 -1
  136. package/dist/serve/runtime/chip-config.d.ts.map +1 -1
  137. package/dist/serve/runtime/chip-config.js +16 -8
  138. package/dist/serve/runtime/chip-config.js.map +1 -1
  139. package/dist/serve/sandbox-session.d.ts +1 -0
  140. package/dist/serve/sandbox-session.d.ts.map +1 -1
  141. package/dist/serve/sandbox-session.js +30 -2
  142. package/dist/serve/sandbox-session.js.map +1 -1
  143. package/dist/serve/site-ui/_astro/_studio_.B6b_G1ev.css +1 -0
  144. package/dist/serve/site-ui/_astro/app.bnmVTkIY.js +11 -0
  145. package/dist/serve/site-ui/_astro/app.t6u-adB_.js +1 -0
  146. package/dist/serve/site-ui/_astro/{chess-showcase.DzPO6kz0.js → chess-showcase.kC8dXLKY.js} +1 -1
  147. package/dist/serve/site-ui/_astro/{example-runtime.CM0H02rx.js → example-runtime.D79PnoSk.js} +1 -1
  148. package/dist/serve/site-ui/_astro/index.DzVde04M.js +1 -0
  149. package/dist/serve/site-ui/_astro/reads.BYBRLbsE.js +1 -0
  150. package/dist/serve/site-ui/_astro/sandbox-controls.C9Aaazt8.js +1252 -0
  151. package/dist/serve/site-ui/_astro/{seed.BCn5DhHS.js → seed.DANAIyRw.js} +1 -1
  152. package/dist/serve/site-ui/auth/index.html +2 -2
  153. package/dist/serve/site-ui/docs/_rhythm/index.html +1 -1
  154. package/dist/serve/site-ui/docs/agent/set-up-your-agent/index.html +1 -1
  155. package/dist/serve/site-ui/docs/agent/watch-and-review/index.html +1 -1
  156. package/dist/serve/site-ui/docs/agent/work-with-an-agent/index.html +1 -1
  157. package/dist/serve/site-ui/docs/ai-compat/index.html +85 -85
  158. package/dist/serve/site-ui/docs/ai-compat.md +84 -84
  159. package/dist/serve/site-ui/docs/api-reference/index.html +3 -1
  160. package/dist/serve/site-ui/docs/api-reference.md +2 -0
  161. package/dist/serve/site-ui/docs/app-compat/index.html +28 -28
  162. package/dist/serve/site-ui/docs/app-compat.md +27 -27
  163. package/dist/serve/site-ui/docs/auth-compat/index.html +122 -122
  164. package/dist/serve/site-ui/docs/auth-compat.md +121 -121
  165. package/dist/serve/site-ui/docs/build/ai-logic/index.html +1 -1
  166. package/dist/serve/site-ui/docs/build/authentication/index.html +1 -1
  167. package/dist/serve/site-ui/docs/build/cloud-firestore/index.html +1 -1
  168. package/dist/serve/site-ui/docs/build/cloud-messaging/index.html +1 -1
  169. package/dist/serve/site-ui/docs/build/cloud-storage/index.html +1 -1
  170. package/dist/serve/site-ui/docs/build/realtime-database/index.html +1 -1
  171. package/dist/serve/site-ui/docs/conformance-scores/index.html +4 -4
  172. package/dist/serve/site-ui/docs/conformance-scores.md +3 -3
  173. package/dist/serve/site-ui/docs/create-pyric-reference-api/index.html +6 -6
  174. package/dist/serve/site-ui/docs/create-pyric-reference-api.md +5 -5
  175. package/dist/serve/site-ui/docs/database-compat/index.html +200 -448
  176. package/dist/serve/site-ui/docs/database-compat.md +198 -461
  177. package/dist/serve/site-ui/docs/examples/chess/index.html +2 -2
  178. package/dist/serve/site-ui/docs/examples/index.html +1 -1
  179. package/dist/serve/site-ui/docs/firestore-compat/index.html +186 -195
  180. package/dist/serve/site-ui/docs/firestore-compat.md +184 -195
  181. package/dist/serve/site-ui/docs/functions-rtdb-compat/index.html +15 -15
  182. package/dist/serve/site-ui/docs/functions-rtdb-compat.md +14 -14
  183. package/dist/serve/site-ui/docs/get-started/how-the-swap-works/index.html +1 -1
  184. package/dist/serve/site-ui/docs/get-started/nextjs/index.html +57 -0
  185. package/dist/serve/site-ui/docs/get-started/nextjs.md +86 -0
  186. package/dist/serve/site-ui/docs/get-started/start-building/index.html +25 -8
  187. package/dist/serve/site-ui/docs/get-started/start-building.md +34 -5
  188. package/dist/serve/site-ui/docs/get-started/vite/index.html +26 -0
  189. package/dist/serve/site-ui/docs/get-started/vite.md +45 -0
  190. package/dist/serve/site-ui/docs/index.json +668 -103
  191. package/dist/serve/site-ui/docs/messaging-compat/index.html +56 -56
  192. package/dist/serve/site-ui/docs/messaging-compat.md +55 -55
  193. package/dist/serve/site-ui/docs/observe/resolve-runtime-status/index.html +1 -1
  194. package/dist/serve/site-ui/docs/observe/see-whats-happening/index.html +1 -1
  195. package/dist/serve/site-ui/docs/observe/shape-your-data/index.html +1 -1
  196. package/dist/serve/site-ui/docs/overview/index.html +1 -1
  197. package/dist/serve/site-ui/docs/pyric-admin-app-reference-api/index.html +39 -13
  198. package/dist/serve/site-ui/docs/pyric-admin-app-reference-api.md +28 -2
  199. package/dist/serve/site-ui/docs/pyric-admin-auth-reference-api/index.html +1 -1
  200. package/dist/serve/site-ui/docs/pyric-admin-database-reference-api/index.html +38 -6
  201. package/dist/serve/site-ui/docs/pyric-admin-database-reference-api.md +43 -0
  202. package/dist/serve/site-ui/docs/pyric-admin-firestore-reference-api/index.html +9 -1
  203. package/dist/serve/site-ui/docs/pyric-admin-firestore-reference-api.md +8 -0
  204. package/dist/serve/site-ui/docs/pyric-admin-messaging-reference-api/index.html +1 -1
  205. package/dist/serve/site-ui/docs/pyric-admin-storage-reference-api/index.html +27 -4
  206. package/dist/serve/site-ui/docs/pyric-admin-storage-reference-api.md +23 -0
  207. package/dist/serve/site-ui/docs/pyric-ai-reference-api/index.html +1 -1
  208. package/dist/serve/site-ui/docs/pyric-ai-scripting-reference-api/index.html +1 -1
  209. package/dist/serve/site-ui/docs/pyric-app-reference-api/index.html +1 -1
  210. package/dist/serve/site-ui/docs/pyric-auth-reference-api/index.html +2 -2
  211. package/dist/serve/site-ui/docs/pyric-auth-reference-api.md +1 -1
  212. package/dist/serve/site-ui/docs/pyric-cli-assurance-browser-reference-api/index.html +1 -1
  213. package/dist/serve/site-ui/docs/pyric-cli-assurance-reference-api/index.html +1 -1
  214. package/dist/serve/site-ui/docs/pyric-cli-bridge-client-reference-api/index.html +1 -1
  215. package/dist/serve/site-ui/docs/pyric-cli-bridge-reference-api/index.html +1 -1
  216. package/dist/serve/site-ui/docs/pyric-cli-conformance-browser-reference-api/index.html +1 -1
  217. package/dist/serve/site-ui/docs/pyric-cli-conformance-docs-reference-api/index.html +1 -1
  218. package/dist/serve/site-ui/docs/pyric-cli-conformance-reference-api/index.html +1 -1
  219. package/dist/serve/site-ui/docs/pyric-cli-credentials-node-reference-api/index.html +1 -1
  220. package/dist/serve/site-ui/docs/pyric-cli-discover-reference-api/index.html +1 -1
  221. package/dist/serve/site-ui/docs/pyric-cli-next-reference-api/index.html +123 -0
  222. package/dist/serve/site-ui/docs/pyric-cli-next-reference-api.md +99 -0
  223. package/dist/serve/site-ui/docs/pyric-cli-register-app-bridge-reference-api/index.html +127 -0
  224. package/dist/serve/site-ui/docs/pyric-cli-register-app-bridge-reference-api.md +174 -0
  225. package/dist/serve/site-ui/docs/pyric-cli-register-reference-api/index.html +1 -1
  226. package/dist/serve/site-ui/docs/pyric-cli-remote-reference-api/index.html +1 -1
  227. package/dist/serve/site-ui/docs/pyric-cli-serve-worker-reference-api/index.html +570 -326
  228. package/dist/serve/site-ui/docs/pyric-cli-serve-worker-reference-api.md +198 -6
  229. package/dist/serve/site-ui/docs/pyric-cli-verify-reference-api/index.html +1 -1
  230. package/dist/serve/site-ui/docs/pyric-cli-vite-reference-api/index.html +1 -1
  231. package/dist/serve/site-ui/docs/pyric-database-reference-api/index.html +1 -1
  232. package/dist/serve/site-ui/docs/pyric-firestore-reference-api/index.html +2971 -627
  233. package/dist/serve/site-ui/docs/pyric-firestore-reference-api.md +2873 -517
  234. package/dist/serve/site-ui/docs/pyric-messaging-reference-api/index.html +1 -1
  235. package/dist/serve/site-ui/docs/pyric-messaging-sw-reference-api/index.html +1 -1
  236. package/dist/serve/site-ui/docs/pyric-rules-reference-api/index.html +43 -3
  237. package/dist/serve/site-ui/docs/pyric-rules-reference-api.md +8 -0
  238. package/dist/serve/site-ui/docs/pyric-sandbox-database-reference-api/index.html +26 -2
  239. package/dist/serve/site-ui/docs/pyric-sandbox-database-reference-api.md +24 -0
  240. package/dist/serve/site-ui/docs/pyric-sandbox-firestore-reference-api/index.html +1 -1
  241. package/dist/serve/site-ui/docs/pyric-sandbox-reference-api/index.html +77 -9
  242. package/dist/serve/site-ui/docs/pyric-sandbox-reference-api.md +28 -13
  243. package/dist/serve/site-ui/docs/pyric-storage-reference-api/index.html +240 -63
  244. package/dist/serve/site-ui/docs/pyric-storage-reference-api.md +164 -5
  245. package/dist/serve/site-ui/docs/pyric-ui-agents-reference-api/index.html +1 -1
  246. package/dist/serve/site-ui/docs/pyric-ui-auth-hooks-reference-api/index.html +1 -1
  247. package/dist/serve/site-ui/docs/pyric-ui-auth-reference-api/index.html +1 -1
  248. package/dist/serve/site-ui/docs/pyric-ui-events-hooks-reference-api/index.html +1 -1
  249. package/dist/serve/site-ui/docs/pyric-ui-events-reference-api/index.html +1 -1
  250. package/dist/serve/site-ui/docs/pyric-ui-firestore-hooks-reference-api/index.html +1 -1
  251. package/dist/serve/site-ui/docs/pyric-ui-firestore-reference-api/index.html +1 -1
  252. package/dist/serve/site-ui/docs/pyric-ui-primitives-reference-api/index.html +1 -1
  253. package/dist/serve/site-ui/docs/pyric-ui-rtdb-reference-api/index.html +1 -1
  254. package/dist/serve/site-ui/docs/pyric-ui-rules-hooks-reference-api/index.html +1 -1
  255. package/dist/serve/site-ui/docs/pyric-ui-rules-reference-api/index.html +1 -1
  256. package/dist/serve/site-ui/docs/pyric-ui-storage-hooks-reference-api/index.html +1 -1
  257. package/dist/serve/site-ui/docs/pyric-ui-storage-reference-api/index.html +2 -1
  258. package/dist/serve/site-ui/docs/pyric-ui-storage-reference-api.md +1 -0
  259. package/dist/serve/site-ui/docs/pyric-ui-traffic-hooks-reference-api/index.html +1 -1
  260. package/dist/serve/site-ui/docs/pyric-ui-traffic-reference-api/index.html +1 -1
  261. package/dist/serve/site-ui/docs/rules-compat/index.html +87 -79
  262. package/dist/serve/site-ui/docs/rules-compat.md +86 -78
  263. package/dist/serve/site-ui/docs/secure/audit-your-rules/index.html +1 -1
  264. package/dist/serve/site-ui/docs/secure/firestore-rules-limits/index.html +1 -1
  265. package/dist/serve/site-ui/docs/secure/read-a-denial/index.html +1 -1
  266. package/dist/serve/site-ui/docs/secure/rtdb-rules-in-typescript/index.html +1 -1
  267. package/dist/serve/site-ui/docs/secure/rules-standard-library/index.html +1 -1
  268. package/dist/serve/site-ui/docs/secure/secure-it-with-rules/index.html +1 -1
  269. package/dist/serve/site-ui/docs/secure/simulate-and-lint/index.html +1 -1
  270. package/dist/serve/site-ui/docs/secure/write-a-rules-test-suite/index.html +1 -1
  271. package/dist/serve/site-ui/docs/ship/ship-to-production/index.html +1 -1
  272. package/dist/serve/site-ui/docs/ship/test-in-node/index.html +1 -1
  273. package/dist/serve/site-ui/docs/storage-compat/index.html +119 -125
  274. package/dist/serve/site-ui/docs/storage-compat.md +118 -124
  275. package/dist/serve/site-ui/docs/trust/how-we-know-it-matches-firebase/index.html +1 -1
  276. package/dist/serve/site-ui/docs/trust/rules-standard-library/index.html +1 -1
  277. package/dist/serve/site-ui/docs/trust/storage-rules-stdlib-research/index.html +1 -1
  278. package/dist/serve/site-ui/docs/trust/versioning-and-compatibility/index.html +1 -1
  279. package/dist/serve/site-ui/docs/tutorial/index.html +1 -1
  280. package/dist/serve/site-ui/examples/chess/index.html +1 -1
  281. package/dist/serve/site-ui/examples/firestore-first-write/index.html +1 -1
  282. package/dist/serve/site-ui/firestore/index.html +2 -2
  283. package/dist/serve/site-ui/index.html +2 -2
  284. package/dist/serve/site-ui/llms.txt +6 -2
  285. package/dist/serve/site-ui/rtdb/index.html +2 -2
  286. package/dist/serve/site-ui/settings/index.html +2 -2
  287. package/dist/serve/site-ui/storage/index.html +2 -2
  288. package/dist/serve/site-ui/traffic/index.html +2 -2
  289. package/dist/serve/vite-ai-config.d.ts +4 -1
  290. package/dist/serve/vite-ai-config.d.ts.map +1 -1
  291. package/dist/serve/vite-ai-config.js +83 -19
  292. package/dist/serve/vite-ai-config.js.map +1 -1
  293. package/dist/serve/vite-generation-rules-watch.d.ts.map +1 -1
  294. package/dist/serve/vite-generation-rules-watch.js +61 -14
  295. package/dist/serve/vite-generation-rules-watch.js.map +1 -1
  296. package/dist/serve/vite-module-swap.d.ts +4 -1
  297. package/dist/serve/vite-module-swap.d.ts.map +1 -1
  298. package/dist/serve/vite-module-swap.js +106 -21
  299. package/dist/serve/vite-module-swap.js.map +1 -1
  300. package/dist/serve/vite-plugin.d.ts.map +1 -1
  301. package/dist/serve/vite-plugin.js +45 -5
  302. package/dist/serve/vite-plugin.js.map +1 -1
  303. package/dist/serve/vite-sandbox-generation.js +1 -1
  304. package/dist/serve/vite-sandbox-generation.js.map +1 -1
  305. package/dist/serve/worker/client/resumable.d.ts +30 -0
  306. package/dist/serve/worker/client/resumable.d.ts.map +1 -0
  307. package/dist/serve/worker/client/resumable.js +416 -0
  308. package/dist/serve/worker/client/resumable.js.map +1 -0
  309. package/dist/serve/worker/client/rtdb-references.d.ts.map +1 -1
  310. package/dist/serve/worker/client/rtdb-references.js +4 -1
  311. package/dist/serve/worker/client/rtdb-references.js.map +1 -1
  312. package/dist/serve/worker/client/storage.d.ts +16 -2
  313. package/dist/serve/worker/client/storage.d.ts.map +1 -1
  314. package/dist/serve/worker/client/storage.js +57 -6
  315. package/dist/serve/worker/client/storage.js.map +1 -1
  316. package/dist/serve/worker/host/rules.d.ts.map +1 -1
  317. package/dist/serve/worker/host/rules.js +2 -1
  318. package/dist/serve/worker/host/rules.js.map +1 -1
  319. package/dist/serve/worker/index.d.ts +1 -1
  320. package/dist/serve/worker/index.d.ts.map +1 -1
  321. package/dist/serve/worker/index.js +1 -1
  322. package/dist/serve/worker/index.js.map +1 -1
  323. package/dist/serve/worker/serve-init.d.ts.map +1 -1
  324. package/dist/serve/worker/serve-init.js +31 -0
  325. package/dist/serve/worker/serve-init.js.map +1 -1
  326. package/package.json +15 -4
  327. package/src/assurance/.generated/conformance-verdicts.ts +80 -72
  328. package/src/bridge/client/dispatch.ts +1 -1
  329. package/src/cli/cli.test.ts +14 -0
  330. package/src/cli/database-rules.ts +6 -4
  331. package/src/cli/dev-runner.ts +21 -0
  332. package/src/cli/serve.ts +62 -5
  333. package/src/cli/verify.ts +2 -2
  334. package/src/conformance/.generated/can-i-use-browser.ts +1 -1
  335. package/src/conformance/.generated/can-i-use.ts +1 -1
  336. package/src/conformance/.generated/conformance-docs.ts +1 -1
  337. package/src/next/client-aliases.ts +39 -0
  338. package/src/next/dev-rewrites.ts +77 -0
  339. package/src/next/guard.ts +61 -0
  340. package/src/next/index.ts +16 -0
  341. package/src/next/runtime-env.ts +18 -0
  342. package/src/next/server-external-packages.ts +43 -0
  343. package/src/next/target-url.ts +46 -0
  344. package/src/next/turbopack-config.ts +54 -0
  345. package/src/next/types.ts +47 -0
  346. package/src/next/webpack-config.ts +71 -0
  347. package/src/next/with-pyric.ts +58 -0
  348. package/src/register/app-bridge.ts +79 -0
  349. package/src/register/hooks.ts +6 -1
  350. package/src/register/index.ts +1 -1
  351. package/src/register/mapping.ts +50 -4
  352. package/src/rtdb/rules-json.ts +110 -0
  353. package/src/serve/bundler.ts +2 -0
  354. package/src/serve/discovery.ts +65 -44
  355. package/src/serve/entries/app-ai-passthrough.ts +83 -0
  356. package/src/serve/entries/auth-helper-core.ts +44 -8
  357. package/src/serve/entries/auth.ts +9 -4
  358. package/src/serve/entries/bridge-url.ts +9 -2
  359. package/src/serve/entries/database.ts +1 -0
  360. package/src/serve/entries/firestore.ts +1 -0
  361. package/src/serve/entries/init.ts +5 -2
  362. package/src/serve/entries/runtime.ts +25 -0
  363. package/src/serve/entries/storage.ts +12 -1
  364. package/src/serve/html-injection.ts +26 -1
  365. package/src/serve/rules.ts +2 -2
  366. package/src/serve/runtime/chip-config.ts +19 -6
  367. package/src/serve/sandbox-session.ts +31 -2
  368. package/src/serve/vite-ai-config.ts +86 -19
  369. package/src/serve/vite-generation-rules-watch.ts +67 -15
  370. package/src/serve/vite-module-swap.ts +121 -21
  371. package/src/serve/vite-plugin.ts +44 -6
  372. package/src/serve/vite-sandbox-generation.ts +1 -1
  373. package/src/serve/worker/client/resumable.ts +506 -0
  374. package/src/serve/worker/client/rtdb-references.ts +4 -1
  375. package/src/serve/worker/client/storage.ts +77 -7
  376. package/src/serve/worker/host/rules.ts +2 -1
  377. package/src/serve/worker/index.ts +4 -0
  378. package/src/serve/worker/serve-init.ts +30 -0
  379. package/dist/serve/site-ui/_astro/_studio_.BtYpqe1A.css +0 -1
  380. package/dist/serve/site-ui/_astro/app.BnMC0ywl.js +0 -109
  381. package/dist/serve/site-ui/_astro/app.DVXXR-WI.js +0 -1
  382. package/dist/serve/site-ui/_astro/index.B4Kh80he.js +0 -1
  383. package/dist/serve/site-ui/_astro/reads.D1exkX1-.js +0 -1
  384. package/dist/serve/site-ui/_astro/sandbox-controls.BqMePr5V.js +0 -1153
@@ -28,59 +28,59 @@
28
28
  <div class="compat-list">
29
29
  <details class="compat-row" data-status="ok">
30
30
  <summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">initializeApp(config)</code><span class="compat-sub"><span class="compat-behavior">Registers the default app under the name <code>'[DEFAULT]'</code>; <code>getApps()</code> has length 1 and <code>getApp()</code> (no arg) resolves the same instance</span></span></span></summary>
31
- <div class="compat-evidence"><div class="compat-probe">oracle: <code>app-registry-initializeapp-default</code> (firebase 12.13.0) + replay: <code>oracle-conformance.test.ts</code></div></div>
31
+ <div class="compat-evidence"><div class="compat-probe">oracle: <a href="https://github.com/davideast/pyric/blob/main/packages/conformance/observations/app/app-registry-initializeapp-default.json" target="_blank" rel="noopener noreferrer"><code>app-registry-initializeapp-default</code></a> (firebase 12.13.0) + replay: <a href="https://github.com/davideast/pyric/blob/main/packages/pyric/test/app/oracle-conformance.test.ts#L109" target="_blank" rel="noopener noreferrer"><code>oracle-conformance.test.ts</code></a></div></div>
32
32
  </details>
33
33
  <details class="compat-row" data-status="ok">
34
34
  <summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">initializeApp(config, 'secondary')</code><span class="compat-sub"><span class="compat-behavior">Registers a named app alongside the default; <code>getApp('secondary')</code> resolves it and <code>getApps()</code> has length 2 (default + named)</span></span></span></summary>
35
- <div class="compat-evidence"><div class="compat-probe">oracle: <code>app-registry-initializeapp-named</code> (firebase 12.13.0) + replay: <code>oracle-conformance.test.ts</code></div></div>
35
+ <div class="compat-evidence"><div class="compat-probe">oracle: <a href="https://github.com/davideast/pyric/blob/main/packages/conformance/observations/app/app-registry-initializeapp-named.json" target="_blank" rel="noopener noreferrer"><code>app-registry-initializeapp-named</code></a> (firebase 12.13.0) + replay: <a href="https://github.com/davideast/pyric/blob/main/packages/pyric/test/app/oracle-conformance.test.ts#L119" target="_blank" rel="noopener noreferrer"><code>oracle-conformance.test.ts</code></a></div></div>
36
36
  </details>
37
37
  <details class="compat-row" data-status="ok">
38
38
  <summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">initializeApp(config)</code><span class="compat-sub"><span class="compat-behavior">A same-name re-initialization with a DIFFERENT config throws <code>FirebaseError</code> code <code>app/duplicate-app</code>, with the app name embedded in the message</span></span></span></summary>
39
- <div class="compat-evidence"><div class="compat-probe">oracle: <code>app-registry-initializeapp-duplicate-name</code> (firebase 12.13.0) + replay: <code>oracle-conformance.test.ts</code></div></div>
39
+ <div class="compat-evidence"><div class="compat-probe">oracle: <a href="https://github.com/davideast/pyric/blob/main/packages/conformance/observations/app/app-registry-initializeapp-duplicate-name.json" target="_blank" rel="noopener noreferrer"><code>app-registry-initializeapp-duplicate-name</code></a> (firebase 12.13.0) + replay: <a href="https://github.com/davideast/pyric/blob/main/packages/pyric/test/app/oracle-conformance.test.ts#L129" target="_blank" rel="noopener noreferrer"><code>oracle-conformance.test.ts</code></a></div></div>
40
40
  </details>
41
41
  <details class="compat-row" data-status="ok">
42
42
  <summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">initializeApp(config)</code><span class="compat-sub"><span class="compat-behavior">A same-name re-initialization with EQUAL config is idempotent — no throw, returns the existing instance, and <code>getApps()</code> stays length 1</span></span></span></summary>
43
- <div class="compat-evidence"><div class="compat-probe">oracle: <code>app-registry-initializeapp-duplicate-config</code> (firebase 12.13.0) + replay: <code>oracle-conformance.test.ts</code></div></div>
43
+ <div class="compat-evidence"><div class="compat-probe">oracle: <a href="https://github.com/davideast/pyric/blob/main/packages/conformance/observations/app/app-registry-initializeapp-duplicate-config.json" target="_blank" rel="noopener noreferrer"><code>app-registry-initializeapp-duplicate-config</code></a> (firebase 12.13.0) + replay: <a href="https://github.com/davideast/pyric/blob/main/packages/pyric/test/app/oracle-conformance.test.ts#L141" target="_blank" rel="noopener noreferrer"><code>oracle-conformance.test.ts</code></a></div></div>
44
44
  </details>
45
45
  <details class="compat-row" data-status="ok">
46
46
  <summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">getApp()</code><span class="compat-sub"><span class="compat-behavior"><code>getApp()</code> with no name resolves the default app instance; its name is <code>'[DEFAULT]'</code></span></span></span></summary>
47
- <div class="compat-evidence"><div class="compat-probe">oracle: <code>app-registry-getapp-default</code> (firebase 12.13.0) + replay: <code>oracle-conformance.test.ts</code></div></div>
47
+ <div class="compat-evidence"><div class="compat-probe">oracle: <a href="https://github.com/davideast/pyric/blob/main/packages/conformance/observations/app/app-registry-getapp-default.json" target="_blank" rel="noopener noreferrer"><code>app-registry-getapp-default</code></a> (firebase 12.13.0) + replay: <a href="https://github.com/davideast/pyric/blob/main/packages/pyric/test/app/oracle-conformance.test.ts#L149" target="_blank" rel="noopener noreferrer"><code>oracle-conformance.test.ts</code></a></div></div>
48
48
  </details>
49
49
  <details class="compat-row" data-status="ok">
50
50
  <summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">getApp('secondary')</code><span class="compat-sub"><span class="compat-behavior"><code>getApp('secondary')</code> resolves the named app instance; its name is <code>'secondary'</code></span></span></span></summary>
51
- <div class="compat-evidence"><div class="compat-probe">oracle: <code>app-registry-getapp-named</code> (firebase 12.13.0) + replay: <code>oracle-conformance.test.ts</code></div></div>
51
+ <div class="compat-evidence"><div class="compat-probe">oracle: <a href="https://github.com/davideast/pyric/blob/main/packages/conformance/observations/app/app-registry-getapp-named.json" target="_blank" rel="noopener noreferrer"><code>app-registry-getapp-named</code></a> (firebase 12.13.0) + replay: <a href="https://github.com/davideast/pyric/blob/main/packages/pyric/test/app/oracle-conformance.test.ts#L157" target="_blank" rel="noopener noreferrer"><code>oracle-conformance.test.ts</code></a></div></div>
52
52
  </details>
53
53
  <details class="compat-row" data-status="ok">
54
54
  <summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">getApp(name)</code><span class="compat-sub"><span class="compat-behavior"><code>getApp(name)</code> for a name that was never initialized throws <code>FirebaseError</code> code <code>app/no-app</code>, directing the caller to <code>initializeApp()</code></span></span></span></summary>
55
- <div class="compat-evidence"><div class="compat-probe">oracle: <code>app-registry-getapp-unknown-name</code> (firebase 12.13.0) + replay: <code>oracle-conformance.test.ts</code></div></div>
55
+ <div class="compat-evidence"><div class="compat-probe">oracle: <a href="https://github.com/davideast/pyric/blob/main/packages/conformance/observations/app/app-registry-getapp-unknown-name.json" target="_blank" rel="noopener noreferrer"><code>app-registry-getapp-unknown-name</code></a> (firebase 12.13.0) + replay: <a href="https://github.com/davideast/pyric/blob/main/packages/pyric/test/app/oracle-conformance.test.ts#L166" target="_blank" rel="noopener noreferrer"><code>oracle-conformance.test.ts</code></a></div></div>
56
56
  </details>
57
57
  <details class="compat-row" data-status="ok">
58
58
  <summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">getApps()</code><span class="compat-sub"><span class="compat-behavior"><code>getApps()</code> returns an array containing every registered app by identity (the exact instances, not copies)</span></span></span></summary>
59
- <div class="compat-evidence"><div class="compat-probe">oracle: <code>app-registry-getapps-contents</code> (firebase 12.13.0) + replay: <code>oracle-conformance.test.ts</code></div></div>
59
+ <div class="compat-evidence"><div class="compat-probe">oracle: <a href="https://github.com/davideast/pyric/blob/main/packages/conformance/observations/app/app-registry-getapps-contents.json" target="_blank" rel="noopener noreferrer"><code>app-registry-getapps-contents</code></a> (firebase 12.13.0) + replay: <a href="https://github.com/davideast/pyric/blob/main/packages/pyric/test/app/oracle-conformance.test.ts#L174" target="_blank" rel="noopener noreferrer"><code>oracle-conformance.test.ts</code></a></div></div>
60
60
  </details>
61
61
  <details class="compat-row" data-status="ok">
62
62
  <summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">deleteApp(app)</code><span class="compat-sub"><span class="compat-behavior"><code>deleteApp(app)</code> returns a Promise, deregisters the app (so <code>getApps()</code> shrinks), a later <code>getApp(name)</code> throws <code>app/no-app</code>, and the name can be re-initialized afterwards</span></span></span></summary>
63
- <div class="compat-evidence"><div class="compat-probe">oracle: <code>app-registry-deleteapp</code> (firebase 12.13.0) + replay: <code>oracle-conformance.test.ts</code></div></div>
63
+ <div class="compat-evidence"><div class="compat-probe">oracle: <a href="https://github.com/davideast/pyric/blob/main/packages/conformance/observations/app/app-registry-deleteapp.json" target="_blank" rel="noopener noreferrer"><code>app-registry-deleteapp</code></a> (firebase 12.13.0) + replay: <a href="https://github.com/davideast/pyric/blob/main/packages/pyric/test/app/oracle-conformance.test.ts#L185" target="_blank" rel="noopener noreferrer"><code>oracle-conformance.test.ts</code></a></div></div>
64
64
  </details>
65
65
  <details class="compat-row" data-status="ok">
66
66
  <summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">deleteApp(app)</code><span class="compat-sub"><span class="compat-behavior"><code>deleteApp</code> on an already-deleted app throws <code>FirebaseError</code> code <code>app/app-deleted</code></span></span></span></summary>
67
- <div class="compat-evidence"><div class="compat-probe">oracle: <code>app-registry-deleteapp-double</code> (firebase 12.13.0) + replay: <code>oracle-conformance.test.ts</code></div></div>
67
+ <div class="compat-evidence"><div class="compat-probe">oracle: <a href="https://github.com/davideast/pyric/blob/main/packages/conformance/observations/app/app-registry-deleteapp-double.json" target="_blank" rel="noopener noreferrer"><code>app-registry-deleteapp-double</code></a> (firebase 12.13.0) + replay: <a href="https://github.com/davideast/pyric/blob/main/packages/pyric/test/app/oracle-conformance.test.ts#L205" target="_blank" rel="noopener noreferrer"><code>oracle-conformance.test.ts</code></a></div></div>
68
68
  </details>
69
69
  <details class="compat-row" data-status="ok">
70
70
  <summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">SDK_VERSION</code><span class="compat-sub"><span class="compat-behavior"><code>SDK_VERSION</code> is the Firebase client SDK semver string whose behavior pyric currently mirrors, pinned to the oracle version (<code>12.13.0</code>)</span></span></span></summary>
71
- <div class="compat-evidence"><div class="compat-probe">oracle: <code>app-registry-sdk-version</code> (firebase 12.13.0) + replay: <code>oracle-conformance.test.ts</code></div></div>
71
+ <div class="compat-evidence"><div class="compat-probe">oracle: <a href="https://github.com/davideast/pyric/blob/main/packages/conformance/observations/app/app-registry-sdk-version.json" target="_blank" rel="noopener noreferrer"><code>app-registry-sdk-version</code></a> (firebase 12.13.0) + replay: <a href="https://github.com/davideast/pyric/blob/main/packages/pyric/test/app/oracle-conformance.test.ts#L370" target="_blank" rel="noopener noreferrer"><code>oracle-conformance.test.ts</code></a></div></div>
72
72
  </details>
73
73
  <details class="compat-row" data-status="ok">
74
74
  <summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">FirebaseError</code><span class="compat-sub"><span class="compat-behavior"><code>FirebaseError</code> is an app-owned Error subclass: <code>instanceof Error</code>, <code>constructor.name</code> is <code>'FirebaseError'</code>, and it preserves <code>.code</code> and <code>.message</code> without loading <code>firebase/app</code></span></span></span></summary>
75
- <div class="compat-evidence"><div class="compat-probe">oracle: <code>app-registry-firebaseerror-shape</code> (firebase 12.13.0) + replay: <code>oracle-conformance.test.ts</code></div></div>
75
+ <div class="compat-evidence"><div class="compat-probe">oracle: <a href="https://github.com/davideast/pyric/blob/main/packages/conformance/observations/app/app-registry-firebaseerror-shape.json" target="_blank" rel="noopener noreferrer"><code>app-registry-firebaseerror-shape</code></a> (firebase 12.13.0) + replay: <a href="https://github.com/davideast/pyric/blob/main/packages/pyric/test/app/oracle-conformance.test.ts#L379" target="_blank" rel="noopener noreferrer"><code>oracle-conformance.test.ts</code></a></div></div>
76
76
  </details>
77
77
  <details class="compat-row" data-status="ok">
78
78
  <summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">onLog / setLogLevel</code><span class="compat-sub"><span class="compat-behavior"><code>onLog(cb)</code> / <code>setLogLevel(level)</code> are a functioning app-owned diagnostic-logger seam: registering a handler returns undefined, raising the threshold takes effect, and a malformed <code>registerVersion</code> emits a <code>warn</code> entry (type <code>@firebase/app</code>) to the handler</span></span></span></summary>
79
- <div class="compat-evidence"><div class="compat-probe">oracle: <code>app-registry-onlog-setloglevel</code> (firebase 12.13.0) + replay: <code>oracle-conformance.test.ts</code></div></div>
79
+ <div class="compat-evidence"><div class="compat-probe">oracle: <a href="https://github.com/davideast/pyric/blob/main/packages/conformance/observations/app/app-registry-onlog-setloglevel.json" target="_blank" rel="noopener noreferrer"><code>app-registry-onlog-setloglevel</code></a> (firebase 12.13.0) + replay: <a href="https://github.com/davideast/pyric/blob/main/packages/pyric/test/app/oracle-conformance.test.ts#L390" target="_blank" rel="noopener noreferrer"><code>oracle-conformance.test.ts</code></a></div></div>
80
80
  </details>
81
81
  <details class="compat-row" data-status="ok">
82
82
  <summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">registerVersion</code><span class="compat-sub"><span class="compat-behavior"><code>registerVersion(library, version)</code> accepts a well-formed registration and returns undefined without throwing; malformed values emit the observed warning through the app-owned logger</span></span></span></summary>
83
- <div class="compat-evidence"><div class="compat-probe">oracle: <code>app-registry-registerversion</code> (firebase 12.13.0) + replay: <code>oracle-conformance.test.ts</code></div></div>
83
+ <div class="compat-evidence"><div class="compat-probe">oracle: <a href="https://github.com/davideast/pyric/blob/main/packages/conformance/observations/app/app-registry-registerversion.json" target="_blank" rel="noopener noreferrer"><code>app-registry-registerversion</code></a> (firebase 12.13.0) + replay: <a href="https://github.com/davideast/pyric/blob/main/packages/pyric/test/app/oracle-conformance.test.ts#L417" target="_blank" rel="noopener noreferrer"><code>oracle-conformance.test.ts</code></a></div></div>
84
84
  </details>
85
85
  <details class="compat-row" data-status="unsupported">
86
86
  <summary class="compat-line"><span class="compat-dot" data-status="unsupported" role="img" aria-label="Not implemented yet" title="Not implemented yet"></span><span class="compat-main"><code class="compat-api">initializeServerApp</code><span class="compat-sub"><span class="compat-behavior">Not implemented; disposition <code>app.server-app</code> owns the reviewed availability and rationale</span></span></span></summary>
@@ -88,47 +88,47 @@
88
88
  </details>
89
89
  <details class="compat-row" data-status="ok">
90
90
  <summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">initializeApp(options, settings)</code><span class="compat-sub"><span class="compat-behavior"><code>initializeApp</code> snapshots options, accepts a settings object, initializes <code>automaticDataCollectionEnabled</code>, and leaves that app property mutable</span></span></span></summary>
91
- <div class="compat-evidence"><div class="compat-probe">oracle: <code>app-registry-initializeapp-settings-options</code> (firebase 12.13.0) + replay: <code>oracle-conformance.test.ts</code></div></div>
91
+ <div class="compat-evidence"><div class="compat-probe">oracle: <a href="https://github.com/davideast/pyric/blob/main/packages/conformance/observations/app/app-registry-initializeapp-settings-options.json" target="_blank" rel="noopener noreferrer"><code>app-registry-initializeapp-settings-options</code></a> (firebase 12.13.0) + replay: <a href="https://github.com/davideast/pyric/blob/main/packages/pyric/test/app/oracle-conformance.test.ts#L279" target="_blank" rel="noopener noreferrer"><code>oracle-conformance.test.ts</code></a></div></div>
92
92
  </details>
93
93
  <details class="compat-row" data-status="ok">
94
94
  <summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">initializeApp(equalOptions, 'secondary')</code><span class="compat-sub"><span class="compat-behavior">Equal-config named apps are distinct app containers with equal option values and independent name-keyed registry identity</span></span></span></summary>
95
- <div class="compat-evidence"><div class="compat-probe">oracle: <code>app-registry-initializeapp-named-equal-config</code> (firebase 12.13.0) + replay: <code>oracle-conformance.test.ts</code></div></div>
95
+ <div class="compat-evidence"><div class="compat-probe">oracle: <a href="https://github.com/davideast/pyric/blob/main/packages/conformance/observations/app/app-registry-initializeapp-named-equal-config.json" target="_blank" rel="noopener noreferrer"><code>app-registry-initializeapp-named-equal-config</code></a> (firebase 12.13.0) + replay: <a href="https://github.com/davideast/pyric/blob/main/packages/pyric/test/app/oracle-conformance.test.ts#L296" target="_blank" rel="noopener noreferrer"><code>oracle-conformance.test.ts</code></a></div></div>
96
96
  </details>
97
97
  <details class="compat-row" data-status="ok">
98
98
  <summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">getAuth/getFirestore/getDatabase/getStorage(app)</code><span class="compat-sub"><span class="compat-behavior">Equal-config named apps own distinct app-associated service handles while resolving the same configured RTDB and Storage backend locators</span></span></span></summary>
99
- <div class="compat-evidence"><div class="compat-probe">oracle: <code>app-registry-multi-app-service-containers</code> (firebase 12.13.0) + replay: <code>oracle-conformance.test.ts</code></div></div>
99
+ <div class="compat-evidence"><div class="compat-probe">oracle: <a href="https://github.com/davideast/pyric/blob/main/packages/conformance/observations/app/app-registry-multi-app-service-containers.json" target="_blank" rel="noopener noreferrer"><code>app-registry-multi-app-service-containers</code></a> (firebase 12.13.0) + replay: <a href="https://github.com/davideast/pyric/blob/main/packages/pyric/test/app/oracle-conformance.test.ts#L307" target="_blank" rel="noopener noreferrer"><code>oracle-conformance.test.ts</code></a></div></div>
100
100
  </details>
101
101
  <details class="compat-row" data-status="diverged">
102
102
  <summary class="compat-line"><span class="compat-dot" data-status="diverged" role="img" aria-label="Diverged (documented)" title="Diverged (documented)"></span><span class="compat-main"><code class="compat-api">initializeApp(differentOptions, 'secondary')</code><span class="compat-sub"><span class="compat-behavior">Production permits a differently configured named app; Pyric rejects it because one runtime currently owns exactly one sandbox backend</span></span></span></summary>
103
- <div class="compat-evidence"><div class="compat-probe">oracle: <code>app-registry-initializeapp-named-different-config</code> (firebase 12.13.0) + replay pins <code>app/multiple-configs-not-supported</code>; <code>packages/cli/test/e2e/app-multi-app.pw.ts</code> proves the same lock is enforced by the authoritative SharedWorker across same-origin tabs, not only by one page registry</div></div>
103
+ <div class="compat-evidence"><div class="compat-probe">oracle: <a href="https://github.com/davideast/pyric/blob/main/packages/conformance/observations/app/app-registry-initializeapp-named-different-config.json" target="_blank" rel="noopener noreferrer"><code>app-registry-initializeapp-named-different-config</code></a> (firebase 12.13.0) + replay pins <code>app/multiple-configs-not-supported</code>; <a href="https://github.com/davideast/pyric/blob/main/packages/cli/test/e2e/app-multi-app.pw.ts#L148" target="_blank" rel="noopener noreferrer"><code>packages/cli/test/e2e/app-multi-app.pw.ts</code></a> proves the same lock is enforced by the authoritative SharedWorker across same-origin tabs, not only by one page registry (Structured evidence: <a href="https://github.com/davideast/pyric/blob/main/packages/pyric/test/app/oracle-conformance.test.ts#L340" target="_blank" rel="noopener noreferrer"><code>oracle-conformance.test.ts</code></a>)</div></div>
104
104
  </details>
105
105
  <details class="compat-row" data-status="diverged">
106
106
  <summary class="compat-line"><span class="compat-dot" data-status="diverged" role="img" aria-label="Diverged (documented)" title="Diverged (documented)"></span><span class="compat-main"><code class="compat-api">deleteApp(app); initializeApp(differentOptions)</code><span class="compat-sub"><span class="compat-behavior">Production permits a different configuration after deletion; Pyric retains the runtime backend lock and rejects the reinitialization</span></span></span></summary>
107
- <div class="compat-evidence"><div class="compat-probe">oracle: <code>app-registry-delete-reinitialize-different-config</code> (firebase 12.13.0) + replay pins <code>app/multiple-configs-not-supported</code></div></div>
107
+ <div class="compat-evidence"><div class="compat-probe">oracle: <a href="https://github.com/davideast/pyric/blob/main/packages/conformance/observations/app/app-registry-delete-reinitialize-different-config.json" target="_blank" rel="noopener noreferrer"><code>app-registry-delete-reinitialize-different-config</code></a> (firebase 12.13.0) + replay pins <code>app/multiple-configs-not-supported</code> (Structured evidence: <a href="https://github.com/davideast/pyric/blob/main/packages/pyric/test/app/oracle-conformance.test.ts#L351" target="_blank" rel="noopener noreferrer"><code>oracle-conformance.test.ts</code></a>)</div></div>
108
108
  </details>
109
109
  <details class="compat-row" data-status="ok">
110
110
  <summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">initializeApp()</code><span class="compat-sub"><span class="compat-behavior">Without Hosting-provided defaults, omitting options throws FirebaseError code <code>app/no-options</code> with the production message</span></span></span></summary>
111
- <div class="compat-evidence"><div class="compat-probe">oracle: <code>app-registry-initializeapp-no-options</code> (firebase 12.13.0) + replay: <code>oracle-conformance.test.ts</code></div></div>
111
+ <div class="compat-evidence"><div class="compat-probe">oracle: <a href="https://github.com/davideast/pyric/blob/main/packages/conformance/observations/app/app-registry-initializeapp-no-options.json" target="_blank" rel="noopener noreferrer"><code>app-registry-initializeapp-no-options</code></a> (firebase 12.13.0) + replay: <a href="https://github.com/davideast/pyric/blob/main/packages/pyric/test/app/oracle-conformance.test.ts#L362" target="_blank" rel="noopener noreferrer"><code>oracle-conformance.test.ts</code></a></div></div>
112
112
  </details>
113
113
  <details class="compat-row" data-status="ok">
114
114
  <summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">getAuth/getFirestore/getDatabase/getStorage()</code><span class="compat-sub"><span class="compat-behavior">With a registered default app, each no-argument service factory resolves a service associated with that exact default app</span></span></span></summary>
115
- <div class="compat-evidence"><div class="compat-probe">oracle: <code>app-registry-default-service-factories</code> (firebase 12.13.0) + replay: <code>oracle-conformance.test.ts</code></div></div>
115
+ <div class="compat-evidence"><div class="compat-probe">oracle: <a href="https://github.com/davideast/pyric/blob/main/packages/conformance/observations/app/app-registry-default-service-factories.json" target="_blank" rel="noopener noreferrer"><code>app-registry-default-service-factories</code></a> (firebase 12.13.0) + replay: <a href="https://github.com/davideast/pyric/blob/main/packages/pyric/test/app/oracle-conformance.test.ts#L100" target="_blank" rel="noopener noreferrer"><code>oracle-conformance.test.ts</code></a></div></div>
116
116
  </details>
117
117
  <details class="compat-row" data-status="ok">
118
118
  <summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">initializeApp(equalOptions, name)</code><span class="compat-sub"><span class="compat-behavior">Equal-config app instances connect to one logical backend: data written through one app is readable through another, while their active Auth sessions remain independent</span></span></span></summary>
119
- <div class="compat-evidence"><div class="compat-probe">oracle: <code>app-production-multi-app-topology</code> (firebase 12.13.0, real Chromium against production) + twin replay: <code>production-multi-app-oracle.test.ts</code>; served SharedWorker replay: <code>app-multi-app.pw.ts</code></div></div>
119
+ <div class="compat-evidence"><div class="compat-probe">oracle: <a href="https://github.com/davideast/pyric/blob/main/packages/conformance/observations/app/app-production-multi-app-topology.json" target="_blank" rel="noopener noreferrer"><code>app-production-multi-app-topology</code></a> (firebase 12.13.0, real Chromium against production) + twin replay: <a href="https://github.com/davideast/pyric/blob/main/packages/pyric/test/app/production-multi-app-oracle.test.ts#L15" target="_blank" rel="noopener noreferrer"><code>production-multi-app-oracle.test.ts</code></a>; served SharedWorker replay: <a href="https://github.com/davideast/pyric/blob/main/packages/cli/test/e2e/app-multi-app.pw.ts#L148" target="_blank" rel="noopener noreferrer"><code>app-multi-app.pw.ts</code></a></div></div>
120
120
  </details>
121
121
  <details class="compat-row" data-status="ok">
122
122
  <summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">deleteApp(app); app.name / app.options / app.automaticDataCollectionEnabled</code><span class="compat-sub"><span class="compat-behavior">After deletion resolves, every public FirebaseApp property accessor throws <code>FirebaseError</code> code <code>app/app-deleted</code></span></span></span></summary>
123
- <div class="compat-evidence"><div class="compat-probe">oracle: <code>app-registry-deleted-property-access</code> (firebase 12.13.0) + replay: <code>oracle-conformance.test.ts</code></div></div>
123
+ <div class="compat-evidence"><div class="compat-probe">oracle: <a href="https://github.com/davideast/pyric/blob/main/packages/conformance/observations/app/app-registry-deleted-property-access.json" target="_blank" rel="noopener noreferrer"><code>app-registry-deleted-property-access</code></a> (firebase 12.13.0) + replay: <a href="https://github.com/davideast/pyric/blob/main/packages/pyric/test/app/oracle-conformance.test.ts#L215" target="_blank" rel="noopener noreferrer"><code>oracle-conformance.test.ts</code></a></div></div>
124
124
  </details>
125
125
  <details class="compat-row" data-status="ok">
126
126
  <summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">deleteApp(app); getAuth/getFirestore/getDatabase/getStorage/getAI(app)</code><span class="compat-sub"><span class="compat-behavior">After deletion, fresh Auth/Firestore/RTDB/Storage factories reject; cached factories return retained handles; retained Auth sign-out resolves but a new anonymous sign-in rejects <code>app/app-deleted</code>; Firestore reads report termination, RTDB refuses new refs, Storage refs remain constructible, and <code>getAI(deletedApp)</code> returns an app-associated handle</span></span></span></summary>
127
- <div class="compat-evidence"><div class="compat-probe">oracles: <code>app-registry-deleted-service-factories</code> and real-Chromium <code>app-production-multi-app-topology</code> (firebase 12.13.0) + replays: <code>oracle-conformance.test.ts</code>, <code>deleted-service-lifecycle.test.ts</code>, and <code>production-multi-app-oracle.test.ts</code></div></div>
127
+ <div class="compat-evidence"><div class="compat-probe">oracles: <a href="https://github.com/davideast/pyric/blob/main/packages/conformance/observations/app/app-registry-deleted-service-factories.json" target="_blank" rel="noopener noreferrer"><code>app-registry-deleted-service-factories</code></a> and real-Chromium <a href="https://github.com/davideast/pyric/blob/main/packages/conformance/observations/app/app-production-multi-app-topology.json" target="_blank" rel="noopener noreferrer"><code>app-production-multi-app-topology</code></a> (firebase 12.13.0) + replays: <a href="https://github.com/davideast/pyric/blob/main/packages/pyric/test/app/oracle-conformance.test.ts#L237" target="_blank" rel="noopener noreferrer"><code>oracle-conformance.test.ts</code></a>, <a href="https://github.com/davideast/pyric/blob/main/packages/pyric/test/app/deleted-service-lifecycle.test.ts#L23" target="_blank" rel="noopener noreferrer"><code>deleted-service-lifecycle.test.ts</code></a>, and <a href="https://github.com/davideast/pyric/blob/main/packages/pyric/test/app/production-multi-app-oracle.test.ts#L15" target="_blank" rel="noopener noreferrer"><code>production-multi-app-oracle.test.ts</code></a></div></div>
128
128
  </details>
129
129
  <details class="compat-row" data-status="ok">
130
130
  <summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">deleteApp(app)</code><span class="compat-sub"><span class="compat-behavior">Deleting one app terminates its Firestore listener through the error callback with code <code>aborted</code>, silently stops its RTDB listener, and leaves equal-config sibling listeners and the shared backend usable</span></span></span></summary>
131
- <div class="compat-evidence"><div class="compat-probe">oracle: <code>app-production-multi-app-topology</code> (firebase 12.13.0, real Chromium against production) + twin replay: <code>production-multi-app-oracle.test.ts</code>; focused family tests: <code>multi-app-listener-auth.test.ts</code> and served <code>app-multi-app.pw.ts</code></div></div>
131
+ <div class="compat-evidence"><div class="compat-probe">oracle: <a href="https://github.com/davideast/pyric/blob/main/packages/conformance/observations/app/app-production-multi-app-topology.json" target="_blank" rel="noopener noreferrer"><code>app-production-multi-app-topology</code></a> (firebase 12.13.0, real Chromium against production) + twin replay: <a href="https://github.com/davideast/pyric/blob/main/packages/pyric/test/app/production-multi-app-oracle.test.ts#L15" target="_blank" rel="noopener noreferrer"><code>production-multi-app-oracle.test.ts</code></a>; focused family tests: <a href="https://github.com/davideast/pyric/blob/main/packages/pyric/test/app/multi-app-listener-auth.test.ts#L2" target="_blank" rel="noopener noreferrer"><code>multi-app-listener-auth.test.ts</code></a> and served <a href="https://github.com/davideast/pyric/blob/main/packages/cli/test/e2e/app-multi-app.pw.ts#L183" target="_blank" rel="noopener noreferrer"><code>app-multi-app.pw.ts</code></a></div></div>
132
132
  </details>
133
133
  <details class="compat-row" data-status="unverified">
134
134
  <summary class="compat-line"><span class="compat-dot" data-status="unverified" role="img" aria-label="Unverified" title="Unverified"></span><span class="compat-main"><code class="compat-api">getAI(app, customEngine); deleteApp(app); retainedModel operation</code><span class="compat-sub"><span class="compat-behavior">Served worker mode rejects page-local custom AnswerEngine objects; a model retained from a deleted app rejects, while an equal-config sibling model remains usable through its own app-scoped worker port</span></span></span></summary>
@@ -144,9 +144,9 @@ Known differences between Pyric and production Firebase. Each remains tracked as
144
144
 
145
145
  <div class="compat-list">
146
146
  <details class="compat-row" data-status="diverged"><summary class="compat-line"><span class="compat-dot" data-status="diverged" role="img" aria-label="Diverged (documented)" title="Diverged (documented)"></span><span class="compat-main"><code class="compat-api">initializeApp(differentOptions, 'secondary')</code><span class="compat-sub"><span class="compat-behavior">Production permits a differently configured named app; Pyric rejects it because one runtime currently owns exactly one sandbox backend</span></span></span></summary>
147
- <div class="compat-evidence"><div class="compat-note">oracle: <code>app-registry-initializeapp-named-different-config</code> (firebase 12.13.0) + replay pins <code>app/multiple-configs-not-supported</code>; <code>packages/cli/test/e2e/app-multi-app.pw.ts</code> proves the same lock is enforced by the authoritative SharedWorker across same-origin tabs, not only by one page registry</div></div></details>
147
+ <div class="compat-evidence"><div class="compat-note">oracle: <a href="https://github.com/davideast/pyric/blob/main/packages/conformance/observations/app/app-registry-initializeapp-named-different-config.json" target="_blank" rel="noopener noreferrer"><code>app-registry-initializeapp-named-different-config</code></a> (firebase 12.13.0) + replay pins <code>app/multiple-configs-not-supported</code>; <a href="https://github.com/davideast/pyric/blob/main/packages/cli/test/e2e/app-multi-app.pw.ts#L148" target="_blank" rel="noopener noreferrer"><code>packages/cli/test/e2e/app-multi-app.pw.ts</code></a> proves the same lock is enforced by the authoritative SharedWorker across same-origin tabs, not only by one page registry (Structured evidence: <a href="https://github.com/davideast/pyric/blob/main/packages/pyric/test/app/oracle-conformance.test.ts#L340" target="_blank" rel="noopener noreferrer"><code>oracle-conformance.test.ts</code></a>)</div></div></details>
148
148
  <details class="compat-row" data-status="diverged"><summary class="compat-line"><span class="compat-dot" data-status="diverged" role="img" aria-label="Diverged (documented)" title="Diverged (documented)"></span><span class="compat-main"><code class="compat-api">deleteApp(app); initializeApp(differentOptions)</code><span class="compat-sub"><span class="compat-behavior">Production permits a different configuration after deletion; Pyric retains the runtime backend lock and rejects the reinitialization</span></span></span></summary>
149
- <div class="compat-evidence"><div class="compat-note">oracle: <code>app-registry-delete-reinitialize-different-config</code> (firebase 12.13.0) + replay pins <code>app/multiple-configs-not-supported</code></div></div></details>
149
+ <div class="compat-evidence"><div class="compat-note">oracle: <a href="https://github.com/davideast/pyric/blob/main/packages/conformance/observations/app/app-registry-delete-reinitialize-different-config.json" target="_blank" rel="noopener noreferrer"><code>app-registry-delete-reinitialize-different-config</code></a> (firebase 12.13.0) + replay pins <code>app/multiple-configs-not-supported</code> (Structured evidence: <a href="https://github.com/davideast/pyric/blob/main/packages/pyric/test/app/oracle-conformance.test.ts#L351" target="_blank" rel="noopener noreferrer"><code>oracle-conformance.test.ts</code></a>)</div></div></details>
150
150
  </div>
151
151
 
152
152
  ### Not implemented yet