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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (384) hide show
  1. package/README.md +13 -9
  2. package/dist/assurance/.generated/conformance-verdicts.d.ts +80 -72
  3. package/dist/assurance/.generated/conformance-verdicts.d.ts.map +1 -1
  4. package/dist/assurance/.generated/conformance-verdicts.js +80 -72
  5. package/dist/assurance/.generated/conformance-verdicts.js.map +1 -1
  6. package/dist/bridge/client/dispatch.js +1 -1
  7. package/dist/bridge/client/dispatch.js.map +1 -1
  8. package/dist/cli/database-rules.d.ts.map +1 -1
  9. package/dist/cli/database-rules.js +6 -4
  10. package/dist/cli/database-rules.js.map +1 -1
  11. package/dist/cli/dev-runner.d.ts +9 -0
  12. package/dist/cli/dev-runner.d.ts.map +1 -1
  13. package/dist/cli/dev-runner.js +18 -0
  14. package/dist/cli/dev-runner.js.map +1 -1
  15. package/dist/cli/serve.d.ts.map +1 -1
  16. package/dist/cli/serve.js +61 -6
  17. package/dist/cli/serve.js.map +1 -1
  18. package/dist/cli/verify.js +2 -2
  19. package/dist/cli/verify.js.map +1 -1
  20. package/dist/conformance/.generated/can-i-use-browser.d.ts.map +1 -1
  21. package/dist/conformance/.generated/can-i-use-browser.js +1 -1
  22. package/dist/conformance/.generated/can-i-use-browser.js.map +1 -1
  23. package/dist/conformance/.generated/can-i-use.d.ts.map +1 -1
  24. package/dist/conformance/.generated/can-i-use.js +1 -1
  25. package/dist/conformance/.generated/can-i-use.js.map +1 -1
  26. package/dist/conformance/.generated/conformance-docs.d.ts.map +1 -1
  27. package/dist/conformance/.generated/conformance-docs.js +1 -1
  28. package/dist/conformance/.generated/conformance-docs.js.map +1 -1
  29. package/dist/next/client-aliases.d.ts +11 -0
  30. package/dist/next/client-aliases.d.ts.map +1 -0
  31. package/dist/next/client-aliases.js +38 -0
  32. package/dist/next/client-aliases.js.map +1 -0
  33. package/dist/next/dev-rewrites.d.ts +9 -0
  34. package/dist/next/dev-rewrites.d.ts.map +1 -0
  35. package/dist/next/dev-rewrites.js +53 -0
  36. package/dist/next/dev-rewrites.js.map +1 -0
  37. package/dist/next/guard.d.ts +15 -0
  38. package/dist/next/guard.d.ts.map +1 -0
  39. package/dist/next/guard.js +52 -0
  40. package/dist/next/guard.js.map +1 -0
  41. package/dist/next/index.d.ts +12 -0
  42. package/dist/next/index.d.ts.map +1 -0
  43. package/dist/next/index.js +11 -0
  44. package/dist/next/index.js.map +1 -0
  45. package/dist/next/runtime-env.d.ts +7 -0
  46. package/dist/next/runtime-env.d.ts.map +1 -0
  47. package/dist/next/runtime-env.js +13 -0
  48. package/dist/next/runtime-env.js.map +1 -0
  49. package/dist/next/server-external-packages.d.ts +10 -0
  50. package/dist/next/server-external-packages.d.ts.map +1 -0
  51. package/dist/next/server-external-packages.js +34 -0
  52. package/dist/next/server-external-packages.js.map +1 -0
  53. package/dist/next/target-url.d.ts +11 -0
  54. package/dist/next/target-url.d.ts.map +1 -0
  55. package/dist/next/target-url.js +36 -0
  56. package/dist/next/target-url.js.map +1 -0
  57. package/dist/next/turbopack-config.d.ts +9 -0
  58. package/dist/next/turbopack-config.d.ts.map +1 -0
  59. package/dist/next/turbopack-config.js +39 -0
  60. package/dist/next/turbopack-config.js.map +1 -0
  61. package/dist/next/types.d.ts +40 -0
  62. package/dist/next/types.d.ts.map +1 -0
  63. package/dist/next/types.js +5 -0
  64. package/dist/next/types.js.map +1 -0
  65. package/dist/next/webpack-config.d.ts +11 -0
  66. package/dist/next/webpack-config.d.ts.map +1 -0
  67. package/dist/next/webpack-config.js +51 -0
  68. package/dist/next/webpack-config.js.map +1 -0
  69. package/dist/next/with-pyric.d.ts +22 -0
  70. package/dist/next/with-pyric.d.ts.map +1 -0
  71. package/dist/next/with-pyric.js +49 -0
  72. package/dist/next/with-pyric.js.map +1 -0
  73. package/dist/register/app-bridge.d.ts +9 -0
  74. package/dist/register/app-bridge.d.ts.map +1 -0
  75. package/dist/register/app-bridge.js +56 -0
  76. package/dist/register/app-bridge.js.map +1 -0
  77. package/dist/register/hooks.d.ts.map +1 -1
  78. package/dist/register/hooks.js +6 -1
  79. package/dist/register/hooks.js.map +1 -1
  80. package/dist/register/index.js +1 -1
  81. package/dist/register/index.js.map +1 -1
  82. package/dist/register/mapping.d.ts +3 -1
  83. package/dist/register/mapping.d.ts.map +1 -1
  84. package/dist/register/mapping.js +41 -5
  85. package/dist/register/mapping.js.map +1 -1
  86. package/dist/rtdb/rules-json.d.ts +12 -0
  87. package/dist/rtdb/rules-json.d.ts.map +1 -1
  88. package/dist/rtdb/rules-json.js +98 -0
  89. package/dist/rtdb/rules-json.js.map +1 -1
  90. package/dist/serve/bundler.d.ts.map +1 -1
  91. package/dist/serve/bundler.js +2 -0
  92. package/dist/serve/bundler.js.map +1 -1
  93. package/dist/serve/discovery.d.ts +4 -4
  94. package/dist/serve/discovery.d.ts.map +1 -1
  95. package/dist/serve/discovery.js +59 -38
  96. package/dist/serve/discovery.js.map +1 -1
  97. package/dist/serve/entries/app-ai-passthrough.d.ts +8 -0
  98. package/dist/serve/entries/app-ai-passthrough.d.ts.map +1 -0
  99. package/dist/serve/entries/app-ai-passthrough.js +59 -0
  100. package/dist/serve/entries/app-ai-passthrough.js.map +1 -0
  101. package/dist/serve/entries/auth-helper-core.d.ts +9 -0
  102. package/dist/serve/entries/auth-helper-core.d.ts.map +1 -1
  103. package/dist/serve/entries/auth-helper-core.js +37 -8
  104. package/dist/serve/entries/auth-helper-core.js.map +1 -1
  105. package/dist/serve/entries/auth.d.ts +1 -0
  106. package/dist/serve/entries/auth.d.ts.map +1 -1
  107. package/dist/serve/entries/auth.js +7 -4
  108. package/dist/serve/entries/auth.js.map +1 -1
  109. package/dist/serve/entries/bridge-url.d.ts.map +1 -1
  110. package/dist/serve/entries/bridge-url.js +7 -2
  111. package/dist/serve/entries/bridge-url.js.map +1 -1
  112. package/dist/serve/entries/database.d.ts +1 -0
  113. package/dist/serve/entries/database.d.ts.map +1 -1
  114. package/dist/serve/entries/database.js +1 -0
  115. package/dist/serve/entries/database.js.map +1 -1
  116. package/dist/serve/entries/firestore.d.ts +1 -0
  117. package/dist/serve/entries/firestore.d.ts.map +1 -1
  118. package/dist/serve/entries/firestore.js +1 -0
  119. package/dist/serve/entries/firestore.js.map +1 -1
  120. package/dist/serve/entries/init.d.ts.map +1 -1
  121. package/dist/serve/entries/init.js +4 -2
  122. package/dist/serve/entries/init.js.map +1 -1
  123. package/dist/serve/entries/runtime.js +23 -0
  124. package/dist/serve/entries/runtime.js.map +1 -1
  125. package/dist/serve/entries/storage.d.ts +2 -0
  126. package/dist/serve/entries/storage.d.ts.map +1 -1
  127. package/dist/serve/entries/storage.js +9 -2
  128. package/dist/serve/entries/storage.js.map +1 -1
  129. package/dist/serve/html-injection.d.ts +3 -1
  130. package/dist/serve/html-injection.d.ts.map +1 -1
  131. package/dist/serve/html-injection.js +27 -1
  132. package/dist/serve/html-injection.js.map +1 -1
  133. package/dist/serve/rules.js +2 -2
  134. package/dist/serve/rules.js.map +1 -1
  135. package/dist/serve/runtime/chip-config.d.ts +1 -1
  136. package/dist/serve/runtime/chip-config.d.ts.map +1 -1
  137. package/dist/serve/runtime/chip-config.js +16 -8
  138. package/dist/serve/runtime/chip-config.js.map +1 -1
  139. package/dist/serve/sandbox-session.d.ts +1 -0
  140. package/dist/serve/sandbox-session.d.ts.map +1 -1
  141. package/dist/serve/sandbox-session.js +30 -2
  142. package/dist/serve/sandbox-session.js.map +1 -1
  143. package/dist/serve/site-ui/_astro/_studio_.B6b_G1ev.css +1 -0
  144. package/dist/serve/site-ui/_astro/app.bnmVTkIY.js +11 -0
  145. package/dist/serve/site-ui/_astro/app.t6u-adB_.js +1 -0
  146. package/dist/serve/site-ui/_astro/{chess-showcase.DzPO6kz0.js → chess-showcase.kC8dXLKY.js} +1 -1
  147. package/dist/serve/site-ui/_astro/{example-runtime.CM0H02rx.js → example-runtime.D79PnoSk.js} +1 -1
  148. package/dist/serve/site-ui/_astro/index.DzVde04M.js +1 -0
  149. package/dist/serve/site-ui/_astro/reads.BYBRLbsE.js +1 -0
  150. package/dist/serve/site-ui/_astro/sandbox-controls.C9Aaazt8.js +1252 -0
  151. package/dist/serve/site-ui/_astro/{seed.BCn5DhHS.js → seed.DANAIyRw.js} +1 -1
  152. package/dist/serve/site-ui/auth/index.html +2 -2
  153. package/dist/serve/site-ui/docs/_rhythm/index.html +1 -1
  154. package/dist/serve/site-ui/docs/agent/set-up-your-agent/index.html +1 -1
  155. package/dist/serve/site-ui/docs/agent/watch-and-review/index.html +1 -1
  156. package/dist/serve/site-ui/docs/agent/work-with-an-agent/index.html +1 -1
  157. package/dist/serve/site-ui/docs/ai-compat/index.html +85 -85
  158. package/dist/serve/site-ui/docs/ai-compat.md +84 -84
  159. package/dist/serve/site-ui/docs/api-reference/index.html +3 -1
  160. package/dist/serve/site-ui/docs/api-reference.md +2 -0
  161. package/dist/serve/site-ui/docs/app-compat/index.html +28 -28
  162. package/dist/serve/site-ui/docs/app-compat.md +27 -27
  163. package/dist/serve/site-ui/docs/auth-compat/index.html +122 -122
  164. package/dist/serve/site-ui/docs/auth-compat.md +121 -121
  165. package/dist/serve/site-ui/docs/build/ai-logic/index.html +1 -1
  166. package/dist/serve/site-ui/docs/build/authentication/index.html +1 -1
  167. package/dist/serve/site-ui/docs/build/cloud-firestore/index.html +1 -1
  168. package/dist/serve/site-ui/docs/build/cloud-messaging/index.html +1 -1
  169. package/dist/serve/site-ui/docs/build/cloud-storage/index.html +1 -1
  170. package/dist/serve/site-ui/docs/build/realtime-database/index.html +1 -1
  171. package/dist/serve/site-ui/docs/conformance-scores/index.html +4 -4
  172. package/dist/serve/site-ui/docs/conformance-scores.md +3 -3
  173. package/dist/serve/site-ui/docs/create-pyric-reference-api/index.html +6 -6
  174. package/dist/serve/site-ui/docs/create-pyric-reference-api.md +5 -5
  175. package/dist/serve/site-ui/docs/database-compat/index.html +200 -448
  176. package/dist/serve/site-ui/docs/database-compat.md +198 -461
  177. package/dist/serve/site-ui/docs/examples/chess/index.html +2 -2
  178. package/dist/serve/site-ui/docs/examples/index.html +1 -1
  179. package/dist/serve/site-ui/docs/firestore-compat/index.html +186 -195
  180. package/dist/serve/site-ui/docs/firestore-compat.md +184 -195
  181. package/dist/serve/site-ui/docs/functions-rtdb-compat/index.html +15 -15
  182. package/dist/serve/site-ui/docs/functions-rtdb-compat.md +14 -14
  183. package/dist/serve/site-ui/docs/get-started/how-the-swap-works/index.html +1 -1
  184. package/dist/serve/site-ui/docs/get-started/nextjs/index.html +57 -0
  185. package/dist/serve/site-ui/docs/get-started/nextjs.md +86 -0
  186. package/dist/serve/site-ui/docs/get-started/start-building/index.html +25 -8
  187. package/dist/serve/site-ui/docs/get-started/start-building.md +34 -5
  188. package/dist/serve/site-ui/docs/get-started/vite/index.html +26 -0
  189. package/dist/serve/site-ui/docs/get-started/vite.md +45 -0
  190. package/dist/serve/site-ui/docs/index.json +668 -103
  191. package/dist/serve/site-ui/docs/messaging-compat/index.html +56 -56
  192. package/dist/serve/site-ui/docs/messaging-compat.md +55 -55
  193. package/dist/serve/site-ui/docs/observe/resolve-runtime-status/index.html +1 -1
  194. package/dist/serve/site-ui/docs/observe/see-whats-happening/index.html +1 -1
  195. package/dist/serve/site-ui/docs/observe/shape-your-data/index.html +1 -1
  196. package/dist/serve/site-ui/docs/overview/index.html +1 -1
  197. package/dist/serve/site-ui/docs/pyric-admin-app-reference-api/index.html +39 -13
  198. package/dist/serve/site-ui/docs/pyric-admin-app-reference-api.md +28 -2
  199. package/dist/serve/site-ui/docs/pyric-admin-auth-reference-api/index.html +1 -1
  200. package/dist/serve/site-ui/docs/pyric-admin-database-reference-api/index.html +38 -6
  201. package/dist/serve/site-ui/docs/pyric-admin-database-reference-api.md +43 -0
  202. package/dist/serve/site-ui/docs/pyric-admin-firestore-reference-api/index.html +9 -1
  203. package/dist/serve/site-ui/docs/pyric-admin-firestore-reference-api.md +8 -0
  204. package/dist/serve/site-ui/docs/pyric-admin-messaging-reference-api/index.html +1 -1
  205. package/dist/serve/site-ui/docs/pyric-admin-storage-reference-api/index.html +27 -4
  206. package/dist/serve/site-ui/docs/pyric-admin-storage-reference-api.md +23 -0
  207. package/dist/serve/site-ui/docs/pyric-ai-reference-api/index.html +1 -1
  208. package/dist/serve/site-ui/docs/pyric-ai-scripting-reference-api/index.html +1 -1
  209. package/dist/serve/site-ui/docs/pyric-app-reference-api/index.html +1 -1
  210. package/dist/serve/site-ui/docs/pyric-auth-reference-api/index.html +2 -2
  211. package/dist/serve/site-ui/docs/pyric-auth-reference-api.md +1 -1
  212. package/dist/serve/site-ui/docs/pyric-cli-assurance-browser-reference-api/index.html +1 -1
  213. package/dist/serve/site-ui/docs/pyric-cli-assurance-reference-api/index.html +1 -1
  214. package/dist/serve/site-ui/docs/pyric-cli-bridge-client-reference-api/index.html +1 -1
  215. package/dist/serve/site-ui/docs/pyric-cli-bridge-reference-api/index.html +1 -1
  216. package/dist/serve/site-ui/docs/pyric-cli-conformance-browser-reference-api/index.html +1 -1
  217. package/dist/serve/site-ui/docs/pyric-cli-conformance-docs-reference-api/index.html +1 -1
  218. package/dist/serve/site-ui/docs/pyric-cli-conformance-reference-api/index.html +1 -1
  219. package/dist/serve/site-ui/docs/pyric-cli-credentials-node-reference-api/index.html +1 -1
  220. package/dist/serve/site-ui/docs/pyric-cli-discover-reference-api/index.html +1 -1
  221. package/dist/serve/site-ui/docs/pyric-cli-next-reference-api/index.html +123 -0
  222. package/dist/serve/site-ui/docs/pyric-cli-next-reference-api.md +99 -0
  223. package/dist/serve/site-ui/docs/pyric-cli-register-app-bridge-reference-api/index.html +127 -0
  224. package/dist/serve/site-ui/docs/pyric-cli-register-app-bridge-reference-api.md +174 -0
  225. package/dist/serve/site-ui/docs/pyric-cli-register-reference-api/index.html +1 -1
  226. package/dist/serve/site-ui/docs/pyric-cli-remote-reference-api/index.html +1 -1
  227. package/dist/serve/site-ui/docs/pyric-cli-serve-worker-reference-api/index.html +570 -326
  228. package/dist/serve/site-ui/docs/pyric-cli-serve-worker-reference-api.md +198 -6
  229. package/dist/serve/site-ui/docs/pyric-cli-verify-reference-api/index.html +1 -1
  230. package/dist/serve/site-ui/docs/pyric-cli-vite-reference-api/index.html +1 -1
  231. package/dist/serve/site-ui/docs/pyric-database-reference-api/index.html +1 -1
  232. package/dist/serve/site-ui/docs/pyric-firestore-reference-api/index.html +2971 -627
  233. package/dist/serve/site-ui/docs/pyric-firestore-reference-api.md +2873 -517
  234. package/dist/serve/site-ui/docs/pyric-messaging-reference-api/index.html +1 -1
  235. package/dist/serve/site-ui/docs/pyric-messaging-sw-reference-api/index.html +1 -1
  236. package/dist/serve/site-ui/docs/pyric-rules-reference-api/index.html +43 -3
  237. package/dist/serve/site-ui/docs/pyric-rules-reference-api.md +8 -0
  238. package/dist/serve/site-ui/docs/pyric-sandbox-database-reference-api/index.html +26 -2
  239. package/dist/serve/site-ui/docs/pyric-sandbox-database-reference-api.md +24 -0
  240. package/dist/serve/site-ui/docs/pyric-sandbox-firestore-reference-api/index.html +1 -1
  241. package/dist/serve/site-ui/docs/pyric-sandbox-reference-api/index.html +77 -9
  242. package/dist/serve/site-ui/docs/pyric-sandbox-reference-api.md +28 -13
  243. package/dist/serve/site-ui/docs/pyric-storage-reference-api/index.html +240 -63
  244. package/dist/serve/site-ui/docs/pyric-storage-reference-api.md +164 -5
  245. package/dist/serve/site-ui/docs/pyric-ui-agents-reference-api/index.html +1 -1
  246. package/dist/serve/site-ui/docs/pyric-ui-auth-hooks-reference-api/index.html +1 -1
  247. package/dist/serve/site-ui/docs/pyric-ui-auth-reference-api/index.html +1 -1
  248. package/dist/serve/site-ui/docs/pyric-ui-events-hooks-reference-api/index.html +1 -1
  249. package/dist/serve/site-ui/docs/pyric-ui-events-reference-api/index.html +1 -1
  250. package/dist/serve/site-ui/docs/pyric-ui-firestore-hooks-reference-api/index.html +1 -1
  251. package/dist/serve/site-ui/docs/pyric-ui-firestore-reference-api/index.html +1 -1
  252. package/dist/serve/site-ui/docs/pyric-ui-primitives-reference-api/index.html +1 -1
  253. package/dist/serve/site-ui/docs/pyric-ui-rtdb-reference-api/index.html +1 -1
  254. package/dist/serve/site-ui/docs/pyric-ui-rules-hooks-reference-api/index.html +1 -1
  255. package/dist/serve/site-ui/docs/pyric-ui-rules-reference-api/index.html +1 -1
  256. package/dist/serve/site-ui/docs/pyric-ui-storage-hooks-reference-api/index.html +1 -1
  257. package/dist/serve/site-ui/docs/pyric-ui-storage-reference-api/index.html +2 -1
  258. package/dist/serve/site-ui/docs/pyric-ui-storage-reference-api.md +1 -0
  259. package/dist/serve/site-ui/docs/pyric-ui-traffic-hooks-reference-api/index.html +1 -1
  260. package/dist/serve/site-ui/docs/pyric-ui-traffic-reference-api/index.html +1 -1
  261. package/dist/serve/site-ui/docs/rules-compat/index.html +87 -79
  262. package/dist/serve/site-ui/docs/rules-compat.md +86 -78
  263. package/dist/serve/site-ui/docs/secure/audit-your-rules/index.html +1 -1
  264. package/dist/serve/site-ui/docs/secure/firestore-rules-limits/index.html +1 -1
  265. package/dist/serve/site-ui/docs/secure/read-a-denial/index.html +1 -1
  266. package/dist/serve/site-ui/docs/secure/rtdb-rules-in-typescript/index.html +1 -1
  267. package/dist/serve/site-ui/docs/secure/rules-standard-library/index.html +1 -1
  268. package/dist/serve/site-ui/docs/secure/secure-it-with-rules/index.html +1 -1
  269. package/dist/serve/site-ui/docs/secure/simulate-and-lint/index.html +1 -1
  270. package/dist/serve/site-ui/docs/secure/write-a-rules-test-suite/index.html +1 -1
  271. package/dist/serve/site-ui/docs/ship/ship-to-production/index.html +1 -1
  272. package/dist/serve/site-ui/docs/ship/test-in-node/index.html +1 -1
  273. package/dist/serve/site-ui/docs/storage-compat/index.html +119 -125
  274. package/dist/serve/site-ui/docs/storage-compat.md +118 -124
  275. package/dist/serve/site-ui/docs/trust/how-we-know-it-matches-firebase/index.html +1 -1
  276. package/dist/serve/site-ui/docs/trust/rules-standard-library/index.html +1 -1
  277. package/dist/serve/site-ui/docs/trust/storage-rules-stdlib-research/index.html +1 -1
  278. package/dist/serve/site-ui/docs/trust/versioning-and-compatibility/index.html +1 -1
  279. package/dist/serve/site-ui/docs/tutorial/index.html +1 -1
  280. package/dist/serve/site-ui/examples/chess/index.html +1 -1
  281. package/dist/serve/site-ui/examples/firestore-first-write/index.html +1 -1
  282. package/dist/serve/site-ui/firestore/index.html +2 -2
  283. package/dist/serve/site-ui/index.html +2 -2
  284. package/dist/serve/site-ui/llms.txt +6 -2
  285. package/dist/serve/site-ui/rtdb/index.html +2 -2
  286. package/dist/serve/site-ui/settings/index.html +2 -2
  287. package/dist/serve/site-ui/storage/index.html +2 -2
  288. package/dist/serve/site-ui/traffic/index.html +2 -2
  289. package/dist/serve/vite-ai-config.d.ts +4 -1
  290. package/dist/serve/vite-ai-config.d.ts.map +1 -1
  291. package/dist/serve/vite-ai-config.js +83 -19
  292. package/dist/serve/vite-ai-config.js.map +1 -1
  293. package/dist/serve/vite-generation-rules-watch.d.ts.map +1 -1
  294. package/dist/serve/vite-generation-rules-watch.js +61 -14
  295. package/dist/serve/vite-generation-rules-watch.js.map +1 -1
  296. package/dist/serve/vite-module-swap.d.ts +4 -1
  297. package/dist/serve/vite-module-swap.d.ts.map +1 -1
  298. package/dist/serve/vite-module-swap.js +106 -21
  299. package/dist/serve/vite-module-swap.js.map +1 -1
  300. package/dist/serve/vite-plugin.d.ts.map +1 -1
  301. package/dist/serve/vite-plugin.js +45 -5
  302. package/dist/serve/vite-plugin.js.map +1 -1
  303. package/dist/serve/vite-sandbox-generation.js +1 -1
  304. package/dist/serve/vite-sandbox-generation.js.map +1 -1
  305. package/dist/serve/worker/client/resumable.d.ts +30 -0
  306. package/dist/serve/worker/client/resumable.d.ts.map +1 -0
  307. package/dist/serve/worker/client/resumable.js +416 -0
  308. package/dist/serve/worker/client/resumable.js.map +1 -0
  309. package/dist/serve/worker/client/rtdb-references.d.ts.map +1 -1
  310. package/dist/serve/worker/client/rtdb-references.js +4 -1
  311. package/dist/serve/worker/client/rtdb-references.js.map +1 -1
  312. package/dist/serve/worker/client/storage.d.ts +16 -2
  313. package/dist/serve/worker/client/storage.d.ts.map +1 -1
  314. package/dist/serve/worker/client/storage.js +57 -6
  315. package/dist/serve/worker/client/storage.js.map +1 -1
  316. package/dist/serve/worker/host/rules.d.ts.map +1 -1
  317. package/dist/serve/worker/host/rules.js +2 -1
  318. package/dist/serve/worker/host/rules.js.map +1 -1
  319. package/dist/serve/worker/index.d.ts +1 -1
  320. package/dist/serve/worker/index.d.ts.map +1 -1
  321. package/dist/serve/worker/index.js +1 -1
  322. package/dist/serve/worker/index.js.map +1 -1
  323. package/dist/serve/worker/serve-init.d.ts.map +1 -1
  324. package/dist/serve/worker/serve-init.js +31 -0
  325. package/dist/serve/worker/serve-init.js.map +1 -1
  326. package/package.json +15 -4
  327. package/src/assurance/.generated/conformance-verdicts.ts +80 -72
  328. package/src/bridge/client/dispatch.ts +1 -1
  329. package/src/cli/cli.test.ts +14 -0
  330. package/src/cli/database-rules.ts +6 -4
  331. package/src/cli/dev-runner.ts +21 -0
  332. package/src/cli/serve.ts +62 -5
  333. package/src/cli/verify.ts +2 -2
  334. package/src/conformance/.generated/can-i-use-browser.ts +1 -1
  335. package/src/conformance/.generated/can-i-use.ts +1 -1
  336. package/src/conformance/.generated/conformance-docs.ts +1 -1
  337. package/src/next/client-aliases.ts +39 -0
  338. package/src/next/dev-rewrites.ts +77 -0
  339. package/src/next/guard.ts +61 -0
  340. package/src/next/index.ts +16 -0
  341. package/src/next/runtime-env.ts +18 -0
  342. package/src/next/server-external-packages.ts +43 -0
  343. package/src/next/target-url.ts +46 -0
  344. package/src/next/turbopack-config.ts +54 -0
  345. package/src/next/types.ts +47 -0
  346. package/src/next/webpack-config.ts +71 -0
  347. package/src/next/with-pyric.ts +58 -0
  348. package/src/register/app-bridge.ts +79 -0
  349. package/src/register/hooks.ts +6 -1
  350. package/src/register/index.ts +1 -1
  351. package/src/register/mapping.ts +50 -4
  352. package/src/rtdb/rules-json.ts +110 -0
  353. package/src/serve/bundler.ts +2 -0
  354. package/src/serve/discovery.ts +65 -44
  355. package/src/serve/entries/app-ai-passthrough.ts +83 -0
  356. package/src/serve/entries/auth-helper-core.ts +44 -8
  357. package/src/serve/entries/auth.ts +9 -4
  358. package/src/serve/entries/bridge-url.ts +9 -2
  359. package/src/serve/entries/database.ts +1 -0
  360. package/src/serve/entries/firestore.ts +1 -0
  361. package/src/serve/entries/init.ts +5 -2
  362. package/src/serve/entries/runtime.ts +25 -0
  363. package/src/serve/entries/storage.ts +12 -1
  364. package/src/serve/html-injection.ts +26 -1
  365. package/src/serve/rules.ts +2 -2
  366. package/src/serve/runtime/chip-config.ts +19 -6
  367. package/src/serve/sandbox-session.ts +31 -2
  368. package/src/serve/vite-ai-config.ts +86 -19
  369. package/src/serve/vite-generation-rules-watch.ts +67 -15
  370. package/src/serve/vite-module-swap.ts +121 -21
  371. package/src/serve/vite-plugin.ts +44 -6
  372. package/src/serve/vite-sandbox-generation.ts +1 -1
  373. package/src/serve/worker/client/resumable.ts +506 -0
  374. package/src/serve/worker/client/rtdb-references.ts +4 -1
  375. package/src/serve/worker/client/storage.ts +77 -7
  376. package/src/serve/worker/host/rules.ts +2 -1
  377. package/src/serve/worker/index.ts +4 -0
  378. package/src/serve/worker/serve-init.ts +30 -0
  379. package/dist/serve/site-ui/_astro/_studio_.BtYpqe1A.css +0 -1
  380. package/dist/serve/site-ui/_astro/app.BnMC0ywl.js +0 -109
  381. package/dist/serve/site-ui/_astro/app.DVXXR-WI.js +0 -1
  382. package/dist/serve/site-ui/_astro/index.B4Kh80he.js +0 -1
  383. package/dist/serve/site-ui/_astro/reads.D1exkX1-.js +0 -1
  384. package/dist/serve/site-ui/_astro/sandbox-controls.BqMePr5V.js +0 -1153
