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

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 (223) hide show
  1. package/README.md +34 -3
  2. package/README.md.orig +5 -1
  3. package/dist/bridge/server/bridge.d.ts.map +1 -1
  4. package/dist/bridge/server/bridge.js +4 -2
  5. package/dist/bridge/server/bridge.js.map +1 -1
  6. package/dist/bridge/server/mcp-contract.d.ts +2 -2
  7. package/dist/bridge/server/mcp-contract.d.ts.map +1 -1
  8. package/dist/bridge/server/mcp-contract.js +3 -0
  9. package/dist/bridge/server/mcp-contract.js.map +1 -1
  10. package/dist/bridge/server/peer.d.ts.map +1 -1
  11. package/dist/bridge/server/peer.js +1 -0
  12. package/dist/bridge/server/peer.js.map +1 -1
  13. package/dist/cli/index.d.ts +1 -0
  14. package/dist/cli/index.d.ts.map +1 -1
  15. package/dist/cli/index.js +3 -0
  16. package/dist/cli/index.js.map +1 -1
  17. package/dist/cli/mcp-proxy.d.ts.map +1 -1
  18. package/dist/cli/mcp-proxy.js.map +1 -1
  19. package/dist/cli/rules.d.ts +1 -0
  20. package/dist/cli/rules.d.ts.map +1 -1
  21. package/dist/cli/rules.js +18 -4
  22. package/dist/cli/rules.js.map +1 -1
  23. package/dist/cli/serve.d.ts.map +1 -1
  24. package/dist/cli/serve.js +1 -0
  25. package/dist/cli/serve.js.map +1 -1
  26. package/dist/cli/service-command-records/storage-rules-resolve.d.ts +4 -0
  27. package/dist/cli/service-command-records/storage-rules-resolve.d.ts.map +1 -0
  28. package/dist/cli/service-command-records/storage-rules-resolve.js +3 -0
  29. package/dist/cli/service-command-records/storage-rules-resolve.js.map +1 -0
  30. package/dist/cli/service-commands.generated.d.ts +3 -0
  31. package/dist/cli/service-commands.generated.d.ts.map +1 -1
  32. package/dist/cli/service-commands.generated.js +2 -0
  33. package/dist/cli/service-commands.generated.js.map +1 -1
  34. package/dist/conformance/.generated/conformance-docs.d.ts.map +1 -1
  35. package/dist/conformance/.generated/conformance-docs.js +1 -1
  36. package/dist/conformance/.generated/conformance-docs.js.map +1 -1
  37. package/dist/functions-rtdb/child.d.ts +1 -0
  38. package/dist/functions-rtdb/child.d.ts.map +1 -1
  39. package/dist/functions-rtdb/child.js +11 -1
  40. package/dist/functions-rtdb/child.js.map +1 -1
  41. package/dist/functions-rtdb/development-runtime.d.ts +1 -0
  42. package/dist/functions-rtdb/development-runtime.d.ts.map +1 -1
  43. package/dist/functions-rtdb/development-runtime.js +1 -0
  44. package/dist/functions-rtdb/development-runtime.js.map +1 -1
  45. package/dist/remote/index.d.ts.map +1 -1
  46. package/dist/remote/index.js +5 -3
  47. package/dist/remote/index.js.map +1 -1
  48. package/dist/serve/rules.d.ts +3 -3
  49. package/dist/serve/rules.d.ts.map +1 -1
  50. package/dist/serve/rules.js +13 -5
  51. package/dist/serve/rules.js.map +1 -1
  52. package/dist/serve/runtime/chip.d.ts.map +1 -1
  53. package/dist/serve/runtime/chip.js +24 -3
  54. package/dist/serve/runtime/chip.js.map +1 -1
  55. package/dist/serve/runtime/status.d.ts +1 -0
  56. package/dist/serve/runtime/status.d.ts.map +1 -1
  57. package/dist/serve/runtime/status.js +71 -13
  58. package/dist/serve/runtime/status.js.map +1 -1
  59. package/dist/serve/site-ui/_astro/{RulesCodeEditor.CzwHdCi9.js → RulesCodeEditor.Bl-XMkhD.js} +1 -1
  60. package/dist/serve/site-ui/_astro/_example_.B9DG9HLJ.css +1 -0
  61. package/dist/serve/site-ui/_astro/_slug_.CupVK4TM.css +1 -0
  62. package/dist/serve/site-ui/_astro/_studio_.CfxiQWkk.css +1 -0
  63. package/dist/serve/site-ui/_astro/app.Ce3MTLQm.js +1 -0
  64. package/dist/serve/site-ui/_astro/app.taqzyjD0.js +11 -0
  65. package/dist/serve/site-ui/_astro/chess-showcase.Dh5D8kqe.js +354 -0
  66. package/dist/serve/site-ui/_astro/{example-runtime.D79PnoSk.js → example-runtime.CuyAjjiG.js} +2 -26
  67. package/dist/serve/site-ui/_astro/sandbox-controls.BP4M5f1M.js +1169 -0
  68. package/dist/serve/site-ui/_astro/seed.CSUkloMi.js +20 -0
  69. package/dist/serve/site-ui/_astro/writes.C57paAj2.js +99 -0
  70. package/dist/serve/site-ui/auth/index.html +2 -2
  71. package/dist/serve/site-ui/docs/_rhythm/index.html +1 -1
  72. package/dist/serve/site-ui/docs/agent/set-up-your-agent/index.html +73 -13
  73. package/dist/serve/site-ui/docs/agent/set-up-your-agent.md +77 -11
  74. package/dist/serve/site-ui/docs/agent/watch-and-review/index.html +1 -1
  75. package/dist/serve/site-ui/docs/agent/work-with-an-agent/index.html +1 -1
  76. package/dist/serve/site-ui/docs/ai-compat/index.html +1 -1
  77. package/dist/serve/site-ui/docs/api-reference/index.html +1 -1
  78. package/dist/serve/site-ui/docs/app-compat/index.html +1 -1
  79. package/dist/serve/site-ui/docs/auth-compat/index.html +1 -1
  80. package/dist/serve/site-ui/docs/build/ai-logic/index.html +19 -2
  81. package/dist/serve/site-ui/docs/build/ai-logic.md +28 -0
  82. package/dist/serve/site-ui/docs/build/authentication/index.html +1 -1
  83. package/dist/serve/site-ui/docs/build/cloud-firestore/index.html +30 -52
  84. package/dist/serve/site-ui/docs/build/cloud-firestore.md +40 -36
  85. package/dist/serve/site-ui/docs/build/cloud-messaging/index.html +1 -1
  86. package/dist/serve/site-ui/docs/build/cloud-storage/index.html +1 -1
  87. package/dist/serve/site-ui/docs/build/realtime-database/index.html +1 -1
  88. package/dist/serve/site-ui/docs/conformance-scores/index.html +22 -7
  89. package/dist/serve/site-ui/docs/conformance-scores.md +20 -5
  90. package/dist/serve/site-ui/docs/create-pyric-reference-api/index.html +1 -1
  91. package/dist/serve/site-ui/docs/database-compat/index.html +1 -1
  92. package/dist/serve/site-ui/docs/examples/chess/index.html +645 -249
  93. package/dist/serve/site-ui/docs/examples/chess.md +45 -16
  94. package/dist/serve/site-ui/docs/examples/index.html +2 -2
  95. package/dist/serve/site-ui/docs/firestore-compat/index.html +1 -1
  96. package/dist/serve/site-ui/docs/functions-rtdb-compat/index.html +1 -1
  97. package/dist/serve/site-ui/docs/get-started/how-the-swap-works/index.html +1 -1
  98. package/dist/serve/site-ui/docs/get-started/nextjs/index.html +1 -1
  99. package/dist/serve/site-ui/docs/get-started/start-building/index.html +43 -5
  100. package/dist/serve/site-ui/docs/get-started/start-building.md +34 -3
  101. package/dist/serve/site-ui/docs/get-started/vite/index.html +1 -1
  102. package/dist/serve/site-ui/docs/index.json +66 -26
  103. package/dist/serve/site-ui/docs/messaging-compat/index.html +1 -1
  104. package/dist/serve/site-ui/docs/observe/resolve-runtime-status/index.html +1 -1
  105. package/dist/serve/site-ui/docs/observe/see-whats-happening/index.html +1 -1
  106. package/dist/serve/site-ui/docs/observe/shape-your-data/index.html +1 -1
  107. package/dist/serve/site-ui/docs/overview/index.html +1 -1
  108. package/dist/serve/site-ui/docs/pyric-admin-app-reference-api/index.html +1 -1
  109. package/dist/serve/site-ui/docs/pyric-admin-auth-reference-api/index.html +1 -1
  110. package/dist/serve/site-ui/docs/pyric-admin-database-reference-api/index.html +1 -1
  111. package/dist/serve/site-ui/docs/pyric-admin-firestore-reference-api/index.html +1 -1
  112. package/dist/serve/site-ui/docs/pyric-admin-messaging-reference-api/index.html +1 -1
  113. package/dist/serve/site-ui/docs/pyric-admin-storage-reference-api/index.html +1 -1
  114. package/dist/serve/site-ui/docs/pyric-ai-reference-api/index.html +1 -1
  115. package/dist/serve/site-ui/docs/pyric-ai-scripting-reference-api/index.html +1 -1
  116. package/dist/serve/site-ui/docs/pyric-app-reference-api/index.html +1 -1
  117. package/dist/serve/site-ui/docs/pyric-auth-reference-api/index.html +1 -1
  118. package/dist/serve/site-ui/docs/pyric-cli-assurance-browser-reference-api/index.html +1 -1
  119. package/dist/serve/site-ui/docs/pyric-cli-assurance-reference-api/index.html +1 -1
  120. package/dist/serve/site-ui/docs/pyric-cli-bridge-client-reference-api/index.html +1 -1
  121. package/dist/serve/site-ui/docs/pyric-cli-bridge-reference-api/index.html +1 -1
  122. package/dist/serve/site-ui/docs/pyric-cli-conformance-browser-reference-api/index.html +1 -1
  123. package/dist/serve/site-ui/docs/pyric-cli-conformance-docs-reference-api/index.html +1 -1
  124. package/dist/serve/site-ui/docs/pyric-cli-conformance-reference-api/index.html +1 -1
  125. package/dist/serve/site-ui/docs/pyric-cli-credentials-node-reference-api/index.html +1 -1
  126. package/dist/serve/site-ui/docs/pyric-cli-discover-reference-api/index.html +1 -1
  127. package/dist/serve/site-ui/docs/pyric-cli-next-reference-api/index.html +1 -1
  128. package/dist/serve/site-ui/docs/pyric-cli-register-app-bridge-reference-api/index.html +1 -1
  129. package/dist/serve/site-ui/docs/pyric-cli-register-reference-api/index.html +1 -1
  130. package/dist/serve/site-ui/docs/pyric-cli-remote-reference-api/index.html +1 -1
  131. package/dist/serve/site-ui/docs/pyric-cli-serve-worker-reference-api/index.html +1 -1
  132. package/dist/serve/site-ui/docs/pyric-cli-verify-reference-api/index.html +1 -1
  133. package/dist/serve/site-ui/docs/pyric-cli-vite-reference-api/index.html +1 -1
  134. package/dist/serve/site-ui/docs/pyric-database-reference-api/index.html +1 -1
  135. package/dist/serve/site-ui/docs/pyric-firestore-reference-api/index.html +1 -1
  136. package/dist/serve/site-ui/docs/pyric-messaging-reference-api/index.html +1 -1
  137. package/dist/serve/site-ui/docs/pyric-messaging-sw-reference-api/index.html +1 -1
  138. package/dist/serve/site-ui/docs/pyric-rules-reference-api/index.html +1 -1
  139. package/dist/serve/site-ui/docs/pyric-sandbox-database-reference-api/index.html +1 -1
  140. package/dist/serve/site-ui/docs/pyric-sandbox-firestore-reference-api/index.html +1 -1
  141. package/dist/serve/site-ui/docs/pyric-sandbox-reference-api/index.html +1 -1
  142. package/dist/serve/site-ui/docs/pyric-storage-reference-api/index.html +1 -1
  143. package/dist/serve/site-ui/docs/pyric-ui-agents-reference-api/index.html +1 -1
  144. package/dist/serve/site-ui/docs/pyric-ui-auth-hooks-reference-api/index.html +1 -1
  145. package/dist/serve/site-ui/docs/pyric-ui-auth-reference-api/index.html +1 -1
  146. package/dist/serve/site-ui/docs/pyric-ui-events-hooks-reference-api/index.html +1 -1
  147. package/dist/serve/site-ui/docs/pyric-ui-events-reference-api/index.html +1 -1
  148. package/dist/serve/site-ui/docs/pyric-ui-firestore-hooks-reference-api/index.html +1 -1
  149. package/dist/serve/site-ui/docs/pyric-ui-firestore-reference-api/index.html +1 -1
  150. package/dist/serve/site-ui/docs/pyric-ui-primitives-reference-api/index.html +1 -1
  151. package/dist/serve/site-ui/docs/pyric-ui-rtdb-reference-api/index.html +1 -1
  152. package/dist/serve/site-ui/docs/pyric-ui-rules-hooks-reference-api/index.html +1 -1
  153. package/dist/serve/site-ui/docs/pyric-ui-rules-reference-api/index.html +1 -10
  154. package/dist/serve/site-ui/docs/pyric-ui-rules-reference-api.md +0 -9
  155. package/dist/serve/site-ui/docs/pyric-ui-storage-hooks-reference-api/index.html +1 -1
  156. package/dist/serve/site-ui/docs/pyric-ui-storage-reference-api/index.html +1 -1
  157. package/dist/serve/site-ui/docs/pyric-ui-traffic-hooks-reference-api/index.html +1 -1
  158. package/dist/serve/site-ui/docs/pyric-ui-traffic-reference-api/index.html +1 -1
  159. package/dist/serve/site-ui/docs/rules-compat/index.html +1 -1
  160. package/dist/serve/site-ui/docs/secure/audit-your-rules/index.html +1 -1
  161. package/dist/serve/site-ui/docs/secure/firestore-rules-limits/index.html +1 -1
  162. package/dist/serve/site-ui/docs/secure/read-a-denial/index.html +1 -1
  163. package/dist/serve/site-ui/docs/secure/rtdb-rules-in-typescript/index.html +1 -1
  164. package/dist/serve/site-ui/docs/secure/rules-standard-library/index.html +1 -1
  165. package/dist/serve/site-ui/docs/secure/secure-it-with-rules/index.html +1 -1
  166. package/dist/serve/site-ui/docs/secure/simulate-and-lint/index.html +1 -1
  167. package/dist/serve/site-ui/docs/secure/write-a-rules-test-suite/index.html +1 -1
  168. package/dist/serve/site-ui/docs/ship/ship-to-production/index.html +1 -1
  169. package/dist/serve/site-ui/docs/ship/test-in-node/index.html +1 -1
  170. package/dist/serve/site-ui/docs/storage-compat/index.html +1 -1
  171. package/dist/serve/site-ui/docs/trust/how-we-know-it-matches-firebase/index.html +1 -1
  172. package/dist/serve/site-ui/docs/trust/rules-standard-library/index.html +1 -1
  173. package/dist/serve/site-ui/docs/trust/storage-rules-stdlib-research/index.html +1 -1
  174. package/dist/serve/site-ui/docs/trust/versioning-and-compatibility/index.html +1 -1
  175. package/dist/serve/site-ui/docs/tutorial/index.html +2 -1
  176. package/dist/serve/site-ui/docs/tutorial.md +2 -0
  177. package/dist/serve/site-ui/examples/chess/index.html +2 -2
  178. package/dist/serve/site-ui/firestore/index.html +2 -2
  179. package/dist/serve/site-ui/index.html +2 -2
  180. package/dist/serve/site-ui/llms.txt +2 -2
  181. package/dist/serve/site-ui/rtdb/index.html +2 -2
  182. package/dist/serve/site-ui/settings/index.html +2 -2
  183. package/dist/serve/site-ui/storage/index.html +2 -2
  184. package/dist/serve/site-ui/traffic/index.html +2 -2
  185. package/dist/serve/vite-functions-development.d.ts.map +1 -1
  186. package/dist/serve/vite-functions-development.js +1 -0
  187. package/dist/serve/vite-functions-development.js.map +1 -1
  188. package/dist/serve/vite-rules-source.d.ts.map +1 -1
  189. package/dist/serve/vite-rules-source.js +28 -7
  190. package/dist/serve/vite-rules-source.js.map +1 -1
  191. package/package.json +4 -4
  192. package/src/bridge/server/bridge.ts +5 -2
  193. package/src/bridge/server/mcp-contract.ts +3 -0
  194. package/src/bridge/server/peer.ts +2 -1
  195. package/src/cli/index.ts +3 -0
  196. package/src/cli/mcp-proxy.ts +6 -7
  197. package/src/cli/rules.ts +31 -4
  198. package/src/cli/serve.ts +1 -0
  199. package/src/cli/service-command-records/storage-rules-resolve.ts +4 -0
  200. package/src/cli/service-commands.generated.ts +2 -0
  201. package/src/conformance/.generated/conformance-docs.ts +1 -1
  202. package/src/functions-rtdb/child.ts +12 -1
  203. package/src/functions-rtdb/development-runtime.ts +2 -0
  204. package/src/remote/index.ts +7 -5
  205. package/src/serve/rules.ts +15 -5
  206. package/src/serve/runtime/chip.ts +24 -3
  207. package/src/serve/runtime/status.ts +76 -13
  208. package/src/serve/vite-functions-development.ts +1 -0
  209. package/src/serve/vite-rules-source.ts +29 -7
  210. package/dist/serve/site-ui/_astro/_example_.jevZ7OdV.css +0 -1
  211. package/dist/serve/site-ui/_astro/_slug_.BoKXYrnu.css +0 -1
  212. package/dist/serve/site-ui/_astro/_studio_.B6b_G1ev.css +0 -1
  213. package/dist/serve/site-ui/_astro/app.bnmVTkIY.js +0 -11
  214. package/dist/serve/site-ui/_astro/app.t6u-adB_.js +0 -1
  215. package/dist/serve/site-ui/_astro/chess-showcase.kC8dXLKY.js +0 -1
  216. package/dist/serve/site-ui/_astro/chess-source-explorer.C5k9c5yK.js +0 -1
  217. package/dist/serve/site-ui/_astro/chess-v2.CFHmd3UL.js +0 -354
  218. package/dist/serve/site-ui/_astro/index.DzVde04M.js +0 -1
  219. package/dist/serve/site-ui/_astro/jsx-runtime.D_zvdyIk.js +0 -9
  220. package/dist/serve/site-ui/_astro/reads.BYBRLbsE.js +0 -1
  221. package/dist/serve/site-ui/_astro/sandbox-controls.C9Aaazt8.js +0 -1252
  222. package/dist/serve/site-ui/_astro/seed.DANAIyRw.js +0 -20
  223. package/dist/serve/site-ui/examples/firestore-first-write/index.html +0 -2
