@pyric/cli 0.1.0-alpha.20 → 0.1.0-alpha.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +64 -89
- package/dist/assurance/.generated/conformance-verdicts.d.ts +68 -1
- package/dist/assurance/.generated/conformance-verdicts.d.ts.map +1 -1
- package/dist/assurance/.generated/conformance-verdicts.js +68 -1
- package/dist/assurance/.generated/conformance-verdicts.js.map +1 -1
- package/dist/bridge/client/dispatch.d.ts +25 -19
- package/dist/bridge/client/dispatch.d.ts.map +1 -1
- package/dist/bridge/client/dispatch.js +41 -48
- package/dist/bridge/client/dispatch.js.map +1 -1
- package/dist/bridge/client/tool-family-factories.d.ts +26 -0
- package/dist/bridge/client/tool-family-factories.d.ts.map +1 -0
- package/dist/bridge/client/tool-family-factories.js +10 -0
- package/dist/bridge/client/tool-family-factories.js.map +1 -0
- package/dist/bridge/server/mcp-contract.d.ts +7 -6
- package/dist/bridge/server/mcp-contract.d.ts.map +1 -1
- package/dist/bridge/server/mcp-contract.js +9 -48
- package/dist/bridge/server/mcp-contract.js.map +1 -1
- package/dist/bridge/server/peer.d.ts +11 -1
- package/dist/bridge/server/peer.d.ts.map +1 -1
- package/dist/bridge/server/peer.js +22 -1
- package/dist/bridge/server/peer.js.map +1 -1
- package/dist/bridge/server/tool-family-factories.d.ts +30 -0
- package/dist/bridge/server/tool-family-factories.d.ts.map +1 -0
- package/dist/bridge/server/tool-family-factories.js +22 -0
- package/dist/bridge/server/tool-family-factories.js.map +1 -0
- package/dist/bridge/server/tool-metadata.d.ts +17 -18
- package/dist/bridge/server/tool-metadata.d.ts.map +1 -1
- package/dist/bridge/server/tool-metadata.js +24 -59
- package/dist/bridge/server/tool-metadata.js.map +1 -1
- package/dist/bridge/tool-families.d.ts +48 -0
- package/dist/bridge/tool-families.d.ts.map +1 -0
- package/dist/bridge/tool-families.generated.d.ts +32 -0
- package/dist/bridge/tool-families.generated.d.ts.map +1 -0
- package/dist/bridge/tool-families.generated.js +15 -0
- package/dist/bridge/tool-families.generated.js.map +1 -0
- package/dist/bridge/tool-families.js +51 -0
- package/dist/bridge/tool-families.js.map +1 -0
- package/dist/bridge/tool-family-records/conformance.d.ts +7 -0
- package/dist/bridge/tool-family-records/conformance.d.ts.map +1 -0
- package/dist/bridge/tool-family-records/conformance.js +6 -0
- package/dist/bridge/tool-family-records/conformance.js.map +1 -0
- package/dist/bridge/tool-family-records/firestore-data.d.ts +7 -0
- package/dist/bridge/tool-family-records/firestore-data.d.ts.map +1 -0
- package/dist/bridge/tool-family-records/firestore-data.js +15 -0
- package/dist/bridge/tool-family-records/firestore-data.js.map +1 -0
- package/dist/bridge/tool-family-records/firestore-inspect.d.ts +7 -0
- package/dist/bridge/tool-family-records/firestore-inspect.d.ts.map +1 -0
- package/dist/bridge/tool-family-records/firestore-inspect.js +6 -0
- package/dist/bridge/tool-family-records/firestore-inspect.js.map +1 -0
- package/dist/bridge/tool-family-records/firestore-rules.d.ts +7 -0
- package/dist/bridge/tool-family-records/firestore-rules.d.ts.map +1 -0
- package/dist/bridge/tool-family-records/firestore-rules.js +15 -0
- package/dist/bridge/tool-family-records/firestore-rules.js.map +1 -0
- package/dist/bridge/tool-family-records/firestore-simulator.d.ts +7 -0
- package/dist/bridge/tool-family-records/firestore-simulator.d.ts.map +1 -0
- package/dist/bridge/tool-family-records/firestore-simulator.js +16 -0
- package/dist/bridge/tool-family-records/firestore-simulator.js.map +1 -0
- package/dist/bridge/tool-family-records/rtdb-inspection.d.ts +7 -0
- package/dist/bridge/tool-family-records/rtdb-inspection.d.ts.map +1 -0
- package/dist/bridge/tool-family-records/rtdb-inspection.js +6 -0
- package/dist/bridge/tool-family-records/rtdb-inspection.js.map +1 -0
- package/dist/bundler/externals.d.ts +37 -0
- package/dist/bundler/externals.d.ts.map +1 -0
- package/dist/bundler/externals.js +52 -0
- package/dist/bundler/externals.js.map +1 -0
- package/dist/bundler/index.d.ts +17 -0
- package/dist/bundler/index.d.ts.map +1 -0
- package/dist/bundler/index.js +17 -0
- package/dist/bundler/index.js.map +1 -0
- package/dist/cli/inlined-sdk-scanner.d.ts +6 -0
- package/dist/cli/inlined-sdk-scanner.d.ts.map +1 -0
- package/dist/cli/inlined-sdk-scanner.js +82 -0
- package/dist/cli/inlined-sdk-scanner.js.map +1 -0
- package/dist/cli/sandbox-interlock.d.ts +97 -0
- package/dist/cli/sandbox-interlock.d.ts.map +1 -0
- package/dist/cli/sandbox-interlock.js +112 -0
- package/dist/cli/sandbox-interlock.js.map +1 -0
- package/dist/cli/sandbox-runner.d.ts +20 -12
- package/dist/cli/sandbox-runner.d.ts.map +1 -1
- package/dist/cli/sandbox-runner.js +24 -21
- package/dist/cli/sandbox-runner.js.map +1 -1
- package/dist/cli/serve.d.ts +6 -10
- package/dist/cli/serve.d.ts.map +1 -1
- package/dist/cli/serve.js +57 -77
- package/dist/cli/serve.js.map +1 -1
- package/dist/cli/unsupported-runtime.d.ts +27 -0
- package/dist/cli/unsupported-runtime.d.ts.map +1 -0
- package/dist/cli/unsupported-runtime.js +63 -0
- package/dist/cli/unsupported-runtime.js.map +1 -0
- package/dist/conformance/.generated/can-i-use-browser.d.ts +1 -1
- package/dist/conformance/.generated/can-i-use-browser.d.ts.map +1 -1
- package/dist/conformance/.generated/can-i-use-browser.js +1 -1
- package/dist/conformance/.generated/can-i-use-browser.js.map +1 -1
- package/dist/conformance/.generated/can-i-use.d.ts +1 -1
- package/dist/conformance/.generated/can-i-use.d.ts.map +1 -1
- package/dist/conformance/.generated/can-i-use.js +1 -1
- package/dist/conformance/.generated/can-i-use.js.map +1 -1
- package/dist/conformance/.generated/conformance-docs.d.ts.map +1 -1
- package/dist/conformance/.generated/conformance-docs.js +1 -1
- package/dist/conformance/.generated/conformance-docs.js.map +1 -1
- package/dist/functions-rtdb/child.d.ts +37 -0
- package/dist/functions-rtdb/child.d.ts.map +1 -1
- package/dist/functions-rtdb/child.js +90 -21
- package/dist/functions-rtdb/child.js.map +1 -1
- package/dist/functions-rtdb/development-runtime.d.ts +3 -0
- package/dist/functions-rtdb/development-runtime.d.ts.map +1 -1
- package/dist/functions-rtdb/development-runtime.js +1 -0
- package/dist/functions-rtdb/development-runtime.js.map +1 -1
- package/dist/google-endpoints.d.ts +67 -0
- package/dist/google-endpoints.d.ts.map +1 -0
- package/dist/google-endpoints.js +119 -0
- package/dist/google-endpoints.js.map +1 -0
- package/dist/next/runtime-env.d.ts.map +1 -1
- package/dist/next/runtime-env.js +5 -0
- package/dist/next/runtime-env.js.map +1 -1
- package/dist/next/with-pyric.d.ts +1 -1
- package/dist/next/with-pyric.js +1 -1
- package/dist/register/beacon.d.ts +69 -0
- package/dist/register/beacon.d.ts.map +1 -0
- package/dist/register/beacon.js +199 -0
- package/dist/register/beacon.js.map +1 -0
- package/dist/register/index.d.ts.map +1 -1
- package/dist/register/index.js +65 -6
- package/dist/register/index.js.map +1 -1
- package/dist/register/net-guard.d.ts +110 -0
- package/dist/register/net-guard.d.ts.map +1 -0
- package/dist/register/net-guard.js +462 -0
- package/dist/register/net-guard.js.map +1 -0
- package/dist/serve/ai-diagnostics-relay.d.ts +63 -0
- package/dist/serve/ai-diagnostics-relay.d.ts.map +1 -0
- package/dist/serve/ai-diagnostics-relay.js +125 -0
- package/dist/serve/ai-diagnostics-relay.js.map +1 -0
- package/dist/serve/ai-proxy.d.ts +92 -0
- package/dist/serve/ai-proxy.d.ts.map +1 -0
- package/dist/serve/ai-proxy.js +269 -0
- package/dist/serve/ai-proxy.js.map +1 -0
- package/dist/serve/ai-status.d.ts +44 -0
- package/dist/serve/ai-status.d.ts.map +1 -0
- package/dist/serve/ai-status.js +77 -0
- package/dist/serve/ai-status.js.map +1 -0
- package/dist/serve/ai-terminal-blocks.d.ts +97 -0
- package/dist/serve/ai-terminal-blocks.d.ts.map +1 -0
- package/dist/serve/ai-terminal-blocks.js +128 -0
- package/dist/serve/ai-terminal-blocks.js.map +1 -0
- package/dist/serve/ai-terminal-text.d.ts +36 -0
- package/dist/serve/ai-terminal-text.d.ts.map +1 -0
- package/dist/serve/ai-terminal-text.js +48 -0
- package/dist/serve/ai-terminal-text.js.map +1 -0
- package/dist/serve/beacon-route.d.ts +53 -0
- package/dist/serve/beacon-route.d.ts.map +1 -0
- package/dist/serve/beacon-route.js +101 -0
- package/dist/serve/beacon-route.js.map +1 -0
- package/dist/serve/entries/active-auth-registry.d.ts +16 -0
- package/dist/serve/entries/active-auth-registry.d.ts.map +1 -0
- package/dist/serve/entries/active-auth-registry.js +48 -0
- package/dist/serve/entries/active-auth-registry.js.map +1 -0
- package/dist/serve/entries/active-auth.d.ts +18 -0
- package/dist/serve/entries/active-auth.d.ts.map +1 -0
- package/dist/serve/entries/active-auth.js +84 -0
- package/dist/serve/entries/active-auth.js.map +1 -0
- package/dist/serve/entries/auth-helper-core.d.ts +1 -0
- package/dist/serve/entries/auth-helper-core.d.ts.map +1 -1
- package/dist/serve/entries/auth-helper-core.js +4 -0
- package/dist/serve/entries/auth-helper-core.js.map +1 -1
- package/dist/serve/entries/auth-helper-dom.d.ts.map +1 -1
- package/dist/serve/entries/auth-helper-dom.js +28 -2
- package/dist/serve/entries/auth-helper-dom.js.map +1 -1
- package/dist/serve/entries/auth.d.ts.map +1 -1
- package/dist/serve/entries/auth.js +8 -0
- package/dist/serve/entries/auth.js.map +1 -1
- package/dist/serve/entries/bridge-url.d.ts +1 -1
- package/dist/serve/entries/bridge-url.js +1 -1
- package/dist/serve/entries/init.d.ts.map +1 -1
- package/dist/serve/entries/init.js +70 -4
- package/dist/serve/entries/init.js.map +1 -1
- package/dist/serve/entries/runtime.d.ts.map +1 -1
- package/dist/serve/entries/runtime.js +9 -0
- package/dist/serve/entries/runtime.js.map +1 -1
- package/dist/serve/namespace.d.ts +14 -5
- package/dist/serve/namespace.d.ts.map +1 -1
- package/dist/serve/namespace.js +57 -124
- package/dist/serve/namespace.js.map +1 -1
- package/dist/serve/runtime/chip-config.d.ts.map +1 -1
- package/dist/serve/runtime/chip-config.js +16 -2
- package/dist/serve/runtime/chip-config.js.map +1 -1
- package/dist/serve/runtime/chip-dialog.d.ts +18 -0
- package/dist/serve/runtime/chip-dialog.d.ts.map +1 -0
- package/dist/serve/runtime/chip-dialog.js +315 -0
- package/dist/serve/runtime/chip-dialog.js.map +1 -0
- package/dist/serve/runtime/chip-install.d.ts +2 -0
- package/dist/serve/runtime/chip-install.d.ts.map +1 -1
- package/dist/serve/runtime/chip-install.js +9 -4
- package/dist/serve/runtime/chip-install.js.map +1 -1
- package/dist/serve/runtime/chip-user-search.d.ts +16 -0
- package/dist/serve/runtime/chip-user-search.d.ts.map +1 -0
- package/dist/serve/runtime/chip-user-search.js +354 -0
- package/dist/serve/runtime/chip-user-search.js.map +1 -0
- package/dist/serve/runtime/chip.d.ts +10 -0
- package/dist/serve/runtime/chip.d.ts.map +1 -1
- package/dist/serve/runtime/chip.js +118 -15
- package/dist/serve/runtime/chip.js.map +1 -1
- package/dist/serve/runtime/identity.d.ts +17 -0
- package/dist/serve/runtime/identity.d.ts.map +1 -0
- package/dist/serve/runtime/identity.js +10 -0
- package/dist/serve/runtime/identity.js.map +1 -0
- package/dist/serve/sandbox-session.d.ts +7 -0
- package/dist/serve/sandbox-session.d.ts.map +1 -1
- package/dist/serve/sandbox-session.js +2 -0
- package/dist/serve/sandbox-session.js.map +1 -1
- package/dist/serve/site-ui/_astro/{RulesCodeEditor.XtDmHOlN.js → RulesCodeEditor.DsTAsKIa.js} +1 -1
- package/dist/serve/site-ui/_astro/app.BOr2kwae.js +115 -0
- package/dist/serve/site-ui/_astro/app.DhAcImFD.js +1 -0
- package/dist/serve/site-ui/_astro/{chess-showcase.B72XYeoh.js → chess-showcase.Bn_pP6UJ.js} +2 -2
- package/dist/serve/site-ui/_astro/{example-runtime.C25_lx6Z.js → example-runtime.CXopTGv7.js} +1 -1
- package/dist/serve/site-ui/_astro/sandbox-controls.rOuZTOUG.js +510 -0
- package/dist/serve/site-ui/_astro/{seed.Co0yUJY5.js → seed.03a08f9t.js} +2 -2
- package/dist/serve/site-ui/_astro/writes.BsPBG3dp.js +653 -0
- package/dist/serve/site-ui/auth/index.html +1 -1
- package/dist/serve/site-ui/docs/_rhythm/index.html +1 -1
- package/dist/serve/site-ui/docs/agent/set-up-your-agent/index.html +1 -1
- package/dist/serve/site-ui/docs/agent/watch-and-review/index.html +1 -1
- package/dist/serve/site-ui/docs/agent/work-with-an-agent/index.html +1 -1
- package/dist/serve/site-ui/docs/ai-compat/index.html +1 -1
- package/dist/serve/site-ui/docs/api-reference/index.html +8 -1
- package/dist/serve/site-ui/docs/api-reference.md +7 -0
- package/dist/serve/site-ui/docs/app-compat/index.html +1 -1
- package/dist/serve/site-ui/docs/auth-compat/index.html +3 -3
- package/dist/serve/site-ui/docs/auth-compat.md +2 -2
- package/dist/serve/site-ui/docs/build/ai-logic/index.html +6 -1
- package/dist/serve/site-ui/docs/build/ai-logic.md +6 -0
- package/dist/serve/site-ui/docs/build/authentication/index.html +1 -1
- package/dist/serve/site-ui/docs/build/cloud-firestore/index.html +1 -1
- package/dist/serve/site-ui/docs/build/cloud-messaging/index.html +1 -1
- package/dist/serve/site-ui/docs/build/cloud-storage/index.html +1 -1
- package/dist/serve/site-ui/docs/build/realtime-database/index.html +1 -1
- package/dist/serve/site-ui/docs/conformance-scores/index.html +6 -2
- package/dist/serve/site-ui/docs/conformance-scores.md +5 -1
- package/dist/serve/site-ui/docs/create-pyric-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/database-compat/index.html +44 -44
- package/dist/serve/site-ui/docs/database-compat.md +43 -43
- package/dist/serve/site-ui/docs/examples/chess/index.html +1 -1
- package/dist/serve/site-ui/docs/examples/index.html +1 -1
- package/dist/serve/site-ui/docs/firestore-compat/index.html +4 -4
- package/dist/serve/site-ui/docs/firestore-compat.md +3 -3
- package/dist/serve/site-ui/docs/firestore-flutter-compat/index.html +319 -0
- package/dist/serve/site-ui/docs/firestore-flutter-compat.md +344 -0
- package/dist/serve/site-ui/docs/functions-rtdb-compat/index.html +1 -1
- package/dist/serve/site-ui/docs/get-started/backend-bundlers/index.html +105 -0
- package/dist/serve/site-ui/docs/get-started/backend-bundlers.md +165 -0
- package/dist/serve/site-ui/docs/get-started/how-the-swap-works/index.html +1 -1
- package/dist/serve/site-ui/docs/get-started/nextjs/index.html +1 -1
- package/dist/serve/site-ui/docs/get-started/start-building/index.html +1 -1
- package/dist/serve/site-ui/docs/get-started/vite/index.html +1 -1
- package/dist/serve/site-ui/docs/index.json +2967 -1482
- package/dist/serve/site-ui/docs/messaging-compat/index.html +1 -1
- package/dist/serve/site-ui/docs/observe/resolve-runtime-status/index.html +1 -1
- package/dist/serve/site-ui/docs/observe/see-whats-happening/index.html +1 -1
- package/dist/serve/site-ui/docs/observe/shape-your-data/index.html +1 -1
- package/dist/serve/site-ui/docs/overview/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-admin-app-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-admin-auth-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-admin-database-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-admin-firestore-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-admin-messaging-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-admin-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-admin-storage-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-ai-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-ai-scripting-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-analytics-reference-api/index.html +124 -0
- package/dist/serve/site-ui/docs/pyric-analytics-reference-api.md +287 -0
- package/dist/serve/site-ui/docs/pyric-app-check-reference-api/index.html +87 -0
- package/dist/serve/site-ui/docs/pyric-app-check-reference-api.md +199 -0
- package/dist/serve/site-ui/docs/pyric-app-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-auth-reference-api/index.html +6 -2
- package/dist/serve/site-ui/docs/pyric-auth-reference-api.md +2 -1
- package/dist/serve/site-ui/docs/pyric-cli-assurance-browser-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-cli-assurance-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-cli-bridge-client-reference-api/index.html +2 -2
- package/dist/serve/site-ui/docs/pyric-cli-bridge-client-reference-api.md +1 -1
- package/dist/serve/site-ui/docs/pyric-cli-bridge-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-cli-bundler-reference-api/index.html +56 -0
- package/dist/serve/site-ui/docs/pyric-cli-bundler-reference-api.md +72 -0
- package/dist/serve/site-ui/docs/pyric-cli-conformance-browser-reference-api/index.html +2 -1
- package/dist/serve/site-ui/docs/pyric-cli-conformance-browser-reference-api.md +1 -0
- package/dist/serve/site-ui/docs/pyric-cli-conformance-docs-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-cli-conformance-reference-api/index.html +2 -1
- package/dist/serve/site-ui/docs/pyric-cli-conformance-reference-api.md +1 -0
- package/dist/serve/site-ui/docs/pyric-cli-credentials-node-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-cli-discover-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-cli-next-reference-api/index.html +2 -2
- package/dist/serve/site-ui/docs/pyric-cli-next-reference-api.md +1 -1
- package/dist/serve/site-ui/docs/pyric-cli-register-app-bridge-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-cli-register-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-cli-remote-reference-api/index.html +34 -9
- package/dist/serve/site-ui/docs/pyric-cli-remote-reference-api.md +16 -8
- package/dist/serve/site-ui/docs/pyric-cli-serve-worker-reference-api/index.html +133 -93
- package/dist/serve/site-ui/docs/pyric-cli-serve-worker-reference-api.md +61 -1
- package/dist/serve/site-ui/docs/pyric-cli-verify-reference-api/index.html +2 -2
- package/dist/serve/site-ui/docs/pyric-cli-verify-reference-api.md +1 -1
- package/dist/serve/site-ui/docs/pyric-cli-vite-reference-api/index.html +2 -2
- package/dist/serve/site-ui/docs/pyric-cli-vite-reference-api.md +2 -2
- package/dist/serve/site-ui/docs/pyric-database-reference-api/index.html +2 -2
- package/dist/serve/site-ui/docs/pyric-database-reference-api.md +1 -1
- package/dist/serve/site-ui/docs/pyric-firestore-lite-reference-api/index.html +559 -0
- package/dist/serve/site-ui/docs/pyric-firestore-lite-reference-api.md +1240 -0
- package/dist/serve/site-ui/docs/pyric-firestore-reference-api/index.html +40 -11
- package/dist/serve/site-ui/docs/pyric-firestore-reference-api.md +18 -8
- package/dist/serve/site-ui/docs/pyric-functions-reference-api/index.html +67 -0
- package/dist/serve/site-ui/docs/pyric-functions-reference-api.md +149 -0
- package/dist/serve/site-ui/docs/pyric-messaging-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-messaging-sw-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-performance-reference-api/index.html +35 -0
- package/dist/serve/site-ui/docs/pyric-performance-reference-api.md +69 -0
- package/dist/serve/site-ui/docs/pyric-remote-config-reference-api/index.html +132 -0
- package/dist/serve/site-ui/docs/pyric-remote-config-reference-api.md +307 -0
- package/dist/serve/site-ui/docs/pyric-rules-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-sandbox-database-reference-api/index.html +52 -17
- package/dist/serve/site-ui/docs/pyric-sandbox-database-reference-api.md +48 -9
- package/dist/serve/site-ui/docs/pyric-sandbox-firestore-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-sandbox-reference-api/index.html +239 -49
- package/dist/serve/site-ui/docs/pyric-sandbox-reference-api.md +148 -31
- package/dist/serve/site-ui/docs/pyric-storage-reference-api/index.html +22 -4
- package/dist/serve/site-ui/docs/pyric-storage-reference-api.md +24 -2
- package/dist/serve/site-ui/docs/pyric-ui-agents-reference-api/index.html +26 -96
- package/dist/serve/site-ui/docs/pyric-ui-agents-reference-api.md +20 -51
- package/dist/serve/site-ui/docs/pyric-ui-auth-hooks-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-ui-auth-reference-api/index.html +2 -2
- package/dist/serve/site-ui/docs/pyric-ui-auth-reference-api.md +1 -1
- package/dist/serve/site-ui/docs/pyric-ui-events-hooks-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-ui-events-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-ui-firestore-hooks-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-ui-firestore-reference-api/index.html +2 -2
- package/dist/serve/site-ui/docs/pyric-ui-firestore-reference-api.md +1 -1
- package/dist/serve/site-ui/docs/pyric-ui-primitives-reference-api/index.html +124 -26
- package/dist/serve/site-ui/docs/pyric-ui-primitives-reference-api.md +58 -5
- package/dist/serve/site-ui/docs/pyric-ui-rtdb-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-ui-rules-hooks-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-ui-rules-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-ui-storage-hooks-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-ui-storage-reference-api/index.html +4 -5
- package/dist/serve/site-ui/docs/pyric-ui-storage-reference-api.md +3 -4
- package/dist/serve/site-ui/docs/pyric-ui-traffic-hooks-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-ui-traffic-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/reference/cli/index.html +6 -3
- package/dist/serve/site-ui/docs/reference/cli.md +8 -2
- package/dist/serve/site-ui/docs/rules-compat/index.html +10 -2
- package/dist/serve/site-ui/docs/rules-compat.md +9 -1
- package/dist/serve/site-ui/docs/secure/audit-your-rules/index.html +1 -1
- package/dist/serve/site-ui/docs/secure/firestore-rules-limits/index.html +1 -1
- package/dist/serve/site-ui/docs/secure/read-a-denial/index.html +1 -1
- package/dist/serve/site-ui/docs/secure/rtdb-rules-in-typescript/index.html +1 -1
- package/dist/serve/site-ui/docs/secure/rules-standard-library/index.html +1 -1
- package/dist/serve/site-ui/docs/secure/secure-it-with-rules/index.html +1 -1
- package/dist/serve/site-ui/docs/secure/simulate-and-lint/index.html +1 -1
- package/dist/serve/site-ui/docs/secure/write-a-rules-test-suite/index.html +1 -1
- package/dist/serve/site-ui/docs/ship/ship-to-production/index.html +1 -1
- package/dist/serve/site-ui/docs/ship/test-in-node/index.html +1 -1
- package/dist/serve/site-ui/docs/storage-compat/index.html +13 -13
- package/dist/serve/site-ui/docs/storage-compat.md +12 -12
- package/dist/serve/site-ui/docs/trust/how-we-know-it-matches-firebase/index.html +1 -1
- package/dist/serve/site-ui/docs/trust/rules-standard-library/index.html +1 -1
- package/dist/serve/site-ui/docs/trust/versioning-and-compatibility/index.html +1 -1
- package/dist/serve/site-ui/docs/tutorial/index.html +1 -1
- package/dist/serve/site-ui/examples/chess/index.html +1 -1
- package/dist/serve/site-ui/firestore/index.html +1 -1
- package/dist/serve/site-ui/llms.txt +9 -0
- package/dist/serve/site-ui/rtdb/index.html +1 -1
- package/dist/serve/site-ui/settings/index.html +1 -1
- package/dist/serve/site-ui/storage/index.html +1 -1
- package/dist/serve/site-ui/studio/index.html +1 -1
- package/dist/serve/site-ui/traffic/index.html +1 -1
- package/dist/serve/studio/disk-workspace.d.ts.map +1 -1
- package/dist/serve/studio/disk-workspace.js +64 -2
- package/dist/serve/studio/disk-workspace.js.map +1 -1
- package/dist/serve/vite-plugin.d.ts +7 -7
- package/dist/serve/vite-plugin.js +1 -1
- package/dist/serve/vite-plugin.js.map +1 -1
- package/dist/serve/vite-sandbox-generation.d.ts.map +1 -1
- package/dist/serve/vite-sandbox-generation.js +12 -0
- package/dist/serve/vite-sandbox-generation.js.map +1 -1
- package/dist/serve/worker/client/auth.js +1 -2
- package/dist/serve/worker/client/auth.js.map +1 -1
- package/dist/serve/worker/client/core.d.ts +21 -1
- package/dist/serve/worker/client/core.d.ts.map +1 -1
- package/dist/serve/worker/client/core.js +79 -3
- package/dist/serve/worker/client/core.js.map +1 -1
- package/dist/serve/worker/client.d.ts +1 -1
- package/dist/serve/worker/client.d.ts.map +1 -1
- package/dist/serve/worker/client.js +1 -1
- package/dist/serve/worker/client.js.map +1 -1
- package/dist/serve/worker/context-resolver.d.ts +30 -0
- package/dist/serve/worker/context-resolver.d.ts.map +1 -0
- package/dist/serve/worker/context-resolver.js +44 -0
- package/dist/serve/worker/context-resolver.js.map +1 -0
- package/dist/serve/worker/entry.js +23 -19
- package/dist/serve/worker/entry.js.map +1 -1
- package/dist/serve/worker/host/core.d.ts +1 -0
- package/dist/serve/worker/host/core.d.ts.map +1 -1
- package/dist/serve/worker/host/core.js +12 -6
- package/dist/serve/worker/host/core.js.map +1 -1
- package/dist/serve/worker/host/storage.js +2 -2
- package/dist/serve/worker/host-auth.js +1 -2
- package/dist/serve/worker/host-auth.js.map +1 -1
- package/dist/serve/worker/index.d.ts +1 -1
- package/dist/serve/worker/index.d.ts.map +1 -1
- package/dist/serve/worker/index.js +2 -2
- package/dist/serve/worker/index.js.map +1 -1
- package/dist/serve/worker/port-lifecycle.d.ts +18 -0
- package/dist/serve/worker/port-lifecycle.d.ts.map +1 -0
- package/dist/serve/worker/port-lifecycle.js +28 -0
- package/dist/serve/worker/port-lifecycle.js.map +1 -0
- package/dist/serve/worker/serve-init.d.ts.map +1 -1
- package/dist/serve/worker/serve-init.js +8 -2
- package/dist/serve/worker/serve-init.js.map +1 -1
- package/dist/verify/fixture.d.ts +1 -1
- package/package.json +16 -5
- package/src/assurance/.generated/conformance-verdicts.ts +68 -1
- package/src/bridge/client/dispatch.ts +52 -56
- package/src/bridge/client/tool-family-factories.ts +34 -0
- package/src/bridge/server/mcp-contract.ts +15 -59
- package/src/bridge/server/peer.ts +24 -1
- package/src/bridge/server/tool-family-factories.ts +40 -0
- package/src/bridge/server/tool-metadata.ts +29 -61
- package/src/bridge/tool-families.generated.ts +17 -0
- package/src/bridge/tool-families.ts +87 -0
- package/src/bridge/tool-family-records/conformance.ts +6 -0
- package/src/bridge/tool-family-records/firestore-data.ts +15 -0
- package/src/bridge/tool-family-records/firestore-inspect.ts +6 -0
- package/src/bridge/tool-family-records/firestore-rules.ts +15 -0
- package/src/bridge/tool-family-records/firestore-simulator.ts +16 -0
- package/src/bridge/tool-family-records/rtdb-inspection.ts +6 -0
- package/src/bundler/externals.ts +55 -0
- package/src/bundler/index.ts +21 -0
- package/src/cli/cli.test.ts +0 -44
- package/src/cli/inlined-sdk-scanner.ts +77 -0
- package/src/cli/sandbox-interlock.ts +167 -0
- package/src/cli/sandbox-runner.ts +37 -26
- package/src/cli/serve.ts +68 -69
- package/src/cli/unsupported-runtime.ts +68 -0
- package/src/conformance/.generated/can-i-use-browser.ts +2 -2
- package/src/conformance/.generated/can-i-use.ts +2 -2
- package/src/conformance/.generated/conformance-docs.ts +1 -1
- package/src/functions-rtdb/child.ts +115 -21
- package/src/functions-rtdb/development-runtime.ts +4 -0
- package/src/google-endpoints.ts +155 -0
- package/src/next/runtime-env.ts +5 -0
- package/src/next/with-pyric.ts +1 -1
- package/src/register/beacon.ts +232 -0
- package/src/register/index.ts +68 -6
- package/src/register/net-guard.ts +567 -0
- package/src/serve/ai-diagnostics-relay.ts +243 -0
- package/src/serve/ai-proxy.ts +327 -0
- package/src/serve/ai-status.ts +109 -0
- package/src/serve/ai-terminal-blocks.ts +210 -0
- package/src/serve/ai-terminal-text.ts +52 -0
- package/src/serve/beacon-route.ts +141 -0
- package/src/serve/entries/active-auth-registry.ts +56 -0
- package/src/serve/entries/active-auth.ts +100 -0
- package/src/serve/entries/auth-helper-core.ts +5 -0
- package/src/serve/entries/auth-helper-dom.ts +26 -2
- package/src/serve/entries/auth.ts +8 -0
- package/src/serve/entries/bridge-url.ts +1 -1
- package/src/serve/entries/init.ts +78 -3
- package/src/serve/entries/runtime.ts +10 -0
- package/src/serve/namespace.ts +73 -140
- package/src/serve/runtime/chip-config.ts +16 -2
- package/src/serve/runtime/chip-dialog.ts +366 -0
- package/src/serve/runtime/chip-install.ts +10 -4
- package/src/serve/runtime/chip-user-search.ts +391 -0
- package/src/serve/runtime/chip.ts +140 -15
- package/src/serve/runtime/identity.ts +26 -0
- package/src/serve/sandbox-session.ts +9 -0
- package/src/serve/studio/disk-workspace.ts +76 -2
- package/src/serve/vite-plugin.ts +8 -8
- package/src/serve/vite-sandbox-generation.ts +15 -0
- package/src/serve/worker/client/auth.ts +1 -1
- package/src/serve/worker/client/core.ts +80 -3
- package/src/serve/worker/client.ts +1 -1
- package/src/serve/worker/context-resolver.ts +60 -0
- package/src/serve/worker/entry.ts +22 -18
- package/src/serve/worker/host/core.ts +9 -7
- package/src/serve/worker/host/storage.ts +2 -2
- package/src/serve/worker/host-auth.ts +1 -1
- package/src/serve/worker/index.ts +4 -1
- package/src/serve/worker/port-lifecycle.ts +45 -0
- package/src/serve/worker/serve-init.ts +9 -2
- package/src/verify/fixture.ts +1 -1
- package/dist/serve/site-ui/_astro/app.B52xr-DK.js +0 -1
- package/dist/serve/site-ui/_astro/app.DWBraPUw.js +0 -12
- package/dist/serve/site-ui/_astro/sandbox-controls.DEpnKg-O.js +0 -1169
- package/dist/serve/site-ui/_astro/writes.rpjrFzmu.js +0 -102
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Browser-side tool dispatcher.
|
|
3
|
-
* bridge advertises over MCP (`getSandboxToolMetadata`), so
|
|
4
|
-
* bridge LISTS and the set the page EXECUTES are identical
|
|
5
|
-
*
|
|
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
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
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
|
import type { LocalSandbox } from 'pyric/sandbox';
|
|
18
20
|
export interface DispatchResult {
|
|
@@ -22,18 +24,22 @@ export interface DispatchResult {
|
|
|
22
24
|
}
|
|
23
25
|
/**
|
|
24
26
|
* Build a dispatcher for the supplied `Sandbox`. The returned function
|
|
25
|
-
* looks up tools by name across every
|
|
27
|
+
* looks up tools by name across every family and invokes the
|
|
26
28
|
* canonical handler. Throws `UnknownToolError` on unknown names.
|
|
29
|
+
*
|
|
30
|
+
* Fails closed before any dispatch if the bound handlers do not yield exactly
|
|
31
|
+
* the names the family records pin, so a factory that drifts from its record
|
|
32
|
+
* surfaces when the sandbox connects rather than at the first call.
|
|
27
33
|
*/
|
|
28
34
|
export declare function buildSandboxDispatcher(sandbox: LocalSandbox): (name: string, args: Record<string, unknown>) => Promise<DispatchResult>;
|
|
29
35
|
export declare function dispatchSandboxTool(sandbox: LocalSandbox, name: string, args: Record<string, unknown>): Promise<DispatchResult>;
|
|
30
36
|
/**
|
|
31
|
-
* Tool names this dispatcher recognises,
|
|
32
|
-
*
|
|
33
|
-
* bridge advertises. `connectBridge` sends this as the `hello.tools`
|
|
34
|
-
*
|
|
37
|
+
* Tool names this dispatcher recognises, read from the forwarded family
|
|
38
|
+
* records in family order, so it equals what the page executes AND what the
|
|
39
|
+
* bridge advertises. `connectBridge` sends this as the `hello.tools` payload
|
|
40
|
+
* so the bridge advertises exactly the executable set.
|
|
35
41
|
*/
|
|
36
|
-
export declare const SANDBOX_TOOL_NAMES: string[];
|
|
42
|
+
export declare const SANDBOX_TOOL_NAMES: readonly string[];
|
|
37
43
|
export declare class UnknownToolError extends Error {
|
|
38
44
|
readonly tool: string;
|
|
39
45
|
constructor(tool: string);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../../src/bridge/client/dispatch.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../../src/bridge/client/dispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAIlD,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AA0BD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,YAAY,GACpB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,cAAc,CAAC,CAuB1E;AAcD,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,cAAc,CAAC,CAOzB;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAE/C,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,KAAK;aACb,IAAI,EAAE,MAAM;gBAAZ,IAAI,EAAE,MAAM;CAIzC"}
|
|
@@ -1,29 +1,28 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Browser-side tool dispatcher.
|
|
3
|
-
* bridge advertises over MCP (`getSandboxToolMetadata`), so
|
|
4
|
-
* bridge LISTS and the set the page EXECUTES are identical
|
|
5
|
-
*
|
|
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
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
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
|
-
import {
|
|
18
|
-
import { createFirestoreDataTools, createFirestoreInspectTools, getFirestore, getAdminFirestore, } from 'pyric/firestore';
|
|
19
|
+
import { getFirestore, getAdminFirestore } from 'pyric/firestore';
|
|
19
20
|
import { getInternalEnv } from 'pyric/sandbox/internal';
|
|
20
|
-
import {
|
|
21
|
+
import { assertExactToolNames, toolFamilies } from '../tool-families.js';
|
|
22
|
+
import { SANDBOX_HANDLER_FACTORIES } from './tool-family-factories.js';
|
|
21
23
|
/**
|
|
22
|
-
* The full handler set for a sandbox:
|
|
23
|
-
*
|
|
24
|
-
* to a per-call `resolveDb`). This is the single source of truth shared
|
|
25
|
-
* by `buildSandboxDispatcher` and `SANDBOX_TOOL_NAMES`, and it MUST stay
|
|
26
|
-
* aligned with `getSandboxToolMetadata` (asserted by tool-parity.test.ts).
|
|
24
|
+
* The full handler set for a sandbox: every forwarded family bound to one
|
|
25
|
+
* `SandboxBinding` built here.
|
|
27
26
|
*
|
|
28
27
|
* Auth: `resolveDb('admin')` / `resolveDb(undefined)` is an admin-bypass handle
|
|
29
28
|
* (no rules); `resolveDb({ uid, claims })` is a rules-enforcing client acting as
|
|
@@ -32,24 +31,28 @@ import { createRtdbInspectionTools } from '../../rtdb/inspection.js';
|
|
|
32
31
|
* is intended; a dispatcher wired to a real backend must reject `'admin'`.
|
|
33
32
|
*/
|
|
34
33
|
function buildSandboxHandlers(sandbox) {
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
:
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
...createRtdbInspectionTools({ resolveSandbox: () => sandbox }),
|
|
44
|
-
];
|
|
34
|
+
const binding = {
|
|
35
|
+
sandbox,
|
|
36
|
+
env: getInternalEnv(sandbox),
|
|
37
|
+
resolveDb: (actor) => actor && actor !== 'admin'
|
|
38
|
+
? getFirestore(sandbox.withAuth({ uid: actor.uid, token: actor.claims }))
|
|
39
|
+
: getAdminFirestore(sandbox),
|
|
40
|
+
};
|
|
41
|
+
return toolFamilies('forwarded').flatMap((family) => SANDBOX_HANDLER_FACTORIES[family.key](binding));
|
|
45
42
|
}
|
|
46
43
|
/**
|
|
47
44
|
* Build a dispatcher for the supplied `Sandbox`. The returned function
|
|
48
|
-
* looks up tools by name across every
|
|
45
|
+
* looks up tools by name across every family and invokes the
|
|
49
46
|
* canonical handler. Throws `UnknownToolError` on unknown names.
|
|
47
|
+
*
|
|
48
|
+
* Fails closed before any dispatch if the bound handlers do not yield exactly
|
|
49
|
+
* the names the family records pin, so a factory that drifts from its record
|
|
50
|
+
* surfaces when the sandbox connects rather than at the first call.
|
|
50
51
|
*/
|
|
51
52
|
export function buildSandboxDispatcher(sandbox) {
|
|
52
|
-
const
|
|
53
|
+
const handlers = buildSandboxHandlers(sandbox);
|
|
54
|
+
assertExactToolNames('sandbox dispatcher tools', handlers.map((h) => h.name), SANDBOX_TOOL_NAMES);
|
|
55
|
+
const byName = new Map(handlers.map((h) => [h.name, h]));
|
|
53
56
|
return async (name, args) => {
|
|
54
57
|
const handler = byName.get(name);
|
|
55
58
|
if (!handler)
|
|
@@ -84,22 +87,12 @@ export async function dispatchSandboxTool(sandbox, name, args) {
|
|
|
84
87
|
return dispatcher(name, args);
|
|
85
88
|
}
|
|
86
89
|
/**
|
|
87
|
-
* Tool names this dispatcher recognises,
|
|
88
|
-
*
|
|
89
|
-
* bridge advertises. `connectBridge` sends this as the `hello.tools`
|
|
90
|
-
*
|
|
90
|
+
* Tool names this dispatcher recognises, read from the forwarded family
|
|
91
|
+
* records in family order, so it equals what the page executes AND what the
|
|
92
|
+
* bridge advertises. `connectBridge` sends this as the `hello.tools` payload
|
|
93
|
+
* so the bridge advertises exactly the executable set.
|
|
91
94
|
*/
|
|
92
|
-
export const SANDBOX_TOOL_NAMES = (() =>
|
|
93
|
-
const stub = async () => {
|
|
94
|
-
throw new Error('SANDBOX_TOOL_NAMES: stub resolver should never be invoked');
|
|
95
|
-
};
|
|
96
|
-
return [
|
|
97
|
-
...createFirestoreSimulatorTools({ resolveSandbox: stub }),
|
|
98
|
-
...createFirestoreDataTools({ resolveDb: stub }),
|
|
99
|
-
...createFirestoreInspectTools({ resolveSandbox: stub }),
|
|
100
|
-
...createRtdbInspectionTools({ resolveSandbox: stub }),
|
|
101
|
-
].map((h) => h.name);
|
|
102
|
-
})();
|
|
95
|
+
export const SANDBOX_TOOL_NAMES = toolFamilies('forwarded').flatMap((family) => family.tools);
|
|
103
96
|
export class UnknownToolError extends Error {
|
|
104
97
|
tool;
|
|
105
98
|
constructor(tool) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../../../src/bridge/client/dispatch.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../../../src/bridge/client/dispatch.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
-
*
|
|
6
|
-
*
|
|
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 [
|
|
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 [
|
|
11
|
-
export declare const DEFAULT_MCP_TOOL_NAMES: readonly [
|
|
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;
|
|
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
|
-
*
|
|
5
|
-
*
|
|
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
|
-
|
|
63
|
-
|
|
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,
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
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
|
-
*
|
|
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
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* the
|
|
12
|
-
*
|
|
13
|
-
*
|
|
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
|
|
23
|
-
*
|
|
24
|
-
*
|
|
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
|
-
*
|
|
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
|
|
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"}
|