@pyric/cli 0.1.0-alpha.20 → 0.1.0-alpha.21

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 (491) hide show
  1. package/README.md +64 -89
  2. package/dist/assurance/.generated/conformance-verdicts.d.ts +68 -1
  3. package/dist/assurance/.generated/conformance-verdicts.d.ts.map +1 -1
  4. package/dist/assurance/.generated/conformance-verdicts.js +68 -1
  5. package/dist/assurance/.generated/conformance-verdicts.js.map +1 -1
  6. package/dist/bridge/client/dispatch.d.ts +25 -19
  7. package/dist/bridge/client/dispatch.d.ts.map +1 -1
  8. package/dist/bridge/client/dispatch.js +41 -48
  9. package/dist/bridge/client/dispatch.js.map +1 -1
  10. package/dist/bridge/client/tool-family-factories.d.ts +26 -0
  11. package/dist/bridge/client/tool-family-factories.d.ts.map +1 -0
  12. package/dist/bridge/client/tool-family-factories.js +10 -0
  13. package/dist/bridge/client/tool-family-factories.js.map +1 -0
  14. package/dist/bridge/server/mcp-contract.d.ts +7 -6
  15. package/dist/bridge/server/mcp-contract.d.ts.map +1 -1
  16. package/dist/bridge/server/mcp-contract.js +9 -48
  17. package/dist/bridge/server/mcp-contract.js.map +1 -1
  18. package/dist/bridge/server/peer.d.ts +11 -1
  19. package/dist/bridge/server/peer.d.ts.map +1 -1
  20. package/dist/bridge/server/peer.js +22 -1
  21. package/dist/bridge/server/peer.js.map +1 -1
  22. package/dist/bridge/server/tool-family-factories.d.ts +30 -0
  23. package/dist/bridge/server/tool-family-factories.d.ts.map +1 -0
  24. package/dist/bridge/server/tool-family-factories.js +22 -0
  25. package/dist/bridge/server/tool-family-factories.js.map +1 -0
  26. package/dist/bridge/server/tool-metadata.d.ts +17 -18
  27. package/dist/bridge/server/tool-metadata.d.ts.map +1 -1
  28. package/dist/bridge/server/tool-metadata.js +24 -59
  29. package/dist/bridge/server/tool-metadata.js.map +1 -1
  30. package/dist/bridge/tool-families.d.ts +48 -0
  31. package/dist/bridge/tool-families.d.ts.map +1 -0
  32. package/dist/bridge/tool-families.generated.d.ts +32 -0
  33. package/dist/bridge/tool-families.generated.d.ts.map +1 -0
  34. package/dist/bridge/tool-families.generated.js +15 -0
  35. package/dist/bridge/tool-families.generated.js.map +1 -0
  36. package/dist/bridge/tool-families.js +51 -0
  37. package/dist/bridge/tool-families.js.map +1 -0
  38. package/dist/bridge/tool-family-records/conformance.d.ts +7 -0
  39. package/dist/bridge/tool-family-records/conformance.d.ts.map +1 -0
  40. package/dist/bridge/tool-family-records/conformance.js +6 -0
  41. package/dist/bridge/tool-family-records/conformance.js.map +1 -0
  42. package/dist/bridge/tool-family-records/firestore-data.d.ts +7 -0
  43. package/dist/bridge/tool-family-records/firestore-data.d.ts.map +1 -0
  44. package/dist/bridge/tool-family-records/firestore-data.js +15 -0
  45. package/dist/bridge/tool-family-records/firestore-data.js.map +1 -0
  46. package/dist/bridge/tool-family-records/firestore-inspect.d.ts +7 -0
  47. package/dist/bridge/tool-family-records/firestore-inspect.d.ts.map +1 -0
  48. package/dist/bridge/tool-family-records/firestore-inspect.js +6 -0
  49. package/dist/bridge/tool-family-records/firestore-inspect.js.map +1 -0
  50. package/dist/bridge/tool-family-records/firestore-rules.d.ts +7 -0
  51. package/dist/bridge/tool-family-records/firestore-rules.d.ts.map +1 -0
  52. package/dist/bridge/tool-family-records/firestore-rules.js +15 -0
  53. package/dist/bridge/tool-family-records/firestore-rules.js.map +1 -0
  54. package/dist/bridge/tool-family-records/firestore-simulator.d.ts +7 -0
  55. package/dist/bridge/tool-family-records/firestore-simulator.d.ts.map +1 -0
  56. package/dist/bridge/tool-family-records/firestore-simulator.js +16 -0
  57. package/dist/bridge/tool-family-records/firestore-simulator.js.map +1 -0
  58. package/dist/bridge/tool-family-records/rtdb-inspection.d.ts +7 -0
  59. package/dist/bridge/tool-family-records/rtdb-inspection.d.ts.map +1 -0
  60. package/dist/bridge/tool-family-records/rtdb-inspection.js +6 -0
  61. package/dist/bridge/tool-family-records/rtdb-inspection.js.map +1 -0
  62. package/dist/bundler/externals.d.ts +37 -0
  63. package/dist/bundler/externals.d.ts.map +1 -0
  64. package/dist/bundler/externals.js +52 -0
  65. package/dist/bundler/externals.js.map +1 -0
  66. package/dist/bundler/index.d.ts +17 -0
  67. package/dist/bundler/index.d.ts.map +1 -0
  68. package/dist/bundler/index.js +17 -0
  69. package/dist/bundler/index.js.map +1 -0
  70. package/dist/cli/inlined-sdk-scanner.d.ts +6 -0
  71. package/dist/cli/inlined-sdk-scanner.d.ts.map +1 -0
  72. package/dist/cli/inlined-sdk-scanner.js +82 -0
  73. package/dist/cli/inlined-sdk-scanner.js.map +1 -0
  74. package/dist/cli/sandbox-interlock.d.ts +97 -0
  75. package/dist/cli/sandbox-interlock.d.ts.map +1 -0
  76. package/dist/cli/sandbox-interlock.js +112 -0
  77. package/dist/cli/sandbox-interlock.js.map +1 -0
  78. package/dist/cli/sandbox-runner.d.ts +20 -12
  79. package/dist/cli/sandbox-runner.d.ts.map +1 -1
  80. package/dist/cli/sandbox-runner.js +24 -21
  81. package/dist/cli/sandbox-runner.js.map +1 -1
  82. package/dist/cli/serve.d.ts +6 -10
  83. package/dist/cli/serve.d.ts.map +1 -1
  84. package/dist/cli/serve.js +57 -77
  85. package/dist/cli/serve.js.map +1 -1
  86. package/dist/cli/unsupported-runtime.d.ts +27 -0
  87. package/dist/cli/unsupported-runtime.d.ts.map +1 -0
  88. package/dist/cli/unsupported-runtime.js +63 -0
  89. package/dist/cli/unsupported-runtime.js.map +1 -0
  90. package/dist/conformance/.generated/can-i-use-browser.d.ts +1 -1
  91. package/dist/conformance/.generated/can-i-use-browser.d.ts.map +1 -1
  92. package/dist/conformance/.generated/can-i-use-browser.js +1 -1
  93. package/dist/conformance/.generated/can-i-use-browser.js.map +1 -1
  94. package/dist/conformance/.generated/can-i-use.d.ts +1 -1
  95. package/dist/conformance/.generated/can-i-use.d.ts.map +1 -1
  96. package/dist/conformance/.generated/can-i-use.js +1 -1
  97. package/dist/conformance/.generated/can-i-use.js.map +1 -1
  98. package/dist/conformance/.generated/conformance-docs.d.ts.map +1 -1
  99. package/dist/conformance/.generated/conformance-docs.js +1 -1
  100. package/dist/conformance/.generated/conformance-docs.js.map +1 -1
  101. package/dist/functions-rtdb/child.d.ts +37 -0
  102. package/dist/functions-rtdb/child.d.ts.map +1 -1
  103. package/dist/functions-rtdb/child.js +90 -21
  104. package/dist/functions-rtdb/child.js.map +1 -1
  105. package/dist/functions-rtdb/development-runtime.d.ts +3 -0
  106. package/dist/functions-rtdb/development-runtime.d.ts.map +1 -1
  107. package/dist/functions-rtdb/development-runtime.js +1 -0
  108. package/dist/functions-rtdb/development-runtime.js.map +1 -1
  109. package/dist/google-endpoints.d.ts +67 -0
  110. package/dist/google-endpoints.d.ts.map +1 -0
  111. package/dist/google-endpoints.js +119 -0
  112. package/dist/google-endpoints.js.map +1 -0
  113. package/dist/next/runtime-env.d.ts.map +1 -1
  114. package/dist/next/runtime-env.js +5 -0
  115. package/dist/next/runtime-env.js.map +1 -1
  116. package/dist/next/with-pyric.d.ts +1 -1
  117. package/dist/next/with-pyric.js +1 -1
  118. package/dist/register/beacon.d.ts +69 -0
  119. package/dist/register/beacon.d.ts.map +1 -0
  120. package/dist/register/beacon.js +199 -0
  121. package/dist/register/beacon.js.map +1 -0
  122. package/dist/register/index.d.ts.map +1 -1
  123. package/dist/register/index.js +65 -6
  124. package/dist/register/index.js.map +1 -1
  125. package/dist/register/net-guard.d.ts +110 -0
  126. package/dist/register/net-guard.d.ts.map +1 -0
  127. package/dist/register/net-guard.js +462 -0
  128. package/dist/register/net-guard.js.map +1 -0
  129. package/dist/serve/ai-diagnostics-relay.d.ts +63 -0
  130. package/dist/serve/ai-diagnostics-relay.d.ts.map +1 -0
  131. package/dist/serve/ai-diagnostics-relay.js +125 -0
  132. package/dist/serve/ai-diagnostics-relay.js.map +1 -0
  133. package/dist/serve/ai-proxy.d.ts +92 -0
  134. package/dist/serve/ai-proxy.d.ts.map +1 -0
  135. package/dist/serve/ai-proxy.js +269 -0
  136. package/dist/serve/ai-proxy.js.map +1 -0
  137. package/dist/serve/ai-status.d.ts +44 -0
  138. package/dist/serve/ai-status.d.ts.map +1 -0
  139. package/dist/serve/ai-status.js +77 -0
  140. package/dist/serve/ai-status.js.map +1 -0
  141. package/dist/serve/ai-terminal-blocks.d.ts +97 -0
  142. package/dist/serve/ai-terminal-blocks.d.ts.map +1 -0
  143. package/dist/serve/ai-terminal-blocks.js +128 -0
  144. package/dist/serve/ai-terminal-blocks.js.map +1 -0
  145. package/dist/serve/ai-terminal-text.d.ts +36 -0
  146. package/dist/serve/ai-terminal-text.d.ts.map +1 -0
  147. package/dist/serve/ai-terminal-text.js +48 -0
  148. package/dist/serve/ai-terminal-text.js.map +1 -0
  149. package/dist/serve/beacon-route.d.ts +53 -0
  150. package/dist/serve/beacon-route.d.ts.map +1 -0
  151. package/dist/serve/beacon-route.js +101 -0
  152. package/dist/serve/beacon-route.js.map +1 -0
  153. package/dist/serve/entries/active-auth-registry.d.ts +16 -0
  154. package/dist/serve/entries/active-auth-registry.d.ts.map +1 -0
  155. package/dist/serve/entries/active-auth-registry.js +48 -0
  156. package/dist/serve/entries/active-auth-registry.js.map +1 -0
  157. package/dist/serve/entries/active-auth.d.ts +18 -0
  158. package/dist/serve/entries/active-auth.d.ts.map +1 -0
  159. package/dist/serve/entries/active-auth.js +84 -0
  160. package/dist/serve/entries/active-auth.js.map +1 -0
  161. package/dist/serve/entries/auth-helper-core.d.ts +1 -0
  162. package/dist/serve/entries/auth-helper-core.d.ts.map +1 -1
  163. package/dist/serve/entries/auth-helper-core.js +4 -0
  164. package/dist/serve/entries/auth-helper-core.js.map +1 -1
  165. package/dist/serve/entries/auth-helper-dom.d.ts.map +1 -1
  166. package/dist/serve/entries/auth-helper-dom.js +28 -2
  167. package/dist/serve/entries/auth-helper-dom.js.map +1 -1
  168. package/dist/serve/entries/auth.d.ts.map +1 -1
  169. package/dist/serve/entries/auth.js +8 -0
  170. package/dist/serve/entries/auth.js.map +1 -1
  171. package/dist/serve/entries/bridge-url.d.ts +1 -1
  172. package/dist/serve/entries/bridge-url.js +1 -1
  173. package/dist/serve/entries/init.d.ts.map +1 -1
  174. package/dist/serve/entries/init.js +70 -4
  175. package/dist/serve/entries/init.js.map +1 -1
  176. package/dist/serve/entries/runtime.d.ts.map +1 -1
  177. package/dist/serve/entries/runtime.js +9 -0
  178. package/dist/serve/entries/runtime.js.map +1 -1
  179. package/dist/serve/namespace.d.ts +14 -5
  180. package/dist/serve/namespace.d.ts.map +1 -1
  181. package/dist/serve/namespace.js +57 -124
  182. package/dist/serve/namespace.js.map +1 -1
  183. package/dist/serve/runtime/chip-config.d.ts.map +1 -1
  184. package/dist/serve/runtime/chip-config.js +16 -2
  185. package/dist/serve/runtime/chip-config.js.map +1 -1
  186. package/dist/serve/runtime/chip-dialog.d.ts +18 -0
  187. package/dist/serve/runtime/chip-dialog.d.ts.map +1 -0
  188. package/dist/serve/runtime/chip-dialog.js +315 -0
  189. package/dist/serve/runtime/chip-dialog.js.map +1 -0
  190. package/dist/serve/runtime/chip-install.d.ts +2 -0
  191. package/dist/serve/runtime/chip-install.d.ts.map +1 -1
  192. package/dist/serve/runtime/chip-install.js +9 -4
  193. package/dist/serve/runtime/chip-install.js.map +1 -1
  194. package/dist/serve/runtime/chip-user-search.d.ts +16 -0
  195. package/dist/serve/runtime/chip-user-search.d.ts.map +1 -0
  196. package/dist/serve/runtime/chip-user-search.js +354 -0
  197. package/dist/serve/runtime/chip-user-search.js.map +1 -0
  198. package/dist/serve/runtime/chip.d.ts +10 -0
  199. package/dist/serve/runtime/chip.d.ts.map +1 -1
  200. package/dist/serve/runtime/chip.js +118 -15
  201. package/dist/serve/runtime/chip.js.map +1 -1
  202. package/dist/serve/runtime/identity.d.ts +17 -0
  203. package/dist/serve/runtime/identity.d.ts.map +1 -0
  204. package/dist/serve/runtime/identity.js +10 -0
  205. package/dist/serve/runtime/identity.js.map +1 -0
  206. package/dist/serve/sandbox-session.d.ts +7 -0
  207. package/dist/serve/sandbox-session.d.ts.map +1 -1
  208. package/dist/serve/sandbox-session.js +2 -0
  209. package/dist/serve/sandbox-session.js.map +1 -1
  210. package/dist/serve/site-ui/_astro/{RulesCodeEditor.XtDmHOlN.js → RulesCodeEditor.DsTAsKIa.js} +1 -1
  211. package/dist/serve/site-ui/_astro/app.BOr2kwae.js +115 -0
  212. package/dist/serve/site-ui/_astro/app.DhAcImFD.js +1 -0
  213. package/dist/serve/site-ui/_astro/{chess-showcase.B72XYeoh.js → chess-showcase.Bn_pP6UJ.js} +2 -2
  214. package/dist/serve/site-ui/_astro/{example-runtime.C25_lx6Z.js → example-runtime.CXopTGv7.js} +1 -1
  215. package/dist/serve/site-ui/_astro/sandbox-controls.rOuZTOUG.js +510 -0
  216. package/dist/serve/site-ui/_astro/{seed.Co0yUJY5.js → seed.03a08f9t.js} +2 -2
  217. package/dist/serve/site-ui/_astro/writes.BsPBG3dp.js +653 -0
  218. package/dist/serve/site-ui/auth/index.html +1 -1
  219. package/dist/serve/site-ui/docs/_rhythm/index.html +1 -1
  220. package/dist/serve/site-ui/docs/agent/set-up-your-agent/index.html +1 -1
  221. package/dist/serve/site-ui/docs/agent/watch-and-review/index.html +1 -1
  222. package/dist/serve/site-ui/docs/agent/work-with-an-agent/index.html +1 -1
  223. package/dist/serve/site-ui/docs/ai-compat/index.html +1 -1
  224. package/dist/serve/site-ui/docs/api-reference/index.html +8 -1
  225. package/dist/serve/site-ui/docs/api-reference.md +7 -0
  226. package/dist/serve/site-ui/docs/app-compat/index.html +1 -1
  227. package/dist/serve/site-ui/docs/auth-compat/index.html +3 -3
  228. package/dist/serve/site-ui/docs/auth-compat.md +2 -2
  229. package/dist/serve/site-ui/docs/build/ai-logic/index.html +6 -1
  230. package/dist/serve/site-ui/docs/build/ai-logic.md +6 -0
  231. package/dist/serve/site-ui/docs/build/authentication/index.html +1 -1
  232. package/dist/serve/site-ui/docs/build/cloud-firestore/index.html +1 -1
  233. package/dist/serve/site-ui/docs/build/cloud-messaging/index.html +1 -1
  234. package/dist/serve/site-ui/docs/build/cloud-storage/index.html +1 -1
  235. package/dist/serve/site-ui/docs/build/realtime-database/index.html +1 -1
  236. package/dist/serve/site-ui/docs/conformance-scores/index.html +6 -2
  237. package/dist/serve/site-ui/docs/conformance-scores.md +5 -1
  238. package/dist/serve/site-ui/docs/create-pyric-reference-api/index.html +1 -1
  239. package/dist/serve/site-ui/docs/database-compat/index.html +44 -44
  240. package/dist/serve/site-ui/docs/database-compat.md +43 -43
  241. package/dist/serve/site-ui/docs/examples/chess/index.html +1 -1
  242. package/dist/serve/site-ui/docs/examples/index.html +1 -1
  243. package/dist/serve/site-ui/docs/firestore-compat/index.html +4 -4
  244. package/dist/serve/site-ui/docs/firestore-compat.md +3 -3
  245. package/dist/serve/site-ui/docs/firestore-flutter-compat/index.html +319 -0
  246. package/dist/serve/site-ui/docs/firestore-flutter-compat.md +344 -0
  247. package/dist/serve/site-ui/docs/functions-rtdb-compat/index.html +1 -1
  248. package/dist/serve/site-ui/docs/get-started/backend-bundlers/index.html +105 -0
  249. package/dist/serve/site-ui/docs/get-started/backend-bundlers.md +165 -0
  250. package/dist/serve/site-ui/docs/get-started/how-the-swap-works/index.html +1 -1
  251. package/dist/serve/site-ui/docs/get-started/nextjs/index.html +1 -1
  252. package/dist/serve/site-ui/docs/get-started/start-building/index.html +1 -1
  253. package/dist/serve/site-ui/docs/get-started/vite/index.html +1 -1
  254. package/dist/serve/site-ui/docs/index.json +2967 -1482
  255. package/dist/serve/site-ui/docs/messaging-compat/index.html +1 -1
  256. package/dist/serve/site-ui/docs/observe/resolve-runtime-status/index.html +1 -1
  257. package/dist/serve/site-ui/docs/observe/see-whats-happening/index.html +1 -1
  258. package/dist/serve/site-ui/docs/observe/shape-your-data/index.html +1 -1
  259. package/dist/serve/site-ui/docs/overview/index.html +1 -1
  260. package/dist/serve/site-ui/docs/pyric-admin-app-reference-api/index.html +1 -1
  261. package/dist/serve/site-ui/docs/pyric-admin-auth-reference-api/index.html +1 -1
  262. package/dist/serve/site-ui/docs/pyric-admin-database-reference-api/index.html +1 -1
  263. package/dist/serve/site-ui/docs/pyric-admin-firestore-reference-api/index.html +1 -1
  264. package/dist/serve/site-ui/docs/pyric-admin-messaging-reference-api/index.html +1 -1
  265. package/dist/serve/site-ui/docs/pyric-admin-reference-api/index.html +1 -1
  266. package/dist/serve/site-ui/docs/pyric-admin-storage-reference-api/index.html +1 -1
  267. package/dist/serve/site-ui/docs/pyric-ai-reference-api/index.html +1 -1
  268. package/dist/serve/site-ui/docs/pyric-ai-scripting-reference-api/index.html +1 -1
  269. package/dist/serve/site-ui/docs/pyric-analytics-reference-api/index.html +124 -0
  270. package/dist/serve/site-ui/docs/pyric-analytics-reference-api.md +287 -0
  271. package/dist/serve/site-ui/docs/pyric-app-check-reference-api/index.html +87 -0
  272. package/dist/serve/site-ui/docs/pyric-app-check-reference-api.md +199 -0
  273. package/dist/serve/site-ui/docs/pyric-app-reference-api/index.html +1 -1
  274. package/dist/serve/site-ui/docs/pyric-auth-reference-api/index.html +6 -2
  275. package/dist/serve/site-ui/docs/pyric-auth-reference-api.md +2 -1
  276. package/dist/serve/site-ui/docs/pyric-cli-assurance-browser-reference-api/index.html +1 -1
  277. package/dist/serve/site-ui/docs/pyric-cli-assurance-reference-api/index.html +1 -1
  278. package/dist/serve/site-ui/docs/pyric-cli-bridge-client-reference-api/index.html +2 -2
  279. package/dist/serve/site-ui/docs/pyric-cli-bridge-client-reference-api.md +1 -1
  280. package/dist/serve/site-ui/docs/pyric-cli-bridge-reference-api/index.html +1 -1
  281. package/dist/serve/site-ui/docs/pyric-cli-bundler-reference-api/index.html +56 -0
  282. package/dist/serve/site-ui/docs/pyric-cli-bundler-reference-api.md +72 -0
  283. package/dist/serve/site-ui/docs/pyric-cli-conformance-browser-reference-api/index.html +2 -1
  284. package/dist/serve/site-ui/docs/pyric-cli-conformance-browser-reference-api.md +1 -0
  285. package/dist/serve/site-ui/docs/pyric-cli-conformance-docs-reference-api/index.html +1 -1
  286. package/dist/serve/site-ui/docs/pyric-cli-conformance-reference-api/index.html +2 -1
  287. package/dist/serve/site-ui/docs/pyric-cli-conformance-reference-api.md +1 -0
  288. package/dist/serve/site-ui/docs/pyric-cli-credentials-node-reference-api/index.html +1 -1
  289. package/dist/serve/site-ui/docs/pyric-cli-discover-reference-api/index.html +1 -1
  290. package/dist/serve/site-ui/docs/pyric-cli-next-reference-api/index.html +2 -2
  291. package/dist/serve/site-ui/docs/pyric-cli-next-reference-api.md +1 -1
  292. package/dist/serve/site-ui/docs/pyric-cli-register-app-bridge-reference-api/index.html +1 -1
  293. package/dist/serve/site-ui/docs/pyric-cli-register-reference-api/index.html +1 -1
  294. package/dist/serve/site-ui/docs/pyric-cli-remote-reference-api/index.html +34 -9
  295. package/dist/serve/site-ui/docs/pyric-cli-remote-reference-api.md +16 -8
  296. package/dist/serve/site-ui/docs/pyric-cli-serve-worker-reference-api/index.html +133 -93
  297. package/dist/serve/site-ui/docs/pyric-cli-serve-worker-reference-api.md +61 -1
  298. package/dist/serve/site-ui/docs/pyric-cli-verify-reference-api/index.html +2 -2
  299. package/dist/serve/site-ui/docs/pyric-cli-verify-reference-api.md +1 -1
  300. package/dist/serve/site-ui/docs/pyric-cli-vite-reference-api/index.html +2 -2
  301. package/dist/serve/site-ui/docs/pyric-cli-vite-reference-api.md +2 -2
  302. package/dist/serve/site-ui/docs/pyric-database-reference-api/index.html +2 -2
  303. package/dist/serve/site-ui/docs/pyric-database-reference-api.md +1 -1
  304. package/dist/serve/site-ui/docs/pyric-firestore-lite-reference-api/index.html +559 -0
  305. package/dist/serve/site-ui/docs/pyric-firestore-lite-reference-api.md +1240 -0
  306. package/dist/serve/site-ui/docs/pyric-firestore-reference-api/index.html +40 -11
  307. package/dist/serve/site-ui/docs/pyric-firestore-reference-api.md +18 -8
  308. package/dist/serve/site-ui/docs/pyric-functions-reference-api/index.html +67 -0
  309. package/dist/serve/site-ui/docs/pyric-functions-reference-api.md +149 -0
  310. package/dist/serve/site-ui/docs/pyric-messaging-reference-api/index.html +1 -1
  311. package/dist/serve/site-ui/docs/pyric-messaging-sw-reference-api/index.html +1 -1
  312. package/dist/serve/site-ui/docs/pyric-performance-reference-api/index.html +35 -0
  313. package/dist/serve/site-ui/docs/pyric-performance-reference-api.md +69 -0
  314. package/dist/serve/site-ui/docs/pyric-remote-config-reference-api/index.html +132 -0
  315. package/dist/serve/site-ui/docs/pyric-remote-config-reference-api.md +307 -0
  316. package/dist/serve/site-ui/docs/pyric-rules-reference-api/index.html +1 -1
  317. package/dist/serve/site-ui/docs/pyric-sandbox-database-reference-api/index.html +52 -17
  318. package/dist/serve/site-ui/docs/pyric-sandbox-database-reference-api.md +48 -9
  319. package/dist/serve/site-ui/docs/pyric-sandbox-firestore-reference-api/index.html +1 -1
  320. package/dist/serve/site-ui/docs/pyric-sandbox-reference-api/index.html +239 -49
  321. package/dist/serve/site-ui/docs/pyric-sandbox-reference-api.md +148 -31
  322. package/dist/serve/site-ui/docs/pyric-storage-reference-api/index.html +22 -4
  323. package/dist/serve/site-ui/docs/pyric-storage-reference-api.md +24 -2
  324. package/dist/serve/site-ui/docs/pyric-ui-agents-reference-api/index.html +26 -96
  325. package/dist/serve/site-ui/docs/pyric-ui-agents-reference-api.md +20 -51
  326. package/dist/serve/site-ui/docs/pyric-ui-auth-hooks-reference-api/index.html +1 -1
  327. package/dist/serve/site-ui/docs/pyric-ui-auth-reference-api/index.html +2 -2
  328. package/dist/serve/site-ui/docs/pyric-ui-auth-reference-api.md +1 -1
  329. package/dist/serve/site-ui/docs/pyric-ui-events-hooks-reference-api/index.html +1 -1
  330. package/dist/serve/site-ui/docs/pyric-ui-events-reference-api/index.html +1 -1
  331. package/dist/serve/site-ui/docs/pyric-ui-firestore-hooks-reference-api/index.html +1 -1
  332. package/dist/serve/site-ui/docs/pyric-ui-firestore-reference-api/index.html +2 -2
  333. package/dist/serve/site-ui/docs/pyric-ui-firestore-reference-api.md +1 -1
  334. package/dist/serve/site-ui/docs/pyric-ui-primitives-reference-api/index.html +124 -26
  335. package/dist/serve/site-ui/docs/pyric-ui-primitives-reference-api.md +58 -5
  336. package/dist/serve/site-ui/docs/pyric-ui-rtdb-reference-api/index.html +1 -1
  337. package/dist/serve/site-ui/docs/pyric-ui-rules-hooks-reference-api/index.html +1 -1
  338. package/dist/serve/site-ui/docs/pyric-ui-rules-reference-api/index.html +1 -1
  339. package/dist/serve/site-ui/docs/pyric-ui-storage-hooks-reference-api/index.html +1 -1
  340. package/dist/serve/site-ui/docs/pyric-ui-storage-reference-api/index.html +4 -5
  341. package/dist/serve/site-ui/docs/pyric-ui-storage-reference-api.md +3 -4
  342. package/dist/serve/site-ui/docs/pyric-ui-traffic-hooks-reference-api/index.html +1 -1
  343. package/dist/serve/site-ui/docs/pyric-ui-traffic-reference-api/index.html +1 -1
  344. package/dist/serve/site-ui/docs/reference/cli/index.html +6 -3
  345. package/dist/serve/site-ui/docs/reference/cli.md +8 -2
  346. package/dist/serve/site-ui/docs/rules-compat/index.html +10 -2
  347. package/dist/serve/site-ui/docs/rules-compat.md +9 -1
  348. package/dist/serve/site-ui/docs/secure/audit-your-rules/index.html +1 -1
  349. package/dist/serve/site-ui/docs/secure/firestore-rules-limits/index.html +1 -1
  350. package/dist/serve/site-ui/docs/secure/read-a-denial/index.html +1 -1
  351. package/dist/serve/site-ui/docs/secure/rtdb-rules-in-typescript/index.html +1 -1
  352. package/dist/serve/site-ui/docs/secure/rules-standard-library/index.html +1 -1
  353. package/dist/serve/site-ui/docs/secure/secure-it-with-rules/index.html +1 -1
  354. package/dist/serve/site-ui/docs/secure/simulate-and-lint/index.html +1 -1
  355. package/dist/serve/site-ui/docs/secure/write-a-rules-test-suite/index.html +1 -1
  356. package/dist/serve/site-ui/docs/ship/ship-to-production/index.html +1 -1
  357. package/dist/serve/site-ui/docs/ship/test-in-node/index.html +1 -1
  358. package/dist/serve/site-ui/docs/storage-compat/index.html +13 -13
  359. package/dist/serve/site-ui/docs/storage-compat.md +12 -12
  360. package/dist/serve/site-ui/docs/trust/how-we-know-it-matches-firebase/index.html +1 -1
  361. package/dist/serve/site-ui/docs/trust/rules-standard-library/index.html +1 -1
  362. package/dist/serve/site-ui/docs/trust/versioning-and-compatibility/index.html +1 -1
  363. package/dist/serve/site-ui/docs/tutorial/index.html +1 -1
  364. package/dist/serve/site-ui/examples/chess/index.html +1 -1
  365. package/dist/serve/site-ui/firestore/index.html +1 -1
  366. package/dist/serve/site-ui/llms.txt +9 -0
  367. package/dist/serve/site-ui/rtdb/index.html +1 -1
  368. package/dist/serve/site-ui/settings/index.html +1 -1
  369. package/dist/serve/site-ui/storage/index.html +1 -1
  370. package/dist/serve/site-ui/studio/index.html +1 -1
  371. package/dist/serve/site-ui/traffic/index.html +1 -1
  372. package/dist/serve/studio/disk-workspace.d.ts.map +1 -1
  373. package/dist/serve/studio/disk-workspace.js +64 -2
  374. package/dist/serve/studio/disk-workspace.js.map +1 -1
  375. package/dist/serve/vite-plugin.d.ts +7 -7
  376. package/dist/serve/vite-plugin.js +1 -1
  377. package/dist/serve/vite-plugin.js.map +1 -1
  378. package/dist/serve/vite-sandbox-generation.d.ts.map +1 -1
  379. package/dist/serve/vite-sandbox-generation.js +12 -0
  380. package/dist/serve/vite-sandbox-generation.js.map +1 -1
  381. package/dist/serve/worker/client/auth.js +1 -2
  382. package/dist/serve/worker/client/auth.js.map +1 -1
  383. package/dist/serve/worker/client/core.d.ts +21 -1
  384. package/dist/serve/worker/client/core.d.ts.map +1 -1
  385. package/dist/serve/worker/client/core.js +79 -3
  386. package/dist/serve/worker/client/core.js.map +1 -1
  387. package/dist/serve/worker/client.d.ts +1 -1
  388. package/dist/serve/worker/client.d.ts.map +1 -1
  389. package/dist/serve/worker/client.js +1 -1
  390. package/dist/serve/worker/client.js.map +1 -1
  391. package/dist/serve/worker/context-resolver.d.ts +30 -0
  392. package/dist/serve/worker/context-resolver.d.ts.map +1 -0
  393. package/dist/serve/worker/context-resolver.js +44 -0
  394. package/dist/serve/worker/context-resolver.js.map +1 -0
  395. package/dist/serve/worker/entry.js +23 -19
  396. package/dist/serve/worker/entry.js.map +1 -1
  397. package/dist/serve/worker/host/core.d.ts +1 -0
  398. package/dist/serve/worker/host/core.d.ts.map +1 -1
  399. package/dist/serve/worker/host/core.js +12 -6
  400. package/dist/serve/worker/host/core.js.map +1 -1
  401. package/dist/serve/worker/host/storage.js +2 -2
  402. package/dist/serve/worker/host-auth.js +1 -2
  403. package/dist/serve/worker/host-auth.js.map +1 -1
  404. package/dist/serve/worker/index.d.ts +1 -1
  405. package/dist/serve/worker/index.d.ts.map +1 -1
  406. package/dist/serve/worker/index.js +2 -2
  407. package/dist/serve/worker/index.js.map +1 -1
  408. package/dist/serve/worker/port-lifecycle.d.ts +18 -0
  409. package/dist/serve/worker/port-lifecycle.d.ts.map +1 -0
  410. package/dist/serve/worker/port-lifecycle.js +28 -0
  411. package/dist/serve/worker/port-lifecycle.js.map +1 -0
  412. package/dist/serve/worker/serve-init.d.ts.map +1 -1
  413. package/dist/serve/worker/serve-init.js +8 -2
  414. package/dist/serve/worker/serve-init.js.map +1 -1
  415. package/dist/verify/fixture.d.ts +1 -1
  416. package/package.json +16 -5
  417. package/src/assurance/.generated/conformance-verdicts.ts +68 -1
  418. package/src/bridge/client/dispatch.ts +52 -56
  419. package/src/bridge/client/tool-family-factories.ts +34 -0
  420. package/src/bridge/server/mcp-contract.ts +15 -59
  421. package/src/bridge/server/peer.ts +24 -1
  422. package/src/bridge/server/tool-family-factories.ts +40 -0
  423. package/src/bridge/server/tool-metadata.ts +29 -61
  424. package/src/bridge/tool-families.generated.ts +17 -0
  425. package/src/bridge/tool-families.ts +87 -0
  426. package/src/bridge/tool-family-records/conformance.ts +6 -0
  427. package/src/bridge/tool-family-records/firestore-data.ts +15 -0
  428. package/src/bridge/tool-family-records/firestore-inspect.ts +6 -0
  429. package/src/bridge/tool-family-records/firestore-rules.ts +15 -0
  430. package/src/bridge/tool-family-records/firestore-simulator.ts +16 -0
  431. package/src/bridge/tool-family-records/rtdb-inspection.ts +6 -0
  432. package/src/bundler/externals.ts +55 -0
  433. package/src/bundler/index.ts +21 -0
  434. package/src/cli/cli.test.ts +0 -44
  435. package/src/cli/inlined-sdk-scanner.ts +77 -0
  436. package/src/cli/sandbox-interlock.ts +167 -0
  437. package/src/cli/sandbox-runner.ts +37 -26
  438. package/src/cli/serve.ts +68 -69
  439. package/src/cli/unsupported-runtime.ts +68 -0
  440. package/src/conformance/.generated/can-i-use-browser.ts +2 -2
  441. package/src/conformance/.generated/can-i-use.ts +2 -2
  442. package/src/conformance/.generated/conformance-docs.ts +1 -1
  443. package/src/functions-rtdb/child.ts +115 -21
  444. package/src/functions-rtdb/development-runtime.ts +4 -0
  445. package/src/google-endpoints.ts +155 -0
  446. package/src/next/runtime-env.ts +5 -0
  447. package/src/next/with-pyric.ts +1 -1
  448. package/src/register/beacon.ts +232 -0
  449. package/src/register/index.ts +68 -6
  450. package/src/register/net-guard.ts +567 -0
  451. package/src/serve/ai-diagnostics-relay.ts +243 -0
  452. package/src/serve/ai-proxy.ts +327 -0
  453. package/src/serve/ai-status.ts +109 -0
  454. package/src/serve/ai-terminal-blocks.ts +210 -0
  455. package/src/serve/ai-terminal-text.ts +52 -0
  456. package/src/serve/beacon-route.ts +141 -0
  457. package/src/serve/entries/active-auth-registry.ts +56 -0
  458. package/src/serve/entries/active-auth.ts +100 -0
  459. package/src/serve/entries/auth-helper-core.ts +5 -0
  460. package/src/serve/entries/auth-helper-dom.ts +26 -2
  461. package/src/serve/entries/auth.ts +8 -0
  462. package/src/serve/entries/bridge-url.ts +1 -1
  463. package/src/serve/entries/init.ts +78 -3
  464. package/src/serve/entries/runtime.ts +10 -0
  465. package/src/serve/namespace.ts +73 -140
  466. package/src/serve/runtime/chip-config.ts +16 -2
  467. package/src/serve/runtime/chip-dialog.ts +366 -0
  468. package/src/serve/runtime/chip-install.ts +10 -4
  469. package/src/serve/runtime/chip-user-search.ts +391 -0
  470. package/src/serve/runtime/chip.ts +140 -15
  471. package/src/serve/runtime/identity.ts +26 -0
  472. package/src/serve/sandbox-session.ts +9 -0
  473. package/src/serve/studio/disk-workspace.ts +76 -2
  474. package/src/serve/vite-plugin.ts +8 -8
  475. package/src/serve/vite-sandbox-generation.ts +15 -0
  476. package/src/serve/worker/client/auth.ts +1 -1
  477. package/src/serve/worker/client/core.ts +80 -3
  478. package/src/serve/worker/client.ts +1 -1
  479. package/src/serve/worker/context-resolver.ts +60 -0
  480. package/src/serve/worker/entry.ts +22 -18
  481. package/src/serve/worker/host/core.ts +9 -7
  482. package/src/serve/worker/host/storage.ts +2 -2
  483. package/src/serve/worker/host-auth.ts +1 -1
  484. package/src/serve/worker/index.ts +4 -1
  485. package/src/serve/worker/port-lifecycle.ts +45 -0
  486. package/src/serve/worker/serve-init.ts +9 -2
  487. package/src/verify/fixture.ts +1 -1
  488. package/dist/serve/site-ui/_astro/app.B52xr-DK.js +0 -1
  489. package/dist/serve/site-ui/_astro/app.DWBraPUw.js +0 -12
  490. package/dist/serve/site-ui/_astro/sandbox-controls.DEpnKg-O.js +0 -1169
  491. package/dist/serve/site-ui/_astro/writes.rpjrFzmu.js +0 -102
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Detect a served frontend build that inlined the real Firebase SDK.
3
+ *
4
+ * The served import map remaps only bare `firebase/*` specifiers, so a plain
5
+ * `vite build` that compiled the SDK into an app chunk cannot be sandboxed:
6
+ * its calls reach real Google endpoints while the injected banner claims
7
+ * otherwise. `cli/serve.ts` refuses such a dist rather than serving it.
8
+ *
9
+ * Only the SDK fingerprint hosts are matched, never the full endpoint catalog.
10
+ * This check throws, and a dist can legitimately carry a bare callable URL, a
11
+ * public asset URL, or a `databaseURL` literal without any Firebase SDK in it.
12
+ *
13
+ * Backend bundles are deliberately out of scope. `withPyric` externalizes
14
+ * firebase and firebase-admin, the backend-bundler docs tell users to mark them
15
+ * external, and the net guard reports real egress at runtime with attribution,
16
+ * which a grep over build output cannot do.
17
+ */
18
+ import { readdirSync, readFileSync, statSync } from 'node:fs';
19
+ import { join } from 'node:path';
20
+ import { SDK_FINGERPRINT_HOSTS } from '../google-endpoints.js';
21
+ /** Depth limit for the walk. */
22
+ const MAX_DEPTH = 4;
23
+ /** Total script files read. */
24
+ const MAX_FILES = 200;
25
+ /** Script extensions worth reading in served frontend output. */
26
+ const SCRIPT_FILE = /\.(js|mjs)$/;
27
+ /**
28
+ * Scan `dir` for inlined SDK fingerprints and return the offending paths,
29
+ * relative to `dir`. Bounded: depth 4, 200 script files, first hit per file.
30
+ */
31
+ export function scanForInlinedFirebase(dir) {
32
+ const hits = [];
33
+ let scanned = 0;
34
+ const walk = (current, rel, depth) => {
35
+ if (depth > MAX_DEPTH || scanned >= MAX_FILES)
36
+ return;
37
+ let names;
38
+ try {
39
+ names = readdirSync(current);
40
+ }
41
+ catch {
42
+ return;
43
+ }
44
+ for (const name of names) {
45
+ if (scanned >= MAX_FILES)
46
+ return;
47
+ const path = join(current, name);
48
+ const relPath = rel ? `${rel}/${name}` : name;
49
+ let stat;
50
+ try {
51
+ stat = statSync(path);
52
+ }
53
+ catch {
54
+ continue;
55
+ }
56
+ if (stat.isDirectory()) {
57
+ // The pyric namespace itself never lands in hosting.public, but a
58
+ // node_modules inside a served dir would be a scan-cost trap.
59
+ // Dot-directories (.next, .git, .pyric) are internal caches.
60
+ if (name === 'node_modules' || name.startsWith('.'))
61
+ continue;
62
+ walk(path, relPath, depth + 1);
63
+ continue;
64
+ }
65
+ if (!SCRIPT_FILE.test(name))
66
+ continue;
67
+ scanned++;
68
+ let text;
69
+ try {
70
+ text = readFileSync(path, 'utf8');
71
+ }
72
+ catch {
73
+ continue; // unreadable asset
74
+ }
75
+ if (SDK_FINGERPRINT_HOSTS.some((host) => text.includes(host)))
76
+ hits.push(relPath);
77
+ }
78
+ };
79
+ walk(dir, '', 0);
80
+ return hits;
81
+ }
82
+ //# sourceMappingURL=inlined-sdk-scanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inlined-sdk-scanner.js","sourceRoot":"","sources":["../../src/cli/inlined-sdk-scanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,gCAAgC;AAChC,MAAM,SAAS,GAAG,CAAC,CAAC;AAEpB,+BAA+B;AAC/B,MAAM,SAAS,GAAG,GAAG,CAAC;AAEtB,iEAAiE;AACjE,MAAM,WAAW,GAAG,aAAa,CAAC;AAElC;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAW;IAChD,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,MAAM,IAAI,GAAG,CAAC,OAAe,EAAE,GAAW,EAAE,KAAa,EAAQ,EAAE;QACjE,IAAI,KAAK,GAAG,SAAS,IAAI,OAAO,IAAI,SAAS;YAAE,OAAO;QACtD,IAAI,KAAe,CAAC;QACpB,IAAI,CAAC;YACH,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,OAAO,IAAI,SAAS;gBAAE,OAAO;YACjC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACjC,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9C,IAAI,IAAI,CAAC;YACT,IAAI,CAAC;gBACH,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YACD,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBACvB,kEAAkE;gBAClE,8DAA8D;gBAC9D,6DAA6D;gBAC7D,IAAI,IAAI,KAAK,cAAc,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;oBAAE,SAAS;gBAC9D,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;gBAC/B,SAAS;YACX,CAAC;YACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,SAAS;YACtC,OAAO,EAAE,CAAC;YACV,IAAI,IAAY,CAAC;YACjB,IAAI,CAAC;gBACH,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACpC,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS,CAAC,mBAAmB;YAC/B,CAAC;YACD,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpF,CAAC;IACH,CAAC,CAAC;IACF,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACjB,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,97 @@
1
+ import { type GuardMode } from '../register/net-guard.js';
2
+ /**
3
+ * What `pyric sandbox` can say about the interception it is about to hand the
4
+ * child, entirely from the env it just assembled: no waiting, no round trip.
5
+ */
6
+ export interface InterlockStatus {
7
+ /** Net-guard mode the child will run under (`PYRIC_GUARD`, default warn). */
8
+ readonly guard: GuardMode;
9
+ /** Whether `NODE_OPTIONS` actually carries the register `--import`. */
10
+ readonly registerImported: boolean;
11
+ /** Where the child's handshake beacon will land, or null when the
12
+ * activator carries no bridge URL. */
13
+ readonly beacon: string | null;
14
+ }
15
+ /**
16
+ * Read the interlock off the child env. Everything here is synchronous by
17
+ * construction: it is a statement about the launch, printed before anything at
18
+ * runtime has had a chance to go wrong.
19
+ */
20
+ export declare function describeInterlock(childEnv: NodeJS.ProcessEnv, registerUrl: string): InterlockStatus;
21
+ /**
22
+ * The startup status line, alongside the other `✔ <service>` checks.
23
+ *
24
+ * The healthy line is deliberately short: one fact per field and nothing the
25
+ * reader has to skim past. The degraded line is long because it reports a
26
+ * broken launch, which is worth every word.
27
+ */
28
+ export declare function formatInterlockLine(status: InterlockStatus): string;
29
+ export interface LaunchCheckOptions {
30
+ /** The environment the child is about to receive. */
31
+ readonly childEnv: NodeJS.ProcessEnv;
32
+ /** Absolute `file:` URL of the register module, to look for in NODE_OPTIONS. */
33
+ readonly registerUrl: string;
34
+ /** The child's argv, for the unsupported-runtime check. */
35
+ readonly argv: readonly string[];
36
+ readonly write: (line: string) => void;
37
+ }
38
+ /**
39
+ * Every statement the launcher makes about the child, printed in one block
40
+ * before the spawn, and the interlock status it derived on the way.
41
+ *
42
+ * Two checks: the interlock status line, from the env alone, and the
43
+ * unsupported-runtime warning for the other way interception can be absent, a
44
+ * child runtime that never evaluates Node loader hooks at all.
45
+ */
46
+ export declare function reportLaunchChecks(opts: LaunchCheckOptions): InterlockStatus;
47
+ export interface BeaconWatchdogOptions {
48
+ /** The child command, for attribution in the warning. */
49
+ readonly label: string;
50
+ /** The endpoint the child would post to. Null means nothing to watch. */
51
+ readonly beacon: string | null;
52
+ /** Whether a beacon from this child has been recorded. */
53
+ readonly sawBeacon: () => boolean;
54
+ /** Whether the child is still running. */
55
+ readonly isAlive: () => boolean;
56
+ readonly warn: (line: string) => void;
57
+ readonly graceMs?: number;
58
+ }
59
+ export interface BeaconWatchdog {
60
+ /** Cancel a pending check. Idempotent. */
61
+ stop(): void;
62
+ }
63
+ /** The warning itself: one paragraph naming what the silence means and what
64
+ * to check. Kept separate so its exact wording is testable. */
65
+ export declare function formatMissingBeaconWarning(opts: {
66
+ label: string;
67
+ graceMs: number;
68
+ beacon: string;
69
+ }): string;
70
+ /**
71
+ * The warn-only interlock watchdog.
72
+ *
73
+ * It never kills the child and never blocks a request. The reason is the
74
+ * signal's own honesty: beacon delivery is best-effort (see
75
+ * `register/beacon.ts`), and a plausible silent child is not the same thing as
76
+ * a broken one. A short-lived script that exits before its POST lands, a child
77
+ * that reaches the sandbox only through a grandchild, a dev server slow to
78
+ * boot: each would be killed by a fail-closed version of this check, and each
79
+ * is fine.
80
+ *
81
+ * So the heuristic is the simple, attributable one: the child is still alive
82
+ * `graceMs` after launch and no beacon has arrived. Both halves matter. An
83
+ * exited child was never expected to say anything, and a child whose beacon
84
+ * landed has already proved the point. One warning per child, guaranteed by
85
+ * the one-shot timer; the timer is unref'd so a watchdog can never be the
86
+ * reason a process stays up.
87
+ *
88
+ * `sawBeacon` is a count delta rather than a pid match, deliberately. The
89
+ * process that loads register is often a grandchild (`npm run dev` starts
90
+ * node, `next dev` starts its worker), so the spawned child's own pid is
91
+ * frequently not the pid in the beacon, and matching on it would warn about
92
+ * perfectly healthy launches. The delta's known imprecision runs the other
93
+ * way: a sibling runtime's beacon that lands inside the grace window can mask
94
+ * a real miss. Erring toward silence is the right bias for a warn-only check.
95
+ */
96
+ export declare function startBeaconWatchdog(opts: BeaconWatchdogOptions): BeaconWatchdog;
97
+ //# sourceMappingURL=sandbox-interlock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-interlock.d.ts","sourceRoot":"","sources":["../../src/cli/sandbox-interlock.ts"],"names":[],"mappings":"AAWA,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAG1E;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,6EAA6E;IAC7E,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,uEAAuE;IACvE,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC;2CACuC;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,CAAC,UAAU,EAC3B,WAAW,EAAE,MAAM,GAClB,eAAe,CAMjB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAQnE;AAED,MAAM,WAAW,kBAAkB;IACjC,qDAAqD;IACrD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC;IACrC,gFAAgF;IAChF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,2DAA2D;IAC3D,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,kBAAkB,GAAG,eAAe,CAM5E;AAKD,MAAM,WAAW,qBAAqB;IACpC,yDAAyD;IACzD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,yEAAyE;IACzE,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,0DAA0D;IAC1D,QAAQ,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC;IAClC,0CAA0C;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,0CAA0C;IAC1C,IAAI,IAAI,IAAI,CAAC;CACd;AAED;gEACgE;AAChE,wBAAgB,0BAA0B,CAAC,IAAI,EAAE;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,MAAM,CAUT;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,qBAAqB,GAAG,cAAc,CAc/E"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * The interlock: the launcher's statement about interception in the child it
3
+ * is about to start, plus the warn-only watchdog for the child's answer.
4
+ *
5
+ * The status line is knowable synchronously from the env `pyric sandbox` just
6
+ * assembled: guard mode, whether NODE_OPTIONS really carries the register
7
+ * import, and where the child's handshake beacon will land. The watchdog is
8
+ * the other half: a child still alive well after launch that never posted a
9
+ * beacon is probably not intercepted.
10
+ */
11
+ import { beaconEndpoint } from '../register/beacon.js';
12
+ import { parseGuardMode } from '../register/net-guard.js';
13
+ import { detectUnsupportedRuntime, formatUnsupportedRuntimeWarning } from './unsupported-runtime.js';
14
+ /**
15
+ * Read the interlock off the child env. Everything here is synchronous by
16
+ * construction: it is a statement about the launch, printed before anything at
17
+ * runtime has had a chance to go wrong.
18
+ */
19
+ export function describeInterlock(childEnv, registerUrl) {
20
+ return {
21
+ guard: parseGuardMode(childEnv.PYRIC_GUARD),
22
+ registerImported: (childEnv.NODE_OPTIONS ?? '').includes(`--import ${registerUrl}`),
23
+ beacon: beaconEndpoint(childEnv.PYRIC_SANDBOX),
24
+ };
25
+ }
26
+ /**
27
+ * The startup status line, alongside the other `✔ <service>` checks.
28
+ *
29
+ * The healthy line is deliberately short: one fact per field and nothing the
30
+ * reader has to skim past. The degraded line is long because it reports a
31
+ * broken launch, which is worth every word.
32
+ */
33
+ export function formatInterlockLine(status) {
34
+ if (!status.registerImported) {
35
+ return (`⚠ interlock guard=${status.guard}, register is NOT in the child's NODE_OPTIONS. ` +
36
+ `Its firebase-admin/firebase imports will NOT be rewritten and would reach LIVE Firebase.\n`);
37
+ }
38
+ return `✔ interlock guard=${status.guard}, register loaded via NODE_OPTIONS\n`;
39
+ }
40
+ /**
41
+ * Every statement the launcher makes about the child, printed in one block
42
+ * before the spawn, and the interlock status it derived on the way.
43
+ *
44
+ * Two checks: the interlock status line, from the env alone, and the
45
+ * unsupported-runtime warning for the other way interception can be absent, a
46
+ * child runtime that never evaluates Node loader hooks at all.
47
+ */
48
+ export function reportLaunchChecks(opts) {
49
+ const interlock = describeInterlock(opts.childEnv, opts.registerUrl);
50
+ opts.write(formatInterlockLine(interlock));
51
+ const unsupportedRuntime = detectUnsupportedRuntime(opts.argv);
52
+ if (unsupportedRuntime !== null)
53
+ opts.write(formatUnsupportedRuntimeWarning(unsupportedRuntime));
54
+ return interlock;
55
+ }
56
+ /** How long a child may live without its beacon before we say something. */
57
+ const BEACON_GRACE_MS = 15_000;
58
+ /** The warning itself: one paragraph naming what the silence means and what
59
+ * to check. Kept separate so its exact wording is testable. */
60
+ export function formatMissingBeaconWarning(opts) {
61
+ const seconds = Math.round(opts.graceMs / 1000);
62
+ return (` ⚠ interlock: \`${opts.label}\` has been running ${seconds}s without posting a register ` +
63
+ `beacon to ${opts.beacon}. Its firebase-admin/firebase imports are probably NOT routed to ` +
64
+ `the pyric sandbox, which means they would reach LIVE Firebase. Check that the command starts ` +
65
+ `a Node process (bun and deno do not evaluate Node loader hooks), that it does not overwrite ` +
66
+ `NODE_OPTIONS, and that NODE_ENV is not production. Warning only: nothing was blocked, and ` +
67
+ `this is reported once per child.`);
68
+ }
69
+ /**
70
+ * The warn-only interlock watchdog.
71
+ *
72
+ * It never kills the child and never blocks a request. The reason is the
73
+ * signal's own honesty: beacon delivery is best-effort (see
74
+ * `register/beacon.ts`), and a plausible silent child is not the same thing as
75
+ * a broken one. A short-lived script that exits before its POST lands, a child
76
+ * that reaches the sandbox only through a grandchild, a dev server slow to
77
+ * boot: each would be killed by a fail-closed version of this check, and each
78
+ * is fine.
79
+ *
80
+ * So the heuristic is the simple, attributable one: the child is still alive
81
+ * `graceMs` after launch and no beacon has arrived. Both halves matter. An
82
+ * exited child was never expected to say anything, and a child whose beacon
83
+ * landed has already proved the point. One warning per child, guaranteed by
84
+ * the one-shot timer; the timer is unref'd so a watchdog can never be the
85
+ * reason a process stays up.
86
+ *
87
+ * `sawBeacon` is a count delta rather than a pid match, deliberately. The
88
+ * process that loads register is often a grandchild (`npm run dev` starts
89
+ * node, `next dev` starts its worker), so the spawned child's own pid is
90
+ * frequently not the pid in the beacon, and matching on it would warn about
91
+ * perfectly healthy launches. The delta's known imprecision runs the other
92
+ * way: a sibling runtime's beacon that lands inside the grace window can mask
93
+ * a real miss. Erring toward silence is the right bias for a warn-only check.
94
+ */
95
+ export function startBeaconWatchdog(opts) {
96
+ const beacon = opts.beacon;
97
+ if (beacon === null)
98
+ return { stop: () => { } };
99
+ const graceMs = opts.graceMs ?? BEACON_GRACE_MS;
100
+ const timer = setTimeout(() => {
101
+ if (opts.sawBeacon() || !opts.isAlive())
102
+ return;
103
+ opts.warn(formatMissingBeaconWarning({ label: opts.label, graceMs, beacon }));
104
+ }, graceMs);
105
+ timer.unref?.();
106
+ return {
107
+ stop() {
108
+ clearTimeout(timer);
109
+ },
110
+ };
111
+ }
112
+ //# sourceMappingURL=sandbox-interlock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-interlock.js","sourceRoot":"","sources":["../../src/cli/sandbox-interlock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAkB,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,+BAA+B,EAAE,MAAM,0BAA0B,CAAC;AAgBrG;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAA2B,EAC3B,WAAmB;IAEnB,OAAO;QACL,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC3C,gBAAgB,EAAE,CAAC,QAAQ,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,YAAY,WAAW,EAAE,CAAC;QACnF,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,aAAa,CAAC;KAC/C,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAuB;IACzD,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC7B,OAAO,CACL,qBAAqB,MAAM,CAAC,KAAK,iDAAiD;YAClF,4FAA4F,CAC7F,CAAC;IACJ,CAAC;IACD,OAAO,qBAAqB,MAAM,CAAC,KAAK,sCAAsC,CAAC;AACjF,CAAC;AAYD;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAwB;IACzD,MAAM,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACrE,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC;IAC3C,MAAM,kBAAkB,GAAG,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D,IAAI,kBAAkB,KAAK,IAAI;QAAE,IAAI,CAAC,KAAK,CAAC,+BAA+B,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACjG,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,4EAA4E;AAC5E,MAAM,eAAe,GAAG,MAAM,CAAC;AAoB/B;gEACgE;AAChE,MAAM,UAAU,0BAA0B,CAAC,IAI1C;IACC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAChD,OAAO,CACL,oBAAoB,IAAI,CAAC,KAAK,uBAAuB,OAAO,+BAA+B;QAC3F,aAAa,IAAI,CAAC,MAAM,mEAAmE;QAC3F,+FAA+F;QAC/F,8FAA8F;QAC9F,4FAA4F;QAC5F,kCAAkC,CACnC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAA2B;IAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;IAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,eAAe,CAAC;IAChD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;QAC5B,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAAE,OAAO;QAChD,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAChF,CAAC,EAAE,OAAO,CAAC,CAAC;IACZ,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;IAChB,OAAO;QACL,IAAI;YACF,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -71,25 +71,33 @@ export declare function resolveSandboxChild(opts: ResolveSandboxChildOptions): S
71
71
  * dist/register/), for runtimes without a usable import.meta.resolve.