@@ -2,8 +2,8 @@ import path from 'node:path';
2
2
  import { loadEnv } from 'vite';
3
3
  const AI_PROXY_PATH = '/__pyric/ai-proxy';
4
4
  /** Values captured once by a SharedWorker and therefore requiring replacement. */
5
- export function viteWorkerEpochSalt(projectKey, engineWire) {
6
- return JSON.stringify({ projectKey, aiEngine: engineWire ?? null });
5
+ export function viteWorkerEpochSalt(projectKey, engineWire, mode = 'sandbox') {
6
+ return JSON.stringify({ projectKey, aiEngine: engineWire ?? null, aiMode: mode });
7
7
  }
8
8
  /** Load env using Vite's `envDir`-relative-to-root convention. */
9
9
  export function loadViteAiEnv(mode, root, envDir) {
@@ -15,35 +15,99 @@ export function loadViteAiEnv(mode, root, envDir) {
15
15
  }
16
16
  /** Convert a public declarative engine into the JSON-safe worker wire shape. */
17
17
  export function engineConfigToWire(engine) {
18
- if (engine.kind === 'openai') {
19
- return {
18
+ const isOpenAiEngine = engine.kind === 'openai';
19
+ if (isOpenAiEngine) {
20
+ const result = {
20
21
  kind: 'openai',
21
- baseUrl: engine.baseUrl ?? AI_PROXY_PATH,
22
- ...(engine.model !== undefined ? { model: engine.model } : {}),
23
- ...(engine.modelMap !== undefined ? { modelMap: engine.modelMap } : {}),
22
+ baseUrl: engine.baseUrl !== undefined && engine.baseUrl !== null ? engine.baseUrl : AI_PROXY_PATH,
24
23
  };
24
+ const hasModel = engine.model !== undefined;
25
+ if (hasModel) {
26
+ result.model = engine.model;
27
+ }
28
+ const hasModelMap = engine.modelMap !== undefined;
29
+ if (hasModelMap) {
30
+ result.modelMap = engine.modelMap;
31
+ }
32
+ return result;
25
33
  }
26
- return {
34
+ const result = {
27
35
  kind: 'scripted',
28
- ...(engine.script !== undefined
29
- ? { script: engine.script }
30
- : {}),
31
36
  };
37
+ const hasScript = engine.script !== undefined;
38
+ if (hasScript) {
39
+ result.script = engine.script;
40
+ }
41
+ return result;
32
42
  }
33
43
  /** Resolve the plugin's explicit-options-over-Vite-env AI convention. */
34
44
  export function resolveViteAiConfig(options, env) {
35
- if (options?.model !== undefined && options.engine !== undefined) {
45
+ const explicitModel = options?.model;
46
+ const explicitEngine = options?.engine;
47
+ const hasModelOption = explicitModel !== undefined;
48
+ const hasEngineOption = explicitEngine !== undefined;
49
+ const hasBothModelAndEngine = hasModelOption && hasEngineOption;
50
+ if (hasBothModelAndEngine) {
36
51
  throw new Error('@pyric/cli/vite: Choose either ai.model or ai.engine, not both.');
37
52
  }
38
- const model = options?.model?.trim() || env.PYRIC_AI_MODEL?.trim();
39
- const engineWire = options?.engine
40
- ? engineConfigToWire(options.engine)
41
- : model
42
- ? engineConfigToWire({ kind: 'openai', baseUrl: AI_PROXY_PATH, model })
43
- : undefined;
53
+ let mode = 'sandbox';
54
+ const explicitMode = options?.mode;
55
+ const hasExplicitMode = explicitMode !== undefined;
56
+ if (hasExplicitMode) {
57
+ mode = explicitMode;
58
+ }
59
+ else {
60
+ const isEnvProductionMode = env.PYRIC_AI_MODE === 'production';
61
+ const isEnvPassthroughFlag = env.PYRIC_AI_PASSTHROUGH === '1';
62
+ const isProductionEnv = isEnvProductionMode || isEnvPassthroughFlag;
63
+ if (isProductionEnv) {
64
+ mode = 'production';
65
+ }
66
+ }
67
+ const isProductionMode = mode === 'production';
68
+ const hasAnyEngineConfig = hasModelOption || hasEngineOption;
69
+ const isInvalidProductionConfig = isProductionMode && hasAnyEngineConfig;
70
+ if (isInvalidProductionConfig) {
71
+ throw new Error('@pyric/cli/vite: Cannot configure ai.model or ai.engine when ai.mode is set to "production".');
72
+ }
73
+ let model = undefined;
74
+ const envModel = env.PYRIC_AI_MODEL;
75
+ if (explicitModel !== undefined) {
76
+ model = explicitModel.trim();
77
+ }
78
+ else if (envModel !== undefined) {
79
+ model = envModel.trim();
80
+ }
81
+ const hasNonEmptyModel = model !== undefined && model !== '';
82
+ if (!hasNonEmptyModel) {
83
+ model = undefined;
84
+ }
85
+ let engineWire = undefined;
86
+ if (!isProductionMode) {
87
+ if (explicitEngine !== undefined) {
88
+ engineWire = engineConfigToWire(explicitEngine);
89
+ }
90
+ else if (model !== undefined) {
91
+ engineWire = engineConfigToWire({ kind: 'openai', baseUrl: AI_PROXY_PATH, model });
92
+ }
93
+ }
94
+ let proxyUpstream = undefined;
95
+ const explicitProxyUpstream = options?.proxyUpstream;
96
+ const envProxyUpstream = env.PYRIC_AI_PROXY_UPSTREAM;
97
+ if (explicitProxyUpstream !== undefined) {
98
+ proxyUpstream = explicitProxyUpstream.trim();
99
+ }
100
+ else if (envProxyUpstream !== undefined) {
101
+ proxyUpstream = envProxyUpstream.trim();
102
+ }
103
+ const hasNonEmptyProxyUpstream = proxyUpstream !== undefined && proxyUpstream !== '';
104
+ if (!hasNonEmptyProxyUpstream) {
105
+ proxyUpstream = undefined;
106
+ }
44
107
  return {
108
+ mode,
45
109
  engineWire,
46
- proxyUpstream: options?.proxyUpstream?.trim() || env.PYRIC_AI_PROXY_UPSTREAM?.trim() || undefined,
110
+ proxyUpstream,
47
111
  };
48
112
  }
49
113
  //# sourceMappingURL=vite-ai-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"vite-ai-config.js","sourceRoot":"","sources":["../../src/serve/vite-ai-config.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAG/B,MAAM,aAAa,GAAG,mBAAmB,CAAC;AAmB1C,kFAAkF;AAClF,MAAM,UAAU,mBAAmB,CACjC,UAAkB,EAClB,UAA0C;IAE1C,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,IAAI,IAAI,EAAE,CAAC,CAAC;AACtE,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,aAAa,CAC3B,IAAY,EACZ,IAAwB,EACxB,MAA0B;IAE1B,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACzD,MAAM,cAAc,GAAG,MAAM,KAAK,SAAS;QACzC,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACvC,OAAO,OAAO,CAAC,IAAI,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,kBAAkB,CAAC,MAA2B;IAC5D,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,aAAa;YACxC,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,GAAG,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxE,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS;YAC7B,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAmD,EAAE;YACxE,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,mBAAmB,CACjC,OAAmC,EACnC,GAAuC;IAEvC,IAAI,OAAO,EAAE,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACjE,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACrF,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC;IACnE,MAAM,UAAU,GAAG,OAAO,EAAE,MAAM;QAChC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC;QACpC,CAAC,CAAC,KAAK;YACL,CAAC,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;YACvE,CAAC,CAAC,SAAS,CAAC;IAEhB,OAAO;QACL,UAAU;QACV,aAAa,EACX,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,uBAAuB,EAAE,IAAI,EAAE,IAAI,SAAS;KACrF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"vite-ai-config.js","sourceRoot":"","sources":["../../src/serve/vite-ai-config.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"vite-generation-rules-watch.d.ts","sourceRoot":"","sources":["../../src/serve/vite-generation-rules-watch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,wFAAwF;AACxF,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,cAAc,CAAC;CACzB,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CA4BtB"}
1
+ {"version":3,"file":"vite-generation-rules-watch.d.ts","sourceRoot":"","sources":["../../src/serve/vite-generation-rules-watch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,wFAAwF;AACxF,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,cAAc,CAAC;CACzB,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAgFtB"}
@@ -2,31 +2,78 @@ import path from 'node:path';
2
2
  /** Adapt Vite's watcher to the session's last-good Firestore-rules reload operation. */
3
3
  export function watchViteGenerationRules(input) {
4
4
  const { server, session } = input;
5
- const rulesFile = session.summary.rules.firestore.sourcePath;
6
- if (!rulesFile)
5
+ const firestoreFile = session.summary.rules.firestore.sourcePath;
6
+ const databaseFile = session.summary.rules.database.sourcePath;
7
+ const hasFirestoreFile = firestoreFile !== null;
8
+ const hasDatabaseFile = databaseFile !== null;
9
+ const hasNeitherFile = !hasFirestoreFile && !hasDatabaseFile;
10
+ if (hasNeitherFile) {
7
11
  return null;
12
+ }
8
13
  let debounce = null;
9
14
  const onRulesChange = (file) => {
10
- if (path.resolve(file) !== path.resolve(rulesFile))
15
+ const resolvedFile = path.resolve(file);
16
+ let isFirestoreMatch = false;
17
+ if (hasFirestoreFile) {
18
+ const firestoreResolved = path.resolve(firestoreFile);
19
+ isFirestoreMatch = resolvedFile === firestoreResolved;
20
+ }
21
+ let isDatabaseMatch = false;
22
+ if (hasDatabaseFile) {
23
+ const databaseResolved = path.resolve(databaseFile);
24
+ isDatabaseMatch = resolvedFile === databaseResolved;
25
+ }
26
+ const isNeitherMatch = !isFirestoreMatch && !isDatabaseMatch;
27
+ if (isNeitherMatch) {
11
28
  return;
12
- if (debounce)
29
+ }
30
+ const hasDebounce = debounce !== null;
31
+ if (hasDebounce) {
13
32
  clearTimeout(debounce);
33
+ }
14
34
  debounce = setTimeout(() => {
15
- void session.reloadFirestoreRules().then((result) => {
16
- if (result.kind === 'reloaded') {
17
- server.config.logger.info(` ↻ [pyric] rules reloaded (${result.rulesHash})`);
18
- }
19
- else if (result.kind === 'rejected') {
20
- server.config.logger.warn(` ⚠ [pyric] rules NOT reloaded (last-good stays live): ${result.error.message}`);
21
- }
22
- });
35
+ if (isFirestoreMatch) {
36
+ void session.reloadFirestoreRules().then((result) => {
37
+ const isReloaded = result.kind === 'reloaded';
38
+ if (isReloaded) {
39
+ server.config.logger.info(` ↻ [pyric] rules reloaded (${result.rulesHash})`);
40
+ }
41
+ else {
42
+ const isRejected = result.kind === 'rejected';
43
+ if (isRejected) {
44
+ server.config.logger.warn(` ⚠ [pyric] rules NOT reloaded (last-good stays live): ${result.error.message}`);
45
+ }
46
+ }
47
+ });
48
+ }
49
+ if (isDatabaseMatch) {
50
+ void session.reloadDatabaseRules().then((result) => {
51
+ const isReloaded = result.kind === 'reloaded';
52
+ if (isReloaded) {
53
+ server.config.logger.info(` ↻ [pyric] rtdb rules reloaded (${result.rulesHash})`);
54
+ }
55
+ else {
56
+ const isRejected = result.kind === 'rejected';
57
+ if (isRejected) {
58
+ server.config.logger.warn(` ⚠ [pyric] rtdb rules NOT reloaded (last-good stays live): ${result.error.message}`);
59
+ }
60
+ }
61
+ });
62
+ }
23
63
  }, 150);
24
64
  };
25
- server.watcher.add(rulesFile);
65
+ if (hasFirestoreFile) {
66
+ server.watcher.add(firestoreFile);
67
+ }
68
+ if (hasDatabaseFile) {
69
+ server.watcher.add(databaseFile);
70
+ }
26
71
  server.watcher.on('change', onRulesChange);
27
72
  return () => {
28
- if (debounce)
73
+ const hasDebounce = debounce !== null;
74
+ if (hasDebounce) {
29
75
  clearTimeout(debounce);
76
+ }
30
77
  server.watcher.off('change', onRulesChange);
31
78
  };
32
79
  }
@@ -1 +1 @@
1
- {"version":3,"file":"vite-generation-rules-watch.js","sourceRoot":"","sources":["../../src/serve/vite-generation-rules-watch.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAI7B,wFAAwF;AACxF,MAAM,UAAU,wBAAwB,CAAC,KAGxC;IACC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAClC,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC;IAC7D,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAE5B,IAAI,QAAQ,GAAyC,IAAI,CAAC;IAC1D,MAAM,aAAa,GAAG,CAAC,IAAY,EAAQ,EAAE;QAC3C,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;YAAE,OAAO;QAC3D,IAAI,QAAQ;YAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;QACrC,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE;YACzB,KAAK,OAAO,CAAC,oBAAoB,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBAClD,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBAC/B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,+BAA+B,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC;gBAChF,CAAC;qBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBACtC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CACvB,0DAA0D,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CACjF,CAAC;gBACJ,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC,CAAC;IAEF,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC9B,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAC3C,OAAO,GAAG,EAAE;QACV,IAAI,QAAQ;YAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAC9C,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"vite-generation-rules-watch.js","sourceRoot":"","sources":["../../src/serve/vite-generation-rules-watch.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,9 @@ export interface ViteModuleSwap {
11
11
  load(id: string): string | null;
12
12
  }
13
13
  export declare function createViteModuleContext(): ViteModuleContext;
14
+ export interface ViteModuleSwapOptions {
15
+ getAiMode?: () => 'sandbox' | 'production';
16
+ }
14
17
  /** Own the Vite and optimizer forms of the Firebase-module swap. */
15
- export declare function createViteModuleSwap(context: ViteModuleContext): ViteModuleSwap;
18
+ export declare function createViteModuleSwap(context: ViteModuleContext, options?: ViteModuleSwapOptions): ViteModuleSwap;
16
19
  //# sourceMappingURL=vite-module-swap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vite-module-swap.d.ts","sourceRoot":"","sources":["../../src/serve/vite-module-swap.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AACvD,OAAO,EAEL,iBAAiB,EAIlB,MAAM,cAAc,CAAC;AAoBtB,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;IAC9C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,IAAI,UAAU,CAAC;IACrB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IAC7C,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC;IACvE,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,wBAAgB,uBAAuB,IAAI,iBAAiB,CAG3D;AAED,oEAAoE;AACpE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,GAAG,cAAc,CAsE/E"}
1
+ {"version":3,"file":"vite-module-swap.d.ts","sourceRoot":"","sources":["../../src/serve/vite-module-swap.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AACvD,OAAO,EAEL,iBAAiB,EAIlB,MAAM,cAAc,CAAC;AAoBtB,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;IAC9C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,IAAI,UAAU,CAAC;IACrB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IAC7C,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC;IACvE,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,wBAAgB,uBAAuB,IAAI,iBAAiB,CAG3D;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,MAAM,SAAS,GAAG,YAAY,CAAC;CAC5C;AAED,oEAAoE;AACpE,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,iBAAiB,EAC1B,OAAO,CAAC,EAAE,qBAAqB,GAC9B,cAAc,CAmKhB"}
@@ -19,9 +19,10 @@ export function createViteModuleContext() {
19
19
  return { entries, cliRoot: packageRootOf(entries.init) };
20
20
  }
21
21
  /** Own the Vite and optimizer forms of the Firebase-module swap. */
22
- export function createViteModuleSwap(context) {
22
+ export function createViteModuleSwap(context, options) {
23
23
  const { entries, cliRoot } = context;
24
24
  const pyricRoot = pyricPackageRoot();
25
+ const aiMode = () => options?.getAiMode?.() ?? 'sandbox';
25
26
  const isPyricImporter = (importer) => {
26
27
  if (!importer)
27
28
  return false;
@@ -41,28 +42,69 @@ export function createViteModuleSwap(context) {
41
42
  name: 'pyric-sandbox-optimizer',
42
43
  setup(build) {
43
44
  build.onResolve({ filter: FIREBASE_SPECIFIER }, (args) => {
44
- const subpath = FIREBASE_SPECIFIER.exec(args.path)[1];
45
- if (SERVED_FIREBASE_SUBPATHS.has(subpath)) {
46
- return { path: entries[entryKey(subpath)] };
45
+ const isShadowBridgeImporter = args.importer !== undefined && args.importer !== '' &&
46
+ (args.importer.includes('app-ai-passthrough') || args.importer.includes('app-bridge'));
47
+ const isFirebaseAppSpecifier = args.path === 'firebase/app';
48
+ const isBypassedBridgeImport = isShadowBridgeImporter && isFirebaseAppSpecifier;
49
+ if (isBypassedBridgeImport) {
50
+ return null;
51
+ }
52
+ const match = FIREBASE_SPECIFIER.exec(args.path);
53
+ const subpath = match !== null && match[1] !== undefined ? match[1] : '';
54
+ const isProductionAiMode = aiMode() === 'production';
55
+ if (isProductionAiMode) {
56
+ const isAiSubpath = subpath === 'ai';
57
+ if (isAiSubpath) {
58
+ return null;
59
+ }
60
+ const isAppSubpath = subpath === 'app';
61
+ const passthroughEntry = entries['app-ai-passthrough'];
62
+ const hasPassthroughEntry = passthroughEntry !== undefined;
63
+ const shouldUsePassthroughBridge = isAppSubpath && hasPassthroughEntry;
64
+ if (shouldUsePassthroughBridge) {
65
+ return { path: passthroughEntry };
66
+ }
67
+ }
68
+ const isServedSubpath = SERVED_FIREBASE_SUBPATHS.has(subpath);
69
+ if (isServedSubpath) {
70
+ const key = entryKey(subpath);
71
+ const entryPath = entries[key];
72
+ if (entryPath !== undefined) {
73
+ return { path: entryPath };
74
+ }
47
75
  }
48
76
  return null;
49
77
  });
50
78
  build.onResolve({ filter: NODE_BUILTIN_RE }, (args) => {
51
- if (!isOurCode(args.importer))
79
+ const isOwnedImporter = isOurCode(args.importer);
80
+ if (!isOwnedImporter) {
52
81
  return null;
53
- return { path: args.path.replace(/^node:/, ''), namespace: 'pyric-node-shim' };
82
+ }
83
+ const shimPath = args.path.replace(/^node:/, '');
84
+ return { path: shimPath, namespace: 'pyric-node-shim' };
85
+ });
86
+ build.onLoad({ filter: /.*/, namespace: 'pyric-node-shim' }, (args) => {
87
+ const content = NODE_BUILTIN_SHIMS[args.path];
88
+ if (content !== undefined) {
89
+ return { contents: content, loader: 'js' };
90
+ }
91
+ return null;
54
92
  });
55
- build.onLoad({ filter: /.*/, namespace: 'pyric-node-shim' }, (args) => ({
56
- contents: NODE_BUILTIN_SHIMS[args.path],
57
- loader: 'js',
58
- }));
59
93
  },
60
94
  };
61
95
  return {
62
96
  config() {
97
+ const excludedModules = [
98
+ ...SDK_MODULES,
99
+ '@firebase/app',
100
+ '@firebase/component',
101
+ '@firebase/ai',
102
+ '@firebase/util',
103
+ '@firebase/logger',
104
+ ];
63
105
  return {
64
106
  optimizeDeps: {
65
- exclude: [...SDK_MODULES],
107
+ exclude: excludedModules,
66
108
  include: ['js-md5', 'js-sha256'],
67
109
  esbuildOptions: { plugins: [optimizerMirror] },
68
110
  },
@@ -70,26 +112,69 @@ export function createViteModuleSwap(context) {
70
112
  },
71
113
  configResolved(config) {
72
114
  const allow = config.server?.fs?.allow;
73
- if (!allow)
115
+ const hasAllowList = allow !== undefined && Array.isArray(allow);
116
+ if (!hasAllowList) {
74
117
  return;
118
+ }
75
119
  for (const dir of [pyricRoot, cliRoot]) {
76
- if (!allow.includes(dir))
120
+ const isAlreadyAllowed = allow.includes(dir);
121
+ if (!isAlreadyAllowed) {
77
122
  allow.push(dir);
123
+ }
78
124
  }
79
125
  },
80
126
  resolveId(source, importer) {
81
- const firebase = FIREBASE_SPECIFIER.exec(source);
82
- if (firebase) {
83
- const subpath = firebase[1];
84
- return SERVED_FIREBASE_SUBPATHS.has(subpath) ? entries[entryKey(subpath)] : null;
127
+ const isShadowBridgeImporter = importer !== undefined &&
128
+ (importer.includes('app-ai-passthrough') || importer.includes('app-bridge'));
129
+ const isFirebaseAppSpecifier = source === 'firebase/app';
130
+ const isBypassedBridgeImport = isShadowBridgeImporter && isFirebaseAppSpecifier;
131
+ if (isBypassedBridgeImport) {
132
+ return null;
133
+ }
134
+ const firebaseMatch = FIREBASE_SPECIFIER.exec(source);
135
+ const isFirebaseSpecifier = firebaseMatch !== null;
136
+ if (isFirebaseSpecifier) {
137
+ const subpath = firebaseMatch[1] !== undefined ? firebaseMatch[1] : '';
138
+ const isProductionAiMode = aiMode() === 'production';
139
+ if (isProductionAiMode) {
140
+ const isAiSubpath = subpath === 'ai';
141
+ if (isAiSubpath) {
142
+ return null;
143
+ }
144
+ const isAppSubpath = subpath === 'app';
145
+ const passthroughEntry = entries['app-ai-passthrough'];
146
+ const hasPassthroughEntry = passthroughEntry !== undefined;
147
+ const shouldUsePassthroughBridge = isAppSubpath && hasPassthroughEntry;
148
+ if (shouldUsePassthroughBridge) {
149
+ return passthroughEntry;
150
+ }
151
+ }
152
+ const isServedSubpath = SERVED_FIREBASE_SUBPATHS.has(subpath);
153
+ if (isServedSubpath) {
154
+ const key = entryKey(subpath);
155
+ const entryPath = entries[key];
156
+ if (entryPath !== undefined) {
157
+ return entryPath;
158
+ }
159
+ }
160
+ return null;
85
161
  }
86
- const node = NODE_BUILTIN_RE.exec(source);
87
- return node && isOurCode(importer) ? NODE_SHIM_PREFIX + node[2] : null;
162
+ const nodeMatch = NODE_BUILTIN_RE.exec(source);
163
+ const isNodeBuiltin = nodeMatch !== null && nodeMatch[2] !== undefined;
164
+ const isOwnedImporter = isOurCode(importer);
165
+ const shouldShimNodeBuiltin = isNodeBuiltin && isOwnedImporter;
166
+ if (shouldShimNodeBuiltin) {
167
+ return NODE_SHIM_PREFIX + nodeMatch[2];
168
+ }
169
+ return null;
88
170
  },
89
171
  load(id) {
90
- if (!id.startsWith(NODE_SHIM_PREFIX))
172
+ const isNodeShim = id.startsWith(NODE_SHIM_PREFIX);
173
+ if (!isNodeShim) {
91
174
  return null;
92
- return shimFor(id.slice(NODE_SHIM_PREFIX.length));
175
+ }
176
+ const specifier = id.slice(NODE_SHIM_PREFIX.length);
177
+ return shimFor(specifier);
93
178
  },
94
179
  };
95
180
  }
@@ -1 +1 @@
1
- {"version":3,"file":"vite-module-swap.js","sourceRoot":"","sources":["../../src/serve/vite-module-swap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vite-module-swap.js","sourceRoot":"","sources":["../../src/serve/vite-module-swap.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"vite-plugin.d.ts","sourceRoot":"","sources":["../../src/serve/vite-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,OAAO,KAAK,EAAE,MAAM,EAAc,MAAM,MAAM,CAAC;AAE/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAUvE,MAAM,WAAW,YAAY;IAC3B;;iDAE6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;gEAC4D;IAC5D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gFAAgF;IAChF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;qEACiE;IACjE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;iFAC6E;IAC7E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;;;mEAQ+D;IAC/D,MAAM,CAAC,EAAE,OAAO,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IACnE;;;;;;sBAMkB;IAClB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb;;4EAEwE;IACxE,WAAW,CAAC,EAAE,sBAAsB,CAAC;IACrC;;;;;;;;;;;;;;;;;;;;;2CAqBuC;IACvC,SAAS,CAAC,EAAE,KAAK,GAAG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAC5E;;;;4DAIwD;IACxD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,EAAE,CAAC,EAAE,cAAc,CAAC;CACrB;AAUD;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,OAAO,GAAE,YAAiB,GAAG,MAAM,CAyGxD"}
1
+ {"version":3,"file":"vite-plugin.d.ts","sourceRoot":"","sources":["../../src/serve/vite-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,OAAO,KAAK,EAAE,MAAM,EAAc,MAAM,MAAM,CAAC;AAI/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAUvE,MAAM,WAAW,YAAY;IAC3B;;iDAE6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;gEAC4D;IAC5D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gFAAgF;IAChF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;qEACiE;IACjE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;iFAC6E;IAC7E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;;;mEAQ+D;IAC/D,MAAM,CAAC,EAAE,OAAO,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IACnE;;;;;;sBAMkB;IAClB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb;;4EAEwE;IACxE,WAAW,CAAC,EAAE,sBAAsB,CAAC;IACrC;;;;;;;;;;;;;;;;;;;;;2CAqBuC;IACvC,SAAS,CAAC,EAAE,KAAK,GAAG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAC5E;;;;4DAIwD;IACxD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,EAAE,CAAC,EAAE,cAAc,CAAC;CACrB;AAiCD;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,OAAO,GAAE,YAAiB,GAAG,MAAM,CAsHxD"}
@@ -1,3 +1,5 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { dirname, join, resolve } from 'node:path';
1
3
  import { createViteWorkerRuntime } from './vite-worker-runtime.js';
2
4
  import { createViteSandboxGeneration, } from './vite-sandbox-generation.js';
3
5
  import { createViteModuleContext, createViteModuleSwap } from './vite-module-swap.js';
@@ -9,6 +11,31 @@ function resolveFunctionsOptions(options) {
9
11
  return options;
10
12
  return {};
11
13
  }
14
+ /**
15
+ * Resolves the Firebase project root directory from Vite's server root. In
16
+ * split-directory or full-stack monorepo layouts where Vite operates inside a
17
+ * subdirectory (e.g. `/web` or `/frontend`) while hosting and security rules
18
+ * configuration (`firebase.json`) resides in an ancestor workspace directory,
19
+ * this ascends to locate the authoritative configuration root.
20
+ */
21
+ function resolveFirebaseProjectDir(defaultRoot, explicitRoot) {
22
+ const hasExplicitRoot = explicitRoot !== undefined && explicitRoot.length > 0;
23
+ if (hasExplicitRoot)
24
+ return explicitRoot;
25
+ let current = resolve(defaultRoot);
26
+ while (true) {
27
+ const candidateConfig = join(current, 'firebase.json');
28
+ const configExists = existsSync(candidateConfig);
29
+ if (configExists)
30
+ return current;
31
+ const parent = dirname(current);
32
+ const isRootOfFilesystem = parent === current;
33
+ if (isRootOfFilesystem)
34
+ break;
35
+ current = parent;
36
+ }
37
+ return defaultRoot;
38
+ }
12
39
  /**
13
40
  * The dev-only Vite plugin. Add to `vite.config`:
14
41
  *
@@ -17,7 +44,6 @@ function resolveFunctionsOptions(options) {
17
44
  */
18
45
  export function pyric(options = {}) {
19
46
  const moduleContext = createViteModuleContext();
20
- const moduleSwap = createViteModuleSwap(moduleContext);
21
47
  const { entries, cliRoot } = moduleContext;
22
48
  const workerRuntime = createViteWorkerRuntime();
23
49
  const studioEnabled = options.ui !== false;
@@ -28,6 +54,9 @@ export function pyric(options = {}) {
28
54
  workerRuntime,
29
55
  };
30
56
  const pageRuntime = createVitePageRuntime(pageRuntimeInput);
57
+ const moduleSwap = createViteModuleSwap(moduleContext, {
58
+ getAiMode: () => pageRuntime.ai().mode,
59
+ });
31
60
  // Normalize the public bridge shorthand once. The active generation owns the
32
61
  // bridge/session attachment and routes the peer through the SharedWorker.
33
62
  const bridgeOpts = options.bridge === true ? {} : options.bridge || null;
@@ -46,10 +75,21 @@ export function pyric(options = {}) {
46
75
  },
47
76
  enforce: 'pre',
48
77
  config(config, env) {
49
- return {
50
- ...moduleSwap.config(),
51
- ...pageRuntime.config(config, env),
78
+ const moduleConfig = moduleSwap.config();
79
+ const pageConfig = pageRuntime.config(config, env);
80
+ const serverWatchConfig = {
81
+ server: {
82
+ watch: {
83
+ ignored: ['**/.pyric/**'],
84
+ },
85
+ },
86
+ };
87
+ const finalizedConfig = {
88
+ ...moduleConfig,
89
+ ...pageConfig,
90
+ ...serverWatchConfig,
52
91
  };
92
+ return finalizedConfig;
53
93
  },
54
94
  configResolved(resolved) {
55
95
  moduleSwap.configResolved(resolved);
@@ -64,7 +104,7 @@ export function pyric(options = {}) {
64
104
  const priorGeneration = activeGeneration;
65
105
  activeGeneration = null;
66
106
  await priorGeneration?.close();
67
- const projectDir = options.root ?? server.config.root;
107
+ const projectDir = resolveFirebaseProjectDir(server.config.root, options.root);
68
108
  const uiEnabled = options.ui ?? true;
69
109
  const functionsOptions = resolveFunctionsOptions(options.functions);
70
110
  const ai = pageRuntime.ai();
@@ -1 +1 @@
1
- {"version":3,"file":"vite-plugin.js","sourceRoot":"","sources":["../../src/serve/vite-plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vite-plugin.js","sourceRoot":"","sources":["../../src/serve/vite-plugin.ts"],"names":[],"mappings":"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"}
@@ -63,7 +63,7 @@ export async function createViteSandboxGeneration(input, dependencyOverrides = {
63
63
  }
64
64
  const rulesConfig = dependencies.resolveRulesConfig(cwd, options.rules, firebaseConfig);
65
65
  try {
66
- const epochSalt = viteWorkerEpochSalt(cwd, ai.engineWire);
66
+ const epochSalt = viteWorkerEpochSalt(cwd, ai.engineWire, ai.mode);
67
67
  await dependencies.prepareWorker(workerRuntime, epochSalt);
68
68
  }
69
69
  catch (error) {