@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,26 @@
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 { type FirestoreDataToolDeps } from 'pyric/firestore';
12
+ import type { LocalSandbox } from 'pyric/sandbox';
13
+ import type { getInternalEnv } from 'pyric/sandbox/internal';
14
+ /** Everything a forwarded family needs from one sandbox, built once per sandbox. */
15
+ export interface SandboxBinding {
16
+ sandbox: LocalSandbox;
17
+ env: ReturnType<typeof getInternalEnv>;
18
+ resolveDb: FirestoreDataToolDeps['resolveDb'];
19
+ }
20
+ export declare const SANDBOX_HANDLER_FACTORIES: {
21
+ 'firestore-simulator': ({ env }: SandboxBinding) => ToolHandler<unknown, unknown>[];
22
+ 'firestore-data': ({ resolveDb }: SandboxBinding) => ToolHandler<unknown, unknown>[];
23
+ 'firestore-inspect': ({ sandbox }: SandboxBinding) => ToolHandler<unknown, unknown>[];
24
+ 'rtdb-inspection': ({ sandbox }: SandboxBinding) => ToolHandler<unknown, unknown>[];
25
+ };
26
+ //# sourceMappingURL=tool-family-factories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-family-factories.d.ts","sourceRoot":"","sources":["../../../src/bridge/client/tool-family-factories.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAI7D,oFAAoF;AACpF,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,YAAY,CAAC;IACtB,GAAG,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;IACvC,SAAS,EAAE,qBAAqB,CAAC,WAAW,CAAC,CAAC;CAC/C;AAED,eAAO,MAAM,yBAAyB;;;;;CAK4C,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { createFirestoreSimulatorTools } from 'pyric/rules/internal';
2
+ import { createFirestoreDataTools, createFirestoreInspectTools, } from 'pyric/firestore';
3
+ import { createRtdbInspectionTools } from '../../rtdb/inspection.js';
4
+ export const SANDBOX_HANDLER_FACTORIES = {
5
+ 'firestore-simulator': ({ env }) => createFirestoreSimulatorTools({ resolveSandbox: () => env }),
6
+ 'firestore-data': ({ resolveDb }) => createFirestoreDataTools({ resolveDb }),
7
+ 'firestore-inspect': ({ sandbox }) => createFirestoreInspectTools({ resolveSandbox: () => sandbox }),
8
+ 'rtdb-inspection': ({ sandbox }) => createRtdbInspectionTools({ resolveSandbox: () => sandbox }),
9
+ };
10
+ //# sourceMappingURL=tool-family-factories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-family-factories.js","sourceRoot":"","sources":["../../../src/bridge/client/tool-family-factories.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EACL,wBAAwB,EACxB,2BAA2B,GAE5B,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAUrE,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,qBAAqB,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,6BAA6B,CAAC,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;IAChG,gBAAgB,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,wBAAwB,CAAC,EAAE,SAAS,EAAE,CAAC;IAC5E,mBAAmB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,2BAA2B,CAAC,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IACpG,iBAAiB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,yBAAyB,CAAC,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;CAChB,CAAC"}
@@ -1,14 +1,15 @@
1
1
  import type { ToolHandler } from '@inbrowser/agent';
2
2
  import { type ToolMetadata } from './tool-metadata.js';
3
3
  /**
4
- * The exact tools a default local Pyric MCP server forwards to its sandbox.
5
- * A tool addition or removal is a public contract change and must update this
6
- * manifest deliberately.
4
+ * The exact tools a default local Pyric MCP server forwards to its sandbox,
5
+ * in `tools/list` order. Names are authored in `bridge/tool-family-records/`;
6
+ * a tool addition or removal is a public contract change and must update the
7
+ * family record deliberately.
7
8
  */
8
- export declare const DEFAULT_MCP_FORWARDED_TOOL_NAMES: 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", "firestore_get_document", "firestore_list_documents", "firestore_create_document", "firestore_add_document", "firestore_update_document", "firestore_delete_document", "firestore_batch_write", "firestore_query_where", "sandbox_inspect", "rtdb_simulate_access", "rtdb_crawl_structure"];
9
+ export declare const DEFAULT_MCP_FORWARDED_TOOL_NAMES: readonly string[];
9
10
  /** Local rules tools that run in the MCP process without a browser peer. */