72
72
  */
73
73
  export declare function registerModuleUrl(): string;
74
+ /** What the launcher has to put in a child's environment for interception. */
75
+ export interface ChildActivation {
76
+ /** The serve host the child's sandbox calls reach. */
77
+ readonly serveUrl: string;
78
+ /** Absolute `file:` URL of the register module. */
79
+ readonly registerUrl: string;
80
+ /** The per-launch secret the child's handshake beacon must present.
81
+ * Absent when the launcher runs no beacon receiver, as the Vite plugin's
82
+ * Functions runtime does; the child then reports on stderr only. */
83
+ readonly beaconToken?: string | undefined;
84
+ }
74
85
  /**
75
- * Child env: sets the activator and APPENDS the loader to NODE_OPTIONS —
76
- * never replaces it (the user's own --inspect / --max-old-space-size etc.
77
- * must survive). `file:` URLs are percent-encoded, so no quoting is needed
78
- * even for paths with spaces.
86
+ * Child env: sets the activator and the beacon secret, and APPENDS the loader
87
+ * to NODE_OPTIONS rather than replacing it (the user's own --inspect /
88
+ * --max-old-space-size and so on must survive). `file:` URLs are
89
+ * percent-encoded, so no quoting is needed even for paths with spaces.
79
90
  */