@@ -54,7 +54,7 @@ Every page below is also served as raw markdown at the linked `.md` URL.
54
54
 
55
55
  ## Work with an agent
56
56
 
57
- - [Connect an agent to the sandbox](/__pyric/ui/docs/agent/set-up-your-agent.md): Connect Claude Code, Cursor, Codex, or any MCP client to your backend in minutes.
57
+ - [Connect an agent to the sandbox](/__pyric/ui/docs/agent/set-up-your-agent.md): Connect Claude Code, Cursor, Codex, Antigravity CLI, OpenCode, or any MCP client to your backend in minutes.
58
58
  - [Work with an agent in the browser sandbox](/__pyric/ui/docs/agent/work-with-an-agent.md): Give a local coding agent real backend tasks and watch it inspect, change, and verify the same browser sandbox as your app.
59
59
  - [Watch your agent in Pyric Studio](/__pyric/ui/docs/agent/watch-and-review.md): See every operation your agent performs, live, with the verdict that decided it.
60
60
 
@@ -66,7 +66,7 @@ Every page below is also served as raw markdown at the linked `.md` URL.
66
66
 
67
67
  ## Conformance
68
68
 
69
- - [Public API coverage](/__pyric/ui/docs/conformance-scores.md): This is the share of Firebase's public API that Pyric supports. Not-implemented-yet, deprecated, and deferred APIs still count against the total. How does Pyric know it works like Firebase? explains the evidence and its limits.
69
+ - [Conformance scores](/__pyric/ui/docs/conformance-scores.md): Mirror services measure the share of Firebase's public API that Pyric supports. Rules engines measure production-verified rules-language constructs. Not-implemented-yet, deprecated, deferred, and unverified items remain in their respective denominators. Overall combines only the public API rows. How does Pyric know it works like Firebase? explains the evidence and its limits.
70
70
  - [How does Pyric know it works like Firebase?](/__pyric/ui/docs/trust/how-we-know-it-matches-firebase.md): See the production evidence behind Pyric's conformance claims, the gaps those claims leave open, and the checks to make before shipping.