10
- export declare const DEFAULT_MCP_IN_PROCESS_TOOL_NAMES: 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", "pyric_can_i_use"];
11
- export declare const DEFAULT_MCP_TOOL_NAMES: 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", "firestore_get_document", "firestore_list_documents", "firestore_create_document", "firestore_add_document", "firestore_update_document", "firestore_delete_document", "firestore_batch_write", "firestore_query_where", "sandbox_inspect", "rtdb_simulate_access", "rtdb_crawl_structure", "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", "pyric_can_i_use"];
11
+ export declare const DEFAULT_MCP_IN_PROCESS_TOOL_NAMES: readonly string[];
12
+ export declare const DEFAULT_MCP_TOOL_NAMES: readonly string[];
12
13
  export interface DefaultMcpToolSurface {
13
14
  forwarded: ToolMetadata[];
14
15
  inProcess: ToolHandler[];
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-contract.d.ts","sourceRoot":"","sources":["../../../src/bridge/server/mcp-contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAC;AAE5B;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,ujBAqBnC,CAAC;AAEX,4EAA4E;AAC5E,eAAO,MAAM,iCAAiC,8OAUpC,CAAC;AAEX,eAAO,MAAM,sBAAsB,0xBAGzB,CAAC;AAEX,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,SAAS,EAAE,WAAW,EAAE,CAAC;CAC1B;AAqBD;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,qBAAqB,CAchE"}
1
+ {"version":3,"file":"mcp-contract.d.ts","sourceRoot":"","sources":["../../../src/bridge/server/mcp-contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAC;AAE5B;;;;;GAKG;AACH,eAAO,MAAM,gCAAgC,EAAE,SAAS,MAAM,EAE3B,CAAC;AAEpC,4EAA4E;AAC5E,eAAO,MAAM,iCAAiC,EAAE,SAAS,MAAM,EAE5B,CAAC;AAEpC,eAAO,MAAM,sBAAsB,EAAE,SAAS,MAAM,EAGnD,CAAC;AAEF,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,SAAS,EAAE,WAAW,EAAE,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,qBAAqB,CAchE"}
@@ -1,57 +1,18 @@
1
+ import { assertExactToolNames, toolFamilies } from '../tool-families.js';
1
2
  import { getInProcessToolHandlers, getSandboxToolMetadata, } from './tool-metadata.js';
2
3
  /**
3
- * The exact tools a default local Pyric MCP server forwards to its sandbox.
4
- * A tool addition or removal is a public contract change and must update this
5
- * manifest deliberately.
4
+ * The exact tools a default local Pyric MCP server forwards to its sandbox,
5
+ * in `tools/list` order. Names are authored in `bridge/tool-family-records/`;
6
+ * a tool addition or removal is a public contract change and must update the
7
+ * family record deliberately.
6
8
  */
7
- export const DEFAULT_MCP_FORWARDED_TOOL_NAMES = [
8
- 'firestore_simulator_create',
9
- 'firestore_simulator_execute',
10
- 'firestore_simulator_read',
11
- 'firestore_simulator_batch',
12
- 'firestore_create_with_auto_id',
13
- 'firestore_simulator_undo',
14
- 'firestore_simulator_redo',
15
- 'firestore_simulator_events',
16
- 'firestore_simulator_transaction',
17
- 'firestore_get_document',
18
- 'firestore_list_documents',
19
- 'firestore_create_document',
20
- 'firestore_add_document',
21
- 'firestore_update_document',
22
- 'firestore_delete_document',
23
- 'firestore_batch_write',
24
- 'firestore_query_where',
25
- 'sandbox_inspect',
26
- 'rtdb_simulate_access',
27
- 'rtdb_crawl_structure',
28
- ];
9
+ export const DEFAULT_MCP_FORWARDED_TOOL_NAMES = toolFamilies('forwarded').flatMap((family) => family.tools);
29
10
  /** Local rules tools that run in the MCP process without a browser peer. */
30
- export const DEFAULT_MCP_IN_PROCESS_TOOL_NAMES = [
31
- 'firestore_simulate_rules',
32
- 'firestore_rules_stdlib_list',
33
- 'firestore_rules_stdlib_get',
34
- 'firestore_lint_rules',
35
- 'firestore_resolve_modules',
36
- 'rules_stdlib_list',
37
- 'rules_stdlib_get',
38
- 'rules_resolve_modules',
39
- 'pyric_can_i_use',
40
- ];
11
+ export const DEFAULT_MCP_IN_PROCESS_TOOL_NAMES = toolFamilies('in-process').flatMap((family) => family.tools);
41
12
  export const DEFAULT_MCP_TOOL_NAMES = [
42
13
  ...DEFAULT_MCP_FORWARDED_TOOL_NAMES,
43
14
  ...DEFAULT_MCP_IN_PROCESS_TOOL_NAMES,
44
15
  ];
45
- function assertExactNames(label, actual, expected) {
46
- const actualSorted = [...actual].sort();
47
- const expectedSorted = [...expected].sort();
48
- if (actualSorted.length !== expectedSorted.length ||
49
- actualSorted.some((name, index) => name !== expectedSorted[index])) {
50
- throw new Error(`${label} drifted from the default MCP contract\n` +
51
- `expected: ${expected.join(', ')}\n` +
52
- `actual: ${actual.join(', ')}`);
53
- }
54
- }
55
16
  /**
56
17
  * Assemble the default MCP surface and fail closed if a factory changed
57
18
  * without a corresponding public-contract decision.
@@ -59,8 +20,8 @@ function assertExactNames(label, actual, expected) {
59
20
  export function getDefaultMcpToolSurface() {
60
21
  const forwarded = getSandboxToolMetadata();
61
22
  const inProcess = getInProcessToolHandlers();
62
- assertExactNames('forwarded sandbox tools', forwarded.map((tool) => tool.name), DEFAULT_MCP_FORWARDED_TOOL_NAMES);
63
- assertExactNames('in-process tools', inProcess.map((tool) => tool.name), DEFAULT_MCP_IN_PROCESS_TOOL_NAMES);
23
+ assertExactToolNames('forwarded sandbox tools', forwarded.map((tool) => tool.name), DEFAULT_MCP_FORWARDED_TOOL_NAMES);
24
+ assertExactToolNames('in-process tools', inProcess.map((tool) => tool.name), DEFAULT_MCP_IN_PROCESS_TOOL_NAMES);
64
25
  return { forwarded, inProcess };
65
26
  }
66
27
  //# sourceMappingURL=mcp-contract.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-contract.js","sourceRoot":"","sources":["../../../src/bridge/server/mcp-contract.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,EACxB,sBAAsB,GAEvB,MAAM,oBAAoB,CAAC;AAE5B;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG;IAC9C,4BAA4B;IAC5B,6BAA6B;IAC7B,0BAA0B;IAC1B,2BAA2B;IAC3B,+BAA+B;IAC/B,0BAA0B;IAC1B,0BAA0B;IAC1B,4BAA4B;IAC5B,iCAAiC;IACjC,wBAAwB;IACxB,0BAA0B;IAC1B,2BAA2B;IAC3B,wBAAwB;IACxB,2BAA2B;IAC3B,2BAA2B;IAC3B,uBAAuB;IACvB,uBAAuB;IACvB,iBAAiB;IACjB,sBAAsB;IACtB,sBAAsB;CACd,CAAC;AAEX,4EAA4E;AAC5E,MAAM,CAAC,MAAM,iCAAiC,GAAG;IAC/C,0BAA0B;IAC1B,6BAA6B;IAC7B,4BAA4B;IAC5B,sBAAsB;IACtB,2BAA2B;IAC3B,mBAAmB;IACnB,kBAAkB;IAClB,uBAAuB;IACvB,iBAAiB;CACT,CAAC;AAEX,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,GAAG,gCAAgC;IACnC,GAAG,iCAAiC;CAC5B,CAAC;AAOX,SAAS,gBAAgB,CACvB,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;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB;IACtC,MAAM,SAAS,GAAG,sBAAsB,EAAE,CAAC;IAC3C,MAAM,SAAS,GAAG,wBAAwB,EAAE,CAAC;IAC7C,gBAAgB,CACd,yBAAyB,EACzB,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAClC,gCAAgC,CACjC,CAAC;IACF,gBAAgB,CACd,kBAAkB,EAClB,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAClC,iCAAiC,CAClC,CAAC;IACF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"mcp-contract.js","sourceRoot":"","sources":["../../../src/bridge/server/mcp-contract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EACL,wBAAwB,EACxB,sBAAsB,GAEvB,MAAM,oBAAoB,CAAC;AAE5B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAsB,YAAY,CAC7E,WAAW,CACZ,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAEpC,4EAA4E;AAC5E,MAAM,CAAC,MAAM,iCAAiC,GAAsB,YAAY,CAC9E,YAAY,CACb,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAEpC,MAAM,CAAC,MAAM,sBAAsB,GAAsB;IACvD,GAAG,gCAAgC;IACnC,GAAG,iCAAiC;CACrC,CAAC;AAOF;;;GAGG;AACH,MAAM,UAAU,wBAAwB;IACtC,MAAM,SAAS,GAAG,sBAAsB,EAAE,CAAC;IAC3C,MAAM,SAAS,GAAG,wBAAwB,EAAE,CAAC;IAC7C,oBAAoB,CAClB,yBAAyB,EACzB,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAClC,gCAAgC,CACjC,CAAC;IACF,oBAAoB,CAClB,kBAAkB,EAClB,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAClC,iCAAiC,CAClC,CAAC;IACF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAClC,CAAC"}
@@ -35,5 +35,15 @@ export interface ConsumerSession {
35
35
  * id spaces never mix.
36
36
  */
37
37
  export declare function createConsumerSession(bridge: Bridge, send: (msg: BridgeMessage) => void): ConsumerSession;
38
- export declare function collectBody(req: IncomingMessage): Promise<unknown>;
38
+ /** Thrown by {@link collectBody} when a body exceeds the caller's limit. The
39
+ * code lets a route answer 413 instead of treating it as malformed JSON. */
40
+ export declare const BODY_TOO_LARGE_CODE = "PYRIC_BODY_TOO_LARGE";
41
+ /**
42
+ * Read a request body and parse it as JSON.
43
+ *
44
+ * `limitBytes` caps how much is buffered. A route that is reachable by
45
+ * anything other than a trusted local caller must pass one: without it a
46
+ * single request can grow the string until the process dies.
47
+ */
48
+ export declare function collectBody(req: IncomingMessage, limitBytes?: number): Promise<unknown>;
39
49
  //# sourceMappingURL=peer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"peer.d.ts","sourceRoot":"","sources":["../../../src/bridge/server/peer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,gBAAgB,CAAC;AAGxB,wBAAgB,UAAU,CACxB,MAAM,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,EACvC,EAAE,EAAE,SAAS,GACZ,IAAI,CAwFN;AAID;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,mDAAmD;IACnD,aAAa,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAAC;IACxC,6DAA6D;IAC7D,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,GACjC,eAAe,CAoEjB;AAED,wBAAsB,WAAW,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAqBxE"}
1
+ {"version":3,"file":"peer.d.ts","sourceRoot":"","sources":["../../../src/bridge/server/peer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,gBAAgB,CAAC;AAGxB,wBAAgB,UAAU,CACxB,MAAM,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,EACvC,EAAE,EAAE,SAAS,GACZ,IAAI,CAwFN;AAID;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,mDAAmD;IACnD,aAAa,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAAC;IACxC,6DAA6D;IAC7D,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,GACjC,eAAe,CAoEjB;AAED;6EAC6E;AAC7E,eAAO,MAAM,mBAAmB,yBAAyB,CAAC;AAE1D;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,eAAe,EACpB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CA8BlB"}
@@ -163,14 +163,35 @@ export function createConsumerSession(bridge, send) {
163
163
  },
164
164
  };
165
165
  }
166
- export async function collectBody(req) {
166
+ /** Thrown by {@link collectBody} when a body exceeds the caller's limit. The
167
+ * code lets a route answer 413 instead of treating it as malformed JSON. */
168
+ export const BODY_TOO_LARGE_CODE = 'PYRIC_BODY_TOO_LARGE';
169
+ /**
170
+ * Read a request body and parse it as JSON.
171
+ *
172
+ * `limitBytes` caps how much is buffered. A route that is reachable by
173
+ * anything other than a trusted local caller must pass one: without it a
174
+ * single request can grow the string until the process dies.
175
+ */
176
+ export async function collectBody(req, limitBytes) {
167
177
  if (req.method === 'GET' || req.method === 'DELETE')
168
178
  return undefined;
169
179
  return await new Promise((resolve, reject) => {
170
180
  let raw = '';
181
+ let overLimit = false;
171
182
  req.setEncoding('utf8');
172
183
  req.on('data', (chunk) => {
184
+ // Past the limit the rest of the upload is read and discarded rather
185
+ // than the socket being destroyed. Destroying resets the connection, so
186
+ // the caller's 413 would never reach the client.
187
+ if (overLimit)
188
+ return;
173
189
  raw += chunk;
190
+ if (limitBytes === undefined || Buffer.byteLength(raw) <= limitBytes)
191
+ return;
192
+ overLimit = true;
193
+ raw = '';
194
+ reject(Object.assign(new Error('request body too large'), { code: BODY_TOO_LARGE_CODE }));
174
195
  });
175
196
  req.on('end', () => {
176
197
  if (!raw) {
@@ -1 +1 @@
1
- {"version":3,"file":"peer.js","sourceRoot":"","sources":["../../../src/bridge/server/peer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"peer.js","sourceRoot":"","sources":["../../../src/bridge/server/peer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Node-side factory for each tool family. This is the only bridge module
3
+ * that imports `pyric/rules/internal/node` or the conformance tools; the
4
+ * browser side has its own map in `client/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
+ /** A resolver that must never run: forwarded families are executed by the browser peer, not here. */
12
+ export type StubResolver = () => never;
13
+ /** Forwarded families, called with a stub so only metadata is read. */
14
+ export declare const FORWARDED_METADATA_FACTORIES: {
15
+ 'firestore-simulator': (stub: StubResolver) => ToolHandler<unknown, unknown>[];
16
+ 'firestore-data': (stub: StubResolver) => ToolHandler<unknown, unknown>[];
17
+ 'firestore-inspect': (stub: StubResolver) => ToolHandler<unknown, unknown>[];
18
+ 'rtdb-inspection': (stub: StubResolver) => ToolHandler<unknown, unknown>[];
19
+ };
20
+ /**
21
+ * In-process families, returned as live handlers the MCP server registers
22
+ * directly. `scope` reaches the rules factory, which appends a hosted
23
+ * verification tool only when one is supplied; the default surface supplies
24
+ * none.
25
+ */
26
+ export declare const IN_PROCESS_HANDLER_FACTORIES: {
27
+ 'firestore-rules': (scope: unknown) => ToolHandler<unknown, unknown>[];
28
+ conformance: () => ToolHandler<unknown, unknown>[];
29
+ };
30
+ //# sourceMappingURL=tool-family-factories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-family-factories.d.ts","sourceRoot":"","sources":["../../../src/bridge/server/tool-family-factories.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAUpD,qGAAqG;AACrG,MAAM,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC;AAEvC,uEAAuE;AACvE,eAAO,MAAM,4BAA4B;;;;;CAKoC,CAAC;AAE9E;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B;;;CAGiC,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { createFirestoreSimulatorTools, createFirestoreRulesTools, } from 'pyric/rules/internal/node';
2
+ import { createFirestoreDataTools, createFirestoreInspectTools } from 'pyric/firestore';
3
+ import { createRtdbInspectionTools } from '../../rtdb/inspection.js';
4
+ import { createConformanceTools } from '../../conformance/tools.js';
5
+ /** Forwarded families, called with a stub so only metadata is read. */
6
+ export const FORWARDED_METADATA_FACTORIES = {
7
+ 'firestore-simulator': (stub) => createFirestoreSimulatorTools({ resolveSandbox: stub }),
8
+ 'firestore-data': (stub) => createFirestoreDataTools({ resolveDb: stub }),
9
+ 'firestore-inspect': (stub) => createFirestoreInspectTools({ resolveSandbox: stub }),
10
+ 'rtdb-inspection': (stub) => createRtdbInspectionTools({ resolveSandbox: stub }),
11
+ };
12
+ /**
13
+ * In-process families, returned as live handlers the MCP server registers
14
+ * directly. `scope` reaches the rules factory, which appends a hosted
15
+ * verification tool only when one is supplied; the default surface supplies
16
+ * none.
17
+ */
18
+ export const IN_PROCESS_HANDLER_FACTORIES = {
19
+ 'firestore-rules': (scope) => createFirestoreRulesTools({ scope }),
20
+ conformance: () => createConformanceTools(),
21
+ };
22
+ //# sourceMappingURL=tool-family-factories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-family-factories.js","sourceRoot":"","sources":["../../../src/bridge/server/tool-family-factories.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,6BAA6B,EAC7B,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,wBAAwB,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AACxF,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAMpE,uEAAuE;AACvE,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,qBAAqB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,6BAA6B,CAAC,EAAE,cAAc,EAAE,IAAa,EAAE,CAAC;IACjG,gBAAgB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,wBAAwB,CAAC,EAAE,SAAS,EAAE,IAAa,EAAE,CAAC;IAClF,mBAAmB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,2BAA2B,CAAC,EAAE,cAAc,EAAE,IAAa,EAAE,CAAC;IAC7F,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,yBAAyB,CAAC,EAAE,cAAc,EAAE,IAAa,EAAE,CAAC;CACd,CAAC;AAE9E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,yBAAyB,CAAC,EAAE,KAAK,EAAW,CAAC;IAC3E,WAAW,EAAE,GAAG,EAAE,CAAC,sBAAsB,EAAE;CAC6B,CAAC"}
@@ -1,16 +1,18 @@
1
1
  /**
2
- * Extract tool metadata (name + description + parameters) from the
3
- * existing `pyric/rules` factories without running any
4
- * tool logic. Used by the bridge to register MCP tools whose actual
5
- * dispatch happens against the connected browser peer.
2
+ * Node-side composition of the tool families the bridge serves over MCP.
6
3
  *
7
- * Why: `createFirestoreSimulatorTools` returns `ToolHandler[]` with
8
- * `execute` bound to a `LocalEnvironment`. The bridge process doesn't
9
- * have a `LocalEnvironment` it forwards. But it does need the
10
- * metadata to populate the MCP server's tool list. This module calls
11
- * the factory with a stub resolver and reads only the metadata; the
12
- * stub never gets invoked because the bridge replaces `execute`
13
- * before dispatch.
4
+ * Forwarded families are executed by the browser sandbox peer, so this
5
+ * process never holds a `LocalEnvironment`. It still needs each tool's
6
+ * metadata (name, description, parameters) to populate the MCP tool list, so
7
+ * it calls the family factories with a stub resolver and reads only the
8
+ * metadata; the bridge replaces `execute` with forward-to-peer dispatch
9
+ * before any call reaches a handler.
10
+ *
11
+ * In-process families run here without a browser peer and are returned as
12
+ * live handlers.
13
+ *
14
+ * Family order comes from the records under `../tool-family-records/`; the
15
+ * factories come from `./tool-family-factories.ts`.
14
16
  */
15
17
  import type { ToolHandler } from '@inbrowser/agent';
16
18
  export interface ToolMetadata {
@@ -19,16 +21,13 @@ export interface ToolMetadata {
19
21
  parameters: Record<string, unknown>;
20
22
  }
21
23
  /**
22
- * Tool metadata for the sandbox bridge. Includes the
23
- * data-plane / sandbox-management tools that the browser dispatches
24
- * via `LocalEnvironment`. Rules tooling (lint, validate, simulate,
25
- * test) is NOT included here — those execute in Node and are
26
- * registered separately, since they don't need the browser sandbox.
24
+ * Tool metadata for every forwarded family, in family order. The stub
25
+ * resolver never runs: the bridge replaces `execute()` with its own
26
+ * forward-to-peer dispatch.
27
27
  */
28
28
  export declare function getSandboxToolMetadata(): ToolMetadata[];
29
29
  /**
30
- * Tooling factories that execute in-process on the bridge
31
- * (no browser needed). Returned as live ToolHandlers — the bridge
30
+ * Live handlers for every in-process family, in family order. The bridge
32
31
  * registers each handler's `execute` directly.
33
32
  *
34
33
  * `scope` is forwarded so the hosted Rules Test API verification tool can
@@ -1 +1 @@
1
- {"version":3,"file":"tool-metadata.d.ts","sourceRoot":"","sources":["../../../src/bridge/server/tool-metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AASpD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAUD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,IAAI,YAAY,EAAE,CAkCvD;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,WAAW,EAAE,CASvE"}
1
+ {"version":3,"file":"tool-metadata.d.ts","sourceRoot":"","sources":["../../../src/bridge/server/tool-metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAQpD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAUD;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,YAAY,EAAE,CASvD;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,WAAW,EAAE,CAIvE"}
@@ -1,21 +1,21 @@
1
1
  /**
2
- * Extract tool metadata (name + description + parameters) from the
3
- * existing `pyric/rules` factories without running any
4
- * tool logic. Used by the bridge to register MCP tools whose actual
5
- * dispatch happens against the connected browser peer.
2
+ * Node-side composition of the tool families the bridge serves over MCP.
6
3
  *
7
- * Why: `createFirestoreSimulatorTools` returns `ToolHandler[]` with
8
- * `execute` bound to a `LocalEnvironment`. The bridge process doesn't
9
- * have a `LocalEnvironment` it forwards. But it does need the
10
- * metadata to populate the MCP server's tool list. This module calls
11
- * the factory with a stub resolver and reads only the metadata; the
12
- * stub never gets invoked because the bridge replaces `execute`
13
- * before dispatch.
4
+ * Forwarded families are executed by the browser sandbox peer, so this
5
+ * process never holds a `LocalEnvironment`. It still needs each tool's
6
+ * metadata (name, description, parameters) to populate the MCP tool list, so
7
+ * it calls the family factories with a stub resolver and reads only the
8
+ * metadata; the bridge replaces `execute` with forward-to-peer dispatch
9
+ * before any call reaches a handler.
10
+ *
11
+ * In-process families run here without a browser peer and are returned as
12
+ * live handlers.
13
+ *
14
+ * Family order comes from the records under `../tool-family-records/`; the
15
+ * factories come from `./tool-family-factories.ts`.
14
16
  */
15
- import { createFirestoreSimulatorTools, createFirestoreRulesTools, } from 'pyric/rules/internal/node';
16
- import { createFirestoreDataTools, createFirestoreInspectTools } from 'pyric/firestore';
17
- import { createRtdbInspectionTools } from '../../rtdb/inspection.js';
18
- import { createConformanceTools } from '../../conformance/tools.js';
17
+ import { toolFamilies } from '../tool-families.js';
18
+ import { FORWARDED_METADATA_FACTORIES, IN_PROCESS_HANDLER_FACTORIES, } from './tool-family-factories.js';
19
19
  function toMetadata(handler) {
20
20
  return {
21
21
  name: handler.name,
@@ -24,61 +24,26 @@ function toMetadata(handler) {
24
24
  };
25
25
  }
26
26
  /**
27
- * Tool metadata for the sandbox bridge. Includes the
28
- * data-plane / sandbox-management tools that the browser dispatches
29
- * via `LocalEnvironment`. Rules tooling (lint, validate, simulate,
30
- * test) is NOT included here — those execute in Node and are
31
- * registered separately, since they don't need the browser sandbox.
27
+ * Tool metadata for every forwarded family, in family order. The stub
28
+ * resolver never runs: the bridge replaces `execute()` with its own
29
+ * forward-to-peer dispatch.
32
30
  */
33
31
  export function getSandboxToolMetadata() {
34
- // The resolver stub never runs: the bridge replaces execute() with
35
- // its own forward-to-peer dispatch.
36
- const stubResolver = async () => {
32
+ const stub = () => {
37
33
  throw new Error('BUG: sandbox-tool factory executor invoked on the bridge side — should have been replaced');
38
34
  };
39
- const handlers = [
40
- // Simulator / write / batch / undo / redo / events / transaction —
41
- // 8 tools that mutate or read the in-browser sandbox state.
42
- ...createFirestoreSimulatorTools({
43
- resolveSandbox: stubResolver,
44
- }),
45
- // Data plane — addDoc / setDoc / getDoc / updateDoc / deleteDoc /
46
- // collection / query / where — the modular Firestore CRUD surface
47
- // routed through the browser sandbox so agents can drive a real app
48
- // session rather than only the simulator.
49
- ...createFirestoreDataTools({
50
- resolveDb: stubResolver,
51
- }),
52
- // `sandbox_inspect` — single-call diagnostic that answers
53
- // "what state is the sandbox in?" Born out of CLAUDE_DEBUG_SESSION.md
54
- // (a real agent needing 51 tool calls + 72k tokens to figure out
55
- // that rules weren't loaded). Routes to the browser sandbox like
56
- // the other forwarded tools.
57
- ...createFirestoreInspectTools({
58
- resolveSandbox: stubResolver,
59
- }),
60
- ...createRtdbInspectionTools({
61
- resolveSandbox: stubResolver,
62
- }),
63
- ];
64
- return handlers.map(toMetadata);
35
+ return toolFamilies('forwarded')
36
+ .flatMap((family) => FORWARDED_METADATA_FACTORIES[family.key](stub))
37
+ .map(toMetadata);
65
38
  }
66
39
  /**
67
- * Tooling factories that execute in-process on the bridge
68
- * (no browser needed). Returned as live ToolHandlers — the bridge
40
+ * Live handlers for every in-process family, in family order. The bridge
69
41
  * registers each handler's `execute` directly.
70
42
  *
71
43
  * `scope` is forwarded so the hosted Rules Test API verification tool can
72
44
  * authenticate without changing the bridge's sandbox-only execution model.
73
45
  */
74
46
  export function getInProcessToolHandlers(scope) {
75
- // Factory accepts { scope } per packages/pyric/src/rules/tools.ts.
76
- // The bridge does not need to own the structurally compatible type.
77
- // Includes the rules tool surface plus the Node-only conformance query.
78
- // No browser is needed.
79
- return [
80
- ...createFirestoreRulesTools({ scope }),
81
- ...createConformanceTools(),
82
- ];
47
+ return toolFamilies('in-process').flatMap((family) => IN_PROCESS_HANDLER_FACTORIES[family.key](scope));
83
48
  }
84
49
  //# sourceMappingURL=tool-metadata.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-metadata.js","sourceRoot":"","sources":["../../../src/bridge/server/tool-metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EACL,6BAA6B,EAC7B,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,wBAAwB,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AACxF,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAQpE,SAAS,UAAU,CAAC,OAAoB;IACtC,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,UAAU,EAAE,OAAO,CAAC,UAAqC;KAC1D,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB;IACpC,mEAAmE;IACnE,oCAAoC;IACpC,MAAM,YAAY,GAAG,KAAK,IAAI,EAAE;QAC9B,MAAM,IAAI,KAAK,CACb,2FAA2F,CAC5F,CAAC;IACJ,CAAC,CAAC;IACF,MAAM,QAAQ,GAAkB;QAC9B,mEAAmE;QACnE,4DAA4D;QAC5D,GAAG,6BAA6B,CAAC;YAC/B,cAAc,EAAE,YAAqB;SACtC,CAAC;QACF,kEAAkE;QAClE,kEAAkE;QAClE,oEAAoE;QACpE,0CAA0C;QAC1C,GAAG,wBAAwB,CAAC;YAC1B,SAAS,EAAE,YAAqB;SACjC,CAAC;QACF,0DAA0D;QAC1D,sEAAsE;QACtE,iEAAiE;QACjE,iEAAiE;QACjE,6BAA6B;QAC7B,GAAG,2BAA2B,CAAC;YAC7B,cAAc,EAAE,YAAqB;SACtC,CAAC;QACF,GAAG,yBAAyB,CAAC;YAC3B,cAAc,EAAE,YAAqB;SACtC,CAAC;KACH,CAAC;IACF,OAAO,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAClC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAe;IACtD,mEAAmE;IACnE,oEAAoE;IACpE,wEAAwE;IACxE,wBAAwB;IACxB,OAAO;QACL,GAAG,yBAAyB,CAAC,EAAE,KAAK,EAAW,CAAC;QAChD,GAAG,sBAAsB,EAAE;KAC5B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"tool-metadata.js","sourceRoot":"","sources":["../../../src/bridge/server/tool-metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,GAE7B,MAAM,4BAA4B,CAAC;AAQpC,SAAS,UAAU,CAAC,OAAoB;IACtC,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,UAAU,EAAE,OAAO,CAAC,UAAqC;KAC1D,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,IAAI,GAAiB,GAAG,EAAE;QAC9B,MAAM,IAAI,KAAK,CACb,2FAA2F,CAC5F,CAAC;IACJ,CAAC,CAAC;IACF,OAAO,YAAY,CAAC,WAAW,CAAC;SAC7B,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,4BAA4B,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;SACnE,GAAG,CAAC,UAAU,CAAC,CAAC;AACrB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAe;IACtD,OAAO,YAAY,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CACnD,4BAA4B,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAChD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,48 @@
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
+ export type ToolTransport = 'forwarded' | 'in-process';
18
+ /** Authored in one record file per family. The key is the filename without `.ts`; the generator adds it. */
19
+ export interface ToolFamilyRecord {
20
+ /** `forwarded`: executed by the browser sandbox peer. `in-process`: executed in the MCP process. */
21
+ readonly transport: ToolTransport;
22
+ /** Stable position in the default `tools/list` order. Unique across all records; authored with gaps of 10. */
23
+ readonly order: number;
24
+ /** Exact names the family factory yields for the default surface, in factory order. */
25
+ readonly tools: readonly string[];
26
+ }
27
+ export interface ToolFamily extends ToolFamilyRecord {
28
+ readonly key: string;
29
+ }
30
+ type RegisteredFamily = (typeof TOOL_FAMILIES)[number];
31
+ export type ForwardedFamilyKey = Extract<RegisteredFamily, {
32
+ transport: 'forwarded';
33
+ }>['key'];
34
+ export type InProcessFamilyKey = Extract<RegisteredFamily, {
35
+ transport: 'in-process';
36
+ }>['key'];
37
+ /** Families of one transport, sorted by `order`. Validates once at load: duplicate key, order, or tool name throws. */
38
+ export declare function toolFamilies<T extends ToolTransport>(transport: T): readonly Extract<RegisteredFamily, {
39
+ transport: T;
40
+ }>[];
41
+ /**
42
+ * Fail closed when a factory yields a different name set from the records.
43
+ * Both sides call this with the same message so drift reads the same
44
+ * wherever it surfaces.
45
+ */
46
+ export declare function assertExactToolNames(label: string, actual: readonly string[], expected: readonly string[]): void;
47
+ export {};
48
+ //# sourceMappingURL=tool-families.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-families.d.ts","sourceRoot":"","sources":["../../src/bridge/tool-families.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,YAAY,CAAC;AAEvD,4GAA4G;AAC5G,MAAM,WAAW,gBAAgB;IAC/B,oGAAoG;IACpG,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;IAClC,8GAA8G;IAC9G,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,uFAAuF;IACvF,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,UAAW,SAAQ,gBAAgB;IAClD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,KAAK,gBAAgB,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AACvD,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,EAAE;IAAE,SAAS,EAAE,WAAW,CAAA;CAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AAC9F,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,EAAE;IAAE,SAAS,EAAE,YAAY,CAAA;CAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AAmB/F,uHAAuH;AACvH,wBAAgB,YAAY,CAAC,CAAC,SAAS,aAAa,EAClD,SAAS,EAAE,CAAC,GACX,SAAS,OAAO,CAAC,gBAAgB,EAAE;IAAE,SAAS,EAAE,CAAC,CAAA;CAAE,CAAC,EAAE,CAKxD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,QAAQ,EAAE,SAAS,MAAM,EAAE,GAC1B,IAAI,CAaN"}
@@ -0,0 +1,32 @@
1
+ export declare const TOOL_FAMILIES: readonly [{
2
+ readonly transport: "in-process";
3
+ readonly order: 60;
4
+ readonly tools: readonly ["pyric_can_i_use"];
5
+ readonly key: "conformance";
6
+ }, {
7
+ readonly transport: "forwarded";
8
+ readonly order: 20;
9
+ 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"];
10
+ readonly key: "firestore-data";
11
+ }, {
12
+ readonly transport: "forwarded";
13
+ readonly order: 30;
14
+ readonly tools: readonly ["sandbox_inspect"];
15
+ readonly key: "firestore-inspect";
16
+ }, {
17
+ readonly transport: "in-process";
18
+ readonly order: 50;
19
+ 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"];
20
+ readonly key: "firestore-rules";
21
+ }, {
22
+ readonly transport: "forwarded";
23
+ readonly order: 10;
24
+ 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"];
25
+ readonly key: "firestore-simulator";
26
+ }, {
27
+ readonly transport: "forwarded";
28
+ readonly order: 40;
29
+ readonly tools: readonly ["rtdb_simulate_access", "rtdb_crawl_structure"];
30
+ readonly key: "rtdb-inspection";
31
+ }];
32
+ //# sourceMappingURL=tool-families.generated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-families.generated.d.ts","sourceRoot":"","sources":["../../src/bridge/tool-families.generated.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOgB,CAAC"}
@@ -0,0 +1,15 @@
1
+ import conformance from './tool-family-records/conformance.js';
2
+ import firestoreData from './tool-family-records/firestore-data.js';
3
+ import firestoreInspect from './tool-family-records/firestore-inspect.js';
4
+ import firestoreRules from './tool-family-records/firestore-rules.js';
5
+ import firestoreSimulator from './tool-family-records/firestore-simulator.js';
6
+ import rtdbInspection from './tool-family-records/rtdb-inspection.js';
7
+ export const TOOL_FAMILIES = [
8
+ { key: "conformance", ...conformance },
9
+ { key: "firestore-data", ...firestoreData },
10
+ { key: "firestore-inspect", ...firestoreInspect },
11
+ { key: "firestore-rules", ...firestoreRules },
12
+ { key: "firestore-simulator", ...firestoreSimulator },
13
+ { key: "rtdb-inspection", ...rtdbInspection },
14
+ ];
15
+ //# sourceMappingURL=tool-families.generated.js.map