80
- export declare function buildChildEnv(base: NodeJS.ProcessEnv, opts: {
81
- serveUrl: string;
82
- registerUrl: string;
83
- }): NodeJS.ProcessEnv;
91
+ export declare function buildChildEnv(base: NodeJS.ProcessEnv, opts: ChildActivation): NodeJS.ProcessEnv;
84
92
  /**
85
93
  * Format copy-pasteable POSIX export statements for host-only startup.
86
94
  * Grouped in a cleanly formatted console block for easy selection and copying
87
95
  * into a separate terminal (for example, when running Next.js independently).
96
+ *
97
+ * The beacon secret is part of the block: without it a process started this
98
+ * way still intercepts, but the dev server cannot confirm that it did.
88
99
  */
89
- export declare function formatStartupEnvExport(opts: {
90
- serveUrl: string;
91
- registerUrl: string;
92
- }): string;
100
+ export declare function formatStartupEnvExport(opts: ChildActivation): string;
93
101
  /**
94
102
  * Incremental line prefixer: every child output line gets `[dev] `, partial
95
103
  * lines are buffered until their newline (or flush at stream end).
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox-runner.d.ts","sourceRoot":"","sources":["../../src/cli/sandbox-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAI9D;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE;IACJ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAClC,GACL,OAAO,CAAC,OAAO,CAAC,CAmBlB;AAID,MAAM,WAAW,gBAAgB;IAC/B,iDAAiD;IACjD,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,YAAY,GAAG,gBAAgB,CAAC;AAE5C;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAcxD;AAED,MAAM,WAAW,0BAA0B;IACzC,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,0BAA0B,GAAG,gBAAgB,GAAG,IAAI,CAuB7F;AAID;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAQ1C;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,CAAC,UAAU,EACvB,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC9C,MAAM,CAAC,UAAU,CAOnB;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAc9F;AAID;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC5B;IAAE,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,IAAI,IAAI,CAAA;CAAE,CAkB9C;AASD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACxB,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IAClC,KAAK,EAAE,YAAY,CAAC;CACrB;AAED,MAAM,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAEhD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,gBAAgB,EACtB,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC3D,kBAAkB,CAoGpB;AAED,eAAO,MAAM,aAAa,0BAAoB,CAAC"}
1
+ {"version":3,"file":"sandbox-runner.d.ts","sourceRoot":"","sources":["../../src/cli/sandbox-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAK9D;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE;IACJ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAClC,GACL,OAAO,CAAC,OAAO,CAAC,CAmBlB;AAID,MAAM,WAAW,gBAAgB;IAC/B,iDAAiD;IACjD,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,YAAY,GAAG,gBAAgB,CAAC;AAE5C;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAcxD;AAED,MAAM,WAAW,0BAA0B;IACzC,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,0BAA0B,GAAG,gBAAgB,GAAG,IAAI,CAuB7F;AAID;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAQ1C;AAED,8EAA8E;AAC9E,MAAM,WAAW,eAAe;IAC9B,sDAAsD;IACtD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,mDAAmD;IACnD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;;yEAEqE;IACrE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3C;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,CAAC,UAAU,EACvB,IAAI,EAAE,eAAe,GACpB,MAAM,CAAC,UAAU,CASnB;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAgBpE;AAID;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC5B;IAAE,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,IAAI,IAAI,CAAA;CAAE,CAkB9C;AAOD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACxB,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IAClC,KAAK,EAAE,YAAY,CAAC;CACrB;AAED,MAAM,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAEhD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,gBAAgB,EACtB,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC3D,kBAAkB,CA6FpB;AAED,eAAO,MAAM,aAAa,0BAAoB,CAAC"}
@@ -16,6 +16,7 @@
16
16
  * only `spawnDevChild` touches the process table.
17
17
  */