71
71
  - [pyric/app compatibility matrix](/__pyric/ui/docs/app-compat.md): <div class="compat-stat"> <p class="compat-stat-figure"> <span class="compat-stat-pct">81.3%</span> <span class="compat-stat-label">of the public API supported</span> </p> <div class="compat-meters"> <span class="compat-meter-track"><span class="compat-meter-fill" style="width: 81.3%"></span></span> </div> <p class="compat-stat-denom">13 of 16 public API</p> </div>
72
72
  - [pyric/ai compatibility matrix](/__pyric/ui/docs/ai-compat.md): <div class="compat-stat"> <p class="compat-stat-figure"> <span class="compat-stat-pct">67.1%</span> <span class="compat-stat-label">of the public API supported</span> </p> <div class="compat-meters"> <span class="compat-meter-track"><span class="compat-meter-fill" style="width: 67.1%"></span></span> </div> <p class="compat-stat-denom">147 of 219 public API</p> </div>
@@ -3,8 +3,8 @@
3
3
  localStorage.setItem('pyric-studio:theme', 'dark');
4
4
  } catch {}
5
5
  document.documentElement.setAttribute('data-theme', 'dark');
6
- </script><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet"><link rel="stylesheet" href="/__pyric/ui/_astro/_studio_.B6b_G1ev.css">
7
- <link rel="stylesheet" href="/__pyric/ui/_astro/app.BsFsMjn0.css"></head> <body> <div id="root" data-astro-cid-w5sm6wlz> <style>astro-island,astro-slot,astro-static-slot{display:contents}</style><script>(()=>{var e=async t=>{await(await t())()};(self.Astro||(self.Astro={})).only=e;window.dispatchEvent(new Event("astro:only"));})();</script><script>(()=>{var A=Object.defineProperty;var g=(i,o,a)=>o in i?A(i,o,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[o]=a;var d=(i,o,a)=>g(i,typeof o!="symbol"?o+"":o,a);{let i={0:t=>m(t),1:t=>a(t),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(a(t)),5:t=>new Set(a(t)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(t),9:t=>new Uint16Array(t),10:t=>new Uint32Array(t),11:t=>1/0*t},o=t=>{let[l,e]=t;return l in i?i[l](e):void 0},a=t=>t.map(o),m=t=>typeof t!="object"||t===null?t:Object.fromEntries(Object.entries(t).map(([l,e])=>[l,o(e)]));class y extends HTMLElement{constructor(){super(...arguments);d(this,"Component");d(this,"hydrator");d(this,"hydrate",async()=>{var b;if(!this.hydrator||!this.isConnected)return;let e=(b=this.parentElement)==null?void 0:b.closest("astro-island[ssr]");if(e){e.addEventListener("astro:hydrate",this.hydrate,{once:!0});return}let c=this.querySelectorAll("astro-slot"),n={},h=this.querySelectorAll("template[data-astro-template]");for(let r of h){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("data-astro-template")||"default"]=r.innerHTML,r.remove())}for(let r of c){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("name")||"default"]=r.innerHTML)}let p;try{p=this.hasAttribute("props")?m(JSON.parse(this.getAttribute("props"))):{}}catch(r){let s=this.getAttribute("component-url")||"<unknown>",v=this.getAttribute("component-export");throw v&&(s+=` (export ${v})`),console.error(`[hydrate] Error parsing props for component ${s}`,this.getAttribute("props"),r),r}let u;await this.hydrator(this)(this.Component,p,n,{client:this.getAttribute("client")}),this.removeAttribute("ssr"),this.dispatchEvent(new CustomEvent("astro:hydrate"))});d(this,"unmount",()=>{this.isConnected||this.dispatchEvent(new CustomEvent("astro:unmount"))})}disconnectedCallback(){document.removeEventListener("astro:after-swap",this.unmount),document.addEventListener("astro:after-swap",this.unmount,{once:!0})}connectedCallback(){if(!this.hasAttribute("await-children")||document.readyState==="interactive"||document.readyState==="complete")this.childrenConnectedCallback();else{let e=()=>{document.removeEventListener("DOMContentLoaded",e),c.disconnect(),this.childrenConnectedCallback()},c=new MutationObserver(()=>{var n;((n=this.lastChild)==null?void 0:n.nodeType)===Node.COMMENT_NODE&&this.lastChild.nodeValue==="astro:end"&&(this.lastChild.remove(),e())});c.observe(this,{childList:!0}),document.addEventListener("DOMContentLoaded",e)}}async childrenConnectedCallback(){let e=this.getAttribute("before-hydration-url");e&&await import(e),this.start()}async start(){let e=JSON.parse(this.getAttribute("opts")),c=this.getAttribute("client");if(Astro[c]===void 0){window.addEventListener(`astro:${c}`,()=>this.start(),{once:!0});return}try{await Astro[c](async()=>{let n=this.getAttribute("renderer-url"),[h,{default:p}]=await Promise.all([import(this.getAttribute("component-url")),n?import(n):()=>()=>{}]),u=this.getAttribute("component-export")||"default";if(!u.includes("."))this.Component=h[u];else{this.Component=h;for(let f of u.split("."))this.Component=this.Component[f]}return this.hydrator=p,this.hydrate},e,this)}catch(n){console.error(`[astro-island] Error hydrating ${this.getAttribute("component-url")}`,n)}}attributeChangedCallback(){this.hydrate()}}d(y,"observedAttributes",["props"]),customElements.get("astro-island")||customElements.define("astro-island",y)}})();</script><astro-island uid="b1btC" component-url="/__pyric/ui/_astro/app.t6u-adB_.js" component-export="StudioApp" renderer-url="/__pyric/ui/_astro/client.D2ORs4B-.js" props="{&quot;data-astro-cid-w5sm6wlz&quot;:[0,true]}" ssr client="only" opts="{&quot;name&quot;:&quot;StudioApp&quot;,&quot;value&quot;:&quot;react&quot;}" await-children><p class="studio-loading" aria-live="polite" data-astro-cid-w5sm6wlz>
6
+ </script><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet"><link rel="stylesheet" href="/__pyric/ui/_astro/_studio_.CfxiQWkk.css">
7
+ <link rel="stylesheet" href="/__pyric/ui/_astro/app.BsFsMjn0.css"></head> <body> <div id="root" data-astro-cid-w5sm6wlz> <style>astro-island,astro-slot,astro-static-slot{display:contents}</style><script>(()=>{var e=async t=>{await(await t())()};(self.Astro||(self.Astro={})).only=e;window.dispatchEvent(new Event("astro:only"));})();</script><script>(()=>{var A=Object.defineProperty;var g=(i,o,a)=>o in i?A(i,o,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[o]=a;var d=(i,o,a)=>g(i,typeof o!="symbol"?o+"":o,a);{let i={0:t=>m(t),1:t=>a(t),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(a(t)),5:t=>new Set(a(t)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(t),9:t=>new Uint16Array(t),10:t=>new Uint32Array(t),11:t=>1/0*t},o=t=>{let[l,e]=t;return l in i?i[l](e):void 0},a=t=>t.map(o),m=t=>typeof t!="object"||t===null?t:Object.fromEntries(Object.entries(t).map(([l,e])=>[l,o(e)]));class y extends HTMLElement{constructor(){super(...arguments);d(this,"Component");d(this,"hydrator");d(this,"hydrate",async()=>{var b;if(!this.hydrator||!this.isConnected)return;let e=(b=this.parentElement)==null?void 0:b.closest("astro-island[ssr]");if(e){e.addEventListener("astro:hydrate",this.hydrate,{once:!0});return}let c=this.querySelectorAll("astro-slot"),n={},h=this.querySelectorAll("template[data-astro-template]");for(let r of h){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("data-astro-template")||"default"]=r.innerHTML,r.remove())}for(let r of c){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("name")||"default"]=r.innerHTML)}let p;try{p=this.hasAttribute("props")?m(JSON.parse(this.getAttribute("props"))):{}}catch(r){let s=this.getAttribute("component-url")||"<unknown>",v=this.getAttribute("component-export");throw v&&(s+=` (export ${v})`),console.error(`[hydrate] Error parsing props for component ${s}`,this.getAttribute("props"),r),r}let u;await this.hydrator(this)(this.Component,p,n,{client:this.getAttribute("client")}),this.removeAttribute("ssr"),this.dispatchEvent(new CustomEvent("astro:hydrate"))});d(this,"unmount",()=>{this.isConnected||this.dispatchEvent(new CustomEvent("astro:unmount"))})}disconnectedCallback(){document.removeEventListener("astro:after-swap",this.unmount),document.addEventListener("astro:after-swap",this.unmount,{once:!0})}connectedCallback(){if(!this.hasAttribute("await-children")||document.readyState==="interactive"||document.readyState==="complete")this.childrenConnectedCallback();else{let e=()=>{document.removeEventListener("DOMContentLoaded",e),c.disconnect(),this.childrenConnectedCallback()},c=new MutationObserver(()=>{var n;((n=this.lastChild)==null?void 0:n.nodeType)===Node.COMMENT_NODE&&this.lastChild.nodeValue==="astro:end"&&(this.lastChild.remove(),e())});c.observe(this,{childList:!0}),document.addEventListener("DOMContentLoaded",e)}}async childrenConnectedCallback(){let e=this.getAttribute("before-hydration-url");e&&await import(e),this.start()}async start(){let e=JSON.parse(this.getAttribute("opts")),c=this.getAttribute("client");if(Astro[c]===void 0){window.addEventListener(`astro:${c}`,()=>this.start(),{once:!0});return}try{await Astro[c](async()=>{let n=this.getAttribute("renderer-url"),[h,{default:p}]=await Promise.all([import(this.getAttribute("component-url")),n?import(n):()=>()=>{}]),u=this.getAttribute("component-export")||"default";if(!u.includes("."))this.Component=h[u];else{this.Component=h;for(let f of u.split("."))this.Component=this.Component[f]}return this.hydrator=p,this.hydrate},e,this)}catch(n){console.error(`[astro-island] Error hydrating ${this.getAttribute("component-url")}`,n)}}attributeChangedCallback(){this.hydrate()}}d(y,"observedAttributes",["props"]),customElements.get("astro-island")||customElements.define("astro-island",y)}})();</script><astro-island uid="b1btC" component-url="/__pyric/ui/_astro/app.Ce3MTLQm.js" component-export="StudioApp" renderer-url="/__pyric/ui/_astro/client.D2ORs4B-.js" props="{&quot;data-astro-cid-w5sm6wlz&quot;:[0,true]}" ssr client="only" opts="{&quot;name&quot;:&quot;StudioApp&quot;,&quot;value&quot;:&quot;react&quot;}" await-children><p class="studio-loading" aria-live="polite" data-astro-cid-w5sm6wlz>
8
8
  Starting Pyric Studio…
