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

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 (502) hide show
  1. package/README.md +64 -89
  2. package/dist/assurance/.generated/conformance-verdicts.d.ts +238 -1
  3. package/dist/assurance/.generated/conformance-verdicts.d.ts.map +1 -1
  4. package/dist/assurance/.generated/conformance-verdicts.js +238 -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.CMmTxyhL.js +1 -0
  212. package/dist/serve/site-ui/_astro/app.DhALsVii.js +115 -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.lywYbXZ0.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 +2 -2
  232. package/dist/serve/site-ui/docs/build/authentication.md +1 -1
  233. package/dist/serve/site-ui/docs/build/cloud-firestore/index.html +4 -2
  234. package/dist/serve/site-ui/docs/build/cloud-firestore.md +4 -0
  235. package/dist/serve/site-ui/docs/build/cloud-messaging/index.html +1 -1
  236. package/dist/serve/site-ui/docs/build/cloud-storage/index.html +1 -1
  237. package/dist/serve/site-ui/docs/build/realtime-database/index.html +1 -1
  238. package/dist/serve/site-ui/docs/conformance-scores/index.html +14 -2
  239. package/dist/serve/site-ui/docs/conformance-scores.md +13 -1
  240. package/dist/serve/site-ui/docs/create-pyric-reference-api/index.html +1 -1
  241. package/dist/serve/site-ui/docs/database-compat/index.html +44 -44
  242. package/dist/serve/site-ui/docs/database-compat.md +43 -43
  243. package/dist/serve/site-ui/docs/examples/chess/index.html +1 -1
  244. package/dist/serve/site-ui/docs/examples/index.html +1 -1
  245. package/dist/serve/site-ui/docs/firestore-compat/index.html +4 -4
  246. package/dist/serve/site-ui/docs/firestore-compat.md +3 -3
  247. package/dist/serve/site-ui/docs/firestore-flutter-compat/index.html +319 -0
  248. package/dist/serve/site-ui/docs/firestore-flutter-compat.md +344 -0
  249. package/dist/serve/site-ui/docs/firestore-kotlin-compat/index.html +319 -0
  250. package/dist/serve/site-ui/docs/firestore-kotlin-compat.md +344 -0
  251. package/dist/serve/site-ui/docs/firestore-swift-compat/index.html +490 -0
  252. package/dist/serve/site-ui/docs/firestore-swift-compat.md +517 -0
  253. package/dist/serve/site-ui/docs/functions-rtdb-compat/index.html +1 -1
  254. package/dist/serve/site-ui/docs/get-started/backend-bundlers/index.html +105 -0
  255. package/dist/serve/site-ui/docs/get-started/backend-bundlers.md +165 -0
  256. package/dist/serve/site-ui/docs/get-started/flutter/index.html +98 -0
  257. package/dist/serve/site-ui/docs/get-started/flutter.md +105 -0
  258. package/dist/serve/site-ui/docs/get-started/how-the-swap-works/index.html +1 -1
  259. package/dist/serve/site-ui/docs/get-started/nextjs/index.html +1 -1
  260. package/dist/serve/site-ui/docs/get-started/start-building/index.html +1 -1
  261. package/dist/serve/site-ui/docs/get-started/vite/index.html +1 -1
  262. package/dist/serve/site-ui/docs/index.json +3211 -1471
  263. package/dist/serve/site-ui/docs/messaging-compat/index.html +1 -1
  264. package/dist/serve/site-ui/docs/observe/resolve-runtime-status/index.html +4 -3
  265. package/dist/serve/site-ui/docs/observe/resolve-runtime-status.md +3 -1
  266. package/dist/serve/site-ui/docs/observe/see-whats-happening/index.html +1 -1
  267. package/dist/serve/site-ui/docs/observe/shape-your-data/index.html +1 -1
  268. package/dist/serve/site-ui/docs/observe/switch-and-impersonate-identities/index.html +110 -0
  269. package/dist/serve/site-ui/docs/observe/switch-and-impersonate-identities.md +134 -0
  270. package/dist/serve/site-ui/docs/overview/index.html +1 -1
  271. package/dist/serve/site-ui/docs/pyric-admin-app-reference-api/index.html +1 -1
  272. package/dist/serve/site-ui/docs/pyric-admin-auth-reference-api/index.html +1 -1
  273. package/dist/serve/site-ui/docs/pyric-admin-database-reference-api/index.html +1 -1
  274. package/dist/serve/site-ui/docs/pyric-admin-firestore-reference-api/index.html +1 -1
  275. package/dist/serve/site-ui/docs/pyric-admin-messaging-reference-api/index.html +1 -1
  276. package/dist/serve/site-ui/docs/pyric-admin-reference-api/index.html +1 -1
  277. package/dist/serve/site-ui/docs/pyric-admin-storage-reference-api/index.html +1 -1
  278. package/dist/serve/site-ui/docs/pyric-ai-reference-api/index.html +1 -1
  279. package/dist/serve/site-ui/docs/pyric-ai-scripting-reference-api/index.html +1 -1
  280. package/dist/serve/site-ui/docs/pyric-analytics-reference-api/index.html +124 -0
  281. package/dist/serve/site-ui/docs/pyric-analytics-reference-api.md +287 -0
  282. package/dist/serve/site-ui/docs/pyric-app-check-reference-api/index.html +87 -0
  283. package/dist/serve/site-ui/docs/pyric-app-check-reference-api.md +199 -0
  284. package/dist/serve/site-ui/docs/pyric-app-reference-api/index.html +1 -1
  285. package/dist/serve/site-ui/docs/pyric-auth-reference-api/index.html +6 -2
  286. package/dist/serve/site-ui/docs/pyric-auth-reference-api.md +2 -1
  287. package/dist/serve/site-ui/docs/pyric-cli-assurance-browser-reference-api/index.html +1 -1
  288. package/dist/serve/site-ui/docs/pyric-cli-assurance-reference-api/index.html +1 -1
  289. package/dist/serve/site-ui/docs/pyric-cli-bridge-client-reference-api/index.html +2 -2
  290. package/dist/serve/site-ui/docs/pyric-cli-bridge-client-reference-api.md +1 -1
  291. package/dist/serve/site-ui/docs/pyric-cli-bridge-reference-api/index.html +1 -1
  292. package/dist/serve/site-ui/docs/pyric-cli-bundler-reference-api/index.html +56 -0
  293. package/dist/serve/site-ui/docs/pyric-cli-bundler-reference-api.md +72 -0
  294. package/dist/serve/site-ui/docs/pyric-cli-conformance-browser-reference-api/index.html +4 -1
  295. package/dist/serve/site-ui/docs/pyric-cli-conformance-browser-reference-api.md +3 -0
  296. package/dist/serve/site-ui/docs/pyric-cli-conformance-docs-reference-api/index.html +1 -1
  297. package/dist/serve/site-ui/docs/pyric-cli-conformance-reference-api/index.html +4 -1
  298. package/dist/serve/site-ui/docs/pyric-cli-conformance-reference-api.md +3 -0
  299. package/dist/serve/site-ui/docs/pyric-cli-credentials-node-reference-api/index.html +1 -1
  300. package/dist/serve/site-ui/docs/pyric-cli-discover-reference-api/index.html +1 -1
  301. package/dist/serve/site-ui/docs/pyric-cli-next-reference-api/index.html +2 -2
  302. package/dist/serve/site-ui/docs/pyric-cli-next-reference-api.md +1 -1
  303. package/dist/serve/site-ui/docs/pyric-cli-register-app-bridge-reference-api/index.html +1 -1
  304. package/dist/serve/site-ui/docs/pyric-cli-register-reference-api/index.html +1 -1
  305. package/dist/serve/site-ui/docs/pyric-cli-remote-reference-api/index.html +34 -9
  306. package/dist/serve/site-ui/docs/pyric-cli-remote-reference-api.md +16 -8
  307. package/dist/serve/site-ui/docs/pyric-cli-serve-worker-reference-api/index.html +133 -93
  308. package/dist/serve/site-ui/docs/pyric-cli-serve-worker-reference-api.md +61 -1
  309. package/dist/serve/site-ui/docs/pyric-cli-verify-reference-api/index.html +2 -2
  310. package/dist/serve/site-ui/docs/pyric-cli-verify-reference-api.md +1 -1
  311. package/dist/serve/site-ui/docs/pyric-cli-vite-reference-api/index.html +2 -2
  312. package/dist/serve/site-ui/docs/pyric-cli-vite-reference-api.md +2 -2
  313. package/dist/serve/site-ui/docs/pyric-database-reference-api/index.html +2 -2
  314. package/dist/serve/site-ui/docs/pyric-database-reference-api.md +1 -1
  315. package/dist/serve/site-ui/docs/pyric-firestore-lite-reference-api/index.html +559 -0
  316. package/dist/serve/site-ui/docs/pyric-firestore-lite-reference-api.md +1240 -0
  317. package/dist/serve/site-ui/docs/pyric-firestore-reference-api/index.html +40 -11
  318. package/dist/serve/site-ui/docs/pyric-firestore-reference-api.md +18 -8
  319. package/dist/serve/site-ui/docs/pyric-functions-reference-api/index.html +67 -0
  320. package/dist/serve/site-ui/docs/pyric-functions-reference-api.md +149 -0
  321. package/dist/serve/site-ui/docs/pyric-messaging-reference-api/index.html +1 -1
  322. package/dist/serve/site-ui/docs/pyric-messaging-sw-reference-api/index.html +1 -1
  323. package/dist/serve/site-ui/docs/pyric-performance-reference-api/index.html +35 -0
  324. package/dist/serve/site-ui/docs/pyric-performance-reference-api.md +69 -0
  325. package/dist/serve/site-ui/docs/pyric-remote-config-reference-api/index.html +132 -0
  326. package/dist/serve/site-ui/docs/pyric-remote-config-reference-api.md +307 -0
  327. package/dist/serve/site-ui/docs/pyric-rules-reference-api/index.html +1 -1
  328. package/dist/serve/site-ui/docs/pyric-sandbox-database-reference-api/index.html +52 -17
  329. package/dist/serve/site-ui/docs/pyric-sandbox-database-reference-api.md +48 -9
  330. package/dist/serve/site-ui/docs/pyric-sandbox-firestore-reference-api/index.html +1 -1
  331. package/dist/serve/site-ui/docs/pyric-sandbox-reference-api/index.html +239 -49
  332. package/dist/serve/site-ui/docs/pyric-sandbox-reference-api.md +148 -31
  333. package/dist/serve/site-ui/docs/pyric-storage-reference-api/index.html +22 -4
  334. package/dist/serve/site-ui/docs/pyric-storage-reference-api.md +25 -3
  335. package/dist/serve/site-ui/docs/pyric-ui-agents-reference-api/index.html +26 -96
  336. package/dist/serve/site-ui/docs/pyric-ui-agents-reference-api.md +20 -51
  337. package/dist/serve/site-ui/docs/pyric-ui-auth-hooks-reference-api/index.html +1 -1
  338. package/dist/serve/site-ui/docs/pyric-ui-auth-reference-api/index.html +2 -2
  339. package/dist/serve/site-ui/docs/pyric-ui-auth-reference-api.md +1 -1
  340. package/dist/serve/site-ui/docs/pyric-ui-events-hooks-reference-api/index.html +1 -1
  341. package/dist/serve/site-ui/docs/pyric-ui-events-reference-api/index.html +1 -1
  342. package/dist/serve/site-ui/docs/pyric-ui-firestore-hooks-reference-api/index.html +1 -1
  343. package/dist/serve/site-ui/docs/pyric-ui-firestore-reference-api/index.html +2 -2
  344. package/dist/serve/site-ui/docs/pyric-ui-firestore-reference-api.md +1 -1
  345. package/dist/serve/site-ui/docs/pyric-ui-primitives-reference-api/index.html +124 -26
  346. package/dist/serve/site-ui/docs/pyric-ui-primitives-reference-api.md +58 -5
  347. package/dist/serve/site-ui/docs/pyric-ui-rtdb-reference-api/index.html +1 -1
  348. package/dist/serve/site-ui/docs/pyric-ui-rules-hooks-reference-api/index.html +1 -1
  349. package/dist/serve/site-ui/docs/pyric-ui-rules-reference-api/index.html +1 -1
  350. package/dist/serve/site-ui/docs/pyric-ui-storage-hooks-reference-api/index.html +1 -1
  351. package/dist/serve/site-ui/docs/pyric-ui-storage-reference-api/index.html +4 -5
  352. package/dist/serve/site-ui/docs/pyric-ui-storage-reference-api.md +3 -4
  353. package/dist/serve/site-ui/docs/pyric-ui-traffic-hooks-reference-api/index.html +1 -1
  354. package/dist/serve/site-ui/docs/pyric-ui-traffic-reference-api/index.html +1 -1
  355. package/dist/serve/site-ui/docs/reference/cli/index.html +6 -3
  356. package/dist/serve/site-ui/docs/reference/cli.md +8 -2
  357. package/dist/serve/site-ui/docs/rules-compat/index.html +10 -2
  358. package/dist/serve/site-ui/docs/rules-compat.md +9 -1
  359. package/dist/serve/site-ui/docs/secure/audit-your-rules/index.html +1 -1
  360. package/dist/serve/site-ui/docs/secure/firestore-rules-limits/index.html +1 -1
  361. package/dist/serve/site-ui/docs/secure/read-a-denial/index.html +1 -1
  362. package/dist/serve/site-ui/docs/secure/rtdb-rules-in-typescript/index.html +1 -1
  363. package/dist/serve/site-ui/docs/secure/rules-standard-library/index.html +1 -1
  364. package/dist/serve/site-ui/docs/secure/secure-it-with-rules/index.html +1 -1
  365. package/dist/serve/site-ui/docs/secure/simulate-and-lint/index.html +1 -1
  366. package/dist/serve/site-ui/docs/secure/write-a-rules-test-suite/index.html +1 -1
  367. package/dist/serve/site-ui/docs/ship/ship-to-production/index.html +1 -1
  368. package/dist/serve/site-ui/docs/ship/test-in-node/index.html +1 -1
  369. package/dist/serve/site-ui/docs/storage-compat/index.html +13 -13
  370. package/dist/serve/site-ui/docs/storage-compat.md +12 -12
  371. package/dist/serve/site-ui/docs/trust/how-we-know-it-matches-firebase/index.html +1 -1
  372. package/dist/serve/site-ui/docs/trust/rules-standard-library/index.html +1 -1
  373. package/dist/serve/site-ui/docs/trust/versioning-and-compatibility/index.html +1 -1
  374. package/dist/serve/site-ui/docs/tutorial/index.html +1 -1
  375. package/dist/serve/site-ui/examples/chess/index.html +1 -1
  376. package/dist/serve/site-ui/firestore/index.html +1 -1
  377. package/dist/serve/site-ui/llms.txt +13 -0
  378. package/dist/serve/site-ui/rtdb/index.html +1 -1
  379. package/dist/serve/site-ui/settings/index.html +1 -1
  380. package/dist/serve/site-ui/storage/index.html +1 -1
  381. package/dist/serve/site-ui/studio/index.html +1 -1
  382. package/dist/serve/site-ui/traffic/index.html +1 -1
  383. package/dist/serve/studio/disk-workspace.d.ts.map +1 -1
  384. package/dist/serve/studio/disk-workspace.js +64 -2
  385. package/dist/serve/studio/disk-workspace.js.map +1 -1
  386. package/dist/serve/vite-plugin.d.ts +7 -7
  387. package/dist/serve/vite-plugin.js +1 -1
  388. package/dist/serve/vite-plugin.js.map +1 -1
  389. package/dist/serve/vite-sandbox-generation.d.ts.map +1 -1
  390. package/dist/serve/vite-sandbox-generation.js +12 -0
  391. package/dist/serve/vite-sandbox-generation.js.map +1 -1
  392. package/dist/serve/worker/client/auth.js +1 -2
  393. package/dist/serve/worker/client/auth.js.map +1 -1
  394. package/dist/serve/worker/client/core.d.ts +21 -1
  395. package/dist/serve/worker/client/core.d.ts.map +1 -1
  396. package/dist/serve/worker/client/core.js +79 -3
  397. package/dist/serve/worker/client/core.js.map +1 -1
  398. package/dist/serve/worker/client.d.ts +1 -1
  399. package/dist/serve/worker/client.d.ts.map +1 -1
  400. package/dist/serve/worker/client.js +1 -1
  401. package/dist/serve/worker/client.js.map +1 -1
  402. package/dist/serve/worker/context-resolver.d.ts +30 -0
  403. package/dist/serve/worker/context-resolver.d.ts.map +1 -0
  404. package/dist/serve/worker/context-resolver.js +44 -0
  405. package/dist/serve/worker/context-resolver.js.map +1 -0
  406. package/dist/serve/worker/entry.js +23 -19
  407. package/dist/serve/worker/entry.js.map +1 -1
  408. package/dist/serve/worker/host/core.d.ts +1 -0
  409. package/dist/serve/worker/host/core.d.ts.map +1 -1
  410. package/dist/serve/worker/host/core.js +12 -6
  411. package/dist/serve/worker/host/core.js.map +1 -1
  412. package/dist/serve/worker/host/storage.js +2 -2
  413. package/dist/serve/worker/host-auth.js +1 -2
  414. package/dist/serve/worker/host-auth.js.map +1 -1
  415. package/dist/serve/worker/index.d.ts +1 -1
  416. package/dist/serve/worker/index.d.ts.map +1 -1
  417. package/dist/serve/worker/index.js +2 -2
  418. package/dist/serve/worker/index.js.map +1 -1
  419. package/dist/serve/worker/port-lifecycle.d.ts +18 -0
  420. package/dist/serve/worker/port-lifecycle.d.ts.map +1 -0
  421. package/dist/serve/worker/port-lifecycle.js +28 -0
  422. package/dist/serve/worker/port-lifecycle.js.map +1 -0
  423. package/dist/serve/worker/serve-init.d.ts.map +1 -1
  424. package/dist/serve/worker/serve-init.js +8 -2
  425. package/dist/serve/worker/serve-init.js.map +1 -1
  426. package/dist/verify/fixture.d.ts +1 -1
  427. package/package.json +16 -5
  428. package/src/assurance/.generated/conformance-verdicts.ts +238 -1
  429. package/src/bridge/client/dispatch.ts +52 -56
  430. package/src/bridge/client/tool-family-factories.ts +34 -0
  431. package/src/bridge/server/mcp-contract.ts +15 -59
  432. package/src/bridge/server/peer.ts +24 -1
  433. package/src/bridge/server/tool-family-factories.ts +40 -0
  434. package/src/bridge/server/tool-metadata.ts +29 -61
  435. package/src/bridge/tool-families.generated.ts +17 -0
  436. package/src/bridge/tool-families.ts +87 -0
  437. package/src/bridge/tool-family-records/conformance.ts +6 -0
  438. package/src/bridge/tool-family-records/firestore-data.ts +15 -0
  439. package/src/bridge/tool-family-records/firestore-inspect.ts +6 -0
  440. package/src/bridge/tool-family-records/firestore-rules.ts +15 -0
  441. package/src/bridge/tool-family-records/firestore-simulator.ts +16 -0
  442. package/src/bridge/tool-family-records/rtdb-inspection.ts +6 -0
  443. package/src/bundler/externals.ts +55 -0
  444. package/src/bundler/index.ts +21 -0
  445. package/src/cli/cli.test.ts +0 -44
  446. package/src/cli/inlined-sdk-scanner.ts +77 -0
  447. package/src/cli/sandbox-interlock.ts +167 -0
  448. package/src/cli/sandbox-runner.ts +37 -26
  449. package/src/cli/serve.ts +68 -69
  450. package/src/cli/unsupported-runtime.ts +68 -0
  451. package/src/conformance/.generated/can-i-use-browser.ts +2 -2
  452. package/src/conformance/.generated/can-i-use.ts +2 -2
  453. package/src/conformance/.generated/conformance-docs.ts +1 -1
  454. package/src/functions-rtdb/child.ts +115 -21
  455. package/src/functions-rtdb/development-runtime.ts +4 -0
  456. package/src/google-endpoints.ts +155 -0
  457. package/src/next/runtime-env.ts +5 -0
  458. package/src/next/with-pyric.ts +1 -1
  459. package/src/register/beacon.ts +232 -0
  460. package/src/register/index.ts +68 -6
  461. package/src/register/net-guard.ts +567 -0
  462. package/src/serve/ai-diagnostics-relay.ts +243 -0
  463. package/src/serve/ai-proxy.ts +327 -0
  464. package/src/serve/ai-status.ts +109 -0
  465. package/src/serve/ai-terminal-blocks.ts +210 -0
  466. package/src/serve/ai-terminal-text.ts +52 -0
  467. package/src/serve/beacon-route.ts +141 -0
  468. package/src/serve/entries/active-auth-registry.ts +56 -0
  469. package/src/serve/entries/active-auth.ts +100 -0
  470. package/src/serve/entries/auth-helper-core.ts +5 -0
  471. package/src/serve/entries/auth-helper-dom.ts +26 -2
  472. package/src/serve/entries/auth.ts +8 -0
  473. package/src/serve/entries/bridge-url.ts +1 -1
  474. package/src/serve/entries/init.ts +78 -3
  475. package/src/serve/entries/runtime.ts +10 -0
  476. package/src/serve/namespace.ts +73 -140
  477. package/src/serve/runtime/chip-config.ts +16 -2
  478. package/src/serve/runtime/chip-dialog.ts +366 -0
  479. package/src/serve/runtime/chip-install.ts +10 -4
  480. package/src/serve/runtime/chip-user-search.ts +391 -0
  481. package/src/serve/runtime/chip.ts +140 -15
  482. package/src/serve/runtime/identity.ts +26 -0
  483. package/src/serve/sandbox-session.ts +9 -0
  484. package/src/serve/studio/disk-workspace.ts +76 -2
  485. package/src/serve/vite-plugin.ts +8 -8
  486. package/src/serve/vite-sandbox-generation.ts +15 -0
  487. package/src/serve/worker/client/auth.ts +1 -1
  488. package/src/serve/worker/client/core.ts +80 -3
  489. package/src/serve/worker/client.ts +1 -1
  490. package/src/serve/worker/context-resolver.ts +60 -0
  491. package/src/serve/worker/entry.ts +22 -18
  492. package/src/serve/worker/host/core.ts +9 -7
  493. package/src/serve/worker/host/storage.ts +2 -2
  494. package/src/serve/worker/host-auth.ts +1 -1
  495. package/src/serve/worker/index.ts +4 -1
  496. package/src/serve/worker/port-lifecycle.ts +45 -0
  497. package/src/serve/worker/serve-init.ts +9 -2
  498. package/src/verify/fixture.ts +1 -1
  499. package/dist/serve/site-ui/_astro/app.B52xr-DK.js +0 -1
  500. package/dist/serve/site-ui/_astro/app.DWBraPUw.js +0 -12
  501. package/dist/serve/site-ui/_astro/sandbox-controls.DEpnKg-O.js +0 -1169
  502. package/dist/serve/site-ui/_astro/writes.rpjrFzmu.js +0 -102
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-families.generated.js","sourceRoot":"","sources":["../../src/bridge/tool-families.generated.ts"],"names":[],"mappings":"AAEA,OAAO,WAAW,MAAM,sCAAsC,CAAC;AAC/D,OAAO,aAAa,MAAM,yCAAyC,CAAC;AACpE,OAAO,gBAAgB,MAAM,4CAA4C,CAAC;AAC1E,OAAO,cAAc,MAAM,0CAA0C,CAAC;AACtE,OAAO,kBAAkB,MAAM,8CAA8C,CAAC;AAC9E,OAAO,cAAc,MAAM,0CAA0C,CAAC;AAEtE,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,WAAW,EAAE;IACtC,EAAE,GAAG,EAAE,gBAAgB,EAAE,GAAG,aAAa,EAAE;IAC3C,EAAE,GAAG,EAAE,mBAAmB,EAAE,GAAG,gBAAgB,EAAE;IACjD,EAAE,GAAG,EAAE,iBAAiB,EAAE,GAAG,cAAc,EAAE;IAC7C,EAAE,GAAG,EAAE,qBAAqB,EAAE,GAAG,kBAAkB,EAAE;IACrD,EAAE,GAAG,EAAE,iBAAiB,EAAE,GAAG,cAAc,EAAE;CACL,CAAC"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Tool family contract shared by both sides of the bridge.
3
+ *
4
+ * A family is authored as one record under `tool-family-records/`: its
5
+ * transport, its position in the default `tools/list` order, and the exact
6
+ * tool names its factory yields. `scripts/generate-tool-family-registry.ts`
7
+ * aggregates the records into `tool-families.generated.ts`. This module reads
8
+ * only that aggregate, so the browser bundle and the MCP process share one
9
+ * manifest without either importing the other's factories.
10
+ *
11
+ * Factories live in `server/tool-family-factories.ts` (Node) and
12
+ * `client/tool-family-factories.ts` (browser). Each map is typed against the
13
+ * family keys derived here, so a record without a factory, or a factory
14
+ * without a record, fails to compile.
15
+ */
16
+ import { TOOL_FAMILIES } from './tool-families.generated.js';
17
+ function assertUnique(label, values) {
18
+ const seen = new Set();
19
+ for (const value of values) {
20
+ if (seen.has(value))
21
+ throw new Error(`duplicate tool family ${label} '${value}'`);
22
+ seen.add(value);
23
+ }
24
+ }
25
+ function validateFamilies(families) {
26
+ assertUnique('key', families.map((family) => family.key));
27
+ assertUnique('order', families.map((family) => family.order));
28
+ assertUnique('tool name', families.flatMap((family) => family.tools));
29
+ return [...families].sort((a, b) => a.order - b.order);
30
+ }
31
+ const FAMILIES_BY_ORDER = validateFamilies(TOOL_FAMILIES);
32
+ /** Families of one transport, sorted by `order`. Validates once at load: duplicate key, order, or tool name throws. */
33
+ export function toolFamilies(transport) {
34
+ return FAMILIES_BY_ORDER.filter((family) => family.transport === transport);
35
+ }
36
+ /**
37
+ * Fail closed when a factory yields a different name set from the records.
38
+ * Both sides call this with the same message so drift reads the same
39
+ * wherever it surfaces.
40
+ */
41
+ export function assertExactToolNames(label, actual, expected) {
42
+ const actualSorted = [...actual].sort();
43
+ const expectedSorted = [...expected].sort();
44
+ if (actualSorted.length !== expectedSorted.length ||
45
+ actualSorted.some((name, index) => name !== expectedSorted[index])) {
46
+ throw new Error(`${label} drifted from the default MCP contract\n` +
47
+ `expected: ${expected.join(', ')}\n` +
48
+ `actual: ${actual.join(', ')}`);
49
+ }
50
+ }
51
+ //# sourceMappingURL=tool-families.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-families.js","sourceRoot":"","sources":["../../src/bridge/tool-families.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAsB7D,SAAS,YAAY,CAAC,KAAa,EAAE,MAAoC;IACvE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAmB,CAAC;IACxC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,KAAK,KAAK,GAAG,CAAC,CAAC;QAClF,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAqC;IAC7D,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9D,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;AAE1D,uHAAuH;AACvH,MAAM,UAAU,YAAY,CAC1B,SAAY;IAEZ,OAAO,iBAAiB,CAAC,MAAM,CAC7B,CAAC,MAAM,EAAyD,EAAE,CAChE,MAAM,CAAC,SAAS,KAAK,SAAS,CACjC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAa,EACb,MAAyB,EACzB,QAA2B;IAE3B,MAAM,YAAY,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IACxC,MAAM,cAAc,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5C,IACE,YAAY,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM;QAC7C,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,cAAc,CAAC,KAAK,CAAC,CAAC,EAClE,CAAC;QACD,MAAM,IAAI,KAAK,CACb,GAAG,KAAK,0CAA0C;YAChD,aAAa,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YACpC,aAAa,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACnC,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ declare const _default: {
2
+ readonly transport: "in-process";
3
+ readonly order: 60;
4
+ readonly tools: readonly ["pyric_can_i_use"];
5
+ };
6
+ export default _default;
7
+ //# sourceMappingURL=conformance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conformance.d.ts","sourceRoot":"","sources":["../../../src/bridge/tool-family-records/conformance.ts"],"names":[],"mappings":";;;;;AACA,wBAIsC"}
@@ -0,0 +1,6 @@
1
+ export default {
2
+ transport: 'in-process',
3
+ order: 60,
4
+ tools: ['pyric_can_i_use'],
5
+ };
6
+ //# sourceMappingURL=conformance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conformance.js","sourceRoot":"","sources":["../../../src/bridge/tool-family-records/conformance.ts"],"names":[],"mappings":"AACA,eAAe;IACb,SAAS,EAAE,YAAY;IACvB,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,CAAC,iBAAiB,CAAC;CACS,CAAC"}
@@ -0,0 +1,7 @@
1
+ declare const _default: {
2
+ readonly transport: "forwarded";
3
+ readonly order: 20;
4
+ readonly tools: readonly ["firestore_get_document", "firestore_list_documents", "firestore_create_document", "firestore_add_document", "firestore_update_document", "firestore_delete_document", "firestore_batch_write", "firestore_query_where"];
5
+ };
6
+ export default _default;
7
+ //# sourceMappingURL=firestore-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firestore-data.d.ts","sourceRoot":"","sources":["../../../src/bridge/tool-family-records/firestore-data.ts"],"names":[],"mappings":";;;;;AACA,wBAasC"}
@@ -0,0 +1,15 @@
1
+ export default {
2
+ transport: 'forwarded',
3
+ order: 20,
4
+ tools: [
5
+ 'firestore_get_document',
6
+ 'firestore_list_documents',
7
+ 'firestore_create_document',
8
+ 'firestore_add_document',
9
+ 'firestore_update_document',
10
+ 'firestore_delete_document',
11
+ 'firestore_batch_write',
12
+ 'firestore_query_where',
13
+ ],
14
+ };
15
+ //# sourceMappingURL=firestore-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firestore-data.js","sourceRoot":"","sources":["../../../src/bridge/tool-family-records/firestore-data.ts"],"names":[],"mappings":"AACA,eAAe;IACb,SAAS,EAAE,WAAW;IACtB,KAAK,EAAE,EAAE;IACT,KAAK,EAAE;QACL,wBAAwB;QACxB,0BAA0B;QAC1B,2BAA2B;QAC3B,wBAAwB;QACxB,2BAA2B;QAC3B,2BAA2B;QAC3B,uBAAuB;QACvB,uBAAuB;KACxB;CACkC,CAAC"}
@@ -0,0 +1,7 @@
1
+ declare const _default: {
2
+ readonly transport: "forwarded";
3
+ readonly order: 30;
4
+ readonly tools: readonly ["sandbox_inspect"];
5
+ };
6
+ export default _default;
7
+ //# sourceMappingURL=firestore-inspect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firestore-inspect.d.ts","sourceRoot":"","sources":["../../../src/bridge/tool-family-records/firestore-inspect.ts"],"names":[],"mappings":";;;;;AACA,wBAIsC"}
@@ -0,0 +1,6 @@
1
+ export default {
2
+ transport: 'forwarded',
3
+ order: 30,
4
+ tools: ['sandbox_inspect'],
5
+ };
6
+ //# sourceMappingURL=firestore-inspect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firestore-inspect.js","sourceRoot":"","sources":["../../../src/bridge/tool-family-records/firestore-inspect.ts"],"names":[],"mappings":"AACA,eAAe;IACb,SAAS,EAAE,WAAW;IACtB,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,CAAC,iBAAiB,CAAC;CACS,CAAC"}
@@ -0,0 +1,7 @@
1
+ declare const _default: {
2
+ readonly transport: "in-process";
3
+ readonly order: 50;
4
+ readonly tools: readonly ["firestore_simulate_rules", "firestore_rules_stdlib_list", "firestore_rules_stdlib_get", "firestore_lint_rules", "firestore_resolve_modules", "rules_stdlib_list", "rules_stdlib_get", "rules_resolve_modules"];
5
+ };
6
+ export default _default;
7
+ //# sourceMappingURL=firestore-rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firestore-rules.d.ts","sourceRoot":"","sources":["../../../src/bridge/tool-family-records/firestore-rules.ts"],"names":[],"mappings":";;;;;AACA,wBAasC"}
@@ -0,0 +1,15 @@
1
+ export default {
2
+ transport: 'in-process',
3
+ order: 50,
4
+ tools: [
5
+ 'firestore_simulate_rules',
6
+ 'firestore_rules_stdlib_list',
7
+ 'firestore_rules_stdlib_get',
8
+ 'firestore_lint_rules',
9
+ 'firestore_resolve_modules',
10
+ 'rules_stdlib_list',
11
+ 'rules_stdlib_get',
12
+ 'rules_resolve_modules',
13
+ ],
14
+ };
15
+ //# sourceMappingURL=firestore-rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firestore-rules.js","sourceRoot":"","sources":["../../../src/bridge/tool-family-records/firestore-rules.ts"],"names":[],"mappings":"AACA,eAAe;IACb,SAAS,EAAE,YAAY;IACvB,KAAK,EAAE,EAAE;IACT,KAAK,EAAE;QACL,0BAA0B;QAC1B,6BAA6B;QAC7B,4BAA4B;QAC5B,sBAAsB;QACtB,2BAA2B;QAC3B,mBAAmB;QACnB,kBAAkB;QAClB,uBAAuB;KACxB;CACkC,CAAC"}
@@ -0,0 +1,7 @@
1
+ declare const _default: {
2
+ readonly transport: "forwarded";
3
+ readonly order: 10;
4
+ readonly tools: readonly ["firestore_simulator_create", "firestore_simulator_execute", "firestore_simulator_read", "firestore_simulator_batch", "firestore_create_with_auto_id", "firestore_simulator_undo", "firestore_simulator_redo", "firestore_simulator_events", "firestore_simulator_transaction"];
5
+ };
6
+ export default _default;
7
+ //# sourceMappingURL=firestore-simulator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firestore-simulator.d.ts","sourceRoot":"","sources":["../../../src/bridge/tool-family-records/firestore-simulator.ts"],"names":[],"mappings":";;;;;AACA,wBAcsC"}
@@ -0,0 +1,16 @@
1
+ export default {
2
+ transport: 'forwarded',
3
+ order: 10,
4
+ tools: [
5
+ 'firestore_simulator_create',
6
+ 'firestore_simulator_execute',
7
+ 'firestore_simulator_read',
8
+ 'firestore_simulator_batch',
9
+ 'firestore_create_with_auto_id',
10
+ 'firestore_simulator_undo',
11
+ 'firestore_simulator_redo',
12
+ 'firestore_simulator_events',
13
+ 'firestore_simulator_transaction',
14
+ ],
15
+ };
16
+ //# sourceMappingURL=firestore-simulator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firestore-simulator.js","sourceRoot":"","sources":["../../../src/bridge/tool-family-records/firestore-simulator.ts"],"names":[],"mappings":"AACA,eAAe;IACb,SAAS,EAAE,WAAW;IACtB,KAAK,EAAE,EAAE;IACT,KAAK,EAAE;QACL,4BAA4B;QAC5B,6BAA6B;QAC7B,0BAA0B;QAC1B,2BAA2B;QAC3B,+BAA+B;QAC/B,0BAA0B;QAC1B,0BAA0B;QAC1B,4BAA4B;QAC5B,iCAAiC;KAClC;CACkC,CAAC"}
@@ -0,0 +1,7 @@
1
+ declare const _default: {
2
+ readonly transport: "forwarded";
3
+ readonly order: 40;
4
+ readonly tools: readonly ["rtdb_simulate_access", "rtdb_crawl_structure"];
5
+ };
6
+ export default _default;
7
+ //# sourceMappingURL=rtdb-inspection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rtdb-inspection.d.ts","sourceRoot":"","sources":["../../../src/bridge/tool-family-records/rtdb-inspection.ts"],"names":[],"mappings":";;;;;AACA,wBAIsC"}
@@ -0,0 +1,6 @@
1
+ export default {
2
+ transport: 'forwarded',
3
+ order: 40,
4
+ tools: ['rtdb_simulate_access', 'rtdb_crawl_structure'],
5
+ };
6
+ //# sourceMappingURL=rtdb-inspection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rtdb-inspection.js","sourceRoot":"","sources":["../../../src/bridge/tool-family-records/rtdb-inspection.ts"],"names":[],"mappings":"AACA,eAAe;IACb,SAAS,EAAE,WAAW;IACtB,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;CACpB,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Externalization presets and helpers for Node backend bundlers.
3
+ *
4
+ * Prevents backend bundlers (Rolldown, esbuild, tsup, Rollup, Vite, Webpack)
5
+ * from inlining Firebase and Firebase Admin SDKs into bundled server outputs,
6
+ * preserving runtime interception by `@pyric/cli/register` under `pyric sandbox`.
7
+ */
8
+ /**
9
+ * RegExp patterns matching Firebase packages for bundlers that accept RegExp
10
+ * in their external configuration (Rolldown, Rollup, Vite, Webpack).
11
+ */
12
+ export declare const pyricRollupExternals: readonly RegExp[];
13
+ /**
14
+ * Wildcard string patterns matching Firebase packages for bundlers that require
15
+ * string arrays with glob wildcards (esbuild, tsup).
16
+ */
17
+ export declare const pyricEsbuildExternals: readonly string[];
18
+ /**
19
+ * Universal predicate returning true if a module specifier belongs to Firebase
20
+ * or Firebase Admin SDK surfaces intercepted by Pyric.
21
+ *
22
+ * Compatible with bundlers that accept a function in their external setting
23
+ * (Rolldown, Rollup, Vite, Webpack).
24
+ */
25
+ export declare function isPyricExternal(id: string): boolean;
26
+ /**
27
+ * Convenience presets mapping bundler names to their supported external pattern format.
28
+ */
29
+ export declare const pyricExternals: Readonly<{
30
+ rolldown: readonly RegExp[];
31
+ rollup: readonly RegExp[];
32
+ vite: readonly RegExp[];
33
+ webpack: readonly RegExp[];
34
+ esbuild: readonly string[];
35
+ tsup: readonly string[];
36
+ }>;
37
+ //# sourceMappingURL=externals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"externals.d.ts","sourceRoot":"","sources":["../../src/bundler/externals.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,SAAS,MAAM,EAIhD,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAMjD,CAAC;AAEH;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAKnD;AAED;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;EAOzB,CAAC"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Externalization presets and helpers for Node backend bundlers.
3
+ *
4
+ * Prevents backend bundlers (Rolldown, esbuild, tsup, Rollup, Vite, Webpack)
5
+ * from inlining Firebase and Firebase Admin SDKs into bundled server outputs,
6
+ * preserving runtime interception by `@pyric/cli/register` under `pyric sandbox`.
7
+ */
8
+ /**
9
+ * RegExp patterns matching Firebase packages for bundlers that accept RegExp
10
+ * in their external configuration (Rolldown, Rollup, Vite, Webpack).
11
+ */
12
+ export const pyricRollupExternals = Object.freeze([
13
+ /^firebase-admin(\/.*)?$/,
14
+ /^firebase(\/.*)?$/,
15
+ /^@firebase(\/.*)?$/,
16
+ ]);
17
+ /**
18
+ * Wildcard string patterns matching Firebase packages for bundlers that require
19
+ * string arrays with glob wildcards (esbuild, tsup).
20
+ */
21
+ export const pyricEsbuildExternals = Object.freeze([
22
+ 'firebase-admin',
23
+ 'firebase-admin/*',
24
+ 'firebase',
25
+ 'firebase/*',
26
+ '@firebase/*',
27
+ ]);
28
+ /**
29
+ * Universal predicate returning true if a module specifier belongs to Firebase
30
+ * or Firebase Admin SDK surfaces intercepted by Pyric.
31
+ *
32
+ * Compatible with bundlers that accept a function in their external setting
33
+ * (Rolldown, Rollup, Vite, Webpack).
34
+ */
35
+ export function isPyricExternal(id) {
36
+ if (typeof id !== 'string' || id.length === 0) {
37
+ return false;
38
+ }
39
+ return pyricRollupExternals.some((regex) => regex.test(id));
40
+ }
41
+ /**
42
+ * Convenience presets mapping bundler names to their supported external pattern format.
43
+ */
44
+ export const pyricExternals = Object.freeze({
45
+ rolldown: pyricRollupExternals,
46
+ rollup: pyricRollupExternals,
47
+ vite: pyricRollupExternals,
48
+ webpack: pyricRollupExternals,
49
+ esbuild: pyricEsbuildExternals,
50
+ tsup: pyricEsbuildExternals,
51
+ });
52
+ //# sourceMappingURL=externals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"externals.js","sourceRoot":"","sources":["../../src/bundler/externals.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAsB,MAAM,CAAC,MAAM,CAAC;IACnE,yBAAyB;IACzB,mBAAmB;IACnB,oBAAoB;CACrB,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAsB,MAAM,CAAC,MAAM,CAAC;IACpE,gBAAgB;IAChB,kBAAkB;IAClB,UAAU;IACV,YAAY;IACZ,aAAa;CACd,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,EAAU;IACxC,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9C,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,oBAAoB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1C,QAAQ,EAAE,oBAAoB;IAC9B,MAAM,EAAE,oBAAoB;IAC5B,IAAI,EAAE,oBAAoB;IAC1B,OAAO,EAAE,oBAAoB;IAC7B,OAAO,EAAE,qBAAqB;IAC9B,IAAI,EAAE,qBAAqB;CAC5B,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * `@pyric/cli/bundler` — externalization presets and helpers for Node backend
3
+ * bundlers (Rolldown, esbuild, tsup, Rollup, Vite) to preserve `@pyric/cli/register`
4
+ * runtime sandbox interception.
5
+ *
6
+ * // rolldown.config.ts / rollup.config.js
7
+ * import { pyricExternals } from '@pyric/cli/bundler';
8
+ * export default { external: pyricExternals.rolldown };
9
+ *
10
+ * // vite.config.ts (SSR / Node backend builds)
11
+ * export default { build: { rollupOptions: { external: pyricExternals.vite } } };
12
+ *
13
+ * // tsup.config.ts / esbuild.config.mjs
14
+ * export default { external: pyricExternals.esbuild };
15
+ */
16
+ export { pyricRollupExternals, pyricEsbuildExternals, isPyricExternal, pyricExternals, } from './externals.js';
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bundler/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,cAAc,GACf,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * `@pyric/cli/bundler` — externalization presets and helpers for Node backend
3
+ * bundlers (Rolldown, esbuild, tsup, Rollup, Vite) to preserve `@pyric/cli/register`
4
+ * runtime sandbox interception.
5
+ *
6
+ * // rolldown.config.ts / rollup.config.js
7
+ * import { pyricExternals } from '@pyric/cli/bundler';
8
+ * export default { external: pyricExternals.rolldown };
9
+ *
10
+ * // vite.config.ts (SSR / Node backend builds)
11
+ * export default { build: { rollupOptions: { external: pyricExternals.vite } } };
12
+ *
13
+ * // tsup.config.ts / esbuild.config.mjs
14
+ * export default { external: pyricExternals.esbuild };
15
+ */
16
+ export { pyricRollupExternals, pyricEsbuildExternals, isPyricExternal, pyricExternals, } from './externals.js';
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bundler/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,cAAc,GACf,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Scan `dir` for inlined SDK fingerprints and return the offending paths,
3
+ * relative to `dir`. Bounded: depth 4, 200 script files, first hit per file.
4
+ */
5
+ export declare function scanForInlinedFirebase(dir: string): string[];
6
+ //# sourceMappingURL=inlined-sdk-scanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inlined-sdk-scanner.d.ts","sourceRoot":"","sources":["../../src/cli/inlined-sdk-scanner.ts"],"names":[],"mappings":"AA8BA;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CA0C5D"}
@@ -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"}