@pyric/cli 0.1.0-alpha.30.1 → 0.1.0-alpha.31

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 (1365) hide show
  1. package/dist/assurance/.generated/conformance-verdicts.d.ts +111 -40
  2. package/dist/assurance/.generated/conformance-verdicts.d.ts.map +1 -1
  3. package/dist/assurance/.generated/conformance-verdicts.js +111 -40
  4. package/dist/assurance/.generated/conformance-verdicts.js.map +1 -1
  5. package/dist/assurance/capabilities.d.ts.map +1 -1
  6. package/dist/assurance/capabilities.js +12 -14
  7. package/dist/assurance/capabilities.js.map +1 -1
  8. package/dist/bounded-request.d.ts +27 -5
  9. package/dist/bounded-request.d.ts.map +1 -1
  10. package/dist/bounded-request.js +48 -4
  11. package/dist/bounded-request.js.map +1 -1
  12. package/dist/bridge/client/bridge-url.d.ts +5 -1
  13. package/dist/bridge/client/bridge-url.d.ts.map +1 -1
  14. package/dist/bridge/client/bridge-url.js +5 -1
  15. package/dist/bridge/client/bridge-url.js.map +1 -1
  16. package/dist/bridge/client/bridge.d.ts +9 -3
  17. package/dist/bridge/client/bridge.d.ts.map +1 -1
  18. package/dist/bridge/client/bridge.js +17 -3
  19. package/dist/bridge/client/bridge.js.map +1 -1
  20. package/dist/bridge/frame-output.d.ts.map +1 -1
  21. package/dist/bridge/frame-output.js +46 -0
  22. package/dist/bridge/frame-output.js.map +1 -1
  23. package/dist/bridge/protocol.d.ts +10 -0
  24. package/dist/bridge/protocol.d.ts.map +1 -1
  25. package/dist/bridge/protocol.js +10 -0
  26. package/dist/bridge/protocol.js.map +1 -1
  27. package/dist/bridge/server/in-process.d.ts +16 -7
  28. package/dist/bridge/server/in-process.d.ts.map +1 -1
  29. package/dist/bridge/server/in-process.js +51 -17
  30. package/dist/bridge/server/in-process.js.map +1 -1
  31. package/dist/bridge/server/peer.d.ts +18 -0
  32. package/dist/bridge/server/peer.d.ts.map +1 -1
  33. package/dist/bridge/server/peer.js +56 -1
  34. package/dist/bridge/server/peer.js.map +1 -1
  35. package/dist/bridge/server/standalone.d.ts +7 -2
  36. package/dist/bridge/server/standalone.d.ts.map +1 -1
  37. package/dist/bridge/server/standalone.js +27 -99
  38. package/dist/bridge/server/standalone.js.map +1 -1
  39. package/dist/bridge/surface/arguments/firestore.d.ts +6 -6
  40. package/dist/bridge/surface/arguments/sandbox.d.ts +0 -47
  41. package/dist/bridge/surface/arguments/sandbox.d.ts.map +1 -1
  42. package/dist/bridge/surface/arguments/sandbox.js +2 -59
  43. package/dist/bridge/surface/arguments/sandbox.js.map +1 -1
  44. package/dist/bridge/surface/arguments/seed.d.ts +61 -0
  45. package/dist/bridge/surface/arguments/seed.d.ts.map +1 -0
  46. package/dist/bridge/surface/arguments/seed.js +67 -0
  47. package/dist/bridge/surface/arguments/seed.js.map +1 -0
  48. package/dist/bridge/surface/arguments/storage.d.ts +2 -2
  49. package/dist/bridge/surface/context.d.ts +5 -10
  50. package/dist/bridge/surface/context.d.ts.map +1 -1
  51. package/dist/bridge/surface/context.js +11 -23
  52. package/dist/bridge/surface/context.js.map +1 -1
  53. package/dist/bridge/surface/database-instance-catalog.d.ts +0 -3
  54. package/dist/bridge/surface/database-instance-catalog.d.ts.map +1 -1
  55. package/dist/bridge/surface/database-instance-catalog.js +4 -27
  56. package/dist/bridge/surface/database-instance-catalog.js.map +1 -1
  57. package/dist/bridge/surface/database-instance-project.d.ts +5 -0
  58. package/dist/bridge/surface/database-instance-project.d.ts.map +1 -0
  59. package/dist/bridge/surface/database-instance-project.js +32 -0
  60. package/dist/bridge/surface/database-instance-project.js.map +1 -0
  61. package/dist/bridge/surface/database-instance.d.ts +3 -3
  62. package/dist/bridge/surface/database-instance.d.ts.map +1 -1
  63. package/dist/bridge/surface/database-instance.js +1 -2
  64. package/dist/bridge/surface/database-instance.js.map +1 -1
  65. package/dist/bridge/surface/functions-runtime.d.ts +2 -2
  66. package/dist/bridge/surface/functions-runtime.js +5 -5
  67. package/dist/bridge/surface/functions-runtime.js.map +1 -1
  68. package/dist/bridge/surface/held-identity.d.ts +4 -4
  69. package/dist/bridge/surface/held-identity.d.ts.map +1 -1
  70. package/dist/bridge/surface/held-identity.js.map +1 -1
  71. package/dist/bridge/surface/manifest.sandbox.generated.d.ts +3 -0
  72. package/dist/bridge/surface/manifest.sandbox.generated.d.ts.map +1 -0
  73. package/dist/bridge/surface/manifest.sandbox.generated.js +135 -0
  74. package/dist/bridge/surface/manifest.sandbox.generated.js.map +1 -0
  75. package/dist/bridge/surface/method-types.d.ts +48 -7
  76. package/dist/bridge/surface/method-types.d.ts.map +1 -1
  77. package/dist/bridge/surface/method-types.js +15 -0
  78. package/dist/bridge/surface/method-types.js.map +1 -1
  79. package/dist/bridge/surface/methods/ai_logic/clearScripts.d.ts +2 -1
  80. package/dist/bridge/surface/methods/ai_logic/clearScripts.d.ts.map +1 -1
  81. package/dist/bridge/surface/methods/ai_logic/clearScripts.js +2 -1
  82. package/dist/bridge/surface/methods/ai_logic/clearScripts.js.map +1 -1
  83. package/dist/bridge/surface/methods/ai_logic/script.d.ts +2 -1
  84. package/dist/bridge/surface/methods/ai_logic/script.d.ts.map +1 -1
  85. package/dist/bridge/surface/methods/ai_logic/script.js +2 -1
  86. package/dist/bridge/surface/methods/ai_logic/script.js.map +1 -1
  87. package/dist/bridge/surface/methods/ai_logic/scripts.d.ts +2 -1
  88. package/dist/bridge/surface/methods/ai_logic/scripts.d.ts.map +1 -1
  89. package/dist/bridge/surface/methods/ai_logic/scripts.js +2 -1
  90. package/dist/bridge/surface/methods/ai_logic/scripts.js.map +1 -1
  91. package/dist/bridge/surface/methods/ai_logic/status.d.ts +2 -1
  92. package/dist/bridge/surface/methods/ai_logic/status.d.ts.map +1 -1
  93. package/dist/bridge/surface/methods/ai_logic/status.js +1 -0
  94. package/dist/bridge/surface/methods/ai_logic/status.js.map +1 -1
  95. package/dist/bridge/surface/methods/assurance/attach.d.ts +1 -0
  96. package/dist/bridge/surface/methods/assurance/attach.d.ts.map +1 -1
  97. package/dist/bridge/surface/methods/assurance/attach.js +1 -0
  98. package/dist/bridge/surface/methods/assurance/attach.js.map +1 -1
  99. package/dist/bridge/surface/methods/assurance/canIUse.d.ts +1 -0
  100. package/dist/bridge/surface/methods/assurance/canIUse.d.ts.map +1 -1
  101. package/dist/bridge/surface/methods/assurance/canIUse.js +1 -0
  102. package/dist/bridge/surface/methods/assurance/canIUse.js.map +1 -1
  103. package/dist/bridge/surface/methods/assurance/define.d.ts +1 -0
  104. package/dist/bridge/surface/methods/assurance/define.d.ts.map +1 -1
  105. package/dist/bridge/surface/methods/assurance/define.js +1 -0
  106. package/dist/bridge/surface/methods/assurance/define.js.map +1 -1
  107. package/dist/bridge/surface/methods/assurance/export.d.ts +1 -0
  108. package/dist/bridge/surface/methods/assurance/export.d.ts.map +1 -1
  109. package/dist/bridge/surface/methods/assurance/export.js +1 -0
  110. package/dist/bridge/surface/methods/assurance/export.js.map +1 -1
  111. package/dist/bridge/surface/methods/assurance/inspect.d.ts +1 -0
  112. package/dist/bridge/surface/methods/assurance/inspect.d.ts.map +1 -1
  113. package/dist/bridge/surface/methods/assurance/inspect.js +1 -0
  114. package/dist/bridge/surface/methods/assurance/inspect.js.map +1 -1
  115. package/dist/bridge/surface/methods/assurance/map.d.ts +1 -0
  116. package/dist/bridge/surface/methods/assurance/map.d.ts.map +1 -1
  117. package/dist/bridge/surface/methods/assurance/map.js +1 -0
  118. package/dist/bridge/surface/methods/assurance/map.js.map +1 -1
  119. package/dist/bridge/surface/methods/assurance/minimize.d.ts +1 -0
  120. package/dist/bridge/surface/methods/assurance/minimize.d.ts.map +1 -1
  121. package/dist/bridge/surface/methods/assurance/minimize.js +1 -0
  122. package/dist/bridge/surface/methods/assurance/minimize.js.map +1 -1
  123. package/dist/bridge/surface/methods/assurance/propose.d.ts +1 -0
  124. package/dist/bridge/surface/methods/assurance/propose.d.ts.map +1 -1
  125. package/dist/bridge/surface/methods/assurance/propose.js +1 -0
  126. package/dist/bridge/surface/methods/assurance/propose.js.map +1 -1
  127. package/dist/bridge/surface/methods/assurance/replaySession.d.ts +1 -0
  128. package/dist/bridge/surface/methods/assurance/replaySession.d.ts.map +1 -1
  129. package/dist/bridge/surface/methods/assurance/replaySession.js +1 -0
  130. package/dist/bridge/surface/methods/assurance/replaySession.js.map +1 -1
  131. package/dist/bridge/surface/methods/assurance/run.d.ts +1 -0
  132. package/dist/bridge/surface/methods/assurance/run.d.ts.map +1 -1
  133. package/dist/bridge/surface/methods/assurance/run.js +1 -0
  134. package/dist/bridge/surface/methods/assurance/run.js.map +1 -1
  135. package/dist/bridge/surface/methods/assurance/start.d.ts +1 -0
  136. package/dist/bridge/surface/methods/assurance/start.d.ts.map +1 -1
  137. package/dist/bridge/surface/methods/assurance/start.js +1 -0
  138. package/dist/bridge/surface/methods/assurance/start.js.map +1 -1
  139. package/dist/bridge/surface/methods/assurance/testRulesHosted.d.ts +1 -0
  140. package/dist/bridge/surface/methods/assurance/testRulesHosted.d.ts.map +1 -1
  141. package/dist/bridge/surface/methods/assurance/testRulesHosted.js +1 -0
  142. package/dist/bridge/surface/methods/assurance/testRulesHosted.js.map +1 -1
  143. package/dist/bridge/surface/methods/assurance/verify.d.ts +1 -0
  144. package/dist/bridge/surface/methods/assurance/verify.d.ts.map +1 -1
  145. package/dist/bridge/surface/methods/assurance/verify.js +1 -0
  146. package/dist/bridge/surface/methods/assurance/verify.js.map +1 -1
  147. package/dist/bridge/surface/methods/assurance/verifyCases.d.ts +1 -0
  148. package/dist/bridge/surface/methods/assurance/verifyCases.d.ts.map +1 -1
  149. package/dist/bridge/surface/methods/assurance/verifyCases.js +1 -0
  150. package/dist/bridge/surface/methods/assurance/verifyCases.js.map +1 -1
  151. package/dist/bridge/surface/methods/auth/actAsAdmin.d.ts +2 -1
  152. package/dist/bridge/surface/methods/auth/actAsAdmin.d.ts.map +1 -1
  153. package/dist/bridge/surface/methods/auth/actAsAdmin.js +1 -0
  154. package/dist/bridge/surface/methods/auth/actAsAdmin.js.map +1 -1
  155. package/dist/bridge/surface/methods/auth/actAsAnonymous.d.ts +2 -1
  156. package/dist/bridge/surface/methods/auth/actAsAnonymous.d.ts.map +1 -1
  157. package/dist/bridge/surface/methods/auth/actAsAnonymous.js +1 -0
  158. package/dist/bridge/surface/methods/auth/actAsAnonymous.js.map +1 -1
  159. package/dist/bridge/surface/methods/auth/createCustomToken.d.ts +1 -0
  160. package/dist/bridge/surface/methods/auth/createCustomToken.d.ts.map +1 -1
  161. package/dist/bridge/surface/methods/auth/createCustomToken.js +1 -0
  162. package/dist/bridge/surface/methods/auth/createCustomToken.js.map +1 -1
  163. package/dist/bridge/surface/methods/auth/createUser.d.ts +2 -1
  164. package/dist/bridge/surface/methods/auth/createUser.d.ts.map +1 -1
  165. package/dist/bridge/surface/methods/auth/createUser.js +2 -1
  166. package/dist/bridge/surface/methods/auth/createUser.js.map +1 -1
  167. package/dist/bridge/surface/methods/auth/deleteUser.d.ts +2 -1
  168. package/dist/bridge/surface/methods/auth/deleteUser.d.ts.map +1 -1
  169. package/dist/bridge/surface/methods/auth/deleteUser.js +2 -1
  170. package/dist/bridge/surface/methods/auth/deleteUser.js.map +1 -1
  171. package/dist/bridge/surface/methods/auth/getUser.d.ts +2 -1
  172. package/dist/bridge/surface/methods/auth/getUser.d.ts.map +1 -1
  173. package/dist/bridge/surface/methods/auth/getUser.js +2 -1
  174. package/dist/bridge/surface/methods/auth/getUser.js.map +1 -1
  175. package/dist/bridge/surface/methods/auth/getUserByEmail.d.ts +2 -1
  176. package/dist/bridge/surface/methods/auth/getUserByEmail.d.ts.map +1 -1
  177. package/dist/bridge/surface/methods/auth/getUserByEmail.js +2 -1
  178. package/dist/bridge/surface/methods/auth/getUserByEmail.js.map +1 -1
  179. package/dist/bridge/surface/methods/auth/impersonate.d.ts +2 -1
  180. package/dist/bridge/surface/methods/auth/impersonate.d.ts.map +1 -1
  181. package/dist/bridge/surface/methods/auth/impersonate.js +1 -0
  182. package/dist/bridge/surface/methods/auth/impersonate.js.map +1 -1
  183. package/dist/bridge/surface/methods/auth/importUsers.d.ts +2 -1
  184. package/dist/bridge/surface/methods/auth/importUsers.d.ts.map +1 -1
  185. package/dist/bridge/surface/methods/auth/importUsers.js +3 -2
  186. package/dist/bridge/surface/methods/auth/importUsers.js.map +1 -1
  187. package/dist/bridge/surface/methods/auth/listUsers.d.ts +2 -1
  188. package/dist/bridge/surface/methods/auth/listUsers.d.ts.map +1 -1
  189. package/dist/bridge/surface/methods/auth/listUsers.js +2 -1
  190. package/dist/bridge/surface/methods/auth/listUsers.js.map +1 -1
  191. package/dist/bridge/surface/methods/auth/sessions.d.ts +2 -1
  192. package/dist/bridge/surface/methods/auth/sessions.d.ts.map +1 -1
  193. package/dist/bridge/surface/methods/auth/sessions.js +1 -0
  194. package/dist/bridge/surface/methods/auth/sessions.js.map +1 -1
  195. package/dist/bridge/surface/methods/auth/setCustomUserClaims.d.ts +2 -1
  196. package/dist/bridge/surface/methods/auth/setCustomUserClaims.d.ts.map +1 -1
  197. package/dist/bridge/surface/methods/auth/setCustomUserClaims.js +2 -1
  198. package/dist/bridge/surface/methods/auth/setCustomUserClaims.js.map +1 -1
  199. package/dist/bridge/surface/methods/auth/signInAnonymously.d.ts +2 -1
  200. package/dist/bridge/surface/methods/auth/signInAnonymously.d.ts.map +1 -1
  201. package/dist/bridge/surface/methods/auth/signInAnonymously.js +1 -0
  202. package/dist/bridge/surface/methods/auth/signInAnonymously.js.map +1 -1
  203. package/dist/bridge/surface/methods/auth/signInWithCredential.d.ts +2 -1
  204. package/dist/bridge/surface/methods/auth/signInWithCredential.d.ts.map +1 -1
  205. package/dist/bridge/surface/methods/auth/signInWithCredential.js +1 -0
  206. package/dist/bridge/surface/methods/auth/signInWithCredential.js.map +1 -1
  207. package/dist/bridge/surface/methods/auth/signInWithCustomToken.d.ts +2 -1
  208. package/dist/bridge/surface/methods/auth/signInWithCustomToken.d.ts.map +1 -1
  209. package/dist/bridge/surface/methods/auth/signInWithCustomToken.js +1 -0
  210. package/dist/bridge/surface/methods/auth/signInWithCustomToken.js.map +1 -1
  211. package/dist/bridge/surface/methods/auth/signInWithEmailAndPassword.d.ts +2 -1
  212. package/dist/bridge/surface/methods/auth/signInWithEmailAndPassword.d.ts.map +1 -1
  213. package/dist/bridge/surface/methods/auth/signInWithEmailAndPassword.js +1 -0
  214. package/dist/bridge/surface/methods/auth/signInWithEmailAndPassword.js.map +1 -1
  215. package/dist/bridge/surface/methods/auth/signOut.d.ts +2 -1
  216. package/dist/bridge/surface/methods/auth/signOut.d.ts.map +1 -1
  217. package/dist/bridge/surface/methods/auth/signOut.js +1 -0
  218. package/dist/bridge/surface/methods/auth/signOut.js.map +1 -1
  219. package/dist/bridge/surface/methods/auth/takeAuthMail.d.ts +2 -1
  220. package/dist/bridge/surface/methods/auth/takeAuthMail.d.ts.map +1 -1
  221. package/dist/bridge/surface/methods/auth/takeAuthMail.js +1 -0
  222. package/dist/bridge/surface/methods/auth/takeAuthMail.js.map +1 -1
  223. package/dist/bridge/surface/methods/auth/updateUser.d.ts +2 -1
  224. package/dist/bridge/surface/methods/auth/updateUser.d.ts.map +1 -1
  225. package/dist/bridge/surface/methods/auth/updateUser.js +2 -1
  226. package/dist/bridge/surface/methods/auth/updateUser.js.map +1 -1
  227. package/dist/bridge/surface/methods/auth/useAppSession.d.ts +2 -1
  228. package/dist/bridge/surface/methods/auth/useAppSession.d.ts.map +1 -1
  229. package/dist/bridge/surface/methods/auth/useAppSession.js +1 -0
  230. package/dist/bridge/surface/methods/auth/useAppSession.js.map +1 -1
  231. package/dist/bridge/surface/methods/auth/whoami.d.ts +2 -1
  232. package/dist/bridge/surface/methods/auth/whoami.d.ts.map +1 -1
  233. package/dist/bridge/surface/methods/auth/whoami.js +1 -0
  234. package/dist/bridge/surface/methods/auth/whoami.js.map +1 -1
  235. package/dist/bridge/surface/methods/database/crawl.d.ts +2 -1
  236. package/dist/bridge/surface/methods/database/crawl.d.ts.map +1 -1
  237. package/dist/bridge/surface/methods/database/crawl.js +1 -0
  238. package/dist/bridge/surface/methods/database/crawl.js.map +1 -1
  239. package/dist/bridge/surface/methods/database/get.d.ts +2 -1
  240. package/dist/bridge/surface/methods/database/get.d.ts.map +1 -1
  241. package/dist/bridge/surface/methods/database/get.js +1 -0
  242. package/dist/bridge/surface/methods/database/get.js.map +1 -1
  243. package/dist/bridge/surface/methods/database/push.d.ts +2 -1
  244. package/dist/bridge/surface/methods/database/push.d.ts.map +1 -1
  245. package/dist/bridge/surface/methods/database/push.js +1 -0
  246. package/dist/bridge/surface/methods/database/push.js.map +1 -1
  247. package/dist/bridge/surface/methods/database/query.d.ts +2 -1
  248. package/dist/bridge/surface/methods/database/query.d.ts.map +1 -1
  249. package/dist/bridge/surface/methods/database/query.js +1 -0
  250. package/dist/bridge/surface/methods/database/query.js.map +1 -1
  251. package/dist/bridge/surface/methods/database/remove.d.ts +2 -1
  252. package/dist/bridge/surface/methods/database/remove.d.ts.map +1 -1
  253. package/dist/bridge/surface/methods/database/remove.js +1 -0
  254. package/dist/bridge/surface/methods/database/remove.js.map +1 -1
  255. package/dist/bridge/surface/methods/database/set.d.ts +2 -1
  256. package/dist/bridge/surface/methods/database/set.d.ts.map +1 -1
  257. package/dist/bridge/surface/methods/database/set.js +1 -0
  258. package/dist/bridge/surface/methods/database/set.js.map +1 -1
  259. package/dist/bridge/surface/methods/database/update.d.ts +2 -1
  260. package/dist/bridge/surface/methods/database/update.d.ts.map +1 -1
  261. package/dist/bridge/surface/methods/database/update.js +1 -0
  262. package/dist/bridge/surface/methods/database/update.js.map +1 -1
  263. package/dist/bridge/surface/methods/firestore/addDoc.d.ts +2 -1
  264. package/dist/bridge/surface/methods/firestore/addDoc.d.ts.map +1 -1
  265. package/dist/bridge/surface/methods/firestore/addDoc.js +2 -1
  266. package/dist/bridge/surface/methods/firestore/addDoc.js.map +1 -1
  267. package/dist/bridge/surface/methods/firestore/deleteDoc.d.ts +2 -1
  268. package/dist/bridge/surface/methods/firestore/deleteDoc.d.ts.map +1 -1
  269. package/dist/bridge/surface/methods/firestore/deleteDoc.js +2 -1
  270. package/dist/bridge/surface/methods/firestore/deleteDoc.js.map +1 -1
  271. package/dist/bridge/surface/methods/firestore/discoverPaths.d.ts +2 -1
  272. package/dist/bridge/surface/methods/firestore/discoverPaths.d.ts.map +1 -1
  273. package/dist/bridge/surface/methods/firestore/discoverPaths.js +1 -0
  274. package/dist/bridge/surface/methods/firestore/discoverPaths.js.map +1 -1
  275. package/dist/bridge/surface/methods/firestore/extractIndexes.d.ts +7 -6
  276. package/dist/bridge/surface/methods/firestore/extractIndexes.d.ts.map +1 -1
  277. package/dist/bridge/surface/methods/firestore/extractIndexes.js +1 -0
  278. package/dist/bridge/surface/methods/firestore/extractIndexes.js.map +1 -1
  279. package/dist/bridge/surface/methods/firestore/findCollectionGroup.d.ts +2 -1
  280. package/dist/bridge/surface/methods/firestore/findCollectionGroup.d.ts.map +1 -1
  281. package/dist/bridge/surface/methods/firestore/findCollectionGroup.js +1 -0
  282. package/dist/bridge/surface/methods/firestore/findCollectionGroup.js.map +1 -1
  283. package/dist/bridge/surface/methods/firestore/getAggregateFromServer.d.ts +6 -5
  284. package/dist/bridge/surface/methods/firestore/getAggregateFromServer.d.ts.map +1 -1
  285. package/dist/bridge/surface/methods/firestore/getAggregateFromServer.js +1 -0
  286. package/dist/bridge/surface/methods/firestore/getAggregateFromServer.js.map +1 -1
  287. package/dist/bridge/surface/methods/firestore/getCountFromServer.d.ts +6 -5
  288. package/dist/bridge/surface/methods/firestore/getCountFromServer.d.ts.map +1 -1
  289. package/dist/bridge/surface/methods/firestore/getCountFromServer.js +1 -0
  290. package/dist/bridge/surface/methods/firestore/getCountFromServer.js.map +1 -1
  291. package/dist/bridge/surface/methods/firestore/getDoc.d.ts +2 -1
  292. package/dist/bridge/surface/methods/firestore/getDoc.d.ts.map +1 -1
  293. package/dist/bridge/surface/methods/firestore/getDoc.js +2 -1
  294. package/dist/bridge/surface/methods/firestore/getDoc.js.map +1 -1
  295. package/dist/bridge/surface/methods/firestore/getDocs.d.ts +6 -5
  296. package/dist/bridge/surface/methods/firestore/getDocs.d.ts.map +1 -1
  297. package/dist/bridge/surface/methods/firestore/getDocs.js +2 -1
  298. package/dist/bridge/surface/methods/firestore/getDocs.js.map +1 -1
  299. package/dist/bridge/surface/methods/firestore/setDoc.d.ts +2 -1
  300. package/dist/bridge/surface/methods/firestore/setDoc.d.ts.map +1 -1
  301. package/dist/bridge/surface/methods/firestore/setDoc.js +2 -1
  302. package/dist/bridge/surface/methods/firestore/setDoc.js.map +1 -1
  303. package/dist/bridge/surface/methods/firestore/updateDoc.d.ts +2 -1
  304. package/dist/bridge/surface/methods/firestore/updateDoc.d.ts.map +1 -1
  305. package/dist/bridge/surface/methods/firestore/updateDoc.js +2 -1
  306. package/dist/bridge/surface/methods/firestore/updateDoc.js.map +1 -1
  307. package/dist/bridge/surface/methods/firestore/writeBatch.d.ts +2 -1
  308. package/dist/bridge/surface/methods/firestore/writeBatch.d.ts.map +1 -1
  309. package/dist/bridge/surface/methods/firestore/writeBatch.js +2 -1
  310. package/dist/bridge/surface/methods/firestore/writeBatch.js.map +1 -1
  311. package/dist/bridge/surface/methods/firestore/writeIndexes.d.ts +1 -0
  312. package/dist/bridge/surface/methods/firestore/writeIndexes.d.ts.map +1 -1
  313. package/dist/bridge/surface/methods/firestore/writeIndexes.js +1 -0
  314. package/dist/bridge/surface/methods/firestore/writeIndexes.js.map +1 -1
  315. package/dist/bridge/surface/methods/functions/executions.d.ts +3 -2
  316. package/dist/bridge/surface/methods/functions/executions.d.ts.map +1 -1
  317. package/dist/bridge/surface/methods/functions/executions.js +2 -1
  318. package/dist/bridge/surface/methods/functions/executions.js.map +1 -1
  319. package/dist/bridge/surface/methods/functions/fire.d.ts +1 -0
  320. package/dist/bridge/surface/methods/functions/fire.d.ts.map +1 -1
  321. package/dist/bridge/surface/methods/functions/fire.js +6 -5
  322. package/dist/bridge/surface/methods/functions/fire.js.map +1 -1
  323. package/dist/bridge/surface/methods/functions/listTriggers.d.ts +2 -1
  324. package/dist/bridge/surface/methods/functions/listTriggers.d.ts.map +1 -1
  325. package/dist/bridge/surface/methods/functions/listTriggers.js +1 -0
  326. package/dist/bridge/surface/methods/functions/listTriggers.js.map +1 -1
  327. package/dist/bridge/surface/methods/messaging/deliveries.d.ts +2 -1
  328. package/dist/bridge/surface/methods/messaging/deliveries.d.ts.map +1 -1
  329. package/dist/bridge/surface/methods/messaging/deliveries.js +1 -0
  330. package/dist/bridge/surface/methods/messaging/deliveries.js.map +1 -1
  331. package/dist/bridge/surface/methods/messaging/send.d.ts +2 -1
  332. package/dist/bridge/surface/methods/messaging/send.d.ts.map +1 -1
  333. package/dist/bridge/surface/methods/messaging/send.js +2 -1
  334. package/dist/bridge/surface/methods/messaging/send.js.map +1 -1
  335. package/dist/bridge/surface/methods/messaging/subscribeToTopic.d.ts +2 -1
  336. package/dist/bridge/surface/methods/messaging/subscribeToTopic.d.ts.map +1 -1
  337. package/dist/bridge/surface/methods/messaging/subscribeToTopic.js +1 -0
  338. package/dist/bridge/surface/methods/messaging/subscribeToTopic.js.map +1 -1
  339. package/dist/bridge/surface/methods/messaging/tokens.d.ts +2 -1
  340. package/dist/bridge/surface/methods/messaging/tokens.d.ts.map +1 -1
  341. package/dist/bridge/surface/methods/messaging/tokens.js +1 -0
  342. package/dist/bridge/surface/methods/messaging/tokens.js.map +1 -1
  343. package/dist/bridge/surface/methods/messaging/unsubscribeFromTopic.d.ts +2 -1
  344. package/dist/bridge/surface/methods/messaging/unsubscribeFromTopic.d.ts.map +1 -1
  345. package/dist/bridge/surface/methods/messaging/unsubscribeFromTopic.js +1 -0
  346. package/dist/bridge/surface/methods/messaging/unsubscribeFromTopic.js.map +1 -1
  347. package/dist/bridge/surface/methods/registry.d.ts.map +1 -1
  348. package/dist/bridge/surface/methods/registry.js +2 -8
  349. package/dist/bridge/surface/methods/registry.js.map +1 -1
  350. package/dist/bridge/surface/methods/rules/explainDenial.d.ts +1 -0
  351. package/dist/bridge/surface/methods/rules/explainDenial.d.ts.map +1 -1
  352. package/dist/bridge/surface/methods/rules/explainDenial.js +1 -0
  353. package/dist/bridge/surface/methods/rules/explainDenial.js.map +1 -1
  354. package/dist/bridge/surface/methods/rules/getStdlib.d.ts +1 -0
  355. package/dist/bridge/surface/methods/rules/getStdlib.d.ts.map +1 -1
  356. package/dist/bridge/surface/methods/rules/getStdlib.js +1 -0
  357. package/dist/bridge/surface/methods/rules/getStdlib.js.map +1 -1
  358. package/dist/bridge/surface/methods/rules/lint.d.ts +1 -0
  359. package/dist/bridge/surface/methods/rules/lint.d.ts.map +1 -1
  360. package/dist/bridge/surface/methods/rules/lint.js +1 -0
  361. package/dist/bridge/surface/methods/rules/lint.js.map +1 -1
  362. package/dist/bridge/surface/methods/rules/listStdlib.d.ts +1 -0
  363. package/dist/bridge/surface/methods/rules/listStdlib.d.ts.map +1 -1
  364. package/dist/bridge/surface/methods/rules/listStdlib.js +1 -0
  365. package/dist/bridge/surface/methods/rules/listStdlib.js.map +1 -1
  366. package/dist/bridge/surface/methods/rules/set.d.ts +1 -0
  367. package/dist/bridge/surface/methods/rules/set.d.ts.map +1 -1
  368. package/dist/bridge/surface/methods/rules/set.js +1 -0
  369. package/dist/bridge/surface/methods/rules/set.js.map +1 -1
  370. package/dist/bridge/surface/methods/rules/simulate.d.ts +1 -0
  371. package/dist/bridge/surface/methods/rules/simulate.d.ts.map +1 -1
  372. package/dist/bridge/surface/methods/rules/simulate.js +1 -0
  373. package/dist/bridge/surface/methods/rules/simulate.js.map +1 -1
  374. package/dist/bridge/surface/methods/sandbox/activity.d.ts +2 -1
  375. package/dist/bridge/surface/methods/sandbox/activity.d.ts.map +1 -1
  376. package/dist/bridge/surface/methods/sandbox/activity.js +2 -1
  377. package/dist/bridge/surface/methods/sandbox/activity.js.map +1 -1
  378. package/dist/bridge/surface/methods/sandbox/advanceClock.d.ts +2 -1
  379. package/dist/bridge/surface/methods/sandbox/advanceClock.d.ts.map +1 -1
  380. package/dist/bridge/surface/methods/sandbox/advanceClock.js +1 -0
  381. package/dist/bridge/surface/methods/sandbox/advanceClock.js.map +1 -1
  382. package/dist/bridge/surface/methods/sandbox/apply.d.ts +1 -0
  383. package/dist/bridge/surface/methods/sandbox/apply.d.ts.map +1 -1
  384. package/dist/bridge/surface/methods/sandbox/apply.js +1 -0
  385. package/dist/bridge/surface/methods/sandbox/apply.js.map +1 -1
  386. package/dist/bridge/surface/methods/sandbox/checkpoint.d.ts +1 -0
  387. package/dist/bridge/surface/methods/sandbox/checkpoint.d.ts.map +1 -1
  388. package/dist/bridge/surface/methods/sandbox/checkpoint.js +1 -0
  389. package/dist/bridge/surface/methods/sandbox/checkpoint.js.map +1 -1
  390. package/dist/bridge/surface/methods/sandbox/deleteCapture.d.ts +1 -0
  391. package/dist/bridge/surface/methods/sandbox/deleteCapture.d.ts.map +1 -1
  392. package/dist/bridge/surface/methods/sandbox/deleteCapture.js +1 -1
  393. package/dist/bridge/surface/methods/sandbox/deleteCapture.js.map +1 -1
  394. package/dist/bridge/surface/methods/sandbox/deleteCheckpoint.d.ts +1 -0
  395. package/dist/bridge/surface/methods/sandbox/deleteCheckpoint.d.ts.map +1 -1
  396. package/dist/bridge/surface/methods/sandbox/deleteCheckpoint.js +1 -0
  397. package/dist/bridge/surface/methods/sandbox/deleteCheckpoint.js.map +1 -1
  398. package/dist/bridge/surface/methods/sandbox/diff.d.ts +1 -0
  399. package/dist/bridge/surface/methods/sandbox/diff.d.ts.map +1 -1
  400. package/dist/bridge/surface/methods/sandbox/diff.js +1 -0
  401. package/dist/bridge/surface/methods/sandbox/diff.js.map +1 -1
  402. package/dist/bridge/surface/methods/sandbox/discard.d.ts +1 -0
  403. package/dist/bridge/surface/methods/sandbox/discard.d.ts.map +1 -1
  404. package/dist/bridge/surface/methods/sandbox/discard.js +1 -0
  405. package/dist/bridge/surface/methods/sandbox/discard.js.map +1 -1
  406. package/dist/bridge/surface/methods/sandbox/events.d.ts +2 -1
  407. package/dist/bridge/surface/methods/sandbox/events.d.ts.map +1 -1
  408. package/dist/bridge/surface/methods/sandbox/events.js +2 -1
  409. package/dist/bridge/surface/methods/sandbox/events.js.map +1 -1
  410. package/dist/bridge/surface/methods/sandbox/exportFixture.d.ts +1 -0
  411. package/dist/bridge/surface/methods/sandbox/exportFixture.d.ts.map +1 -1
  412. package/dist/bridge/surface/methods/sandbox/exportFixture.js +1 -0
  413. package/dist/bridge/surface/methods/sandbox/exportFixture.js.map +1 -1
  414. package/dist/bridge/surface/methods/sandbox/fork.d.ts +1 -0
  415. package/dist/bridge/surface/methods/sandbox/fork.d.ts.map +1 -1
  416. package/dist/bridge/surface/methods/sandbox/fork.js +1 -0
  417. package/dist/bridge/surface/methods/sandbox/fork.js.map +1 -1
  418. package/dist/bridge/surface/methods/sandbox/inspect.d.ts +2 -1
  419. package/dist/bridge/surface/methods/sandbox/inspect.d.ts.map +1 -1
  420. package/dist/bridge/surface/methods/sandbox/inspect.js +2 -1
  421. package/dist/bridge/surface/methods/sandbox/inspect.js.map +1 -1
  422. package/dist/bridge/surface/methods/sandbox/listBranches.d.ts +1 -0
  423. package/dist/bridge/surface/methods/sandbox/listBranches.d.ts.map +1 -1
  424. package/dist/bridge/surface/methods/sandbox/listBranches.js +1 -0
  425. package/dist/bridge/surface/methods/sandbox/listBranches.js.map +1 -1
  426. package/dist/bridge/surface/methods/sandbox/listCaptures.d.ts +1 -0
  427. package/dist/bridge/surface/methods/sandbox/listCaptures.d.ts.map +1 -1
  428. package/dist/bridge/surface/methods/sandbox/listCaptures.js +1 -1
  429. package/dist/bridge/surface/methods/sandbox/listCaptures.js.map +1 -1
  430. package/dist/bridge/surface/methods/sandbox/listCheckpoints.d.ts +1 -0
  431. package/dist/bridge/surface/methods/sandbox/listCheckpoints.d.ts.map +1 -1
  432. package/dist/bridge/surface/methods/sandbox/listCheckpoints.js +1 -0
  433. package/dist/bridge/surface/methods/sandbox/listCheckpoints.js.map +1 -1
  434. package/dist/bridge/surface/methods/sandbox/listeners.d.ts +2 -1
  435. package/dist/bridge/surface/methods/sandbox/listeners.d.ts.map +1 -1
  436. package/dist/bridge/surface/methods/sandbox/listeners.js +1 -0
  437. package/dist/bridge/surface/methods/sandbox/listeners.js.map +1 -1
  438. package/dist/bridge/surface/methods/sandbox/openCapture.d.ts +1 -0
  439. package/dist/bridge/surface/methods/sandbox/openCapture.d.ts.map +1 -1
  440. package/dist/bridge/surface/methods/sandbox/openCapture.js +1 -1
  441. package/dist/bridge/surface/methods/sandbox/openCapture.js.map +1 -1
  442. package/dist/bridge/surface/methods/sandbox/promote.d.ts +1 -0
  443. package/dist/bridge/surface/methods/sandbox/promote.d.ts.map +1 -1
  444. package/dist/bridge/surface/methods/sandbox/promote.js +1 -0
  445. package/dist/bridge/surface/methods/sandbox/promote.js.map +1 -1
  446. package/dist/bridge/surface/methods/sandbox/renameCapture.d.ts +3 -2
  447. package/dist/bridge/surface/methods/sandbox/renameCapture.d.ts.map +1 -1
  448. package/dist/bridge/surface/methods/sandbox/renameCapture.js +1 -1
  449. package/dist/bridge/surface/methods/sandbox/renameCapture.js.map +1 -1
  450. package/dist/bridge/surface/methods/sandbox/reset.d.ts +3 -2
  451. package/dist/bridge/surface/methods/sandbox/reset.d.ts.map +1 -1
  452. package/dist/bridge/surface/methods/sandbox/reset.js +1 -0
  453. package/dist/bridge/surface/methods/sandbox/reset.js.map +1 -1
  454. package/dist/bridge/surface/methods/sandbox/resetClock.d.ts +2 -1
  455. package/dist/bridge/surface/methods/sandbox/resetClock.d.ts.map +1 -1
  456. package/dist/bridge/surface/methods/sandbox/resetClock.js +1 -0
  457. package/dist/bridge/surface/methods/sandbox/resetClock.js.map +1 -1
  458. package/dist/bridge/surface/methods/sandbox/restore.d.ts +1 -0
  459. package/dist/bridge/surface/methods/sandbox/restore.d.ts.map +1 -1
  460. package/dist/bridge/surface/methods/sandbox/restore.js +1 -0
  461. package/dist/bridge/surface/methods/sandbox/restore.js.map +1 -1
  462. package/dist/bridge/surface/methods/sandbox/saveCapture.d.ts +1 -0
  463. package/dist/bridge/surface/methods/sandbox/saveCapture.d.ts.map +1 -1
  464. package/dist/bridge/surface/methods/sandbox/saveCapture.js +1 -1
  465. package/dist/bridge/surface/methods/sandbox/saveCapture.js.map +1 -1
  466. package/dist/bridge/surface/methods/sandbox/seed.d.ts +2 -1
  467. package/dist/bridge/surface/methods/sandbox/seed.d.ts.map +1 -1
  468. package/dist/bridge/surface/methods/sandbox/seed.js +3 -2
  469. package/dist/bridge/surface/methods/sandbox/seed.js.map +1 -1
  470. package/dist/bridge/surface/methods/sandbox/seedFromFixture.d.ts +1 -0
  471. package/dist/bridge/surface/methods/sandbox/seedFromFixture.d.ts.map +1 -1
  472. package/dist/bridge/surface/methods/sandbox/seedFromFixture.js +1 -0
  473. package/dist/bridge/surface/methods/sandbox/seedFromFixture.js.map +1 -1
  474. package/dist/bridge/surface/methods/sandbox/setClock.d.ts +2 -1
  475. package/dist/bridge/surface/methods/sandbox/setClock.d.ts.map +1 -1
  476. package/dist/bridge/surface/methods/sandbox/setClock.js +1 -0
  477. package/dist/bridge/surface/methods/sandbox/setClock.js.map +1 -1
  478. package/dist/bridge/surface/methods/sandbox-registry.d.ts +6 -0
  479. package/dist/bridge/surface/methods/sandbox-registry.d.ts.map +1 -0
  480. package/dist/bridge/surface/methods/sandbox-registry.js +21 -0
  481. package/dist/bridge/surface/methods/sandbox-registry.js.map +1 -0
  482. package/dist/bridge/surface/methods/storage/deleteObject.d.ts +2 -1
  483. package/dist/bridge/surface/methods/storage/deleteObject.d.ts.map +1 -1
  484. package/dist/bridge/surface/methods/storage/deleteObject.js +1 -0
  485. package/dist/bridge/surface/methods/storage/deleteObject.js.map +1 -1
  486. package/dist/bridge/surface/methods/storage/getBytes.d.ts +2 -1
  487. package/dist/bridge/surface/methods/storage/getBytes.d.ts.map +1 -1
  488. package/dist/bridge/surface/methods/storage/getBytes.js +1 -0
  489. package/dist/bridge/surface/methods/storage/getBytes.js.map +1 -1
  490. package/dist/bridge/surface/methods/storage/getDownloadURL.d.ts +2 -1
  491. package/dist/bridge/surface/methods/storage/getDownloadURL.d.ts.map +1 -1
  492. package/dist/bridge/surface/methods/storage/getDownloadURL.js +1 -0
  493. package/dist/bridge/surface/methods/storage/getDownloadURL.js.map +1 -1
  494. package/dist/bridge/surface/methods/storage/getMetadata.d.ts +2 -1
  495. package/dist/bridge/surface/methods/storage/getMetadata.d.ts.map +1 -1
  496. package/dist/bridge/surface/methods/storage/getMetadata.js +1 -0
  497. package/dist/bridge/surface/methods/storage/getMetadata.js.map +1 -1
  498. package/dist/bridge/surface/methods/storage/listAll.d.ts +2 -1
  499. package/dist/bridge/surface/methods/storage/listAll.d.ts.map +1 -1
  500. package/dist/bridge/surface/methods/storage/listAll.js +1 -0
  501. package/dist/bridge/surface/methods/storage/listAll.js.map +1 -1
  502. package/dist/bridge/surface/methods/storage/provision.d.ts +1 -0
  503. package/dist/bridge/surface/methods/storage/provision.d.ts.map +1 -1
  504. package/dist/bridge/surface/methods/storage/provision.js +1 -0
  505. package/dist/bridge/surface/methods/storage/provision.js.map +1 -1
  506. package/dist/bridge/surface/methods/storage/setCrossServiceIam.d.ts +2 -1
  507. package/dist/bridge/surface/methods/storage/setCrossServiceIam.d.ts.map +1 -1
  508. package/dist/bridge/surface/methods/storage/setCrossServiceIam.js +1 -0
  509. package/dist/bridge/surface/methods/storage/setCrossServiceIam.js.map +1 -1
  510. package/dist/bridge/surface/methods/storage/status.d.ts +1 -0
  511. package/dist/bridge/surface/methods/storage/status.d.ts.map +1 -1
  512. package/dist/bridge/surface/methods/storage/status.js +1 -0
  513. package/dist/bridge/surface/methods/storage/status.js.map +1 -1
  514. package/dist/bridge/surface/methods/storage/updateMetadata.d.ts +6 -5
  515. package/dist/bridge/surface/methods/storage/updateMetadata.d.ts.map +1 -1
  516. package/dist/bridge/surface/methods/storage/updateMetadata.js +1 -0
  517. package/dist/bridge/surface/methods/storage/updateMetadata.js.map +1 -1
  518. package/dist/bridge/surface/methods/storage/uploadBytes.d.ts +1 -0
  519. package/dist/bridge/surface/methods/storage/uploadBytes.d.ts.map +1 -1
  520. package/dist/bridge/surface/methods/storage/uploadBytes.js +1 -0
  521. package/dist/bridge/surface/methods/storage/uploadBytes.js.map +1 -1
  522. package/dist/bridge/surface/render/discriminator-schemas.d.ts +2 -2
  523. package/dist/bridge/surface/request-instant.d.ts +2 -2
  524. package/dist/bridge/surface/request-instant.d.ts.map +1 -1
  525. package/dist/bridge/surface/request-instant.js.map +1 -1
  526. package/dist/bridge/surface/rules-engines/database.d.ts.map +1 -1
  527. package/dist/bridge/surface/rules-engines/database.js +1 -2
  528. package/dist/bridge/surface/rules-engines/database.js.map +1 -1
  529. package/dist/bridge/surface/rules-engines/storage-request-resource.d.ts +38 -0
  530. package/dist/bridge/surface/rules-engines/storage-request-resource.d.ts.map +1 -0
  531. package/dist/bridge/surface/rules-engines/storage-request-resource.js +246 -0
  532. package/dist/bridge/surface/rules-engines/storage-request-resource.js.map +1 -0
  533. package/dist/bridge/surface/rules-engines/storage.d.ts.map +1 -1
  534. package/dist/bridge/surface/rules-engines/storage.js +44 -65
  535. package/dist/bridge/surface/rules-engines/storage.js.map +1 -1
  536. package/dist/bridge/surface/sandbox-context.d.ts +25 -0
  537. package/dist/bridge/surface/sandbox-context.d.ts.map +1 -0
  538. package/dist/bridge/surface/sandbox-context.js +29 -0
  539. package/dist/bridge/surface/sandbox-context.js.map +1 -0
  540. package/dist/bridge/surface/service-handles.d.ts +6 -6
  541. package/dist/bridge/surface/service-handles.d.ts.map +1 -1
  542. package/dist/bridge/surface/service-handles.js +7 -4
  543. package/dist/bridge/surface/service-handles.js.map +1 -1
  544. package/dist/bridge/surface/sign-in.d.ts +2 -2
  545. package/dist/bridge/surface/sign-in.d.ts.map +1 -1
  546. package/dist/bridge/surface/sign-in.js +1 -1
  547. package/dist/bridge/surface/sign-in.js.map +1 -1
  548. package/dist/bridge/surface/storage-rules.d.ts +2 -9
  549. package/dist/bridge/surface/storage-rules.d.ts.map +1 -1
  550. package/dist/bridge/surface/storage-rules.js +0 -10
  551. package/dist/bridge/surface/storage-rules.js.map +1 -1
  552. package/dist/bridge/surface/stored-identity.d.ts +3 -3
  553. package/dist/bridge/surface/stored-identity.d.ts.map +1 -1
  554. package/dist/bridge/surface/stored-identity.js.map +1 -1
  555. package/dist/bridge/surface/types.d.ts +29 -8
  556. package/dist/bridge/surface/types.d.ts.map +1 -1
  557. package/dist/cli/firebase-json.d.ts +35 -7
  558. package/dist/cli/firebase-json.d.ts.map +1 -1
  559. package/dist/cli/firebase-json.js +13 -0
  560. package/dist/cli/firebase-json.js.map +1 -1
  561. package/dist/cli/firestore-indexes.d.ts.map +1 -1
  562. package/dist/cli/firestore-indexes.js +2 -1
  563. package/dist/cli/firestore-indexes.js.map +1 -1
  564. package/dist/cli/index.d.ts +6 -0
  565. package/dist/cli/index.d.ts.map +1 -1
  566. package/dist/cli/index.js +44 -11
  567. package/dist/cli/index.js.map +1 -1
  568. package/dist/cli/public-dir-hint.d.ts +8 -0
  569. package/dist/cli/public-dir-hint.d.ts.map +1 -0
  570. package/dist/cli/public-dir-hint.js +30 -0
  571. package/dist/cli/public-dir-hint.js.map +1 -0
  572. package/dist/cli/run.d.ts +8 -2
  573. package/dist/cli/run.d.ts.map +1 -1
  574. package/dist/cli/run.js +28 -5
  575. package/dist/cli/run.js.map +1 -1
  576. package/dist/cli/sandbox-runner.d.ts.map +1 -1
  577. package/dist/cli/sandbox-runner.js +11 -2
  578. package/dist/cli/sandbox-runner.js.map +1 -1
  579. package/dist/cli/serve-diagnostics.d.ts.map +1 -1
  580. package/dist/cli/serve-diagnostics.js +11 -1
  581. package/dist/cli/serve-diagnostics.js.map +1 -1
  582. package/dist/cli/serve.d.ts.map +1 -1
  583. package/dist/cli/serve.js +25 -24
  584. package/dist/cli/serve.js.map +1 -1
  585. package/dist/cli/snapshot.d.ts.map +1 -1
  586. package/dist/cli/snapshot.js +13 -5
  587. package/dist/cli/snapshot.js.map +1 -1
  588. package/dist/cli/surface-method-runner.js +1 -1
  589. package/dist/cli/surface-method-runner.js.map +1 -1
  590. package/dist/cli/verify.d.ts.map +1 -1
  591. package/dist/cli/verify.js +10 -1
  592. package/dist/cli/verify.js.map +1 -1
  593. package/dist/conformance/.generated/can-i-use-browser.d.ts.map +1 -1
  594. package/dist/conformance/.generated/can-i-use-browser.js +19 -3
  595. package/dist/conformance/.generated/can-i-use-browser.js.map +1 -1
  596. package/dist/conformance/.generated/can-i-use.d.ts.map +1 -1
  597. package/dist/conformance/.generated/can-i-use.js +1 -1
  598. package/dist/conformance/.generated/can-i-use.js.map +1 -1
  599. package/dist/conformance/.generated/conformance-docs.d.ts.map +1 -1
  600. package/dist/conformance/.generated/conformance-docs.js +1 -1
  601. package/dist/conformance/.generated/conformance-docs.js.map +1 -1
  602. package/dist/conformance/.generated/served-availability.d.ts.map +1 -1
  603. package/dist/conformance/.generated/served-availability.js +1 -1
  604. package/dist/conformance/.generated/served-availability.js.map +1 -1
  605. package/dist/discover/merge.d.ts.map +1 -1
  606. package/dist/discover/merge.js +11 -3
  607. package/dist/discover/merge.js.map +1 -1
  608. package/dist/functions/child-protocol.d.ts +43 -0
  609. package/dist/functions/child-protocol.d.ts.map +1 -0
  610. package/dist/functions/child-protocol.js +14 -0
  611. package/dist/functions/child-protocol.js.map +1 -0
  612. package/dist/functions/child.d.ts +2 -0
  613. package/dist/functions/child.d.ts.map +1 -0
  614. package/dist/functions/child.js +92 -0
  615. package/dist/functions/child.js.map +1 -0
  616. package/dist/{functions-rtdb → functions}/development-runtime.d.ts +5 -4
  617. package/dist/functions/development-runtime.d.ts.map +1 -0
  618. package/dist/{functions-rtdb → functions}/development-runtime.js +2 -2
  619. package/dist/functions/development-runtime.js.map +1 -0
  620. package/dist/functions/endpoints.d.ts +39 -0
  621. package/dist/functions/endpoints.d.ts.map +1 -0
  622. package/dist/functions/endpoints.js +48 -0
  623. package/dist/functions/endpoints.js.map +1 -0
  624. package/dist/functions/events.d.ts.map +1 -0
  625. package/dist/functions/events.js.map +1 -0
  626. package/dist/functions/execution-log.d.ts.map +1 -0
  627. package/dist/functions/execution-log.js.map +1 -0
  628. package/dist/functions/module-loader.d.ts.map +1 -0
  629. package/dist/functions/module-loader.js.map +1 -0
  630. package/dist/functions/project.d.ts +7 -0
  631. package/dist/functions/project.d.ts.map +1 -0
  632. package/dist/{functions-rtdb → functions}/project.js +1 -1
  633. package/dist/functions/project.js.map +1 -0
  634. package/dist/functions/rtdb/child-runtime.d.ts +23 -0
  635. package/dist/functions/rtdb/child-runtime.d.ts.map +1 -0
  636. package/dist/functions/rtdb/child-runtime.js +102 -0
  637. package/dist/functions/rtdb/child-runtime.js.map +1 -0
  638. package/dist/functions/rtdb/delivery.d.ts.map +1 -0
  639. package/dist/functions/rtdb/delivery.js.map +1 -0
  640. package/dist/{functions-rtdb → functions/rtdb}/discovery.d.ts +3 -20
  641. package/dist/functions/rtdb/discovery.d.ts.map +1 -0
  642. package/dist/{functions-rtdb → functions/rtdb}/discovery.js +6 -21
  643. package/dist/functions/rtdb/discovery.js.map +1 -0
  644. package/dist/functions/rtdb/event.d.ts.map +1 -0
  645. package/dist/functions/rtdb/event.js.map +1 -0
  646. package/dist/functions/rtdb/execution.d.ts.map +1 -0
  647. package/dist/functions/rtdb/execution.js.map +1 -0
  648. package/dist/functions/rtdb/in-memory-delivery.d.ts.map +1 -0
  649. package/dist/functions/rtdb/in-memory-delivery.js.map +1 -0
  650. package/dist/functions/rtdb/projection.d.ts.map +1 -0
  651. package/dist/functions/rtdb/projection.js.map +1 -0
  652. package/dist/functions/rtdb/reference-pattern.d.ts.map +1 -0
  653. package/dist/functions/rtdb/reference-pattern.js.map +1 -0
  654. package/dist/{functions-rtdb → functions/rtdb}/remote-delivery.d.ts +1 -1
  655. package/dist/functions/rtdb/remote-delivery.d.ts.map +1 -0
  656. package/dist/functions/rtdb/remote-delivery.js.map +1 -0
  657. package/dist/{functions-rtdb/child.d.ts → functions/spawn.d.ts} +16 -38
  658. package/dist/functions/spawn.d.ts.map +1 -0
  659. package/dist/functions/spawn.js +166 -0
  660. package/dist/functions/spawn.js.map +1 -0
  661. package/dist/functions/unsupported.d.ts +23 -0
  662. package/dist/functions/unsupported.d.ts.map +1 -0
  663. package/dist/functions/unsupported.js +25 -0
  664. package/dist/functions/unsupported.js.map +1 -0
  665. package/dist/google-endpoints.d.ts +9 -2
  666. package/dist/google-endpoints.d.ts.map +1 -1
  667. package/dist/google-endpoints.js +72 -3
  668. package/dist/google-endpoints.js.map +1 -1
  669. package/dist/next/bridge-import-loader.d.ts +9 -0
  670. package/dist/next/bridge-import-loader.d.ts.map +1 -0
  671. package/dist/next/bridge-import-loader.js +45 -0
  672. package/dist/next/bridge-import-loader.js.map +1 -0
  673. package/dist/next/bridge-imports.d.ts +26 -0
  674. package/dist/next/bridge-imports.d.ts.map +1 -0
  675. package/dist/next/bridge-imports.js +90 -0
  676. package/dist/next/bridge-imports.js.map +1 -0
  677. package/dist/next/client-aliases.d.ts +13 -5
  678. package/dist/next/client-aliases.d.ts.map +1 -1
  679. package/dist/next/client-aliases.js +14 -27
  680. package/dist/next/client-aliases.js.map +1 -1
  681. package/dist/next/guard.d.ts +3 -2
  682. package/dist/next/guard.d.ts.map +1 -1
  683. package/dist/next/guard.js +28 -10
  684. package/dist/next/guard.js.map +1 -1
  685. package/dist/next/turbopack-config.d.ts +9 -0
  686. package/dist/next/turbopack-config.d.ts.map +1 -1
  687. package/dist/next/turbopack-config.js +21 -0
  688. package/dist/next/turbopack-config.js.map +1 -1
  689. package/dist/next/webpack-config.d.ts +9 -0
  690. package/dist/next/webpack-config.d.ts.map +1 -1
  691. package/dist/next/webpack-config.js +18 -0
  692. package/dist/next/webpack-config.js.map +1 -1
  693. package/dist/next/with-pyric.d.ts +1 -0
  694. package/dist/next/with-pyric.d.ts.map +1 -1
  695. package/dist/next/with-pyric.js +25 -0
  696. package/dist/next/with-pyric.js.map +1 -1
  697. package/dist/register/activation.d.ts +16 -0
  698. package/dist/register/activation.d.ts.map +1 -0
  699. package/dist/register/activation.js +22 -0
  700. package/dist/register/activation.js.map +1 -0
  701. package/dist/register/app-bridge-admin-app-check.d.ts.map +1 -1
  702. package/dist/register/app-bridge-admin-app-check.js +3 -1
  703. package/dist/register/app-bridge-admin-app-check.js.map +1 -1
  704. package/dist/register/child-process-guard.d.ts +43 -0
  705. package/dist/register/child-process-guard.d.ts.map +1 -0
  706. package/dist/register/child-process-guard.js +165 -0
  707. package/dist/register/child-process-guard.js.map +1 -0
  708. package/dist/register/client/bootstrap.js +6 -1
  709. package/dist/register/client/bootstrap.js.map +1 -1
  710. package/dist/register/connect-prototypes.d.ts +9 -0
  711. package/dist/register/connect-prototypes.d.ts.map +1 -1
  712. package/dist/register/connect-prototypes.js +11 -0
  713. package/dist/register/connect-prototypes.js.map +1 -1
  714. package/dist/register/hooks.d.ts +7 -1
  715. package/dist/register/hooks.d.ts.map +1 -1
  716. package/dist/register/hooks.js +44 -2
  717. package/dist/register/hooks.js.map +1 -1
  718. package/dist/register/index.d.ts.map +1 -1
  719. package/dist/register/index.js +93 -23
  720. package/dist/register/index.js.map +1 -1
  721. package/dist/register/mapping.d.ts +33 -0
  722. package/dist/register/mapping.d.ts.map +1 -1
  723. package/dist/register/mapping.js +45 -3
  724. package/dist/register/mapping.js.map +1 -1
  725. package/dist/register/net-guard.d.ts +17 -0
  726. package/dist/register/net-guard.d.ts.map +1 -1
  727. package/dist/register/net-guard.js +118 -41
  728. package/dist/register/net-guard.js.map +1 -1
  729. package/dist/register/package-identity.d.ts +16 -0
  730. package/dist/register/package-identity.d.ts.map +1 -0
  731. package/dist/register/package-identity.js +97 -0
  732. package/dist/register/package-identity.js.map +1 -0
  733. package/dist/register/swap-or-stop.d.ts +27 -0
  734. package/dist/register/swap-or-stop.d.ts.map +1 -0
  735. package/dist/register/swap-or-stop.js +170 -0
  736. package/dist/register/swap-or-stop.js.map +1 -0
  737. package/dist/register/worker-guard.d.ts +20 -0
  738. package/dist/register/worker-guard.d.ts.map +1 -0
  739. package/dist/register/worker-guard.js +77 -0
  740. package/dist/register/worker-guard.js.map +1 -0
  741. package/dist/remote/resolve-host.d.ts +9 -0
  742. package/dist/remote/resolve-host.d.ts.map +1 -1
  743. package/dist/remote/resolve-host.js +13 -2
  744. package/dist/remote/resolve-host.js.map +1 -1
  745. package/dist/serve/ai-diagnostics-relay.d.ts +4 -1
  746. package/dist/serve/ai-diagnostics-relay.d.ts.map +1 -1
  747. package/dist/serve/ai-diagnostics-relay.js +3 -0
  748. package/dist/serve/ai-diagnostics-relay.js.map +1 -1
  749. package/dist/serve/ai-proxy.d.ts +23 -1
  750. package/dist/serve/ai-proxy.d.ts.map +1 -1
  751. package/dist/serve/ai-proxy.js +70 -20
  752. package/dist/serve/ai-proxy.js.map +1 -1
  753. package/dist/serve/ai-terminal-blocks.d.ts +6 -4
  754. package/dist/serve/ai-terminal-blocks.d.ts.map +1 -1
  755. package/dist/serve/ai-terminal-blocks.js +7 -4
  756. package/dist/serve/ai-terminal-blocks.js.map +1 -1
  757. package/dist/serve/ai-terminal-text.d.ts +8 -0
  758. package/dist/serve/ai-terminal-text.d.ts.map +1 -1
  759. package/dist/serve/ai-terminal-text.js +10 -0
  760. package/dist/serve/ai-terminal-text.js.map +1 -1
  761. package/dist/serve/app-ports.d.ts +48 -0
  762. package/dist/serve/app-ports.d.ts.map +1 -0
  763. package/dist/serve/app-ports.js +82 -0
  764. package/dist/serve/app-ports.js.map +1 -0
  765. package/dist/serve/bridge-mount.d.ts +13 -0
  766. package/dist/serve/bridge-mount.d.ts.map +1 -1
  767. package/dist/serve/bridge-mount.js +28 -8
  768. package/dist/serve/bridge-mount.js.map +1 -1
  769. package/dist/serve/bundler.d.ts +6 -0
  770. package/dist/serve/bundler.d.ts.map +1 -1
  771. package/dist/serve/bundler.js +78 -26
  772. package/dist/serve/bundler.js.map +1 -1
  773. package/dist/serve/discovery.d.ts +17 -3
  774. package/dist/serve/discovery.d.ts.map +1 -1
  775. package/dist/serve/discovery.js +199 -63
  776. package/dist/serve/discovery.js.map +1 -1
  777. package/dist/serve/entries/ai.d.ts.map +1 -1
  778. package/dist/serve/entries/ai.js +28 -26
  779. package/dist/serve/entries/ai.js.map +1 -1
  780. package/dist/serve/entries/auth.d.ts.map +1 -1
  781. package/dist/serve/entries/auth.js +19 -1
  782. package/dist/serve/entries/auth.js.map +1 -1
  783. package/dist/serve/entries/firestore-surface.d.ts +1 -0
  784. package/dist/serve/entries/firestore-surface.d.ts.map +1 -1
  785. package/dist/serve/entries/firestore-surface.js +1 -0
  786. package/dist/serve/entries/firestore-surface.js.map +1 -1
  787. package/dist/serve/entries/init-payload.d.ts +9 -2
  788. package/dist/serve/entries/init-payload.d.ts.map +1 -1
  789. package/dist/serve/entries/init-payload.js +25 -5
  790. package/dist/serve/entries/init-payload.js.map +1 -1
  791. package/dist/serve/entries/moved-host.d.ts +18 -0
  792. package/dist/serve/entries/moved-host.d.ts.map +1 -0
  793. package/dist/serve/entries/moved-host.js +14 -0
  794. package/dist/serve/entries/moved-host.js.map +1 -0
  795. package/dist/serve/entries/runtime-origin.d.ts +6 -0
  796. package/dist/serve/entries/runtime-origin.d.ts.map +1 -1
  797. package/dist/serve/entries/runtime-origin.js.map +1 -1
  798. package/dist/serve/entries/unsupported/firestore.d.ts +0 -1
  799. package/dist/serve/entries/unsupported/firestore.d.ts.map +1 -1
  800. package/dist/serve/entries/unsupported/firestore.js +0 -1
  801. package/dist/serve/entries/unsupported/firestore.js.map +1 -1
  802. package/dist/serve/entries/worker-runtime.d.ts.map +1 -1
  803. package/dist/serve/entries/worker-runtime.js +19 -7
  804. package/dist/serve/entries/worker-runtime.js.map +1 -1
  805. package/dist/serve/firebase-module-swap.d.ts +19 -2
  806. package/dist/serve/firebase-module-swap.d.ts.map +1 -1
  807. package/dist/serve/firebase-module-swap.js +92 -16
  808. package/dist/serve/firebase-module-swap.js.map +1 -1
  809. package/dist/serve/gemini-proxy.d.ts +40 -0
  810. package/dist/serve/gemini-proxy.d.ts.map +1 -0
  811. package/dist/serve/gemini-proxy.js +105 -0
  812. package/dist/serve/gemini-proxy.js.map +1 -0
  813. package/dist/serve/hosted/runtime.d.ts.map +1 -1
  814. package/dist/serve/hosted/runtime.js +10 -3
  815. package/dist/serve/hosted/runtime.js.map +1 -1
  816. package/dist/serve/namespace.d.ts +16 -0
  817. package/dist/serve/namespace.d.ts.map +1 -1
  818. package/dist/serve/namespace.js +87 -27
  819. package/dist/serve/namespace.js.map +1 -1
  820. package/dist/serve/repro/compare.d.ts +2 -1
  821. package/dist/serve/repro/compare.d.ts.map +1 -1
  822. package/dist/serve/repro/compare.js +9 -1
  823. package/dist/serve/repro/compare.js.map +1 -1
  824. package/dist/serve/rules-fixture-check.d.ts.map +1 -1
  825. package/dist/serve/rules-fixture-check.js +22 -10
  826. package/dist/serve/rules-fixture-check.js.map +1 -1
  827. package/dist/serve/rules.d.ts +35 -9
  828. package/dist/serve/rules.d.ts.map +1 -1
  829. package/dist/serve/rules.js +72 -21
  830. package/dist/serve/rules.js.map +1 -1
  831. package/dist/serve/sandbox-session.d.ts +6 -0
  832. package/dist/serve/sandbox-session.d.ts.map +1 -1
  833. package/dist/serve/sandbox-session.js +11 -3
  834. package/dist/serve/sandbox-session.js.map +1 -1
  835. package/dist/serve/server.d.ts +10 -2
  836. package/dist/serve/server.d.ts.map +1 -1
  837. package/dist/serve/server.js +24 -4
  838. package/dist/serve/server.js.map +1 -1
  839. package/dist/serve/site-ui/_astro/{RulesCodeEditor.Cp_-FK3b.js → RulesCodeEditor.D-eQLCvu.js} +1 -1
  840. package/dist/serve/site-ui/_astro/app.BjQiEBOY.js +1 -0
  841. package/dist/serve/site-ui/_astro/app.C84Qr10v.js +151 -0
  842. package/dist/serve/site-ui/_astro/{chess-showcase.CVhCNUi_.js → chess-showcase.CsH1s4g7.js} +1 -1
  843. package/dist/serve/site-ui/_astro/{example-runtime.zC1l-Yka.js → example-runtime.CTp8mh7I.js} +1 -1
  844. package/dist/serve/site-ui/_astro/sandbox-controls.DI8MTU3L.js +1725 -0
  845. package/dist/serve/site-ui/_astro/{seed.B4vza_Bv.js → seed.BvtbLu-q.js} +1 -1
  846. package/dist/serve/site-ui/_astro/writes.D8gcuovU.js +1 -0
  847. package/dist/serve/site-ui/auth/index.html +1 -1
  848. package/dist/serve/site-ui/docs/ai-compat/index.html +66 -8
  849. package/dist/serve/site-ui/docs/ai-compat.md +73 -7
  850. package/dist/serve/site-ui/docs/app-check-compat/index.html +102 -26
  851. package/dist/serve/site-ui/docs/app-check-compat.md +107 -25
  852. package/dist/serve/site-ui/docs/auth-compat/index.html +33 -21
  853. package/dist/serve/site-ui/docs/auth-compat.md +35 -20
  854. package/dist/serve/site-ui/docs/build/ai-logic/index.html +29 -6
  855. package/dist/serve/site-ui/docs/build/ai-logic.md +30 -3
  856. package/dist/serve/site-ui/docs/conformance-scores/index.html +2 -2
  857. package/dist/serve/site-ui/docs/conformance-scores.md +2 -2
  858. package/dist/serve/site-ui/docs/database-compat/index.html +113 -49
  859. package/dist/serve/site-ui/docs/database-compat.md +118 -48
  860. package/dist/serve/site-ui/docs/firestore-compat/index.html +144 -37
  861. package/dist/serve/site-ui/docs/firestore-compat.md +149 -36
  862. package/dist/serve/site-ui/docs/firestore-swift-compat/index.html +1 -1
  863. package/dist/serve/site-ui/docs/firestore-swift-compat.md +1 -1
  864. package/dist/serve/site-ui/docs/functions-rtdb-compat/index.html +12 -12
  865. package/dist/serve/site-ui/docs/functions-rtdb-compat.md +12 -12
  866. package/dist/serve/site-ui/docs/get-started/how-the-swap-works/index.html +1 -1
  867. package/dist/serve/site-ui/docs/get-started/how-the-swap-works.md +1 -1
  868. package/dist/serve/site-ui/docs/get-started/node-host/index.html +1 -0
  869. package/dist/serve/site-ui/docs/get-started/node-host.md +2 -0
  870. package/dist/serve/site-ui/docs/index.json +55 -5
  871. package/dist/serve/site-ui/docs/messaging-compat/index.html +2 -2
  872. package/dist/serve/site-ui/docs/messaging-compat.md +2 -2
  873. package/dist/serve/site-ui/docs/pyric-ai-scripting-reference-api/index.html +3 -1
  874. package/dist/serve/site-ui/docs/pyric-ai-scripting-reference-api.md +2 -0
  875. package/dist/serve/site-ui/docs/pyric-app-check-reference-api/index.html +11 -3
  876. package/dist/serve/site-ui/docs/pyric-app-check-reference-api.md +13 -3
  877. package/dist/serve/site-ui/docs/pyric-cli-bridge-client-reference-api/index.html +1 -1
  878. package/dist/serve/site-ui/docs/pyric-cli-bridge-client-reference-api.md +1 -1
  879. package/dist/serve/site-ui/docs/pyric-cli-next-reference-api/index.html +1 -0
  880. package/dist/serve/site-ui/docs/pyric-cli-next-reference-api.md +1 -0
  881. package/dist/serve/site-ui/docs/pyric-cli-register-client-firestore-reference-api/index.html +1 -1
  882. package/dist/serve/site-ui/docs/pyric-cli-register-client-firestore-reference-api.md +1 -1
  883. package/dist/serve/site-ui/docs/pyric-cli-serve-worker-reference-api/index.html +17 -9
  884. package/dist/serve/site-ui/docs/pyric-cli-serve-worker-reference-api.md +13 -11
  885. package/dist/serve/site-ui/docs/pyric-database-reference-api/index.html +8 -4
  886. package/dist/serve/site-ui/docs/pyric-database-reference-api.md +9 -4
  887. package/dist/serve/site-ui/docs/pyric-rules-reference-api/index.html +15 -4
  888. package/dist/serve/site-ui/docs/pyric-rules-reference-api.md +21 -4
  889. package/dist/serve/site-ui/docs/pyric-storage-reference-api/index.html +7 -1
  890. package/dist/serve/site-ui/docs/pyric-storage-reference-api.md +1 -0
  891. package/dist/serve/site-ui/docs/reference/cli/index.html +4 -3
  892. package/dist/serve/site-ui/docs/reference/cli.md +5 -3
  893. package/dist/serve/site-ui/docs/rules-compat/index.html +150 -49
  894. package/dist/serve/site-ui/docs/rules-compat.md +149 -51
  895. package/dist/serve/site-ui/docs/storage-compat/index.html +20 -20
  896. package/dist/serve/site-ui/docs/storage-compat.md +20 -20
  897. package/dist/serve/site-ui/docs/tutorial/index.html +12 -1
  898. package/dist/serve/site-ui/docs/tutorial.md +13 -1
  899. package/dist/serve/site-ui/examples/chess/index.html +1 -1
  900. package/dist/serve/site-ui/firestore/index.html +1 -1
  901. package/dist/serve/site-ui/rtdb/index.html +1 -1
  902. package/dist/serve/site-ui/settings/index.html +1 -1
  903. package/dist/serve/site-ui/storage/index.html +1 -1
  904. package/dist/serve/site-ui/studio/index.html +1 -1
  905. package/dist/serve/site-ui/traffic/index.html +1 -1
  906. package/dist/serve/vite-ai-config.d.ts +8 -0
  907. package/dist/serve/vite-ai-config.d.ts.map +1 -1
  908. package/dist/serve/vite-ai-config.js +16 -1
  909. package/dist/serve/vite-ai-config.js.map +1 -1
  910. package/dist/serve/vite-functions-development.d.ts +3 -3
  911. package/dist/serve/vite-functions-development.d.ts.map +1 -1
  912. package/dist/serve/vite-functions-development.js +1 -1
  913. package/dist/serve/vite-functions-development.js.map +1 -1
  914. package/dist/serve/vite-generation-bridge.d.ts +2 -2
  915. package/dist/serve/vite-generation-bridge.d.ts.map +1 -1
  916. package/dist/serve/vite-generation-functions.d.ts +3 -3
  917. package/dist/serve/vite-generation-functions.d.ts.map +1 -1
  918. package/dist/serve/vite-generation-functions.js +1 -1
  919. package/dist/serve/vite-generation-functions.js.map +1 -1
  920. package/dist/serve/vite-generation-middleware.d.ts +1 -1
  921. package/dist/serve/vite-generation-middleware.d.ts.map +1 -1
  922. package/dist/serve/vite-generation-middleware.js +36 -1
  923. package/dist/serve/vite-generation-middleware.js.map +1 -1
  924. package/dist/serve/vite-module-swap.d.ts.map +1 -1
  925. package/dist/serve/vite-module-swap.js +8 -0
  926. package/dist/serve/vite-module-swap.js.map +1 -1
  927. package/dist/serve/vite-page-runtime.d.ts.map +1 -1
  928. package/dist/serve/vite-page-runtime.js +7 -1
  929. package/dist/serve/vite-page-runtime.js.map +1 -1
  930. package/dist/serve/vite-rules-source.d.ts +1 -1
  931. package/dist/serve/vite-rules-source.d.ts.map +1 -1
  932. package/dist/serve/vite-rules-source.js +2 -4
  933. package/dist/serve/vite-rules-source.js.map +1 -1
  934. package/dist/serve/vite-sandbox-generation.d.ts +2 -2
  935. package/dist/serve/vite-sandbox-generation.d.ts.map +1 -1
  936. package/dist/serve/vite-sandbox-generation.js +4 -2
  937. package/dist/serve/vite-sandbox-generation.js.map +1 -1
  938. package/dist/serve/worker/ai-proxy-paths.d.ts +32 -0
  939. package/dist/serve/worker/ai-proxy-paths.d.ts.map +1 -0
  940. package/dist/serve/worker/ai-proxy-paths.js +20 -0
  941. package/dist/serve/worker/ai-proxy-paths.js.map +1 -0
  942. package/dist/serve/worker/client/ai.d.ts +3 -1
  943. package/dist/serve/worker/client/ai.d.ts.map +1 -1
  944. package/dist/serve/worker/client/ai.js +3 -0
  945. package/dist/serve/worker/client/ai.js.map +1 -1
  946. package/dist/serve/worker/client/auth.d.ts +29 -5
  947. package/dist/serve/worker/client/auth.d.ts.map +1 -1
  948. package/dist/serve/worker/client/auth.js +61 -11
  949. package/dist/serve/worker/client/auth.js.map +1 -1
  950. package/dist/serve/worker/client/clock.d.ts +0 -16
  951. package/dist/serve/worker/client/clock.d.ts.map +1 -1
  952. package/dist/serve/worker/client/clock.js +23 -10
  953. package/dist/serve/worker/client/clock.js.map +1 -1
  954. package/dist/serve/worker/client/firestore-reads.d.ts +12 -5
  955. package/dist/serve/worker/client/firestore-reads.d.ts.map +1 -1
  956. package/dist/serve/worker/client/firestore-reads.js +47 -16
  957. package/dist/serve/worker/client/firestore-reads.js.map +1 -1
  958. package/dist/serve/worker/client/firestore-refs.d.ts.map +1 -1
  959. package/dist/serve/worker/client/firestore-refs.js +4 -14
  960. package/dist/serve/worker/client/firestore-refs.js.map +1 -1
  961. package/dist/serve/worker/client/rtdb-connection-lifecycle.d.ts.map +1 -1
  962. package/dist/serve/worker/client/rtdb-connection-lifecycle.js +5 -0
  963. package/dist/serve/worker/client/rtdb-connection-lifecycle.js.map +1 -1
  964. package/dist/serve/worker/client/rtdb-snapshots.d.ts +7 -0
  965. package/dist/serve/worker/client/rtdb-snapshots.d.ts.map +1 -1
  966. package/dist/serve/worker/client/rtdb-snapshots.js +25 -1
  967. package/dist/serve/worker/client/rtdb-snapshots.js.map +1 -1
  968. package/dist/serve/worker/client/rtdb-value-validation.d.ts +21 -0
  969. package/dist/serve/worker/client/rtdb-value-validation.d.ts.map +1 -0
  970. package/dist/serve/worker/client/rtdb-value-validation.js +183 -0
  971. package/dist/serve/worker/client/rtdb-value-validation.js.map +1 -0
  972. package/dist/serve/worker/client/rtdb-writes.d.ts.map +1 -1
  973. package/dist/serve/worker/client/rtdb-writes.js +7 -0
  974. package/dist/serve/worker/client/rtdb-writes.js.map +1 -1
  975. package/dist/serve/worker/client/snapshots.d.ts +2 -0
  976. package/dist/serve/worker/client/snapshots.d.ts.map +1 -1
  977. package/dist/serve/worker/client/snapshots.js +13 -7
  978. package/dist/serve/worker/client/snapshots.js.map +1 -1
  979. package/dist/serve/worker/client/websocket-connection.d.ts +6 -0
  980. package/dist/serve/worker/client/websocket-connection.d.ts.map +1 -1
  981. package/dist/serve/worker/client/websocket-connection.js +32 -3
  982. package/dist/serve/worker/client/websocket-connection.js.map +1 -1
  983. package/dist/serve/worker/entry.js +2 -0
  984. package/dist/serve/worker/entry.js.map +1 -1
  985. package/dist/serve/worker/host/auth-credential-sign-in.d.ts +33 -0
  986. package/dist/serve/worker/host/auth-credential-sign-in.d.ts.map +1 -0
  987. package/dist/serve/worker/host/auth-credential-sign-in.js +70 -0
  988. package/dist/serve/worker/host/auth-credential-sign-in.js.map +1 -0
  989. package/dist/serve/worker/host/auth-reauthentication.js +3 -3
  990. package/dist/serve/worker/host/auth-reauthentication.js.map +1 -1
  991. package/dist/serve/worker/host/rules.d.ts +15 -1
  992. package/dist/serve/worker/host/rules.d.ts.map +1 -1
  993. package/dist/serve/worker/host/rules.js +43 -34
  994. package/dist/serve/worker/host/rules.js.map +1 -1
  995. package/dist/serve/worker/host/staged-sign-in-results.d.ts +24 -0
  996. package/dist/serve/worker/host/staged-sign-in-results.d.ts.map +1 -0
  997. package/dist/serve/worker/host/staged-sign-in-results.js +40 -0
  998. package/dist/serve/worker/host/staged-sign-in-results.js.map +1 -0
  999. package/dist/serve/worker/host/storage.d.ts.map +1 -1
  1000. package/dist/serve/worker/host/storage.js +20 -12
  1001. package/dist/serve/worker/host/storage.js.map +1 -1
  1002. package/dist/serve/worker/host/subscriptions.d.ts.map +1 -1
  1003. package/dist/serve/worker/host/subscriptions.js +6 -2
  1004. package/dist/serve/worker/host/subscriptions.js.map +1 -1
  1005. package/dist/serve/worker/host-ai.d.ts +4 -5
  1006. package/dist/serve/worker/host-ai.d.ts.map +1 -1
  1007. package/dist/serve/worker/host-ai.js +19 -23
  1008. package/dist/serve/worker/host-ai.js.map +1 -1
  1009. package/dist/serve/worker/host-auth.d.ts +3 -0
  1010. package/dist/serve/worker/host-auth.d.ts.map +1 -1
  1011. package/dist/serve/worker/host-auth.js +32 -13
  1012. package/dist/serve/worker/host-auth.js.map +1 -1
  1013. package/dist/serve/worker/host-context.d.ts +13 -4
  1014. package/dist/serve/worker/host-context.d.ts.map +1 -1
  1015. package/dist/serve/worker/host-context.js.map +1 -1
  1016. package/dist/serve/worker/inbound-validation/operation-arguments.d.ts.map +1 -1
  1017. package/dist/serve/worker/inbound-validation/operation-arguments.js +38 -14
  1018. package/dist/serve/worker/inbound-validation/operation-arguments.js.map +1 -1
  1019. package/dist/serve/worker/operation-persistence.d.ts +1 -0
  1020. package/dist/serve/worker/operation-persistence.d.ts.map +1 -1
  1021. package/dist/serve/worker/operation-persistence.js +1 -0
  1022. package/dist/serve/worker/operation-persistence.js.map +1 -1
  1023. package/dist/serve/worker/protocol.d.ts +22 -1
  1024. package/dist/serve/worker/protocol.d.ts.map +1 -1
  1025. package/dist/serve/worker/protocol.js.map +1 -1
  1026. package/dist/serve/worker/rtdb-value-equality.d.ts.map +1 -1
  1027. package/dist/serve/worker/rtdb-value-equality.js +3 -1
  1028. package/dist/serve/worker/rtdb-value-equality.js.map +1 -1
  1029. package/dist/serve/worker/serve-init.d.ts.map +1 -1
  1030. package/dist/serve/worker/serve-init.js +3 -9
  1031. package/dist/serve/worker/serve-init.js.map +1 -1
  1032. package/dist/serve/worker-build-lock.d.ts +23 -0
  1033. package/dist/serve/worker-build-lock.d.ts.map +1 -0
  1034. package/dist/serve/worker-build-lock.js +179 -0
  1035. package/dist/serve/worker-build-lock.js.map +1 -0
  1036. package/dist/serve/worker-bundle-cache.d.ts +17 -0
  1037. package/dist/serve/worker-bundle-cache.d.ts.map +1 -0
  1038. package/dist/serve/worker-bundle-cache.js +89 -0
  1039. package/dist/serve/worker-bundle-cache.js.map +1 -0
  1040. package/dist/verify/cases.js +7 -3
  1041. package/dist/verify/cases.js.map +1 -1
  1042. package/dist/verify/index.d.ts.map +1 -1
  1043. package/dist/verify/index.js +11 -5
  1044. package/dist/verify/index.js.map +1 -1
  1045. package/package.json +10 -4
  1046. package/src/assurance/.generated/conformance-verdicts.ts +111 -40
  1047. package/src/assurance/capabilities.ts +11 -15
  1048. package/src/bounded-request.ts +66 -7
  1049. package/src/bridge/client/bridge-url.ts +5 -1
  1050. package/src/bridge/client/bridge.ts +19 -3
  1051. package/src/bridge/frame-output.ts +45 -0
  1052. package/src/bridge/protocol.ts +13 -0
  1053. package/src/bridge/server/in-process.ts +57 -17
  1054. package/src/bridge/server/peer.ts +60 -1
  1055. package/src/bridge/server/standalone.ts +29 -107
  1056. package/src/bridge/surface/arguments/sandbox.ts +2 -69
  1057. package/src/bridge/surface/arguments/seed.ts +78 -0
  1058. package/src/bridge/surface/context.ts +26 -37
  1059. package/src/bridge/surface/database-instance-catalog.ts +4 -32
  1060. package/src/bridge/surface/database-instance-project.ts +40 -0
  1061. package/src/bridge/surface/database-instance.ts +4 -4
  1062. package/src/bridge/surface/functions-runtime.ts +5 -5
  1063. package/src/bridge/surface/held-identity.ts +4 -4
  1064. package/src/bridge/surface/manifest.sandbox.generated.ts +137 -0
  1065. package/src/bridge/surface/method-types.ts +61 -7
  1066. package/src/bridge/surface/methods/ai_logic/clearScripts.ts +2 -1
  1067. package/src/bridge/surface/methods/ai_logic/script.ts +2 -1
  1068. package/src/bridge/surface/methods/ai_logic/scripts.ts +2 -1
  1069. package/src/bridge/surface/methods/ai_logic/status.ts +1 -0
  1070. package/src/bridge/surface/methods/assurance/attach.ts +1 -0
  1071. package/src/bridge/surface/methods/assurance/canIUse.ts +1 -0
  1072. package/src/bridge/surface/methods/assurance/define.ts +1 -0
  1073. package/src/bridge/surface/methods/assurance/export.ts +1 -0
  1074. package/src/bridge/surface/methods/assurance/inspect.ts +1 -0
  1075. package/src/bridge/surface/methods/assurance/map.ts +1 -0
  1076. package/src/bridge/surface/methods/assurance/minimize.ts +1 -0
  1077. package/src/bridge/surface/methods/assurance/propose.ts +1 -0
  1078. package/src/bridge/surface/methods/assurance/replaySession.ts +1 -0
  1079. package/src/bridge/surface/methods/assurance/run.ts +1 -0
  1080. package/src/bridge/surface/methods/assurance/start.ts +1 -0
  1081. package/src/bridge/surface/methods/assurance/testRulesHosted.ts +1 -0
  1082. package/src/bridge/surface/methods/assurance/verify.ts +1 -0
  1083. package/src/bridge/surface/methods/assurance/verifyCases.ts +1 -0
  1084. package/src/bridge/surface/methods/auth/actAsAdmin.ts +1 -0
  1085. package/src/bridge/surface/methods/auth/actAsAnonymous.ts +1 -0
  1086. package/src/bridge/surface/methods/auth/createCustomToken.ts +1 -0
  1087. package/src/bridge/surface/methods/auth/createUser.ts +2 -1
  1088. package/src/bridge/surface/methods/auth/deleteUser.ts +2 -1
  1089. package/src/bridge/surface/methods/auth/getUser.ts +2 -1
  1090. package/src/bridge/surface/methods/auth/getUserByEmail.ts +2 -1
  1091. package/src/bridge/surface/methods/auth/impersonate.ts +1 -0
  1092. package/src/bridge/surface/methods/auth/importUsers.ts +3 -2
  1093. package/src/bridge/surface/methods/auth/listUsers.ts +2 -1
  1094. package/src/bridge/surface/methods/auth/sessions.ts +1 -0
  1095. package/src/bridge/surface/methods/auth/setCustomUserClaims.ts +2 -1
  1096. package/src/bridge/surface/methods/auth/signInAnonymously.ts +1 -0
  1097. package/src/bridge/surface/methods/auth/signInWithCredential.ts +1 -0
  1098. package/src/bridge/surface/methods/auth/signInWithCustomToken.ts +1 -0
  1099. package/src/bridge/surface/methods/auth/signInWithEmailAndPassword.ts +1 -0
  1100. package/src/bridge/surface/methods/auth/signOut.ts +1 -0
  1101. package/src/bridge/surface/methods/auth/takeAuthMail.ts +1 -0
  1102. package/src/bridge/surface/methods/auth/updateUser.ts +2 -1
  1103. package/src/bridge/surface/methods/auth/useAppSession.ts +1 -0
  1104. package/src/bridge/surface/methods/auth/whoami.ts +1 -0
  1105. package/src/bridge/surface/methods/database/crawl.ts +1 -0
  1106. package/src/bridge/surface/methods/database/get.ts +1 -0
  1107. package/src/bridge/surface/methods/database/push.ts +1 -0
  1108. package/src/bridge/surface/methods/database/query.ts +1 -0
  1109. package/src/bridge/surface/methods/database/remove.ts +1 -0
  1110. package/src/bridge/surface/methods/database/set.ts +1 -0
  1111. package/src/bridge/surface/methods/database/update.ts +1 -0
  1112. package/src/bridge/surface/methods/firestore/addDoc.ts +2 -1
  1113. package/src/bridge/surface/methods/firestore/deleteDoc.ts +2 -1
  1114. package/src/bridge/surface/methods/firestore/discoverPaths.ts +1 -0
  1115. package/src/bridge/surface/methods/firestore/extractIndexes.ts +1 -0
  1116. package/src/bridge/surface/methods/firestore/findCollectionGroup.ts +1 -0
  1117. package/src/bridge/surface/methods/firestore/getAggregateFromServer.ts +1 -0
  1118. package/src/bridge/surface/methods/firestore/getCountFromServer.ts +1 -0
  1119. package/src/bridge/surface/methods/firestore/getDoc.ts +2 -1
  1120. package/src/bridge/surface/methods/firestore/getDocs.ts +2 -1
  1121. package/src/bridge/surface/methods/firestore/setDoc.ts +2 -1
  1122. package/src/bridge/surface/methods/firestore/updateDoc.ts +2 -1
  1123. package/src/bridge/surface/methods/firestore/writeBatch.ts +2 -1
  1124. package/src/bridge/surface/methods/firestore/writeIndexes.ts +1 -0
  1125. package/src/bridge/surface/methods/functions/executions.ts +2 -1
  1126. package/src/bridge/surface/methods/functions/fire.ts +7 -6
  1127. package/src/bridge/surface/methods/functions/listTriggers.ts +1 -0
  1128. package/src/bridge/surface/methods/messaging/deliveries.ts +1 -0
  1129. package/src/bridge/surface/methods/messaging/send.ts +2 -1
  1130. package/src/bridge/surface/methods/messaging/subscribeToTopic.ts +1 -0
  1131. package/src/bridge/surface/methods/messaging/tokens.ts +1 -0
  1132. package/src/bridge/surface/methods/messaging/unsubscribeFromTopic.ts +1 -0
  1133. package/src/bridge/surface/methods/registry.ts +2 -12
  1134. package/src/bridge/surface/methods/rules/explainDenial.ts +1 -0
  1135. package/src/bridge/surface/methods/rules/getStdlib.ts +1 -0
  1136. package/src/bridge/surface/methods/rules/lint.ts +1 -0
  1137. package/src/bridge/surface/methods/rules/listStdlib.ts +1 -0
  1138. package/src/bridge/surface/methods/rules/set.ts +1 -0
  1139. package/src/bridge/surface/methods/rules/simulate.ts +1 -0
  1140. package/src/bridge/surface/methods/sandbox/activity.ts +2 -1
  1141. package/src/bridge/surface/methods/sandbox/advanceClock.ts +1 -0
  1142. package/src/bridge/surface/methods/sandbox/apply.ts +1 -0
  1143. package/src/bridge/surface/methods/sandbox/checkpoint.ts +1 -0
  1144. package/src/bridge/surface/methods/sandbox/deleteCapture.ts +1 -1
  1145. package/src/bridge/surface/methods/sandbox/deleteCheckpoint.ts +1 -0
  1146. package/src/bridge/surface/methods/sandbox/diff.ts +1 -0
  1147. package/src/bridge/surface/methods/sandbox/discard.ts +1 -0
  1148. package/src/bridge/surface/methods/sandbox/events.ts +2 -1
  1149. package/src/bridge/surface/methods/sandbox/exportFixture.ts +1 -0
  1150. package/src/bridge/surface/methods/sandbox/fork.ts +1 -0
  1151. package/src/bridge/surface/methods/sandbox/inspect.ts +2 -1
  1152. package/src/bridge/surface/methods/sandbox/listBranches.ts +1 -0
  1153. package/src/bridge/surface/methods/sandbox/listCaptures.ts +1 -1
  1154. package/src/bridge/surface/methods/sandbox/listCheckpoints.ts +1 -0
  1155. package/src/bridge/surface/methods/sandbox/listeners.ts +1 -0
  1156. package/src/bridge/surface/methods/sandbox/openCapture.ts +1 -1
  1157. package/src/bridge/surface/methods/sandbox/promote.ts +1 -0
  1158. package/src/bridge/surface/methods/sandbox/renameCapture.ts +1 -1
  1159. package/src/bridge/surface/methods/sandbox/reset.ts +3 -2
  1160. package/src/bridge/surface/methods/sandbox/resetClock.ts +1 -0
  1161. package/src/bridge/surface/methods/sandbox/restore.ts +1 -0
  1162. package/src/bridge/surface/methods/sandbox/saveCapture.ts +1 -1
  1163. package/src/bridge/surface/methods/sandbox/seed.ts +3 -2
  1164. package/src/bridge/surface/methods/sandbox/seedFromFixture.ts +1 -0
  1165. package/src/bridge/surface/methods/sandbox/setClock.ts +1 -0
  1166. package/src/bridge/surface/methods/sandbox-registry.ts +24 -0
  1167. package/src/bridge/surface/methods/storage/deleteObject.ts +1 -0
  1168. package/src/bridge/surface/methods/storage/getBytes.ts +1 -0
  1169. package/src/bridge/surface/methods/storage/getDownloadURL.ts +1 -0
  1170. package/src/bridge/surface/methods/storage/getMetadata.ts +1 -0
  1171. package/src/bridge/surface/methods/storage/listAll.ts +1 -0
  1172. package/src/bridge/surface/methods/storage/provision.ts +1 -0
  1173. package/src/bridge/surface/methods/storage/setCrossServiceIam.ts +1 -0
  1174. package/src/bridge/surface/methods/storage/status.ts +1 -0
  1175. package/src/bridge/surface/methods/storage/updateMetadata.ts +1 -0
  1176. package/src/bridge/surface/methods/storage/uploadBytes.ts +1 -0
  1177. package/src/bridge/surface/request-instant.ts +2 -2
  1178. package/src/bridge/surface/rules-engines/database.ts +1 -2
  1179. package/src/bridge/surface/rules-engines/storage-request-resource.ts +275 -0
  1180. package/src/bridge/surface/rules-engines/storage.ts +54 -81
  1181. package/src/bridge/surface/sandbox-context.ts +49 -0
  1182. package/src/bridge/surface/service-handles.ts +13 -9
  1183. package/src/bridge/surface/sign-in.ts +3 -3
  1184. package/src/bridge/surface/storage-rules.ts +2 -14
  1185. package/src/bridge/surface/stored-identity.ts +3 -3
  1186. package/src/bridge/surface/types.ts +30 -8
  1187. package/src/cli/firebase-json.ts +45 -7
  1188. package/src/cli/firestore-indexes.ts +2 -1
  1189. package/src/cli/index.ts +46 -11
  1190. package/src/cli/public-dir-hint.ts +35 -0
  1191. package/src/cli/run.ts +35 -7
  1192. package/src/cli/sandbox-runner.ts +10 -2
  1193. package/src/cli/serve-diagnostics.ts +12 -1
  1194. package/src/cli/serve.ts +27 -26
  1195. package/src/cli/service-commands.test.ts +7 -0
  1196. package/src/cli/snapshot.ts +15 -6
  1197. package/src/cli/surface-method-runner.ts +1 -1
  1198. package/src/cli/verify.ts +11 -1
  1199. package/src/conformance/.generated/can-i-use-browser.ts +22 -3
  1200. package/src/conformance/.generated/can-i-use.ts +1 -1
  1201. package/src/conformance/.generated/conformance-docs.ts +1 -1
  1202. package/src/conformance/.generated/served-availability.ts +1 -1
  1203. package/src/discover/merge.ts +12 -3
  1204. package/src/functions/child-protocol.ts +59 -0
  1205. package/src/functions/child.ts +107 -0
  1206. package/src/{functions-rtdb → functions}/development-runtime.ts +13 -14
  1207. package/src/functions/endpoints.ts +80 -0
  1208. package/src/{functions-rtdb → functions}/project.ts +2 -2
  1209. package/src/functions/rtdb/child-runtime.ts +139 -0
  1210. package/src/{functions-rtdb → functions/rtdb}/discovery.ts +9 -43
  1211. package/src/{functions-rtdb → functions/rtdb}/remote-delivery.ts +1 -1
  1212. package/src/functions/spawn.ts +212 -0
  1213. package/src/functions/unsupported.ts +42 -0
  1214. package/src/google-endpoints.ts +74 -3
  1215. package/src/next/bridge-import-loader.ts +56 -0
  1216. package/src/next/bridge-imports.ts +108 -0
  1217. package/src/next/client-aliases.ts +14 -27
  1218. package/src/next/guard.ts +33 -11
  1219. package/src/next/turbopack-config.ts +26 -0
  1220. package/src/next/webpack-config.ts +26 -0
  1221. package/src/next/with-pyric.ts +26 -0
  1222. package/src/register/activation.ts +26 -0
  1223. package/src/register/app-bridge-admin-app-check.ts +3 -1
  1224. package/src/register/child-process-guard.ts +189 -0
  1225. package/src/register/client/bootstrap.ts +7 -1
  1226. package/src/register/connect-prototypes.ts +12 -0
  1227. package/src/register/hooks.ts +56 -3
  1228. package/src/register/index.ts +92 -20
  1229. package/src/register/mapping.ts +57 -3
  1230. package/src/register/net-guard.ts +149 -39
  1231. package/src/register/package-identity.ts +98 -0
  1232. package/src/register/swap-or-stop.ts +194 -0
  1233. package/src/register/worker-guard.ts +90 -0
  1234. package/src/remote/resolve-host.ts +14 -2
  1235. package/src/serve/ai-diagnostics-relay.ts +6 -1
  1236. package/src/serve/ai-proxy.ts +77 -20
  1237. package/src/serve/ai-terminal-blocks.ts +8 -4
  1238. package/src/serve/ai-terminal-text.ts +11 -0
  1239. package/src/serve/app-ports.ts +119 -0
  1240. package/src/serve/bridge-mount.ts +36 -8
  1241. package/src/serve/bundler.ts +87 -29
  1242. package/src/serve/discovery.ts +244 -67
  1243. package/src/serve/entries/ai.ts +28 -27
  1244. package/src/serve/entries/auth.ts +22 -1
  1245. package/src/serve/entries/firestore-surface.ts +1 -0
  1246. package/src/serve/entries/init-payload.ts +28 -5
  1247. package/src/serve/entries/moved-host.ts +28 -0
  1248. package/src/serve/entries/runtime-origin.ts +6 -0
  1249. package/src/serve/entries/unsupported/firestore.ts +0 -1
  1250. package/src/serve/entries/worker-runtime.ts +19 -6
  1251. package/src/serve/firebase-module-swap.ts +98 -15
  1252. package/src/serve/gemini-proxy.ts +140 -0
  1253. package/src/serve/hosted/runtime.ts +10 -2
  1254. package/src/serve/namespace.ts +99 -32
  1255. package/src/serve/repro/compare.ts +9 -1
  1256. package/src/serve/rules-fixture-check.ts +34 -9
  1257. package/src/serve/rules.ts +104 -20
  1258. package/src/serve/sandbox-session.ts +15 -3
  1259. package/src/serve/server.ts +29 -2
  1260. package/src/serve/vite-ai-config.ts +19 -1
  1261. package/src/serve/vite-functions-development.ts +3 -3
  1262. package/src/serve/vite-generation-bridge.ts +2 -2
  1263. package/src/serve/vite-generation-functions.ts +5 -5
  1264. package/src/serve/vite-generation-middleware.ts +38 -2
  1265. package/src/serve/vite-module-swap.ts +8 -0
  1266. package/src/serve/vite-page-runtime.ts +6 -0
  1267. package/src/serve/vite-rules-source.ts +2 -5
  1268. package/src/serve/vite-sandbox-generation.ts +7 -5
  1269. package/src/serve/worker/__tests__/auth-credential-sign-in.test.ts +343 -0
  1270. package/src/serve/worker/__tests__/auth-m2-parity.test.ts +45 -1
  1271. package/src/serve/worker/__tests__/staged-sign-in-results.test.ts +139 -0
  1272. package/src/serve/worker/ai-proxy-paths.ts +35 -0
  1273. package/src/serve/worker/client/ai.ts +6 -1
  1274. package/src/serve/worker/client/auth.ts +97 -21
  1275. package/src/serve/worker/client/clock.ts +10 -12
  1276. package/src/serve/worker/client/firestore-reads.ts +70 -21
  1277. package/src/serve/worker/client/firestore-refs.ts +4 -14
  1278. package/src/serve/worker/client/rtdb-connection-lifecycle.ts +5 -0
  1279. package/src/serve/worker/client/rtdb-snapshots.ts +24 -2
  1280. package/src/serve/worker/client/rtdb-value-validation.ts +198 -0
  1281. package/src/serve/worker/client/rtdb-writes.ts +7 -0
  1282. package/src/serve/worker/client/snapshots.ts +15 -6
  1283. package/src/serve/worker/client/websocket-connection.ts +39 -3
  1284. package/src/serve/worker/entry.ts +2 -0
  1285. package/src/serve/worker/host/auth-credential-sign-in.ts +97 -0
  1286. package/src/serve/worker/host/auth-reauthentication.ts +3 -3
  1287. package/src/serve/worker/host/rules.ts +53 -34
  1288. package/src/serve/worker/host/staged-sign-in-results.ts +53 -0
  1289. package/src/serve/worker/host/storage.ts +26 -11
  1290. package/src/serve/worker/host/subscriptions.ts +7 -4
  1291. package/src/serve/worker/host-ai.ts +23 -23
  1292. package/src/serve/worker/host-auth.ts +33 -15
  1293. package/src/serve/worker/host-context.ts +13 -3
  1294. package/src/serve/worker/inbound-validation/operation-arguments.ts +38 -14
  1295. package/src/serve/worker/operation-persistence.ts +1 -0
  1296. package/src/serve/worker/protocol.ts +21 -3
  1297. package/src/serve/worker/rtdb-value-equality.ts +3 -1
  1298. package/src/serve/worker/serve-init.ts +3 -9
  1299. package/src/serve/worker-build-lock.ts +207 -0
  1300. package/src/serve/worker-bundle-cache.ts +90 -0
  1301. package/src/verify/cases.ts +6 -3
  1302. package/src/verify/index.ts +16 -4
  1303. package/dist/functions-rtdb/child.d.ts.map +0 -1
  1304. package/dist/functions-rtdb/child.js +0 -386
  1305. package/dist/functions-rtdb/child.js.map +0 -1
  1306. package/dist/functions-rtdb/delivery.d.ts.map +0 -1
  1307. package/dist/functions-rtdb/delivery.js.map +0 -1
  1308. package/dist/functions-rtdb/development-runtime.d.ts.map +0 -1
  1309. package/dist/functions-rtdb/development-runtime.js.map +0 -1
  1310. package/dist/functions-rtdb/discovery.d.ts.map +0 -1
  1311. package/dist/functions-rtdb/discovery.js.map +0 -1
  1312. package/dist/functions-rtdb/event.d.ts.map +0 -1
  1313. package/dist/functions-rtdb/event.js.map +0 -1
  1314. package/dist/functions-rtdb/events.d.ts.map +0 -1
  1315. package/dist/functions-rtdb/events.js.map +0 -1
  1316. package/dist/functions-rtdb/execution-log.d.ts.map +0 -1
  1317. package/dist/functions-rtdb/execution-log.js.map +0 -1
  1318. package/dist/functions-rtdb/execution.d.ts.map +0 -1
  1319. package/dist/functions-rtdb/execution.js.map +0 -1
  1320. package/dist/functions-rtdb/in-memory-delivery.d.ts.map +0 -1
  1321. package/dist/functions-rtdb/in-memory-delivery.js.map +0 -1
  1322. package/dist/functions-rtdb/module-loader.d.ts.map +0 -1
  1323. package/dist/functions-rtdb/module-loader.js.map +0 -1
  1324. package/dist/functions-rtdb/project.d.ts +0 -7
  1325. package/dist/functions-rtdb/project.d.ts.map +0 -1
  1326. package/dist/functions-rtdb/project.js.map +0 -1
  1327. package/dist/functions-rtdb/projection.d.ts.map +0 -1
  1328. package/dist/functions-rtdb/projection.js.map +0 -1
  1329. package/dist/functions-rtdb/reference-pattern.d.ts.map +0 -1
  1330. package/dist/functions-rtdb/reference-pattern.js.map +0 -1
  1331. package/dist/functions-rtdb/remote-delivery.d.ts.map +0 -1
  1332. package/dist/functions-rtdb/remote-delivery.js.map +0 -1
  1333. package/dist/serve/site-ui/_astro/app.C--T2qDK.js +0 -151
  1334. package/dist/serve/site-ui/_astro/app.DqyhRyrU.js +0 -1
  1335. package/dist/serve/site-ui/_astro/sandbox-controls.Bv6lfpIe.js +0 -1725
  1336. package/dist/serve/site-ui/_astro/writes.Bg0YEEA7.js +0 -1
  1337. package/src/functions-rtdb/child.ts +0 -512
  1338. /package/dist/{functions-rtdb → functions}/events.d.ts +0 -0
  1339. /package/dist/{functions-rtdb → functions}/events.js +0 -0
  1340. /package/dist/{functions-rtdb → functions}/execution-log.d.ts +0 -0
  1341. /package/dist/{functions-rtdb → functions}/execution-log.js +0 -0
  1342. /package/dist/{functions-rtdb → functions}/module-loader.d.ts +0 -0
  1343. /package/dist/{functions-rtdb → functions}/module-loader.js +0 -0
  1344. /package/dist/{functions-rtdb → functions/rtdb}/delivery.d.ts +0 -0
  1345. /package/dist/{functions-rtdb → functions/rtdb}/delivery.js +0 -0
  1346. /package/dist/{functions-rtdb → functions/rtdb}/event.d.ts +0 -0
  1347. /package/dist/{functions-rtdb → functions/rtdb}/event.js +0 -0
  1348. /package/dist/{functions-rtdb → functions/rtdb}/execution.d.ts +0 -0
  1349. /package/dist/{functions-rtdb → functions/rtdb}/execution.js +0 -0
  1350. /package/dist/{functions-rtdb → functions/rtdb}/in-memory-delivery.d.ts +0 -0
  1351. /package/dist/{functions-rtdb → functions/rtdb}/in-memory-delivery.js +0 -0
  1352. /package/dist/{functions-rtdb → functions/rtdb}/projection.d.ts +0 -0
  1353. /package/dist/{functions-rtdb → functions/rtdb}/projection.js +0 -0
  1354. /package/dist/{functions-rtdb → functions/rtdb}/reference-pattern.d.ts +0 -0
  1355. /package/dist/{functions-rtdb → functions/rtdb}/reference-pattern.js +0 -0
  1356. /package/dist/{functions-rtdb → functions/rtdb}/remote-delivery.js +0 -0
  1357. /package/src/{functions-rtdb → functions}/events.ts +0 -0
  1358. /package/src/{functions-rtdb → functions}/execution-log.ts +0 -0
  1359. /package/src/{functions-rtdb → functions}/module-loader.ts +0 -0
  1360. /package/src/{functions-rtdb → functions/rtdb}/delivery.ts +0 -0
  1361. /package/src/{functions-rtdb → functions/rtdb}/event.ts +0 -0
  1362. /package/src/{functions-rtdb → functions/rtdb}/execution.ts +0 -0
  1363. /package/src/{functions-rtdb → functions/rtdb}/in-memory-delivery.ts +0 -0
  1364. /package/src/{functions-rtdb → functions/rtdb}/projection.ts +0 -0
  1365. /package/src/{functions-rtdb → functions/rtdb}/reference-pattern.ts +0 -0
