@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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pyric/cli",
3
- "version": "0.1.0-alpha.20",
3
+ "version": "0.1.0-alpha.22",
4
4
  "license": "Apache-2.0",
5
5
  "homepage": "https://pyric.dev",
6
6
  "repository": {
@@ -13,6 +13,12 @@
13
13
  },
14
14
  "description": "Pyric CLI for local sandbox development, verification, artifact generation, and agent bridges.",
15
15
  "type": "module",
16
+ "sideEffects": [
17
+ "./dist/register/index.js",
18
+ "./src/register/index.ts",
19
+ "./dist/serve/entries/*.js",
20
+ "./src/serve/entries/*.ts"
21
+ ],
16
22
  "exports": {
17
23
  "./credentials/node": {
18
24
  "types": "./dist/credentials/node/index.d.ts",
@@ -73,6 +79,10 @@
73
79
  "types": "./dist/next/index.d.ts",
74
80
  "import": "./dist/next/index.js"
75
81
  },
82
+ "./bundler": {
83
+ "types": "./dist/bundler/index.d.ts",
84
+ "import": "./dist/bundler/index.js"
85
+ },
76
86
  "./serve/worker": {
77
87
  "types": "./dist/serve/worker/index.d.ts",
78
88
  "import": "./dist/serve/worker/index.js"
@@ -109,11 +119,12 @@
109
119
  "LICENSE"
110
120
  ],
111
121
  "scripts": {
112
- "prebuild": "bun run scripts/generate-service-command-registry.ts && (test \"${PYRIC_CONFORMANCE_READY:-0}\" = \"1\" || bun run ../../packages/conformance/src/generate-projections.ts --write)",
122
+ "prebuild": "bun run scripts/generate-service-command-registry.ts && bun run scripts/generate-tool-family-registry.ts && (test \"${PYRIC_CONFORMANCE_READY:-0}\" = \"1\" || bun run ../../packages/conformance/src/generate-projections.ts --write)",
113
123
  "build": "tsc && bun run scripts/postbuild.ts",
114
124
  "pretest": "bash ../../scripts/build.sh --packages-only",
115
125
  "test": "bun test",
116
126
  "test:app-conformance": "playwright test app-deletion.pw.ts app-multi-app.pw.ts ai-worker-boundary.pw.ts messaging-app-boundary.pw.ts --config test/e2e/playwright.config.ts",
127
+ "test:identity-conformance": "playwright test identity-switch.pw.ts auth-popup.pw.ts --config test/e2e/playwright.config.ts",
117
128
  "test:site-cli": "playwright test --config test/e2e/site-cli/playwright.config.ts",
118
129
  "test:site-static": "playwright test --config test/e2e/site-static/playwright.config.ts",
119
130
  "test:soak": "playwright test --config test/e2e/soak/playwright.config.ts",
@@ -127,11 +138,11 @@
127
138
  "dependencies": {
128
139
  "@inbrowser/agent": "0.4.2",
129
140
  "@modelcontextprotocol/sdk": "^1.0.0",
130
- "create-pyric": "^0.1.0-alpha.20",
141
+ "create-pyric": "^0.1.0-alpha.22",
131
142
  "esbuild": "^0.28.0",
132
143
  "fake-indexeddb": "^6.0.0",
133
- "pyric": "^0.1.0-alpha.20",
134
- "pyric-admin": "^0.1.0-alpha.20",
144
+ "pyric": "^0.1.0-alpha.22",
145
+ "pyric-admin": "^0.1.0-alpha.22",
135
146
  "ws": "^8.18.0",
136
147
  "zod": "^3.23.0"
137
148
  },
@@ -397,6 +397,136 @@ export const CONFORMANCE_VERDICTS = {
397
397
  "firestore#97": "supported",
398
398
  "firestore#98": "supported",
399
399
  "firestore#99": "supported",
400
+ "firestore-flutter#1": "supported",
401
+ "firestore-flutter#10": "qualified",
402
+ "firestore-flutter#11": "supported",
403
+ "firestore-flutter#12": "qualified",
404
+ "firestore-flutter#13": "qualified",
405
+ "firestore-flutter#14": "supported",
406
+ "firestore-flutter#15": "supported",
407
+ "firestore-flutter#16": "supported",
408
+ "firestore-flutter#17": "supported",
409
+ "firestore-flutter#18": "supported",
410
+ "firestore-flutter#19": "supported",
411
+ "firestore-flutter#2": "supported",
412
+ "firestore-flutter#20": "supported",
413
+ "firestore-flutter#21": "supported",
414
+ "firestore-flutter#22": "supported",
415
+ "firestore-flutter#23": "supported",
416
+ "firestore-flutter#24": "supported",
417
+ "firestore-flutter#25": "supported",
418
+ "firestore-flutter#26": "supported",
419
+ "firestore-flutter#27": "supported",
420
+ "firestore-flutter#28": "supported",
421
+ "firestore-flutter#29": "supported",
422
+ "firestore-flutter#3": "supported",
423
+ "firestore-flutter#30": "supported",
424
+ "firestore-flutter#31": "supported",
425
+ "firestore-flutter#32": "supported",
426
+ "firestore-flutter#33": "supported",
427
+ "firestore-flutter#34": "supported",
428
+ "firestore-flutter#35": "supported",
429
+ "firestore-flutter#36": "supported",
430
+ "firestore-flutter#37": "supported",
431
+ "firestore-flutter#38": "supported",
432
+ "firestore-flutter#39": "supported",
433
+ "firestore-flutter#4": "supported",
434
+ "firestore-flutter#40": "supported",
435
+ "firestore-flutter#41": "supported",
436
+ "firestore-flutter#42": "supported",
437
+ "firestore-flutter#43": "supported",
438
+ "firestore-flutter#44": "supported",
439
+ "firestore-flutter#45": "supported",
440
+ "firestore-flutter#46": "supported",
441
+ "firestore-flutter#47": "supported",
442
+ "firestore-flutter#48": "supported",
443
+ "firestore-flutter#49": "supported",
444
+ "firestore-flutter#5": "supported",
445
+ "firestore-flutter#50": "supported",
446
+ "firestore-flutter#51": "supported",
447
+ "firestore-flutter#52": "supported",
448
+ "firestore-flutter#53": "qualified",
449
+ "firestore-flutter#54": "supported",
450
+ "firestore-flutter#55": "supported",
451
+ "firestore-flutter#56": "supported",
452
+ "firestore-flutter#57": "supported",
453
+ "firestore-flutter#58": "supported",
454
+ "firestore-flutter#59": "supported",
455
+ "firestore-flutter#6": "supported",
456
+ "firestore-flutter#60": "supported",
457
+ "firestore-flutter#61": "supported",
458
+ "firestore-flutter#62": "supported",
459
+ "firestore-flutter#63": "supported",
460
+ "firestore-flutter#64": "supported",
461
+ "firestore-flutter#65": "supported",
462
+ "firestore-flutter#7": "supported",
463
+ "firestore-flutter#8": "supported",
464
+ "firestore-flutter#9": "qualified",
465
+ "firestore-kotlin#1": "supported",
466
+ "firestore-kotlin#10": "qualified",
467
+ "firestore-kotlin#11": "supported",
468
+ "firestore-kotlin#12": "qualified",
469
+ "firestore-kotlin#13": "qualified",
470
+ "firestore-kotlin#14": "supported",
471
+ "firestore-kotlin#15": "supported",
472
+ "firestore-kotlin#16": "supported",
473
+ "firestore-kotlin#17": "supported",
474
+ "firestore-kotlin#18": "supported",
475
+ "firestore-kotlin#19": "supported",
476
+ "firestore-kotlin#2": "supported",
477
+ "firestore-kotlin#20": "supported",
478
+ "firestore-kotlin#21": "supported",
479
+ "firestore-kotlin#22": "supported",
480
+ "firestore-kotlin#23": "supported",
481
+ "firestore-kotlin#24": "supported",
482
+ "firestore-kotlin#25": "supported",
483
+ "firestore-kotlin#26": "supported",
484
+ "firestore-kotlin#27": "supported",
485
+ "firestore-kotlin#28": "supported",
486
+ "firestore-kotlin#29": "supported",
487
+ "firestore-kotlin#3": "supported",
488
+ "firestore-kotlin#30": "supported",
489
+ "firestore-kotlin#31": "supported",
490
+ "firestore-kotlin#32": "supported",
491
+ "firestore-kotlin#33": "supported",
492
+ "firestore-kotlin#34": "supported",
493
+ "firestore-kotlin#35": "supported",
494
+ "firestore-kotlin#36": "supported",
495
+ "firestore-kotlin#37": "supported",
496
+ "firestore-kotlin#38": "supported",
497
+ "firestore-kotlin#39": "supported",
498
+ "firestore-kotlin#4": "supported",
499
+ "firestore-kotlin#40": "supported",
500
+ "firestore-kotlin#41": "supported",
501
+ "firestore-kotlin#42": "supported",
502
+ "firestore-kotlin#43": "supported",
503
+ "firestore-kotlin#44": "supported",
504
+ "firestore-kotlin#45": "supported",
505
+ "firestore-kotlin#46": "supported",
506
+ "firestore-kotlin#47": "supported",
507
+ "firestore-kotlin#48": "supported",
508
+ "firestore-kotlin#49": "supported",
509
+ "firestore-kotlin#5": "supported",
510
+ "firestore-kotlin#50": "supported",
511
+ "firestore-kotlin#51": "supported",
512
+ "firestore-kotlin#52": "supported",
513
+ "firestore-kotlin#53": "qualified",
514
+ "firestore-kotlin#54": "supported",
515
+ "firestore-kotlin#55": "supported",
516
+ "firestore-kotlin#56": "supported",
517
+ "firestore-kotlin#57": "supported",
518
+ "firestore-kotlin#58": "supported",
519
+ "firestore-kotlin#59": "supported",
520
+ "firestore-kotlin#6": "supported",
521
+ "firestore-kotlin#60": "supported",
522
+ "firestore-kotlin#61": "supported",
523
+ "firestore-kotlin#62": "supported",
524
+ "firestore-kotlin#63": "supported",
525
+ "firestore-kotlin#64": "supported",
526
+ "firestore-kotlin#65": "supported",
527
+ "firestore-kotlin#7": "supported",
528
+ "firestore-kotlin#8": "supported",
529
+ "firestore-kotlin#9": "qualified",
400
530
  "firestore-rules#160": "supported",
401
531
  "firestore-rules#161": "supported",
402
532
  "firestore-rules#162": "supported",
@@ -429,6 +559,111 @@ export const CONFORMANCE_VERDICTS = {
429
559
  "firestore-rules#189": "supported",
430
560
  "firestore-rules#190": "supported",
431
561
  "firestore-rules#191": "supported",
562
+ "firestore-swift#1": "supported",
563
+ "firestore-swift#10": "supported",
564
+ "firestore-swift#100": "supported",
565
+ "firestore-swift#101": "supported",
566
+ "firestore-swift#102": "supported",
567
+ "firestore-swift#103": "qualified",
568
+ "firestore-swift#104": "qualified",
569
+ "firestore-swift#105": "qualified",
570
+ "firestore-swift#11": "supported",
571
+ "firestore-swift#12": "supported",
572
+ "firestore-swift#13": "supported",
573
+ "firestore-swift#14": "supported",
574
+ "firestore-swift#15": "qualified",
575
+ "firestore-swift#16": "qualified",
576
+ "firestore-swift#17": "supported",
577
+ "firestore-swift#18": "qualified",
578
+ "firestore-swift#19": "qualified",
579
+ "firestore-swift#2": "supported",
580
+ "firestore-swift#20": "qualified",
581
+ "firestore-swift#21": "qualified",
582
+ "firestore-swift#22": "supported",
583
+ "firestore-swift#23": "supported",
584
+ "firestore-swift#24": "supported",
585
+ "firestore-swift#25": "supported",
586
+ "firestore-swift#26": "supported",
587
+ "firestore-swift#27": "supported",
588
+ "firestore-swift#28": "supported",
589
+ "firestore-swift#29": "supported",
590
+ "firestore-swift#3": "supported",
591
+ "firestore-swift#30": "supported",
592
+ "firestore-swift#31": "supported",
593
+ "firestore-swift#32": "supported",
594
+ "firestore-swift#33": "supported",
595
+ "firestore-swift#34": "supported",
596
+ "firestore-swift#35": "supported",
597
+ "firestore-swift#36": "supported",
598
+ "firestore-swift#37": "supported",
599
+ "firestore-swift#38": "supported",
600
+ "firestore-swift#39": "supported",
601
+ "firestore-swift#4": "supported",
602
+ "firestore-swift#40": "supported",
603
+ "firestore-swift#41": "supported",
604
+ "firestore-swift#42": "supported",
605
+ "firestore-swift#43": "supported",
606
+ "firestore-swift#44": "supported",
607
+ "firestore-swift#45": "supported",
608
+ "firestore-swift#46": "supported",
609
+ "firestore-swift#47": "supported",
610
+ "firestore-swift#48": "supported",
611
+ "firestore-swift#49": "supported",
612
+ "firestore-swift#5": "supported",
613
+ "firestore-swift#50": "supported",
614
+ "firestore-swift#51": "supported",
615
+ "firestore-swift#52": "supported",
616
+ "firestore-swift#53": "supported",
617
+ "firestore-swift#54": "supported",
618
+ "firestore-swift#55": "supported",
619
+ "firestore-swift#56": "supported",
620
+ "firestore-swift#57": "supported",
621
+ "firestore-swift#58": "supported",
622
+ "firestore-swift#59": "supported",
623
+ "firestore-swift#6": "supported",
624
+ "firestore-swift#60": "supported",
625
+ "firestore-swift#61": "supported",
626
+ "firestore-swift#62": "supported",
627
+ "firestore-swift#63": "supported",
628
+ "firestore-swift#64": "supported",
629
+ "firestore-swift#65": "supported",
630
+ "firestore-swift#66": "supported",
631
+ "firestore-swift#67": "supported",
632
+ "firestore-swift#68": "supported",
633
+ "firestore-swift#69": "supported",
634
+ "firestore-swift#7": "supported",
635
+ "firestore-swift#70": "supported",
636
+ "firestore-swift#71": "supported",
637
+ "firestore-swift#72": "supported",
638
+ "firestore-swift#73": "supported",
639
+ "firestore-swift#74": "supported",
640
+ "firestore-swift#75": "supported",
641
+ "firestore-swift#76": "supported",
642
+ "firestore-swift#77": "supported",
643
+ "firestore-swift#78": "supported",
644
+ "firestore-swift#79": "supported",
645
+ "firestore-swift#8": "supported",
646
+ "firestore-swift#80": "supported",
647
+ "firestore-swift#81": "supported",
648
+ "firestore-swift#82": "supported",
649
+ "firestore-swift#83": "supported",
650
+ "firestore-swift#84": "supported",
651
+ "firestore-swift#85": "supported",
652
+ "firestore-swift#86": "supported",
653
+ "firestore-swift#87": "supported",
654
+ "firestore-swift#88": "supported",
655
+ "firestore-swift#89": "supported",
656
+ "firestore-swift#9": "supported",
657
+ "firestore-swift#90": "supported",
658
+ "firestore-swift#91": "supported",
659
+ "firestore-swift#92": "supported",
660
+ "firestore-swift#93": "supported",
661
+ "firestore-swift#94": "supported",
662
+ "firestore-swift#95": "supported",
663
+ "firestore-swift#96": "supported",
664
+ "firestore-swift#97": "supported",
665
+ "firestore-swift#98": "supported",
666
+ "firestore-swift#99": "supported",
432
667
  "firestore.binding.path-variable": "supported",
433
668
  "firestore.binding.request": "supported",
434
669
  "firestore.binding.request.auth": "supported",
@@ -450,7 +685,7 @@ export const CONFORMANCE_VERDICTS = {
450
685
  "firestore.function.cast.int": "supported",
451
686
  "firestore.function.cast.path": "supported",
452
687
  "firestore.function.cast.string": "supported",
453
- "firestore.function.debug": "unsupported",
688
+ "firestore.function.debug": "supported",
454
689
  "firestore.function.duration.abs": "supported",
455
690
  "firestore.function.duration.time": "supported",
456
691
  "firestore.function.duration.value": "supported",
@@ -1065,6 +1300,8 @@ export const CONFORMANCE_VERDICTS = {
1065
1300
  "storage-rules#130": "supported",
1066
1301
  "storage-rules#131": "supported",
1067
1302
  "storage-rules#132": "supported",
1303
+ "storage-rules#133": "supported",
1304
+ "storage-rules#134": "supported",
1068
1305
  "storage-rules#94": "supported",
1069
1306
  "storage-rules#95": "supported",
1070
1307
  "storage-rules#96": "supported",
@@ -1,31 +1,28 @@
1
1
  /**
2
- * Browser-side tool dispatcher. Consumes the SAME tool factories the
3
- * bridge advertises over MCP (`getSandboxToolMetadata`), so the set the
4
- * bridge LISTS and the set the page EXECUTES are identical. There is one
5
- * source of truth: the factories in `buildSandboxHandlers`.
2
+ * Browser-side tool dispatcher. Composes the forwarded tool families from the
3
+ * same records the bridge advertises over MCP (`getSandboxToolMetadata`), so
4
+ * the set the bridge LISTS and the set the page EXECUTES are identical by
5
+ * construction: the records under `../tool-family-records/` pin the names,
6
+ * and `./tool-family-factories.ts` supplies one browser-safe factory per
7
+ * family.
6
8
  *
7
- * History of the trap this guards against: earlier this file delegated
8
- * to ONLY `createFirestoreSimulatorTools`, while `getSandboxToolMetadata`
9
- * advertised the simulator + data-plane + inspect families. The bridge
10
- * therefore LISTED `firestore_create_document` / `sandbox_inspect`
11
- * etc., but a `callTool` failed at dispatch with "tool 'X' is not
12
- * registered with the connected sandbox peer" succeed-at-list,
13
- * fail-at-dispatch. Registering every family here (and deriving
14
- * `SANDBOX_TOOL_NAMES` from the same set) closes the gap. The parity is
15
- * pinned by `test/bridge/tool-parity.test.ts`.
9
+ * History of the trap this guards against: earlier this file delegated to
10
+ * ONLY the simulator factory, while the bridge advertised the simulator,
11
+ * data-plane and inspect families. The bridge therefore LISTED
12
+ * `firestore_create_document` / `sandbox_inspect` etc., but a `callTool`
13
+ * failed at dispatch with "tool 'X' is not registered with the connected
14
+ * sandbox peer" (succeed-at-list, fail-at-dispatch). Composing every family
15
+ * from the records, and deriving `SANDBOX_TOOL_NAMES` from the same records,
16
+ * closes the gap. The parity is pinned by `test/bridge/tool-parity.test.ts`
17
+ * and `test/bridge/tool-families.test.ts`.
16
18
  */
17
19
 
18
- import { createFirestoreSimulatorTools } from 'pyric/rules/internal';
19
- import {
20
- createFirestoreDataTools,
21
- createFirestoreInspectTools,
22
- getFirestore,
23
- getAdminFirestore,
24
- type As,
25
- } from 'pyric/firestore';
20
+ import type { ToolHandler } from '@inbrowser/agent';
21
+ import { getFirestore, getAdminFirestore, type As } from 'pyric/firestore';
26
22
  import { getInternalEnv } from 'pyric/sandbox/internal';
27
23
  import type { LocalSandbox } from 'pyric/sandbox';
28
- import { createRtdbInspectionTools } from '../../rtdb/inspection.js';
24
+ import { assertExactToolNames, toolFamilies } from '../tool-families.js';
25
+ import { SANDBOX_HANDLER_FACTORIES, type SandboxBinding } from './tool-family-factories.js';
29
26
 
30
27
  export interface DispatchResult {
31
28
  ok: boolean;
@@ -34,11 +31,8 @@ export interface DispatchResult {
34
31
  }
35
32
 
36
33
  /**
37
- * The full handler set for a sandbox: the simulator family (bound to the
38
- * internal env) plus the modular data-plane and inspect families (bound
39
- * to a per-call `resolveDb`). This is the single source of truth shared
40
- * by `buildSandboxDispatcher` and `SANDBOX_TOOL_NAMES`, and it MUST stay
41
- * aligned with `getSandboxToolMetadata` (asserted by tool-parity.test.ts).
34
+ * The full handler set for a sandbox: every forwarded family bound to one
35
+ * `SandboxBinding` built here.
42
36
  *
43
37
  * Auth: `resolveDb('admin')` / `resolveDb(undefined)` is an admin-bypass handle
44
38
  * (no rules); `resolveDb({ uid, claims })` is a rules-enforcing client acting as
@@ -46,29 +40,39 @@ export interface DispatchResult {
46
40
  * `request.auth.token` shape. This is a SANDBOX dispatcher, so the admin default
47
41
  * is intended; a dispatcher wired to a real backend must reject `'admin'`.
48
42
  */
49
- function buildSandboxHandlers(sandbox: LocalSandbox) {
50
- const env = getInternalEnv(sandbox);
51
- const resolveDb = (actor?: As) =>
52
- actor && actor !== 'admin'
53
- ? getFirestore(sandbox.withAuth({ uid: actor.uid, token: actor.claims }))
54
- : getAdminFirestore(sandbox);
55
- return [
56
- ...createFirestoreSimulatorTools({ resolveSandbox: () => env }),
57
- ...createFirestoreDataTools({ resolveDb }),
58
- ...createFirestoreInspectTools({ resolveSandbox: () => sandbox }),
59
- ...createRtdbInspectionTools({ resolveSandbox: () => sandbox }),
60
- ];
43
+ function buildSandboxHandlers(sandbox: LocalSandbox): ToolHandler[] {
44
+ const binding: SandboxBinding = {
45
+ sandbox,
46
+ env: getInternalEnv(sandbox),
47
+ resolveDb: (actor?: As) =>
48
+ actor && actor !== 'admin'
49
+ ? getFirestore(sandbox.withAuth({ uid: actor.uid, token: actor.claims }))
50
+ : getAdminFirestore(sandbox),
51
+ };
52
+ return toolFamilies('forwarded').flatMap((family) =>
53
+ SANDBOX_HANDLER_FACTORIES[family.key](binding),
54
+ );
61
55
  }
62
56
 
63
57
  /**
64
58
  * Build a dispatcher for the supplied `Sandbox`. The returned function
65
- * looks up tools by name across every factory and invokes the
59
+ * looks up tools by name across every family and invokes the
66
60
  * canonical handler. Throws `UnknownToolError` on unknown names.
61
+ *
62
+ * Fails closed before any dispatch if the bound handlers do not yield exactly
63
+ * the names the family records pin, so a factory that drifts from its record
64
+ * surfaces when the sandbox connects rather than at the first call.
67
65
  */
68
66
  export function buildSandboxDispatcher(
69
67
  sandbox: LocalSandbox,
70
68
  ): (name: string, args: Record<string, unknown>) => Promise<DispatchResult> {
71
- const byName = new Map(buildSandboxHandlers(sandbox).map((h) => [h.name, h]));
69
+ const handlers = buildSandboxHandlers(sandbox);
70
+ assertExactToolNames(
71
+ 'sandbox dispatcher tools',
72
+ handlers.map((h) => h.name),
73
+ SANDBOX_TOOL_NAMES,
74
+ );
75
+ const byName = new Map(handlers.map((h) => [h.name, h]));
72
76
  return async (name, args) => {
73
77
  const handler = byName.get(name);
74
78
  if (!handler) throw new UnknownToolError(name);
@@ -112,22 +116,14 @@ export async function dispatchSandboxTool(
112
116
  }
113
117
 
114
118
  /**
115
- * Tool names this dispatcher recognises, derived at load time from the
116
- * SAME factories so it equals what the page executes AND what the
117
- * bridge advertises. `connectBridge` sends this as the `hello.tools`
118
- * payload so the bridge advertises exactly the executable set.
119
+ * Tool names this dispatcher recognises, read from the forwarded family
120
+ * records in family order, so it equals what the page executes AND what the
121
+ * bridge advertises. `connectBridge` sends this as the `hello.tools` payload
122
+ * so the bridge advertises exactly the executable set.
119
123
  */
120
- export const SANDBOX_TOOL_NAMES: string[] = (() => {
121
- const stub = async () => {
122
- throw new Error('SANDBOX_TOOL_NAMES: stub resolver should never be invoked');
123
- };
124
- return [
125
- ...createFirestoreSimulatorTools({ resolveSandbox: stub as never }),
126
- ...createFirestoreDataTools({ resolveDb: stub as never }),
127
- ...createFirestoreInspectTools({ resolveSandbox: stub as never }),
128
- ...createRtdbInspectionTools({ resolveSandbox: stub as never }),
129
- ].map((h) => h.name);
130
- })();
124
+ export const SANDBOX_TOOL_NAMES: readonly string[] = toolFamilies('forwarded').flatMap(
125
+ (family) => family.tools,
126
+ );
131
127
 
132
128
  export class UnknownToolError extends Error {
133
129
  constructor(public readonly tool: string) {
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Browser-side factory for each forwarded tool family, bound to one
3
+ * sandbox. Imports only browser-safe subpaths (`pyric/rules/internal`, never
4
+ * `/node`); the Node side has its own map in `server/tool-family-factories.ts`.
5
+ *
6
+ * The keys are the family record filenames. `satisfies` against the keys
7
+ * derived from the generated aggregate makes a missing or surplus entry a
8
+ * compile error.
9
+ */
10
+ import type { ToolHandler } from '@inbrowser/agent';
11
+ import { createFirestoreSimulatorTools } from 'pyric/rules/internal';
12
+ import {
13
+ createFirestoreDataTools,
14
+ createFirestoreInspectTools,
15
+ type FirestoreDataToolDeps,
16
+ } from 'pyric/firestore';
17
+ import type { LocalSandbox } from 'pyric/sandbox';
18
+ import type { getInternalEnv } from 'pyric/sandbox/internal';
19
+ import { createRtdbInspectionTools } from '../../rtdb/inspection.js';
20
+ import type { ForwardedFamilyKey } from '../tool-families.js';
21
+
22
+ /** Everything a forwarded family needs from one sandbox, built once per sandbox. */
23
+ export interface SandboxBinding {
24
+ sandbox: LocalSandbox;
25
+ env: ReturnType<typeof getInternalEnv>;
26
+ resolveDb: FirestoreDataToolDeps['resolveDb'];
27
+ }
28
+
29
+ export const SANDBOX_HANDLER_FACTORIES = {
30
+ 'firestore-simulator': ({ env }) => createFirestoreSimulatorTools({ resolveSandbox: () => env }),
31
+ 'firestore-data': ({ resolveDb }) => createFirestoreDataTools({ resolveDb }),
32
+ 'firestore-inspect': ({ sandbox }) => createFirestoreInspectTools({ resolveSandbox: () => sandbox }),
33
+ 'rtdb-inspection': ({ sandbox }) => createRtdbInspectionTools({ resolveSandbox: () => sandbox }),
34
+ } satisfies Record<ForwardedFamilyKey, (binding: SandboxBinding) => ToolHandler[]>;
@@ -1,4 +1,5 @@
1
1
  import type { ToolHandler } from '@inbrowser/agent';
2
+ import { assertExactToolNames, toolFamilies } from '../tool-families.js';
2
3
  import {
3
4
  getInProcessToolHandlers,
4
5
  getSandboxToolMetadata,
@@ -6,75 +7,30 @@ import {
6
7
  } from './tool-metadata.js';
7
8
 
8
9
  /**
9
- * The exact tools a default local Pyric MCP server forwards to its sandbox.
10
- * A tool addition or removal is a public contract change and must update this
11
- * manifest deliberately.
10
+ * The exact tools a default local Pyric MCP server forwards to its sandbox,
11
+ * in `tools/list` order. Names are authored in `bridge/tool-family-records/`;
12
+ * a tool addition or removal is a public contract change and must update the
13
+ * family record deliberately.
12
14
  */
13
- export const DEFAULT_MCP_FORWARDED_TOOL_NAMES = [
14
- 'firestore_simulator_create',
15
- 'firestore_simulator_execute',
16
- 'firestore_simulator_read',
17
- 'firestore_simulator_batch',
18
- 'firestore_create_with_auto_id',
19
- 'firestore_simulator_undo',
20
- 'firestore_simulator_redo',
21
- 'firestore_simulator_events',
22
- 'firestore_simulator_transaction',
23
- 'firestore_get_document',
24
- 'firestore_list_documents',
25
- 'firestore_create_document',
26
- 'firestore_add_document',
27
- 'firestore_update_document',
28
- 'firestore_delete_document',
29
- 'firestore_batch_write',
30
- 'firestore_query_where',
31
- 'sandbox_inspect',
32
- 'rtdb_simulate_access',
33
- 'rtdb_crawl_structure',
34
- ] as const;
15
+ export const DEFAULT_MCP_FORWARDED_TOOL_NAMES: readonly string[] = toolFamilies(
16
+ 'forwarded',
17
+ ).flatMap((family) => family.tools);
35
18
 
36
19
  /** Local rules tools that run in the MCP process without a browser peer. */
37
- export const DEFAULT_MCP_IN_PROCESS_TOOL_NAMES = [
38
- 'firestore_simulate_rules',
39
- 'firestore_rules_stdlib_list',
40
- 'firestore_rules_stdlib_get',
41
- 'firestore_lint_rules',
42
- 'firestore_resolve_modules',
43
- 'rules_stdlib_list',
44
- 'rules_stdlib_get',
45
- 'rules_resolve_modules',
46
- 'pyric_can_i_use',
47
- ] as const;
20
+ export const DEFAULT_MCP_IN_PROCESS_TOOL_NAMES: readonly string[] = toolFamilies(
21
+ 'in-process',
22
+ ).flatMap((family) => family.tools);
48
23
 
49
- export const DEFAULT_MCP_TOOL_NAMES = [
24
+ export const DEFAULT_MCP_TOOL_NAMES: readonly string[] = [
50
25
  ...DEFAULT_MCP_FORWARDED_TOOL_NAMES,
51
26
  ...DEFAULT_MCP_IN_PROCESS_TOOL_NAMES,
52
- ] as const;
27
+ ];
53
28
 
54
29
  export interface DefaultMcpToolSurface {
55
30
  forwarded: ToolMetadata[];
56
31
  inProcess: ToolHandler[];
57
32
  }
58
33
 
59
- function assertExactNames(
60
- label: string,
61
- actual: readonly string[],
62
- expected: readonly string[],
63
- ): void {
64
- const actualSorted = [...actual].sort();
65
- const expectedSorted = [...expected].sort();
66
- if (
67
- actualSorted.length !== expectedSorted.length ||
68
- actualSorted.some((name, index) => name !== expectedSorted[index])
69
- ) {
70
- throw new Error(
71
- `${label} drifted from the default MCP contract\n` +
72
- `expected: ${expected.join(', ')}\n` +
73
- `actual: ${actual.join(', ')}`,
74
- );
75
- }
76
- }
77
-
78
34
  /**
79
35
  * Assemble the default MCP surface and fail closed if a factory changed
80
36
  * without a corresponding public-contract decision.
@@ -82,12 +38,12 @@ function assertExactNames(
82
38
  export function getDefaultMcpToolSurface(): DefaultMcpToolSurface {
83
39
  const forwarded = getSandboxToolMetadata();
84
40
  const inProcess = getInProcessToolHandlers();
85
- assertExactNames(
41
+ assertExactToolNames(
86
42
  'forwarded sandbox tools',
87
43
  forwarded.map((tool) => tool.name),
88
44
  DEFAULT_MCP_FORWARDED_TOOL_NAMES,
89
45
  );
90
- assertExactNames(
46
+ assertExactToolNames(
91
47
  'in-process tools',
92
48
  inProcess.map((tool) => tool.name),
93
49
  DEFAULT_MCP_IN_PROCESS_TOOL_NAMES,
@@ -209,13 +209,36 @@ export function createConsumerSession(
209
209
  };
210
210
  }
211
211
 
212
- export async function collectBody(req: IncomingMessage): Promise<unknown> {
212
+ /** Thrown by {@link collectBody} when a body exceeds the caller's limit. The
213
+ * code lets a route answer 413 instead of treating it as malformed JSON. */
214
+ export const BODY_TOO_LARGE_CODE = 'PYRIC_BODY_TOO_LARGE';
215
+
216
+ /**
217
+ * Read a request body and parse it as JSON.
218
+ *
219
+ * `limitBytes` caps how much is buffered. A route that is reachable by
220
+ * anything other than a trusted local caller must pass one: without it a
221
+ * single request can grow the string until the process dies.
222
+ */
223
+ export async function collectBody(
224
+ req: IncomingMessage,
225
+ limitBytes?: number,
226
+ ): Promise<unknown> {
213
227
  if (req.method === 'GET' || req.method === 'DELETE') return undefined;
214
228
  return await new Promise<unknown>((resolve, reject) => {
215
229
  let raw = '';
230
+ let overLimit = false;
216
231
  req.setEncoding('utf8');
217
232
  req.on('data', (chunk) => {
233
+ // Past the limit the rest of the upload is read and discarded rather
234
+ // than the socket being destroyed. Destroying resets the connection, so
235
+ // the caller's 413 would never reach the client.
236
+ if (overLimit) return;
218
237
  raw += chunk;
238
+ if (limitBytes === undefined || Buffer.byteLength(raw) <= limitBytes) return;
239
+ overLimit = true;
240
+ raw = '';
241
+ reject(Object.assign(new Error('request body too large'), { code: BODY_TOO_LARGE_CODE }));
219
242
  });
220
243
  req.on('end', () => {
221
244
  if (!raw) {