18
18
  import { spawn } from 'node:child_process';
19
+ import { SHELL_OPERATORS } from './unsupported-runtime.js';
19
20
  // ─── First-run race guard ───────────────────────────────────────────────────
20
21
  /**
21
22
  * Wait (bounded) for a browser tab to register as the bridge's sandbox peer
@@ -124,35 +125,43 @@ export function registerModuleUrl() {
124
125
  return new URL('../register/index.js', import.meta.url).href;
125
126
  }
126
127
  /**
127
- * Child env: sets the activator and APPENDS the loader to NODE_OPTIONS —
128
- * never replaces it (the user's own --inspect / --max-old-space-size etc.
129
- * must survive). `file:` URLs are percent-encoded, so no quoting is needed
130
- * even for paths with spaces.
128
+ * Child env: sets the activator and the beacon secret, and APPENDS the loader
129
+ * to NODE_OPTIONS rather than replacing it (the user's own --inspect /
130
+ * --max-old-space-size and so on must survive). `file:` URLs are
131
+ * percent-encoded, so no quoting is needed even for paths with spaces.
131
132
  */
132
133
  export function buildChildEnv(base, opts) {
133
134
  const importFlag = `--import ${opts.registerUrl}`;
134
- return {
135
+ const env = {
135
136
  ...base,
136
137
  PYRIC_SANDBOX: `remote:${opts.serveUrl}`,
137
138
  NODE_OPTIONS: base.NODE_OPTIONS ? `${base.NODE_OPTIONS} ${importFlag}` : importFlag,
138
139
  };
140
+ if (opts.beaconToken !== undefined)
141
+ env.PYRIC_BEACON_TOKEN = opts.beaconToken;
142
+ return env;
139
143
  }
140
144
  /**
141
145
  * Format copy-pasteable POSIX export statements for host-only startup.
142
146
  * Grouped in a cleanly formatted console block for easy selection and copying
143
147
  * into a separate terminal (for example, when running Next.js independently).
148
+ *
149
+ * The beacon secret is part of the block: without it a process started this
150
+ * way still intercepts, but the dev server cannot confirm that it did.
144
151
  */
145
152
  export function formatStartupEnvExport(opts) {
146
- const pyricSandbox = `remote:${opts.serveUrl}`;
147
- const nodeOptions = `--import ${opts.registerUrl}`;
148
- const line1 = `export PYRIC_SANDBOX="${pyricSandbox}"`;
149
- const line2 = `export NODE_OPTIONS="${nodeOptions}"`;
150
- const divider = '─'.repeat(Math.max(line1.length, line2.length) + 4);
153
+ const lines = [`export PYRIC_SANDBOX="remote:${opts.serveUrl}"`];
154
+ if (opts.beaconToken !== undefined) {
155
+ lines.push(`export PYRIC_BEACON_TOKEN="${opts.beaconToken}"`);
156
+ }
157
+ lines.push(`export NODE_OPTIONS="--import ${opts.registerUrl}"`);
158
+ const width = Math.max(...lines.map((line) => line.length));
159
+ const divider = '─'.repeat(width + 4);
160
+ const body = lines.map((line) => ` ${line}\n`).join('');
151
161
  return ('\n' +
152
162
  ' To run external commands against this sandbox, paste in another terminal:\n' +
153
163
  ` ${divider}\n` +
154
- ` ${line1}\n` +
155
- ` ${line2}\n` +
164
+ body +
156
165
  ` ${divider}\n`);
157
166
  }
158
167
  // ─── Line prefixing (pure core) ────────────────────────────────────────────
@@ -182,7 +191,6 @@ export function createLinePrefixer(prefix, write) {
182
191
  // ─── Spawn + lifecycle ─────────────────────────────────────────────────────
183
192
  /** How long a signalled child may linger before SIGKILL. */
184
193
  const FORCE_KILL_AFTER_MS = 2_000;
185
- const SHELL_OPERATORS = new Set(['&&', '||', '|', ';', '&']);
186
194
  /**
187
195
  * Spawn the child with inherited stdin and `[dev]`-prefixed stdout/stderr.
188
196
  * In `--json` mode ALL child output goes to stderr — stdout carries exactly
@@ -201,14 +209,9 @@ export function spawnSandboxChild(plan, opts) {
201
209
  }
202
210
  // 2. Check for discrete shell operators (&&, ||, |, ;) among top-level tokens
203
211
  const hasShellOperators = parts.some((token) => SHELL_OPERATORS.has(token));
204
- // 3. Warn if runtime is bun or deno
205
- if (parts.length > 0 && (parts[0] === 'bun' || parts[0] === 'deno')) {
206
- const runner = parts[0];
207
- const target = opts.json ? process.stderr : process.stdout;
208
- target.write(` ⚠ ${runner} detected: pyric intercepts Firebase imports via Node.js module loader hooks (NODE_OPTIONS="--import ..."). ` +
209
- `${runner} does not evaluate Node loader hooks — SDK calls in this process will not reach the pyric sandbox. ` +
210
- `Use \`node\` (or \`npx tsx\`) to run with the sandbox swap.\n`);
211
- }
212
+ // The bun/deno warning is emitted by the launch seam in serve.ts, alongside
213
+ // the interlock line, so every pre-spawn statement about the child prints in
214
+ // one block and in order.
212
215
  const [command, ...args] = parts;
213
216
  let child;
214
217
  if (hasShellOperators) {
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox-runner.js","sourceRoot":"","sources":["../../src/cli/sandbox-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sandbox-runner.js","sourceRoot":"","sources":["../../src/cli/sandbox-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,+EAA+E;AAE/E;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAAgB,EAChB,OAKI,EAAE;IAEN,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC;IAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC;IAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5E,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACxC,SAAS,CAAC;QACR,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC;YAC7E,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;gBACX,MAAM,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAmC,CAAC;gBACpE,IAAI,MAAM,CAAC,gBAAgB,KAAK,IAAI;oBAAE,OAAO,IAAI,CAAC;YACpD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,uDAAuD;QACzD,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ;YAAE,OAAO,KAAK,CAAC;QACzC,MAAM,KAAK,CAAC,UAAU,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAaD;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,+BAA+B,CAAC;IAC9C,IAAI,KAA6B,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC1C,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;aAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAUD;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAgC;IAClE,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAE5B,IAAI,aAAa,GAAoB,IAAI,CAAC;IAC1C,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5D,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC;IACvC,CAAC;SAAM,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3D,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC;IACnC,CAAC;IAED,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;QAC3B,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,aAAa,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACtE,CAAC;IAED,IAAI,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAE3B,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACzC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAClC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAE9E;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QACvD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;IACD,OAAO,IAAI,GAAG,CAAC,sBAAsB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AAC/D,CAAC;AAcD;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAC3B,IAAuB,EACvB,IAAqB;IAErB,MAAM,UAAU,GAAG,YAAY,IAAI,CAAC,WAAW,EAAE,CAAC;IAClD,MAAM,GAAG,GAAsB;QAC7B,GAAG,IAAI;QACP,aAAa,EAAE,UAAU,IAAI,CAAC,QAAQ,EAAE;QACxC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,UAAU;KACpF,CAAC;IACF,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;QAAE,GAAG,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC;IAC9E,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAqB;IAC1D,MAAM,KAAK,GAAG,CAAC,gCAAgC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IACjE,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,8BAA8B,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;IAChE,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,iCAAiC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;IACjE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzD,OAAO,CACL,IAAI;QACJ,+EAA+E;QAC/E,KAAK,OAAO,IAAI;QAChB,IAAI;QACJ,KAAK,OAAO,IAAI,CACjB,CAAC;AACJ,CAAC;AAED,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAc,EACd,KAA6B;IAE7B,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,OAAO;QACL,IAAI,CAAC,KAAa;YAChB,MAAM,IAAI,KAAK,CAAC;YAChB,IAAI,EAAU,CAAC;YACf,OAAO,CAAC,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBAC1C,KAAK,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC3C,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QACD,KAAK;YACH,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,KAAK,CAAC,GAAG,MAAM,GAAG,MAAM,IAAI,CAAC,CAAC;gBAC9B,MAAM,GAAG,EAAE,CAAC;YACd,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,8EAA8E;AAE9E,4DAA4D;AAC5D,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAUlC;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAsB,EACtB,IAA4D;IAE5D,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,GAAG,GAAsB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE/C,yEAAyE;IACzE,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC;QACtE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;QAC7B,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/B,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAChC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,8EAA8E;IAC9E,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAE5E,4EAA4E;IAC5E,6EAA6E;IAC7E,0BAA0B;IAE1B,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC;IACjC,IAAI,KAAmB,CAAC;IACxB,IAAI,iBAAiB,EAAE,CAAC;QACtB,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE;YAC5B,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,GAAG;YACH,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;YAClC,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO;SACvC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,KAAK,CAAC,OAAQ,EAAE,IAAI,EAAE;YAC5B,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,GAAG;YACH,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;YAClC,KAAK,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO;YACnC,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO;SACvC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IAC9D,MAAM,GAAG,GAAG,kBAAkB,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1E,MAAM,GAAG,GAAG,kBAAkB,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/E,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7D,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAE7D,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,UAAU,GAAyC,IAAI,CAAC;IAC5D,MAAM,QAAQ,GAAG,CAAC,MAAsB,EAAQ,EAAE;QAChD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;QAC7C,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC;YACvF,OAAO,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YAClC,GAAG,CAAC,KAAK,EAAE,CAAC;YACZ,GAAG,CAAC,KAAK,EAAE,CAAC;YACZ,IAAI,UAAU;gBAAE,YAAY,CAAC,UAAU,CAAC,CAAC;YACzC,kEAAkE;YAClE,IAAI,SAAS;gBAAE,OAAO,CAAC,CAAC,CAAC,CAAC;iBACrB,IAAI,OAAO,IAAI,KAAK,QAAQ;gBAAE,OAAO,CAAC,IAAI,CAAC,CAAC;;gBAC5C,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,MAAM;QACN,KAAK;QACL,MAAM,CAAC,GAAmB;YACxB,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,SAAS;gBAAE,OAAO;YACjD,SAAS,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC;gBACH,QAAQ,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO;YACT,CAAC;YACD,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC3B,IAAI,CAAC;oBACH,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACtB,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;YACZ,CAAC,EAAE,mBAAmB,CAAC,CAAC;YACxB,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,iBAAiB,CAAC"}
@@ -29,6 +29,12 @@ export interface ServeRuntime {
29
29
  restoredDocs: number;
30
30
  restoredUsers: number;
31
31
  } | null;
32
+ /** Handshake beacons posted to `/__pyric/beacon` so far, the interlock
33
+ * watchdog's only input. */
34
+ beaconCount: () => number;
35
+ /** The per-launch secret a beacon must present, placed in every child's
36
+ * `PYRIC_BEACON_TOKEN`. */
37
+ beaconToken: string;
32
38
  }
33
39
  /** The `--json` stdout contract — one line, keep stable; agents parse this.
34
40
  * Readiness probe: GET {url}/__pyric/init.json → 200 (body carries the live
@@ -110,15 +116,5 @@ export declare function bridgeEnabledFor(flags: {
110
116
  export declare function installServeProcessGuard(log: (message: string) => void, proc?: Pick<NodeJS.Process, 'on' | 'off'>): () => void;
111
117
  /** CLI entry. Resolves on SIGINT/SIGTERM after a clean stop. */
112
118
  export declare function runServe(parsed: ParsedArgs): Promise<number>;
113
- /**
114
- * Detect a bundler build that INLINED the real firebase SDK into its served
115
- * assets (`vite build` output). The served import map remaps only bare
116
- * `firebase/*` specifiers, so such a build cannot be sandboxed — its calls
117
- * reach real Google endpoints. Fingerprints are real-SDK-only endpoint hosts
118
- * that never appear in a sandbox-clean app (whose calls all route to
119
- * `/__pyric/*`). Bounded: depth ≤ 4, ≤ 200 script files, first hit per file.
120
- * Returns publicDir-relative paths of offending assets.
121
- */
122
- export declare function scanForInlinedFirebase(dir: string): string[];
123
119
  export {};
124
120
  //# sourceMappingURL=serve.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/cli/serve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/cli/serve.ts"],"names":[],"mappings":"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"}