9
9
  </p><template data-astro-template="fallback"><p class="studio-loading" aria-live="polite" data-astro-cid-w5sm6wlz>
10
10
  Starting Pyric Studio…
@@ -3,8 +3,8 @@
3
3
  localStorage.setItem('pyric-studio:theme', 'dark');
4
4
  } catch {}
5
5
  document.documentElement.setAttribute('data-theme', 'dark');
6
- </script><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet"><link rel="stylesheet" href="/__pyric/ui/_astro/_studio_.B6b_G1ev.css">
7
- <link rel="stylesheet" href="/__pyric/ui/_astro/app.BsFsMjn0.css"></head> <body> <div id="root" data-astro-cid-w5sm6wlz> <style>astro-island,astro-slot,astro-static-slot{display:contents}</style><script>(()=>{var e=async t=>{await(await t())()};(self.Astro||(self.Astro={})).only=e;window.dispatchEvent(new Event("astro:only"));})();</script><script>(()=>{var A=Object.defineProperty;var g=(i,o,a)=>o in i?A(i,o,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[o]=a;var d=(i,o,a)=>g(i,typeof o!="symbol"?o+"":o,a);{let i={0:t=>m(t),1:t=>a(t),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(a(t)),5:t=>new Set(a(t)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(t),9:t=>new Uint16Array(t),10:t=>new Uint32Array(t),11:t=>1/0*t},o=t=>{let[l,e]=t;return l in i?i[l](e):void 0},a=t=>t.map(o),m=t=>typeof t!="object"||t===null?t:Object.fromEntries(Object.entries(t).map(([l,e])=>[l,o(e)]));class y extends HTMLElement{constructor(){super(...arguments);d(this,"Component");d(this,"hydrator");d(this,"hydrate",async()=>{var b;if(!this.hydrator||!this.isConnected)return;let e=(b=this.parentElement)==null?void 0:b.closest("astro-island[ssr]");if(e){e.addEventListener("astro:hydrate",this.hydrate,{once:!0});return}let c=this.querySelectorAll("astro-slot"),n={},h=this.querySelectorAll("template[data-astro-template]");for(let r of h){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("data-astro-template")||"default"]=r.innerHTML,r.remove())}for(let r of c){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("name")||"default"]=r.innerHTML)}let p;try{p=this.hasAttribute("props")?m(JSON.parse(this.getAttribute("props"))):{}}catch(r){let s=this.getAttribute("component-url")||"<unknown>",v=this.getAttribute("component-export");throw v&&(s+=` (export ${v})`),console.error(`[hydrate] Error parsing props for component ${s}`,this.getAttribute("props"),r),r}let u;await this.hydrator(this)(this.Component,p,n,{client:this.getAttribute("client")}),this.removeAttribute("ssr"),this.dispatchEvent(new CustomEvent("astro:hydrate"))});d(this,"unmount",()=>{this.isConnected||this.dispatchEvent(new CustomEvent("astro:unmount"))})}disconnectedCallback(){document.removeEventListener("astro:after-swap",this.unmount),document.addEventListener("astro:after-swap",this.unmount,{once:!0})}connectedCallback(){if(!this.hasAttribute("await-children")||document.readyState==="interactive"||document.readyState==="complete")this.childrenConnectedCallback();else{let e=()=>{document.removeEventListener("DOMContentLoaded",e),c.disconnect(),this.childrenConnectedCallback()},c=new MutationObserver(()=>{var n;((n=this.lastChild)==null?void 0:n.nodeType)===Node.COMMENT_NODE&&this.lastChild.nodeValue==="astro:end"&&(this.lastChild.remove(),e())});c.observe(this,{childList:!0}),document.addEventListener("DOMContentLoaded",e)}}async childrenConnectedCallback(){let e=this.getAttribute("before-hydration-url");e&&await import(e),this.start()}async start(){let e=JSON.parse(this.getAttribute("opts")),c=this.getAttribute("client");if(Astro[c]===void 0){window.addEventListener(`astro:${c}`,()=>this.start(),{once:!0});return}try{await Astro[c](async()=>{let n=this.getAttribute("renderer-url"),[h,{default:p}]=await Promise.all([import(this.getAttribute("component-url")),n?import(n):()=>()=>{}]),u=this.getAttribute("component-export")||"default";if(!u.includes("."))this.Component=h[u];else{this.Component=h;for(let f of u.split("."))this.Component=this.Component[f]}return this.hydrator=p,this.hydrate},e,this)}catch(n){console.error(`[astro-island] Error hydrating ${this.getAttribute("component-url")}`,n)}}attributeChangedCallback(){this.hydrate()}}d(y,"observedAttributes",["props"]),customElements.get("astro-island")||customElements.define("astro-island",y)}})();</script><astro-island uid="b1btC" component-url="/__pyric/ui/_astro/app.t6u-adB_.js" component-export="StudioApp" renderer-url="/__pyric/ui/_astro/client.D2ORs4B-.js" props="{&quot;data-astro-cid-w5sm6wlz&quot;:[0,true]}" ssr client="only" opts="{&quot;name&quot;:&quot;StudioApp&quot;,&quot;value&quot;:&quot;react&quot;}" await-children><p class="studio-loading" aria-live="polite" data-astro-cid-w5sm6wlz>
6
+ </script><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet"><link rel="stylesheet" href="/__pyric/ui/_astro/_studio_.CfxiQWkk.css">
7
+ <link rel="stylesheet" href="/__pyric/ui/_astro/app.BsFsMjn0.css"></head> <body> <div id="root" data-astro-cid-w5sm6wlz> <style>astro-island,astro-slot,astro-static-slot{display:contents}</style><script>(()=>{var e=async t=>{await(await t())()};(self.Astro||(self.Astro={})).only=e;window.dispatchEvent(new Event("astro:only"));})();</script><script>(()=>{var A=Object.defineProperty;var g=(i,o,a)=>o in i?A(i,o,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[o]=a;var d=(i,o,a)=>g(i,typeof o!="symbol"?o+"":o,a);{let i={0:t=>m(t),1:t=>a(t),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(a(t)),5:t=>new Set(a(t)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(t),9:t=>new Uint16Array(t),10:t=>new Uint32Array(t),11:t=>1/0*t},o=t=>{let[l,e]=t;return l in i?i[l](e):void 0},a=t=>t.map(o),m=t=>typeof t!="object"||t===null?t:Object.fromEntries(Object.entries(t).map(([l,e])=>[l,o(e)]));class y extends HTMLElement{constructor(){super(...arguments);d(this,"Component");d(this,"hydrator");d(this,"hydrate",async()=>{var b;if(!this.hydrator||!this.isConnected)return;let e=(b=this.parentElement)==null?void 0:b.closest("astro-island[ssr]");if(e){e.addEventListener("astro:hydrate",this.hydrate,{once:!0});return}let c=this.querySelectorAll("astro-slot"),n={},h=this.querySelectorAll("template[data-astro-template]");for(let r of h){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("data-astro-template")||"default"]=r.innerHTML,r.remove())}for(let r of c){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("name")||"default"]=r.innerHTML)}let p;try{p=this.hasAttribute("props")?m(JSON.parse(this.getAttribute("props"))):{}}catch(r){let s=this.getAttribute("component-url")||"<unknown>",v=this.getAttribute("component-export");throw v&&(s+=` (export ${v})`),console.error(`[hydrate] Error parsing props for component ${s}`,this.getAttribute("props"),r),r}let u;await this.hydrator(this)(this.Component,p,n,{client:this.getAttribute("client")}),this.removeAttribute("ssr"),this.dispatchEvent(new CustomEvent("astro:hydrate"))});d(this,"unmount",()=>{this.isConnected||this.dispatchEvent(new CustomEvent("astro:unmount"))})}disconnectedCallback(){document.removeEventListener("astro:after-swap",this.unmount),document.addEventListener("astro:after-swap",this.unmount,{once:!0})}connectedCallback(){if(!this.hasAttribute("await-children")||document.readyState==="interactive"||document.readyState==="complete")this.childrenConnectedCallback();else{let e=()=>{document.removeEventListener("DOMContentLoaded",e),c.disconnect(),this.childrenConnectedCallback()},c=new MutationObserver(()=>{var n;((n=this.lastChild)==null?void 0:n.nodeType)===Node.COMMENT_NODE&&this.lastChild.nodeValue==="astro:end"&&(this.lastChild.remove(),e())});c.observe(this,{childList:!0}),document.addEventListener("DOMContentLoaded",e)}}async childrenConnectedCallback(){let e=this.getAttribute("before-hydration-url");e&&await import(e),this.start()}async start(){let e=JSON.parse(this.getAttribute("opts")),c=this.getAttribute("client");if(Astro[c]===void 0){window.addEventListener(`astro:${c}`,()=>this.start(),{once:!0});return}try{await Astro[c](async()=>{let n=this.getAttribute("renderer-url"),[h,{default:p}]=await Promise.all([import(this.getAttribute("component-url")),n?import(n):()=>()=>{}]),u=this.getAttribute("component-export")||"default";if(!u.includes("."))this.Component=h[u];else{this.Component=h;for(let f of u.split("."))this.Component=this.Component[f]}return this.hydrator=p,this.hydrate},e,this)}catch(n){console.error(`[astro-island] Error hydrating ${this.getAttribute("component-url")}`,n)}}attributeChangedCallback(){this.hydrate()}}d(y,"observedAttributes",["props"]),customElements.get("astro-island")||customElements.define("astro-island",y)}})();</script><astro-island uid="b1btC" component-url="/__pyric/ui/_astro/app.Ce3MTLQm.js" component-export="StudioApp" renderer-url="/__pyric/ui/_astro/client.D2ORs4B-.js" props="{&quot;data-astro-cid-w5sm6wlz&quot;:[0,true]}" ssr client="only" opts="{&quot;name&quot;:&quot;StudioApp&quot;,&quot;value&quot;:&quot;react&quot;}" await-children><p class="studio-loading" aria-live="polite" data-astro-cid-w5sm6wlz>
8
8
  Starting Pyric Studio…