@@ -23,16 +23,19 @@ import { createReadStream, existsSync, statSync } from 'node:fs';
23
23
  import { basename, join } from 'node:path';
24
24
  import type { IncomingMessage, ServerResponse } from 'node:http';
25
25
  import type { ActivityIncident } from 'pyric/firestore/internal';
26
- import { collectBody } from '../bridge/server/peer.js';
26
+ import { BODY_TOO_LARGE_CODE, closingHeaders, collectBody } from '../bridge/server/peer.js';
27
27
  import { handleIndexConfig } from './index-config-route.js';
28
28
  import { StateFileError, type StateSection, type StateStore } from './state-store.js';
29
29
  import { createWriterLock, type WriterLock } from './writer-lock.js';
30
30
  import { createStudioRoutes, type StudioRouteOptions } from './studio/index.js';
31
31
  import { pipeFileToResponse, getHeader, isAllowedHost, isAllowedOrigin, isAllowedSessionToken, type ServeLogger } from './server.js';
32
32
  import type { InitPayload } from './init-payload.js';
33
+ import type { AppPorts } from './app-ports.js';
33
34
  import { handleActivity } from './activity-route.js';
34
35
  import { handleAiProxy, AI_PROXY_ROUTE } from './ai-proxy.js';
36
+ import { createGeminiProxy, isGeminiProxyPath, type GeminiProxyConfig } from './gemini-proxy.js';
35
37
  import { aiTerminalBlockFor, type AiDiagnosticPayload } from './ai-terminal-blocks.js';
