@pyric/cli 0.1.0-alpha.9
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/LICENSE +216 -0
- package/README.md +156 -0
- package/README.md.orig +138 -0
- package/dist/assurance/attachment.d.ts +24 -0
- package/dist/assurance/attachment.d.ts.map +1 -0
- package/dist/assurance/attachment.js +138 -0
- package/dist/assurance/attachment.js.map +1 -0
- package/dist/assurance/browser.d.ts +7 -0
- package/dist/assurance/browser.d.ts.map +1 -0
- package/dist/assurance/browser.js +68 -0
- package/dist/assurance/browser.js.map +1 -0
- package/dist/assurance/campaign.d.ts +41 -0
- package/dist/assurance/campaign.d.ts.map +1 -0
- package/dist/assurance/campaign.js +364 -0
- package/dist/assurance/campaign.js.map +1 -0
- package/dist/assurance/capabilities.d.ts +7 -0
- package/dist/assurance/capabilities.d.ts.map +1 -0
- package/dist/assurance/capabilities.js +295 -0
- package/dist/assurance/capabilities.js.map +1 -0
- package/dist/assurance/cases.d.ts +14 -0
- package/dist/assurance/cases.d.ts.map +1 -0
- package/dist/assurance/cases.js +27 -0
- package/dist/assurance/cases.js.map +1 -0
- package/dist/assurance/generated-capabilities.d.ts +52 -0
- package/dist/assurance/generated-capabilities.d.ts.map +1 -0
- package/dist/assurance/generated-capabilities.js +329 -0
- package/dist/assurance/generated-capabilities.js.map +1 -0
- package/dist/assurance/index.d.ts +11 -0
- package/dist/assurance/index.d.ts.map +1 -0
- package/dist/assurance/index.js +9 -0
- package/dist/assurance/index.js.map +1 -0
- package/dist/assurance/runner.d.ts +3 -0
- package/dist/assurance/runner.d.ts.map +1 -0
- package/dist/assurance/runner.js +633 -0
- package/dist/assurance/runner.js.map +1 -0
- package/dist/assurance/tool-names.d.ts +4 -0
- package/dist/assurance/tool-names.d.ts.map +1 -0
- package/dist/assurance/tool-names.js +14 -0
- package/dist/assurance/tool-names.js.map +1 -0
- package/dist/assurance/tools.d.ts +19 -0
- package/dist/assurance/tools.d.ts.map +1 -0
- package/dist/assurance/tools.js +740 -0
- package/dist/assurance/tools.js.map +1 -0
- package/dist/assurance/types.d.ts +348 -0
- package/dist/assurance/types.d.ts.map +1 -0
- package/dist/assurance/types.js +7 -0
- package/dist/assurance/types.js.map +1 -0
- package/dist/assurance/validation.d.ts +8 -0
- package/dist/assurance/validation.d.ts.map +1 -0
- package/dist/assurance/validation.js +269 -0
- package/dist/assurance/validation.js.map +1 -0
- package/dist/bridge/client/bridge.d.ts +133 -0
- package/dist/bridge/client/bridge.d.ts.map +1 -0
- package/dist/bridge/client/bridge.js +429 -0
- package/dist/bridge/client/bridge.js.map +1 -0
- package/dist/bridge/client/dispatch.d.ts +41 -0
- package/dist/bridge/client/dispatch.d.ts.map +1 -0
- package/dist/bridge/client/dispatch.js +111 -0
- package/dist/bridge/client/dispatch.js.map +1 -0
- package/dist/bridge/client.d.ts +24 -0
- package/dist/bridge/client.d.ts.map +1 -0
- package/dist/bridge/client.js +26 -0
- package/dist/bridge/client.js.map +1 -0
- package/dist/bridge/protocol.d.ts +227 -0
- package/dist/bridge/protocol.d.ts.map +1 -0
- package/dist/bridge/protocol.js +131 -0
- package/dist/bridge/protocol.js.map +1 -0
- package/dist/bridge/server/audit.d.ts +19 -0
- package/dist/bridge/server/audit.d.ts.map +1 -0
- package/dist/bridge/server/audit.js +46 -0
- package/dist/bridge/server/audit.js.map +1 -0
- package/dist/bridge/server/bridge.d.ts +126 -0
- package/dist/bridge/server/bridge.d.ts.map +1 -0
- package/dist/bridge/server/bridge.js +383 -0
- package/dist/bridge/server/bridge.js.map +1 -0
- package/dist/bridge/server/headless.d.ts +36 -0
- package/dist/bridge/server/headless.d.ts.map +1 -0
- package/dist/bridge/server/headless.js +142 -0
- package/dist/bridge/server/headless.js.map +1 -0
- package/dist/bridge/server/json-schema-to-zod.d.ts +37 -0
- package/dist/bridge/server/json-schema-to-zod.d.ts.map +1 -0
- package/dist/bridge/server/json-schema-to-zod.js +93 -0
- package/dist/bridge/server/json-schema-to-zod.js.map +1 -0
- package/dist/bridge/server/local-bridge.d.ts +33 -0
- package/dist/bridge/server/local-bridge.d.ts.map +1 -0
- package/dist/bridge/server/local-bridge.js +41 -0
- package/dist/bridge/server/local-bridge.js.map +1 -0
- package/dist/bridge/server/logger.d.ts +28 -0
- package/dist/bridge/server/logger.d.ts.map +1 -0
- package/dist/bridge/server/logger.js +42 -0
- package/dist/bridge/server/logger.js.map +1 -0
- package/dist/bridge/server/mcp-contract.d.ts +21 -0
- package/dist/bridge/server/mcp-contract.d.ts.map +1 -0
- package/dist/bridge/server/mcp-contract.js +62 -0
- package/dist/bridge/server/mcp-contract.js.map +1 -0
- package/dist/bridge/server/mcp.d.ts +26 -0
- package/dist/bridge/server/mcp.d.ts.map +1 -0
- package/dist/bridge/server/mcp.js +102 -0
- package/dist/bridge/server/mcp.js.map +1 -0
- package/dist/bridge/server/peer.d.ts +39 -0
- package/dist/bridge/server/peer.d.ts.map +1 -0
- package/dist/bridge/server/peer.js +189 -0
- package/dist/bridge/server/peer.js.map +1 -0
- package/dist/bridge/server/standalone.d.ts +49 -0
- package/dist/bridge/server/standalone.d.ts.map +1 -0
- package/dist/bridge/server/standalone.js +267 -0
- package/dist/bridge/server/standalone.js.map +1 -0
- package/dist/bridge/server/tool-metadata.d.ts +38 -0
- package/dist/bridge/server/tool-metadata.d.ts.map +1 -0
- package/dist/bridge/server/tool-metadata.js +81 -0
- package/dist/bridge/server/tool-metadata.js.map +1 -0
- package/dist/bridge/server.d.ts +21 -0
- package/dist/bridge/server.d.ts.map +1 -0
- package/dist/bridge/server.js +18 -0
- package/dist/bridge/server.js.map +1 -0
- package/dist/cli/database-rules.d.ts +43 -0
- package/dist/cli/database-rules.d.ts.map +1 -0
- package/dist/cli/database-rules.js +261 -0
- package/dist/cli/database-rules.js.map +1 -0
- package/dist/cli/dev-runner.d.ts +112 -0
- package/dist/cli/dev-runner.d.ts.map +1 -0
- package/dist/cli/dev-runner.js +239 -0
- package/dist/cli/dev-runner.js.map +1 -0
- package/dist/cli/firebase-json.d.ts +66 -0
- package/dist/cli/firebase-json.d.ts.map +1 -0
- package/dist/cli/firebase-json.js +60 -0
- package/dist/cli/firebase-json.js.map +1 -0
- package/dist/cli/firestore-indexes.d.ts +21 -0
- package/dist/cli/firestore-indexes.d.ts.map +1 -0
- package/dist/cli/firestore-indexes.js +39 -0
- package/dist/cli/firestore-indexes.js.map +1 -0
- package/dist/cli/index.d.ts +56 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +379 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init.d.ts +50 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +182 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/mcp-proxy.d.ts +10 -0
- package/dist/cli/mcp-proxy.d.ts.map +1 -0
- package/dist/cli/mcp-proxy.js +129 -0
- package/dist/cli/mcp-proxy.js.map +1 -0
- package/dist/cli/parse-args.d.ts +20 -0
- package/dist/cli/parse-args.d.ts.map +1 -0
- package/dist/cli/parse-args.js +69 -0
- package/dist/cli/parse-args.js.map +1 -0
- package/dist/cli/rules.d.ts +55 -0
- package/dist/cli/rules.d.ts.map +1 -0
- package/dist/cli/rules.js +199 -0
- package/dist/cli/rules.js.map +1 -0
- package/dist/cli/scope.d.ts +12 -0
- package/dist/cli/scope.d.ts.map +1 -0
- package/dist/cli/scope.js +44 -0
- package/dist/cli/scope.js.map +1 -0
- package/dist/cli/serve.d.ts +122 -0
- package/dist/cli/serve.d.ts.map +1 -0
- package/dist/cli/serve.js +844 -0
- package/dist/cli/serve.js.map +1 -0
- package/dist/cli/service-commands.d.ts +8 -0
- package/dist/cli/service-commands.d.ts.map +1 -0
- package/dist/cli/service-commands.js +58 -0
- package/dist/cli/service-commands.js.map +1 -0
- package/dist/cli/snapshot.d.ts +22 -0
- package/dist/cli/snapshot.d.ts.map +1 -0
- package/dist/cli/snapshot.js +139 -0
- package/dist/cli/snapshot.js.map +1 -0
- package/dist/cli/storage-rules.d.ts +21 -0
- package/dist/cli/storage-rules.d.ts.map +1 -0
- package/dist/cli/storage-rules.js +121 -0
- package/dist/cli/storage-rules.js.map +1 -0
- package/dist/cli/verify.d.ts +23 -0
- package/dist/cli/verify.d.ts.map +1 -0
- package/dist/cli/verify.js +349 -0
- package/dist/cli/verify.js.map +1 -0
- package/dist/credentials/core/memoize-ttl.d.ts +58 -0
- package/dist/credentials/core/memoize-ttl.d.ts.map +1 -0
- package/dist/credentials/core/memoize-ttl.js +88 -0
- package/dist/credentials/core/memoize-ttl.js.map +1 -0
- package/dist/credentials/core/types.d.ts +11 -0
- package/dist/credentials/core/types.d.ts.map +1 -0
- package/dist/credentials/core/types.js +2 -0
- package/dist/credentials/core/types.js.map +1 -0
- package/dist/credentials/node/from-adc.d.ts +10 -0
- package/dist/credentials/node/from-adc.d.ts.map +1 -0
- package/dist/credentials/node/from-adc.js +76 -0
- package/dist/credentials/node/from-adc.js.map +1 -0
- package/dist/credentials/node/from-service-account.d.ts +24 -0
- package/dist/credentials/node/from-service-account.d.ts.map +1 -0
- package/dist/credentials/node/from-service-account.js +108 -0
- package/dist/credentials/node/from-service-account.js.map +1 -0
- package/dist/credentials/node/index.d.ts +7 -0
- package/dist/credentials/node/index.d.ts.map +1 -0
- package/dist/credentials/node/index.js +7 -0
- package/dist/credentials/node/index.js.map +1 -0
- package/dist/discover/concurrency.d.ts +42 -0
- package/dist/discover/concurrency.d.ts.map +1 -0
- package/dist/discover/concurrency.js +113 -0
- package/dist/discover/concurrency.js.map +1 -0
- package/dist/discover/crawler-adapter.d.ts +48 -0
- package/dist/discover/crawler-adapter.d.ts.map +1 -0
- package/dist/discover/crawler-adapter.js +92 -0
- package/dist/discover/crawler-adapter.js.map +1 -0
- package/dist/discover/crawler.d.ts +294 -0
- package/dist/discover/crawler.d.ts.map +1 -0
- package/dist/discover/crawler.js +764 -0
- package/dist/discover/crawler.js.map +1 -0
- package/dist/discover/credential-free.d.ts +19 -0
- package/dist/discover/credential-free.d.ts.map +1 -0
- package/dist/discover/credential-free.js +18 -0
- package/dist/discover/credential-free.js.map +1 -0
- package/dist/discover/findCollectionGroup.d.ts +44 -0
- package/dist/discover/findCollectionGroup.d.ts.map +1 -0
- package/dist/discover/findCollectionGroup.js +81 -0
- package/dist/discover/findCollectionGroup.js.map +1 -0
- package/dist/discover/firestore-source.d.ts +60 -0
- package/dist/discover/firestore-source.d.ts.map +1 -0
- package/dist/discover/firestore-source.js +11 -0
- package/dist/discover/firestore-source.js.map +1 -0
- package/dist/discover/index.d.ts +3 -0
- package/dist/discover/index.d.ts.map +1 -0
- package/dist/discover/index.js +5 -0
- package/dist/discover/index.js.map +1 -0
- package/dist/discover/merge.d.ts +108 -0
- package/dist/discover/merge.d.ts.map +1 -0
- package/dist/discover/merge.js +394 -0
- package/dist/discover/merge.js.map +1 -0
- package/dist/discover/session.d.ts +116 -0
- package/dist/discover/session.d.ts.map +1 -0
- package/dist/discover/session.js +331 -0
- package/dist/discover/session.js.map +1 -0
- package/dist/discover/tools.d.ts +58 -0
- package/dist/discover/tools.d.ts.map +1 -0
- package/dist/discover/tools.js +115 -0
- package/dist/discover/tools.js.map +1 -0
- package/dist/discover/types.d.ts +190 -0
- package/dist/discover/types.d.ts.map +1 -0
- package/dist/discover/types.js +12 -0
- package/dist/discover/types.js.map +1 -0
- package/dist/discover/wire.d.ts +70 -0
- package/dist/discover/wire.d.ts.map +1 -0
- package/dist/discover/wire.js +309 -0
- package/dist/discover/wire.js.map +1 -0
- package/dist/functions-rtdb/child.d.ts +52 -0
- package/dist/functions-rtdb/child.d.ts.map +1 -0
- package/dist/functions-rtdb/child.js +283 -0
- package/dist/functions-rtdb/child.js.map +1 -0
- package/dist/functions-rtdb/delivery.d.ts +4 -0
- package/dist/functions-rtdb/delivery.d.ts.map +1 -0
- package/dist/functions-rtdb/delivery.js +2 -0
- package/dist/functions-rtdb/delivery.js.map +1 -0
- package/dist/functions-rtdb/discovery.d.ts +41 -0
- package/dist/functions-rtdb/discovery.d.ts.map +1 -0
- package/dist/functions-rtdb/discovery.js +86 -0
- package/dist/functions-rtdb/discovery.js.map +1 -0
- package/dist/functions-rtdb/event.d.ts +20 -0
- package/dist/functions-rtdb/event.d.ts.map +1 -0
- package/dist/functions-rtdb/event.js +45 -0
- package/dist/functions-rtdb/event.js.map +1 -0
- package/dist/functions-rtdb/execution.d.ts +20 -0
- package/dist/functions-rtdb/execution.d.ts.map +1 -0
- package/dist/functions-rtdb/execution.js +70 -0
- package/dist/functions-rtdb/execution.js.map +1 -0
- package/dist/functions-rtdb/in-memory-delivery.d.ts +9 -0
- package/dist/functions-rtdb/in-memory-delivery.d.ts.map +1 -0
- package/dist/functions-rtdb/in-memory-delivery.js +36 -0
- package/dist/functions-rtdb/in-memory-delivery.js.map +1 -0
- package/dist/functions-rtdb/project.d.ts +7 -0
- package/dist/functions-rtdb/project.d.ts.map +1 -0
- package/dist/functions-rtdb/project.js +54 -0
- package/dist/functions-rtdb/project.js.map +1 -0
- package/dist/functions-rtdb/projection.d.ts +14 -0
- package/dist/functions-rtdb/projection.d.ts.map +1 -0
- package/dist/functions-rtdb/projection.js +65 -0
- package/dist/functions-rtdb/projection.js.map +1 -0
- package/dist/functions-rtdb/reference-pattern.d.ts +5 -0
- package/dist/functions-rtdb/reference-pattern.d.ts.map +1 -0
- package/dist/functions-rtdb/reference-pattern.js +14 -0
- package/dist/functions-rtdb/reference-pattern.js.map +1 -0
- package/dist/functions-rtdb/remote-delivery.d.ts +9 -0
- package/dist/functions-rtdb/remote-delivery.d.ts.map +1 -0
- package/dist/functions-rtdb/remote-delivery.js +11 -0
- package/dist/functions-rtdb/remote-delivery.js.map +1 -0
- package/dist/pkg-version.d.ts +2 -0
- package/dist/pkg-version.d.ts.map +1 -0
- package/dist/pkg-version.js +47 -0
- package/dist/pkg-version.js.map +1 -0
- package/dist/register/esm-exports.d.ts +26 -0
- package/dist/register/esm-exports.d.ts.map +1 -0
- package/dist/register/esm-exports.js +61 -0
- package/dist/register/esm-exports.js.map +1 -0
- package/dist/register/hooks.d.ts +13 -0
- package/dist/register/hooks.d.ts.map +1 -0
- package/dist/register/hooks.js +15 -0
- package/dist/register/hooks.js.map +1 -0
- package/dist/register/index.d.ts +5 -0
- package/dist/register/index.d.ts.map +1 -0
- package/dist/register/index.js +124 -0
- package/dist/register/index.js.map +1 -0
- package/dist/register/mapping.d.ts +19 -0
- package/dist/register/mapping.d.ts.map +1 -0
- package/dist/register/mapping.js +35 -0
- package/dist/register/mapping.js.map +1 -0
- package/dist/remote/index.d.ts +232 -0
- package/dist/remote/index.d.ts.map +1 -0
- package/dist/remote/index.js +720 -0
- package/dist/remote/index.js.map +1 -0
- package/dist/rtdb/crawl-snapshot.d.ts +17 -0
- package/dist/rtdb/crawl-snapshot.d.ts.map +1 -0
- package/dist/rtdb/crawl-snapshot.js +72 -0
- package/dist/rtdb/crawl-snapshot.js.map +1 -0
- package/dist/rtdb/inspection.d.ts +8 -0
- package/dist/rtdb/inspection.d.ts.map +1 -0
- package/dist/rtdb/inspection.js +111 -0
- package/dist/rtdb/inspection.js.map +1 -0
- package/dist/rtdb/load-rules-document.d.ts +25 -0
- package/dist/rtdb/load-rules-document.d.ts.map +1 -0
- package/dist/rtdb/load-rules-document.js +38 -0
- package/dist/rtdb/load-rules-document.js.map +1 -0
- package/dist/rtdb/rules-generation-tool.d.ts +4 -0
- package/dist/rtdb/rules-generation-tool.d.ts.map +1 -0
- package/dist/rtdb/rules-generation-tool.js +35 -0
- package/dist/rtdb/rules-generation-tool.js.map +1 -0
- package/dist/rtdb/rules-json.d.ts +8 -0
- package/dist/rtdb/rules-json.d.ts.map +1 -0
- package/dist/rtdb/rules-json.js +17 -0
- package/dist/rtdb/rules-json.js.map +1 -0
- package/dist/serve/bridge-mount.d.ts +36 -0
- package/dist/serve/bridge-mount.d.ts.map +1 -0
- package/dist/serve/bridge-mount.js +162 -0
- package/dist/serve/bridge-mount.js.map +1 -0
- package/dist/serve/bundler.d.ts +110 -0
- package/dist/serve/bundler.d.ts.map +1 -0
- package/dist/serve/bundler.js +432 -0
- package/dist/serve/bundler.js.map +1 -0
- package/dist/serve/capture-store.d.ts +27 -0
- package/dist/serve/capture-store.d.ts.map +1 -0
- package/dist/serve/capture-store.js +47 -0
- package/dist/serve/capture-store.js.map +1 -0
- package/dist/serve/discovery.d.ts +71 -0
- package/dist/serve/discovery.d.ts.map +1 -0
- package/dist/serve/discovery.js +158 -0
- package/dist/serve/discovery.js.map +1 -0
- package/dist/serve/docs-ui/_astro/_slug_.CQYSemvw.css +1 -0
- package/dist/serve/docs-ui/docs/_rhythm/index.html +99 -0
- package/dist/serve/docs-ui/docs/_rhythm.md +101 -0
- package/dist/serve/docs-ui/docs/api-reference/index.html +64 -0
- package/dist/serve/docs-ui/docs/api-reference.md +67 -0
- package/dist/serve/docs-ui/docs/audit-your-rules/index.html +34 -0
- package/dist/serve/docs-ui/docs/audit-your-rules.md +50 -0
- package/dist/serve/docs-ui/docs/create-pyric-reference-api/index.html +498 -0
- package/dist/serve/docs-ui/docs/create-pyric-reference-api.md +345 -0
- package/dist/serve/docs-ui/docs/firestore-rules-limits/index.html +59 -0
- package/dist/serve/docs-ui/docs/firestore-rules-limits.md +54 -0
- package/dist/serve/docs-ui/docs/how-the-swap-works/index.html +47 -0
- package/dist/serve/docs-ui/docs/how-the-swap-works.md +43 -0
- package/dist/serve/docs-ui/docs/how-we-know-it-matches-firebase/index.html +131 -0
- package/dist/serve/docs-ui/docs/how-we-know-it-matches-firebase.md +169 -0
- package/dist/serve/docs-ui/docs/index.html +2 -0
- package/dist/serve/docs-ui/docs/index.json +18637 -0
- package/dist/serve/docs-ui/docs/overview/index.html +23 -0
- package/dist/serve/docs-ui/docs/overview.md +40 -0
- package/dist/serve/docs-ui/docs/pyric-admin-app/index.html +19 -0
- package/dist/serve/docs-ui/docs/pyric-admin-app-reference-api/index.html +185 -0
- package/dist/serve/docs-ui/docs/pyric-admin-app-reference-api.md +206 -0
- package/dist/serve/docs-ui/docs/pyric-admin-app.md +27 -0
- package/dist/serve/docs-ui/docs/pyric-admin-auth/index.html +24 -0
- package/dist/serve/docs-ui/docs/pyric-admin-auth-reference-api/index.html +617 -0
- package/dist/serve/docs-ui/docs/pyric-admin-auth-reference-api.md +441 -0
- package/dist/serve/docs-ui/docs/pyric-admin-auth.md +29 -0
- package/dist/serve/docs-ui/docs/pyric-admin-database/index.html +26 -0
- package/dist/serve/docs-ui/docs/pyric-admin-database-reference-api/index.html +583 -0
- package/dist/serve/docs-ui/docs/pyric-admin-database-reference-api.md +597 -0
- package/dist/serve/docs-ui/docs/pyric-admin-database.md +31 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore/index.html +38 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-error-translation/index.html +57 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-error-translation.md +95 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-per-call-delegate/index.html +58 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-per-call-delegate.md +94 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-why-mirror-admin-shape/index.html +59 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-why-mirror-admin-shape.md +88 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-run-a-transaction/index.html +53 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-run-a-transaction.md +76 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-seed-and-set-rules/index.html +62 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-seed-and-set-rules.md +96 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-translate-denials/index.html +80 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-translate-denials.md +98 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-use-onsnapshot/index.html +57 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-use-onsnapshot.md +88 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-write-a-batch/index.html +50 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-write-a-batch.md +73 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-api/index.html +32 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-api.md +30 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-onsnapshot/index.html +68 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-onsnapshot.md +81 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-re-exported-types/index.html +76 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-re-exported-types.md +103 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-sandbox-firestore/index.html +40 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-sandbox-firestore.md +77 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-tutorials-01-first-admin-session/index.html +118 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-tutorials-01-first-admin-session.md +166 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore.md +53 -0
- package/dist/serve/docs-ui/docs/pyric-admin-storage/index.html +25 -0
- package/dist/serve/docs-ui/docs/pyric-admin-storage-reference-api/index.html +317 -0
- package/dist/serve/docs-ui/docs/pyric-admin-storage-reference-api.md +285 -0
- package/dist/serve/docs-ui/docs/pyric-admin-storage.md +30 -0
- package/dist/serve/docs-ui/docs/pyric-ai-compat/index.html +436 -0
- package/dist/serve/docs-ui/docs/pyric-ai-compat.md +471 -0
- package/dist/serve/docs-ui/docs/pyric-ai-reference-api/index.html +5831 -0
- package/dist/serve/docs-ui/docs/pyric-ai-reference-api.md +5440 -0
- package/dist/serve/docs-ui/docs/pyric-ai-scripting-reference-api/index.html +159 -0
- package/dist/serve/docs-ui/docs/pyric-ai-scripting-reference-api.md +122 -0
- package/dist/serve/docs-ui/docs/pyric-app-compat/index.html +180 -0
- package/dist/serve/docs-ui/docs/pyric-app-compat.md +199 -0
- package/dist/serve/docs-ui/docs/pyric-app-reference-api/index.html +420 -0
- package/dist/serve/docs-ui/docs/pyric-app-reference-api.md +326 -0
- package/dist/serve/docs-ui/docs/pyric-auth/index.html +59 -0
- package/dist/serve/docs-ui/docs/pyric-auth-compat/index.html +804 -0
- package/dist/serve/docs-ui/docs/pyric-auth-compat.md +847 -0
- package/dist/serve/docs-ui/docs/pyric-auth-reference-api/index.html +5452 -0
- package/dist/serve/docs-ui/docs/pyric-auth-reference-api.md +5271 -0
- package/dist/serve/docs-ui/docs/pyric-auth-reference-feature-matrix/index.html +781 -0
- package/dist/serve/docs-ui/docs/pyric-auth-reference-feature-matrix.md +198 -0
- package/dist/serve/docs-ui/docs/pyric-auth-reference-sandbox-test-driver/index.html +71 -0
- package/dist/serve/docs-ui/docs/pyric-auth-reference-sandbox-test-driver.md +108 -0
- package/dist/serve/docs-ui/docs/pyric-auth.md +86 -0
- package/dist/serve/docs-ui/docs/pyric-cli/index.html +40 -0
- package/dist/serve/docs-ui/docs/pyric-cli-assurance-browser-reference-api/index.html +98 -0
- package/dist/serve/docs-ui/docs/pyric-cli-assurance-browser-reference-api.md +88 -0
- package/dist/serve/docs-ui/docs/pyric-cli-assurance-reference-api/index.html +2355 -0
- package/dist/serve/docs-ui/docs/pyric-cli-assurance-reference-api.md +1554 -0
- package/dist/serve/docs-ui/docs/pyric-cli-bridge/index.html +69 -0
- package/dist/serve/docs-ui/docs/pyric-cli-bridge-client-reference-api/index.html +546 -0
- package/dist/serve/docs-ui/docs/pyric-cli-bridge-client-reference-api.md +485 -0
- package/dist/serve/docs-ui/docs/pyric-cli-bridge-reference-api/index.html +506 -0
- package/dist/serve/docs-ui/docs/pyric-cli-bridge-reference-api.md +419 -0
- package/dist/serve/docs-ui/docs/pyric-cli-bridge.md +99 -0
- package/dist/serve/docs-ui/docs/pyric-cli-credentials-node-reference-api/index.html +67 -0
- package/dist/serve/docs-ui/docs/pyric-cli-credentials-node-reference-api.md +59 -0
- package/dist/serve/docs-ui/docs/pyric-cli-discover-reference-api/index.html +2355 -0
- package/dist/serve/docs-ui/docs/pyric-cli-discover-reference-api.md +2036 -0
- package/dist/serve/docs-ui/docs/pyric-cli-functions-rtdb-compat/index.html +112 -0
- package/dist/serve/docs-ui/docs/pyric-cli-functions-rtdb-compat.md +124 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-build-a-standalone-binary/index.html +91 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-build-a-standalone-binary.md +105 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-promote-sandbox-state-to-a-fixture/index.html +52 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-promote-sandbox-state-to-a-fixture.md +98 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-run-rtdb-onvaluecreated/index.html +66 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-run-rtdb-onvaluecreated.md +100 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-serve-persistence-and-multi-tab/index.html +228 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-serve-persistence-and-multi-tab.md +179 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-use-the-vite-plugin/index.html +341 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-use-the-vite-plugin.md +309 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-verify-against-a-captured-session/index.html +128 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-verify-against-a-captured-session.md +207 -0
- package/dist/serve/docs-ui/docs/pyric-cli-reference-cli/index.html +404 -0
- package/dist/serve/docs-ui/docs/pyric-cli-reference-cli.md +249 -0
- package/dist/serve/docs-ui/docs/pyric-cli-reference-package-and-resolution/index.html +93 -0
- package/dist/serve/docs-ui/docs/pyric-cli-reference-package-and-resolution.md +65 -0
- package/dist/serve/docs-ui/docs/pyric-cli-reference-verify/index.html +81 -0
- package/dist/serve/docs-ui/docs/pyric-cli-reference-verify.md +110 -0
- package/dist/serve/docs-ui/docs/pyric-cli-register-reference-api/index.html +10 -0
- package/dist/serve/docs-ui/docs/pyric-cli-register-reference-api.md +16 -0
- package/dist/serve/docs-ui/docs/pyric-cli-remote-reference-api/index.html +1044 -0
- package/dist/serve/docs-ui/docs/pyric-cli-remote-reference-api.md +952 -0
- package/dist/serve/docs-ui/docs/pyric-cli-serve-worker-reference-api/index.html +5041 -0
- package/dist/serve/docs-ui/docs/pyric-cli-serve-worker-reference-api.md +4739 -0
- package/dist/serve/docs-ui/docs/pyric-cli-tutorials-server-adoption/index.html +219 -0
- package/dist/serve/docs-ui/docs/pyric-cli-tutorials-server-adoption.md +251 -0
- package/dist/serve/docs-ui/docs/pyric-cli-tutorials-wire-claude-code/index.html +136 -0
- package/dist/serve/docs-ui/docs/pyric-cli-tutorials-wire-claude-code.md +217 -0
- package/dist/serve/docs-ui/docs/pyric-cli-verify-reference-api/index.html +926 -0
- package/dist/serve/docs-ui/docs/pyric-cli-verify-reference-api.md +586 -0
- package/dist/serve/docs-ui/docs/pyric-cli-vite-reference-api/index.html +102 -0
- package/dist/serve/docs-ui/docs/pyric-cli-vite-reference-api.md +76 -0
- package/dist/serve/docs-ui/docs/pyric-cli.md +42 -0
- package/dist/serve/docs-ui/docs/pyric-conformance-scores/index.html +180 -0
- package/dist/serve/docs-ui/docs/pyric-conformance-scores.md +184 -0
- package/dist/serve/docs-ui/docs/pyric-database/index.html +43 -0
- package/dist/serve/docs-ui/docs/pyric-database-compat/index.html +1224 -0
- package/dist/serve/docs-ui/docs/pyric-database-compat.md +1289 -0
- package/dist/serve/docs-ui/docs/pyric-database-explanation-rules-authoring-and-deploy-are-separate/index.html +16 -0
- package/dist/serve/docs-ui/docs/pyric-database-explanation-rules-authoring-and-deploy-are-separate.md +23 -0
- package/dist/serve/docs-ui/docs/pyric-database-reference-api/index.html +1851 -0
- package/dist/serve/docs-ui/docs/pyric-database-reference-api.md +1842 -0
- package/dist/serve/docs-ui/docs/pyric-database-reference-constraints/index.html +381 -0
- package/dist/serve/docs-ui/docs/pyric-database-reference-constraints.md +168 -0
- package/dist/serve/docs-ui/docs/pyric-database-reference-rules-tooling/index.html +218 -0
- package/dist/serve/docs-ui/docs/pyric-database-reference-rules-tooling.md +303 -0
- package/dist/serve/docs-ui/docs/pyric-database-tutorials-01-author-rtdb-rules-with-constraints/index.html +125 -0
- package/dist/serve/docs-ui/docs/pyric-database-tutorials-01-author-rtdb-rules-with-constraints.md +171 -0
- package/dist/serve/docs-ui/docs/pyric-database.md +26 -0
- package/dist/serve/docs-ui/docs/pyric-explanation-versioning-and-compatibility/index.html +40 -0
- package/dist/serve/docs-ui/docs/pyric-explanation-versioning-and-compatibility.md +68 -0
- package/dist/serve/docs-ui/docs/pyric-firestore/index.html +48 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-compat/index.html +868 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-compat.md +939 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-explanation-rules-tooling-is-separate/index.html +92 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-explanation-rules-tooling-is-separate.md +70 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-explanation-target-symbol-opacity/index.html +59 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-explanation-target-symbol-opacity.md +91 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-explanation-two-backends-one-surface/index.html +43 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-explanation-two-backends-one-surface.md +58 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-migrate-from-firebase-firestore/index.html +58 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-migrate-from-firebase-firestore.md +86 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-pick-a-backend/index.html +52 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-pick-a-backend.md +83 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-run-a-transaction/index.html +42 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-run-a-transaction.md +59 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-onsnapshot/index.html +66 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-onsnapshot.md +96 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-sandbox-ops/index.html +61 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-sandbox-ops.md +92 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-api/index.html +3623 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-api.md +3399 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-feature-matrix/index.html +80 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-feature-matrix.md +66 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-getfirestore/index.html +46 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-getfirestore.md +73 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-query-constraints/index.html +80 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-query-constraints.md +129 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-sandbox-ops/index.html +58 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-sandbox-ops.md +88 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-tool-factories/index.html +51 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-tool-factories.md +71 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-01-write-a-sandbox-demo/index.html +130 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-01-write-a-sandbox-demo.md +180 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-02-swap-to-prod-backend/index.html +59 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-02-swap-to-prod-backend.md +92 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-values-reference-api/index.html +30 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-values-reference-api.md +30 -0
- package/dist/serve/docs-ui/docs/pyric-firestore.md +72 -0
- package/dist/serve/docs-ui/docs/pyric-messaging-compat/index.html +300 -0
- package/dist/serve/docs-ui/docs/pyric-messaging-compat.md +321 -0
- package/dist/serve/docs-ui/docs/pyric-messaging-reference-api/index.html +508 -0
- package/dist/serve/docs-ui/docs/pyric-messaging-reference-api.md +374 -0
- package/dist/serve/docs-ui/docs/pyric-messaging-sw-reference-api/index.html +482 -0
- package/dist/serve/docs-ui/docs/pyric-messaging-sw-reference-api.md +348 -0
- package/dist/serve/docs-ui/docs/pyric-rules/index.html +87 -0
- package/dist/serve/docs-ui/docs/pyric-rules-compat/index.html +328 -0
- package/dist/serve/docs-ui/docs/pyric-rules-compat.md +347 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-agent-failure-modes/index.html +50 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-agent-failure-modes.md +78 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-lint-vs-validate-vs-simulate-vs-test/index.html +79 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-lint-vs-validate-vs-simulate-vs-test.md +69 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-runtime-budget-and-shared-gates/index.html +67 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-runtime-budget-and-shared-gates.md +75 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-sentinel-expression-engine/index.html +49 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-sentinel-expression-engine.md +74 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-simulator-vs-rules-test-api/index.html +95 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-simulator-vs-rules-test-api.md +80 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-the-2-plus-modules-extension/index.html +58 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-the-2-plus-modules-extension.md +79 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-value-wrappers-design/index.html +63 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-value-wrappers-design.md +84 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-why-this-package-exists/index.html +34 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-why-this-package-exists.md +43 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-compare-rulesets-for-weakening/index.html +55 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-compare-rulesets-for-weakening.md +77 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-inspect-rules-via-the-ast/index.html +90 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-inspect-rules-via-the-ast.md +129 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-lint-rules-source/index.html +55 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-lint-rules-source.md +84 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-pin-request-time/index.html +49 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-pin-request-time.md +64 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-register-tools-with-an-agent/index.html +61 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-register-tools-with-an-agent.md +87 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-resolve-module-imports/index.html +93 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-resolve-module-imports.md +105 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-simulate-rules-locally/index.html +89 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-simulate-rules-locally.md +134 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-test-rules-against-firebase/index.html +66 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-test-rules-against-firebase.md +102 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-api/index.html +2629 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-api.md +2213 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-ast/index.html +85 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-ast.md +121 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-conformance-gaps/index.html +277 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-conformance-gaps.md +360 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-errors/index.html +76 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-errors.md +123 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-lint-rules/index.html +148 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-lint-rules.md +159 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-simulator-context/index.html +66 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-simulator-context.md +104 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-stdlib-modules/index.html +241 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-stdlib-modules.md +143 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-test-case-schema/index.html +94 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-test-case-schema.md +121 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-validator-findings/index.html +87 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-validator-findings.md +117 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-value-wrappers/index.html +102 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-value-wrappers.md +152 -0
- package/dist/serve/docs-ui/docs/pyric-rules.md +93 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox/index.html +67 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-database-reference-api/index.html +120 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-database-reference-api.md +110 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-every-op-is-a-request/index.html +141 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-every-op-is-a-request.md +161 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-identity-is-a-context/index.html +66 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-identity-is-a-context.md +110 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-internal-adapter-protocol/index.html +71 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-internal-adapter-protocol.md +111 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-listener-re-evaluation/index.html +56 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-listener-re-evaluation.md +82 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-local-backend-vs-firestore-offline/index.html +64 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-local-backend-vs-firestore-offline.md +56 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-why-adapters-are-siblings/index.html +92 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-why-adapters-are-siblings.md +90 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-why-this-package-exists/index.html +69 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-why-this-package-exists.md +57 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-firestore-reference-api/index.html +202 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-firestore-reference-api.md +134 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-multiple-isolated-sandboxes/index.html +63 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-multiple-isolated-sandboxes.md +89 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-observe-events/index.html +159 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-observe-events.md +168 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-pick-an-adapter/index.html +79 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-pick-an-adapter.md +75 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-replay-events/index.html +88 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-replay-events.md +92 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-reset-between-tests/index.html +68 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-reset-between-tests.md +92 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-seed-data-and-rules/index.html +91 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-seed-data-and-rules.md +122 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-switch-users/index.html +50 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-switch-users.md +78 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-use-admin-reads/index.html +54 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-use-admin-reads.md +85 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-api/index.html +5019 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-api.md +4060 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-divergences/index.html +125 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-divergences.md +151 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-error-codes/index.html +110 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-error-codes.md +118 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-internal-protocol/index.html +72 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-internal-protocol.md +109 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-sandbox-and-context/index.html +90 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-sandbox-and-context.md +140 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-sandbox-event/index.html +146 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-sandbox-event.md +204 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-snapshot-and-admin/index.html +53 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-snapshot-and-admin.md +89 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-tutorials-01-your-first-sandbox-session/index.html +115 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-tutorials-01-your-first-sandbox-session.md +176 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox.md +69 -0
- package/dist/serve/docs-ui/docs/pyric-storage/index.html +65 -0
- package/dist/serve/docs-ui/docs/pyric-storage-compat/index.html +676 -0
- package/dist/serve/docs-ui/docs/pyric-storage-compat.md +699 -0
- package/dist/serve/docs-ui/docs/pyric-storage-explanation-implementation-scope/index.html +52 -0
- package/dist/serve/docs-ui/docs/pyric-storage-explanation-implementation-scope.md +85 -0
- package/dist/serve/docs-ui/docs/pyric-storage-explanation-session-archive-use-case/index.html +58 -0
- package/dist/serve/docs-ui/docs/pyric-storage-explanation-session-archive-use-case.md +82 -0
- package/dist/serve/docs-ui/docs/pyric-storage-explanation-why-indexeddb/index.html +50 -0
- package/dist/serve/docs-ui/docs/pyric-storage-explanation-why-indexeddb.md +82 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-enforce-rules/index.html +120 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-enforce-rules.md +127 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-list-and-delete/index.html +53 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-list-and-delete.md +86 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-switch-backends/index.html +43 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-switch-backends.md +65 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-test-rule-expressions/index.html +70 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-test-rule-expressions.md +88 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-api/index.html +2120 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-api.md +1687 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-conformance-gaps/index.html +137 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-conformance-gaps.md +171 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-error-codes/index.html +37 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-error-codes.md +57 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-rules-subset/index.html +96 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-rules-subset.md +134 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-storage-options/index.html +39 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-storage-options.md +61 -0
- package/dist/serve/docs-ui/docs/pyric-storage.md +67 -0
- package/dist/serve/docs-ui/docs/pyric-ui-agents-reference-api/index.html +638 -0
- package/dist/serve/docs-ui/docs/pyric-ui-agents-reference-api.md +430 -0
- package/dist/serve/docs-ui/docs/pyric-ui-auth-hooks-reference-api/index.html +813 -0
- package/dist/serve/docs-ui/docs/pyric-ui-auth-hooks-reference-api.md +634 -0
- package/dist/serve/docs-ui/docs/pyric-ui-auth-reference-api/index.html +1708 -0
- package/dist/serve/docs-ui/docs/pyric-ui-auth-reference-api.md +1300 -0
- package/dist/serve/docs-ui/docs/pyric-ui-events-hooks-reference-api/index.html +177 -0
- package/dist/serve/docs-ui/docs/pyric-ui-events-hooks-reference-api.md +111 -0
- package/dist/serve/docs-ui/docs/pyric-ui-events-reference-api/index.html +1542 -0
- package/dist/serve/docs-ui/docs/pyric-ui-events-reference-api.md +903 -0
- package/dist/serve/docs-ui/docs/pyric-ui-firestore-hooks-reference-api/index.html +1024 -0
- package/dist/serve/docs-ui/docs/pyric-ui-firestore-hooks-reference-api.md +640 -0
- package/dist/serve/docs-ui/docs/pyric-ui-firestore-reference-api/index.html +2753 -0
- package/dist/serve/docs-ui/docs/pyric-ui-firestore-reference-api.md +2171 -0
- package/dist/serve/docs-ui/docs/pyric-ui-primitives-reference-api/index.html +1005 -0
- package/dist/serve/docs-ui/docs/pyric-ui-primitives-reference-api.md +693 -0
- package/dist/serve/docs-ui/docs/pyric-ui-rtdb-reference-api/index.html +1388 -0
- package/dist/serve/docs-ui/docs/pyric-ui-rtdb-reference-api.md +1340 -0
- package/dist/serve/docs-ui/docs/pyric-ui-rules-hooks-reference-api/index.html +131 -0
- package/dist/serve/docs-ui/docs/pyric-ui-rules-hooks-reference-api.md +76 -0
- package/dist/serve/docs-ui/docs/pyric-ui-rules-reference-api/index.html +648 -0
- package/dist/serve/docs-ui/docs/pyric-ui-rules-reference-api.md +508 -0
- package/dist/serve/docs-ui/docs/pyric-ui-storage-hooks-reference-api/index.html +1457 -0
- package/dist/serve/docs-ui/docs/pyric-ui-storage-hooks-reference-api.md +1029 -0
- package/dist/serve/docs-ui/docs/pyric-ui-storage-reference-api/index.html +2476 -0
- package/dist/serve/docs-ui/docs/pyric-ui-storage-reference-api.md +1919 -0
- package/dist/serve/docs-ui/docs/pyric-ui-traffic-hooks-reference-api/index.html +1241 -0
- package/dist/serve/docs-ui/docs/pyric-ui-traffic-hooks-reference-api.md +817 -0
- package/dist/serve/docs-ui/docs/pyric-ui-traffic-reference-api/index.html +2289 -0
- package/dist/serve/docs-ui/docs/pyric-ui-traffic-reference-api.md +1489 -0
- package/dist/serve/docs-ui/docs/read-a-denial/index.html +40 -0
- package/dist/serve/docs-ui/docs/read-a-denial.md +62 -0
- package/dist/serve/docs-ui/docs/receive-messages/index.html +28 -0
- package/dist/serve/docs-ui/docs/receive-messages.md +43 -0
- package/dist/serve/docs-ui/docs/rtdb-rules-in-typescript/index.html +67 -0
- package/dist/serve/docs-ui/docs/rtdb-rules-in-typescript.md +101 -0
- package/dist/serve/docs-ui/docs/rules-patterns/index.html +68 -0
- package/dist/serve/docs-ui/docs/rules-patterns.md +104 -0
- package/dist/serve/docs-ui/docs/rules-standard-library/index.html +87 -0
- package/dist/serve/docs-ui/docs/rules-standard-library.md +93 -0
- package/dist/serve/docs-ui/docs/run-ai-logic-locally/index.html +27 -0
- package/dist/serve/docs-ui/docs/run-ai-logic-locally.md +43 -0
- package/dist/serve/docs-ui/docs/secure-it-with-rules/index.html +69 -0
- package/dist/serve/docs-ui/docs/secure-it-with-rules.md +101 -0
- package/dist/serve/docs-ui/docs/see-whats-happening/index.html +73 -0
- package/dist/serve/docs-ui/docs/see-whats-happening.md +77 -0
- package/dist/serve/docs-ui/docs/set-up-the-project/index.html +14 -0
- package/dist/serve/docs-ui/docs/set-up-the-project.md +19 -0
- package/dist/serve/docs-ui/docs/set-up-your-agent/index.html +42 -0
- package/dist/serve/docs-ui/docs/set-up-your-agent.md +86 -0
- package/dist/serve/docs-ui/docs/shape-your-data/index.html +44 -0
- package/dist/serve/docs-ui/docs/shape-your-data.md +88 -0
- package/dist/serve/docs-ui/docs/ship-to-production/index.html +36 -0
- package/dist/serve/docs-ui/docs/ship-to-production.md +80 -0
- package/dist/serve/docs-ui/docs/sign-in-and-manage-users/index.html +31 -0
- package/dist/serve/docs-ui/docs/sign-in-and-manage-users.md +50 -0
- package/dist/serve/docs-ui/docs/simulate-and-lint/index.html +95 -0
- package/dist/serve/docs-ui/docs/simulate-and-lint.md +99 -0
- package/dist/serve/docs-ui/docs/skills/index.html +20 -0
- package/dist/serve/docs-ui/docs/skills.md +34 -0
- package/dist/serve/docs-ui/docs/start-building/index.html +32 -0
- package/dist/serve/docs-ui/docs/start-building.md +64 -0
- package/dist/serve/docs-ui/docs/store-and-query-data/index.html +16 -0
- package/dist/serve/docs-ui/docs/store-and-query-data.md +33 -0
- package/dist/serve/docs-ui/docs/store-files/index.html +13 -0
- package/dist/serve/docs-ui/docs/store-files.md +25 -0
- package/dist/serve/docs-ui/docs/sync-realtime-data/index.html +15 -0
- package/dist/serve/docs-ui/docs/sync-realtime-data.md +27 -0
- package/dist/serve/docs-ui/docs/test-in-node/index.html +74 -0
- package/dist/serve/docs-ui/docs/test-in-node.md +100 -0
- package/dist/serve/docs-ui/docs/ui/index.html +76 -0
- package/dist/serve/docs-ui/docs/ui-auth-authsigninhelper/index.html +194 -0
- package/dist/serve/docs-ui/docs/ui-auth-authsigninhelper.md +114 -0
- package/dist/serve/docs-ui/docs/ui-auth-authusers/index.html +263 -0
- package/dist/serve/docs-ui/docs/ui-auth-authusers.md +183 -0
- package/dist/serve/docs-ui/docs/ui-firestore-collectionlist/index.html +92 -0
- package/dist/serve/docs-ui/docs/ui-firestore-collectionlist.md +79 -0
- package/dist/serve/docs-ui/docs/ui-firestore-deletewithconfirm/index.html +128 -0
- package/dist/serve/docs-ui/docs/ui-firestore-deletewithconfirm.md +104 -0
- package/dist/serve/docs-ui/docs/ui-firestore-documenteditor/index.html +154 -0
- package/dist/serve/docs-ui/docs/ui-firestore-documenteditor.md +117 -0
- package/dist/serve/docs-ui/docs/ui-firestore-documentlist/index.html +132 -0
- package/dist/serve/docs-ui/docs/ui-firestore-documentlist.md +92 -0
- package/dist/serve/docs-ui/docs/ui-firestore-documentpreview/index.html +159 -0
- package/dist/serve/docs-ui/docs/ui-firestore-documentpreview.md +84 -0
- package/dist/serve/docs-ui/docs/ui-firestore-querybuilder/index.html +104 -0
- package/dist/serve/docs-ui/docs/ui-firestore-querybuilder.md +103 -0
- package/dist/serve/docs-ui/docs/ui-firestore-referencepicker/index.html +113 -0
- package/dist/serve/docs-ui/docs/ui-firestore-referencepicker.md +93 -0
- package/dist/serve/docs-ui/docs/ui-primitives-badge/index.html +56 -0
- package/dist/serve/docs-ui/docs/ui-primitives-badge.md +40 -0
- package/dist/serve/docs-ui/docs/ui-primitives-confirmdialog/index.html +140 -0
- package/dist/serve/docs-ui/docs/ui-primitives-confirmdialog.md +108 -0
- package/dist/serve/docs-ui/docs/ui-primitives-copybutton/index.html +58 -0
- package/dist/serve/docs-ui/docs/ui-primitives-copybutton.md +37 -0
- package/dist/serve/docs-ui/docs/ui-primitives-jsonview/index.html +58 -0
- package/dist/serve/docs-ui/docs/ui-primitives-jsonview.md +47 -0
- package/dist/serve/docs-ui/docs/ui-primitives-segmentedcontrol/index.html +70 -0
- package/dist/serve/docs-ui/docs/ui-primitives-segmentedcontrol.md +50 -0
- package/dist/serve/docs-ui/docs/ui-primitives-toast/index.html +87 -0
- package/dist/serve/docs-ui/docs/ui-primitives-toast.md +82 -0
- package/dist/serve/docs-ui/docs/ui-primitives-virtuallist/index.html +85 -0
- package/dist/serve/docs-ui/docs/ui-primitives-virtuallist.md +54 -0
- package/dist/serve/docs-ui/docs/ui-storage/index.html +150 -0
- package/dist/serve/docs-ui/docs/ui-storage-deleteselectionwithconfirm/index.html +126 -0
- package/dist/serve/docs-ui/docs/ui-storage-deleteselectionwithconfirm.md +88 -0
- package/dist/serve/docs-ui/docs/ui-storage-objectbrowser/index.html +137 -0
- package/dist/serve/docs-ui/docs/ui-storage-objectbrowser.md +90 -0
- package/dist/serve/docs-ui/docs/ui-storage-objectinspector/index.html +139 -0
- package/dist/serve/docs-ui/docs/ui-storage-objectinspector.md +93 -0
- package/dist/serve/docs-ui/docs/ui-storage-pathbreadcrumb/index.html +72 -0
- package/dist/serve/docs-ui/docs/ui-storage-pathbreadcrumb.md +57 -0
- package/dist/serve/docs-ui/docs/ui-storage-rules-aware-affordances/index.html +60 -0
- package/dist/serve/docs-ui/docs/ui-storage-rules-aware-affordances.md +52 -0
- package/dist/serve/docs-ui/docs/ui-storage-uploaddropzone/index.html +93 -0
- package/dist/serve/docs-ui/docs/ui-storage-uploaddropzone.md +78 -0
- package/dist/serve/docs-ui/docs/ui-storage-usestoragerulesgate/index.html +144 -0
- package/dist/serve/docs-ui/docs/ui-storage-usestoragerulesgate.md +101 -0
- package/dist/serve/docs-ui/docs/ui-storage.md +165 -0
- package/dist/serve/docs-ui/docs/ui-traffic/index.html +88 -0
- package/dist/serve/docs-ui/docs/ui-traffic-ruleheatmap/index.html +79 -0
- package/dist/serve/docs-ui/docs/ui-traffic-ruleheatmap.md +60 -0
- package/dist/serve/docs-ui/docs/ui-traffic-trafficdetail/index.html +78 -0
- package/dist/serve/docs-ui/docs/ui-traffic-trafficdetail.md +59 -0
- package/dist/serve/docs-ui/docs/ui-traffic-trafficlog/index.html +118 -0
- package/dist/serve/docs-ui/docs/ui-traffic-trafficlog.md +69 -0
- package/dist/serve/docs-ui/docs/ui-traffic-trafficstats/index.html +51 -0
- package/dist/serve/docs-ui/docs/ui-traffic-trafficstats.md +46 -0
- package/dist/serve/docs-ui/docs/ui-traffic.md +102 -0
- package/dist/serve/docs-ui/docs/ui.md +90 -0
- package/dist/serve/docs-ui/docs/watch-and-review/index.html +25 -0
- package/dist/serve/docs-ui/docs/watch-and-review.md +40 -0
- package/dist/serve/docs-ui/docs/what-your-agent-can-do/index.html +81 -0
- package/dist/serve/docs-ui/docs/what-your-agent-can-do.md +78 -0
- package/dist/serve/docs-ui/docs/whats-experimental/index.html +22 -0
- package/dist/serve/docs-ui/docs/whats-experimental.md +33 -0
- package/dist/serve/docs-ui/docs/whats-possible/index.html +63 -0
- package/dist/serve/docs-ui/docs/whats-possible.md +53 -0
- package/dist/serve/docs-ui/docs/which-data-service/index.html +8 -0
- package/dist/serve/docs-ui/docs/which-data-service.md +11 -0
- package/dist/serve/docs-ui/docs/write-a-rules-test-suite/index.html +85 -0
- package/dist/serve/docs-ui/docs/write-a-rules-test-suite.md +119 -0
- package/dist/serve/docs-ui/index.html +1 -0
- package/dist/serve/docs-ui/llms.txt +308 -0
- package/dist/serve/entries/ai.d.ts +4 -0
- package/dist/serve/entries/ai.d.ts.map +1 -0
- package/dist/serve/entries/ai.js +184 -0
- package/dist/serve/entries/ai.js.map +1 -0
- package/dist/serve/entries/app-backend.d.ts +2 -0
- package/dist/serve/entries/app-backend.d.ts.map +1 -0
- package/dist/serve/entries/app-backend.js +4 -0
- package/dist/serve/entries/app-backend.js.map +1 -0
- package/dist/serve/entries/app-client.d.ts +5 -0
- package/dist/serve/entries/app-client.d.ts.map +1 -0
- package/dist/serve/entries/app-client.js +23 -0
- package/dist/serve/entries/app-client.js.map +1 -0
- package/dist/serve/entries/app-session-store.d.ts +14 -0
- package/dist/serve/entries/app-session-store.d.ts.map +1 -0
- package/dist/serve/entries/app-session-store.js +37 -0
- package/dist/serve/entries/app-session-store.js.map +1 -0
- package/dist/serve/entries/app.d.ts +2 -0
- package/dist/serve/entries/app.d.ts.map +1 -0
- package/dist/serve/entries/app.js +10 -0
- package/dist/serve/entries/app.js.map +1 -0
- package/dist/serve/entries/auth-helper-core.d.ts +52 -0
- package/dist/serve/entries/auth-helper-core.d.ts.map +1 -0
- package/dist/serve/entries/auth-helper-core.js +118 -0
- package/dist/serve/entries/auth-helper-core.js.map +1 -0
- package/dist/serve/entries/auth-helper-dom.d.ts +14 -0
- package/dist/serve/entries/auth-helper-dom.d.ts.map +1 -0
- package/dist/serve/entries/auth-helper-dom.js +116 -0
- package/dist/serve/entries/auth-helper-dom.js.map +1 -0
- package/dist/serve/entries/auth-helper-runtime.d.ts +5 -0
- package/dist/serve/entries/auth-helper-runtime.d.ts.map +1 -0
- package/dist/serve/entries/auth-helper-runtime.js +11 -0
- package/dist/serve/entries/auth-helper-runtime.js.map +1 -0
- package/dist/serve/entries/auth.d.ts +77 -0
- package/dist/serve/entries/auth.d.ts.map +1 -0
- package/dist/serve/entries/auth.js +201 -0
- package/dist/serve/entries/auth.js.map +1 -0
- package/dist/serve/entries/bridge-url.d.ts +25 -0
- package/dist/serve/entries/bridge-url.d.ts.map +1 -0
- package/dist/serve/entries/bridge-url.js +30 -0
- package/dist/serve/entries/bridge-url.js.map +1 -0
- package/dist/serve/entries/database.d.ts +46 -0
- package/dist/serve/entries/database.d.ts.map +1 -0
- package/dist/serve/entries/database.js +80 -0
- package/dist/serve/entries/database.js.map +1 -0
- package/dist/serve/entries/firestore.d.ts +104 -0
- package/dist/serve/entries/firestore.d.ts.map +1 -0
- package/dist/serve/entries/firestore.js +202 -0
- package/dist/serve/entries/firestore.js.map +1 -0
- package/dist/serve/entries/init.d.ts +2 -0
- package/dist/serve/entries/init.d.ts.map +1 -0
- package/dist/serve/entries/init.js +40 -0
- package/dist/serve/entries/init.js.map +1 -0
- package/dist/serve/entries/keepalive.d.ts +20 -0
- package/dist/serve/entries/keepalive.d.ts.map +1 -0
- package/dist/serve/entries/keepalive.js +38 -0
- package/dist/serve/entries/keepalive.js.map +1 -0
- package/dist/serve/entries/messaging-sw.d.ts +10 -0
- package/dist/serve/entries/messaging-sw.d.ts.map +1 -0
- package/dist/serve/entries/messaging-sw.js +36 -0
- package/dist/serve/entries/messaging-sw.js.map +1 -0
- package/dist/serve/entries/messaging.d.ts +11 -0
- package/dist/serve/entries/messaging.d.ts.map +1 -0
- package/dist/serve/entries/messaging.js +53 -0
- package/dist/serve/entries/messaging.js.map +1 -0
- package/dist/serve/entries/runtime.d.ts +46 -0
- package/dist/serve/entries/runtime.d.ts.map +1 -0
- package/dist/serve/entries/runtime.js +435 -0
- package/dist/serve/entries/runtime.js.map +1 -0
- package/dist/serve/entries/session-store.d.ts +48 -0
- package/dist/serve/entries/session-store.d.ts.map +1 -0
- package/dist/serve/entries/session-store.js +82 -0
- package/dist/serve/entries/session-store.js.map +1 -0
- package/dist/serve/entries/storage.d.ts +25 -0
- package/dist/serve/entries/storage.d.ts.map +1 -0
- package/dist/serve/entries/storage.js +61 -0
- package/dist/serve/entries/storage.js.map +1 -0
- package/dist/serve/entries/tab-sync-wiring.d.ts +88 -0
- package/dist/serve/entries/tab-sync-wiring.d.ts.map +1 -0
- package/dist/serve/entries/tab-sync-wiring.js +217 -0
- package/dist/serve/entries/tab-sync-wiring.js.map +1 -0
- package/dist/serve/entries/worker-runtime.d.ts +10 -0
- package/dist/serve/entries/worker-runtime.d.ts.map +1 -0
- package/dist/serve/entries/worker-runtime.js +59 -0
- package/dist/serve/entries/worker-runtime.js.map +1 -0
- package/dist/serve/init-payload.d.ts +21 -0
- package/dist/serve/init-payload.d.ts.map +1 -0
- package/dist/serve/init-payload.js +2 -0
- package/dist/serve/init-payload.js.map +1 -0
- package/dist/serve/namespace.d.ts +73 -0
- package/dist/serve/namespace.d.ts.map +1 -0
- package/dist/serve/namespace.js +470 -0
- package/dist/serve/namespace.js.map +1 -0
- package/dist/serve/open-browser.d.ts +23 -0
- package/dist/serve/open-browser.d.ts.map +1 -0
- package/dist/serve/open-browser.js +58 -0
- package/dist/serve/open-browser.js.map +1 -0
- package/dist/serve/rules.d.ts +77 -0
- package/dist/serve/rules.d.ts.map +1 -0
- package/dist/serve/rules.js +202 -0
- package/dist/serve/rules.js.map +1 -0
- package/dist/serve/sandbox-marker.d.ts +9 -0
- package/dist/serve/sandbox-marker.d.ts.map +1 -0
- package/dist/serve/sandbox-marker.js +31 -0
- package/dist/serve/sandbox-marker.js.map +1 -0
- package/dist/serve/server.d.ts +135 -0
- package/dist/serve/server.d.ts.map +1 -0
- package/dist/serve/server.js +328 -0
- package/dist/serve/server.js.map +1 -0
- package/dist/serve/standalone-assets.d.ts +67 -0
- package/dist/serve/standalone-assets.d.ts.map +1 -0
- package/dist/serve/standalone-assets.js +134 -0
- package/dist/serve/standalone-assets.js.map +1 -0
- package/dist/serve/state-store.d.ts +45 -0
- package/dist/serve/state-store.d.ts.map +1 -0
- package/dist/serve/state-store.js +120 -0
- package/dist/serve/state-store.js.map +1 -0
- package/dist/serve/studio/disk-project-store.d.ts +9 -0
- package/dist/serve/studio/disk-project-store.d.ts.map +1 -0
- package/dist/serve/studio/disk-project-store.js +173 -0
- package/dist/serve/studio/disk-project-store.js.map +1 -0
- package/dist/serve/studio/disk-workspace.d.ts +14 -0
- package/dist/serve/studio/disk-workspace.d.ts.map +1 -0
- package/dist/serve/studio/disk-workspace.js +152 -0
- package/dist/serve/studio/disk-workspace.js.map +1 -0
- package/dist/serve/studio/index.d.ts +10 -0
- package/dist/serve/studio/index.d.ts.map +1 -0
- package/dist/serve/studio/index.js +9 -0
- package/dist/serve/studio/index.js.map +1 -0
- package/dist/serve/studio/routes.d.ts +40 -0
- package/dist/serve/studio/routes.d.ts.map +1 -0
- package/dist/serve/studio/routes.js +182 -0
- package/dist/serve/studio/routes.js.map +1 -0
- package/dist/serve/studio/store-types.d.ts +45 -0
- package/dist/serve/studio/store-types.d.ts.map +1 -0
- package/dist/serve/studio/store-types.js +11 -0
- package/dist/serve/studio/store-types.js.map +1 -0
- package/dist/serve/studio-ui/assets/RulesCodeEditor-BZpD57II.js +23 -0
- package/dist/serve/studio-ui/assets/index-Bsa-TQNK.css +1 -0
- package/dist/serve/studio-ui/assets/index-DGaVuOhE.js +1211 -0
- package/dist/serve/studio-ui/assets/seed-CTmn6YuO.js +2 -0
- package/dist/serve/studio-ui/index.html +32 -0
- package/dist/serve/studio-ui/pyric-logo.svg +76 -0
- package/dist/serve/vite-plugin.d.ts +57 -0
- package/dist/serve/vite-plugin.d.ts.map +1 -0
- package/dist/serve/vite-plugin.js +658 -0
- package/dist/serve/vite-plugin.js.map +1 -0
- package/dist/serve/worker/client/admin-firestore.d.ts +18 -0
- package/dist/serve/worker/client/admin-firestore.d.ts.map +1 -0
- package/dist/serve/worker/client/admin-firestore.js +26 -0
- package/dist/serve/worker/client/admin-firestore.js.map +1 -0
- package/dist/serve/worker/client/ai.d.ts +31 -0
- package/dist/serve/worker/client/ai.d.ts.map +1 -0
- package/dist/serve/worker/client/ai.js +89 -0
- package/dist/serve/worker/client/ai.js.map +1 -0
- package/dist/serve/worker/client/auth.d.ts +168 -0
- package/dist/serve/worker/client/auth.d.ts.map +1 -0
- package/dist/serve/worker/client/auth.js +322 -0
- package/dist/serve/worker/client/auth.js.map +1 -0
- package/dist/serve/worker/client/connection.d.ts +80 -0
- package/dist/serve/worker/client/connection.d.ts.map +1 -0
- package/dist/serve/worker/client/connection.js +148 -0
- package/dist/serve/worker/client/connection.js.map +1 -0
- package/dist/serve/worker/client/core.d.ts +109 -0
- package/dist/serve/worker/client/core.d.ts.map +1 -0
- package/dist/serve/worker/client/core.js +248 -0
- package/dist/serve/worker/client/core.js.map +1 -0
- package/dist/serve/worker/client/disconnect.d.ts +7 -0
- package/dist/serve/worker/client/disconnect.d.ts.map +1 -0
- package/dist/serve/worker/client/disconnect.js +26 -0
- package/dist/serve/worker/client/disconnect.js.map +1 -0
- package/dist/serve/worker/client/firestore-reads.d.ts +49 -0
- package/dist/serve/worker/client/firestore-reads.d.ts.map +1 -0
- package/dist/serve/worker/client/firestore-reads.js +139 -0
- package/dist/serve/worker/client/firestore-reads.js.map +1 -0
- package/dist/serve/worker/client/firestore-refs.d.ts +54 -0
- package/dist/serve/worker/client/firestore-refs.d.ts.map +1 -0
- package/dist/serve/worker/client/firestore-refs.js +167 -0
- package/dist/serve/worker/client/firestore-refs.js.map +1 -0
- package/dist/serve/worker/client/firestore-writes.d.ts +70 -0
- package/dist/serve/worker/client/firestore-writes.d.ts.map +1 -0
- package/dist/serve/worker/client/firestore-writes.js +169 -0
- package/dist/serve/worker/client/firestore-writes.js.map +1 -0
- package/dist/serve/worker/client/handles.d.ts +73 -0
- package/dist/serve/worker/client/handles.d.ts.map +1 -0
- package/dist/serve/worker/client/handles.js +4 -0
- package/dist/serve/worker/client/handles.js.map +1 -0
- package/dist/serve/worker/client/messaging.d.ts +16 -0
- package/dist/serve/worker/client/messaging.d.ts.map +1 -0
- package/dist/serve/worker/client/messaging.js +60 -0
- package/dist/serve/worker/client/messaging.js.map +1 -0
- package/dist/serve/worker/client/presence.d.ts +43 -0
- package/dist/serve/worker/client/presence.d.ts.map +1 -0
- package/dist/serve/worker/client/presence.js +132 -0
- package/dist/serve/worker/client/presence.js.map +1 -0
- package/dist/serve/worker/client/rtdb.d.ts +36 -0
- package/dist/serve/worker/client/rtdb.d.ts.map +1 -0
- package/dist/serve/worker/client/rtdb.js +241 -0
- package/dist/serve/worker/client/rtdb.js.map +1 -0
- package/dist/serve/worker/client/rules.d.ts +24 -0
- package/dist/serve/worker/client/rules.d.ts.map +1 -0
- package/dist/serve/worker/client/rules.js +44 -0
- package/dist/serve/worker/client/rules.js.map +1 -0
- package/dist/serve/worker/client/service-worker-connection.d.ts +3 -0
- package/dist/serve/worker/client/service-worker-connection.d.ts.map +1 -0
- package/dist/serve/worker/client/service-worker-connection.js +53 -0
- package/dist/serve/worker/client/service-worker-connection.js.map +1 -0
- package/dist/serve/worker/client/snapshots.d.ts +32 -0
- package/dist/serve/worker/client/snapshots.d.ts.map +1 -0
- package/dist/serve/worker/client/snapshots.js +46 -0
- package/dist/serve/worker/client/snapshots.js.map +1 -0
- package/dist/serve/worker/client/storage.d.ts +64 -0
- package/dist/serve/worker/client/storage.d.ts.map +1 -0
- package/dist/serve/worker/client/storage.js +125 -0
- package/dist/serve/worker/client/storage.js.map +1 -0
- package/dist/serve/worker/client/studio.d.ts +32 -0
- package/dist/serve/worker/client/studio.d.ts.map +1 -0
- package/dist/serve/worker/client/studio.js +61 -0
- package/dist/serve/worker/client/studio.js.map +1 -0
- package/dist/serve/worker/client.d.ts +43 -0
- package/dist/serve/worker/client.d.ts.map +1 -0
- package/dist/serve/worker/client.js +44 -0
- package/dist/serve/worker/client.js.map +1 -0
- package/dist/serve/worker/entry.d.ts +40 -0
- package/dist/serve/worker/entry.d.ts.map +1 -0
- package/dist/serve/worker/entry.js +144 -0
- package/dist/serve/worker/entry.js.map +1 -0
- package/dist/serve/worker/host/admin-firestore.d.ts +17 -0
- package/dist/serve/worker/host/admin-firestore.d.ts.map +1 -0
- package/dist/serve/worker/host/admin-firestore.js +92 -0
- package/dist/serve/worker/host/admin-firestore.js.map +1 -0
- package/dist/serve/worker/host/connection.d.ts +40 -0
- package/dist/serve/worker/host/connection.d.ts.map +1 -0
- package/dist/serve/worker/host/connection.js +153 -0
- package/dist/serve/worker/host/connection.js.map +1 -0
- package/dist/serve/worker/host/core.d.ts +159 -0
- package/dist/serve/worker/host/core.d.ts.map +1 -0
- package/dist/serve/worker/host/core.js +296 -0
- package/dist/serve/worker/host/core.js.map +1 -0
- package/dist/serve/worker/host/dispatch.d.ts +34 -0
- package/dist/serve/worker/host/dispatch.d.ts.map +1 -0
- package/dist/serve/worker/host/dispatch.js +267 -0
- package/dist/serve/worker/host/dispatch.js.map +1 -0
- package/dist/serve/worker/host/firestore-reads.d.ts +17 -0
- package/dist/serve/worker/host/firestore-reads.d.ts.map +1 -0
- package/dist/serve/worker/host/firestore-reads.js +108 -0
- package/dist/serve/worker/host/firestore-reads.js.map +1 -0
- package/dist/serve/worker/host/firestore-writes.d.ts +37 -0
- package/dist/serve/worker/host/firestore-writes.d.ts.map +1 -0
- package/dist/serve/worker/host/firestore-writes.js +409 -0
- package/dist/serve/worker/host/firestore-writes.js.map +1 -0
- package/dist/serve/worker/host/presence.d.ts +38 -0
- package/dist/serve/worker/host/presence.d.ts.map +1 -0
- package/dist/serve/worker/host/presence.js +280 -0
- package/dist/serve/worker/host/presence.js.map +1 -0
- package/dist/serve/worker/host/rtdb.d.ts +18 -0
- package/dist/serve/worker/host/rtdb.d.ts.map +1 -0
- package/dist/serve/worker/host/rtdb.js +128 -0
- package/dist/serve/worker/host/rtdb.js.map +1 -0
- package/dist/serve/worker/host/rules.d.ts +17 -0
- package/dist/serve/worker/host/rules.d.ts.map +1 -0
- package/dist/serve/worker/host/rules.js +118 -0
- package/dist/serve/worker/host/rules.js.map +1 -0
- package/dist/serve/worker/host/storage.d.ts +19 -0
- package/dist/serve/worker/host/storage.d.ts.map +1 -0
- package/dist/serve/worker/host/storage.js +260 -0
- package/dist/serve/worker/host/storage.js.map +1 -0
- package/dist/serve/worker/host/studio.d.ts +13 -0
- package/dist/serve/worker/host/studio.d.ts.map +1 -0
- package/dist/serve/worker/host/studio.js +30 -0
- package/dist/serve/worker/host/studio.js.map +1 -0
- package/dist/serve/worker/host/subscriptions.d.ts +21 -0
- package/dist/serve/worker/host/subscriptions.d.ts.map +1 -0
- package/dist/serve/worker/host/subscriptions.js +162 -0
- package/dist/serve/worker/host/subscriptions.js.map +1 -0
- package/dist/serve/worker/host-ai.d.ts +59 -0
- package/dist/serve/worker/host-ai.d.ts.map +1 -0
- package/dist/serve/worker/host-ai.js +158 -0
- package/dist/serve/worker/host-ai.js.map +1 -0
- package/dist/serve/worker/host-auth.d.ts +47 -0
- package/dist/serve/worker/host-auth.d.ts.map +1 -0
- package/dist/serve/worker/host-auth.js +464 -0
- package/dist/serve/worker/host-auth.js.map +1 -0
- package/dist/serve/worker/host-context.d.ts +220 -0
- package/dist/serve/worker/host-context.d.ts.map +1 -0
- package/dist/serve/worker/host-context.js +45 -0
- package/dist/serve/worker/host-context.js.map +1 -0
- package/dist/serve/worker/host-events.d.ts +21 -0
- package/dist/serve/worker/host-events.d.ts.map +1 -0
- package/dist/serve/worker/host-events.js +87 -0
- package/dist/serve/worker/host-events.js.map +1 -0
- package/dist/serve/worker/host-messaging.d.ts +60 -0
- package/dist/serve/worker/host-messaging.d.ts.map +1 -0
- package/dist/serve/worker/host-messaging.js +226 -0
- package/dist/serve/worker/host-messaging.js.map +1 -0
- package/dist/serve/worker/host.d.ts +36 -0
- package/dist/serve/worker/host.d.ts.map +1 -0
- package/dist/serve/worker/host.js +39 -0
- package/dist/serve/worker/host.js.map +1 -0
- package/dist/serve/worker/index.d.ts +22 -0
- package/dist/serve/worker/index.d.ts.map +1 -0
- package/dist/serve/worker/index.js +61 -0
- package/dist/serve/worker/index.js.map +1 -0
- package/dist/serve/worker/presence-timing.d.ts +14 -0
- package/dist/serve/worker/presence-timing.d.ts.map +1 -0
- package/dist/serve/worker/presence-timing.js +14 -0
- package/dist/serve/worker/presence-timing.js.map +1 -0
- package/dist/serve/worker/protocol.d.ts +1150 -0
- package/dist/serve/worker/protocol.d.ts.map +1 -0
- package/dist/serve/worker/protocol.js +228 -0
- package/dist/serve/worker/protocol.js.map +1 -0
- package/dist/serve/worker/serve-init.d.ts +201 -0
- package/dist/serve/worker/serve-init.d.ts.map +1 -0
- package/dist/serve/worker/serve-init.js +579 -0
- package/dist/serve/worker/serve-init.js.map +1 -0
- package/dist/serve/worker/service-worker-channel.d.ts +23 -0
- package/dist/serve/worker/service-worker-channel.d.ts.map +1 -0
- package/dist/serve/worker/service-worker-channel.js +9 -0
- package/dist/serve/worker/service-worker-channel.js.map +1 -0
- package/dist/serve/worker/service-worker-relay.d.ts +22 -0
- package/dist/serve/worker/service-worker-relay.d.ts.map +1 -0
- package/dist/serve/worker/service-worker-relay.js +63 -0
- package/dist/serve/worker/service-worker-relay.js.map +1 -0
- package/dist/serve/writer-lock.d.ts +32 -0
- package/dist/serve/writer-lock.d.ts.map +1 -0
- package/dist/serve/writer-lock.js +43 -0
- package/dist/serve/writer-lock.js.map +1 -0
- package/dist/verify/cases.d.ts +37 -0
- package/dist/verify/cases.d.ts.map +1 -0
- package/dist/verify/cases.js +173 -0
- package/dist/verify/cases.js.map +1 -0
- package/dist/verify/fixture.d.ts +100 -0
- package/dist/verify/fixture.d.ts.map +1 -0
- package/dist/verify/fixture.js +156 -0
- package/dist/verify/fixture.js.map +1 -0
- package/dist/verify/index.d.ts +102 -0
- package/dist/verify/index.d.ts.map +1 -0
- package/dist/verify/index.js +318 -0
- package/dist/verify/index.js.map +1 -0
- package/dist/verify/tools.d.ts +7 -0
- package/dist/verify/tools.d.ts.map +1 -0
- package/dist/verify/tools.js +83 -0
- package/dist/verify/tools.js.map +1 -0
- package/dist/version/compat-target.d.ts +18 -0
- package/dist/version/compat-target.d.ts.map +1 -0
- package/dist/version/compat-target.js +18 -0
- package/dist/version/compat-target.js.map +1 -0
- package/dist/vite.d.ts +12 -0
- package/dist/vite.d.ts.map +1 -0
- package/dist/vite.js +16 -0
- package/dist/vite.js.map +1 -0
- package/package.json +133 -0
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
# Pyric
|
|
2
|
+
|
|
3
|
+
> Pyric is Firebase for agents: a Firebase-shaped SDK and toolchain
|
|
4
|
+
> (in-browser sandbox, rules tooling, replay verification, deploy)
|
|
5
|
+
> that lets developers and AI agents work against Firebase semantics
|
|
6
|
+
> without touching a live project.
|
|
7
|
+
|
|
8
|
+
Every page below is also served as raw markdown at the linked `.md` URL.
|
|
9
|
+
|
|
10
|
+
## Overview
|
|
11
|
+
|
|
12
|
+
- [Run Firebase locally, ship unchanged](/__pyric/ui/docs/overview.md): Understand what Pyric is and what you get, in one short read.
|
|
13
|
+
|
|
14
|
+
## Run locally
|
|
15
|
+
|
|
16
|
+
- [Run Firebase locally](/__pyric/ui/docs/start-building.md): Start a new Firebase application or add Pyric to an existing Vite application without connecting development to production.
|
|
17
|
+
- [How firebase/* imports resolve locally and in production](/__pyric/ui/docs/how-the-swap-works.md): Understand how your firebase imports reached a local backend, and why production is untouched.
|
|
18
|
+
- [Connect an agent to the sandbox](/__pyric/ui/docs/set-up-your-agent.md): Connect Claude Code, Cursor, Codex, or any MCP client to your backend in minutes.
|
|
19
|
+
- [Run the same backend in tests and scripts](/__pyric/ui/docs/test-in-node.md): Run your rules and data logic in a Node test suite, with no browser and no emulator.
|
|
20
|
+
|
|
21
|
+
## Develop with Firebase APIs
|
|
22
|
+
|
|
23
|
+
- [Run Firebase Authentication locally](/__pyric/ui/docs/sign-in-and-manage-users.md): Keep Firebase Authentication code unchanged while identities, sessions, and provider flows stay in the local sandbox.
|
|
24
|
+
- [Run Cloud Firestore locally](/__pyric/ui/docs/store-and-query-data.md): Keep Cloud Firestore application code unchanged while data, listeners, transactions, and Security Rules stay local.
|
|
25
|
+
- [Run Realtime Database locally](/__pyric/ui/docs/sync-realtime-data.md): Keep Realtime Database application code unchanged while the data tree, listeners, and Security Rules stay local.
|
|
26
|
+
- [Run Cloud Storage locally](/__pyric/ui/docs/store-files.md): Keep Cloud Storage application code unchanged while objects, metadata, and Security Rules stay local.
|
|
27
|
+
- [Receive Firebase Cloud Messaging locally](/__pyric/ui/docs/receive-messages.md): Keep Firebase Cloud Messaging receive code unchanged while tokens and deliveries stay in the local sandbox.
|
|
28
|
+
- [Run Firebase AI Logic locally](/__pyric/ui/docs/run-ai-logic-locally.md): Keep Firebase AI Logic application code unchanged while model responses stay deterministic or come from a local model.
|
|
29
|
+
- [Run an RTDB onValueCreated function locally](/__pyric/ui/docs/pyric-cli-how-to-run-rtdb-onvaluecreated.md): Use pyric dev to run an existing Node firebase-functions/v2/database.onValueCreated export against the same local Realtime Database as your app and Pyric Studio. The function source keeps its production imports and needs no credentials or deployment.
|
|
30
|
+
- [Choose a Firebase database](/__pyric/ui/docs/which-data-service.md): Make the Firestore or Realtime Database decision from Firebase's production model, then check the corresponding Pyric boundary.
|
|
31
|
+
|
|
32
|
+
## Inspect and correct
|
|
33
|
+
|
|
34
|
+
- [Watch every read, write, and denial live](/__pyric/ui/docs/see-whats-happening.md): See every operation your backend performs, with its rules verdict, without writing a log line.
|
|
35
|
+
- [Read a Security Rules denial](/__pyric/ui/docs/read-a-denial.md): See which rule denied an operation, on what path, with what data, the moment it happens.
|
|
36
|
+
- [Seed, snapshot, reset, and replay the backend](/__pyric/ui/docs/shape-your-data.md): Put the backend in any state you want, capture the good ones, and get them back on demand.
|
|
37
|
+
- [Watch the agent work, then check it](/__pyric/ui/docs/watch-and-review.md): See every operation your agent performs, live, with the verdict that decided it.
|
|
38
|
+
- [Prove a user can access only their own data](/__pyric/ui/docs/secure-it-with-rules.md): Write a rule, simulate a request against it, read the verdict, and deploy knowing what it allows.
|
|
39
|
+
- [Simulate and lint Security Rules before deployment](/__pyric/ui/docs/simulate-and-lint.md): Get a rules verdict and a lint report locally, before production answers with an unexplained 400 or 403.
|
|
40
|
+
- [Apply production-tested Firestore Rules patterns](/__pyric/ui/docs/rules-patterns.md): Learn the five moves that turn "rules can't do that" into a ruleset that deploys.
|
|
41
|
+
- [Build Firestore Rules from tested modules](/__pyric/ui/docs/rules-standard-library.md): Compose security rules from tested modules, with an import system that compiles away before Firebase ever sees it.
|
|
42
|
+
- [Write Realtime Database rules in TypeScript](/__pyric/ui/docs/rtdb-rules-in-typescript.md): Compose RTDB rules from typed constraints, prove them in-process, and deploy the compiled JSON.
|
|
43
|
+
- [Firestore Rules compiler and evaluator limits](/__pyric/ui/docs/firestore-rules-limits.md): Use measured production compiler and evaluator limits before a ruleset reaches Firebase.
|
|
44
|
+
- [Case studies in pure security rules](/__pyric/ui/docs/whats-possible.md): See working, deployed rulesets that enforce chess, checkers, connect four, and US tax math, built from the patterns this wing teaches.
|
|
45
|
+
- [Work with the sandbox through an agent](/__pyric/ui/docs/what-your-agent-can-do.md): Every backend capability, callable as a tool: inspect, query, simulate, shape, ship, verify.
|
|
46
|
+
- [Give an agent methods for Firebase tasks](/__pyric/ui/docs/skills.md): Packaged expert procedures for the problems that need a method, not more tools.
|
|
47
|
+
|
|
48
|
+
## Verify the boundary
|
|
49
|
+
|
|
50
|
+
- [How to verify your rules against a captured session](/__pyric/ui/docs/pyric-cli-how-to-verify-against-a-captured-session.md): pyric verify replays a captured sandbox session against candidate rules and reports service-labelled divergences. It works for Firestore and Realtime Database captures. It answers the question that makes "build in the sandbox, swap to prod" safe: will the rules I'm about to ship break what I built?
|
|
51
|
+
- [Write a Security Rules test suite](/__pyric/ui/docs/write-a-rules-test-suite.md): A suite of allow/deny cases that runs in-process, gates CI, and can escalate to Google's own engine.
|
|
52
|
+
- [Audit Security Rules and data before production](/__pyric/ui/docs/audit-your-rules.md): Get an evidence-backed answer to who can access what, with every serious finding proven by a simulation.
|
|
53
|
+
|
|
54
|
+
## Ship unchanged
|
|
55
|
+
|
|
56
|
+
- [The same code goes live](/__pyric/ui/docs/ship-to-production.md): Deploy rules, indexes, hosting, and functions, and learn what would change before production does.
|
|
57
|
+
- [Prepare the Firebase project](/__pyric/ui/docs/set-up-the-project.md): Configure the real Firebase services that production will use, without confusing project setup with local development.
|
|
58
|
+
|
|
59
|
+
## Conformance
|
|
60
|
+
|
|
61
|
+
- [How does Pyric know it works like Firebase?](/__pyric/ui/docs/how-we-know-it-matches-firebase.md): See the production evidence behind Pyric's conformance claims, the gaps those claims leave open, and the checks to make before shipping.
|
|
62
|
+
- [What's experimental](/__pyric/ui/docs/whats-experimental.md): Know exactly which parts of Pyric are v1 and which are still earning it.
|
|
63
|
+
- [Conformance scores](/__pyric/ui/docs/pyric-conformance-scores.md): Public runtime surface, public type surface, and behavior fidelity answer different questions. How does Pyric know it works like Firebase? explains the evidence and its limits.
|
|
64
|
+
- [pyric/app compatibility matrix](/__pyric/ui/docs/pyric-app-compat.md): <div class="compat-stat"> <p class="compat-stat-surface"><strong>Public surface:</strong> runtime 90% (9/10) <span aria-hidden="true">·</span> types 66.7% (4/6)</p> <p class="compat-stat-figure"> <span class="compat-stat-pct">85.2%</span> <span class="compat-stat-label">of tracked behaviors conform</span> </p> <p class="compat-stat-denom">23 of 27 tracked behaviors</p> <div class="compat-stat-bar" role="img" aria-label="Behavior distribution: 23 conform, 2 documented divergences, 0 bugs, 1 unsupported, 1 unverified."> <span class="compat-stat-seg" data-status="ok" style="flex-grow: 23" aria-hidden="true"></span> <span class="compat-stat-seg" data-status="diverged" style="flex-grow: 2" aria-hidden="true"></span> <span class="compat-stat-seg" data-status="unsupported" style="flex-grow: 1" aria-hidden="true"></span> <span class="compat-stat-seg" data-status="unverified" style="flex-grow: 1" aria-hidden="true"></span> </div> <ul class="compat-stat-key" aria-label="Behavior state counts"> <li class="compat-stat-item"><span class="compat-dot" data-status="ok" aria-hidden="true"></span><span><strong>23</strong> conform</span></li> <li class="compat-stat-item"><span class="compat-dot" data-status="diverged" aria-hidden="true"></span><span><strong>2</strong> documented divergences</span></li> <li class="compat-stat-item"><span class="compat-dot" data-status="bug" aria-hidden="true"></span><span><strong>0</strong> bugs</span></li> <li class="compat-stat-item"><span class="compat-dot" data-status="unsupported" aria-hidden="true"></span><span><strong>1</strong> unsupported</span></li> <li class="compat-stat-item"><span class="compat-dot" data-status="unverified" aria-hidden="true"></span><span><strong>1</strong> unverified</span></li> </ul> <p class="compat-stat-note">Public surface measures whether exports exist. Fidelity measures whether tracked behavior matches production.</p> </div> Read how the axes differ.
|
|
65
|
+
- [pyric/firestore compatibility matrix](/__pyric/ui/docs/pyric-firestore-compat.md): <div class="compat-stat"> <p class="compat-stat-surface"><strong>Public surface:</strong> runtime 63.5% (66/104) <span aria-hidden="true">·</span> types 38.5% (30/78)</p> <p class="compat-stat-figure"> <span class="compat-stat-pct">87.6%</span> <span class="compat-stat-label">of tracked behaviors conform</span> </p> <p class="compat-stat-denom">141 of 161 tracked behaviors</p> <div class="compat-stat-bar" role="img" aria-label="Behavior distribution: 141 conform, 20 documented divergences, 0 bugs, 0 unsupported, 0 unverified."> <span class="compat-stat-seg" data-status="ok" style="flex-grow: 141" aria-hidden="true"></span> <span class="compat-stat-seg" data-status="diverged" style="flex-grow: 20" aria-hidden="true"></span> </div> <ul class="compat-stat-key" aria-label="Behavior state counts"> <li class="compat-stat-item"><span class="compat-dot" data-status="ok" aria-hidden="true"></span><span><strong>141</strong> conform</span></li> <li class="compat-stat-item"><span class="compat-dot" data-status="diverged" aria-hidden="true"></span><span><strong>20</strong> documented divergences</span></li> <li class="compat-stat-item"><span class="compat-dot" data-status="bug" aria-hidden="true"></span><span><strong>0</strong> bugs</span></li> <li class="compat-stat-item"><span class="compat-dot" data-status="unsupported" aria-hidden="true"></span><span><strong>0</strong> unsupported</span></li> <li class="compat-stat-item"><span class="compat-dot" data-status="unverified" aria-hidden="true"></span><span><strong>0</strong> unverified</span></li> </ul> <p class="compat-stat-note">Public surface measures whether exports exist. Fidelity measures whether tracked behavior matches production.</p> </div> Read how the axes differ.
|
|
66
|
+
- [pyric/auth compatibility matrix](/__pyric/ui/docs/pyric-auth-compat.md): <div class="compat-stat"> <p class="compat-stat-surface"><strong>Public surface:</strong> runtime 82.4% (70/85) <span aria-hidden="true">·</span> types 39.1% (25/64)</p> <p class="compat-stat-figure"> <span class="compat-stat-pct">81.8%</span> <span class="compat-stat-label">of tracked behaviors conform</span> </p> <p class="compat-stat-denom">99 of 121 tracked behaviors</p> <div class="compat-stat-bar" role="img" aria-label="Behavior distribution: 99 conform, 16 documented divergences, 0 bugs, 5 unsupported, 1 unverified."> <span class="compat-stat-seg" data-status="ok" style="flex-grow: 99" aria-hidden="true"></span> <span class="compat-stat-seg" data-status="diverged" style="flex-grow: 16" aria-hidden="true"></span> <span class="compat-stat-seg" data-status="unsupported" style="flex-grow: 5" aria-hidden="true"></span> <span class="compat-stat-seg" data-status="unverified" style="flex-grow: 1" aria-hidden="true"></span> </div> <ul class="compat-stat-key" aria-label="Behavior state counts"> <li class="compat-stat-item"><span class="compat-dot" data-status="ok" aria-hidden="true"></span><span><strong>99</strong> conform</span></li> <li class="compat-stat-item"><span class="compat-dot" data-status="diverged" aria-hidden="true"></span><span><strong>16</strong> documented divergences</span></li> <li class="compat-stat-item"><span class="compat-dot" data-status="bug" aria-hidden="true"></span><span><strong>0</strong> bugs</span></li> <li class="compat-stat-item"><span class="compat-dot" data-status="unsupported" aria-hidden="true"></span><span><strong>5</strong> unsupported</span></li> <li class="compat-stat-item"><span class="compat-dot" data-status="unverified" aria-hidden="true"></span><span><strong>1</strong> unverified</span></li> </ul> <p class="compat-stat-note">Public surface measures whether exports exist. Fidelity measures whether tracked behavior matches production.</p> </div> Read how the axes differ.
|
|
67
|
+
- [pyric/database compatibility matrix](/__pyric/ui/docs/pyric-database-compat.md): <div class="compat-stat"> <p class="compat-stat-surface"><strong>Public surface:</strong> runtime 79.5% (35/44) <span aria-hidden="true">·</span> types 53.3% (8/15)</p> <p class="compat-stat-figure"> <span class="compat-stat-pct">76.6%</span> <span class="compat-stat-label">of tracked behaviors conform</span> </p> <p class="compat-stat-denom">154 of 201 tracked behaviors</p> <div class="compat-stat-bar" role="img" aria-label="Behavior distribution: 154 conform, 9 documented divergences, 0 bugs, 26 unsupported, 12 unverified."> <span class="compat-stat-seg" data-status="ok" style="flex-grow: 154" aria-hidden="true"></span> <span class="compat-stat-seg" data-status="diverged" style="flex-grow: 9" aria-hidden="true"></span> <span class="compat-stat-seg" data-status="unsupported" style="flex-grow: 26" aria-hidden="true"></span> <span class="compat-stat-seg" data-status="unverified" style="flex-grow: 12" aria-hidden="true"></span> </div> <ul class="compat-stat-key" aria-label="Behavior state counts"> <li class="compat-stat-item"><span class="compat-dot" data-status="ok" aria-hidden="true"></span><span><strong>154</strong> conform</span></li> <li class="compat-stat-item"><span class="compat-dot" data-status="diverged" aria-hidden="true"></span><span><strong>9</strong> documented divergences</span></li> <li class="compat-stat-item"><span class="compat-dot" data-status="bug" aria-hidden="true"></span><span><strong>0</strong> bugs</span></li> <li class="compat-stat-item"><span class="compat-dot" data-status="unsupported" aria-hidden="true"></span><span><strong>26</strong> unsupported</span></li> <li class="compat-stat-item"><span class="compat-dot" data-status="unverified" aria-hidden="true"></span><span><strong>12</strong> unverified</span></li> </ul> <p class="compat-stat-note">Public surface measures whether exports exist. Fidelity measures whether tracked behavior matches production.</p> </div> Read how the axes differ.
|
|
68
|
+
- [pyric/storage compatibility matrix](/__pyric/ui/docs/pyric-storage-compat.md): <div class="compat-stat"> <p class="compat-stat-surface"><strong>Public surface:</strong> runtime 72.2% (13/18) <span aria-hidden="true">·</span> types 52.9% (9/17)</p> <p class="compat-stat-figure"> <span class="compat-stat-pct">86%</span> <span class="compat-stat-label">of tracked behaviors conform</span> </p> <p class="compat-stat-denom">86 of 100 tracked behaviors</p> <div class="compat-stat-bar" role="img" aria-label="Behavior distribution: 86 conform, 6 documented divergences, 0 bugs, 8 unsupported, 0 unverified."> <span class="compat-stat-seg" data-status="ok" style="flex-grow: 86" aria-hidden="true"></span> <span class="compat-stat-seg" data-status="diverged" style="flex-grow: 6" aria-hidden="true"></span> <span class="compat-stat-seg" data-status="unsupported" style="flex-grow: 8" aria-hidden="true"></span> </div> <ul class="compat-stat-key" aria-label="Behavior state counts"> <li class="compat-stat-item"><span class="compat-dot" data-status="ok" aria-hidden="true"></span><span><strong>86</strong> conform</span></li> <li class="compat-stat-item"><span class="compat-dot" data-status="diverged" aria-hidden="true"></span><span><strong>6</strong> documented divergences</span></li> <li class="compat-stat-item"><span class="compat-dot" data-status="bug" aria-hidden="true"></span><span><strong>0</strong> bugs</span></li> <li class="compat-stat-item"><span class="compat-dot" data-status="unsupported" aria-hidden="true"></span><span><strong>8</strong> unsupported</span></li> <li class="compat-stat-item"><span class="compat-dot" data-status="unverified" aria-hidden="true"></span><span><strong>0</strong> unverified</span></li> </ul> <p class="compat-stat-note">Public surface measures whether exports exist. Fidelity measures whether tracked behavior matches production.</p> </div> Read how the axes differ.
|
|
69
|
+
- [pyric/rules compatibility matrix](/__pyric/ui/docs/pyric-rules-compat.md): <div class="compat-stat"> <p class="compat-stat-surface"><strong>Surface:</strong> native <span>(no upstream Firebase public API; measured against Pyric's own surface)</span></p> <p class="compat-stat-figure"> <span class="compat-stat-pct">86.2%</span> <span class="compat-stat-label">of tracked behaviors conform</span> </p> <p class="compat-stat-denom">50 of 58 tracked behaviors</p> <div class="compat-stat-bar" role="img" aria-label="Behavior distribution: 50 conform, 8 documented divergences, 0 bugs, 0 unsupported, 0 unverified."> <span class="compat-stat-seg" data-status="ok" style="flex-grow: 50" aria-hidden="true"></span> <span class="compat-stat-seg" data-status="diverged" style="flex-grow: 8" aria-hidden="true"></span> </div> <ul class="compat-stat-key" aria-label="Behavior state counts"> <li class="compat-stat-item"><span class="compat-dot" data-status="ok" aria-hidden="true"></span><span><strong>50</strong> conform</span></li> <li class="compat-stat-item"><span class="compat-dot" data-status="diverged" aria-hidden="true"></span><span><strong>8</strong> documented divergences</span></li> <li class="compat-stat-item"><span class="compat-dot" data-status="bug" aria-hidden="true"></span><span><strong>0</strong> bugs</span></li> <li class="compat-stat-item"><span class="compat-dot" data-status="unsupported" aria-hidden="true"></span><span><strong>0</strong> unsupported</span></li> <li class="compat-stat-item"><span class="compat-dot" data-status="unverified" aria-hidden="true"></span><span><strong>0</strong> unverified</span></li> </ul> <p class="compat-stat-note">Public surface measures whether exports exist. Fidelity measures whether tracked behavior matches production.</p> </div> Read how the axes differ.
|
|
70
|
+
- [pyric messaging compatibility matrix](/__pyric/ui/docs/pyric-messaging-compat.md): <div class="compat-stat"> <p class="compat-stat-surface"><strong>Public surface:</strong> runtime 100% (5/5) <span aria-hidden="true">·</span> types 100% (8/8)</p> <p class="compat-stat-figure"> <span class="compat-stat-pct">100%</span> <span class="compat-stat-label">of tracked behaviors conform</span> </p> <p class="compat-stat-denom">17 of 17 tracked behaviors</p> <div class="compat-stat-bar" role="img" aria-label="Behavior distribution: 17 conform, 0 documented divergences, 0 bugs, 0 unsupported, 0 unverified."> <span class="compat-stat-seg" data-status="ok" style="flex-grow: 17" aria-hidden="true"></span> </div> <ul class="compat-stat-key" aria-label="Behavior state counts"> <li class="compat-stat-item"><span class="compat-dot" data-status="ok" aria-hidden="true"></span><span><strong>17</strong> conform</span></li> <li class="compat-stat-item"><span class="compat-dot" data-status="diverged" aria-hidden="true"></span><span><strong>0</strong> documented divergences</span></li> <li class="compat-stat-item"><span class="compat-dot" data-status="bug" aria-hidden="true"></span><span><strong>0</strong> bugs</span></li> <li class="compat-stat-item"><span class="compat-dot" data-status="unsupported" aria-hidden="true"></span><span><strong>0</strong> unsupported</span></li> <li class="compat-stat-item"><span class="compat-dot" data-status="unverified" aria-hidden="true"></span><span><strong>0</strong> unverified</span></li> </ul> <p class="compat-stat-note">Public surface measures whether exports exist. Fidelity measures whether tracked behavior matches production.</p> </div> Read how the axes differ.
|
|
71
|
+
- [pyric/ai compatibility matrix](/__pyric/ui/docs/pyric-ai-compat.md): <div class="compat-stat"> <p class="compat-stat-surface"><strong>Public surface:</strong> runtime 69.1% (38/55) <span aria-hidden="true">·</span> types 66.5% (109/164)</p> <p class="compat-stat-figure"> <span class="compat-stat-pct">92.3%</span> <span class="compat-stat-label">of tracked behaviors conform</span> </p> <p class="compat-stat-denom">72 of 78 tracked behaviors</p> <div class="compat-stat-bar" role="img" aria-label="Behavior distribution: 72 conform, 6 documented divergences, 0 bugs, 0 unsupported, 0 unverified."> <span class="compat-stat-seg" data-status="ok" style="flex-grow: 72" aria-hidden="true"></span> <span class="compat-stat-seg" data-status="diverged" style="flex-grow: 6" aria-hidden="true"></span> </div> <ul class="compat-stat-key" aria-label="Behavior state counts"> <li class="compat-stat-item"><span class="compat-dot" data-status="ok" aria-hidden="true"></span><span><strong>72</strong> conform</span></li> <li class="compat-stat-item"><span class="compat-dot" data-status="diverged" aria-hidden="true"></span><span><strong>6</strong> documented divergences</span></li> <li class="compat-stat-item"><span class="compat-dot" data-status="bug" aria-hidden="true"></span><span><strong>0</strong> bugs</span></li> <li class="compat-stat-item"><span class="compat-dot" data-status="unsupported" aria-hidden="true"></span><span><strong>0</strong> unsupported</span></li> <li class="compat-stat-item"><span class="compat-dot" data-status="unverified" aria-hidden="true"></span><span><strong>0</strong> unverified</span></li> </ul> <p class="compat-stat-note">Public surface measures whether exports exist. Fidelity measures whether tracked behavior matches production.</p> </div> Read how the axes differ.
|
|
72
|
+
- [Firebase Functions RTDB integration compatibility](/__pyric/ui/docs/pyric-cli-functions-rtdb-compat.md): <div class="compat-stat"> <p class="compat-stat-surface"><strong>Surface:</strong> integration contract <span>(unchanged upstream source; breadth is the signed row inventory)</span></p> <p class="compat-stat-figure"> <span class="compat-stat-pct">92.3%</span> <span class="compat-stat-label">of tracked behaviors conform</span> </p> <p class="compat-stat-denom">12 of 13 tracked behaviors</p> <div class="compat-stat-bar" role="img" aria-label="Behavior distribution: 12 conform, 0 documented divergences, 0 bugs, 0 unsupported, 1 unverified."> <span class="compat-stat-seg" data-status="ok" style="flex-grow: 12" aria-hidden="true"></span> <span class="compat-stat-seg" data-status="unverified" style="flex-grow: 1" aria-hidden="true"></span> </div> <ul class="compat-stat-key" aria-label="Behavior state counts"> <li class="compat-stat-item"><span class="compat-dot" data-status="ok" aria-hidden="true"></span><span><strong>12</strong> conform</span></li> <li class="compat-stat-item"><span class="compat-dot" data-status="diverged" aria-hidden="true"></span><span><strong>0</strong> documented divergences</span></li> <li class="compat-stat-item"><span class="compat-dot" data-status="bug" aria-hidden="true"></span><span><strong>0</strong> bugs</span></li> <li class="compat-stat-item"><span class="compat-dot" data-status="unsupported" aria-hidden="true"></span><span><strong>0</strong> unsupported</span></li> <li class="compat-stat-item"><span class="compat-dot" data-status="unverified" aria-hidden="true"></span><span><strong>1</strong> unverified</span></li> </ul> <p class="compat-stat-note">The signed row inventory defines this integration contract. Fidelity measures how many tracked behaviors match production.</p> </div> Read how the axes differ.
|
|
73
|
+
|
|
74
|
+
## @pyric/cli
|
|
75
|
+
|
|
76
|
+
- [@pyric/cli](/__pyric/ui/docs/pyric-cli.md): The pyric CLI and programmatic helpers for local sandbox development, verification, artifact generation, and agent bridges — organised by the four Diátaxis quadrants: learn, do, look up, understand.
|
|
77
|
+
- [Run your firebase-admin app on the pyric sandbox](/__pyric/ui/docs/pyric-cli-tutorials-server-adoption.md): You have an existing Node server that uses firebase-admin: Realtime Database, Auth, Storage. By the end of this tutorial it runs against the pyric in-browser sandbox with zero code changes: no pyric imports, no config edits, no emulator suite, no Firebase project.
|
|
78
|
+
- [Wire Claude Code to your pyric sandbox (manual MCP wiring)](/__pyric/ui/docs/pyric-cli-tutorials-wire-claude-code.md): By the end of this tutorial you will have:
|
|
79
|
+
- [Build a standalone pyric binary](/__pyric/ui/docs/pyric-cli-how-to-build-a-standalone-binary.md): Ship pyric as a single self-contained executable: no Node, no npm, no node_modules. Built with bun build --compile.
|
|
80
|
+
- [How to promote sandbox state to a committable fixture](/__pyric/ui/docs/pyric-cli-how-to-promote-sandbox-state-to-a-fixture.md): You have been working in the sandbox interactively (signing in test users, creating documents) and you want to commit that state so teammates, tests, and CI all start from the same place. pyric snapshot promotes the lived sandbox state into a single fixture file that pyric verify and pyric dev --seed can consume.
|
|
81
|
+
- [Persistence and multi-tab with pyric dev](/__pyric/ui/docs/pyric-cli-how-to-serve-persistence-and-multi-tab.md): When you run pyric dev, your app's firebase/* imports are served from an in-browser pyric sandbox instead of real Firebase. This guide covers how that sandbox keeps (or doesn't keep) data, the flags that control it, and what to do if the SharedWorker that backs it acts up.
|
|
82
|
+
- [Use the Vite plugin (@pyric/cli/vite)](/__pyric/ui/docs/pyric-cli-how-to-use-the-vite-plugin.md): The pyricSandbox() Vite plugin gives a source-driven app the same firebase/ → pyric-sandbox swap that pyric dev gives a static app, without leaving your normal vite dev loop (HMR, source maps, your own router/UI stack). Your app's firebase/ imports stay exactly as written; the plugin swaps them at Vite's module-resolution layer. A plain vite build keeps the real firebase package; only vite dev and an explicit sandbox build (vite build --mode development) run the swap. See Two build flavors.
|
|
83
|
+
- [pyric CLI reference](/__pyric/ui/docs/pyric-cli-reference-cli.md): The complete command + flag surface of the pyric binary. This is the authoritative source for flags, defaults, and exit codes: guides and tutorials link here rather than restating them.
|
|
84
|
+
- [Package exports and resolution](/__pyric/ui/docs/pyric-cli-reference-package-and-resolution.md): Install @pyric/cli as a development dependency. It provides the pyric binary and a small set of explicit programmatic subpaths; the package root is not an import target.
|
|
85
|
+
- [Verify API](/__pyric/ui/docs/pyric-cli-reference-verify.md): @pyric/cli/verify verifies captured sandbox sessions from code. It uses the same fixture format and replay behavior as pyric verify.
|
|
86
|
+
- [@pyric/cli/bridge](/__pyric/ui/docs/pyric-cli-bridge.md): Bridge between an external MCP client (Claude Code, Cursor) and a browser-resident pyric sandbox.
|
|
87
|
+
|
|
88
|
+
## pyric
|
|
89
|
+
|
|
90
|
+
- [The versioning and compatibility policy](/__pyric/ui/docs/pyric-explanation-versioning-and-compatibility.md): Pyric mirrors Firebase's observable behavior. Users need one honest way to ask "which Firebase does this pyric behave like," and pyric needs one honest way to answer. This document is that answer. It defines what the claim means, where it appears, and what has to be true before it can move.
|
|
91
|
+
|
|
92
|
+
## pyric / firestore
|
|
93
|
+
|
|
94
|
+
- [pyric/firestore](/__pyric/ui/docs/pyric-firestore.md): pyric/firestore is the sandbox implementation of Firebase's modular Firestore surface. It provides reads, writes, queries, listeners, transactions, batches, converters, aggregates, sentinels, and local scalar value classes without loading the production Firebase SDK.
|
|
95
|
+
- [Write a sandbox-backed demo](/__pyric/ui/docs/pyric-firestore-tutorials-01-write-a-sandbox-demo.md): Build a tiny notes app with pyric/firestore against the sandbox backend. By the end you'll have set rules, seeded data, written, read, watched a query, and seen a denial, all in-process.
|
|
96
|
+
- [Run canonical imports against Firebase](/__pyric/ui/docs/pyric-firestore-tutorials-02-swap-to-prod-backend.md): In this lesson you will take the canonical-import demo from the previous tutorial, remove sandbox activation, and observe Firebase becoming the backend without changing the Firestore calls.
|
|
97
|
+
- [How to run an existing Firebase application in the Firestore sandbox](/__pyric/ui/docs/pyric-firestore-how-to-migrate-from-firebase-firestore.md): Keep the application's Firebase imports unchanged. Add a Pyric activation seam around the application instead of replacing imports with pyric/firestore.
|
|
98
|
+
- [How to select sandbox or production Firestore](/__pyric/ui/docs/pyric-firestore-how-to-pick-a-backend.md): Keep canonical Firebase imports in application source and select the backend by activating, or not activating, Pyric's package-resolution seam.
|
|
99
|
+
- [How to run a transaction](/__pyric/ui/docs/pyric-firestore-how-to-run-a-transaction.md): Read a document and write based on its current value, atomically, with runTransaction. It works the same against either backend.
|
|
100
|
+
- [How to use onSnapshot](/__pyric/ui/docs/pyric-firestore-how-to-use-onsnapshot.md): Keep your UI live by registering snapshot listeners on documents and queries, in the modular Web SDK shape.
|
|
101
|
+
- [How to use sandbox-only operations](/__pyric/ui/docs/pyric-firestore-how-to-use-sandbox-ops.md): Load rules, seed data, snapshot documents, and inspect Firestore state in one local sandbox.
|
|
102
|
+
- [Feature matrix: pyric/firestore](/__pyric/ui/docs/pyric-firestore-reference-feature-matrix.md): The generated compatibility matrix is the authoritative list of supported, diverged, unsupported, and unverified Firestore behaviour. It is generated from packages/conformance/registry/firestore.ts; do not maintain a second row-by-row status table here.
|
|
103
|
+
- [getFirestore](/__pyric/ui/docs/pyric-firestore-reference-getfirestore.md): Constructs a Firestore handle owned by the Pyric sandbox mirror.
|
|
104
|
+
- [Query constraints](/__pyric/ui/docs/pyric-firestore-reference-query-constraints.md): pyric/firestore mirrors firebase/firestore's constraint factories. Compose them via query(...).
|
|
105
|
+
- [Sandbox-only operations](/__pyric/ui/docs/pyric-firestore-reference-sandbox-ops.md): Firestore-specific controls are top-level exports from pyric/sandbox/firestore. They operate on the owning local Sandbox, not on a Firestore data-plane handle.
|
|
106
|
+
- [Tool factories](/__pyric/ui/docs/pyric-firestore-reference-tool-factories.md): createFirestoreDataTools(deps) wraps the modular Firestore data plane as @inbrowser/agent tool handlers.
|
|
107
|
+
- [Why rules tooling lives on a sibling subpath](/__pyric/ui/docs/pyric-firestore-explanation-rules-tooling-is-separate.md): pyric/firestore is the Firebase-compatible sandbox data plane. The rules parser, linter, simulator, validator, modules resolver, and value wrappers live under pyric/rules. Firestore-specific sandbox controls live under pyric/sandbox/firestore. The separation preserves clear package ownership.
|
|
108
|
+
- [The TARGET_SYMBOL opacity contract](/__pyric/ui/docs/pyric-firestore-explanation-target-symbol-opacity.md): The public Firestore type has exactly one property:
|
|
109
|
+
- [Why package resolution owns backend selection](/__pyric/ui/docs/pyric-firestore-explanation-two-backends-one-surface.md): Pyric and Firebase expose the same canonical module name in different environments. The environment chooses the package before either implementation loads:
|
|
110
|
+
|
|
111
|
+
## pyric / rules
|
|
112
|
+
|
|
113
|
+
- [pyric/rules](/__pyric/ui/docs/pyric-rules.md): Pyric-native Firestore Security Rules tooling. A browser-safe parser, linter, modules resolver, in-process simulator, and Rules Test API client, packaged so the data-plane swap-in (pyric/firestore) stays minimal.
|
|
114
|
+
- [How to compare two rulesets for weakening](/__pyric/ui/docs/pyric-rules-how-to-compare-rulesets-for-weakening.md): When you ship a rules change, the most dangerous mistake is silently removing a security predicate to make a failing test pass. Here's how to catch that before it deploys.
|
|
115
|
+
- [How to inspect rules through the AST](/__pyric/ui/docs/pyric-rules-how-to-inspect-rules-via-the-ast.md): Parse rules into a typed AST and walk the tree for custom analysis: bespoke lint rules, generated documentation, or structural facts the built-in linter doesn't surface.
|
|
116
|
+
- [How to lint a rules source](/__pyric/ui/docs/pyric-rules-how-to-lint-rules-source.md): Lint a Firestore rules source, read the result, and gate a deploy on it. Everything here runs in-process.
|
|
117
|
+
- [How to pin request.time for deterministic tests](/__pyric/ui/docs/pyric-rules-how-to-pin-request-time.md): A rule that reads request.time evaluates against wallclock by default. That makes any date-gated test flaky: the same FirestoreCase run twice can decide ALLOW once and DENY the next. Pin time and the verdict is reproducible.
|
|
118
|
+
- [How to register rules tools with an agent](/__pyric/ui/docs/pyric-rules-how-to-register-tools-with-an-agent.md): Expose the rules surface as tool handlers for an @inbrowser/agent registry, so an LLM-driven agent can lint, simulate, and test rules through structured tool calls.
|
|
119
|
+
- [How to resolve 2+modules imports](/__pyric/ui/docs/pyric-rules-how-to-resolve-module-imports.md): Write rules that import reusable helper functions, then resolve them into a standard Firestore rules source.
|
|
120
|
+
- [How to simulate rules locally](/__pyric/ui/docs/pyric-rules-how-to-simulate-rules-locally.md): Evaluate Firestore rules in-process against a list of test cases, without deploying or contacting Google's servers.
|
|
121
|
+
- [How to test rules against the Firebase Rules Test API](/__pyric/ui/docs/pyric-rules-how-to-test-rules-against-firebase.md): Evaluate Firestore rules against Google's live Rules Test API. Use this when the local simulator returns UNSUPPORTED, or when you need parity with what production will actually decide.
|
|
122
|
+
- [AST](/__pyric/ui/docs/pyric-rules-reference-ast.md): The AST is the typed tree produced by parseToAST / parseToASTOrError. These functions and the shapes below are exported from pyric/rules/internal, an internal, unstable surface not covered by the public pyric/rules contract: it may change without notice. Most callers reach the AST through the public front door instead: firestoreRules(source).toJSON() returns the same FirestoreRules tree without touching the parser directly. This page documents the shape for callers (and tooling like Inspect rules via the AST) that need to walk it directly.
|
|
123
|
+
- [Firestore rules gaps: where pyric and Firebase disagree](/__pyric/ui/docs/pyric-rules-reference-conformance-gaps.md): A gap is a rule that gets one answer from pyric and a different answer from Firebase. You write the rule once. pyric allows the request and Firebase denies it, or the other way round. The rule you tested is not the rule you shipped.
|
|
124
|
+
- [Errors](/__pyric/ui/docs/pyric-rules-reference-errors.md): pyric/rules throws exactly three error classes on its public surface. Everything below the public surface (the parser, evaluator, and handlers on pyric/rules/internal) has its own error vocabulary; those types still apply, but only to the internal engine now.
|
|
125
|
+
- [Lint rules](/__pyric/ui/docs/pyric-rules-reference-lint-rules.md): This page lists every lint rule emitted by lint(source) and firestoreRules(source).lint(), both from pyric/rules. Each rule surfaces as a RuleIssue with origin: 'lint' and code set to the rule name below. Each entry gives the rule code, default severity, what it detects, and the suggested fix.
|
|
126
|
+
- [Simulator context and result states](/__pyric/ui/docs/pyric-rules-reference-simulator-context.md): The simulator evaluates expressions against a SimulationContext. This page describes its shape and the three result states a test case can land in. SimulationContext and evaluate are engine-internal, reached through pyric/rules/internal; the public front door is firestoreRules(source).simulate(cases) / .explain(oneCase), which builds and consumes this context internally and returns a CaseResult / Explanation instead. This page documents the internals for callers who need them directly, and to explain what the public result fields mean underneath.
|
|
127
|
+
- [Standard library modules](/__pyric/ui/docs/pyric-rules-reference-stdlib-modules.md): Fifteen modules ship with pyric/rules. Each module is a .rules file living under src/rules/modules/stdlib/; imports resolve automatically without any configuration.
|
|
128
|
+
- [FirestoreCase schema](/__pyric/ui/docs/pyric-rules-reference-test-case-schema.md): FirestoreCase is the unit of work for firestoreRules(source).simulate(cases) and firestoreRules(source).explain(oneCase), both from pyric/rules. It's structurally identical to the engine-internal TestCase type (pyric/rules/internal), re-exported under the public name so callers never need to reach into the engine seam. A Zod schema for the same shape, TestCaseSchema, is available on pyric/rules/internal for callers that want runtime validation; it is not part of the public contract.
|
|
129
|
+
- [Validator findings](/__pyric/ui/docs/pyric-rules-reference-validator-findings.md): The validator runs as part of lint(source) and firestoreRules(source).lint(), both from pyric/rules. Each finding surfaces as a RuleIssue with origin: 'validate'. The validator's own internal shape, ValidationFinding, still exists on pyric/rules/internal (via validateFirestoreRules(ast)) for callers that need the raw four-level severity scale:
|
|
130
|
+
- [Value wrappers](/__pyric/ui/docs/pyric-rules-reference-value-wrappers.md): The simulator and the sentinel expression engine model Firestore's runtime types as TypeScript classes. Every wrapper extends RulesValue, exposes equals, toJSON, and toString, and dispatches method calls via callMethod. These classes are engine-internal, importable from pyric/rules/internal.
|
|
131
|
+
- [Agent failure modes the linter catches](/__pyric/ui/docs/pyric-rules-explanation-agent-failure-modes.md): Most of the linter's compilation and budget rules came from production: we hit the limit, learned the number, encoded it. A separate set of rules came from somewhere different. We watched LLM-driven agents try to write rules and fail in characteristic ways.
|
|
132
|
+
- [Lint vs validate vs simulate vs test](/__pyric/ui/docs/pyric-rules-explanation-lint-vs-validate-vs-simulate-vs-test.md): The package offers four distinct ways to look at a rules source. Their names suggest they overlap. They don't, and the distinction matters when you're building a CI pipeline or an agent loop.
|
|
133
|
+
- [The runtime budget and shared gates](/__pyric/ui/docs/pyric-rules-explanation-runtime-budget-and-shared-gates.md): Firestore rules have two kinds of limits. Compilation limits fail loudly: a 400 INVALID_ARGUMENT at deploy. The runtime evaluation budget fails silently: a 403 PERMISSION_DENIED that looks identical to a denied rule.
|
|
134
|
+
- [The sentinel expression engine ($expr)](/__pyric/ui/docs/pyric-rules-explanation-sentinel-expression-engine.md): Firestore writes are usually concrete: { count: 5, owner: 'alice' }. But sometimes you want a write whose value depends on the document at write time: "increment count by one if it's less than 100", "set lastSeen to the current request time", "merge this list with the existing one and dedupe". The Firestore SDK offers a handful of FieldValue sentinels for the most common cases (increment, arrayUnion, serverTimestamp), but anything outside that small set requires a transaction.
|
|
135
|
+
- [Simulator vs Rules Test API](/__pyric/ui/docs/pyric-rules-explanation-simulator-vs-rules-test-api.md): Two surfaces evaluate rules against test cases. Underneath, they share a case shape and a result vocabulary; they disagree on tradeoffs. Choosing between them is a deliberate decision, not an implementation detail.
|
|
136
|
+
- [The 2+modules extension](/__pyric/ui/docs/pyric-rules-explanation-the-2-plus-modules-extension.md): Firestore rules don't have imports. The DSL has functions, but every function has to be defined in the same file as the match block that calls it. This means real-world rules either repeat the same helper code across files (and drift) or live in one giant file (and become unreadable).
|
|
137
|
+
- [Value wrapper design](/__pyric/ui/docs/pyric-rules-explanation-value-wrappers-design.md): Firestore rules have a small but real type system. request.time is a timestamp. request.path is a path. bytes[0:10] is a bytes value. is duration, is timestamp, is reference are type tests. None of these have first-class JavaScript representations (Timestamp is not a primitive, Path is not a primitive), so the simulator has to model them somehow.
|
|
138
|
+
- [Why this package exists](/__pyric/ui/docs/pyric-rules-explanation-why-this-package-exists.md): Firestore Security Rules is a small DSL that sits between every read and write your app makes. In Pyric we have two distinct needs around that DSL:
|
|
139
|
+
|
|
140
|
+
## pyric / sandbox
|
|
141
|
+
|
|
142
|
+
- [pyric/sandbox](/__pyric/ui/docs/pyric-sandbox.md): An in-process Firebase sandbox, the foundation every other @pyric/* data-plane package plugs into. It holds documents, rules, and listener state for a single isolated environment. It is identity-agnostic by design: every operation flows through a SandboxContext that names the auth identity it should evaluate under.
|
|
143
|
+
- [Your first sandbox session](/__pyric/ui/docs/pyric-sandbox-tutorials-01-your-first-sandbox-session.md): Create a sandbox, deploy a tiny set of rules, write a document as one user, deny a read as another, and inspect the result. By the end you'll have seen the three core ideas (Sandbox, SandboxContext, SandboxError) work together in one short script.
|
|
144
|
+
- [How to run multiple isolated sandboxes in parallel](/__pyric/ui/docs/pyric-sandbox-how-to-multiple-isolated-sandboxes.md): Keep multiple sandboxes alive at once, for fleet tests, multi-tenant simulations, or any workload that needs more than one isolated environment.
|
|
145
|
+
- [How to observe sandbox events](/__pyric/ui/docs/pyric-sandbox-how-to-observe-events.md): One subscription covers everything observable. sandbox.onEvent(cb) fires a SandboxEvent for every rule evaluation, every committed write, every snapshot delivered to a listener callback, every suppressed re-eval, every listener attach / detach / errored, and every reset / dispose boundary. Filter on event.kind to recover whichever slice your code cares about.
|
|
146
|
+
- [How to pick between pyric-admin and pyric/firestore](/__pyric/ui/docs/pyric-sandbox-how-to-pick-an-adapter.md): Two adapter packages sit on top of pyric/sandbox. Both expose Firestore. They look the same from a distance and shape differently up close. This guide helps you pick.
|
|
147
|
+
- [How to replay a captured event stream](/__pyric/ui/docs/pyric-sandbox-how-to-replay-events.md): The sandbox captures every SandboxEvent it emits. Hand the captured stream to replay(events, rules) from pyric/sandbox and the engine re-issues every write against a fresh sandbox, classifying the differences against an optional snapshot of the original state.
|
|
148
|
+
- [How to reset between tests](/__pyric/ui/docs/pyric-sandbox-how-to-reset-between-tests.md): Keep one sandbox alive across many tests without state leakage.
|
|
149
|
+
- [How to seed initial data and rules](/__pyric/ui/docs/pyric-sandbox-how-to-seed-data-and-rules.md): Bring a fresh sandbox up to a known state (rules deployed, documents in place) before your test code runs.
|
|
150
|
+
- [How to switch users with withAuth](/__pyric/ui/docs/pyric-sandbox-how-to-switch-users.md): Evaluate rules under different auth identities against the same sandbox.
|
|
151
|
+
- [How to use admin reads to assert in tests](/__pyric/ui/docs/pyric-sandbox-how-to-use-admin-reads.md): Use sandbox.admin to verify state in tests without writing rules that permit your test fixture.
|
|
152
|
+
- [Divergence](/__pyric/ui/docs/pyric-sandbox-reference-divergences.md): What replay(events, rules, opts, originalState) returns when the replayed state doesn't perfectly match the captured state. A discriminated union; filter on kind to handle each case.
|
|
153
|
+
- [SandboxError codes](/__pyric/ui/docs/pyric-sandbox-reference-error-codes.md): Every error the sandbox raises is a SandboxError carrying a code. Catch with instanceof SandboxError, switch on code.
|
|
154
|
+
- [The /internal adapter protocol](/__pyric/ui/docs/pyric-sandbox-reference-internal-protocol.md): The pyric/sandbox/internal sub-path is the adapter-only surface. Service-adapter packages (pyric-admin, pyric/firestore, future pyric/auth) consume it to reach the underlying LocalEnvironment and related primitives.
|
|
155
|
+
- [Sandbox, SandboxContext, AuthState](/__pyric/ui/docs/pyric-sandbox-reference-sandbox-and-context.md): The three core types. Every other surface in the package builds on them.
|
|
156
|
+
- [SandboxEvent](/__pyric/ui/docs/pyric-sandbox-reference-sandbox-event.md): The discriminated union sandbox.onEvent(cb) delivers. Filter on kind to recover any individual event family. The unified channel replaces the prior onRequest / onDenial / onSnapshotError triplet.
|
|
157
|
+
- [SandboxSnapshot and admin reads](/__pyric/ui/docs/pyric-sandbox-reference-snapshot-and-admin.md): Two related surfaces. SandboxSnapshot is the shape returned by Sandbox.snapshot(). SandboxAdmin is the rule-bypass read surface exposed on Sandbox.admin.
|
|
158
|
+
- [Every operation is a request](/__pyric/ui/docs/pyric-sandbox-explanation-every-op-is-a-request.md): The sandbox started with one observation channel, onDenial, and it surfaced the wrong subset of the truth. We expanded the surface to onRequest, then to a per-channel triplet (onRequest / onDenial / onSnapshotError), and finally collapsed them into one unified onEvent. This page explains the conceptual arc, what it implies about how to think about sandbox traffic, and the trade-offs we made along the way.
|
|
159
|
+
- [Identity is a context, not a sandbox](/__pyric/ui/docs/pyric-sandbox-explanation-identity-is-a-context.md): The most-visible architectural decision in pyric/sandbox is that Sandbox does not carry an identity. To do anything as a user, you derive a SandboxContext via sandbox.withAuth(...). This page explains why.
|
|
160
|
+
- [The /internal adapter protocol](/__pyric/ui/docs/pyric-sandbox-explanation-internal-adapter-protocol.md): pyric/sandbox ships a second sub-path: pyric/sandbox/internal. The public entry stays narrow: Sandbox, SandboxContext, SandboxError, listener channels, lifecycle. Anything an adapter needs but a consumer shouldn't reach for lives behind the /internal gate.
|
|
161
|
+
- [Listener re-evaluation on deployRules](/__pyric/ui/docs/pyric-sandbox-explanation-listener-re-evaluation.md): A snapshot listener attached before a deployRules call gets re-evaluated under the new rules. This is a deliberate departure from production Firestore behaviour. The reasoning matters; this page lays it out.
|
|
162
|
+
- [A local backend, not Firestore offline persistence](/__pyric/ui/docs/pyric-sandbox-explanation-local-backend-vs-firestore-offline.md): A natural worry when you see pyric dev keep data across refreshes and sync across tabs is: "are you reimplementing Firestore's offline + multi-tab persistence?" That feature is one of the largest parts of the Firestore SDK, and reimplementing it would be a massive undertaking.
|
|
163
|
+
- [Why service adapters live in sibling packages](/__pyric/ui/docs/pyric-sandbox-explanation-why-adapters-are-siblings.md): pyric/sandbox doesn't ship the data-plane API. The functions you actually call (getDoc, setDoc, collection, onSnapshot, runTransaction) live in pyric-admin (Admin-SDK-shaped) and pyric/firestore (modular Web-SDK-shaped). This page explains why.
|
|
164
|
+
- [Why this package exists](/__pyric/ui/docs/pyric-sandbox-explanation-why-this-package-exists.md): The Firebase Emulator Suite is a Google-provided tool that runs a local copy of Firestore (and other services) in a sub-process. It's the canonical answer to "I want to test without hitting production." It works, but only in environments that can spawn an emulator. pyric/sandbox is what happens when you can't.
|
|
165
|
+
|
|
166
|
+
## pyric / storage
|
|
167
|
+
|
|
168
|
+
- [pyric/storage](/__pyric/ui/docs/pyric-storage.md): Firebase Storage mirror for the Pyric sandbox. Its modular Web-SDK shape (getStorage, ref, uploadBytes, getBytes, getDownloadURL, listAll, deleteObject) is backed by IndexedDB. Production selection happens outside this package: normal builds resolve firebase/storage, while Pyric development swaps that import to this sandbox mirror.
|
|
169
|
+
- [How to enforce Storage rules](/__pyric/ui/docs/pyric-storage-how-to-enforce-rules.md): This guide shows you how to wire Storage rules into a sandbox-backed handle and watch them gate uploads, reads, and deletes.
|
|
170
|
+
- [How to list and delete objects](/__pyric/ui/docs/pyric-storage-how-to-list-and-delete.md): This guide shows you how to enumerate objects under a prefix and remove them.
|
|
171
|
+
- [Select the Storage runtime](/__pyric/ui/docs/pyric-storage-how-to-switch-backends.md): Keep application imports canonical:
|
|
172
|
+
- [How to test rule expressions independently](/__pyric/ui/docs/pyric-storage-how-to-test-rule-expressions.md): This guide shows you how to verify a Storage rule expression without uploading anything. Useful when iterating on a complex rule or building a rules-test harness.
|
|
173
|
+
- [Storage rules gaps: where pyric and Firebase disagree](/__pyric/ui/docs/pyric-storage-reference-conformance-gaps.md): A gap is a rule that gets one answer from pyric and a different answer from Firebase. You write the rule once. pyric allows the request and Firebase denies it, or the other way round. The rule you tested is not the rule you shipped.
|
|
174
|
+
- [Error codes](/__pyric/ui/docs/pyric-storage-reference-error-codes.md): Operations through pyric/storage throw errors with Firebase-aligned code properties, 'storage/<noun>'. Catch by code.
|
|
175
|
+
- [Storage rules subset](/__pyric/ui/docs/pyric-storage-reference-rules-subset.md): The Storage rules grammar in the v1 scope. Anything not listed is out of scope and will produce a parse error.
|
|
176
|
+
- [StorageOptions](/__pyric/ui/docs/pyric-storage-reference-storage-options.md): The options bag for getStorageSandbox(target, options?).
|
|
177
|
+
- [Implementation scope and deferred features](/__pyric/ui/docs/pyric-storage-explanation-implementation-scope.md): pyric/storage is a deliberate v1 scope. The scope is what the session-archive use case needed; anything beyond that is deferred. This page is the canonical list of what's not in the package and why.
|
|
178
|
+
- [The session-archive driver](/__pyric/ui/docs/pyric-storage-explanation-session-archive-use-case.md): pyric/storage was scoped around one use case: storing completed agent sessions so a user can come back to them later. This page explains the use case and how it shaped the package.
|
|
179
|
+
- [Why IndexedDB](/__pyric/ui/docs/pyric-storage-explanation-why-indexeddb.md): pyric/storage's sandbox backend persists blobs and metadata in IndexedDB. This page explains why, and what the choice implies.
|
|
180
|
+
|
|
181
|
+
## pyric / auth
|
|
182
|
+
|
|
183
|
+
- [pyric/auth](/__pyric/ui/docs/pyric-auth.md): Sandbox-only modular Web SDK Auth mirror. It implements firebase/auth's tree-shakable shape (getAuth, signInAnonymously, signInWithEmailAndPassword, onAuthStateChanged, signInWithPopup, GoogleAuthProvider) in process, with no network.
|
|
184
|
+
- [Feature matrix: pyric/auth coverage of firebase/auth](/__pyric/ui/docs/pyric-auth-reference-feature-matrix.md): Coverage of the modular Web SDK Auth surface when package resolution swaps canonical firebase/auth imports to the Pyric sandbox mirror. Production installs no swap and continues using Firebase.
|
|
185
|
+
- [Sandbox test driver: pyric/auth/sandbox.*](/__pyric/ui/docs/pyric-auth-reference-sandbox-test-driver.md): The sandbox export is pyric/auth's test-driver namespace. It mirrors pyric/firestore's sandbox.setRules / sandbox.seedDocuments pattern: methods exist only for sandbox-backed Auth handles and throw failed-precondition against a prod handle.
|
|
186
|
+
|
|
187
|
+
## pyric / database
|
|
188
|
+
|
|
189
|
+
- [Realtime Database](/__pyric/ui/docs/pyric-database.md): Pyric's Realtime Database surface has three deliberately separate parts:
|
|
190
|
+
- [Author your first RTDB rules with constraints](/__pyric/ui/docs/pyric-database-tutorials-01-author-rtdb-rules-with-constraints.md): This tutorial creates a small Realtime Database rules document in memory, checks it, and simulates one write before you hand the generated JSON to deploy tooling.
|
|
191
|
+
- [API reference: RTDB rules constraints](/__pyric/ui/docs/pyric-database-reference-constraints.md): Typed builders that produce Realtime Database security-rule expressions, plus the assembly layer that places them in a path tree and compiles the tree to Firebase rules JSON. Everything on this page is importable directly from pyric/rules, the public front door. The dedicated constraints-only subpaths that used to exist (pyric/rules/rtdb/constraints, pyric/rules/rtdb-constraints) no longer do; there is one place to import the DSL from now. The engine that compiles and simulates against it (the parser, linter, simulator, and tool factories) lives on the internal pyric/rules/internal/rtdb subpath instead.
|
|
192
|
+
- [RTDB rules tooling](/__pyric/ui/docs/pyric-database-reference-rules-tooling.md): The RTDB constraints DSL (defineRtdbRules and the combinators) is public, re-exported directly from pyric/rules. The engine underneath it (expression parser, validator, linter, compile/simulate/serialize, and replay) is engine-internal, on the pyric/rules/internal/rtdb subpath. That subpath isn't covered by the public pyric/rules contract and may change without notice.
|
|
193
|
+
- [Why RTDB rules authoring and deploy are separate](/__pyric/ui/docs/pyric-database-explanation-rules-authoring-and-deploy-are-separate.md): Pyric keeps Realtime Database rules authoring in pyric/rules (the constraints DSL, public). Shipping those rules to a real Firebase project is a separate concern: use firebase-tools or the Firebase Console.
|
|
194
|
+
|
|
195
|
+
## pyric-admin / app
|
|
196
|
+
|
|
197
|
+
- [pyric-admin/app](/__pyric/ui/docs/pyric-admin-app.md): This subpath owns the sandbox admin app registry. initializeApp returns a branded PyricAdminApp, and every other pyric-admin/* subpath uses that app's sandbox.
|
|
198
|
+
|
|
199
|
+
## pyric-admin / firestore
|
|
200
|
+
|
|
201
|
+
- [pyric-admin](/__pyric/ui/docs/pyric-admin-firestore.md): Admin-SDK-shaped Firestore adapter for the Pyric sandbox. Mirrors firebase-admin/firestore (db.collection(p).doc(p).get(), db.batch(), db.runTransaction()) over pyric/sandbox's in-process substrate. Streaming reads are covered too: a production-shaped onSnapshot ships as both a free function and a chainable .onSnapshot(...) method on refs and queries.
|
|
202
|
+
- [Your first admin-shaped Firestore session](/__pyric/ui/docs/pyric-admin-firestore-tutorials-01-first-admin-session.md): In this tutorial you will use pyric-admin to write, read, batch, transact, and watch documents in a sandbox. By the end you will have seen every piece of the surface in action.
|
|
203
|
+
- [How to run a transaction](/__pyric/ui/docs/pyric-admin-firestore-how-to-run-a-transaction.md): This guide shows you how to use runTransaction on a sandbox Firestore handle.
|
|
204
|
+
- [How to seed and set rules](/__pyric/ui/docs/pyric-admin-firestore-how-to-seed-and-set-rules.md): This guide shows you how to use the sandbox-only setRules and seed methods on the Firestore handle.
|
|
205
|
+
- [How to translate denials with denialContext](/__pyric/ui/docs/pyric-admin-firestore-how-to-translate-denials.md): This guide shows you how to read the structured denial frame attached to every permission-denied error from pyric-admin operations.
|
|
206
|
+
- [How to use onSnapshot to watch a doc or query](/__pyric/ui/docs/pyric-admin-firestore-how-to-use-onsnapshot.md): This guide shows you how to register a snapshot listener and react to changes.
|
|
207
|
+
- [How to write a batch](/__pyric/ui/docs/pyric-admin-firestore-how-to-write-a-batch.md): This guide shows you how to use WriteBatch for atomic multi-document writes.
|
|
208
|
+
- [onSnapshot overloads](/__pyric/ui/docs/pyric-admin-firestore-reference-onsnapshot.md): The Web-SDK-shaped streaming surface. Four overload groups mirror firebase/firestore's onSnapshot exactly, so existing call sites copied from production code typecheck unchanged.
|
|
209
|
+
- [Re-exported types](/__pyric/ui/docs/pyric-admin-firestore-reference-re-exported-types.md): pyric-admin/firestore re-exports a large surface of types from the sandbox admin-firestore implementation and pyric/sandbox so most consumers can import the Firestore admin surface from one place. This page lists what comes from where and why.
|
|
210
|
+
- [SandboxFirestore surface](/__pyric/ui/docs/pyric-admin-firestore-reference-sandbox-firestore.md): The handle returned from getFirestore(ctx). Extends Firestore from firebase-admin/firestore (via the simulator's compat impl) and adds three sandbox-only methods.
|
|
211
|
+
- [Error translation and instanceof SandboxError](/__pyric/ui/docs/pyric-admin-firestore-explanation-error-translation.md): Every operation through a SandboxFirestore handle that fails throws a SandboxError. The underlying simulator throws FirestoreSimError; the admin handle wraps every method, catches those, and re-throws as SandboxError with structured denialContext. This page explains the layer.
|
|
212
|
+
- [Per-call delegate construction](/__pyric/ui/docs/pyric-admin-firestore-explanation-per-call-delegate.md): Every production-shaped method on SandboxFirestore constructs a fresh Firestore delegate from pyric/sandbox/admin-firestore per call. This page explains why and what it costs.
|
|
213
|
+
- [Why mirror the admin SDK shape](/__pyric/ui/docs/pyric-admin-firestore-explanation-why-mirror-admin-shape.md): pyric-admin re-implements the firebase-admin/firestore API. Same chainable style, same method names, same arguments, same return types. The behaviour is sandbox-aware (it talks to pyric/sandbox instead of Google's servers), but the surface is faithful.
|
|
214
|
+
|
|
215
|
+
## pyric-admin / auth
|
|
216
|
+
|
|
217
|
+
- [pyric-admin/auth](/__pyric/ui/docs/pyric-admin-auth.md): Admin-shape Auth with swappable backends. getAuth(app) mirrors firebase-admin/auth and dispatches on the app handle from pyric-admin/app:
|
|
218
|
+
|
|
219
|
+
## pyric-admin / database
|
|
220
|
+
|
|
221
|
+
- [pyric-admin/database](/__pyric/ui/docs/pyric-admin-database.md): Admin-shape Realtime Database with swappable backends. getDatabase(app) mirrors firebase-admin/database and dispatches on the app handle from pyric-admin/app:
|
|
222
|
+
|
|
223
|
+
## pyric-admin / storage
|
|
224
|
+
|
|
225
|
+
- [pyric-admin/storage](/__pyric/ui/docs/pyric-admin-storage.md): Admin-shaped Cloud Storage for a sandbox. getStorage(app) reads the sandbox handle from pyric-admin/app:
|
|
226
|
+
|
|
227
|
+
## @pyric/ui
|
|
228
|
+
|
|
229
|
+
- [@pyric/ui](/__pyric/ui/docs/ui.md): Per-component reference. Each page is one-screen — import, minimal example, props table, common gotchas.
|
|
230
|
+
- [<Badge>](/__pyric/ui/docs/ui-primitives-badge.md): Headless pill / tag. An inline <span> carrying data-pyric-badge and an optional data-pyric-badge-kind so consumers style categories with attribute selectors.
|
|
231
|
+
- [<ConfirmDialog> + useConfirm](/__pyric/ui/docs/ui-primitives-confirmdialog.md): Headless confirmation dialog. Two ways to use:
|
|
232
|
+
- [<CopyButton>](/__pyric/ui/docs/ui-primitives-copybutton.md): Clipboard button that exposes a data-copied attribute on the underlying <button> so consumers can style the success state. Ships no visual treatment of its own.
|
|
233
|
+
- [<JsonView>](/__pyric/ui/docs/ui-primitives-jsonview.md): Headless collapsible JSON tree — one structural step above a <pre> dump. Object/array nodes are independently expandable; there's no editing and no syntax-color theme, just data-pyric-* hooks.
|
|
234
|
+
- [<SegmentedControl>](/__pyric/ui/docs/ui-primitives-segmentedcontrol.md): Headless single-select chip group — reads as one widget, wired as an ARIA radiogroup.
|
|
235
|
+
- [<ToastProvider> + useToast](/__pyric/ui/docs/ui-primitives-toast.md): Imperative toast queue. One <ToastProvider> per scope; any descendant calls useToast() to push toasts. Renders to document.body via portal.
|
|
236
|
+
- [<VirtualList>](/__pyric/ui/docs/ui-primitives-virtuallist.md): Thin wrapper around @tanstack/react-virtual. Renders a scrollable container with absolutely-positioned rows; only the rows in view (plus overscan neighbors) mount to the DOM.
|
|
237
|
+
- [<CollectionList>](/__pyric/ui/docs/ui-firestore-collectionlist.md): Headless list renderer for collections under a parent. The component is purely presentational — fetching is the consumer's job (via useCollectionList or otherwise).
|
|
238
|
+
- [<DeleteWithConfirm>](/__pyric/ui/docs/ui-firestore-deletewithconfirm.md): Composition of useConfirm + useRecursiveDelete for safe deletion of a document or collection with progress tracking.
|
|
239
|
+
- [<DocumentEditor>](/__pyric/ui/docs/ui-firestore-documenteditor.md): Compound component over useDocumentEditor. The hook owns a reducer-backed normalized field tree; the component renders the tree with per-type Edit widgets and add/remove affordances.
|
|
240
|
+
- [<DocumentList>](/__pyric/ui/docs/ui-firestore-documentlist.md): Headless list renderer for documents in a collection. Above virtualizeThreshold (default 100), switches to virtualized rendering via <VirtualList>; below, renders a plain <ul>.
|
|
241
|
+
- [<DocumentPreview>](/__pyric/ui/docs/ui-firestore-documentpreview.md): Read-only renderer for a Firestore document. Iterates top-level fields in lexicographic order; dispatches each value through the field-editor registry on its inferred type.
|
|
242
|
+
- [<QueryBuilder>](/__pyric/ui/docs/ui-firestore-querybuilder.md): Single-level where/orderBy/limit query builder. Composes state into a real Firestore Query via the hook's buildQuery(base).
|
|
243
|
+
- [<ReferencePicker>](/__pyric/ui/docs/ui-firestore-referencepicker.md): Pick a DocumentReference by typing a path OR by browsing the tree. Improvement over firebase-tools-ui's plain text input.
|
|
244
|
+
- [<DeleteSelectionWithConfirm>](/__pyric/ui/docs/ui-storage-deleteselectionwithconfirm.md): Bulk + recursive delete behind the confirm-dialog primitive, with toasts on outcome — the storage counterpart of the Firestore half's <DeleteWithConfirm>. Objects delete via deleteObject; folders walk recursively (default impl: listAll-driven, including the create-folder placeholder sweep). Requires <ConfirmProvider> and <ToastProvider> ancestors.
|
|
245
|
+
- [<ObjectBrowser>](/__pyric/ui/docs/ui-storage-objectbrowser.md): Headless row list for a storage path — folders first, then objects, from useStorageList's entries. Folder rows navigate, object rows select. Above virtualizeThreshold (default 100), switches to virtualized rendering via <VirtualList>; below, renders a plain <ul>.
|
|
246
|
+
- [<ObjectInspector>](/__pyric/ui/docs/ui-storage-objectinspector.md): Headless inspector for one storage object: metadata fields + a content-type-driven preview. Previews come from a registry — image/ (blob-URL <img>) and text/ + application/json (text panel, 256KB cap, JSON pretty-printed) ship built in; consumers extend by prepending their own matchers. Bytes load lazily and only when the matched preview asks; blob URLs are revoked on path change/unmount.
|
|
247
|
+
- [<PathBreadcrumb>](/__pyric/ui/docs/ui-storage-pathbreadcrumb.md): Headless breadcrumb for a storage path. Renders a root crumb plus one crumb per segment; every crumb (including the current one) is a real <button> firing onNavigate with that ancestor's absolute path.
|
|
248
|
+
- [@pyric/ui/storage](/__pyric/ui/docs/ui-storage.md): Headless components + hooks for browsing AND administering Firebase Storage — list/navigate/select (the read path), upload, inspect, metadata editing, and bulk delete (the write path), plus rules-aware affordances (the gate pre-evaluates rules so denied actions warn BEFORE the click). Same one-handle contract as the Firestore half: every hook takes the sandbox FirebaseStorage handle from pyric/storage.
|
|
249
|
+
- [<UploadDropzone>](/__pyric/ui/docs/ui-storage-uploaddropzone.md): Headless drop target for file and folder uploads. Slot-based — the children render the chrome; the component owns the drag wiring, flattens the drop (folders traverse recursively via webkitGetAsEntry), and emits DroppedFile { file, relativePath }[] ready for useObjectUpload.
|
|
250
|
+
- [Rules-aware affordances](/__pyric/ui/docs/ui-storage-rules-aware-affordances.md): The M7 differentiator: the storage UI knows what the rules will say before the click. One hook — useStorageRulesGate — evaluates the current identity against paths with the same evaluator the sandbox enforces with; the components annotate themselves from its verdicts. No emulator-UI equivalent exists.
|
|
251
|
+
- [useStorageRulesGate](/__pyric/ui/docs/ui-storage-usestoragerulesgate.md): Pre-flight rules evaluation — evaluate the current identity against storage paths before the click, so the UI can mark denied affordances (data-pyric-denied rows, disabled-with-reason buttons) instead of letting the user discover a denial through a thrown storage/unauthorized. Built on the pure evaluator exports from pyric/storage (parseStorageRules + evaluateStorageRules) — the same evaluator the sandbox enforces with.
|
|
252
|
+
- [@pyric/ui/traffic](/__pyric/ui/docs/ui-traffic.md): Headless components + hooks for observing rule-eval traffic — a Chrome DevTools Network-panel-style log and a per-rule heatmap, plus stats and grouping. Decoupled from pyric/sandbox: the data hook takes a source function, so the same components work against the sandbox or a production log feed.
|
|
253
|
+
- [<RuleHeatmap>](/__pyric/ui/docs/ui-traffic-ruleheatmap.md): Per-rule fire / deny rollup — one row per rule, busiest first. Pairs with useRuleHeatmap, which does the aggregation.
|
|
254
|
+
- [<TrafficDetail>](/__pyric/ui/docs/ui-traffic-trafficdetail.md): The drill-in panel for one traffic event — header, a consumer classification slot, then JSON sections for auth / request / resource before+after, the reasons list, triggeredBy, and groupId.
|
|
255
|
+
- [<TrafficLog> · <TrafficRow> · <TrafficGroupRow>](/__pyric/ui/docs/ui-traffic-trafficlog.md): The event stream — a Chrome DevTools Network-panel-style list. Below 100 rows it's a plain <ul>; above, it virtualizes via <VirtualList>. Pass items (from useTrafficGroups) instead of events for collapsible group rows.
|
|
256
|
+
- [<TrafficStats>](/__pyric/ui/docs/ui-traffic-trafficstats.md): The aggregation panel — totals, deny rate, and count breakdowns by method / origin / path. Pairs with useTrafficStats.
|
|
257
|
+
- [<AuthSignInHelper> + useAuthFlowHelper](/__pyric/ui/docs/ui-auth-authsigninhelper.md): Emulator-style sign-in helper for sandbox auth: when an app calls signInWithPopup / signInWithRedirect against a sandbox Auth handle, the flow parks on a helper request; this pair renders an account picker + add-account form and settles the app's promise.
|
|
258
|
+
- [Auth users admin — useAuthUsers, <AuthUserList>, <AuthUserForm>](/__pyric/ui/docs/ui-auth-authusers.md): Emulator-style user administration for a sandbox Auth handle: a live users table, an add/edit form with emulator-grade validation, and confirm-gated destructive actions.
|
|
259
|
+
|
|
260
|
+
## API reference
|
|
261
|
+
|
|
262
|
+
- [API reference](/__pyric/ui/docs/api-reference.md): Published declarations for every supported Pyric package entry point.
|
|
263
|
+
- [API reference: create-pyric](/__pyric/ui/docs/create-pyric-reference-api.md): Published declarations for create-pyric.
|
|
264
|
+
- [API reference: pyric-admin/app](/__pyric/ui/docs/pyric-admin-app-reference-api.md): Published declarations for pyric-admin/app.
|
|
265
|
+
- [API reference: pyric-admin/auth](/__pyric/ui/docs/pyric-admin-auth-reference-api.md): Published declarations for pyric-admin/auth.
|
|
266
|
+
- [API reference: pyric-admin/database](/__pyric/ui/docs/pyric-admin-database-reference-api.md): Published declarations for pyric-admin/database.
|
|
267
|
+
- [API reference: pyric-admin/firestore](/__pyric/ui/docs/pyric-admin-firestore-reference-api.md): Published declarations for pyric-admin/firestore.
|
|
268
|
+
- [API reference: pyric-admin/storage](/__pyric/ui/docs/pyric-admin-storage-reference-api.md): Published declarations for pyric-admin/storage.
|
|
269
|
+
- [API reference: pyric/ai](/__pyric/ui/docs/pyric-ai-reference-api.md): Published declarations for pyric/ai.
|
|
270
|
+
- [API reference: pyric/ai/scripting](/__pyric/ui/docs/pyric-ai-scripting-reference-api.md): Published declarations for pyric/ai/scripting.
|
|
271
|
+
- [API reference: pyric/app](/__pyric/ui/docs/pyric-app-reference-api.md): Published declarations for pyric/app.
|
|
272
|
+
- [API reference: pyric/auth](/__pyric/ui/docs/pyric-auth-reference-api.md): Published declarations for pyric/auth.
|
|
273
|
+
- [API reference: @pyric/cli/assurance/browser](/__pyric/ui/docs/pyric-cli-assurance-browser-reference-api.md): Published declarations for @pyric/cli/assurance/browser.
|
|
274
|
+
- [API reference: @pyric/cli/assurance](/__pyric/ui/docs/pyric-cli-assurance-reference-api.md): Published declarations for @pyric/cli/assurance.
|
|
275
|
+
- [API reference: @pyric/cli/bridge/client](/__pyric/ui/docs/pyric-cli-bridge-client-reference-api.md): Published declarations for @pyric/cli/bridge/client.
|
|
276
|
+
- [API reference: @pyric/cli/bridge](/__pyric/ui/docs/pyric-cli-bridge-reference-api.md): Published declarations for @pyric/cli/bridge.
|
|
277
|
+
- [API reference: @pyric/cli/credentials/node](/__pyric/ui/docs/pyric-cli-credentials-node-reference-api.md): Published declarations for @pyric/cli/credentials/node.
|
|
278
|
+
- [API reference: @pyric/cli/discover](/__pyric/ui/docs/pyric-cli-discover-reference-api.md): Published declarations for @pyric/cli/discover.
|
|
279
|
+
- [API reference: @pyric/cli/register](/__pyric/ui/docs/pyric-cli-register-reference-api.md): Published declarations for @pyric/cli/register.
|
|
280
|
+
- [API reference: @pyric/cli/remote](/__pyric/ui/docs/pyric-cli-remote-reference-api.md): Published declarations for @pyric/cli/remote.
|
|
281
|
+
- [API reference: @pyric/cli/serve/worker](/__pyric/ui/docs/pyric-cli-serve-worker-reference-api.md): Published declarations for @pyric/cli/serve/worker.
|
|
282
|
+
- [API reference: @pyric/cli/verify](/__pyric/ui/docs/pyric-cli-verify-reference-api.md): Published declarations for @pyric/cli/verify.
|
|
283
|
+
- [API reference: @pyric/cli/vite](/__pyric/ui/docs/pyric-cli-vite-reference-api.md): Published declarations for @pyric/cli/vite.
|
|
284
|
+
- [API reference: pyric/database](/__pyric/ui/docs/pyric-database-reference-api.md): Published declarations for pyric/database.
|
|
285
|
+
- [API reference: pyric/firestore](/__pyric/ui/docs/pyric-firestore-reference-api.md): Published declarations for pyric/firestore.
|
|
286
|
+
- [API reference: pyric/firestore-values](/__pyric/ui/docs/pyric-firestore-values-reference-api.md): Published declarations for pyric/firestore-values.
|
|
287
|
+
- [API reference: pyric/messaging](/__pyric/ui/docs/pyric-messaging-reference-api.md): Published declarations for pyric/messaging.
|
|
288
|
+
- [API reference: pyric/messaging/sw](/__pyric/ui/docs/pyric-messaging-sw-reference-api.md): Published declarations for pyric/messaging/sw.
|
|
289
|
+
- [API reference: pyric/rules](/__pyric/ui/docs/pyric-rules-reference-api.md): Published declarations for pyric/rules.
|
|
290
|
+
- [API reference: pyric/sandbox/database](/__pyric/ui/docs/pyric-sandbox-database-reference-api.md): Published declarations for pyric/sandbox/database.
|
|
291
|
+
- [API reference: pyric/sandbox/firestore](/__pyric/ui/docs/pyric-sandbox-firestore-reference-api.md): Published declarations for pyric/sandbox/firestore.
|
|
292
|
+
- [API reference: pyric/sandbox](/__pyric/ui/docs/pyric-sandbox-reference-api.md): Published declarations for pyric/sandbox.
|
|
293
|
+
- [API reference: pyric/storage](/__pyric/ui/docs/pyric-storage-reference-api.md): Published declarations for pyric/storage.
|
|
294
|
+
- [API reference: @pyric/ui/agents](/__pyric/ui/docs/pyric-ui-agents-reference-api.md): Published declarations for @pyric/ui/agents.
|
|
295
|
+
- [API reference: @pyric/ui/auth/hooks](/__pyric/ui/docs/pyric-ui-auth-hooks-reference-api.md): Published declarations for @pyric/ui/auth/hooks.
|
|
296
|
+
- [API reference: @pyric/ui/auth](/__pyric/ui/docs/pyric-ui-auth-reference-api.md): Published declarations for @pyric/ui/auth.
|
|
297
|
+
- [API reference: @pyric/ui/events/hooks](/__pyric/ui/docs/pyric-ui-events-hooks-reference-api.md): Published declarations for @pyric/ui/events/hooks.
|
|
298
|
+
- [API reference: @pyric/ui/events](/__pyric/ui/docs/pyric-ui-events-reference-api.md): Published declarations for @pyric/ui/events.
|
|
299
|
+
- [API reference: @pyric/ui/firestore/hooks](/__pyric/ui/docs/pyric-ui-firestore-hooks-reference-api.md): Published declarations for @pyric/ui/firestore/hooks.
|
|
300
|
+
- [API reference: @pyric/ui/firestore](/__pyric/ui/docs/pyric-ui-firestore-reference-api.md): Published declarations for @pyric/ui/firestore.
|
|
301
|
+
- [API reference: @pyric/ui/primitives](/__pyric/ui/docs/pyric-ui-primitives-reference-api.md): Published declarations for @pyric/ui/primitives.
|
|
302
|
+
- [API reference: @pyric/ui/rtdb](/__pyric/ui/docs/pyric-ui-rtdb-reference-api.md): Published declarations for @pyric/ui/rtdb.
|
|
303
|
+
- [API reference: @pyric/ui/rules/hooks](/__pyric/ui/docs/pyric-ui-rules-hooks-reference-api.md): Published declarations for @pyric/ui/rules/hooks.
|
|
304
|
+
- [API reference: @pyric/ui/rules](/__pyric/ui/docs/pyric-ui-rules-reference-api.md): Published declarations for @pyric/ui/rules.
|
|
305
|
+
- [API reference: @pyric/ui/storage/hooks](/__pyric/ui/docs/pyric-ui-storage-hooks-reference-api.md): Published declarations for @pyric/ui/storage/hooks.
|
|
306
|
+
- [API reference: @pyric/ui/storage](/__pyric/ui/docs/pyric-ui-storage-reference-api.md): Published declarations for @pyric/ui/storage.
|
|
307
|
+
- [API reference: @pyric/ui/traffic/hooks](/__pyric/ui/docs/pyric-ui-traffic-hooks-reference-api.md): Published declarations for @pyric/ui/traffic/hooks.
|
|
308
|
+
- [API reference: @pyric/ui/traffic](/__pyric/ui/docs/pyric-ui-traffic-reference-api.md): Published declarations for @pyric/ui/traffic.
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { getAI as pyricGetAI } from 'pyric/ai';
|
|
2
|
+
export { AIError, AIErrorCode, Backend, BackendType, GoogleAIBackend, VertexAIBackend, AIModel, ChatSession, ChatSessionBase, GenerativeModel, AnyOfSchema, ArraySchema, BooleanSchema, IntegerSchema, NumberSchema, ObjectSchema, Schema, StringSchema, BlockReason, FinishReason, FunctionCallingMode, HarmBlockMethod, HarmBlockThreshold, HarmCategory, HarmProbability, HarmSeverity, ImageConfigAspectRatio, ImageConfigImageSize, Language, Modality, Outcome, POSSIBLE_ROLES, ResponseModality, SchemaType, ThinkingLevel, URLRetrievalStatus, getGenerativeModel, } from 'pyric/ai';
|
|
3
|
+
export declare const getAI: typeof pyricGetAI;
|
|
4
|
+
//# sourceMappingURL=ai.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../../src/serve/entries/ai.ts"],"names":[],"mappings":"AA6BA,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,UAAU,CAAC;AAU/C,OAAO,EACL,OAAO,EACP,WAAW,EACX,OAAO,EACP,WAAW,EACX,eAAe,EACf,eAAe,EACf,OAAO,EACP,WAAW,EACX,eAAe,EACf,eAAe,EACf,WAAW,EACX,WAAW,EACX,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,sBAAsB,EACtB,oBAAoB,EACpB,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,UAAU,CAAC;AA+IlB,eAAO,MAAM,KAAK,EA+Bb,OAAO,UAAU,CAAC"}
|