9
9
  </p><template data-astro-template="fallback"><p class="studio-loading" aria-live="polite" data-astro-cid-w5sm6wlz>
10
10
  Starting Pyric Studio…
@@ -3,8 +3,8 @@
3
3
  localStorage.setItem('pyric-studio:theme', 'dark');
4
4
  } catch {}
5
5
  document.documentElement.setAttribute('data-theme', 'dark');
6
- </script><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet"><link rel="stylesheet" href="/__pyric/ui/_astro/_studio_.B6b_G1ev.css">
7
- <link rel="stylesheet" href="/__pyric/ui/_astro/app.BsFsMjn0.css"></head> <body> <div id="root" data-astro-cid-w5sm6wlz> <style>astro-island,astro-slot,astro-static-slot{display:contents}</style><script>(()=>{var e=async t=>{await(await t())()};(self.Astro||(self.Astro={})).only=e;window.dispatchEvent(new Event("astro:only"));})();</script><script>(()=>{var A=Object.defineProperty;var g=(i,o,a)=>o in i?A(i,o,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[o]=a;var d=(i,o,a)=>g(i,typeof o!="symbol"?o+"":o,a);{let i={0:t=>m(t),1:t=>a(t),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(a(t)),5:t=>new Set(a(t)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(t),9:t=>new Uint16Array(t),10:t=>new Uint32Array(t),11:t=>1/0*t},o=t=>{let[l,e]=t;return l in i?i[l](e):void 0},a=t=>t.map(o),m=t=>typeof t!="object"||t===null?t:Object.fromEntries(Object.entries(t).map(([l,e])=>[l,o(e)]));class y extends HTMLElement{constructor(){super(...arguments);d(this,"Component");d(this,"hydrator");d(this,"hydrate",async()=>{var b;if(!this.hydrator||!this.isConnected)return;let e=(b=this.parentElement)==null?void 0:b.closest("astro-island[ssr]");if(e){e.addEventListener("astro:hydrate",this.hydrate,{once:!0});return}let c=this.querySelectorAll("astro-slot"),n={},h=this.querySelectorAll("template[data-astro-template]");for(let r of h){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("data-astro-template")||"default"]=r.innerHTML,r.remove())}for(let r of c){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("name")||"default"]=r.innerHTML)}let p;try{p=this.hasAttribute("props")?m(JSON.parse(this.getAttribute("props"))):{}}catch(r){let s=this.getAttribute("component-url")||"<unknown>",v=this.getAttribute("component-export");throw v&&(s+=` (export ${v})`),console.error(`[hydrate] Error parsing props for component ${s}`,this.getAttribute("props"),r),r}let u;await this.hydrator(this)(this.Component,p,n,{client:this.getAttribute("client")}),this.removeAttribute("ssr"),this.dispatchEvent(new CustomEvent("astro:hydrate"))});d(this,"unmount",()=>{this.isConnected||this.dispatchEvent(new CustomEvent("astro:unmount"))})}disconnectedCallback(){document.removeEventListener("astro:after-swap",this.unmount),document.addEventListener("astro:after-swap",this.unmount,{once:!0})}connectedCallback(){if(!this.hasAttribute("await-children")||document.readyState==="interactive"||document.readyState==="complete")this.childrenConnectedCallback();else{let e=()=>{document.removeEventListener("DOMContentLoaded",e),c.disconnect(),this.childrenConnectedCallback()},c=new MutationObserver(()=>{var n;((n=this.lastChild)==null?void 0:n.nodeType)===Node.COMMENT_NODE&&this.lastChild.nodeValue==="astro:end"&&(this.lastChild.remove(),e())});c.observe(this,{childList:!0}),document.addEventListener("DOMContentLoaded",e)}}async childrenConnectedCallback(){let e=this.getAttribute("before-hydration-url");e&&await import(e),this.start()}async start(){let e=JSON.parse(this.getAttribute("opts")),c=this.getAttribute("client");if(Astro[c]===void 0){window.addEventListener(`astro:${c}`,()=>this.start(),{once:!0});return}try{await Astro[c](async()=>{let n=this.getAttribute("renderer-url"),[h,{default:p}]=await Promise.all([import(this.getAttribute("component-url")),n?import(n):()=>()=>{}]),u=this.getAttribute("component-export")||"default";if(!u.includes("."))this.Component=h[u];else{this.Component=h;for(let f of u.split("."))this.Component=this.Component[f]}return this.hydrator=p,this.hydrate},e,this)}catch(n){console.error(`[astro-island] Error hydrating ${this.getAttribute("component-url")}`,n)}}attributeChangedCallback(){this.hydrate()}}d(y,"observedAttributes",["props"]),customElements.get("astro-island")||customElements.define("astro-island",y)}})();</script><astro-island uid="b1btC" component-url="/__pyric/ui/_astro/app.t6u-adB_.js" component-export="StudioApp" renderer-url="/__pyric/ui/_astro/client.D2ORs4B-.js" props="{&quot;data-astro-cid-w5sm6wlz&quot;:[0,true]}" ssr client="only" opts="{&quot;name&quot;:&quot;StudioApp&quot;,&quot;value&quot;:&quot;react&quot;}" await-children><p class="studio-loading" aria-live="polite" data-astro-cid-w5sm6wlz>
6
+ </script><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet"><link rel="stylesheet" href="/__pyric/ui/_astro/_studio_.CfxiQWkk.css">
7
+ <link rel="stylesheet" href="/__pyric/ui/_astro/app.BsFsMjn0.css"></head> <body> <div id="root" data-astro-cid-w5sm6wlz> <style>astro-island,astro-slot,astro-static-slot{display:contents}</style><script>(()=>{var e=async t=>{await(await t())()};(self.Astro||(self.Astro={})).only=e;window.dispatchEvent(new Event("astro:only"));})();</script><script>(()=>{var A=Object.defineProperty;var g=(i,o,a)=>o in i?A(i,o,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[o]=a;var d=(i,o,a)=>g(i,typeof o!="symbol"?o+"":o,a);{let i={0:t=>m(t),1:t=>a(t),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(a(t)),5:t=>new Set(a(t)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(t),9:t=>new Uint16Array(t),10:t=>new Uint32Array(t),11:t=>1/0*t},o=t=>{let[l,e]=t;return l in i?i[l](e):void 0},a=t=>t.map(o),m=t=>typeof t!="object"||t===null?t:Object.fromEntries(Object.entries(t).map(([l,e])=>[l,o(e)]));class y extends HTMLElement{constructor(){super(...arguments);d(this,"Component");d(this,"hydrator");d(this,"hydrate",async()=>{var b;if(!this.hydrator||!this.isConnected)return;let e=(b=this.parentElement)==null?void 0:b.closest("astro-island[ssr]");if(e){e.addEventListener("astro:hydrate",this.hydrate,{once:!0});return}let c=this.querySelectorAll("astro-slot"),n={},h=this.querySelectorAll("template[data-astro-template]");for(let r of h){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("data-astro-template")||"default"]=r.innerHTML,r.remove())}for(let r of c){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("name")||"default"]=r.innerHTML)}let p;try{p=this.hasAttribute("props")?m(JSON.parse(this.getAttribute("props"))):{}}catch(r){let s=this.getAttribute("component-url")||"<unknown>",v=this.getAttribute("component-export");throw v&&(s+=` (export ${v})`),console.error(`[hydrate] Error parsing props for component ${s}`,this.getAttribute("props"),r),r}let u;await this.hydrator(this)(this.Component,p,n,{client:this.getAttribute("client")}),this.removeAttribute("ssr"),this.dispatchEvent(new CustomEvent("astro:hydrate"))});d(this,"unmount",()=>{this.isConnected||this.dispatchEvent(new CustomEvent("astro:unmount"))})}disconnectedCallback(){document.removeEventListener("astro:after-swap",this.unmount),document.addEventListener("astro:after-swap",this.unmount,{once:!0})}connectedCallback(){if(!this.hasAttribute("await-children")||document.readyState==="interactive"||document.readyState==="complete")this.childrenConnectedCallback();else{let e=()=>{document.removeEventListener("DOMContentLoaded",e),c.disconnect(),this.childrenConnectedCallback()},c=new MutationObserver(()=>{var n;((n=this.lastChild)==null?void 0:n.nodeType)===Node.COMMENT_NODE&&this.lastChild.nodeValue==="astro:end"&&(this.lastChild.remove(),e())});c.observe(this,{childList:!0}),document.addEventListener("DOMContentLoaded",e)}}async childrenConnectedCallback(){let e=this.getAttribute("before-hydration-url");e&&await import(e),this.start()}async start(){let e=JSON.parse(this.getAttribute("opts")),c=this.getAttribute("client");if(Astro[c]===void 0){window.addEventListener(`astro:${c}`,()=>this.start(),{once:!0});return}try{await Astro[c](async()=>{let n=this.getAttribute("renderer-url"),[h,{default:p}]=await Promise.all([import(this.getAttribute("component-url")),n?import(n):()=>()=>{}]),u=this.getAttribute("component-export")||"default";if(!u.includes("."))this.Component=h[u];else{this.Component=h;for(let f of u.split("."))this.Component=this.Component[f]}return this.hydrator=p,this.hydrate},e,this)}catch(n){console.error(`[astro-island] Error hydrating ${this.getAttribute("component-url")}`,n)}}attributeChangedCallback(){this.hydrate()}}d(y,"observedAttributes",["props"]),customElements.get("astro-island")||customElements.define("astro-island",y)}})();</script><astro-island uid="b1btC" component-url="/__pyric/ui/_astro/app.Ce3MTLQm.js" component-export="StudioApp" renderer-url="/__pyric/ui/_astro/client.D2ORs4B-.js" props="{&quot;data-astro-cid-w5sm6wlz&quot;:[0,true]}" ssr client="only" opts="{&quot;name&quot;:&quot;StudioApp&quot;,&quot;value&quot;:&quot;react&quot;}" await-children><p class="studio-loading" aria-live="polite" data-astro-cid-w5sm6wlz>
8
8
  Starting Pyric Studio…