38
+ import { sanitizeForTerminal, stripTerminalControls } from './ai-terminal-text.js';
36
39
  import { createSiteTreeHandler } from './site-tree.js';
37
40
  import { handleAvatar } from './assets/avatar-route.js';
38
41
  import { ASSETS_ROUTE_PREFIX } from './assets/avatar-url.js';
@@ -141,12 +144,22 @@ export interface NamespaceOptions {
141
144
  boundHost?: string;
142
145
  /** Extra allowed hostnames. */
143
146
  allowedHosts?: string[];
147
+ /** Under `pyric sandbox`, the app's ports, including the port of a dev
148
+ * server that proxies `/__pyric/*` here (`withPyric` under `next dev`).
149
+ * The guarded routes accept a page's Origin on any of them. Absent, only
150
+ * the connection's own port is accepted, as under the Vite plugin. The
151
+ * caller that creates it teaches it from each request. */
152
+ appPorts?: AppPorts;
144
153
  /** The OpenAI-compatible upstream `/__pyric/ai-proxy` forwards to
145
154
  * (pyric/ai — cdd-deltas #98.2). Falls back to the
146
155
  * `PYRIC_AI_PROXY_UPSTREAM` env var, then `http://localhost:11434/v1`
147
156
  * (local Ollama). Always mounted — the route only touches the network
148
157
  * when a request arrives. */
149
158
  aiProxyUpstream?: string;
159
+ /** The gemini engine `/__pyric/ai-proxy/gemini` sends for a browser engine
160
+ * (#1584): the Vite plugin's `ai.engine` when it is gemini. Absent, it
161
+ * sends to Google AI Studio with the key from this process's environment. */
162
+ aiGemini?: GeminiProxyConfig;
150
163
  /** Receives one handshake beacon per pyric-launched child (`POST
151
164
  * /__pyric/beacon`, sent by `@pyric/cli/register` once its hooks and
152
165
  * net-guard are installed). Absent means the route still 204s; the child
@@ -354,6 +367,11 @@ async function handleCapture(
354
367
 
355
368
  const DENIAL_THROTTLE_MS = 5_000;
356
369
 
370
+ /** Largest relayed denial the route reads. A real one is a message, a path, a
371
+ * uid and a short owner stack, a few KiB at most; the index route's 64 KiB
372
+ * leaves room for a deep stack without letting a page grow the server. */
373
+ export const DENIAL_BODY_LIMIT_BYTES = 64 * 1024;
374
+
357
375
  /** Loosely-typed mirror of the client's relay payload — JSON from the served
358
376
  * page, read defensively since nothing here enforces the wire shape. */
359
377
  interface DenialRelayPayload {
@@ -397,27 +415,48 @@ export function createDenialThrottle(windowMs: number = DENIAL_THROTTLE_MS): {
397
415
  }
398
416
  export type DenialThrottle = ReturnType<typeof createDenialThrottle>;
399
417
 
418
+ /** A page-supplied string as one terminal-safe line. Every field of a relayed
419
+ * denial comes from the served page, which need not be the developer's own
420
+ * code, so none of it reaches the terminal with control characters intact. */
421
+ function pageText(value: string): string {
422
+ return sanitizeForTerminal(value);
423
+ }
424
+
425
+ /** A multi-line page-supplied string (a query-proof remediation) as indented
426
+ * terminal lines. Each line keeps its spacing and its whole length, because a
427
+ * reader pastes the `pyric rules test` command and the `Fixture case:` JSON
428
+ * out of it; only control and bidi characters are replaced. The denial body
429
+ * limit bounds the total, so no line or line count is cut here. */
430
+ function pageLines(value: string): string[] {
431
+ const lines = value.split(/\r?\n/).map((line) => stripTerminalControls(line).trimEnd());
432
+ const first = lines.findIndex((line) => line.length > 0);
433
+ if (first === -1) return [];
434
+ let last = lines.length - 1;
435
+ while (lines[last]!.length === 0) last -= 1;
436
+ return lines.slice(first, last + 1).map((line) => (line.length > 0 ? ` ${line}` : ''));
437
+ }
438
+
400
439
  /** Format a relayed denial into the compact terminal block: the message,
401
440
  * then (when present) the request method/path, the auth uid, and any
402
441
  * remediation guidance. A few lines, never a JSON dump. */
403
442
  export function formatDenialBlock(payload: DenialRelayPayload): string {
404
443
  const message = typeof payload.message === 'string' ? payload.message : 'permission denied';
405
- const lines = [` ⚠ [pyric] denied: ${message}`];
444
+ const lines = [` ⚠ [pyric] denied: ${pageText(message)}`];
406
445
  const ctx = payload.denialContext;
407
446
  const request = ctx?.request;
408
447
  if (request?.method && request?.path) {
409
- const instance = typeof payload.instance === 'string' ? ` (${payload.instance})` : '';
410
- lines.push(` ${request.method} ${request.path}${instance}`);
448
+ const instance = typeof payload.instance === 'string' ? ` (${pageText(payload.instance)})` : '';
449
+ lines.push(` ${pageText(String(request.method))} ${pageText(String(request.path))}${instance}`);
411
450
  }
412
451
  const uid = ctx?.auth?.uid;
413
- lines.push(` auth: ${uid ?? 'anonymous'}`);
452
+ lines.push(` auth: ${uid === undefined || uid === null ? 'anonymous' : pageText(String(uid))}`);
414
453
  // An RTDB message names no rule, so the block names the deciding one.
415
454
  if (ctx?.engine === 'rtdb' && typeof ctx.matchedRule === 'string') {
416
- const node = typeof ctx.matchedPath === 'string' ? `${ctx.matchedPath} ` : '';
417
- lines.push(` rule: ${node}${ctx.matchedRule}`);
455
+ const node = typeof ctx.matchedPath === 'string' ? `${pageText(ctx.matchedPath)} ` : '';
456
+ lines.push(` rule: ${node}${pageText(ctx.matchedRule)}`);
418
457
  }
419
458
  const remediation = typeof payload.remediation === 'string' ? payload.remediation : ctx?.remediation;
420
- if (remediation) lines.push(` ${remediation}`);
459
+ if (remediation) lines.push(...pageLines(String(remediation)));
421
460
  lines.push(...ownerLines(payload.owners));
422
461
  return lines.join('\n');
423
462
  }
@@ -437,7 +476,7 @@ function isRelayedFrame(value: unknown): value is RelayedFrame {
437
476
  /** A frame's file as a reader looks for it: a served URL loses its origin and query. */
438
477
  function frameLocation(frame: RelayedFrame): string {
439
478
  const path = frame.file.replace(/^[a-z][a-z0-9+.-]*:\/\/[^/]*/i, '').replace(/[?#].*$/, '');
440
- return `${path}:${frame.line}`;
479
+ return pageText(`${path}:${frame.line}`);
441
480
  }
442
481
 
443
482
  /**
@@ -450,7 +489,7 @@ function ownerLines(owners: unknown): string[] {
450
489
  if (!Array.isArray(owners)) return [];
451
490
  const frame = owners.find((owner) => (owner as { kind?: unknown })?.kind === 'frame');
452
491
  if (!isRelayedFrame(frame)) return [];
453
- const name = typeof frame.function === 'string' && frame.function.length > 0 ? `${frame.function} ` : '';
492
+ const name = typeof frame.function === 'string' && frame.function.length > 0 ? `${pageText(frame.function)} ` : '';
454
493
  const lines = [` owner: ${name}${frameLocation(frame)}`];
455
494
  const stack = (frame as { stack?: unknown }).stack;
456
495
  const chain = Array.isArray(stack) ? stack.filter(isRelayedFrame) : [];
@@ -492,8 +531,10 @@ export function noteAiDiagnostic(
492
531
  * (target, reason) per window is the right volume for every one of them. A
493
532
  * rules denial's target also names its RTDB instance, so the same path
494
533
  * denied on two instances prints once for each.
495
- * Always 204s (best-effort diagnostics: a malformed body or a caller with no
496
- * logger wired must never fail the page that reported the refusal). */
534
+ * Answers 204 (best-effort diagnostics: a malformed body or a caller with no
535
+ * logger wired must never fail the page that reported the refusal), except
536
+ * 413 for a body over {@link DENIAL_BODY_LIMIT_BYTES}. The namespace runs
537
+ * the loopback guard first, so only this server's own pages reach here. */
497
538
  async function handleDenials(
498
539
  throttle: DenialThrottle,
499
540
  logger: ServeLogger | undefined,
@@ -505,7 +546,7 @@ async function handleDenials(
505
546
  return;
506
547
  }
507
548
  try {
508
- const payload = (await collectBody(req)) as DenialRelayPayload & AiDiagnosticPayload;
549
+ const payload = (await collectBody(req, DENIAL_BODY_LIMIT_BYTES)) as DenialRelayPayload & AiDiagnosticPayload;
509
550
  const isAiDiagnostic = aiTerminalBlockFor(payload.kind) !== null;
510
551
  if (isAiDiagnostic) {
511
552
  noteAiDiagnostic(throttle, logger, payload);
@@ -519,26 +560,38 @@ async function handleDenials(
519
560
  logger.note(formatDenialBlock(payload));
520
561
  }
521
562
  }
522
- } catch {
563
+ } catch (error) {
564
+ const tooLarge = (error as { code?: unknown } | null)?.code === BODY_TOO_LARGE_CODE;
565
+ if (tooLarge) {
566
+ res.writeHead(413, closingHeaders({ 'content-type': 'text/plain' })).end('Payload Too Large');
567
+ return;
568
+ }
523
569
  /* malformed body: drop it; this is a diagnostics side channel */
524
570
  }
525
571
  res.writeHead(204).end();
526
572
  }
527
573
 
528
- function guardLoopback(
529
- req: IncomingMessage,
530
- res: ServerResponse,
531
- boundHost: string,
532
- allowedHosts?: string[],
533
- ): boolean {
574
+ /**
575
+ * A /__pyric request comes from a page of this app, so the Origin names one of
576
+ * its ports: this server's own, or under `pyric sandbox` the port of a dev
577
+ * server that proxies to it (see app-ports.ts).
578
+ */
579
+ function isAppOrigin(req: IncomingMessage, originHeader: string, opts: GuardOptions): boolean {
580
+ const boundHost = opts.boundHost ?? 'localhost';
581
+ const ports = opts.appPorts?.forRequest(req) ?? [req.socket.localPort];
582
+ return ports.some((port) => isAllowedOrigin(originHeader, boundHost, opts.allowedHosts, port));
583
+ }
584
+
585
+ type GuardOptions = Pick<NamespaceOptions, 'boundHost' | 'allowedHosts' | 'appPorts'>;
586
+
587
+ function guardLoopback(req: IncomingMessage, res: ServerResponse, opts: GuardOptions): boolean {
534
588
  const hostHeader = getHeader(req, 'host');
535
589
  const originHeader = getHeader(req, 'origin');
536
- if (!isAllowedHost(hostHeader, boundHost, allowedHosts)) {
590
+ if (!isAllowedHost(hostHeader, opts.boundHost ?? 'localhost', opts.allowedHosts)) {
537
591
  res.writeHead(403, { 'content-type': 'text/plain' }).end('Forbidden: host not allowed');
538
592
  return false;
539
593
  }
540
- // A /__pyric request comes from a page on this same server, so the Origin names this port.
541
- if (originHeader && !isAllowedOrigin(originHeader, boundHost, allowedHosts, req.socket.localPort)) {
594
+ if (originHeader && !isAppOrigin(req, originHeader, opts)) {
542
595
  res.writeHead(403, { 'content-type': 'text/plain' }).end('Forbidden: origin mismatch');
543
596
  return false;
544
597
  }
@@ -573,6 +626,7 @@ export function createPyricNamespace(opts: NamespaceOptions) {
573
626
  ? createSiteTreeHandler(siteUiDir, opts.workerVersion, hostedStudioProject(opts))
574
627
  : null;
575
628
  const denialThrottle = createDenialThrottle();
629
+ const geminiProxy = createGeminiProxy(opts.aiGemini, denialThrottle, opts.logger);
576
630
  // Issued once per server boot. The outer static/Vite host guard protects
577
631
  // init.json before this capability is disclosed to the served runtime.
578
632
  const activity = opts.activity;
@@ -583,14 +637,14 @@ export function createPyricNamespace(opts: NamespaceOptions) {
583
637
  return (req: IncomingMessage, res: ServerResponse, url: URL): boolean | Promise<boolean> => {
584
638
  const isDiagnostics = url.pathname === DIAGNOSTICS_PATH;
585
639
  if (isDiagnostics) {
586
- const refused = !guardLoopback(req, res, opts.boundHost ?? 'localhost', opts.allowedHosts);
640
+ const refused = !guardLoopback(req, res, opts);
587
641
  if (refused) return true;
588
642
  return diagnostics(req, res).then(() => true);
589
643
  }
590
644
  const thresholds = opts.thresholds;
591
645
  const isThresholdRequest = thresholds !== undefined && url.pathname === '/__pyric/thresholds';
592
646
  if (isThresholdRequest) {
593
- const hostRefused = !guardLoopback(req, res, opts.boundHost ?? 'localhost', opts.allowedHosts);
647
+ const hostRefused = !guardLoopback(req, res, opts);
594
648
  if (hostRefused) return true;
595
649
  const sessionRefused = !isAllowedSessionToken(req, url, sessionToken);
596
650
  if (sessionRefused) {
@@ -602,7 +656,7 @@ export function createPyricNamespace(opts: NamespaceOptions) {
602
656
  const indexes = opts.indexes;
603
657
  const isIndexRequest = indexes !== undefined && url.pathname === '/__pyric/indexes';
604
658
  if (isIndexRequest) {
605
- const hostRefused = !guardLoopback(req, res, opts.boundHost ?? 'localhost', opts.allowedHosts);
659
+ const hostRefused = !guardLoopback(req, res, opts);
606
660
  if (hostRefused) return true;
607
661
  const sessionRefused = !isAllowedSessionToken(req, url, sessionToken);
608
662
  if (sessionRefused) {
@@ -616,7 +670,7 @@ export function createPyricNamespace(opts: NamespaceOptions) {
616
670
  if (hasStudioRoutes) {
617
671
  const isStudioRequest = url.pathname.startsWith('/__pyric/workspace') || url.pathname.startsWith('/__pyric/projects');
618
672
  if (isStudioRequest) {
619
- const hostRefused = !guardLoopback(req, res, opts.boundHost ?? 'localhost', opts.allowedHosts);
673
+ const hostRefused = !guardLoopback(req, res, opts);
620
674
  if (hostRefused) return true;
621
675
  return routes(req, res, url);
622
676
  }
@@ -624,7 +678,7 @@ export function createPyricNamespace(opts: NamespaceOptions) {
624
678
  const state = opts.state;
625
679
  const isObjectRequest = state !== undefined && url.pathname.startsWith(STATE_OBJECTS_PREFIX);
626
680
  if (isObjectRequest) {
627
- const hostRefused = !guardLoopback(req, res, opts.boundHost ?? 'localhost', opts.allowedHosts);
681
+ const hostRefused = !guardLoopback(req, res, opts);
628
682
  if (hostRefused) return true;
629
683
  const sessionRefused = !isAllowedSessionToken(req, url, sessionToken);
630
684
  if (sessionRefused) {
@@ -636,7 +690,7 @@ export function createPyricNamespace(opts: NamespaceOptions) {
636
690
  }
637
691
  const isStateRequest = state !== undefined && url.pathname === '/__pyric/state';
638
692
  if (isStateRequest) {
639
- const hostRefused = !guardLoopback(req, res, opts.boundHost ?? 'localhost', opts.allowedHosts);
693
+ const hostRefused = !guardLoopback(req, res, opts);
640
694
  if (hostRefused) return true;
641
695
  const sessionRefused = !isAllowedSessionToken(req, url, sessionToken);
642
696
  if (sessionRefused) {
@@ -656,7 +710,7 @@ export function createPyricNamespace(opts: NamespaceOptions) {
656
710
  const rateCaptures = opts.rateCaptures;
657
711
  const isRateCaptureRequest = rateCaptures !== undefined && url.pathname === '/__pyric/rate-captures';
658
712
  if (isRateCaptureRequest) {
659
- const hostRefused = !guardLoopback(req, res, opts.boundHost ?? 'localhost', opts.allowedHosts);
713
+ const hostRefused = !guardLoopback(req, res, opts);
660
714
  if (hostRefused) return true;
661
715
  const sessionRefused = !isAllowedSessionToken(req, url, sessionToken);
662
716
  if (sessionRefused) {
@@ -667,7 +721,7 @@ export function createPyricNamespace(opts: NamespaceOptions) {
667
721
  const capture = opts.capture;
668
722
  const isCaptureRequest = capture !== undefined && url.pathname === '/__pyric/capture';
669
723
  if (isCaptureRequest) {
670
- const hostRefused = !guardLoopback(req, res, opts.boundHost ?? 'localhost', opts.allowedHosts);
724
+ const hostRefused = !guardLoopback(req, res, opts);
671
725
  if (hostRefused) return true;
672
726
  const sessionRefused = !isAllowedSessionToken(req, url, sessionToken);
673
727
  if (sessionRefused) {
@@ -683,13 +737,23 @@ export function createPyricNamespace(opts: NamespaceOptions) {
683
737
  const events = opts.events;
684
738
  const isEventsRequest = events !== undefined && url.pathname === '/__pyric/events';
685
739
  if (isEventsRequest) {
686
- const hostRefused = !guardLoopback(req, res, opts.boundHost ?? 'localhost', opts.allowedHosts);
740
+ const hostRefused = !guardLoopback(req, res, opts);
687
741
  if (hostRefused) return true;
688
742
  events.handle(req, res);
689
743
  return true;
690
744
  }
745
+ const isGeminiProxyRequest = isGeminiProxyPath(url.pathname);
746
+ if (isGeminiProxyRequest) {
747
+ // It spends the server's key, so only this app's pages may call it.
748
+ const hostRefused = !guardLoopback(req, res, opts);
749
+ if (hostRefused) return true;
750
+ return geminiProxy(req, res, url).then(() => true);
751
+ }
691
752
  const isAiProxyRequest = url.pathname === AI_PROXY_ROUTE || url.pathname.startsWith(`${AI_PROXY_ROUTE}/`);
692
753
  if (isAiProxyRequest) {
754
+ // The upstream may carry the developer's key, so only this server's pages may spend it.
755
+ const hostRefused = !guardLoopback(req, res, opts);
756
+ if (hostRefused) return true;
693
757
  return handleAiProxy(opts.aiProxyUpstream, denialThrottle, req, res, url, opts.logger).then(
694
758
  () => true,
695
759
  );
@@ -700,6 +764,9 @@ export function createPyricNamespace(opts: NamespaceOptions) {
700
764
  }
701
765
  const isDenialRequest = url.pathname === '/__pyric/denials';
702
766
  if (isDenialRequest) {
767
+ // A page on another origin must not be able to write to the developer's terminal.
768
+ const hostRefused = !guardLoopback(req, res, opts);
769
+ if (hostRefused) return true;
703
770
  return handleDenials(denialThrottle, opts.logger, req, res).then(() => true);
704
771
  }
705
772
  const isInitRequest = url.pathname === '/__pyric/init.json';
@@ -11,7 +11,8 @@
11
11
  * replayed values back before comparing. A recorded id bound to two replayed
12
12
  * ids is a divergence.
13
13
  * - Times compare equal to times: epoch milliseconds, `{ seconds, nanoseconds }`
14
- * timestamps, ISO and HTTP dates, and the `iat`, `exp` and `auth_time` claims.
14
+ * timestamps, ISO and HTTP dates, and the `iat`, `exp` and `auth_time` claims,
15
+ * also inside a sandbox ID token string, which carries its claims as JSON.
15
16
  *
16
17
  * Everything else must be equal.
17
18
  */
@@ -21,6 +22,8 @@ const TOKEN_SPLIT = /([^A-Za-z0-9_-]+)/;
21
22
  const ISO_DATE = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?Z$/;
22
23
  const HTTP_DATE = /^[A-Z][a-z]{2}, \d{2} [A-Z][a-z]{2} \d{4} \d{2}:\d{2}:\d{2} GMT$/;
23
24
  const TIME_CLAIMS = new Set(['iat', 'exp', 'auth_time']);
25
+ /** A sandbox ID token: `sandbox-id-token-<uid>-<serial>:` and its claims as JSON. */
26
+ const SANDBOX_ID_TOKEN = /^(sandbox-id-token-[^:]*):(\{.*\})$/s;
24
27
  export const TIME = '<time>';
25
28
 
26
29
  function isPlainObject(value: unknown): value is Record<string, unknown> {
@@ -45,6 +48,11 @@ export function normalize(value: unknown): unknown {
45
48
  if (typeof value === 'string') {
46
49
  const isTime = ISO_DATE.test(value) || HTTP_DATE.test(value) || (/^\d{13}$/.test(value));
47
50
  if (isTime) return TIME;
51
+ const sandboxIdToken = SANDBOX_ID_TOKEN.exec(value);
52
+ if (sandboxIdToken !== null) {
53
+ const claims = normalize(sandboxIdToken[2]);
54
+ return { sandboxIdToken: sandboxIdToken[1], claims };
55
+ }
48
56
  const mayBeJson = value.startsWith('{') || value.startsWith('[');
49
57
  if (mayBeJson) {
50
58
  try {
@@ -3,6 +3,7 @@ import { basename, join } from 'node:path';
3
3
  import {
4
4
  SimulateFirestoreRulesHandler,
5
5
  TestCaseSchema,
6
+ caseShapeRefusal,
6
7
  type TestCase,
7
8
  } from 'pyric/rules/internal';
8
9
  import {
@@ -74,7 +75,18 @@ function discoverProjectFixtureFiles(projectDir: string): DiscoveredFixtureFile[
74
75
  return found;
75
76
  }
76
77
 
77
- function extractFirestoreTestCases(raw: unknown): TestCase[] | null {
78
+ /**
79
+ * What a fixture file holds: no Firestore cases, Firestore cases, or cases
80
+ * one of which the case check refuses. A refused fixture is reported, not
81
+ * skipped silently, so a case written with a misspelled field or a create
82
+ * that names a resource is not quietly left out of the check.
83
+ */
84
+ type ExtractedCases =
85
+ | { kind: 'none' }
86
+ | { kind: 'refused'; reason: string }
87
+ | { kind: 'cases'; cases: TestCase[] };
88
+
89
+ function extractFirestoreTestCases(raw: unknown): ExtractedCases {
78
90
  let candidateList: unknown[] | null = null;
79
91
  if (Array.isArray(raw)) {
80
92
  candidateList = raw;
@@ -88,15 +100,21 @@ function extractFirestoreTestCases(raw: unknown): TestCase[] | null {
88
100
  candidateList = [record];
89
101
  }
90
102
  }
91
- if (!candidateList || candidateList.length === 0) return null;
103
+ if (!candidateList || candidateList.length === 0) return { kind: 'none' };
104
+ // A list with no `method` anywhere is some other service's cases, such as
105
+ // Realtime Database cases, which name an `operation`.
106
+ const isFirestoreCaseList = candidateList.some(
107
+ (item) => typeof item === 'object' && item !== null && 'method' in item,
108
+ );
109
+ if (!isFirestoreCaseList) return { kind: 'none' };
92
110
 
93
111
  const parsedCases: TestCase[] = [];
94
- for (const item of candidateList) {
95
- const parsed = TestCaseSchema.safeParse(item);
96
- if (!parsed.success) return null;
97
- parsedCases.push(parsed.data);
112
+ for (const [i, item] of candidateList.entries()) {
113
+ const refusal = caseShapeRefusal(item);
114
+ if (refusal) return { kind: 'refused', reason: `case ${i}: ${refusal}` };
115
+ parsedCases.push(TestCaseSchema.parse(item));
98
116
  }
99
- return parsedCases;
117
+ return { kind: 'cases', cases: parsedCases };
100
118
  }
101
119
 
102
120
  function formatDivergenceReason(div: VerifyDivergence): string {
@@ -127,6 +145,7 @@ export async function runProjectFixturesOnRulesReload(
127
145
  let failed = 0;
128
146
  let checks = 0;
129
147
  const failureLines: string[] = [];
148
+ const warningLines: string[] = [];
130
149
 
131
150
  for (const file of files) {
132
151
  let raw: unknown;
@@ -189,8 +208,13 @@ export async function runProjectFixturesOnRulesReload(
189
208
  }
190
209
 
191
210
  if (input.service === 'firestore' && input.firestoreRules) {
192
- const testCases = extractFirestoreTestCases(raw);
193
- if (!testCases) continue;
211
+ const extracted = extractFirestoreTestCases(raw);
212
+ if (extracted.kind === 'refused') {
213
+ warningLines.push(` ⚠ [pyric] fixtures: [${file.name}] not checked, ${extracted.reason}`);
214
+ continue;
215
+ }
216
+ if (extracted.kind === 'none') continue;
217
+ const testCases = extracted.cases;
194
218
 
195
219
  const sim = new SimulateFirestoreRulesHandler().simulate(input.firestoreRules, testCases);
196
220
  if (!sim.success) continue;
@@ -234,6 +258,7 @@ export async function runProjectFixturesOnRulesReload(
234
258
  lines.push(...failureLines);
235
259
  }
236
260
  }
261
+ lines.push(...warningLines);
237
262
 
238
263
  return { ran, passed, failed, checks, ok, lines };
239
264
  }
@@ -12,7 +12,7 @@
12
12
  import { createHash } from 'node:crypto';
13
13
  import { readFileSync, watch, type FSWatcher } from 'node:fs';
14
14
  import { readFile } from 'node:fs/promises';
15
- import { dirname, isAbsolute, join } from 'node:path';
15
+ import { dirname, isAbsolute, join, relative } from 'node:path';
16
16
  import {
17
17
  describeCompileLimitViolations,
18
18
  lintFirestoreRules,
@@ -21,8 +21,17 @@ import {
21
21
  sourceCompileLimitViolations,
22
22
  type ResolveResult,
23
23
  } from 'pyric/rules/internal';
24
- import { asSentence, databaseRulesConfig, type DatabaseRulesConfig } from 'pyric/sandbox/internal';
24
+ import {
25
+ asSentence,
26
+ databaseRulesConfig,
27
+ defaultFirestoreDatabase,
28
+ firestoreRulesConfig,
29
+ unservedFirestoreDatabaseWarnings,
30
+ type DatabaseRulesConfig,
31
+ type FirestoreRulesConfig,
32
+ } from 'pyric/sandbox/internal';
25
33
  import { parseStorageRules } from 'pyric/storage';
34
+ import { compileStorageRules } from 'pyric/storage/internal';
26
35
  import { readFirebaseRcSync, type FirebaseJson, type FirebaseRc } from '../cli/firebase-json.js';
27
36
  import {
28
37
  describeFirebaseProject,
@@ -44,6 +53,8 @@ export interface LoadedRules {
44
53
  /** Rules files of the project's own that the source imports, directly or
45
54
  * through other modules. Watched alongside `sourcePath`. */
46
55
  moduleFiles: string[];
56
+ /** One line per `firebase.json` Firestore entry pyric does not serve yet. */
57
+ warnings: string[];
47
58
  }
48
59
 
49
60
  export interface LoadedStorageRules {
@@ -139,9 +150,16 @@ export function prepareProjectRules(raw: string, sourcePath: string): PreparedRu
139
150
  source = resolved.data.resolved;
140
151
  }
141
152
  // Production rejects a ruleset that does not parse, or is past its compile
142
- // limits, before it evaluates any request, so the sandbox does not serve
143
- // one either: the check every rules load path runs.
153
+ // limits, or names a service other than cloud.firestore, before it
154
+ // evaluates any request, so the sandbox does not serve one either: the
155
+ // check every rules load path runs, with the reason every plane gives.
144
156
  const rejection = rulesSourceRejection(source);
157
+ if (rejection?.kind === 'parse' && rejection.otherService !== undefined) {
158
+ throw new RulesPrepareError(
159
+ `pyric sandbox: ${sourcePath}: Firestore ${rejection.message} Fix the rules before serving.`,
160
+ moduleFiles,
161
+ );
162
+ }
145
163
  if (rejection?.kind === 'parse') {
146
164
  throw new RulesPrepareError(
147
165
  `pyric sandbox: ${sourcePath} failed to parse (line ${rejection.line}, col ${rejection.column}). Fix the rules before serving.`,
@@ -167,47 +185,107 @@ export function prepareProjectRules(raw: string, sourcePath: string): PreparedRu
167
185
  }
168
186
 
169
187
  /**
170
- * The Firestore rules file the project deploys: `firebase.json`'s
171
- * `firestore.rules`, else `firestore.rules` in `cwd`. The file may not exist.
188
+ * Where a project's Firestore deploy targets resolve from: the project id
189
+ * and `.firebaserc`. Without a project id, target entries stay unresolved.
172
190
  */
173
- export function firestoreRulesPath(cwd: string, config: FirebaseJson | null): string {
174
- const rel = config?.firestore?.rules ?? 'firestore.rules';
175
- return isAbsolute(rel) ? rel : join(cwd, rel);
191
+ export interface FirestoreRulesProject {
192
+ projectId?: string;
193
+ /** Reads `.firebaserc`. Defaults to reading it from the project directory. */
194
+ readRc?: () => FirebaseRc | null;
176
195
  }
177
196
 
178
197
  /**
179
- * Load the project rules per `firebase.json` (`firestore.rules` path,
180
- * defaulting to `firestore.rules` in cwd when the key is absent but the file
181
- * exists). Missing file with no explicit config → `{ rules: null }` (serving
182
- * without rules is fine; the runtime logs it). Missing file that IS
183
- * explicitly configured → throw (the project says it should exist).
198
+ * The Firestore databases `firebase.json` deploys to, resolved by
199
+ * {@link firestoreRulesConfig} as `firebase deploy` resolves them, with files
200
+ * as absolute paths.
201
+ */
202
+ export function firestoreDatabases(
203
+ cwd: string,
204
+ config: FirebaseJson | null,
205
+ project: FirestoreRulesProject = {},
206
+ ): FirestoreRulesConfig {
207
+ const { projectId } = project;
208
+ const readRc = project.readRc ?? (() => readFirebaseRcSync(cwd));
209
+ try {
210
+ return firestoreRulesConfig(config?.firestore, {
211
+ targetDatabases: (target) => projectId === undefined ? [] : readRc()?.targets?.[projectId]?.firestore?.[target] ?? [],
212
+ resolveFile: (file) => isAbsolute(file) ? file : join(cwd, file),
213
+ });
214
+ } catch (error) {
215
+ throw new Error(`pyric sandbox: ${error instanceof Error ? error.message : String(error)}`);
216
+ }
217
+ }
218
+
219
+ /**
220
+ * The rules file `firebase.json` deploys to the `(default)` Firestore
221
+ * database, else `firestore.rules` in `cwd` when `firebase.json` names none.
222
+ * Null when an array form deploys no rules to `(default)`. The file may not
223
+ * exist.
224
+ */
225
+ export function firestoreRulesPath(
226
+ cwd: string,
227
+ config: FirebaseJson | null,
228
+ project: FirestoreRulesProject = {},
229
+ ): string | null {
230
+ return defaultFirestoreDatabase(firestoreDatabases(cwd, config, project))?.rulesFile ?? null;
231
+ }
232
+
233
+ /**
234
+ * Load the `(default)` database's rules per `firebase.json`, resolved by
235
+ * {@link firestoreDatabases}. Missing file with no explicit config, or no
236
+ * rules for `(default)` → `{ rules: null }` (serving without rules is fine;
237
+ * the runtime logs it). Missing file that IS explicitly configured → throw
238
+ * (the project says it should exist). `warnings` names each named database
239
+ * and unresolved target pyric does not serve yet.
184
240
  */
185
241
  export async function loadProjectRules(
186
242
  cwd: string,
187
243
  config: FirebaseJson | null,
244
+ project: FirestoreRulesProject = {},
188
245
  ): Promise<LoadedRules> {
189
- const configured = config?.firestore?.rules;
190
- const path = firestoreRulesPath(cwd, config);
246
+ const databases = firestoreDatabases(cwd, config, project);
247
+ const warnings = firestoreDatabaseWarnings(cwd, databases);
248
+ const entry = defaultFirestoreDatabase(databases);
249
+ const path = entry?.rulesFile;
250
+ const none: LoadedRules = { rules: null, rulesHash: null, sourcePath: null, moduleFiles: [], warnings };
251
+ if (entry === undefined || path === undefined) return none;
191
252
  let raw: string;
192
253
  try {
193
254
  raw = await readFile(path, 'utf8');
194
255
  } catch (e) {
195
256
  if ((e as NodeJS.ErrnoException).code === 'ENOENT') {
196
- if (configured) {
197
- throw new Error(`pyric sandbox: firebase.json points firestore.rules at ${path}, but it does not exist.`);
257
+ if (entry.configured) {
258
+ throw new Error(`pyric sandbox: ${entry.label} points Firestore rules at ${path}, but it does not exist.`);
198
259
  }
199
- return { rules: null, rulesHash: null, sourcePath: null, moduleFiles: [] };
260
+ return none;
200
261
  }
201
262
  throw e;
202
263
  }
203
264
  const { rules, moduleFiles } = prepareProjectRules(raw, path);
204
- return { rules, rulesHash: rulesHashOf(rules), sourcePath: path, moduleFiles };
265
+ return { rules, rulesHash: rulesHashOf(rules), sourcePath: path, moduleFiles, warnings };
205
266
  }
206
267
 
268
+ /** One warning per Firestore database `firebase.json` declares that pyric does not serve yet, files named relative to `cwd`. */
269
+ export function firestoreDatabaseWarnings(cwd: string, databases: FirestoreRulesConfig): string[] {
270
+ return unservedFirestoreDatabaseWarnings(databases, (file) => relativeToProject(cwd, file));
271
+ }
272
+
273
+ function relativeToProject(cwd: string, file: string): string {
274
+ const rel = relative(cwd, file);
275
+ const isInsideProject = rel !== '' && !rel.startsWith('..') && !isAbsolute(rel);
276
+ return isInsideProject ? rel : file;
277
+ }
278
+
279
+ /** `compileStorageRules` opens some of its reasons with this; the message here says it already. */
280
+ const STORAGE_COMPILE_PREFIX = /^Storage rules do not compile: /;
281
+
207
282
  /**
208
283
  * Resolve and validate a raw Storage rules source. Modular sources are
209
284
  * authored in storage.modules.rules and resolved in memory before the
210
285
  * sandbox sees them; firebase.json can continue to point at storage.rules.
286
+ * The source is checked by the sandbox's own install gate,
287
+ * `compileStorageRules`, so every source this accepts installs on every
288
+ * plane, and a reload this refuses is reported as refused.
211
289
  */
212
290
  export function prepareStorageRulesSource(raw: string, sourcePath: string): string {
213
291
  let source = raw;
@@ -233,6 +311,12 @@ export function prepareStorageRulesSource(raw: string, sourcePath: string): stri
233
311
  `${asSentence(`pyric sandbox: ${sourcePath} failed to parse: ${e instanceof Error ? e.message : String(e)}`)} Fix the rules before serving.`,
234
312
  );
235
313
  }
314
+ try {
315
+ compileStorageRules(source);
316
+ } catch (e) {
317
+ const reason = (e instanceof Error ? e.message : String(e)).replace(STORAGE_COMPILE_PREFIX, '');
318
+ throw new Error(`${asSentence(`pyric sandbox: ${sourcePath} does not compile: ${reason}`)} Fix the rules before serving.`);
319
+ }
236
320
  return source;
237
321
  }
238
322