9
9
  </p><template data-astro-template="fallback"><p class="studio-loading" aria-live="polite" data-astro-cid-w5sm6wlz>
10
10
  Starting Pyric Studio…
@@ -3,8 +3,8 @@
3
3
  localStorage.setItem('pyric-studio:theme', 'dark');
4
4
  } catch {}
5
5
  document.documentElement.setAttribute('data-theme', 'dark');
6
- </script><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet"><link rel="stylesheet" href="/__pyric/ui/_astro/_studio_.B6b_G1ev.css">
7
- <link rel="stylesheet" href="/__pyric/ui/_astro/app.BsFsMjn0.css"></head> <body> <div id="root" data-astro-cid-w5sm6wlz> <style>astro-island,astro-slot,astro-static-slot{display:contents}</style><script>(()=>{var e=async t=>{await(await t())()};(self.Astro||(self.Astro={})).only=e;window.dispatchEvent(new Event("astro:only"));})();</script><script>(()=>{var A=Object.defineProperty;var g=(i,o,a)=>o in i?A(i,o,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[o]=a;var d=(i,o,a)=>g(i,typeof o!="symbol"?o+"":o,a);{let i={0:t=>m(t),1:t=>a(t),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(a(t)),5:t=>new Set(a(t)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(t),9:t=>new Uint16Array(t),10:t=>new Uint32Array(t),11:t=>1/0*t},o=t=>{let[l,e]=t;return l in i?i[l](e):void 0},a=t=>t.map(o),m=t=>typeof t!="object"||t===null?t:Object.fromEntries(Object.entries(t).map(([l,e])=>[l,o(e)]));class y extends HTMLElement{constructor(){super(...arguments);d(this,"Component");d(this,"hydrator");d(this,"hydrate",async()=>{var b;if(!this.hydrator||!this.isConnected)return;let e=(b=this.parentElement)==null?void 0:b.closest("astro-island[ssr]");if(e){e.addEventListener("astro:hydrate",this.hydrate,{once:!0});return}let c=this.querySelectorAll("astro-slot"),n={},h=this.querySelectorAll("template[data-astro-template]");for(let r of h){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("data-astro-template")||"default"]=r.innerHTML,r.remove())}for(let r of c){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("name")||"default"]=r.innerHTML)}let p;try{p=this.hasAttribute("props")?m(JSON.parse(this.getAttribute("props"))):{}}catch(r){let s=this.getAttribute("component-url")||"<unknown>",v=this.getAttribute("component-export");throw v&&(s+=` (export ${v})`),console.error(`[hydrate] Error parsing props for component ${s}`,this.getAttribute("props"),r),r}let u;await this.hydrator(this)(this.Component,p,n,{client:this.getAttribute("client")}),this.removeAttribute("ssr"),this.dispatchEvent(new CustomEvent("astro:hydrate"))});d(this,"unmount",()=>{this.isConnected||this.dispatchEvent(new CustomEvent("astro:unmount"))})}disconnectedCallback(){document.removeEventListener("astro:after-swap",this.unmount),document.addEventListener("astro:after-swap",this.unmount,{once:!0})}connectedCallback(){if(!this.hasAttribute("await-children")||document.readyState==="interactive"||document.readyState==="complete")this.childrenConnectedCallback();else{let e=()=>{document.removeEventListener("DOMContentLoaded",e),c.disconnect(),this.childrenConnectedCallback()},c=new MutationObserver(()=>{var n;((n=this.lastChild)==null?void 0:n.nodeType)===Node.COMMENT_NODE&&this.lastChild.nodeValue==="astro:end"&&(this.lastChild.remove(),e())});c.observe(this,{childList:!0}),document.addEventListener("DOMContentLoaded",e)}}async childrenConnectedCallback(){let e=this.getAttribute("before-hydration-url");e&&await import(e),this.start()}async start(){let e=JSON.parse(this.getAttribute("opts")),c=this.getAttribute("client");if(Astro[c]===void 0){window.addEventListener(`astro:${c}`,()=>this.start(),{once:!0});return}try{await Astro[c](async()=>{let n=this.getAttribute("renderer-url"),[h,{default:p}]=await Promise.all([import(this.getAttribute("component-url")),n?import(n):()=>()=>{}]),u=this.getAttribute("component-export")||"default";if(!u.includes("."))this.Component=h[u];else{this.Component=h;for(let f of u.split("."))this.Component=this.Component[f]}return this.hydrator=p,this.hydrate},e,this)}catch(n){console.error(`[astro-island] Error hydrating ${this.getAttribute("component-url")}`,n)}}attributeChangedCallback(){this.hydrate()}}d(y,"observedAttributes",["props"]),customElements.get("astro-island")||customElements.define("astro-island",y)}})();</script><astro-island uid="b1btC" component-url="/__pyric/ui/_astro/app.t6u-adB_.js" component-export="StudioApp" renderer-url="/__pyric/ui/_astro/client.D2ORs4B-.js" props="{&quot;data-astro-cid-w5sm6wlz&quot;:[0,true]}" ssr client="only" opts="{&quot;name&quot;:&quot;StudioApp&quot;,&quot;value&quot;:&quot;react&quot;}" await-children><p class="studio-loading" aria-live="polite" data-astro-cid-w5sm6wlz>
6
+ </script><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet"><link rel="stylesheet" href="/__pyric/ui/_astro/_studio_.CfxiQWkk.css">
7
+ <link rel="stylesheet" href="/__pyric/ui/_astro/app.BsFsMjn0.css"></head> <body> <div id="root" data-astro-cid-w5sm6wlz> <style>astro-island,astro-slot,astro-static-slot{display:contents}</style><script>(()=>{var e=async t=>{await(await t())()};(self.Astro||(self.Astro={})).only=e;window.dispatchEvent(new Event("astro:only"));})();</script><script>(()=>{var A=Object.defineProperty;var g=(i,o,a)=>o in i?A(i,o,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[o]=a;var d=(i,o,a)=>g(i,typeof o!="symbol"?o+"":o,a);{let i={0:t=>m(t),1:t=>a(t),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(a(t)),5:t=>new Set(a(t)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(t),9:t=>new Uint16Array(t),10:t=>new Uint32Array(t),11:t=>1/0*t},o=t=>{let[l,e]=t;return l in i?i[l](e):void 0},a=t=>t.map(o),m=t=>typeof t!="object"||t===null?t:Object.fromEntries(Object.entries(t).map(([l,e])=>[l,o(e)]));class y extends HTMLElement{constructor(){super(...arguments);d(this,"Component");d(this,"hydrator");d(this,"hydrate",async()=>{var b;if(!this.hydrator||!this.isConnected)return;let e=(b=this.parentElement)==null?void 0:b.closest("astro-island[ssr]");if(e){e.addEventListener("astro:hydrate",this.hydrate,{once:!0});return}let c=this.querySelectorAll("astro-slot"),n={},h=this.querySelectorAll("template[data-astro-template]");for(let r of h){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("data-astro-template")||"default"]=r.innerHTML,r.remove())}for(let r of c){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("name")||"default"]=r.innerHTML)}let p;try{p=this.hasAttribute("props")?m(JSON.parse(this.getAttribute("props"))):{}}catch(r){let s=this.getAttribute("component-url")||"<unknown>",v=this.getAttribute("component-export");throw v&&(s+=` (export ${v})`),console.error(`[hydrate] Error parsing props for component ${s}`,this.getAttribute("props"),r),r}let u;await this.hydrator(this)(this.Component,p,n,{client:this.getAttribute("client")}),this.removeAttribute("ssr"),this.dispatchEvent(new CustomEvent("astro:hydrate"))});d(this,"unmount",()=>{this.isConnected||this.dispatchEvent(new CustomEvent("astro:unmount"))})}disconnectedCallback(){document.removeEventListener("astro:after-swap",this.unmount),document.addEventListener("astro:after-swap",this.unmount,{once:!0})}connectedCallback(){if(!this.hasAttribute("await-children")||document.readyState==="interactive"||document.readyState==="complete")this.childrenConnectedCallback();else{let e=()=>{document.removeEventListener("DOMContentLoaded",e),c.disconnect(),this.childrenConnectedCallback()},c=new MutationObserver(()=>{var n;((n=this.lastChild)==null?void 0:n.nodeType)===Node.COMMENT_NODE&&this.lastChild.nodeValue==="astro:end"&&(this.lastChild.remove(),e())});c.observe(this,{childList:!0}),document.addEventListener("DOMContentLoaded",e)}}async childrenConnectedCallback(){let e=this.getAttribute("before-hydration-url");e&&await import(e),this.start()}async start(){let e=JSON.parse(this.getAttribute("opts")),c=this.getAttribute("client");if(Astro[c]===void 0){window.addEventListener(`astro:${c}`,()=>this.start(),{once:!0});return}try{await Astro[c](async()=>{let n=this.getAttribute("renderer-url"),[h,{default:p}]=await Promise.all([import(this.getAttribute("component-url")),n?import(n):()=>()=>{}]),u=this.getAttribute("component-export")||"default";if(!u.includes("."))this.Component=h[u];else{this.Component=h;for(let f of u.split("."))this.Component=this.Component[f]}return this.hydrator=p,this.hydrate},e,this)}catch(n){console.error(`[astro-island] Error hydrating ${this.getAttribute("component-url")}`,n)}}attributeChangedCallback(){this.hydrate()}}d(y,"observedAttributes",["props"]),customElements.get("astro-island")||customElements.define("astro-island",y)}})();</script><astro-island uid="b1btC" component-url="/__pyric/ui/_astro/app.Ce3MTLQm.js" component-export="StudioApp" renderer-url="/__pyric/ui/_astro/client.D2ORs4B-.js" props="{&quot;data-astro-cid-w5sm6wlz&quot;:[0,true]}" ssr client="only" opts="{&quot;name&quot;:&quot;StudioApp&quot;,&quot;value&quot;:&quot;react&quot;}" await-children><p class="studio-loading" aria-live="polite" data-astro-cid-w5sm6wlz>
8
8
  Starting Pyric Studio…
9
9
  </p><template data-astro-template="fallback"><p class="studio-loading" aria-live="polite" data-astro-cid-w5sm6wlz>
10
10
  Starting Pyric Studio…
@@ -1 +1 @@
1
- {"version":3,"file":"vite-functions-development.d.ts","sourceRoot":"","sources":["../../src/serve/vite-functions-development.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EACL,iCAAiC,EAKlC,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,WAAW,+BAA+B;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,oBAAoB,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IAClC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;IAC9B,mFAAmF;IACnF,cAAc,CAAC,EAAE,OAAO,iCAAiC,CAAC;CAC3D;AAED,MAAM,WAAW,kCAAkC;IACjD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AA6ED,8EAA8E;AAC9E,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,+BAA+B,GACvC,kCAAkC,CAsFpC"}
1
+ {"version":3,"file":"vite-functions-development.d.ts","sourceRoot":"","sources":["../../src/serve/vite-functions-development.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EACL,iCAAiC,EAKlC,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,WAAW,+BAA+B;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,oBAAoB,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IAClC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;IAC9B,mFAAmF;IACnF,cAAc,CAAC,EAAE,OAAO,iCAAiC,CAAC;CAC3D;AAED,MAAM,WAAW,kCAAkC;IACjD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AA6ED,8EAA8E;AAC9E,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,+BAA+B,GACvC,kCAAkC,CAuFpC"}
@@ -83,6 +83,7 @@ export function attachViteFunctionsDevelopment(options) {
83
83
  registerUrl: options.registerUrl,
84
84
  instance: options.instance ?? `${options.projectId}-default-rtdb`,
85
85
  location: options.region ?? options.baseEnv.PYRIC_FUNCTIONS_RTDB_REGION ?? 'us-central1',
86
+ projectId: options.projectId,
86
87
  readiness: createInProcessFunctionsPeerReadiness(bridge.sandboxConnected),
87
88
  onEvent: (event) => reportEvent(options.logger, event),
88
89
  ...(options.childModuleUrl === undefined ? {} : { childModuleUrl: options.childModuleUrl }),
@@ -1 +1 @@
1
- {"version":3,"file":"vite-functions-development.js","sourceRoot":"","sources":["../../src/serve/vite-functions-development.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vite-functions-development.js","sourceRoot":"","sources":["../../src/serve/vite-functions-development.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"vite-rules-source.d.ts","sourceRoot":"","sources":["../../src/serve/vite-rules-source.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,cAAc,EAAE,YAAY,GAAG,IAAI,GAClC,YAAY,GAAG,IAAI,CAcrB"}
1
+ {"version":3,"file":"vite-rules-source.d.ts","sourceRoot":"","sources":["../../src/serve/vite-rules-source.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,cAAc,EAAE,YAAY,GAAG,IAAI,GAClC,YAAY,GAAG,IAAI,CAoCrB"}
@@ -6,18 +6,39 @@ import path from 'node:path';
6
6
  * `firebase.json` and root `firestore.rules` fallbacks.
7
7
  */
8
8
  export function resolveViteRulesConfig(root, explicitRules, firebaseConfig) {
9
- const rulesSource = explicitRules
9
+ const firestoreSource = explicitRules
10
10
  ?? (existsSync(path.join(root, 'firestore.modules.rules'))
11
11
  ? 'firestore.modules.rules'
12
12
  : undefined);
13
- if (!rulesSource)
13
+ const storageSource = existsSync(path.join(root, 'storage.modules.rules'))
14
+ ? 'storage.modules.rules'
15
+ : undefined;
16
+ if (!firestoreSource && !storageSource)
14
17
  return firebaseConfig;
15
- return {
18
+ let resolved = {
16
19
  ...(firebaseConfig ?? {}),
17
- firestore: {
18
- ...(firebaseConfig?.firestore ?? {}),
19
- rules: rulesSource,
20
- },
21
20
  };
21
+ if (firestoreSource) {
22
+ resolved.firestore = {
23
+ ...(firebaseConfig?.firestore ?? {}),
24
+ rules: firestoreSource,
25
+ };
26
+ }
27
+ if (storageSource) {
28
+ const storage = firebaseConfig?.storage;
29
+ if (Array.isArray(storage)) {
30
+ const index = Math.max(0, storage.findIndex((entry) => entry.rules));
31
+ resolved.storage = storage.length === 0
32
+ ? [{ rules: storageSource }]
33
+ : storage.map((entry, entryIndex) => entryIndex === index ? { ...entry, rules: storageSource } : entry);
34
+ }
35
+ else {
36
+ resolved.storage = {
37
+ ...(storage ?? {}),
38
+ rules: storageSource,
39
+ };
40
+ }
41
+ }
42
+ return resolved;
22
43
  }
23
44
  //# sourceMappingURL=vite-rules-source.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"vite-rules-source.js","sourceRoot":"","sources":["../../src/serve/vite-rules-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAAY,EACZ,aAAiC,EACjC,cAAmC;IAEnC,MAAM,WAAW,GAAG,aAAa;WAC5B,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;YACxD,CAAC,CAAC,yBAAyB;YAC3B,CAAC,CAAC,SAAS,CAAC,CAAC;IAEjB,IAAI,CAAC,WAAW;QAAE,OAAO,cAAc,CAAC;IACxC,OAAO;QACL,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC;QACzB,SAAS,EAAE;YACT,GAAG,CAAC,cAAc,EAAE,SAAS,IAAI,EAAE,CAAC;YACpC,KAAK,EAAE,WAAW;SACnB;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"vite-rules-source.js","sourceRoot":"","sources":["../../src/serve/vite-rules-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAAY,EACZ,aAAiC,EACjC,cAAmC;IAEnC,MAAM,eAAe,GAAG,aAAa;WAChC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;YACxD,CAAC,CAAC,yBAAyB;YAC3B,CAAC,CAAC,SAAS,CAAC,CAAC;IACjB,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC;QACxE,CAAC,CAAC,uBAAuB;QACzB,CAAC,CAAC,SAAS,CAAC;IAEd,IAAI,CAAC,eAAe,IAAI,CAAC,aAAa;QAAE,OAAO,cAAc,CAAC;IAC9D,IAAI,QAAQ,GAAiB;QAC3B,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC;KAC1B,CAAC;IACF,IAAI,eAAe,EAAE,CAAC;QACpB,QAAQ,CAAC,SAAS,GAAG;YACnB,GAAG,CAAC,cAAc,EAAE,SAAS,IAAI,EAAE,CAAC;YACpC,KAAK,EAAE,eAAe;SACvB,CAAC;IACJ,CAAC;IACD,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,cAAc,EAAE,OAAO,CAAC;QACxC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YACrE,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC;gBACrC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;gBAC5B,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,CAChC,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,KAAK,CAClE,CAAC;QACR,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,OAAO,GAAG;gBACjB,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;gBAClB,KAAK,EAAE,aAAa;aACrB,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pyric/cli",
3
- "version": "0.1.0-alpha.17",
3
+ "version": "0.1.0-alpha.19",
4
4
  "license": "Apache-2.0",
5
5
  "homepage": "https://pyric.dev",
6
6
  "repository": {
@@ -127,11 +127,11 @@
127
127
  "dependencies": {
128
128
  "@inbrowser/agent": "0.4.2",
129
129
  "@modelcontextprotocol/sdk": "^1.0.0",
130
- "create-pyric": "^0.1.0-alpha.17",
130
+ "create-pyric": "^0.1.0-alpha.19",
131
131
  "esbuild": "^0.28.0",
132
132
  "fake-indexeddb": "^6.0.0",
133
- "pyric": "^0.1.0-alpha.17",
134
- "pyric-admin": "^0.1.0-alpha.17",
133
+ "pyric": "^0.1.0-alpha.19",
134
+ "pyric-admin": "^0.1.0-alpha.19",
135
135
  "ws": "^8.18.0",
136
136
  "zod": "^3.23.0"
137
137
  },
@@ -206,10 +206,12 @@ function workerOpError(
206
206
  code: string,
207
207
  message: string,
208
208
  denialContext?: unknown,
209
- ): Error & { code: string; denialContext?: unknown } {
210
- const err = new Error(message) as Error & { code: string; denialContext?: unknown };
209
+ envelope?: unknown,
210
+ ): Error & { code: string; denialContext?: unknown; envelope?: unknown } {
211
+ const err = new Error(message) as Error & { code: string; denialContext?: unknown; envelope?: unknown };
211
212
  err.code = code;
212
213
  if (denialContext !== undefined) err.denialContext = denialContext;
214
+ if (envelope !== undefined) err.envelope = envelope;
213
215
  return err;
214
216
  }
215
217
 
@@ -481,6 +483,7 @@ export function createBridge(opts: BridgeOptions): Bridge {
481
483
  res.error?.code ?? 'unknown',
482
484
  res.error?.message ?? 'unknown sandbox error',
483
485
  res.error?.denialContext,
486
+ (res.error as any)?.envelope,
484
487
  ),
485
488
  );
486
489
  }
@@ -40,6 +40,9 @@ export const DEFAULT_MCP_IN_PROCESS_TOOL_NAMES = [
40
40
  'firestore_rules_stdlib_get',
41
41
  'firestore_lint_rules',
42
42
  'firestore_resolve_modules',
43
+ 'rules_stdlib_list',
44
+ 'rules_stdlib_get',
45
+ 'rules_resolve_modules',
43
46
  'pyric_can_i_use',
44
47
  ] as const;
45
48
 
@@ -162,7 +162,7 @@ export function createConsumerSession(
162
162
  case 'worker-op': {
163
163
  bridge.dispatchWorkerOp(msg.op).then(
164
164
  (value) => send({ type: 'worker-res', id: msg.id, ok: true, value }),
165
- (err: Error & { code?: string; denialContext?: unknown }) =>
165
+ (err: Error & { code?: string; denialContext?: unknown; envelope?: unknown }) =>
166
166
  send({
167
167
  type: 'worker-res',
168
168
  id: msg.id,
@@ -173,6 +173,7 @@ export function createConsumerSession(
173
173
  // Structured denial context (spike gap 6) — plain JSON,
174
174
  // relayed verbatim so the Node side re-attaches it.
175
175
  ...(err.denialContext !== undefined ? { denialContext: err.denialContext } : {}),
176
+ ...(err.envelope !== undefined ? { envelope: err.envelope } : {}),
176
177
  },
177
178
  }),
178
179
  );
package/src/cli/index.ts CHANGED
@@ -15,6 +15,7 @@
15
15
  * pyric firestore rules resolve <path> [--out <path>]
16
16
  * pyric firestore indexes generate <path...> [--out <path>]
17
17
  * pyric storage rules lint <path>
18
+ * pyric storage rules resolve <path> [--out <path>]
18
19
  * pyric storage rules simulate [--stdin]
19
20
  * pyric database rules lint <path>
20
21
  * pyric database rules validate <path>
@@ -71,6 +72,7 @@ USAGE
71
72
  pyric firestore rules resolve <path> [--out <path>]
72
73
  pyric firestore indexes generate <path...> [--out <path>]
73
74
  pyric storage rules lint <path>
75
+ pyric storage rules resolve <path> [--out <path>]
74
76
  pyric storage rules simulate [--stdin]
75
77
  pyric database rules lint <path>
76
78
  pyric database rules validate <path>
@@ -127,6 +129,7 @@ COMMANDS
127
129
  firestore rules resolve Resolve Firestore 2+modules imports to one ruleset.
128
130
  firestore indexes generate Generate firestore.indexes.json from application source.
129
131
  storage rules lint Check Storage rules syntax locally.
132
+ storage rules resolve Resolve Storage 2+modules imports to one ruleset.
130
133
  storage rules simulate Run the local Storage rules evaluator.
131
134
  database rules lint Run the Realtime Database rules expression linter.
132
135
  database rules validate Validate Realtime Database rules expressions.
@@ -2,16 +2,15 @@
2
2
  * `pyric mcp-proxy` — a stdio MCP server that relays to a RUNNING
3
3
  * `pyric dev --bridge`'s HTTP MCP endpoint.
4
4
  *
5
- * Why this exists: a Claude Code plugin can only declare a STATIC MCP URL in
6
- * `.mcp.json`, but serve's endpoint is `http://localhost:<PORT>/__pyric/mcp`
7
- * with a runtime port (scan-forward / AirPlay). So the plugin declares a
8
- * STDIO server that runs this proxy; the proxy discovers the live serve and
9
- * forwards the protocol. No manual `claude mcp add`, no fixed port.
5
+ * Why this exists: the agent plugin declares one static stdio command, while
6
+ * serve's endpoint is `http://localhost:<PORT>/__pyric/mcp` with a runtime
7
+ * port (scan-forward / AirPlay). The proxy discovers the live serve and
8
+ * forwards the protocol. No per-client MCP setup, no fixed port.
10
9
  * (design rationale)
11
10
  *
12
11
  * Relay is at the TRANSPORT level via the MCP SDK's own transports — we do
13
12
  * NOT re-implement JSON-RPC/SSE/session framing. `StdioServerTransport`
14
- * talks to Claude Code; `StreamableHTTPClientTransport` talks to serve; each
13
+ * talks to the MCP client; `StreamableHTTPClientTransport` talks to serve; each
15
14
  * transport's `onmessage` is piped to the other's `send`.
16
15
  *
17
16
  * Two hardening layers sit on top of that pipe:
@@ -22,7 +21,7 @@
22
21
  * + IPv6 `[::1]:P`); without this, the proxy locks onto whichever family
23
22
  * answers first while the browser is on the other — split-brain.
24
23
  * TIMEOUT — every relayed request is failed with a JSON-RPC error after
25
- * REQUEST_TIMEOUT_MS instead of hanging Claude Code forever (a killed
24
+ * REQUEST_TIMEOUT_MS instead of hanging the agent forever (a killed
26
25
  * server can leave a half-open keep-alive socket that never FINs). A
27
26
  * `settled` set swallows a late real response so the client never sees a
28
27
  * duplicate after the timeout already failed the call.
package/src/cli/rules.ts CHANGED
@@ -125,14 +125,30 @@ export async function runRulesValidate(parsed: ParsedArgs, deps: RulesDeps = {})
125
125
  export async function runRulesResolve(
126
126
  parsed: ParsedArgs,
127
127
  deps: ResolveRulesDeps = {},
128
+ ): Promise<number> {
129
+ return runServiceRulesResolve('firestore', parsed, deps);
130
+ }
131
+
132
+ export async function runStorageRulesResolve(
133
+ parsed: ParsedArgs,
134
+ deps: ResolveRulesDeps = {},
135
+ ): Promise<number> {
136
+ return runServiceRulesResolve('storage', parsed, deps);
137
+ }
138
+
139
+ async function runServiceRulesResolve(
140
+ service: 'firestore' | 'storage',
141
+ parsed: ParsedArgs,
142
+ deps: ResolveRulesDeps,
128
143
  ): Promise<number> {
129
144
  const out = deps.stdout ?? process.stdout;
130
145
  const err = deps.stderr ?? process.stderr;
131
146
  const cwd = deps.cwd ?? process.cwd();
147
+ const command = `pyric ${service} rules resolve`;
132
148
  const sourcePath = parsed.positional[0];
133
149
  if (!sourcePath) {
134
150
  err.write(
135
- 'pyric firestore rules resolve: missing rules-file path. Usage: pyric firestore rules resolve <path> [--out <path>]\n',
151
+ `${command}: missing rules-file path. Usage: ${command} <path> [--out <path>]\n`,
136
152
  );
137
153
  return 1;
138
154
  }
@@ -143,16 +159,27 @@ export async function runRulesResolve(
143
159
  source = await (deps.readFile ?? readFile)(absoluteSourcePath, 'utf-8');
144
160
  } catch (error) {
145
161
  err.write(
146
- `pyric firestore rules resolve: ${error instanceof Error ? error.message : String(error)}\n`,
162
+ `${command}: ${error instanceof Error ? error.message : String(error)}\n`,
147
163
  );
148
164
  return 1;
149
165
  }
150
166
 
167
+ const expectedService =
168
+ service === 'storage' ? 'firebase.storage' : 'cloud.firestore';
169
+ const parsedSource = parseToAST(source);
170
+ if (parsedSource && parsedSource.service.name !== expectedService) {
171
+ err.write(
172
+ `${command}: source declares service ${parsedSource.service.name}; expected ${expectedService}\n`,
173
+ );
174
+ return 2;
175
+ }
176
+
151
177
  const result = (deps.resolveModules ?? resolveModules)(source, {
152
178
  basePath: dirname(absoluteSourcePath),
179
+ sourceFile: sourcePath,
153
180
  });
154
181
  if (!result.success) {
155
- err.write(`pyric firestore rules resolve: ${result.error.message}\n`);
182
+ err.write(`${command}: ${result.error.message}\n`);
156
183
  return 2;
157
184
  }
158
185
 
@@ -169,7 +196,7 @@ export async function runRulesResolve(
169
196
  result.data.resolved.endsWith('\n') ? result.data.resolved : `${result.data.resolved}\n`,
170
197
  'utf-8',
171
198
  );
172
- out.write(`pyric firestore rules resolve: wrote ${outputPath}\n`);
199
+ out.write(`${command}: wrote ${outputPath}\n`);
173
200
  return 0;
174
201
  }
175
202
 
package/src/cli/serve.ts CHANGED
@@ -783,6 +783,7 @@ export async function runServe(parsed: ParsedArgs): Promise<number> {
783
783
  registerUrl: registerModuleUrl(),
784
784
  instance: `${functionsProjectId}-default-rtdb`,
785
785
  location: process.env.PYRIC_FUNCTIONS_RTDB_REGION ?? 'us-central1',
786
+ projectId: functionsProjectId ?? 'demo-project',
786
787
  readiness: createHttpFunctionsPeerReadiness(runtime.handle.url),
787
788
  onEvent: reportFunctionsEvent,
788
789
  });
@@ -0,0 +1,4 @@
1
+ import { runStorageRulesResolve } from '../rules.js';
2
+ import type { ServiceCommandHandler } from '../service-commands.js';
3
+
4
+ export default runStorageRulesResolve satisfies ServiceCommandHandler;
@@ -10,6 +10,7 @@ import firestoreRulesResolve from './service-command-records/firestore-rules-res
10
10
  import firestoreRulesSimulate from './service-command-records/firestore-rules-simulate.js';
11
11
  import firestoreRulesValidate from './service-command-records/firestore-rules-validate.js';
12
12
  import storageRulesLint from './service-command-records/storage-rules-lint.js';
13
+ import storageRulesResolve from './service-command-records/storage-rules-resolve.js';
13
14
  import storageRulesSimulate from './service-command-records/storage-rules-simulate.js';
14
15
 
15
16
  export const SERVICE_COMMANDS = [
@@ -23,5 +24,6 @@ export const SERVICE_COMMANDS = [
23
24
  { path: ["firestore","rules","simulate"], run: firestoreRulesSimulate },
24
25
  { path: ["firestore","rules","validate"], run: firestoreRulesValidate },
25
26
  { path: ["storage","rules","lint"], run: storageRulesLint },
27
+ { path: ["storage","rules","resolve"], run: storageRulesResolve },
26
28
  { path: ["storage","rules","simulate"], run: storageRulesSimulate },
27
29
  ] as const satisfies readonly ServiceCommand[];