@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,2355 @@
|
|
|
1
|
+
<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>API reference: @pyric/cli/discover · Pyric Studio</title><meta name="description" content="Published declarations for @pyric/cli/discover."><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet"><link rel="stylesheet" href="/__pyric/ui/_astro/_slug_.CQYSemvw.css"></head> <body> <header class="studio__bar"> <div class="studio__bar-inner"> <a class="studio__brand" href="/__pyric/ui/" aria-label="Pyric Studio">Pyric</a> <nav class="studio__nav" aria-label="Studio tabs"> <a class="studio__nav-tab" href="/__pyric/ui/"> Home </a><a class="studio__nav-tab" href="/__pyric/ui/firestore"> Firestore </a><a class="studio__nav-tab" href="/__pyric/ui/auth"> Auth </a><a class="studio__nav-tab" href="/__pyric/ui/rtdb"> RTDB </a><a class="studio__nav-tab" href="/__pyric/ui/storage"> Storage </a><a class="studio__nav-tab" href="/__pyric/ui/traffic"> Traffic </a><a class="studio__nav-tab" href="/__pyric/ui/settings"> Settings </a><a class="studio__nav-tab" href="/__pyric/ui/docs" aria-current="page"> Docs </a> </nav> </div> </header> <div class="docs-shell"> <details class="docs-nav-drawer"> <summary>Navigate</summary> <nav class="docs-nav" aria-label="Documentation"> <div class="docs-search" data-index-url="/__pyric/ui/docs/index.json"> <div class="docs-search-field"> <svg class="docs-search-icon" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"> <path d="M11.5 11.5 15 15M13 7A6 6 0 1 1 1 7a6 6 0 0 1 12 0Z" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"></path> </svg> <input type="text" class="docs-search-input" placeholder="Search docs" aria-label="Search docs" autocomplete="off" spellcheck="false"> <kbd class="docs-search-kbd">⌘K</kbd> </div> <ul class="docs-search-results" hidden></ul> </div> <script type="module">let i=null;function d(t){return i||(i=fetch(t).then(e=>e.json())),i}function l(t,e){return t.title.toLowerCase().includes(e)||t.excerpt.toLowerCase().includes(e)?!0:t.headings.some(r=>r.text.toLowerCase().includes(e))}function u(t,e,r){if(e.innerHTML="",t.length===0){e.hidden=!1;{const n=document.createElement("li");n.className="docs-search-empty",n.textContent="No matches",e.appendChild(n)}return}e.hidden=!1;for(const n of t.slice(0,8)){const s=document.createElement("li"),c=document.createElement("a");c.href=n.path;const o=document.createElement("span");o.className="docs-search-result-title",o.textContent=n.title;const a=document.createElement("span");a.className="docs-search-result-meta",a.textContent=[n.group,n.section].filter(Boolean).join(" / "),c.append(o,a),s.appendChild(c),e.appendChild(s)}}document.querySelectorAll(".docs-search").forEach(t=>{const e=t.dataset.indexUrl,r=t.querySelector(".docs-search-input"),n=t.querySelector(".docs-search-results");r.addEventListener("input",async()=>{const s=r.value.trim().toLowerCase();if(!s){n.hidden=!0,n.innerHTML="";return}const{pages:c}=await d(e);r.value.trim().toLowerCase()===s&&u(c.filter(o=>l(o,s)),n)}),r.addEventListener("focus",()=>{d(e),n.childElementCount>0&&(n.hidden=!1)}),r.addEventListener("keydown",s=>{s.key==="Escape"&&(r.value="",n.hidden=!0,n.innerHTML="",r.blur())}),r.addEventListener("blur",()=>{window.setTimeout(()=>{n.hidden=!0},150)})});document.addEventListener("keydown",t=>{if(!(t.metaKey||t.ctrlKey)||t.key.toLowerCase()!=="k")return;const e=[...document.querySelectorAll(".docs-search-input")].find(r=>r.offsetParent!==null);e&&(t.preventDefault(),e.focus(),e.select())});</script> <a class="docs-nav-toplink" href="/__pyric/ui/docs/overview/"> Overview </a><details class="docs-nav-group"> <summary>Run locally</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/start-building/"> Quickstart </a> </li><li> <a href="/__pyric/ui/docs/how-the-swap-works/"> How the swap works </a> </li><li> <a href="/__pyric/ui/docs/set-up-your-agent/"> Connect an agent </a> </li><li> <a href="/__pyric/ui/docs/test-in-node/"> Test in Node </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Develop with Firebase APIs</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/sign-in-and-manage-users/"> Sign in and manage users </a> </li><li> <a href="/__pyric/ui/docs/store-and-query-data/"> Store and query data </a> </li><li> <a href="/__pyric/ui/docs/sync-realtime-data/"> Sync realtime data </a> </li><li> <a href="/__pyric/ui/docs/store-files/"> Store files </a> </li><li> <a href="/__pyric/ui/docs/receive-messages/"> Receive messages </a> </li><li> <a href="/__pyric/ui/docs/run-ai-logic-locally/"> Run AI Logic locally </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-how-to-run-rtdb-onvaluecreated/"> Run an RTDB function locally </a> </li><li> <a href="/__pyric/ui/docs/which-data-service/"> Which data service? </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Inspect and correct</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <h2 class="docs-nav-heading"> Inspect the sandbox </h2> <ul> <li> <a href="/__pyric/ui/docs/see-whats-happening/"> Traffic & rule verdicts </a> </li><li> <a href="/__pyric/ui/docs/read-a-denial/"> Read a denial and understand it </a> </li><li> <a href="/__pyric/ui/docs/shape-your-data/"> Seed, snapshot, replay </a> </li><li> <a href="/__pyric/ui/docs/watch-and-review/"> Review agent activity </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading"> Correct Security Rules </h2> <ul> <li> <a href="/__pyric/ui/docs/secure-it-with-rules/"> Security Rules </a> </li><li> <a href="/__pyric/ui/docs/simulate-and-lint/"> Simulate and lint before you deploy </a> </li><li> <a href="/__pyric/ui/docs/rules-patterns/"> Rules patterns </a> </li><li> <a href="/__pyric/ui/docs/rules-standard-library/"> The rules standard library </a> </li><li> <a href="/__pyric/ui/docs/rtdb-rules-in-typescript/"> RTDB rules in TypeScript </a> </li><li> <a href="/__pyric/ui/docs/firestore-rules-limits/"> Rules limits </a> </li><li> <a href="/__pyric/ui/docs/whats-possible/"> Case studies </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading"> Work with an agent </h2> <ul> <li> <a href="/__pyric/ui/docs/what-your-agent-can-do/"> Work through an agent </a> </li><li> <a href="/__pyric/ui/docs/skills/"> Agent skills </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Verify the boundary</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/pyric-cli-how-to-verify-against-a-captured-session/"> Verify a captured session </a> </li><li> <a href="/__pyric/ui/docs/write-a-rules-test-suite/"> Write a rules test suite </a> </li><li> <a href="/__pyric/ui/docs/audit-your-rules/"> Audit rules and data </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Ship unchanged</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/ship-to-production/"> Ship to production </a> </li><li> <a href="/__pyric/ui/docs/set-up-the-project/"> Set up the Firebase project </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Conformance</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/how-we-know-it-matches-firebase/"> Conformance </a> </li><li> <a href="/__pyric/ui/docs/whats-experimental/"> What's experimental </a> </li><li> <a href="/__pyric/ui/docs/pyric-conformance-scores/"> Conformance scores </a> </li><li> <a href="/__pyric/ui/docs/pyric-app-compat/"> App </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore-compat/"> Firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-auth-compat/"> Auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-database-compat/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/pyric-storage-compat/"> Storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-rules-compat/"> Rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-compat/"> Messaging </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-compat/"> AI Logic </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-functions-rtdb-compat/"> Functions · RTDB </a> </li> </ul> </div> </div> </details> <details class="docs-nav-group" open> <summary>Reference</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/pyric-cli/"> @pyric/cli </a> </li><li> <a href="/__pyric/ui/docs/pyric-explanation-versioning-and-compatibility/"> pyric </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore/"> pyric / firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-rules/"> pyric / rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox/"> pyric / sandbox </a> </li><li> <a href="/__pyric/ui/docs/pyric-storage/"> pyric / storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-auth/"> pyric / auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-database/"> pyric / database </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-app/"> pyric-admin / app </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-firestore/"> pyric-admin / firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-auth/"> pyric-admin / auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-database/"> pyric-admin / database </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-storage/"> pyric-admin / storage </a> </li><li> <a href="/__pyric/ui/docs/ui/"> @pyric/ui </a> </li><li> <a href="/__pyric/ui/docs/api-reference/" aria-current="true"> API reference </a> </li> </ul> </div> </div> </details> </nav> </details> <nav class="docs-nav" aria-label="Documentation"> <div class="docs-search" data-index-url="/__pyric/ui/docs/index.json"> <div class="docs-search-field"> <svg class="docs-search-icon" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"> <path d="M11.5 11.5 15 15M13 7A6 6 0 1 1 1 7a6 6 0 0 1 12 0Z" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"></path> </svg> <input type="text" class="docs-search-input" placeholder="Search docs" aria-label="Search docs" autocomplete="off" spellcheck="false"> <kbd class="docs-search-kbd">⌘K</kbd> </div> <ul class="docs-search-results" hidden></ul> </div> <a class="docs-nav-toplink" href="/__pyric/ui/docs/overview/" id="nav-group-overview"> Overview </a><details class="docs-nav-group" id="nav-group-run-locally"> <summary>Run locally</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/start-building/"> Quickstart </a> </li><li> <a href="/__pyric/ui/docs/how-the-swap-works/"> How the swap works </a> </li><li> <a href="/__pyric/ui/docs/set-up-your-agent/"> Connect an agent </a> </li><li> <a href="/__pyric/ui/docs/test-in-node/"> Test in Node </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-develop-with-firebase-apis"> <summary>Develop with Firebase APIs</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/sign-in-and-manage-users/"> Sign in and manage users </a> </li><li> <a href="/__pyric/ui/docs/store-and-query-data/"> Store and query data </a> </li><li> <a href="/__pyric/ui/docs/sync-realtime-data/"> Sync realtime data </a> </li><li> <a href="/__pyric/ui/docs/store-files/"> Store files </a> </li><li> <a href="/__pyric/ui/docs/receive-messages/"> Receive messages </a> </li><li> <a href="/__pyric/ui/docs/run-ai-logic-locally/"> Run AI Logic locally </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-how-to-run-rtdb-onvaluecreated/"> Run an RTDB function locally </a> </li><li> <a href="/__pyric/ui/docs/which-data-service/"> Which data service? </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-inspect-and-correct"> <summary>Inspect and correct</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <h2 class="docs-nav-heading" id="nav-section-inspect-and-correct-inspect-the-sandbox"> Inspect the sandbox </h2> <ul> <li> <a href="/__pyric/ui/docs/see-whats-happening/"> Traffic & rule verdicts </a> </li><li> <a href="/__pyric/ui/docs/read-a-denial/"> Read a denial and understand it </a> </li><li> <a href="/__pyric/ui/docs/shape-your-data/"> Seed, snapshot, replay </a> </li><li> <a href="/__pyric/ui/docs/watch-and-review/"> Review agent activity </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading" id="nav-section-inspect-and-correct-correct-security-rules"> Correct Security Rules </h2> <ul> <li> <a href="/__pyric/ui/docs/secure-it-with-rules/"> Security Rules </a> </li><li> <a href="/__pyric/ui/docs/simulate-and-lint/"> Simulate and lint before you deploy </a> </li><li> <a href="/__pyric/ui/docs/rules-patterns/"> Rules patterns </a> </li><li> <a href="/__pyric/ui/docs/rules-standard-library/"> The rules standard library </a> </li><li> <a href="/__pyric/ui/docs/rtdb-rules-in-typescript/"> RTDB rules in TypeScript </a> </li><li> <a href="/__pyric/ui/docs/firestore-rules-limits/"> Rules limits </a> </li><li> <a href="/__pyric/ui/docs/whats-possible/"> Case studies </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading" id="nav-section-inspect-and-correct-work-with-an-agent"> Work with an agent </h2> <ul> <li> <a href="/__pyric/ui/docs/what-your-agent-can-do/"> Work through an agent </a> </li><li> <a href="/__pyric/ui/docs/skills/"> Agent skills </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-verify-the-boundary"> <summary>Verify the boundary</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/pyric-cli-how-to-verify-against-a-captured-session/"> Verify a captured session </a> </li><li> <a href="/__pyric/ui/docs/write-a-rules-test-suite/"> Write a rules test suite </a> </li><li> <a href="/__pyric/ui/docs/audit-your-rules/"> Audit rules and data </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-ship-unchanged"> <summary>Ship unchanged</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/ship-to-production/"> Ship to production </a> </li><li> <a href="/__pyric/ui/docs/set-up-the-project/"> Set up the Firebase project </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-conformance"> <summary>Conformance</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/how-we-know-it-matches-firebase/"> Conformance </a> </li><li> <a href="/__pyric/ui/docs/whats-experimental/"> What's experimental </a> </li><li> <a href="/__pyric/ui/docs/pyric-conformance-scores/"> Conformance scores </a> </li><li> <a href="/__pyric/ui/docs/pyric-app-compat/"> App </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore-compat/"> Firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-auth-compat/"> Auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-database-compat/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/pyric-storage-compat/"> Storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-rules-compat/"> Rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-compat/"> Messaging </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-compat/"> AI Logic </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-functions-rtdb-compat/"> Functions · RTDB </a> </li> </ul> </div> </div> </details> <details class="docs-nav-group" id="nav-group-reference" open> <summary>Reference</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/pyric-cli/"> @pyric/cli </a> </li><li> <a href="/__pyric/ui/docs/pyric-explanation-versioning-and-compatibility/"> pyric </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore/"> pyric / firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-rules/"> pyric / rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox/"> pyric / sandbox </a> </li><li> <a href="/__pyric/ui/docs/pyric-storage/"> pyric / storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-auth/"> pyric / auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-database/"> pyric / database </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-app/"> pyric-admin / app </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-firestore/"> pyric-admin / firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-auth/"> pyric-admin / auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-database/"> pyric-admin / database </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-storage/"> pyric-admin / storage </a> </li><li> <a href="/__pyric/ui/docs/ui/"> @pyric/ui </a> </li><li> <a href="/__pyric/ui/docs/api-reference/" aria-current="true"> API reference </a> </li> </ul> </div> </div> </details> </nav> <main class="doc-main"> <nav class="docs-breadcrumbs" aria-label="Breadcrumb"> <ol> <li> <a href="/__pyric/ui/docs/api-reference/">API reference</a> </li><li> <span class="docs-breadcrumbs-sep" aria-hidden="true">/</span> <span>@pyric/cli</span> </li><li> <span class="docs-breadcrumbs-sep" aria-hidden="true">/</span> <span aria-current="page">@pyric/cli/discover</span> </li> </ol> </nav> <header class="api-reference-header"> <p class="api-reference-kicker">API reference</p> <h1><code>@pyric/cli/discover</code></h1> <p class="api-reference-meta"> 65 published symbols from <code>@pyric/cli</code> </p> <p class="api-reference-source">
|
|
2
|
+
Generated from the TypeScript declarations shipped at this import path.
|
|
3
|
+
</p> </header> <article class="prose api-reference-body"> <!-- Generated from published package declarations via TypeDoc. Do not edit by hand; run bun run docs:api:generate. -->
|
|
4
|
+
<h2 id="classes">Classes</h2>
|
|
5
|
+
<p><a id="localenvironmentcrawleradapter"></a></p>
|
|
6
|
+
<h3 id="localenvironmentcrawleradapter">LocalEnvironmentCrawlerAdapter</h3>
|
|
7
|
+
<p>Wrap a LocalEnvironment as a Firestore root that satisfies
|
|
8
|
+
the discover/crawler + find-collection-group contracts.</p>
|
|
9
|
+
<h4 id="implements">Implements</h4>
|
|
10
|
+
<ul>
|
|
11
|
+
<li><a href="#crawlerfirestore"><code>CrawlerFirestore</code></a></li>
|
|
12
|
+
<li><a href="#collectiongroupcapablefirestore"><code>CollectionGroupCapableFirestore</code></a></li>
|
|
13
|
+
</ul>
|
|
14
|
+
<h4 id="constructors">Constructors</h4>
|
|
15
|
+
<p><a id="constructor"></a></p>
|
|
16
|
+
<h5 id="constructor">Constructor</h5>
|
|
17
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">new</span><span style="color:#61AFEF"> LocalEnvironmentCrawlerAdapter</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">env</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">LocalEnvironment</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">LocalEnvironmentCrawlerAdapter</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
18
|
+
<h6 id="parameters">Parameters</h6>
|
|
19
|
+
<div class="table-scroll">
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>env</code></td><td align="left"><code>LocalEnvironment</code></td></tr></tbody></table></div>
|
|
33
|
+
<h6 id="returns">Returns</h6>
|
|
34
|
+
<p><a href="#localenvironmentcrawleradapter"><code>LocalEnvironmentCrawlerAdapter</code></a></p>
|
|
35
|
+
<h4 id="methods">Methods</h4>
|
|
36
|
+
<p><a id="collection"></a></p>
|
|
37
|
+
<h5 id="collection">collection()</h5>
|
|
38
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#61AFEF">collection</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">path</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">CrawlerCollectionRef</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
39
|
+
<h6 id="parameters-1">Parameters</h6>
|
|
40
|
+
<div class="table-scroll">
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>path</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
54
|
+
<h6 id="returns-1">Returns</h6>
|
|
55
|
+
<p><a href="#crawlercollectionref"><code>CrawlerCollectionRef</code></a></p>
|
|
56
|
+
<h6 id="implementation-of">Implementation of</h6>
|
|
57
|
+
<p><a href="#crawlerfirestore"><code>CrawlerFirestore</code></a>.<a href="#collection-2"><code>collection</code></a></p>
|
|
58
|
+
<p><a id="collectiongroup"></a></p>
|
|
59
|
+
<h5 id="collectiongroup">collectionGroup()</h5>
|
|
60
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#61AFEF">collectionGroup</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">collectionId</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">CollectionGroupQuery</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
61
|
+
<h6 id="parameters-2">Parameters</h6>
|
|
62
|
+
<div class="table-scroll">
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>collectionId</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
76
|
+
<h6 id="returns-2">Returns</h6>
|
|
77
|
+
<p><a href="#collectiongroupquery"><code>CollectionGroupQuery</code></a></p>
|
|
78
|
+
<h6 id="implementation-of-1">Implementation of</h6>
|
|
79
|
+
<p><a href="#collectiongroupcapablefirestore"><code>CollectionGroupCapableFirestore</code></a>.<a href="#collectiongroup-2"><code>collectionGroup</code></a></p>
|
|
80
|
+
<p><a id="doc"></a></p>
|
|
81
|
+
<h5 id="doc">doc()</h5>
|
|
82
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#61AFEF">doc</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">path</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">CrawlerDocumentRef</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
83
|
+
<h6 id="parameters-3">Parameters</h6>
|
|
84
|
+
<div class="table-scroll">
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>path</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
98
|
+
<h6 id="returns-3">Returns</h6>
|
|
99
|
+
<p><a href="#crawlerdocumentref"><code>CrawlerDocumentRef</code></a></p>
|
|
100
|
+
<h6 id="implementation-of-2">Implementation of</h6>
|
|
101
|
+
<p><a href="#crawlerfirestore"><code>CrawlerFirestore</code></a>.<a href="#doc-2"><code>doc</code></a></p>
|
|
102
|
+
<p><a id="listcollections"></a></p>
|
|
103
|
+
<h5 id="listcollections">listCollections()</h5>
|
|
104
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#61AFEF">listCollections</span><span style="color:#ABB2BF">(): </span><span style="color:#E5C07B">Promise</span><span style="color:#56B6C2"><</span><span style="color:#E06C75">CrawlerCollectionRef</span><span style="color:#ABB2BF">[]</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
105
|
+
<h6 id="returns-4">Returns</h6>
|
|
106
|
+
<p><code>Promise</code><<a href="#crawlercollectionref"><code>CrawlerCollectionRef</code></a>[]></p>
|
|
107
|
+
<h6 id="implementation-of-3">Implementation of</h6>
|
|
108
|
+
<p><a href="#crawlerfirestore"><code>CrawlerFirestore</code></a>.<a href="#listcollections-4"><code>listCollections</code></a></p>
|
|
109
|
+
<hr>
|
|
110
|
+
<p><a id="semaphore"></a></p>
|
|
111
|
+
<h3 id="semaphore">Semaphore</h3>
|
|
112
|
+
<p>FIFO counting semaphore. <code>acquire()</code> resolves immediately while
|
|
113
|
+
fewer than <code>max</code> permits are checked out, otherwise it queues until
|
|
114
|
+
a <code>release()</code> frees a slot. Waiters are served in arrival order.</p>
|
|
115
|
+
<p><code>release()</code> without a prior <code>acquire()</code> is a no-op (does not go
|
|
116
|
+
negative). This is intentional — it lets defensive <code>try/finally</code>
|
|
117
|
+
release in error paths without bookkeeping.</p>
|
|
118
|
+
<h4 id="constructors-1">Constructors</h4>
|
|
119
|
+
<p><a id="constructor-1"></a></p>
|
|
120
|
+
<h5 id="constructor-1">Constructor</h5>
|
|
121
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">new</span><span style="color:#61AFEF"> Semaphore</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">max</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">number</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">Semaphore</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
122
|
+
<h6 id="parameters-4">Parameters</h6>
|
|
123
|
+
<div class="table-scroll">
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>max</code></td><td align="left"><code>number</code></td></tr></tbody></table></div>
|
|
137
|
+
<h6 id="returns-5">Returns</h6>
|
|
138
|
+
<p><a href="#semaphore"><code>Semaphore</code></a></p>
|
|
139
|
+
<h4 id="accessors">Accessors</h4>
|
|
140
|
+
<p><a id="inflight"></a></p>
|
|
141
|
+
<h5 id="inflight">inFlight</h5>
|
|
142
|
+
<h6 id="get-signature">Get Signature</h6>
|
|
143
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">get</span><span style="color:#61AFEF"> inFlight</span><span style="color:#ABB2BF">(): </span><span style="color:#E06C75">number</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
144
|
+
<p>Number of permits currently checked out. For tests and instrumentation
|
|
145
|
+
only; do not branch on this in production logic.</p>
|
|
146
|
+
<h6 id="returns-6">Returns</h6>
|
|
147
|
+
<p><code>number</code></p>
|
|
148
|
+
<p><a id="pending"></a></p>
|
|
149
|
+
<h5 id="pending">pending</h5>
|
|
150
|
+
<h6 id="get-signature-1">Get Signature</h6>
|
|
151
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">get</span><span style="color:#61AFEF"> pending</span><span style="color:#ABB2BF">(): </span><span style="color:#E06C75">number</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
152
|
+
<p>Number of waiters queued. For tests and instrumentation only.</p>
|
|
153
|
+
<h6 id="returns-7">Returns</h6>
|
|
154
|
+
<p><code>number</code></p>
|
|
155
|
+
<h4 id="methods-1">Methods</h4>
|
|
156
|
+
<p><a id="acquire"></a></p>
|
|
157
|
+
<h5 id="acquire">acquire()</h5>
|
|
158
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#61AFEF">acquire</span><span style="color:#ABB2BF">(): </span><span style="color:#E5C07B">Promise</span><span style="color:#56B6C2"><</span><span style="color:#C678DD">void</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
159
|
+
<h6 id="returns-8">Returns</h6>
|
|
160
|
+
<p><code>Promise</code><<code>void</code>></p>
|
|
161
|
+
<p><a id="release"></a></p>
|
|
162
|
+
<h5 id="release">release()</h5>
|
|
163
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#61AFEF">release</span><span style="color:#ABB2BF">(): </span><span style="color:#C678DD">void</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
164
|
+
<h6 id="returns-9">Returns</h6>
|
|
165
|
+
<p><code>void</code></p>
|
|
166
|
+
<hr>
|
|
167
|
+
<p><a id="sessionstore"></a></p>
|
|
168
|
+
<h3 id="sessionstore">SessionStore</h3>
|
|
169
|
+
<p>In-process LRU session store with TTL sweep and per-session byte cap.</p>
|
|
170
|
+
<p>Eviction policy:</p>
|
|
171
|
+
<ol>
|
|
172
|
+
<li>On every <code>create</code>/<code>get</code>/<code>update</code>, sweep TTL-expired sessions first.
|
|
173
|
+
Their tokens land in the eviction log as <code>SESSION_EXPIRED</code>.</li>
|
|
174
|
+
<li>If <code>create</code> would exceed <code>maxSessions</code>, evict the LRU
|
|
175
|
+
(oldest-by-<code>lastAccessedAt</code>). Its token lands in the eviction log
|
|
176
|
+
as <code>SESSION_EVICTED</code> so the displaced agent gets a meaningful
|
|
177
|
+
error on its next call.</li>
|
|
178
|
+
<li><code>update</code> rejects with <code>SESSION_PAYLOAD_TOO_LARGE</code> if the new
|
|
179
|
+
<code>bytes</code> exceeds <code>maxSessionBytes</code> (per-session cap, not aggregate).</li>
|
|
180
|
+
</ol>
|
|
181
|
+
<p>The eviction log is a bounded ring buffer; once it overflows, evicted
|
|
182
|
+
tokens degrade silently to <code>SESSION_EXPIRED</code> (still actionable — the
|
|
183
|
+
recoveryHint is the same: re-issue without continuation).</p>
|
|
184
|
+
<h4 id="type-parameters">Type Parameters</h4>
|
|
185
|
+
<div class="table-scroll">
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
<table><thead><tr><th align="left">Type Parameter</th></tr></thead><tbody><tr><td align="left"><code>TState</code></td></tr></tbody></table></div>
|
|
197
|
+
<h4 id="constructors-2">Constructors</h4>
|
|
198
|
+
<p><a id="constructor-2"></a></p>
|
|
199
|
+
<h5 id="constructor-2">Constructor</h5>
|
|
200
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">new</span><span style="color:#61AFEF"> SessionStore</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">TState</span><span style="color:#ABB2BF">>(</span><span style="color:#E06C75">opts</span><span style="color:#C678DD">?:</span><span style="color:#E06C75"> SessionStoreOptions</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">SessionStore</span><span style="color:#56B6C2"><</span><span style="color:#E06C75">TState</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
201
|
+
<h6 id="parameters-5">Parameters</h6>
|
|
202
|
+
<div class="table-scroll">
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>opts?</code></td><td align="left"><a href="#sessionstoreoptions"><code>SessionStoreOptions</code></a></td></tr></tbody></table></div>
|
|
216
|
+
<h6 id="returns-10">Returns</h6>
|
|
217
|
+
<p><a href="#sessionstore"><code>SessionStore</code></a><<code>TState</code>></p>
|
|
218
|
+
<h4 id="accessors-1">Accessors</h4>
|
|
219
|
+
<p><a id="size"></a></p>
|
|
220
|
+
<h5 id="size">size</h5>
|
|
221
|
+
<h6 id="get-signature-2">Get Signature</h6>
|
|
222
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">get</span><span style="color:#61AFEF"> size</span><span style="color:#ABB2BF">(): </span><span style="color:#E06C75">number</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
223
|
+
<p>Live session count.</p>
|
|
224
|
+
<h6 id="returns-11">Returns</h6>
|
|
225
|
+
<p><code>number</code></p>
|
|
226
|
+
<h4 id="methods-2">Methods</h4>
|
|
227
|
+
<p><a id="create"></a></p>
|
|
228
|
+
<h5 id="create">create()</h5>
|
|
229
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#61AFEF">create</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">state</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">TState</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75">bytes</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">number</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">SessionResult</span><span style="color:#56B6C2"><</span><span style="color:#E06C75">SessionRecord</span><span style="color:#56B6C2"><</span><span style="color:#E06C75">TState</span><span style="color:#56B6C2">>></span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
230
|
+
<p>Create a new session. Always succeeds unless <code>bytes</code> exceeds the
|
|
231
|
+
per-session byte cap. On cap-hit, evicts the LRU session — the
|
|
232
|
+
displaced token will report <code>SESSION_EVICTED</code> on its next access.</p>
|
|
233
|
+
<h6 id="parameters-6">Parameters</h6>
|
|
234
|
+
<div class="table-scroll">
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>state</code></td><td align="left"><code>TState</code></td></tr><tr><td align="left"><code>bytes</code></td><td align="left"><code>number</code></td></tr></tbody></table></div>
|
|
252
|
+
<h6 id="returns-12">Returns</h6>
|
|
253
|
+
<p><a href="#sessionresult"><code>SessionResult</code></a><<a href="#sessionrecord"><code>SessionRecord</code></a><<code>TState</code>>></p>
|
|
254
|
+
<p><a id="delete"></a></p>
|
|
255
|
+
<h5 id="delete">delete()</h5>
|
|
256
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">delete</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">token</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">boolean</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
257
|
+
<p>Best-effort delete; returns true if a session was removed.</p>
|
|
258
|
+
<h6 id="parameters-7">Parameters</h6>
|
|
259
|
+
<div class="table-scroll">
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>token</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
273
|
+
<h6 id="returns-13">Returns</h6>
|
|
274
|
+
<p><code>boolean</code></p>
|
|
275
|
+
<p><a id="get"></a></p>
|
|
276
|
+
<h5 id="get">get()</h5>
|
|
277
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#61AFEF">get</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">token</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">SessionResult</span><span style="color:#56B6C2"><</span><span style="color:#E06C75">SessionRecord</span><span style="color:#56B6C2"><</span><span style="color:#E06C75">TState</span><span style="color:#56B6C2">>></span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
278
|
+
<p>Look up a session by token. Touches <code>lastAccessedAt</code> on success so
|
|
279
|
+
subsequent reads keep the session warm. On expired/malformed/evicted
|
|
280
|
+
tokens returns the appropriate structured error.</p>
|
|
281
|
+
<h6 id="parameters-8">Parameters</h6>
|
|
282
|
+
<div class="table-scroll">
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>token</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
296
|
+
<h6 id="returns-14">Returns</h6>
|
|
297
|
+
<p><a href="#sessionresult"><code>SessionResult</code></a><<a href="#sessionrecord"><code>SessionRecord</code></a><<code>TState</code>>></p>
|
|
298
|
+
<p><a id="sweepexpired"></a></p>
|
|
299
|
+
<h5 id="sweepexpired">sweepExpired()</h5>
|
|
300
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#61AFEF">sweepExpired</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">now</span><span style="color:#C678DD">?:</span><span style="color:#E06C75"> number</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">number</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
301
|
+
<p>Drop sessions whose <code>lastAccessedAt + ttlMs</code> is in the past.
|
|
302
|
+
Returns the number of sessions evicted. Public for tests +
|
|
303
|
+
future scheduled-sweep usage; <code>create</code>/<code>get</code>/<code>update</code> all call it
|
|
304
|
+
lazily so callers don’t normally need to.</p>
|
|
305
|
+
<h6 id="parameters-9">Parameters</h6>
|
|
306
|
+
<div class="table-scroll">
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
|
|
315
|
+
|
|
316
|
+
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>now?</code></td><td align="left"><code>number</code></td></tr></tbody></table></div>
|
|
320
|
+
<h6 id="returns-15">Returns</h6>
|
|
321
|
+
<p><code>number</code></p>
|
|
322
|
+
<p><a id="update"></a></p>
|
|
323
|
+
<h5 id="update">update()</h5>
|
|
324
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#61AFEF">update</span><span style="color:#ABB2BF">(</span></span>
|
|
325
|
+
<span class="line"><span style="color:#E06C75"> token</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">,</span></span>
|
|
326
|
+
<span class="line"><span style="color:#E06C75"> state</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">TState</span><span style="color:#ABB2BF">,</span></span>
|
|
327
|
+
<span class="line"><span style="color:#E06C75">bytes</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">number</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">SessionResult</span><span style="color:#56B6C2"><</span><span style="color:#E06C75">SessionRecord</span><span style="color:#56B6C2"><</span><span style="color:#E06C75">TState</span><span style="color:#56B6C2">>></span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
328
|
+
<p>Replace the state of an existing session. Same lookup/error model
|
|
329
|
+
as <code>get</code>, plus per-session-bytes enforcement on the new payload.</p>
|
|
330
|
+
<h6 id="parameters-10">Parameters</h6>
|
|
331
|
+
<div class="table-scroll">
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
|
|
339
|
+
|
|
340
|
+
|
|
341
|
+
|
|
342
|
+
|
|
343
|
+
|
|
344
|
+
|
|
345
|
+
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
|
|
349
|
+
|
|
350
|
+
|
|
351
|
+
|
|
352
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>token</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>state</code></td><td align="left"><code>TState</code></td></tr><tr><td align="left"><code>bytes</code></td><td align="left"><code>number</code></td></tr></tbody></table></div>
|
|
353
|
+
<h6 id="returns-16">Returns</h6>
|
|
354
|
+
<p><a href="#sessionresult"><code>SessionResult</code></a><<a href="#sessionrecord"><code>SessionRecord</code></a><<code>TState</code>>></p>
|
|
355
|
+
<hr>
|
|
356
|
+
<p><a id="wireprotounavailableerror"></a></p>
|
|
357
|
+
<h3 id="wireprotounavailableerror">WireProtoUnavailableError</h3>
|
|
358
|
+
<p>Thrown when <code>DocumentSnapshot._fieldsProto</code> is unavailable or malformed.
|
|
359
|
+
Per prerequisite 0.A, the wire reader does NOT silently fall back to
|
|
360
|
+
<code>data()</code> — that would collapse integer/double at the value boundary
|
|
361
|
+
and corrupt every downstream codegen consumer.</p>
|
|
362
|
+
<h4 id="extends">Extends</h4>
|
|
363
|
+
<ul>
|
|
364
|
+
<li><code>Error</code></li>
|
|
365
|
+
</ul>
|
|
366
|
+
<h4 id="constructors-3">Constructors</h4>
|
|
367
|
+
<p><a id="constructor-3"></a></p>
|
|
368
|
+
<h5 id="constructor-3">Constructor</h5>
|
|
369
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">new</span><span style="color:#61AFEF"> WireProtoUnavailableError</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">opts</span><span style="color:#ABB2BF">: {</span></span>
|
|
370
|
+
<span class="line"><span style="color:#E06C75"> docPath</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">;</span></span>
|
|
371
|
+
<span class="line"><span style="color:#E06C75"> reason</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">;</span></span>
|
|
372
|
+
<span class="line"><span style="color:#ABB2BF">}): </span><span style="color:#E06C75">WireProtoUnavailableError</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
373
|
+
<h6 id="parameters-11">Parameters</h6>
|
|
374
|
+
<div class="table-scroll">
|
|
375
|
+
|
|
376
|
+
|
|
377
|
+
|
|
378
|
+
|
|
379
|
+
|
|
380
|
+
|
|
381
|
+
|
|
382
|
+
|
|
383
|
+
|
|
384
|
+
|
|
385
|
+
|
|
386
|
+
|
|
387
|
+
|
|
388
|
+
|
|
389
|
+
|
|
390
|
+
|
|
391
|
+
|
|
392
|
+
|
|
393
|
+
|
|
394
|
+
|
|
395
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>opts</code></td><td align="left">{ <code>docPath</code>: <code>string</code>; <code>reason</code>: <code>string</code>; }</td></tr><tr><td align="left"><code>opts.docPath</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>opts.reason</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
396
|
+
<h6 id="returns-17">Returns</h6>
|
|
397
|
+
<p><a href="#wireprotounavailableerror"><code>WireProtoUnavailableError</code></a></p>
|
|
398
|
+
<h6 id="overrides">Overrides</h6>
|
|
399
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E5C07B">Error</span><span style="color:#ABB2BF">.</span><span style="color:#E06C75">constructor</span></span></code></pre>
|
|
400
|
+
<h4 id="properties">Properties</h4>
|
|
401
|
+
<div class="table-scroll">
|
|
402
|
+
|
|
403
|
+
|
|
404
|
+
|
|
405
|
+
|
|
406
|
+
|
|
407
|
+
|
|
408
|
+
|
|
409
|
+
|
|
410
|
+
|
|
411
|
+
|
|
412
|
+
|
|
413
|
+
|
|
414
|
+
|
|
415
|
+
|
|
416
|
+
|
|
417
|
+
|
|
418
|
+
|
|
419
|
+
|
|
420
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Modifier</th><th align="left">Type</th><th align="left">Default value</th><th align="left">Overrides</th></tr></thead><tbody><tr><td align="left"><a id="name"></a> <code>name</code></td><td align="left"><code>readonly</code></td><td align="left"><code>"WireProtoUnavailableError"</code></td><td align="left"><code>"WireProtoUnavailableError"</code></td><td align="left"><code>Error.name</code></td></tr></tbody></table></div>
|
|
421
|
+
<h2 id="interfaces">Interfaces</h2>
|
|
422
|
+
<p><a id="collectiongroupcapablefirestore"></a></p>
|
|
423
|
+
<h3 id="collectiongroupcapablefirestore">CollectionGroupCapableFirestore</h3>
|
|
424
|
+
<p>Optional source capability used by <code>findCollectionGroup</code>.</p>
|
|
425
|
+
<h4 id="methods-3">Methods</h4>
|
|
426
|
+
<p><a id="collectiongroup-2"></a></p>
|
|
427
|
+
<h5 id="collectiongroup-1">collectionGroup()</h5>
|
|
428
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#61AFEF">collectionGroup</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">collectionId</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">CollectionGroupQuery</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
429
|
+
<h6 id="parameters-12">Parameters</h6>
|
|
430
|
+
<div class="table-scroll">
|
|
431
|
+
|
|
432
|
+
|
|
433
|
+
|
|
434
|
+
|
|
435
|
+
|
|
436
|
+
|
|
437
|
+
|
|
438
|
+
|
|
439
|
+
|
|
440
|
+
|
|
441
|
+
|
|
442
|
+
|
|
443
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>collectionId</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
444
|
+
<h6 id="returns-18">Returns</h6>
|
|
445
|
+
<p><a href="#collectiongroupquery"><code>CollectionGroupQuery</code></a></p>
|
|
446
|
+
<hr>
|
|
447
|
+
<p><a id="collectiongroupquery"></a></p>
|
|
448
|
+
<h3 id="collectiongroupquery">CollectionGroupQuery</h3>
|
|
449
|
+
<p>Minimal collection-group query shape used by host discovery.</p>
|
|
450
|
+
<h4 id="methods-4">Methods</h4>
|
|
451
|
+
<p><a id="get-2"></a></p>
|
|
452
|
+
<h5 id="get-1">get()</h5>
|
|
453
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#61AFEF">get</span><span style="color:#ABB2BF">(): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF"><{</span></span>
|
|
454
|
+
<span class="line"><span style="color:#E06C75"> docs</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">CollectionGroupSnapshot</span><span style="color:#ABB2BF">[];</span></span>
|
|
455
|
+
<span class="line"><span style="color:#ABB2BF">}>;</span></span></code></pre>
|
|
456
|
+
<h6 id="returns-19">Returns</h6>
|
|
457
|
+
<p><code>Promise</code><{
|
|
458
|
+
<code>docs</code>: <a href="#collectiongroupsnapshot"><code>CollectionGroupSnapshot</code></a>[];
|
|
459
|
+
}></p>
|
|
460
|
+
<p><a id="limit"></a></p>
|
|
461
|
+
<h5 id="limit">limit()</h5>
|
|
462
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#61AFEF">limit</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">n</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">number</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">CollectionGroupQuery</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
463
|
+
<h6 id="parameters-13">Parameters</h6>
|
|
464
|
+
<div class="table-scroll">
|
|
465
|
+
|
|
466
|
+
|
|
467
|
+
|
|
468
|
+
|
|
469
|
+
|
|
470
|
+
|
|
471
|
+
|
|
472
|
+
|
|
473
|
+
|
|
474
|
+
|
|
475
|
+
|
|
476
|
+
|
|
477
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>n</code></td><td align="left"><code>number</code></td></tr></tbody></table></div>
|
|
478
|
+
<h6 id="returns-20">Returns</h6>
|
|
479
|
+
<p><a href="#collectiongroupquery"><code>CollectionGroupQuery</code></a></p>
|
|
480
|
+
<p><a id="select"></a></p>
|
|
481
|
+
<h5 id="select">select()</h5>
|
|
482
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#61AFEF">select</span><span style="color:#ABB2BF">(...</span><span style="color:#E06C75">fields</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">[]): </span><span style="color:#E06C75">CollectionGroupQuery</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
483
|
+
<h6 id="parameters-14">Parameters</h6>
|
|
484
|
+
<div class="table-scroll">
|
|
485
|
+
|
|
486
|
+
|
|
487
|
+
|
|
488
|
+
|
|
489
|
+
|
|
490
|
+
|
|
491
|
+
|
|
492
|
+
|
|
493
|
+
|
|
494
|
+
|
|
495
|
+
|
|
496
|
+
|
|
497
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left">…<code>fields</code></td><td align="left"><code>string</code>[]</td></tr></tbody></table></div>
|
|
498
|
+
<h6 id="returns-21">Returns</h6>
|
|
499
|
+
<p><a href="#collectiongroupquery"><code>CollectionGroupQuery</code></a></p>
|
|
500
|
+
<hr>
|
|
501
|
+
<p><a id="collectiongroupsnapshot"></a></p>
|
|
502
|
+
<h3 id="collectiongroupsnapshot">CollectionGroupSnapshot</h3>
|
|
503
|
+
<p>Parent-path projection used by collection-group discovery.</p>
|
|
504
|
+
<h4 id="properties-1">Properties</h4>
|
|
505
|
+
<div class="table-scroll">
|
|
506
|
+
|
|
507
|
+
|
|
508
|
+
|
|
509
|
+
|
|
510
|
+
|
|
511
|
+
|
|
512
|
+
|
|
513
|
+
|
|
514
|
+
|
|
515
|
+
|
|
516
|
+
|
|
517
|
+
|
|
518
|
+
|
|
519
|
+
|
|
520
|
+
|
|
521
|
+
|
|
522
|
+
|
|
523
|
+
|
|
524
|
+
|
|
525
|
+
|
|
526
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="ref"></a> <code>ref</code></td><td align="left">{ <code>parent</code>: { <code>path</code>: <code>string</code>; }; }</td></tr><tr><td align="left"><code>ref.parent</code></td><td align="left">{ <code>path</code>: <code>string</code>; }</td></tr><tr><td align="left"><code>ref.parent.path</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
527
|
+
<hr>
|
|
528
|
+
<p><a id="collectionschema"></a></p>
|
|
529
|
+
<h3 id="collectionschema">CollectionSchema</h3>
|
|
530
|
+
<p>Schema for a single collection as surfaced in the tool output’s
|
|
531
|
+
<code>finalizedSchemas</code>.</p>
|
|
532
|
+
<h4 id="properties-2">Properties</h4>
|
|
533
|
+
<div class="table-scroll">
|
|
534
|
+
|
|
535
|
+
|
|
536
|
+
|
|
537
|
+
|
|
538
|
+
|
|
539
|
+
|
|
540
|
+
|
|
541
|
+
|
|
542
|
+
|
|
543
|
+
|
|
544
|
+
|
|
545
|
+
|
|
546
|
+
|
|
547
|
+
|
|
548
|
+
|
|
549
|
+
|
|
550
|
+
|
|
551
|
+
|
|
552
|
+
|
|
553
|
+
|
|
554
|
+
|
|
555
|
+
|
|
556
|
+
|
|
557
|
+
|
|
558
|
+
|
|
559
|
+
|
|
560
|
+
|
|
561
|
+
|
|
562
|
+
|
|
563
|
+
|
|
564
|
+
|
|
565
|
+
|
|
566
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="declaredat"></a> <code>declaredAt</code></td><td align="left"><code>number</code></td></tr><tr><td align="left"><a id="examplepath"></a> <code>examplePath?</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="samplingcomplete"></a> <code>samplingComplete</code></td><td align="left"><a href="#samplingcomplete-1"><code>SamplingComplete</code></a></td></tr><tr><td align="left"><a id="schema"></a> <code>schema</code></td><td align="left"><a href="#fieldschema"><code>FieldSchema</code></a></td></tr><tr><td align="left"><a id="subcollectiontemplatepaths"></a> <code>subcollectionTemplatePaths</code></td><td align="left"><code>string</code>[]</td></tr><tr><td align="left"><a id="templatepath"></a> <code>templatePath</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
567
|
+
<hr>
|
|
568
|
+
<p><a id="convergenceresult"></a></p>
|
|
569
|
+
<h3 id="convergenceresult">ConvergenceResult</h3>
|
|
570
|
+
<h4 id="properties-3">Properties</h4>
|
|
571
|
+
<div class="table-scroll">
|
|
572
|
+
|
|
573
|
+
|
|
574
|
+
|
|
575
|
+
|
|
576
|
+
|
|
577
|
+
|
|
578
|
+
|
|
579
|
+
|
|
580
|
+
|
|
581
|
+
|
|
582
|
+
|
|
583
|
+
|
|
584
|
+
|
|
585
|
+
|
|
586
|
+
|
|
587
|
+
|
|
588
|
+
|
|
589
|
+
|
|
590
|
+
|
|
591
|
+
|
|
592
|
+
|
|
593
|
+
|
|
594
|
+
|
|
595
|
+
|
|
596
|
+
|
|
597
|
+
|
|
598
|
+
|
|
599
|
+
|
|
600
|
+
|
|
601
|
+
|
|
602
|
+
|
|
603
|
+
|
|
604
|
+
|
|
605
|
+
|
|
606
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="declaredat-1"></a> <code>declaredAt</code></td><td align="left"><code>number</code></td><td align="left">Doc index where <code>stopOnStable</code> fired (0-based), or null if never.</td></tr><tr><td align="left"><a id="finalschema"></a> <code>finalSchema</code></td><td align="left"><a href="#fieldschema"><code>FieldSchema</code></a></td><td align="left">Final accumulated schema.</td></tr><tr><td align="left"><a id="missedchangesafterdeclared"></a> <code>missedChangesAfterDeclared</code></td><td align="left"><a href="#schemachange"><code>SchemaChange</code></a>[]</td><td align="left">Changes emitted <em>after</em> convergence was declared — caller-visible for test-time assertion that <code>stopOnStable</code> would not have lost data.</td></tr><tr><td align="left"><a id="totalchanges"></a> <code>totalChanges</code></td><td align="left"><code>number</code></td><td align="left">Total change count across the stream.</td></tr><tr><td align="left"><a id="totaldocs"></a> <code>totalDocs</code></td><td align="left"><code>number</code></td><td align="left">Total docs consumed (≤ stream length).</td></tr></tbody></table></div>
|
|
607
|
+
<hr>
|
|
608
|
+
<p><a id="crawlercollectionref"></a></p>
|
|
609
|
+
<h3 id="crawlercollectionref">CrawlerCollectionRef</h3>
|
|
610
|
+
<p>Minimal collection-reference shape needed for traversal.</p>
|
|
611
|
+
<h4 id="properties-4">Properties</h4>
|
|
612
|
+
<div class="table-scroll">
|
|
613
|
+
|
|
614
|
+
|
|
615
|
+
|
|
616
|
+
|
|
617
|
+
|
|
618
|
+
|
|
619
|
+
|
|
620
|
+
|
|
621
|
+
|
|
622
|
+
|
|
623
|
+
|
|
624
|
+
|
|
625
|
+
|
|
626
|
+
|
|
627
|
+
|
|
628
|
+
|
|
629
|
+
|
|
630
|
+
|
|
631
|
+
|
|
632
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Modifier</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="id"></a> <code>id</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="path"></a> <code>path</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
633
|
+
<h4 id="methods-5">Methods</h4>
|
|
634
|
+
<p><a id="listdocuments"></a></p>
|
|
635
|
+
<h5 id="listdocuments">listDocuments()</h5>
|
|
636
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#61AFEF">listDocuments</span><span style="color:#ABB2BF">(): </span><span style="color:#E5C07B">Promise</span><span style="color:#56B6C2"><</span><span style="color:#E06C75">CrawlerDocumentRef</span><span style="color:#ABB2BF">[]</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
637
|
+
<h6 id="returns-22">Returns</h6>
|
|
638
|
+
<p><code>Promise</code><<a href="#crawlerdocumentref"><code>CrawlerDocumentRef</code></a>[]></p>
|
|
639
|
+
<hr>
|
|
640
|
+
<p><a id="crawlerdocumentref"></a></p>
|
|
641
|
+
<h3 id="crawlerdocumentref">CrawlerDocumentRef</h3>
|
|
642
|
+
<p>Minimal document-reference shape needed for traversal and sampling.</p>
|
|
643
|
+
<h4 id="properties-5">Properties</h4>
|
|
644
|
+
<div class="table-scroll">
|
|
645
|
+
|
|
646
|
+
|
|
647
|
+
|
|
648
|
+
|
|
649
|
+
|
|
650
|
+
|
|
651
|
+
|
|
652
|
+
|
|
653
|
+
|
|
654
|
+
|
|
655
|
+
|
|
656
|
+
|
|
657
|
+
|
|
658
|
+
|
|
659
|
+
|
|
660
|
+
|
|
661
|
+
|
|
662
|
+
|
|
663
|
+
|
|
664
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Modifier</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="id-1"></a> <code>id</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="path-1"></a> <code>path</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
665
|
+
<h4 id="methods-6">Methods</h4>
|
|
666
|
+
<p><a id="get-4"></a></p>
|
|
667
|
+
<h5 id="get-2">get()</h5>
|
|
668
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#61AFEF">get</span><span style="color:#ABB2BF">(): </span><span style="color:#E5C07B">Promise</span><span style="color:#56B6C2"><</span><span style="color:#E06C75">WireDocumentSnapshot</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
669
|
+
<h6 id="returns-23">Returns</h6>
|
|
670
|
+
<p><code>Promise</code><<a href="#wiredocumentsnapshot"><code>WireDocumentSnapshot</code></a>></p>
|
|
671
|
+
<p><a id="listcollections-2"></a></p>
|
|
672
|
+
<h5 id="listcollections-1">listCollections()</h5>
|
|
673
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#61AFEF">listCollections</span><span style="color:#ABB2BF">(): </span><span style="color:#E5C07B">Promise</span><span style="color:#56B6C2"><</span><span style="color:#E06C75">CrawlerCollectionRef</span><span style="color:#ABB2BF">[]</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
674
|
+
<h6 id="returns-24">Returns</h6>
|
|
675
|
+
<p><code>Promise</code><<a href="#crawlercollectionref"><code>CrawlerCollectionRef</code></a>[]></p>
|
|
676
|
+
<hr>
|
|
677
|
+
<p><a id="crawlerfirestore"></a></p>
|
|
678
|
+
<h3 id="crawlerfirestore">CrawlerFirestore</h3>
|
|
679
|
+
<p>Firestore-shaped source consumed by the crawler.</p>
|
|
680
|
+
<p><code>collection</code> and <code>doc</code> are needed only when resuming a continuation.</p>
|
|
681
|
+
<h4 id="methods-7">Methods</h4>
|
|
682
|
+
<p><a id="collection-2"></a></p>
|
|
683
|
+
<h5 id="collection-1">collection()?</h5>
|
|
684
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">optional</span><span style="color:#61AFEF"> collection</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">path</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">CrawlerCollectionRef</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
685
|
+
<h6 id="parameters-15">Parameters</h6>
|
|
686
|
+
<div class="table-scroll">
|
|
687
|
+
|
|
688
|
+
|
|
689
|
+
|
|
690
|
+
|
|
691
|
+
|
|
692
|
+
|
|
693
|
+
|
|
694
|
+
|
|
695
|
+
|
|
696
|
+
|
|
697
|
+
|
|
698
|
+
|
|
699
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>path</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
700
|
+
<h6 id="returns-25">Returns</h6>
|
|
701
|
+
<p><a href="#crawlercollectionref"><code>CrawlerCollectionRef</code></a></p>
|
|
702
|
+
<p><a id="doc-2"></a></p>
|
|
703
|
+
<h5 id="doc-1">doc()?</h5>
|
|
704
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">optional</span><span style="color:#61AFEF"> doc</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">path</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">CrawlerDocumentRef</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
705
|
+
<h6 id="parameters-16">Parameters</h6>
|
|
706
|
+
<div class="table-scroll">
|
|
707
|
+
|
|
708
|
+
|
|
709
|
+
|
|
710
|
+
|
|
711
|
+
|
|
712
|
+
|
|
713
|
+
|
|
714
|
+
|
|
715
|
+
|
|
716
|
+
|
|
717
|
+
|
|
718
|
+
|
|
719
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>path</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
720
|
+
<h6 id="returns-26">Returns</h6>
|
|
721
|
+
<p><a href="#crawlerdocumentref"><code>CrawlerDocumentRef</code></a></p>
|
|
722
|
+
<p><a id="listcollections-4"></a></p>
|
|
723
|
+
<h5 id="listcollections-2">listCollections()</h5>
|
|
724
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#61AFEF">listCollections</span><span style="color:#ABB2BF">(): </span><span style="color:#E5C07B">Promise</span><span style="color:#56B6C2"><</span><span style="color:#E06C75">CrawlerCollectionRef</span><span style="color:#ABB2BF">[]</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
725
|
+
<h6 id="returns-27">Returns</h6>
|
|
726
|
+
<p><code>Promise</code><<a href="#crawlercollectionref"><code>CrawlerCollectionRef</code></a>[]></p>
|
|
727
|
+
<hr>
|
|
728
|
+
<p><a id="crawloptions"></a></p>
|
|
729
|
+
<h3 id="crawloptions">CrawlOptions</h3>
|
|
730
|
+
<p>Crawl options. All fields are optional with documented defaults.</p>
|
|
731
|
+
<ul>
|
|
732
|
+
<li><code>maxConcurrency</code>: in-flight RPC cap. Default 32 per the Risk #1 sweep
|
|
733
|
+
on 2026-05-05. Sweep over <code>{4, 8, 16, 32, 64}</code> against the corpus
|
|
734
|
+
showed <code>4 → 8 → 16 → 32 → 64</code> was a steady ~10–15% per-doubling
|
|
735
|
+
descent (no plateau). 32 was picked over 64 because the curve hadn’t
|
|
736
|
+
flattened — 64 was the cap of the test range, not a true knee — and
|
|
737
|
+
doubling in-flight RPCs again increases the chance of tripping
|
|
738
|
+
per-project connection/quota limits in agent environments. Agents
|
|
739
|
+
that want max speed can override.</li>
|
|
740
|
+
<li><code>maxDepth</code>: hard cap on BFS layers from the root. Defaults to 10
|
|
741
|
+
(well above any real-world Firestore tree). Used as a runaway guard,
|
|
742
|
+
not an agent-facing knob.</li>
|
|
743
|
+
<li><code>rootFilter</code>: optional predicate on root collection IDs. Used by tests
|
|
744
|
+
and the corpus harness to scope discovery to a known prefix without
|
|
745
|
+
walking the entire database.</li>
|
|
746
|
+
</ul>
|
|
747
|
+
<h4 id="properties-6">Properties</h4>
|
|
748
|
+
<div class="table-scroll">
|
|
749
|
+
|
|
750
|
+
|
|
751
|
+
|
|
752
|
+
|
|
753
|
+
|
|
754
|
+
|
|
755
|
+
|
|
756
|
+
|
|
757
|
+
|
|
758
|
+
|
|
759
|
+
|
|
760
|
+
|
|
761
|
+
|
|
762
|
+
|
|
763
|
+
|
|
764
|
+
|
|
765
|
+
|
|
766
|
+
|
|
767
|
+
|
|
768
|
+
|
|
769
|
+
|
|
770
|
+
|
|
771
|
+
|
|
772
|
+
|
|
773
|
+
|
|
774
|
+
|
|
775
|
+
|
|
776
|
+
|
|
777
|
+
|
|
778
|
+
|
|
779
|
+
|
|
780
|
+
|
|
781
|
+
|
|
782
|
+
|
|
783
|
+
|
|
784
|
+
|
|
785
|
+
|
|
786
|
+
|
|
787
|
+
|
|
788
|
+
|
|
789
|
+
|
|
790
|
+
|
|
791
|
+
|
|
792
|
+
|
|
793
|
+
|
|
794
|
+
|
|
795
|
+
|
|
796
|
+
|
|
797
|
+
|
|
798
|
+
|
|
799
|
+
|
|
800
|
+
|
|
801
|
+
|
|
802
|
+
|
|
803
|
+
|
|
804
|
+
|
|
805
|
+
|
|
806
|
+
|
|
807
|
+
|
|
808
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="continuation"></a> <code>continuation?</code></td><td align="left"><code>string</code></td><td align="left">Resume a previously paused crawl. Only valid when a <code>SessionStore</code> is passed to <code>crawl()</code>. The token is the <code>continuation</code> value from a prior paused result. Malformed/expired tokens surface as a <code>SESSION_EXPIRED</code>/<code>SESSION_EVICTED</code>/<code>SESSION_MALFORMED_TOKEN</code> error event with no other side effects (per 0.C).</td></tr><tr><td align="left"><a id="dryrun"></a> <code>dryRun?</code></td><td align="left"><code>boolean</code></td><td align="left">Informational-only cost preview. When <code>true</code>, the crawler issues exactly <strong>one</strong> RPC — <code>db.listCollections()</code> at the root — and returns a heuristic projection of what a real crawl would cost. No documents are read, no per-doc <code>listCollections</code> calls are made, no sampling occurs. The result has empty <code>discovered</code> and <code>finalizedSchemas</code>, <code>complete: true</code>, and <code>continuation: undefined</code>. It is <strong>not</strong> a partial crawl that can be resumed — to “commit”, call <code>crawl()</code> again with <code>dryRun: false</code> (a fresh full crawl). Rationale: an agent reading <code>dryRun: true</code> reasonably expects no real crawl happened. Doing a structure walk under that flag would let the agent make decisions on data it didn’t realize it paid for. See Item 5 revision in the implementation plan. Default <code>false</code>.</td></tr><tr><td align="left"><a id="dryrunsubtreemultiplier"></a> <code>dryRunSubtreeMultiplier?</code></td><td align="left"><code>number</code></td><td align="left">Heuristic multiplier used in the dryRun cost projection: assumes each root collection has roughly this many subtree-collections (root + descendants) on average. Default 3 — conservative for typical app schemas. Surfaced as an option so agents tuning for known shapes can revise. Only consulted when <code>dryRun: true</code>.</td></tr><tr><td align="left"><a id="maxbatchbytes"></a> <code>maxBatchBytes?</code></td><td align="left"><code>number</code></td><td align="left">Pause threshold for batch payload size. After each layer (structure phase) and each templatePath (sampling phase) the crawler measures the JSON-serialized state size; if it exceeds this many bytes, the crawl pauses and returns a continuation token. Default 1 MB per Phase 0.4 sizing — well below <code>maxSessionBytes=32MB</code> so the agent has headroom for response framing. Only effective when a <code>SessionStore</code> is provided to <code>crawl()</code>. With no store, single-call mode runs to completion regardless of size.</td></tr><tr><td align="left"><a id="maxconcurrency"></a> <code>maxConcurrency?</code></td><td align="left"><code>number</code></td><td align="left">-</td></tr><tr><td align="left"><a id="maxdepth"></a> <code>maxDepth?</code></td><td align="left"><code>number</code></td><td align="left">-</td></tr><tr><td align="left"><a id="maxerrorspercollection"></a> <code>maxErrorsPerCollection?</code></td><td align="left"><code>number</code></td><td align="left">Per-templatePath cap on tolerated PERMISSION_DENIED / transient errors during sampling. Default 3 per prerequisite 0.E. Past this threshold, sampling for the templatePath stops and <code>samplingComplete</code> is set to <code>sampling_open</code> so the agent can see the collection wasn’t fully sampled. Errors during structure discovery are emitted but do not count toward this cap.</td></tr><tr><td align="left"><a id="maxsamples"></a> <code>maxSamples?</code></td><td align="left"><code>number</code></td><td align="left">Hard cap on docs sampled per templatePath. Default 50 per Phase 2.1 lock. Item 3 will add adaptive <code>stopOnStable</code> early-exit on top of this cap; for now sampling reads exactly <code>min(maxSamples, available)</code> docs per templatePath.</td></tr><tr><td align="left"><a id="rootfilter"></a> <code>rootFilter?</code></td><td align="left">(<code>collectionId</code>: <code>string</code>) => <code>boolean</code></td><td align="left">-</td></tr><tr><td align="left"><a id="stoponstable"></a> <code>stopOnStable?</code></td><td align="left"><code>number</code></td><td align="left">Adaptive early-exit threshold. After this many consecutive no-change merges in a templatePath’s sampling stream, sampling stops and <code>samplingComplete</code> is set to <code>converged_via_stable</code>. Default 8 per Phase 2.1 lock. Set to a value > maxSamples to disable early-exit (the hard cap then governs). Reads are issued in chunks of <code>stopOnStable</code> so an early-exit avoids fetching the remainder of <code>sampleRefs</code>. Worst-case wasted-read count per templatePath is <code>stopOnStable - 1</code>.</td></tr></tbody></table></div>
|
|
809
|
+
<hr>
|
|
810
|
+
<p><a id="crawlresult"></a></p>
|
|
811
|
+
<h3 id="crawlresult">CrawlResult</h3>
|
|
812
|
+
<h4 id="extended-by">Extended by</h4>
|
|
813
|
+
<ul>
|
|
814
|
+
<li><a href="#fullcrawlresult"><code>FullCrawlResult</code></a></li>
|
|
815
|
+
</ul>
|
|
816
|
+
<h4 id="properties-7">Properties</h4>
|
|
817
|
+
<div class="table-scroll">
|
|
818
|
+
|
|
819
|
+
|
|
820
|
+
|
|
821
|
+
|
|
822
|
+
|
|
823
|
+
|
|
824
|
+
|
|
825
|
+
|
|
826
|
+
|
|
827
|
+
|
|
828
|
+
|
|
829
|
+
|
|
830
|
+
|
|
831
|
+
|
|
832
|
+
|
|
833
|
+
|
|
834
|
+
|
|
835
|
+
|
|
836
|
+
|
|
837
|
+
|
|
838
|
+
|
|
839
|
+
|
|
840
|
+
|
|
841
|
+
|
|
842
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="discovered"></a> <code>discovered</code></td><td align="left"><code>Map</code><<code>string</code>, <a href="#discoveredcollection"><code>DiscoveredCollection</code></a>></td><td align="left">-</td></tr><tr><td align="left"><a id="events"></a> <code>events</code></td><td align="left"><a href="#discoverevent"><code>DiscoverEvent</code></a>[]</td><td align="left">-</td></tr><tr><td align="left"><a id="listops"></a> <code>listOps</code></td><td align="left"><code>number</code></td><td align="left">Total <code>listCollections</code> + <code>listDocuments</code> calls — feeds cost reporting.</td></tr></tbody></table></div>
|
|
843
|
+
<hr>
|
|
844
|
+
<p><a id="discoveredcollection"></a></p>
|
|
845
|
+
<h3 id="discoveredcollection">DiscoveredCollection</h3>
|
|
846
|
+
<p>Per-template-path bookkeeping built up during a crawl. Collection refs
|
|
847
|
+
are kept here for Item 2.3 to drive document sampling.</p>
|
|
848
|
+
<p>Multiple concrete collection paths may collapse to the same template
|
|
849
|
+
path (e.g. <code>users/uid_1/posts</code> and <code>users/uid_2/posts</code> both map to
|
|
850
|
+
<code>users/{userId}/posts</code>); their refs are accumulated under one entry.</p>
|
|
851
|
+
<h4 id="properties-8">Properties</h4>
|
|
852
|
+
<div class="table-scroll">
|
|
853
|
+
|
|
854
|
+
|
|
855
|
+
|
|
856
|
+
|
|
857
|
+
|
|
858
|
+
|
|
859
|
+
|
|
860
|
+
|
|
861
|
+
|
|
862
|
+
|
|
863
|
+
|
|
864
|
+
|
|
865
|
+
|
|
866
|
+
|
|
867
|
+
|
|
868
|
+
|
|
869
|
+
|
|
870
|
+
|
|
871
|
+
|
|
872
|
+
|
|
873
|
+
|
|
874
|
+
|
|
875
|
+
|
|
876
|
+
|
|
877
|
+
|
|
878
|
+
|
|
879
|
+
|
|
880
|
+
|
|
881
|
+
|
|
882
|
+
|
|
883
|
+
|
|
884
|
+
|
|
885
|
+
|
|
886
|
+
|
|
887
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="depth"></a> <code>depth</code></td><td align="left"><code>number</code></td><td align="left">-</td></tr><tr><td align="left"><a id="docrefs"></a> <code>docRefs</code></td><td align="left"><a href="#crawlerdocumentref"><code>CrawlerDocumentRef</code></a>[]</td><td align="left">Doc refs accumulated across <code>refs</code> during BFS expansion. Sampling draws from this pool — re-listing would double the listDocuments cost we already paid during structure discovery.</td></tr><tr><td align="left"><a id="examplepath-1"></a> <code>examplePath</code></td><td align="left"><code>string</code></td><td align="left">First concrete collection path encountered for this template.</td></tr><tr><td align="left"><a id="refs"></a> <code>refs</code></td><td align="left"><a href="#crawlercollectionref"><code>CrawlerCollectionRef</code></a>[]</td><td align="left">All concrete collection refs that share this template path.</td></tr><tr><td align="left"><a id="templatepath-1"></a> <code>templatePath</code></td><td align="left"><code>string</code></td><td align="left">-</td></tr></tbody></table></div>
|
|
888
|
+
<hr>
|
|
889
|
+
<p><a id="discoverpathstoolresult"></a></p>
|
|
890
|
+
<h3 id="discoverpathstoolresult">DiscoverPathsToolResult</h3>
|
|
891
|
+
<p>JSON-serializable shape returned by <code>firestore_discover_paths</code>.</p>
|
|
892
|
+
<h4 id="properties-9">Properties</h4>
|
|
893
|
+
<div class="table-scroll">
|
|
894
|
+
|
|
895
|
+
|
|
896
|
+
|
|
897
|
+
|
|
898
|
+
|
|
899
|
+
|
|
900
|
+
|
|
901
|
+
|
|
902
|
+
|
|
903
|
+
|
|
904
|
+
|
|
905
|
+
|
|
906
|
+
|
|
907
|
+
|
|
908
|
+
|
|
909
|
+
|
|
910
|
+
|
|
911
|
+
|
|
912
|
+
|
|
913
|
+
|
|
914
|
+
|
|
915
|
+
|
|
916
|
+
|
|
917
|
+
|
|
918
|
+
|
|
919
|
+
|
|
920
|
+
|
|
921
|
+
|
|
922
|
+
|
|
923
|
+
|
|
924
|
+
|
|
925
|
+
|
|
926
|
+
|
|
927
|
+
|
|
928
|
+
|
|
929
|
+
|
|
930
|
+
|
|
931
|
+
|
|
932
|
+
|
|
933
|
+
|
|
934
|
+
|
|
935
|
+
|
|
936
|
+
|
|
937
|
+
|
|
938
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="complete"></a> <code>complete</code></td><td align="left"><code>boolean</code></td><td align="left">True iff the crawl finished. Equivalent to <code>continuation === undefined</code>.</td></tr><tr><td align="left"><a id="continuation-1"></a> <code>continuation?</code></td><td align="left"><code>string</code></td><td align="left">Opaque resume handle iff the crawl paused at a payload boundary.</td></tr><tr><td align="left"><a id="dryruncostestimate"></a> <code>dryRunCostEstimate?</code></td><td align="left"><a href="#dryruncostestimate-1"><code>DryRunCostEstimate</code></a></td><td align="left">Present iff this was a <code>dryRun: true</code> preview.</td></tr><tr><td align="left"><a id="events-1"></a> <code>events</code></td><td align="left"><a href="#discoverevent"><code>DiscoverEvent</code></a>[]</td><td align="left">-</td></tr><tr><td align="left"><a id="listops-1"></a> <code>listOps</code></td><td align="left"><code>number</code></td><td align="left"><code>listCollections</code> + <code>listDocuments</code> calls — cumulative across batches.</td></tr><tr><td align="left"><a id="readops"></a> <code>readOps</code></td><td align="left"><code>number</code></td><td align="left"><code>.get()</code> calls during sampling — cumulative across batches.</td></tr><tr><td align="left"><a id="schemas"></a> <code>schemas</code></td><td align="left"><code>Record</code><<code>string</code>, <a href="#collectionschema"><code>CollectionSchema</code></a>></td><td align="left">Per-templatePath finalized schemas, keyed by templatePath.</td></tr></tbody></table></div>
|
|
939
|
+
<hr>
|
|
940
|
+
<p><a id="dryruncostestimate-1"></a></p>
|
|
941
|
+
<h3 id="dryruncostestimate">DryRunCostEstimate</h3>
|
|
942
|
+
<p>Heuristic cost projection returned by <code>dryRun: true</code>. The numbers are
|
|
943
|
+
upper-bound estimates — agents should treat them as “no more than”
|
|
944
|
+
figures, not exact predictions. Formulas are documented in-line so
|
|
945
|
+
consumers can sanity-check.</p>
|
|
946
|
+
<h4 id="properties-10">Properties</h4>
|
|
947
|
+
<div class="table-scroll">
|
|
948
|
+
|
|
949
|
+
|
|
950
|
+
|
|
951
|
+
|
|
952
|
+
|
|
953
|
+
|
|
954
|
+
|
|
955
|
+
|
|
956
|
+
|
|
957
|
+
|
|
958
|
+
|
|
959
|
+
|
|
960
|
+
|
|
961
|
+
|
|
962
|
+
|
|
963
|
+
|
|
964
|
+
|
|
965
|
+
|
|
966
|
+
|
|
967
|
+
|
|
968
|
+
|
|
969
|
+
|
|
970
|
+
|
|
971
|
+
|
|
972
|
+
|
|
973
|
+
|
|
974
|
+
|
|
975
|
+
|
|
976
|
+
|
|
977
|
+
|
|
978
|
+
|
|
979
|
+
|
|
980
|
+
|
|
981
|
+
|
|
982
|
+
|
|
983
|
+
|
|
984
|
+
|
|
985
|
+
|
|
986
|
+
|
|
987
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="estimatedlistops"></a> <code>estimatedListOps</code></td><td align="left"><code>number</code></td><td align="left">Projected total <code>listCollections</code> + <code>listDocuments</code> cost of a real crawl: <code>1 + rootCount × subtreeMultiplier</code>. The <code>1</code> is the root <code>listCollections</code>; each subtree contributes one <code>listDocuments</code> call to enumerate docs. Per-doc <code>listCollections</code> cost is folded into the multiplier (a subtree of 3 implies ~2 layers of doc listings).</td></tr><tr><td align="left"><a id="estimatedreadops"></a> <code>estimatedReadOps</code></td><td align="left"><code>number</code></td><td align="left">Projected total <code>.get()</code> cost of sampling: <code>rootCount × subtreeMultiplier × maxSamples</code>. Upper bound — <code>stopOnStable</code> early-exit and <code>cappedByMax</code> can reduce the actual draw.</td></tr><tr><td align="left"><a id="maxsamples-1"></a> <code>maxSamples</code></td><td align="left"><code>number</code></td><td align="left">The <code>maxSamples</code> value the projection used.</td></tr><tr><td align="left"><a id="rootcollectioncount"></a> <code>rootCollectionCount</code></td><td align="left"><code>number</code></td><td align="left">Number of root collections discovered by the single root listCollections call.</td></tr><tr><td align="left"><a id="rootcollectionids"></a> <code>rootCollectionIds</code></td><td align="left"><code>string</code>[]</td><td align="left">The root collection IDs (after <code>rootFilter</code> is applied, if any).</td></tr><tr><td align="left"><a id="subtreemultiplier"></a> <code>subtreeMultiplier</code></td><td align="left"><code>number</code></td><td align="left">The <code>dryRunSubtreeMultiplier</code> value the projection used.</td></tr></tbody></table></div>
|
|
988
|
+
<hr>
|
|
989
|
+
<p><a id="enumcandidate"></a></p>
|
|
990
|
+
<h3 id="enumcandidate">EnumCandidate</h3>
|
|
991
|
+
<p>Captured low-cardinality value set for enum-candidate fields.</p>
|
|
992
|
+
<h4 id="properties-11">Properties</h4>
|
|
993
|
+
<div class="table-scroll">
|
|
994
|
+
|
|
995
|
+
|
|
996
|
+
|
|
997
|
+
|
|
998
|
+
|
|
999
|
+
|
|
1000
|
+
|
|
1001
|
+
|
|
1002
|
+
|
|
1003
|
+
|
|
1004
|
+
|
|
1005
|
+
|
|
1006
|
+
|
|
1007
|
+
|
|
1008
|
+
|
|
1009
|
+
|
|
1010
|
+
|
|
1011
|
+
|
|
1012
|
+
|
|
1013
|
+
|
|
1014
|
+
|
|
1015
|
+
|
|
1016
|
+
|
|
1017
|
+
|
|
1018
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="qualifies"></a> <code>qualifies</code></td><td align="left"><code>boolean</code></td><td align="left">Whether the field still passes the threshold; flips to false if widened past it.</td></tr><tr><td align="left"><a id="threshold"></a> <code>threshold</code></td><td align="left"><code>number</code></td><td align="left">Distinct count after which the candidate is dropped (default 10).</td></tr><tr><td align="left"><a id="values"></a> <code>values</code></td><td align="left">(<code>string</code> | <code>number</code>)[]</td><td align="left">Distinct values observed so far (string/number); ordered by first-seen.</td></tr></tbody></table></div>
|
|
1019
|
+
<hr>
|
|
1020
|
+
<p><a id="fielddescriptor"></a></p>
|
|
1021
|
+
<h3 id="fielddescriptor">FieldDescriptor</h3>
|
|
1022
|
+
<p>Per-field descriptor accumulated across a sampled stream.</p>
|
|
1023
|
+
<ul>
|
|
1024
|
+
<li><code>types</code> is a deduped union; vector-dim drift keeps each dimension as a
|
|
1025
|
+
distinct entry by default (Phase 1.2 lock).</li>
|
|
1026
|
+
<li><code>presenceSeen / presenceTotal</code> ratio drives presence-based agent UX; the
|
|
1027
|
+
denominator includes docs where the field was absent.</li>
|
|
1028
|
+
<li><code>nullable</code> is an annotation, not a peer type (Phase 2.1 lock — <code>null</code>
|
|
1029
|
+
never appears as a <code>FieldType</code> in this descriptor’s types[]).</li>
|
|
1030
|
+
<li><code>enumCandidate</code> populated when the field qualifies per Phase 3.2 lock
|
|
1031
|
+
(<code>distinct ≤ 10 AND distinct ≤ samplesSeen / 2</code>); otherwise <code>undefined</code>.
|
|
1032
|
+
Tracked only for <code>scalar:string</code> and <code>scalar:integer/double</code>; other kinds
|
|
1033
|
+
are not enum candidates.</li>
|
|
1034
|
+
<li><code>example</code> is one observed non-null value per Phase 3.2 lock. Drives form
|
|
1035
|
+
placeholders, fixtures, README payloads. JSON-stringifiable (wire-typed
|
|
1036
|
+
primitives + arrays + plain-object maps).</li>
|
|
1037
|
+
<li><code>reservedReason</code> populated by the wire layer when the field name matches
|
|
1038
|
+
a reserved-name pattern per 0.B; agents/codegen use it to skip or
|
|
1039
|
+
sanitize the field.</li>
|
|
1040
|
+
</ul>
|
|
1041
|
+
<h4 id="properties-12">Properties</h4>
|
|
1042
|
+
<div class="table-scroll">
|
|
1043
|
+
|
|
1044
|
+
|
|
1045
|
+
|
|
1046
|
+
|
|
1047
|
+
|
|
1048
|
+
|
|
1049
|
+
|
|
1050
|
+
|
|
1051
|
+
|
|
1052
|
+
|
|
1053
|
+
|
|
1054
|
+
|
|
1055
|
+
|
|
1056
|
+
|
|
1057
|
+
|
|
1058
|
+
|
|
1059
|
+
|
|
1060
|
+
|
|
1061
|
+
|
|
1062
|
+
|
|
1063
|
+
|
|
1064
|
+
|
|
1065
|
+
|
|
1066
|
+
|
|
1067
|
+
|
|
1068
|
+
|
|
1069
|
+
|
|
1070
|
+
|
|
1071
|
+
|
|
1072
|
+
|
|
1073
|
+
|
|
1074
|
+
|
|
1075
|
+
|
|
1076
|
+
|
|
1077
|
+
|
|
1078
|
+
|
|
1079
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="enumcandidate-1"></a> <code>enumCandidate?</code></td><td align="left"><a href="#enumcandidate"><code>EnumCandidate</code></a></td></tr><tr><td align="left"><a id="example"></a> <code>example?</code></td><td align="left"><a href="#examplevalue"><code>ExampleValue</code></a></td></tr><tr><td align="left"><a id="nullable"></a> <code>nullable</code></td><td align="left"><code>boolean</code></td></tr><tr><td align="left"><a id="presenceseen"></a> <code>presenceSeen</code></td><td align="left"><code>number</code></td></tr><tr><td align="left"><a id="presencetotal"></a> <code>presenceTotal</code></td><td align="left"><code>number</code></td></tr><tr><td align="left"><a id="reservedreason"></a> <code>reservedReason?</code></td><td align="left"><a href="#reservedfieldreason"><code>ReservedFieldReason</code></a></td></tr><tr><td align="left"><a id="types"></a> <code>types</code></td><td align="left"><a href="#fieldtype"><code>FieldType</code></a>[]</td></tr></tbody></table></div>
|
|
1080
|
+
<hr>
|
|
1081
|
+
<p><a id="fieldobservation"></a></p>
|
|
1082
|
+
<h3 id="fieldobservation">FieldObservation</h3>
|
|
1083
|
+
<p>A single field observation passed into <code>mergeDoc</code>. The wire layer
|
|
1084
|
+
(<code>wire.ts</code>) is responsible for producing this shape.</p>
|
|
1085
|
+
<h4 id="properties-13">Properties</h4>
|
|
1086
|
+
<div class="table-scroll">
|
|
1087
|
+
|
|
1088
|
+
|
|
1089
|
+
|
|
1090
|
+
|
|
1091
|
+
|
|
1092
|
+
|
|
1093
|
+
|
|
1094
|
+
|
|
1095
|
+
|
|
1096
|
+
|
|
1097
|
+
|
|
1098
|
+
|
|
1099
|
+
|
|
1100
|
+
|
|
1101
|
+
|
|
1102
|
+
|
|
1103
|
+
|
|
1104
|
+
|
|
1105
|
+
|
|
1106
|
+
|
|
1107
|
+
|
|
1108
|
+
|
|
1109
|
+
|
|
1110
|
+
|
|
1111
|
+
|
|
1112
|
+
|
|
1113
|
+
|
|
1114
|
+
|
|
1115
|
+
|
|
1116
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="enumsample"></a> <code>enumSample?</code></td><td align="left"><code>EnumSample</code></td><td align="left">For enum-eligible scalars (string/int/double), the raw value. Used to update enumCandidate.</td></tr><tr><td align="left"><a id="example-1"></a> <code>example?</code></td><td align="left"><code>ExampleValue</code></td><td align="left">A JSON-safe sample of the wire value. Used to populate <code>example</code> on the descriptor when no example exists yet. Optional — wire layer omits for kinds with no codegen-friendly representation.</td></tr><tr><td align="left"><a id="isnull"></a> <code>isNull</code></td><td align="left"><code>boolean</code></td><td align="left">True iff the wire value was a null literal.</td></tr><tr><td align="left"><a id="type"></a> <code>type</code></td><td align="left"><a href="#fieldtype"><code>FieldType</code></a></td><td align="left">The inferred FieldType for this observation. <code>null</code> is allowed and is surfaced via <code>isNull</code>; the <code>type</code> itself is <code>{kind:'scalar', type:'null'}</code> by convention but is NOT added to the descriptor’s types[] union.</td></tr></tbody></table></div>
|
|
1117
|
+
<hr>
|
|
1118
|
+
<p><a id="fieldschema"></a></p>
|
|
1119
|
+
<h3 id="fieldschema">FieldSchema</h3>
|
|
1120
|
+
<p>Per-collection accumulated schema. <code>samplesSeen</code> is the doc count fed
|
|
1121
|
+
through <code>mergeDoc</code>, used as the presence denominator.</p>
|
|
1122
|
+
<h4 id="properties-14">Properties</h4>
|
|
1123
|
+
<div class="table-scroll">
|
|
1124
|
+
|
|
1125
|
+
|
|
1126
|
+
|
|
1127
|
+
|
|
1128
|
+
|
|
1129
|
+
|
|
1130
|
+
|
|
1131
|
+
|
|
1132
|
+
|
|
1133
|
+
|
|
1134
|
+
|
|
1135
|
+
|
|
1136
|
+
|
|
1137
|
+
|
|
1138
|
+
|
|
1139
|
+
|
|
1140
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="fields"></a> <code>fields</code></td><td align="left"><code>Record</code><<code>string</code>, <a href="#fielddescriptor"><code>FieldDescriptor</code></a>></td></tr><tr><td align="left"><a id="samplesseen"></a> <code>samplesSeen</code></td><td align="left"><code>number</code></td></tr></tbody></table></div>
|
|
1141
|
+
<hr>
|
|
1142
|
+
<p><a id="findcollectiongrouphost"></a></p>
|
|
1143
|
+
<h3 id="findcollectiongrouphost">FindCollectionGroupHost</h3>
|
|
1144
|
+
<h4 id="properties-15">Properties</h4>
|
|
1145
|
+
<div class="table-scroll">
|
|
1146
|
+
|
|
1147
|
+
|
|
1148
|
+
|
|
1149
|
+
|
|
1150
|
+
|
|
1151
|
+
|
|
1152
|
+
|
|
1153
|
+
|
|
1154
|
+
|
|
1155
|
+
|
|
1156
|
+
|
|
1157
|
+
|
|
1158
|
+
|
|
1159
|
+
|
|
1160
|
+
|
|
1161
|
+
|
|
1162
|
+
|
|
1163
|
+
|
|
1164
|
+
|
|
1165
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="sampledoccount"></a> <code>sampleDocCount</code></td><td align="left"><code>number</code></td><td align="left">Number of docs in the N-doc draw that shared this parent path. NOT the host’s total doc count — that’s a separate query.</td></tr><tr><td align="left"><a id="templatepath-2"></a> <code>templatePath</code></td><td align="left"><code>string</code></td><td align="left">Template-form parent collection path, e.g. <code>users/{userId}/posts</code>.</td></tr></tbody></table></div>
|
|
1166
|
+
<hr>
|
|
1167
|
+
<p><a id="findcollectiongroupoptions"></a></p>
|
|
1168
|
+
<h3 id="findcollectiongroupoptions">FindCollectionGroupOptions</h3>
|
|
1169
|
+
<h4 id="properties-16">Properties</h4>
|
|
1170
|
+
<div class="table-scroll">
|
|
1171
|
+
|
|
1172
|
+
|
|
1173
|
+
|
|
1174
|
+
|
|
1175
|
+
|
|
1176
|
+
|
|
1177
|
+
|
|
1178
|
+
|
|
1179
|
+
|
|
1180
|
+
|
|
1181
|
+
|
|
1182
|
+
|
|
1183
|
+
|
|
1184
|
+
|
|
1185
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="limit-2"></a> <code>limit?</code></td><td align="left"><code>number</code></td><td align="left">Max docs to fetch from the collection group. Default 100 — covers ~22 distinct hosts with high confidence per the coupon-collector heuristic. Raise this if the result reports <code>limitWasReached: true</code> and you suspect more hosts exist.</td></tr></tbody></table></div>
|
|
1186
|
+
<hr>
|
|
1187
|
+
<p><a id="findcollectiongroupresult"></a></p>
|
|
1188
|
+
<h3 id="findcollectiongroupresult">FindCollectionGroupResult</h3>
|
|
1189
|
+
<h4 id="properties-17">Properties</h4>
|
|
1190
|
+
<div class="table-scroll">
|
|
1191
|
+
|
|
1192
|
+
|
|
1193
|
+
|
|
1194
|
+
|
|
1195
|
+
|
|
1196
|
+
|
|
1197
|
+
|
|
1198
|
+
|
|
1199
|
+
|
|
1200
|
+
|
|
1201
|
+
|
|
1202
|
+
|
|
1203
|
+
|
|
1204
|
+
|
|
1205
|
+
|
|
1206
|
+
|
|
1207
|
+
|
|
1208
|
+
|
|
1209
|
+
|
|
1210
|
+
|
|
1211
|
+
|
|
1212
|
+
|
|
1213
|
+
|
|
1214
|
+
|
|
1215
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="hosts"></a> <code>hosts</code></td><td align="left"><a href="#findcollectiongrouphost"><code>FindCollectionGroupHost</code></a>[]</td><td align="left">Discovered hosts, deduped by templatePath. Order is insertion order (i.e. the order in which the first matching doc surfaced).</td></tr><tr><td align="left"><a id="limitwasreached"></a> <code>limitWasReached</code></td><td align="left"><code>boolean</code></td><td align="left">True iff <code>reads === limit</code>, signaling the agent should consider raising <code>limit</code> if they need exhaustive host coverage.</td></tr><tr><td align="left"><a id="reads"></a> <code>reads</code></td><td align="left"><code>number</code></td><td align="left">Total docs read — the cost line item. Always <code>min(limit, totalDocsInGroup)</code>.</td></tr></tbody></table></div>
|
|
1216
|
+
<hr>
|
|
1217
|
+
<p><a id="firestorediscovertooldeps"></a></p>
|
|
1218
|
+
<h3 id="firestorediscovertooldeps">FirestoreDiscoverToolDeps</h3>
|
|
1219
|
+
<h4 id="methods-8">Methods</h4>
|
|
1220
|
+
<p><a id="resolvedb"></a></p>
|
|
1221
|
+
<h5 id="resolvedb">resolveDb()</h5>
|
|
1222
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#61AFEF">resolveDb</span><span style="color:#ABB2BF">(): </span><span style="color:#E06C75">CrawlerFirestore</span><span style="color:#56B6C2"> &</span><span style="color:#E06C75"> CollectionGroupCapableFirestore</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1223
|
+
<p>Resolver returning the CrawlerFirestore to scan. Called per
|
|
1224
|
+
dispatch (F4). For <code>firestore_find_collection_group</code> the returned
|
|
1225
|
+
Firestore must also satisfy <a href="#collectiongroupcapablefirestore">CollectionGroupCapableFirestore</a>.</p>
|
|
1226
|
+
<h6 id="returns-28">Returns</h6>
|
|
1227
|
+
<p><a href="#crawlerfirestore"><code>CrawlerFirestore</code></a> & <a href="#collectiongroupcapablefirestore"><code>CollectionGroupCapableFirestore</code></a></p>
|
|
1228
|
+
<hr>
|
|
1229
|
+
<p><a id="fullcrawlresult"></a></p>
|
|
1230
|
+
<h3 id="fullcrawlresult">FullCrawlResult</h3>
|
|
1231
|
+
<p>Result of a full crawl (structure + sampling). Augments <code>CrawlResult</code>
|
|
1232
|
+
with the per-templatePath finalized schemas the agent surface consumes.</p>
|
|
1233
|
+
<p><code>continuation</code> is present iff the crawl paused at a <code>maxBatchBytes</code>
|
|
1234
|
+
boundary; agents resume by calling <code>crawl(db, { continuation }, sessions)</code>.
|
|
1235
|
+
<code>complete</code> is true iff the crawl finished — equivalent to
|
|
1236
|
+
<code>continuation === undefined</code> but more readable at call sites.</p>
|
|
1237
|
+
<p>Counter fields (<code>listOps</code>, <code>readOps</code>) are <em>cumulative</em> across batches:
|
|
1238
|
+
a paused crawl returns the running total so the agent’s cost-reporting
|
|
1239
|
+
doesn’t have to do the bookkeeping.</p>
|
|
1240
|
+
<h4 id="extends-1">Extends</h4>
|
|
1241
|
+
<ul>
|
|
1242
|
+
<li><a href="#crawlresult"><code>CrawlResult</code></a></li>
|
|
1243
|
+
</ul>
|
|
1244
|
+
<h4 id="properties-18">Properties</h4>
|
|
1245
|
+
<div class="table-scroll">
|
|
1246
|
+
|
|
1247
|
+
|
|
1248
|
+
|
|
1249
|
+
|
|
1250
|
+
|
|
1251
|
+
|
|
1252
|
+
|
|
1253
|
+
|
|
1254
|
+
|
|
1255
|
+
|
|
1256
|
+
|
|
1257
|
+
|
|
1258
|
+
|
|
1259
|
+
|
|
1260
|
+
|
|
1261
|
+
|
|
1262
|
+
|
|
1263
|
+
|
|
1264
|
+
|
|
1265
|
+
|
|
1266
|
+
|
|
1267
|
+
|
|
1268
|
+
|
|
1269
|
+
|
|
1270
|
+
|
|
1271
|
+
|
|
1272
|
+
|
|
1273
|
+
|
|
1274
|
+
|
|
1275
|
+
|
|
1276
|
+
|
|
1277
|
+
|
|
1278
|
+
|
|
1279
|
+
|
|
1280
|
+
|
|
1281
|
+
|
|
1282
|
+
|
|
1283
|
+
|
|
1284
|
+
|
|
1285
|
+
|
|
1286
|
+
|
|
1287
|
+
|
|
1288
|
+
|
|
1289
|
+
|
|
1290
|
+
|
|
1291
|
+
|
|
1292
|
+
|
|
1293
|
+
|
|
1294
|
+
|
|
1295
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="complete-1"></a> <code>complete</code></td><td align="left"><code>boolean</code></td><td align="left">True iff the crawl completed (no continuation pending).</td></tr><tr><td align="left"><a id="continuation-2"></a> <code>continuation?</code></td><td align="left"><code>string</code></td><td align="left">Opaque resume handle (only present when paused).</td></tr><tr><td align="left"><a id="discovered-1"></a> <code>discovered</code></td><td align="left"><code>Map</code><<code>string</code>, <a href="#discoveredcollection"><code>DiscoveredCollection</code></a>></td><td align="left">-</td></tr><tr><td align="left"><a id="dryruncostestimate-2"></a> <code>dryRunCostEstimate?</code></td><td align="left"><a href="#dryruncostestimate-1"><code>DryRunCostEstimate</code></a></td><td align="left">Present iff the crawl was a <code>dryRun: true</code> preview. Heuristic projection of what a full crawl would cost; see <a href="#dryrun">CrawlOptions.dryRun</a>.</td></tr><tr><td align="left"><a id="events-2"></a> <code>events</code></td><td align="left"><a href="#discoverevent"><code>DiscoverEvent</code></a>[]</td><td align="left">-</td></tr><tr><td align="left"><a id="finalizedschemas"></a> <code>finalizedSchemas</code></td><td align="left"><code>Map</code><<code>string</code>, <a href="#collectionschema"><code>CollectionSchema</code></a>></td><td align="left">-</td></tr><tr><td align="left"><a id="listops-2"></a> <code>listOps</code></td><td align="left"><code>number</code></td><td align="left">Total <code>listCollections</code> + <code>listDocuments</code> calls — feeds cost reporting.</td></tr><tr><td align="left"><a id="readops-1"></a> <code>readOps</code></td><td align="left"><code>number</code></td><td align="left"><code>.get()</code> calls issued during sampling — feeds cost reporting.</td></tr></tbody></table></div>
|
|
1296
|
+
<hr>
|
|
1297
|
+
<p><a id="persistedcrawlstate"></a></p>
|
|
1298
|
+
<h3 id="persistedcrawlstate">PersistedCrawlState</h3>
|
|
1299
|
+
<p>JSON-serializable snapshot of an in-progress crawl. Stored in the
|
|
1300
|
+
session between batches. Refs (CollectionRef/DocumentRef) carry
|
|
1301
|
+
methods so they can’t be persisted directly — we serialize their
|
|
1302
|
+
paths and reconstruct via <code>db.collection(path)</code> / <code>db.doc(path)</code> on
|
|
1303
|
+
resume.</p>
|
|
1304
|
+
<p>Phase invariants:</p>
|
|
1305
|
+
<ul>
|
|
1306
|
+
<li><code>structure</code> phase: <code>frontierPaths</code> may be non-empty; <code>samplingQueue</code>
|
|
1307
|
+
is empty.</li>
|
|
1308
|
+
<li><code>sampling</code> phase: <code>frontierPaths</code> is empty; <code>samplingQueue</code> lists
|
|
1309
|
+
the templatePaths still pending. Existing entries in
|
|
1310
|
+
<code>finalizedSchemas</code> are immutable across the rest of the crawl.</li>
|
|
1311
|
+
</ul>
|
|
1312
|
+
<h4 id="properties-19">Properties</h4>
|
|
1313
|
+
<div class="table-scroll">
|
|
1314
|
+
|
|
1315
|
+
|
|
1316
|
+
|
|
1317
|
+
|
|
1318
|
+
|
|
1319
|
+
|
|
1320
|
+
|
|
1321
|
+
|
|
1322
|
+
|
|
1323
|
+
|
|
1324
|
+
|
|
1325
|
+
|
|
1326
|
+
|
|
1327
|
+
|
|
1328
|
+
|
|
1329
|
+
|
|
1330
|
+
|
|
1331
|
+
|
|
1332
|
+
|
|
1333
|
+
|
|
1334
|
+
|
|
1335
|
+
|
|
1336
|
+
|
|
1337
|
+
|
|
1338
|
+
|
|
1339
|
+
|
|
1340
|
+
|
|
1341
|
+
|
|
1342
|
+
|
|
1343
|
+
|
|
1344
|
+
|
|
1345
|
+
|
|
1346
|
+
|
|
1347
|
+
|
|
1348
|
+
|
|
1349
|
+
|
|
1350
|
+
|
|
1351
|
+
|
|
1352
|
+
|
|
1353
|
+
|
|
1354
|
+
|
|
1355
|
+
|
|
1356
|
+
|
|
1357
|
+
|
|
1358
|
+
|
|
1359
|
+
|
|
1360
|
+
|
|
1361
|
+
|
|
1362
|
+
|
|
1363
|
+
|
|
1364
|
+
|
|
1365
|
+
|
|
1366
|
+
|
|
1367
|
+
|
|
1368
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="currentdepth"></a> <code>currentDepth</code></td><td align="left"><code>number</code></td><td align="left">Layer index after the last completed structure pass.</td></tr><tr><td align="left"><a id="discovered-2"></a> <code>discovered</code></td><td align="left"><code>Record</code><<code>string</code>, <a href="#persisteddiscoveredcollection"><code>PersistedDiscoveredCollection</code></a>></td><td align="left">Discovered map serialized — all paths only, refs reconstructed on resume.</td></tr><tr><td align="left"><a id="finalizedschemas-1"></a> <code>finalizedSchemas</code></td><td align="left"><code>Record</code><<code>string</code>, <a href="#collectionschema"><code>CollectionSchema</code></a>></td><td align="left">Per-templatePath finalized schemas — immutable once set.</td></tr><tr><td align="left"><a id="frontierpaths"></a> <code>frontierPaths</code></td><td align="left"><code>string</code>[]</td><td align="left">Concrete collection paths to expand in the next structure layer.</td></tr><tr><td align="left"><a id="listops-3"></a> <code>listOps</code></td><td align="left"><code>number</code></td><td align="left">Cumulative cost counters across batches.</td></tr><tr><td align="left"><a id="maxdepth-1"></a> <code>maxDepth</code></td><td align="left"><code>number</code></td><td align="left">Crawl options carried so resume preserves caps the agent set.</td></tr><tr><td align="left"><a id="phase"></a> <code>phase</code></td><td align="left"><code>"structure"</code> | <code>"sampling"</code></td><td align="left">-</td></tr><tr><td align="left"><a id="readops-2"></a> <code>readOps</code></td><td align="left"><code>number</code></td><td align="left">-</td></tr><tr><td align="left"><a id="samplingqueue"></a> <code>samplingQueue</code></td><td align="left"><code>string</code>[]</td><td align="left">TemplatePaths still to sample. Drained left-to-right.</td></tr></tbody></table></div>
|
|
1369
|
+
<hr>
|
|
1370
|
+
<p><a id="persisteddiscoveredcollection"></a></p>
|
|
1371
|
+
<h3 id="persisteddiscoveredcollection">PersistedDiscoveredCollection</h3>
|
|
1372
|
+
<p>Persisted shape of a <code>DiscoveredCollection</code> (refs → paths).</p>
|
|
1373
|
+
<h4 id="properties-20">Properties</h4>
|
|
1374
|
+
<div class="table-scroll">
|
|
1375
|
+
|
|
1376
|
+
|
|
1377
|
+
|
|
1378
|
+
|
|
1379
|
+
|
|
1380
|
+
|
|
1381
|
+
|
|
1382
|
+
|
|
1383
|
+
|
|
1384
|
+
|
|
1385
|
+
|
|
1386
|
+
|
|
1387
|
+
|
|
1388
|
+
|
|
1389
|
+
|
|
1390
|
+
|
|
1391
|
+
|
|
1392
|
+
|
|
1393
|
+
|
|
1394
|
+
|
|
1395
|
+
|
|
1396
|
+
|
|
1397
|
+
|
|
1398
|
+
|
|
1399
|
+
|
|
1400
|
+
|
|
1401
|
+
|
|
1402
|
+
|
|
1403
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="depth-1"></a> <code>depth</code></td><td align="left"><code>number</code></td></tr><tr><td align="left"><a id="docrefpaths"></a> <code>docRefPaths</code></td><td align="left"><code>string</code>[]</td></tr><tr><td align="left"><a id="examplepath-2"></a> <code>examplePath</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="refpaths"></a> <code>refPaths</code></td><td align="left"><code>string</code>[]</td></tr><tr><td align="left"><a id="templatepath-3"></a> <code>templatePath</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
1404
|
+
<hr>
|
|
1405
|
+
<p><a id="sessionerror"></a></p>
|
|
1406
|
+
<h3 id="sessionerror">SessionError</h3>
|
|
1407
|
+
<h4 id="properties-21">Properties</h4>
|
|
1408
|
+
<div class="table-scroll">
|
|
1409
|
+
|
|
1410
|
+
|
|
1411
|
+
|
|
1412
|
+
|
|
1413
|
+
|
|
1414
|
+
|
|
1415
|
+
|
|
1416
|
+
|
|
1417
|
+
|
|
1418
|
+
|
|
1419
|
+
|
|
1420
|
+
|
|
1421
|
+
|
|
1422
|
+
|
|
1423
|
+
|
|
1424
|
+
|
|
1425
|
+
|
|
1426
|
+
|
|
1427
|
+
|
|
1428
|
+
|
|
1429
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="code"></a> <code>code</code></td><td align="left"><a href="#sessionerrorcode-1"><code>SessionErrorCode</code></a></td></tr><tr><td align="left"><a id="message"></a> <code>message</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="recoveryhint"></a> <code>recoveryHint</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
1430
|
+
<hr>
|
|
1431
|
+
<p><a id="sessionrecord"></a></p>
|
|
1432
|
+
<h3 id="sessionrecord">SessionRecord</h3>
|
|
1433
|
+
<p>A live session record. <code>state</code> is opaque to the store — Item 4.2 will
|
|
1434
|
+
instantiate <code>SessionStore</code> with the concrete crawler-state type.</p>
|
|
1435
|
+
<h4 id="type-parameters-1">Type Parameters</h4>
|
|
1436
|
+
<div class="table-scroll">
|
|
1437
|
+
|
|
1438
|
+
|
|
1439
|
+
|
|
1440
|
+
|
|
1441
|
+
|
|
1442
|
+
|
|
1443
|
+
|
|
1444
|
+
|
|
1445
|
+
|
|
1446
|
+
|
|
1447
|
+
<table><thead><tr><th align="left">Type Parameter</th></tr></thead><tbody><tr><td align="left"><code>TState</code></td></tr></tbody></table></div>
|
|
1448
|
+
<h4 id="properties-22">Properties</h4>
|
|
1449
|
+
<div class="table-scroll">
|
|
1450
|
+
|
|
1451
|
+
|
|
1452
|
+
|
|
1453
|
+
|
|
1454
|
+
|
|
1455
|
+
|
|
1456
|
+
|
|
1457
|
+
|
|
1458
|
+
|
|
1459
|
+
|
|
1460
|
+
|
|
1461
|
+
|
|
1462
|
+
|
|
1463
|
+
|
|
1464
|
+
|
|
1465
|
+
|
|
1466
|
+
|
|
1467
|
+
|
|
1468
|
+
|
|
1469
|
+
|
|
1470
|
+
|
|
1471
|
+
|
|
1472
|
+
|
|
1473
|
+
|
|
1474
|
+
|
|
1475
|
+
|
|
1476
|
+
|
|
1477
|
+
|
|
1478
|
+
|
|
1479
|
+
|
|
1480
|
+
|
|
1481
|
+
|
|
1482
|
+
|
|
1483
|
+
|
|
1484
|
+
|
|
1485
|
+
|
|
1486
|
+
|
|
1487
|
+
|
|
1488
|
+
|
|
1489
|
+
|
|
1490
|
+
|
|
1491
|
+
|
|
1492
|
+
|
|
1493
|
+
|
|
1494
|
+
|
|
1495
|
+
|
|
1496
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Modifier</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="bytes"></a> <code>bytes</code></td><td align="left"><code>public</code></td><td align="left"><code>number</code></td><td align="left">Caller-reported payload size for byte-cap enforcement.</td></tr><tr><td align="left"><a id="createdat"></a> <code>createdAt</code></td><td align="left"><code>readonly</code></td><td align="left"><code>number</code></td><td align="left">-</td></tr><tr><td align="left"><a id="id-2"></a> <code>id</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td><td align="left">Raw ULID — internal id; not the token surfaced to agents.</td></tr><tr><td align="left"><a id="lastaccessedat"></a> <code>lastAccessedAt</code></td><td align="left"><code>public</code></td><td align="left"><code>number</code></td><td align="left">Last get/update; drives both LRU eviction and TTL.</td></tr><tr><td align="left"><a id="state"></a> <code>state</code></td><td align="left"><code>public</code></td><td align="left"><code>TState</code></td><td align="left">-</td></tr><tr><td align="left"><a id="token"></a> <code>token</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td><td align="left">Opaque continuation handle: <code>disc_<base64url-ulid></code>.</td></tr></tbody></table></div>
|
|
1497
|
+
<hr>
|
|
1498
|
+
<p><a id="sessionstoreoptions"></a></p>
|
|
1499
|
+
<h3 id="sessionstoreoptions">SessionStoreOptions</h3>
|
|
1500
|
+
<h4 id="properties-23">Properties</h4>
|
|
1501
|
+
<div class="table-scroll">
|
|
1502
|
+
|
|
1503
|
+
|
|
1504
|
+
|
|
1505
|
+
|
|
1506
|
+
|
|
1507
|
+
|
|
1508
|
+
|
|
1509
|
+
|
|
1510
|
+
|
|
1511
|
+
|
|
1512
|
+
|
|
1513
|
+
|
|
1514
|
+
|
|
1515
|
+
|
|
1516
|
+
|
|
1517
|
+
|
|
1518
|
+
|
|
1519
|
+
|
|
1520
|
+
|
|
1521
|
+
|
|
1522
|
+
|
|
1523
|
+
|
|
1524
|
+
|
|
1525
|
+
|
|
1526
|
+
|
|
1527
|
+
|
|
1528
|
+
|
|
1529
|
+
|
|
1530
|
+
|
|
1531
|
+
|
|
1532
|
+
|
|
1533
|
+
|
|
1534
|
+
|
|
1535
|
+
|
|
1536
|
+
|
|
1537
|
+
|
|
1538
|
+
|
|
1539
|
+
|
|
1540
|
+
|
|
1541
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="evictionlogsize"></a> <code>evictionLogSize?</code></td><td align="left"><code>number</code></td><td align="left">-</td></tr><tr><td align="left"><a id="maxsessionbytes"></a> <code>maxSessionBytes?</code></td><td align="left"><code>number</code></td><td align="left">-</td></tr><tr><td align="left"><a id="maxsessions"></a> <code>maxSessions?</code></td><td align="left"><code>number</code></td><td align="left">-</td></tr><tr><td align="left"><a id="now"></a> <code>now?</code></td><td align="left">() => <code>number</code></td><td align="left">Test seam — defaults to <code>Date.now</code>.</td></tr><tr><td align="left"><a id="randombytes"></a> <code>randomBytes?</code></td><td align="left">(<code>n</code>: <code>number</code>) => <code>Uint8Array</code></td><td align="left">Test seam — defaults to <code>crypto.randomBytes</code>.</td></tr><tr><td align="left"><a id="ttlms"></a> <code>ttlMs?</code></td><td align="left"><code>number</code></td><td align="left">-</td></tr></tbody></table></div>
|
|
1542
|
+
<hr>
|
|
1543
|
+
<p><a id="wiredocumentsnapshot"></a></p>
|
|
1544
|
+
<h3 id="wiredocumentsnapshot">WireDocumentSnapshot</h3>
|
|
1545
|
+
<p>Minimal document snapshot shape needed for wire-type inference.</p>
|
|
1546
|
+
<h4 id="properties-24">Properties</h4>
|
|
1547
|
+
<div class="table-scroll">
|
|
1548
|
+
|
|
1549
|
+
|
|
1550
|
+
|
|
1551
|
+
|
|
1552
|
+
|
|
1553
|
+
|
|
1554
|
+
|
|
1555
|
+
|
|
1556
|
+
|
|
1557
|
+
|
|
1558
|
+
|
|
1559
|
+
|
|
1560
|
+
|
|
1561
|
+
|
|
1562
|
+
|
|
1563
|
+
|
|
1564
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="ref-1"></a> <code>ref?</code></td><td align="left">{ <code>path?</code>: <code>string</code>; }</td></tr><tr><td align="left"><code>ref.path?</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
1565
|
+
<h2 id="type-aliases">Type Aliases</h2>
|
|
1566
|
+
<p><a id="discoverevent"></a></p>
|
|
1567
|
+
<h3 id="discoverevent">DiscoverEvent</h3>
|
|
1568
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> DiscoverEvent</span><span style="color:#56B6C2"> =</span></span>
|
|
1569
|
+
<span class="line"><span style="color:#ABB2BF"> | {</span></span>
|
|
1570
|
+
<span class="line"><span style="color:#E06C75"> depth</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">number</span><span style="color:#ABB2BF">;</span></span>
|
|
1571
|
+
<span class="line"><span style="color:#E06C75"> kind</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"collection_discovered"</span><span style="color:#ABB2BF">;</span></span>
|
|
1572
|
+
<span class="line"><span style="color:#E06C75"> parentPath</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span>
|
|
1573
|
+
<span class="line"><span style="color:#E06C75"> templatePath</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span>
|
|
1574
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span>
|
|
1575
|
+
<span class="line"><span style="color:#ABB2BF"> | {</span></span>
|
|
1576
|
+
<span class="line"><span style="color:#E06C75"> changes</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">SchemaChange</span><span style="color:#ABB2BF">[];</span></span>
|
|
1577
|
+
<span class="line"><span style="color:#E06C75"> kind</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"schema_updated"</span><span style="color:#ABB2BF">;</span></span>
|
|
1578
|
+
<span class="line"><span style="color:#E06C75"> templatePath</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span>
|
|
1579
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span>
|
|
1580
|
+
<span class="line"><span style="color:#ABB2BF"> | {</span></span>
|
|
1581
|
+
<span class="line"><span style="color:#E06C75"> declaredAt</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">number</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">null</span><span style="color:#ABB2BF">;</span></span>
|
|
1582
|
+
<span class="line"><span style="color:#E06C75"> kind</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"sampling_complete"</span><span style="color:#ABB2BF">;</span></span>
|
|
1583
|
+
<span class="line"><span style="color:#E06C75"> samplesSeen</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">number</span><span style="color:#ABB2BF">;</span></span>
|
|
1584
|
+
<span class="line"><span style="color:#E06C75"> samplingComplete</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">SamplingComplete</span><span style="color:#ABB2BF">;</span></span>
|
|
1585
|
+
<span class="line"><span style="color:#E06C75"> templatePath</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span>
|
|
1586
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span>
|
|
1587
|
+
<span class="line"><span style="color:#ABB2BF"> | {</span></span>
|
|
1588
|
+
<span class="line"><span style="color:#E06C75"> code</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span>
|
|
1589
|
+
<span class="line"><span style="color:#E06C75"> kind</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"error"</span><span style="color:#ABB2BF">;</span></span>
|
|
1590
|
+
<span class="line"><span style="color:#E06C75"> message</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span>
|
|
1591
|
+
<span class="line"><span style="color:#E06C75"> templatePath</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span>
|
|
1592
|
+
<span class="line"><span style="color:#ABB2BF">};</span></span></code></pre>
|
|
1593
|
+
<p>Event stream emitted by <code>firestore_discover_paths</code>. Frozen enum per
|
|
1594
|
+
Phase 3.3 lock. Order within a batch is meaningful — agents may rely on
|
|
1595
|
+
<code>collection_discovered</code> arriving before <code>schema_updated</code> for the same path.</p>
|
|
1596
|
+
<hr>
|
|
1597
|
+
<p><a id="examplevalue"></a></p>
|
|
1598
|
+
<h3 id="examplevalue">ExampleValue</h3>
|
|
1599
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> ExampleValue</span><span style="color:#56B6C2"> =</span></span>
|
|
1600
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">string</span></span>
|
|
1601
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">number</span></span>
|
|
1602
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">boolean</span></span>
|
|
1603
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">null</span></span>
|
|
1604
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">ExampleValue</span><span style="color:#ABB2BF">[]</span></span>
|
|
1605
|
+
<span class="line"><span style="color:#ABB2BF"> | {</span></span>
|
|
1606
|
+
<span class="line"><span style="color:#ABB2BF">[</span><span style="color:#E06C75;font-style:italic">k</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">]: </span><span style="color:#E5C07B">ExampleValue</span><span style="color:#ABB2BF">;</span></span>
|
|
1607
|
+
<span class="line"><span style="color:#ABB2BF">};</span></span></code></pre>
|
|
1608
|
+
<p>A representative observed value, JSON-safe.</p>
|
|
1609
|
+
<hr>
|
|
1610
|
+
<p><a id="fieldpath"></a></p>
|
|
1611
|
+
<h3 id="fieldpath">FieldPath</h3>
|
|
1612
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> FieldPath</span><span style="color:#56B6C2"> =</span><span style="color:#E5C07B"> ReadonlyArray</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"[]"</span><span style="color:#ABB2BF">>;</span></span></code></pre>
|
|
1613
|
+
<p>Path within a doc to a field. <code>'[]'</code> segment denotes array element scope,
|
|
1614
|
+
used for nested-array/map descriptors.</p>
|
|
1615
|
+
<hr>
|
|
1616
|
+
<p><a id="fieldtype"></a></p>
|
|
1617
|
+
<h3 id="fieldtype">FieldType</h3>
|
|
1618
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> FieldType</span><span style="color:#56B6C2"> =</span></span>
|
|
1619
|
+
<span class="line"><span style="color:#ABB2BF"> | {</span></span>
|
|
1620
|
+
<span class="line"><span style="color:#E06C75"> kind</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"scalar"</span><span style="color:#ABB2BF">;</span></span>
|
|
1621
|
+
<span class="line"><span style="color:#E06C75"> type</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FirestoreScalarType</span><span style="color:#ABB2BF">;</span></span>
|
|
1622
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span>
|
|
1623
|
+
<span class="line"><span style="color:#ABB2BF"> | {</span></span>
|
|
1624
|
+
<span class="line"><span style="color:#E06C75"> kind</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"reference"</span><span style="color:#ABB2BF">;</span></span>
|
|
1625
|
+
<span class="line"><span style="color:#E06C75"> targetCollection</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span>
|
|
1626
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span>
|
|
1627
|
+
<span class="line"><span style="color:#ABB2BF"> | {</span></span>
|
|
1628
|
+
<span class="line"><span style="color:#E06C75"> elementTypes</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FieldType</span><span style="color:#ABB2BF">[];</span></span>
|
|
1629
|
+
<span class="line"><span style="color:#E06C75"> kind</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"array"</span><span style="color:#ABB2BF">;</span></span>
|
|
1630
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span>
|
|
1631
|
+
<span class="line"><span style="color:#ABB2BF"> | {</span></span>
|
|
1632
|
+
<span class="line"><span style="color:#E06C75"> fields</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Record</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">FieldDescriptor</span><span style="color:#ABB2BF">>;</span></span>
|
|
1633
|
+
<span class="line"><span style="color:#E06C75"> kind</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"map"</span><span style="color:#ABB2BF">;</span></span>
|
|
1634
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span>
|
|
1635
|
+
<span class="line"><span style="color:#ABB2BF"> | {</span></span>
|
|
1636
|
+
<span class="line"><span style="color:#E06C75"> dimension</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">number</span><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"mixed"</span><span style="color:#ABB2BF">;</span></span>
|
|
1637
|
+
<span class="line"><span style="color:#E06C75"> kind</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"vector"</span><span style="color:#ABB2BF">;</span></span>
|
|
1638
|
+
<span class="line"><span style="color:#ABB2BF">};</span></span></code></pre>
|
|
1639
|
+
<p>One observed type for a field. Vector kept distinct from map per Phase 1.2
|
|
1640
|
+
vector-sentinel lock; reference target is the <strong>template-form full path</strong>
|
|
1641
|
+
per Phase 3.1 lock (<code>users/{userId}/posts</code>, not <code>posts</code>).</p>
|
|
1642
|
+
<hr>
|
|
1643
|
+
<p><a id="firestorescalartype"></a></p>
|
|
1644
|
+
<h3 id="firestorescalartype">FirestoreScalarType</h3>
|
|
1645
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> FirestoreScalarType</span><span style="color:#56B6C2"> =</span></span>
|
|
1646
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"null"</span></span>
|
|
1647
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"boolean"</span></span>
|
|
1648
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"integer"</span></span>
|
|
1649
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"double"</span></span>
|
|
1650
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"timestamp"</span></span>
|
|
1651
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"string"</span></span>
|
|
1652
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"bytes"</span></span>
|
|
1653
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"geopoint"</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1654
|
+
<p>Firestore scalar wire types. Matches the discriminator emitted by
|
|
1655
|
+
<code>_fieldsProto.<field>.valueType</code> (Phase 0.1 lock).</p>
|
|
1656
|
+
<p><code>null</code> is represented as a scalar so descriptors can carry a single union
|
|
1657
|
+
shape; the merge layer separately tracks <code>nullable</code> per descriptor.</p>
|
|
1658
|
+
<hr>
|
|
1659
|
+
<p><a id="reservedfieldreason"></a></p>
|
|
1660
|
+
<h3 id="reservedfieldreason">ReservedFieldReason</h3>
|
|
1661
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> ReservedFieldReason</span><span style="color:#56B6C2"> =</span></span>
|
|
1662
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"firestore_reserved_name"</span></span>
|
|
1663
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"dotted_field_name"</span></span>
|
|
1664
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"numeric_field_name"</span></span>
|
|
1665
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"double_underscore_wrap"</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1666
|
+
<p>Why a field name is flagged reserved per 0.B.</p>
|
|
1667
|
+
<hr>
|
|
1668
|
+
<p><a id="samplingcomplete-1"></a></p>
|
|
1669
|
+
<h3 id="samplingcomplete">SamplingComplete</h3>
|
|
1670
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> SamplingComplete</span><span style="color:#56B6C2"> =</span></span>
|
|
1671
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"converged_via_stable"</span></span>
|
|
1672
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"converged_via_exhausted"</span></span>
|
|
1673
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"converged_via_max"</span></span>
|
|
1674
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"sampling_open"</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1675
|
+
<p>4-state classification for sampling termination per Phase 2.2 lock.</p>
|
|
1676
|
+
<ul>
|
|
1677
|
+
<li><code>converged_via_stable</code>: hit <code>stopOnStable</code> consecutive no-change docs.
|
|
1678
|
+
Schema is <em>probably</em> complete — known false-negative is mid-stream drift
|
|
1679
|
+
later than <code>stopOnStable</code> docs into the stable region (out of scope per
|
|
1680
|
+
Phase 2.1 lock; deferred to a future <code>firestore_re_crawl</code>).</li>
|
|
1681
|
+
<li><code>converged_via_exhausted</code>: iterator returned empty before <code>maxSamples</code>.
|
|
1682
|
+
Schema is <em>provably</em> complete — we read every doc.</li>
|
|
1683
|
+
<li><code>converged_via_max</code>: hit <code>maxSamples</code> cap without converging. Schema may
|
|
1684
|
+
be incomplete; agent should treat with caution.</li>
|
|
1685
|
+
<li><code>sampling_open</code>: crawl interrupted (continuation boundary). Resume with
|
|
1686
|
+
the returned continuation handle to keep sampling.</li>
|
|
1687
|
+
</ul>
|
|
1688
|
+
<hr>
|
|
1689
|
+
<p><a id="schemachange"></a></p>
|
|
1690
|
+
<h3 id="schemachange">SchemaChange</h3>
|
|
1691
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> SchemaChange</span><span style="color:#56B6C2"> =</span></span>
|
|
1692
|
+
<span class="line"><span style="color:#ABB2BF"> | {</span></span>
|
|
1693
|
+
<span class="line"><span style="color:#E06C75"> kind</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"field_added"</span><span style="color:#ABB2BF">;</span></span>
|
|
1694
|
+
<span class="line"><span style="color:#E06C75"> path</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FieldPath</span><span style="color:#ABB2BF">;</span></span>
|
|
1695
|
+
<span class="line"><span style="color:#E06C75"> type</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FieldType</span><span style="color:#ABB2BF">;</span></span>
|
|
1696
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span>
|
|
1697
|
+
<span class="line"><span style="color:#ABB2BF"> | {</span></span>
|
|
1698
|
+
<span class="line"><span style="color:#E06C75"> addedType</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FieldType</span><span style="color:#ABB2BF">;</span></span>
|
|
1699
|
+
<span class="line"><span style="color:#E06C75"> kind</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"type_expanded"</span><span style="color:#ABB2BF">;</span></span>
|
|
1700
|
+
<span class="line"><span style="color:#E06C75"> path</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FieldPath</span><span style="color:#ABB2BF">;</span></span>
|
|
1701
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span>
|
|
1702
|
+
<span class="line"><span style="color:#ABB2BF"> | {</span></span>
|
|
1703
|
+
<span class="line"><span style="color:#E06C75"> kind</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"presence_changed"</span><span style="color:#ABB2BF">;</span></span>
|
|
1704
|
+
<span class="line"><span style="color:#E06C75"> path</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FieldPath</span><span style="color:#ABB2BF">;</span></span>
|
|
1705
|
+
<span class="line"><span style="color:#E06C75"> presenceSeen</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">number</span><span style="color:#ABB2BF">;</span></span>
|
|
1706
|
+
<span class="line"><span style="color:#E06C75"> presenceTotal</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">number</span><span style="color:#ABB2BF">;</span></span>
|
|
1707
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span>
|
|
1708
|
+
<span class="line"><span style="color:#ABB2BF"> | {</span></span>
|
|
1709
|
+
<span class="line"><span style="color:#E06C75"> kind</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"enum_added"</span><span style="color:#ABB2BF">;</span></span>
|
|
1710
|
+
<span class="line"><span style="color:#E06C75"> path</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FieldPath</span><span style="color:#ABB2BF">;</span></span>
|
|
1711
|
+
<span class="line"><span style="color:#E06C75"> values</span><span style="color:#ABB2BF">: (</span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">number</span><span style="color:#ABB2BF">)[];</span></span>
|
|
1712
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span>
|
|
1713
|
+
<span class="line"><span style="color:#ABB2BF"> | {</span></span>
|
|
1714
|
+
<span class="line"><span style="color:#E06C75"> addedValue</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">number</span><span style="color:#ABB2BF">;</span></span>
|
|
1715
|
+
<span class="line"><span style="color:#E06C75"> kind</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"enum_widened"</span><span style="color:#ABB2BF">;</span></span>
|
|
1716
|
+
<span class="line"><span style="color:#E06C75"> path</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FieldPath</span><span style="color:#ABB2BF">;</span></span>
|
|
1717
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span>
|
|
1718
|
+
<span class="line"><span style="color:#ABB2BF"> | {</span></span>
|
|
1719
|
+
<span class="line"><span style="color:#E06C75"> kind</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"enum_dropped"</span><span style="color:#ABB2BF">;</span></span>
|
|
1720
|
+
<span class="line"><span style="color:#E06C75"> path</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FieldPath</span><span style="color:#ABB2BF">;</span></span>
|
|
1721
|
+
<span class="line"><span style="color:#E06C75"> reason</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"over_threshold"</span><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"type_widened"</span><span style="color:#ABB2BF">;</span></span>
|
|
1722
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span>
|
|
1723
|
+
<span class="line"><span style="color:#ABB2BF"> | {</span></span>
|
|
1724
|
+
<span class="line"><span style="color:#E06C75"> addedDimension</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">number</span><span style="color:#ABB2BF">;</span></span>
|
|
1725
|
+
<span class="line"><span style="color:#E06C75"> kind</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"vector_dim_drift"</span><span style="color:#ABB2BF">;</span></span>
|
|
1726
|
+
<span class="line"><span style="color:#E06C75"> path</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FieldPath</span><span style="color:#ABB2BF">;</span></span>
|
|
1727
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span>
|
|
1728
|
+
<span class="line"><span style="color:#ABB2BF"> | {</span></span>
|
|
1729
|
+
<span class="line"><span style="color:#E06C75"> kind</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"became_nullable"</span><span style="color:#ABB2BF">;</span></span>
|
|
1730
|
+
<span class="line"><span style="color:#E06C75"> path</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FieldPath</span><span style="color:#ABB2BF">;</span></span>
|
|
1731
|
+
<span class="line"><span style="color:#ABB2BF">};</span></span></code></pre>
|
|
1732
|
+
<p>Frozen <code>SchemaChange</code> enum per Phase 5 implementation plan lock. Emitted
|
|
1733
|
+
by the merge layer; carried in <code>schema_updated</code> events.</p>
|
|
1734
|
+
<p>Renamed from v1 scope’s <code>ChangeReason</code> to match the agent-facing terminology
|
|
1735
|
+
in the validation plan’s event-model lock.</p>
|
|
1736
|
+
<hr>
|
|
1737
|
+
<p><a id="sessionerrorcode-1"></a></p>
|
|
1738
|
+
<h3 id="sessionerrorcode">SessionErrorCode</h3>
|
|
1739
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> SessionErrorCode</span><span style="color:#56B6C2"> =</span></span>
|
|
1740
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"SESSION_EXPIRED"</span></span>
|
|
1741
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"SESSION_EVICTED"</span></span>
|
|
1742
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"SESSION_PAYLOAD_TOO_LARGE"</span></span>
|
|
1743
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"SESSION_MALFORMED_TOKEN"</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1744
|
+
<hr>
|
|
1745
|
+
<p><a id="sessionresult"></a></p>
|
|
1746
|
+
<h3 id="sessionresult">SessionResult</h3>
|
|
1747
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> SessionResult</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">T</span><span style="color:#ABB2BF">> </span><span style="color:#56B6C2">=</span></span>
|
|
1748
|
+
<span class="line"><span style="color:#ABB2BF"> | {</span></span>
|
|
1749
|
+
<span class="line"><span style="color:#E06C75"> ok</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">true</span><span style="color:#ABB2BF">;</span></span>
|
|
1750
|
+
<span class="line"><span style="color:#E06C75"> value</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">T</span><span style="color:#ABB2BF">;</span></span>
|
|
1751
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span>
|
|
1752
|
+
<span class="line"><span style="color:#ABB2BF"> | {</span></span>
|
|
1753
|
+
<span class="line"><span style="color:#E06C75"> error</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">SessionError</span><span style="color:#ABB2BF">;</span></span>
|
|
1754
|
+
<span class="line"><span style="color:#E06C75"> ok</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">false</span><span style="color:#ABB2BF">;</span></span>
|
|
1755
|
+
<span class="line"><span style="color:#ABB2BF">};</span></span></code></pre>
|
|
1756
|
+
<p>Discriminated-union result so callers don’t have to try/catch.</p>
|
|
1757
|
+
<h4 id="type-parameters-2">Type Parameters</h4>
|
|
1758
|
+
<div class="table-scroll">
|
|
1759
|
+
|
|
1760
|
+
|
|
1761
|
+
|
|
1762
|
+
|
|
1763
|
+
|
|
1764
|
+
|
|
1765
|
+
|
|
1766
|
+
|
|
1767
|
+
|
|
1768
|
+
|
|
1769
|
+
<table><thead><tr><th align="left">Type Parameter</th></tr></thead><tbody><tr><td align="left"><code>T</code></td></tr></tbody></table></div>
|
|
1770
|
+
<hr>
|
|
1771
|
+
<p><a id="wirevalue"></a></p>
|
|
1772
|
+
<h3 id="wirevalue">WireValue</h3>
|
|
1773
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> WireValue</span><span style="color:#56B6C2"> =</span><span style="color:#E5C07B"> any</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1774
|
+
<h2 id="variables">Variables</h2>
|
|
1775
|
+
<p><a id="default_enum_threshold"></a></p>
|
|
1776
|
+
<h3 id="default_enum_threshold">DEFAULT_ENUM_THRESHOLD</h3>
|
|
1777
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">const</span><span style="color:#E5C07B"> DEFAULT_ENUM_THRESHOLD</span><span style="color:#ABB2BF">: </span><span style="color:#D19A66">10</span><span style="color:#56B6C2"> =</span><span style="color:#D19A66"> 10</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1778
|
+
<p>Default enum-candidate distinct-value cap (Phase 3.2 lock).</p>
|
|
1779
|
+
<hr>
|
|
1780
|
+
<p><a id="default_max_session_bytes"></a></p>
|
|
1781
|
+
<h3 id="default_max_session_bytes">DEFAULT_MAX_SESSION_BYTES</h3>
|
|
1782
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">const</span><span style="color:#E5C07B"> DEFAULT_MAX_SESSION_BYTES</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">number</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1783
|
+
<hr>
|
|
1784
|
+
<p><a id="default_max_sessions"></a></p>
|
|
1785
|
+
<h3 id="default_max_sessions">DEFAULT_MAX_SESSIONS</h3>
|
|
1786
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">const</span><span style="color:#E5C07B"> DEFAULT_MAX_SESSIONS</span><span style="color:#ABB2BF">: </span><span style="color:#D19A66">8</span><span style="color:#56B6C2"> =</span><span style="color:#D19A66"> 8</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1787
|
+
<hr>
|
|
1788
|
+
<p><a id="default_ttl_ms"></a></p>
|
|
1789
|
+
<h3 id="default_ttl_ms">DEFAULT_TTL_MS</h3>
|
|
1790
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">const</span><span style="color:#E5C07B"> DEFAULT_TTL_MS</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">number</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1791
|
+
<h2 id="functions">Functions</h2>
|
|
1792
|
+
<p><a id="classifyfieldname"></a></p>
|
|
1793
|
+
<h3 id="classifyfieldname">classifyFieldName()</h3>
|
|
1794
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> classifyFieldName</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">name</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">ReservedFieldReason</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1795
|
+
<p>Classify a field name. Returns undefined for normal names, or a
|
|
1796
|
+
specific ReservedFieldReason for names that codegen must skip/sanitize.</p>
|
|
1797
|
+
<p>Rules ordered by specificity (most specific first):</p>
|
|
1798
|
+
<ul>
|
|
1799
|
+
<li>exact <code>__name__</code> etc. → firestore_reserved_name</li>
|
|
1800
|
+
<li>contains ’.’ → dotted_field_name (breaks dot-path access)</li>
|
|
1801
|
+
<li>pure-numeric → numeric_field_name (looks like array index)</li>
|
|
1802
|
+
<li><strong>foo</strong> → double_underscore_wrap (sentinel collision)</li>
|
|
1803
|
+
</ul>
|
|
1804
|
+
<h4 id="parameters-17">Parameters</h4>
|
|
1805
|
+
<div class="table-scroll">
|
|
1806
|
+
|
|
1807
|
+
|
|
1808
|
+
|
|
1809
|
+
|
|
1810
|
+
|
|
1811
|
+
|
|
1812
|
+
|
|
1813
|
+
|
|
1814
|
+
|
|
1815
|
+
|
|
1816
|
+
|
|
1817
|
+
|
|
1818
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>name</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
1819
|
+
<h4 id="returns-29">Returns</h4>
|
|
1820
|
+
<p><a href="#reservedfieldreason"><code>ReservedFieldReason</code></a></p>
|
|
1821
|
+
<hr>
|
|
1822
|
+
<p><a id="crawl"></a></p>
|
|
1823
|
+
<h3 id="crawl">crawl()</h3>
|
|
1824
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> crawl</span><span style="color:#ABB2BF">(</span></span>
|
|
1825
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> db</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">CrawlerFirestore</span><span style="color:#ABB2BF">,</span></span>
|
|
1826
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> options</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">CrawlOptions</span><span style="color:#ABB2BF">,</span></span>
|
|
1827
|
+
<span class="line"><span style="color:#E06C75;font-style:italic">sessions</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">SessionStore</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">PersistedCrawlState</span><span style="color:#ABB2BF">>): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">FullCrawlResult</span><span style="color:#ABB2BF">>;</span></span></code></pre>
|
|
1828
|
+
<p>Full crawl: discover structure, then sample up to <code>maxSamples</code> docs per
|
|
1829
|
+
discovered templatePath and feed them through the merge layer. Emits
|
|
1830
|
+
<code>schema_updated</code> events for every non-empty merge and <code>sampling_complete</code>
|
|
1831
|
+
once per templatePath.</p>
|
|
1832
|
+
<p><strong>Pause/resume (Item 4.2).</strong> When a <code>SessionStore</code> is supplied, the
|
|
1833
|
+
crawler measures the persisted-state size at two pause boundaries:</p>
|
|
1834
|
+
<ol>
|
|
1835
|
+
<li>End of every BFS layer in the structure phase</li>
|
|
1836
|
+
<li>End of every templatePath in the sampling phase</li>
|
|
1837
|
+
</ol>
|
|
1838
|
+
<p>If the persisted state exceeds <code>maxBatchBytes</code> (default 1 MB), the
|
|
1839
|
+
crawler persists state and returns a <code>continuation</code> token. The agent
|
|
1840
|
+
resumes by passing <code>{ continuation }</code> on the next call. Counters
|
|
1841
|
+
(<code>listOps</code>, <code>readOps</code>) are cumulative across batches; events are
|
|
1842
|
+
per-batch only (agents accumulate them themselves).</p>
|
|
1843
|
+
<p>Without a <code>SessionStore</code>, the crawler runs to completion regardless of
|
|
1844
|
+
size — single-call mode is unchanged.</p>
|
|
1845
|
+
<p><strong>Continuation lifecycle.</strong> Continuation handles are minted/validated by
|
|
1846
|
+
the supplied <code>SessionStore</code> (see <code>discover/session.ts</code>). Malformed,
|
|
1847
|
+
expired, or evicted tokens surface as a single <code>error</code> event and an
|
|
1848
|
+
otherwise-empty result — agents can re-issue without continuation
|
|
1849
|
+
per the recovery hint.</p>
|
|
1850
|
+
<h4 id="parameters-18">Parameters</h4>
|
|
1851
|
+
<div class="table-scroll">
|
|
1852
|
+
|
|
1853
|
+
|
|
1854
|
+
|
|
1855
|
+
|
|
1856
|
+
|
|
1857
|
+
|
|
1858
|
+
|
|
1859
|
+
|
|
1860
|
+
|
|
1861
|
+
|
|
1862
|
+
|
|
1863
|
+
|
|
1864
|
+
|
|
1865
|
+
|
|
1866
|
+
|
|
1867
|
+
|
|
1868
|
+
|
|
1869
|
+
|
|
1870
|
+
|
|
1871
|
+
|
|
1872
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>db</code></td><td align="left"><a href="#crawlerfirestore"><code>CrawlerFirestore</code></a></td></tr><tr><td align="left"><code>options?</code></td><td align="left"><a href="#crawloptions"><code>CrawlOptions</code></a></td></tr><tr><td align="left"><code>sessions?</code></td><td align="left"><a href="#sessionstore"><code>SessionStore</code></a><<a href="#persistedcrawlstate"><code>PersistedCrawlState</code></a>></td></tr></tbody></table></div>
|
|
1873
|
+
<h4 id="returns-30">Returns</h4>
|
|
1874
|
+
<p><code>Promise</code><<a href="#fullcrawlresult"><code>FullCrawlResult</code></a>></p>
|
|
1875
|
+
<hr>
|
|
1876
|
+
<p><a id="crawlstructure"></a></p>
|
|
1877
|
+
<h3 id="crawlstructure">crawlStructure()</h3>
|
|
1878
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> crawlStructure</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">db</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">CrawlerFirestore</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">options</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">CrawlOptions</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">CrawlResult</span><span style="color:#ABB2BF">>;</span></span></code></pre>
|
|
1879
|
+
<p>Walk the Firestore tree breadth-first. Each layer issues its
|
|
1880
|
+
<code>listDocuments</code> + per-doc <code>listCollections</code> calls in parallel under a
|
|
1881
|
+
shared concurrency cap.</p>
|
|
1882
|
+
<p>Returns once every reachable collection (within <code>maxDepth</code>) is recorded.
|
|
1883
|
+
The returned <code>discovered</code> map is keyed by templatePath; <code>events</code> is the
|
|
1884
|
+
ordered event log emitted during the walk (currently only
|
|
1885
|
+
<code>collection_discovered</code>).</p>
|
|
1886
|
+
<h4 id="parameters-19">Parameters</h4>
|
|
1887
|
+
<div class="table-scroll">
|
|
1888
|
+
|
|
1889
|
+
|
|
1890
|
+
|
|
1891
|
+
|
|
1892
|
+
|
|
1893
|
+
|
|
1894
|
+
|
|
1895
|
+
|
|
1896
|
+
|
|
1897
|
+
|
|
1898
|
+
|
|
1899
|
+
|
|
1900
|
+
|
|
1901
|
+
|
|
1902
|
+
|
|
1903
|
+
|
|
1904
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>db</code></td><td align="left"><a href="#crawlerfirestore"><code>CrawlerFirestore</code></a></td></tr><tr><td align="left"><code>options?</code></td><td align="left"><a href="#crawloptions"><code>CrawlOptions</code></a></td></tr></tbody></table></div>
|
|
1905
|
+
<h4 id="returns-31">Returns</h4>
|
|
1906
|
+
<p><code>Promise</code><<a href="#crawlresult"><code>CrawlResult</code></a>></p>
|
|
1907
|
+
<hr>
|
|
1908
|
+
<p><a id="createfirestorediscovertools"></a></p>
|
|
1909
|
+
<h3 id="createfirestorediscovertools">createFirestoreDiscoverTools()</h3>
|
|
1910
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> createFirestoreDiscoverTools</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">deps</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FirestoreDiscoverToolDeps</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">ToolHandler</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">>[];</span></span></code></pre>
|
|
1911
|
+
<h4 id="parameters-20">Parameters</h4>
|
|
1912
|
+
<div class="table-scroll">
|
|
1913
|
+
|
|
1914
|
+
|
|
1915
|
+
|
|
1916
|
+
|
|
1917
|
+
|
|
1918
|
+
|
|
1919
|
+
|
|
1920
|
+
|
|
1921
|
+
|
|
1922
|
+
|
|
1923
|
+
|
|
1924
|
+
|
|
1925
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>deps</code></td><td align="left"><a href="#firestorediscovertooldeps"><code>FirestoreDiscoverToolDeps</code></a></td></tr></tbody></table></div>
|
|
1926
|
+
<h4 id="returns-32">Returns</h4>
|
|
1927
|
+
<p><code>ToolHandler</code><<code>unknown</code>, <code>unknown</code>>[]</p>
|
|
1928
|
+
<hr>
|
|
1929
|
+
<p><a id="decodetoken"></a></p>
|
|
1930
|
+
<h3 id="decodetoken">decodeToken()</h3>
|
|
1931
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> decodeToken</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">token</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): {</span></span>
|
|
1932
|
+
<span class="line"><span style="color:#E06C75"> id</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span>
|
|
1933
|
+
<span class="line"><span style="color:#ABB2BF">};</span></span></code></pre>
|
|
1934
|
+
<p>Decode a <code>disc_<base64url></code> token. Returns <code>null</code> on any malformation
|
|
1935
|
+
— caller maps null to <code>SESSION_MALFORMED_TOKEN</code>.</p>
|
|
1936
|
+
<h4 id="parameters-21">Parameters</h4>
|
|
1937
|
+
<div class="table-scroll">
|
|
1938
|
+
|
|
1939
|
+
|
|
1940
|
+
|
|
1941
|
+
|
|
1942
|
+
|
|
1943
|
+
|
|
1944
|
+
|
|
1945
|
+
|
|
1946
|
+
|
|
1947
|
+
|
|
1948
|
+
|
|
1949
|
+
|
|
1950
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>token</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
1951
|
+
<h4 id="returns-33">Returns</h4>
|
|
1952
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#ABB2BF">{</span></span>
|
|
1953
|
+
<span class="line"><span style="color:#E06C75"> id</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">;</span></span>
|
|
1954
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span></code></pre>
|
|
1955
|
+
<h5 id="id">id</h5>
|
|
1956
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">id</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1957
|
+
<hr>
|
|
1958
|
+
<p><a id="emptyschema"></a></p>
|
|
1959
|
+
<h3 id="emptyschema">emptySchema()</h3>
|
|
1960
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> emptySchema</span><span style="color:#ABB2BF">(): </span><span style="color:#E5C07B">FieldSchema</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1961
|
+
<h4 id="returns-34">Returns</h4>
|
|
1962
|
+
<p><a href="#fieldschema"><code>FieldSchema</code></a></p>
|
|
1963
|
+
<hr>
|
|
1964
|
+
<p><a id="encodetoken"></a></p>
|
|
1965
|
+
<h3 id="encodetoken">encodeToken()</h3>
|
|
1966
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> encodeToken</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">ulidBytes</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Uint8Array</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1967
|
+
<p>Encode a 16-byte ULID into a <code>disc_<base64url></code> token. Internal — used
|
|
1968
|
+
by <code>SessionStore.create</code>.</p>
|
|
1969
|
+
<h4 id="parameters-22">Parameters</h4>
|
|
1970
|
+
<div class="table-scroll">
|
|
1971
|
+
|
|
1972
|
+
|
|
1973
|
+
|
|
1974
|
+
|
|
1975
|
+
|
|
1976
|
+
|
|
1977
|
+
|
|
1978
|
+
|
|
1979
|
+
|
|
1980
|
+
|
|
1981
|
+
|
|
1982
|
+
|
|
1983
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>ulidBytes</code></td><td align="left"><code>Uint8Array</code></td></tr></tbody></table></div>
|
|
1984
|
+
<h4 id="returns-35">Returns</h4>
|
|
1985
|
+
<p><code>string</code></p>
|
|
1986
|
+
<hr>
|
|
1987
|
+
<p><a id="fieldtypekey"></a></p>
|
|
1988
|
+
<h3 id="fieldtypekey">fieldTypeKey()</h3>
|
|
1989
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> fieldTypeKey</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">t</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FieldType</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1990
|
+
<p>Stable key for FieldType used in dedup. NaN/±Infinity all collapse to
|
|
1991
|
+
<code>s:double</code> so no special handling needed (Phase 1.2 lock).</p>
|
|
1992
|
+
<h4 id="parameters-23">Parameters</h4>
|
|
1993
|
+
<div class="table-scroll">
|
|
1994
|
+
|
|
1995
|
+
|
|
1996
|
+
|
|
1997
|
+
|
|
1998
|
+
|
|
1999
|
+
|
|
2000
|
+
|
|
2001
|
+
|
|
2002
|
+
|
|
2003
|
+
|
|
2004
|
+
|
|
2005
|
+
|
|
2006
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>t</code></td><td align="left"><a href="#fieldtype"><code>FieldType</code></a></td></tr></tbody></table></div>
|
|
2007
|
+
<h4 id="returns-36">Returns</h4>
|
|
2008
|
+
<p><code>string</code></p>
|
|
2009
|
+
<hr>
|
|
2010
|
+
<p><a id="findcollectiongroup"></a></p>
|
|
2011
|
+
<h3 id="findcollectiongroup">findCollectionGroup()</h3>
|
|
2012
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> findCollectionGroup</span><span style="color:#ABB2BF">(</span></span>
|
|
2013
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> db</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">CollectionGroupCapableFirestore</span><span style="color:#ABB2BF">,</span></span>
|
|
2014
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> collectionId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
|
|
2015
|
+
<span class="line"><span style="color:#E06C75;font-style:italic">options</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FindCollectionGroupOptions</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">FindCollectionGroupResult</span><span style="color:#ABB2BF">>;</span></span></code></pre>
|
|
2016
|
+
<p>Find every collection-group host of a given collection ID.</p>
|
|
2017
|
+
<p>One read per returned doc — cost is bounded by <code>limit</code> (default 100).
|
|
2018
|
+
Returns the hosts in template-path form (e.g. <code>users/{userId}/posts</code>)
|
|
2019
|
+
with the per-host sample doc count.</p>
|
|
2020
|
+
<p>Throws on Admin SDK errors (network / permission). The tool is
|
|
2021
|
+
standalone — no session, no continuation, no events — so error
|
|
2022
|
+
propagation is straightforward.</p>
|
|
2023
|
+
<h4 id="parameters-24">Parameters</h4>
|
|
2024
|
+
<div class="table-scroll">
|
|
2025
|
+
|
|
2026
|
+
|
|
2027
|
+
|
|
2028
|
+
|
|
2029
|
+
|
|
2030
|
+
|
|
2031
|
+
|
|
2032
|
+
|
|
2033
|
+
|
|
2034
|
+
|
|
2035
|
+
|
|
2036
|
+
|
|
2037
|
+
|
|
2038
|
+
|
|
2039
|
+
|
|
2040
|
+
|
|
2041
|
+
|
|
2042
|
+
|
|
2043
|
+
|
|
2044
|
+
|
|
2045
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>db</code></td><td align="left"><a href="#collectiongroupcapablefirestore"><code>CollectionGroupCapableFirestore</code></a></td></tr><tr><td align="left"><code>collectionId</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>options?</code></td><td align="left"><a href="#findcollectiongroupoptions"><code>FindCollectionGroupOptions</code></a></td></tr></tbody></table></div>
|
|
2046
|
+
<h4 id="returns-37">Returns</h4>
|
|
2047
|
+
<p><code>Promise</code><<a href="#findcollectiongroupresult"><code>FindCollectionGroupResult</code></a>></p>
|
|
2048
|
+
<hr>
|
|
2049
|
+
<p><a id="infertemplatevariable"></a></p>
|
|
2050
|
+
<h3 id="infertemplatevariable">inferTemplateVariable()</h3>
|
|
2051
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> inferTemplateVariable</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">collectionId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2052
|
+
<p>Convert a collection ID to the conventional template-variable name a
|
|
2053
|
+
Firestore rules author would write for its docs. Strips a trailing
|
|
2054
|
+
snake/dot-cased prefix word so <code>ttt_lobbies</code> → <code>lobbyId</code> (not
|
|
2055
|
+
<code>ttt_lobbieId</code>).</p>
|
|
2056
|
+
<h4 id="parameters-25">Parameters</h4>
|
|
2057
|
+
<div class="table-scroll">
|
|
2058
|
+
|
|
2059
|
+
|
|
2060
|
+
|
|
2061
|
+
|
|
2062
|
+
|
|
2063
|
+
|
|
2064
|
+
|
|
2065
|
+
|
|
2066
|
+
|
|
2067
|
+
|
|
2068
|
+
|
|
2069
|
+
|
|
2070
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>collectionId</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
2071
|
+
<h4 id="returns-38">Returns</h4>
|
|
2072
|
+
<p><code>string</code></p>
|
|
2073
|
+
<hr>
|
|
2074
|
+
<p><a id="mergedescriptorwithobservation"></a></p>
|
|
2075
|
+
<h3 id="mergedescriptorwithobservation">mergeDescriptorWithObservation()</h3>
|
|
2076
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> mergeDescriptorWithObservation</span><span style="color:#ABB2BF">(</span></span>
|
|
2077
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> prev</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FieldDescriptor</span><span style="color:#ABB2BF">,</span></span>
|
|
2078
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> observation</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FieldObservation</span><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"absent"</span><span style="color:#ABB2BF">,</span></span>
|
|
2079
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> newTotal</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">number</span><span style="color:#ABB2BF">,</span></span>
|
|
2080
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> path</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FieldPath</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">MergeFieldResult</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2081
|
+
<p>Merge a single field observation into an existing descriptor.
|
|
2082
|
+
<code>observation === 'absent'</code> means the field was missing from the doc.
|
|
2083
|
+
<code>newTotal</code> is the doc count after this observation.</p>
|
|
2084
|
+
<h4 id="parameters-26">Parameters</h4>
|
|
2085
|
+
<div class="table-scroll">
|
|
2086
|
+
|
|
2087
|
+
|
|
2088
|
+
|
|
2089
|
+
|
|
2090
|
+
|
|
2091
|
+
|
|
2092
|
+
|
|
2093
|
+
|
|
2094
|
+
|
|
2095
|
+
|
|
2096
|
+
|
|
2097
|
+
|
|
2098
|
+
|
|
2099
|
+
|
|
2100
|
+
|
|
2101
|
+
|
|
2102
|
+
|
|
2103
|
+
|
|
2104
|
+
|
|
2105
|
+
|
|
2106
|
+
|
|
2107
|
+
|
|
2108
|
+
|
|
2109
|
+
|
|
2110
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>prev</code></td><td align="left"><a href="#fielddescriptor"><code>FieldDescriptor</code></a></td></tr><tr><td align="left"><code>observation</code></td><td align="left"><a href="#fieldobservation"><code>FieldObservation</code></a> | <code>"absent"</code></td></tr><tr><td align="left"><code>newTotal</code></td><td align="left"><code>number</code></td></tr><tr><td align="left"><code>path</code></td><td align="left"><a href="#fieldpath"><code>FieldPath</code></a></td></tr></tbody></table></div>
|
|
2111
|
+
<h4 id="returns-39">Returns</h4>
|
|
2112
|
+
<p><code>MergeFieldResult</code></p>
|
|
2113
|
+
<hr>
|
|
2114
|
+
<p><a id="mergedoc"></a></p>
|
|
2115
|
+
<h3 id="mergedoc">mergeDoc()</h3>
|
|
2116
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> mergeDoc</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">prev</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FieldSchema</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">doc</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Record</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">FieldObservation</span><span style="color:#ABB2BF">>): {</span></span>
|
|
2117
|
+
<span class="line"><span style="color:#E06C75"> changes</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">SchemaChange</span><span style="color:#ABB2BF">[];</span></span>
|
|
2118
|
+
<span class="line"><span style="color:#E06C75"> next</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FieldSchema</span><span style="color:#ABB2BF">;</span></span>
|
|
2119
|
+
<span class="line"><span style="color:#ABB2BF">};</span></span></code></pre>
|
|
2120
|
+
<p>Merge a single document’s typed field observations into a collection-level
|
|
2121
|
+
schema. Returns the next schema and the changes emitted.</p>
|
|
2122
|
+
<p>The wire layer (<code>wire.ts</code>) is responsible for converting Firestore wire
|
|
2123
|
+
values into the <code>Record<string, FieldObservation></code> shape expected here.</p>
|
|
2124
|
+
<h4 id="parameters-27">Parameters</h4>
|
|
2125
|
+
<div class="table-scroll">
|
|
2126
|
+
|
|
2127
|
+
|
|
2128
|
+
|
|
2129
|
+
|
|
2130
|
+
|
|
2131
|
+
|
|
2132
|
+
|
|
2133
|
+
|
|
2134
|
+
|
|
2135
|
+
|
|
2136
|
+
|
|
2137
|
+
|
|
2138
|
+
|
|
2139
|
+
|
|
2140
|
+
|
|
2141
|
+
|
|
2142
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>prev</code></td><td align="left"><a href="#fieldschema"><code>FieldSchema</code></a></td></tr><tr><td align="left"><code>doc</code></td><td align="left"><code>Record</code><<code>string</code>, <a href="#fieldobservation"><code>FieldObservation</code></a>></td></tr></tbody></table></div>
|
|
2143
|
+
<h4 id="returns-40">Returns</h4>
|
|
2144
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#ABB2BF">{</span></span>
|
|
2145
|
+
<span class="line"><span style="color:#E06C75"> changes</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">SchemaChange</span><span style="color:#ABB2BF">[];</span></span>
|
|
2146
|
+
<span class="line"><span style="color:#E06C75"> next</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">FieldSchema</span><span style="color:#ABB2BF">;</span></span>
|
|
2147
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span></code></pre>
|
|
2148
|
+
<h5 id="changes">changes</h5>
|
|
2149
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">changes</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">SchemaChange</span><span style="color:#ABB2BF">[];</span></span></code></pre>
|
|
2150
|
+
<h5 id="next">next</h5>
|
|
2151
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">next</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">FieldSchema</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2152
|
+
<hr>
|
|
2153
|
+
<p><a id="runconvergence"></a></p>
|
|
2154
|
+
<h3 id="runconvergence">runConvergence()</h3>
|
|
2155
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> runConvergence</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">docs</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Iterable</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">Record</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">FieldObservation</span><span style="color:#ABB2BF">>>, </span><span style="color:#E06C75;font-style:italic">stopOnStable</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">number</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">ConvergenceResult</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2156
|
+
<p>Stream-driven convergence runner. Used by the production crawler’s
|
|
2157
|
+
sampling loop and by Phase 2.x tests that replay corpus snapshots.</p>
|
|
2158
|
+
<p><code>stopOnStable</code> is the optimistic early-exit signal (Phase 2.1 lock — must
|
|
2159
|
+
be paired with a <code>maxSamples</code> hard cap in the crawler, not here).</p>
|
|
2160
|
+
<h4 id="parameters-28">Parameters</h4>
|
|
2161
|
+
<div class="table-scroll">
|
|
2162
|
+
|
|
2163
|
+
|
|
2164
|
+
|
|
2165
|
+
|
|
2166
|
+
|
|
2167
|
+
|
|
2168
|
+
|
|
2169
|
+
|
|
2170
|
+
|
|
2171
|
+
|
|
2172
|
+
|
|
2173
|
+
|
|
2174
|
+
|
|
2175
|
+
|
|
2176
|
+
|
|
2177
|
+
|
|
2178
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>docs</code></td><td align="left"><code>Iterable</code><<code>Record</code><<code>string</code>, <a href="#fieldobservation"><code>FieldObservation</code></a>>></td></tr><tr><td align="left"><code>stopOnStable</code></td><td align="left"><code>number</code></td></tr></tbody></table></div>
|
|
2179
|
+
<h4 id="returns-41">Returns</h4>
|
|
2180
|
+
<p><a href="#convergenceresult"><code>ConvergenceResult</code></a></p>
|
|
2181
|
+
<hr>
|
|
2182
|
+
<p><a id="runwithlimit"></a></p>
|
|
2183
|
+
<h3 id="runwithlimit">runWithLimit()</h3>
|
|
2184
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> runWithLimit</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">T</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">R</span><span style="color:#ABB2BF">>(</span></span>
|
|
2185
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> items</span><span style="color:#ABB2BF">: </span><span style="color:#C678DD">readonly</span><span style="color:#E5C07B"> T</span><span style="color:#ABB2BF">[],</span></span>
|
|
2186
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> limit</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">number</span><span style="color:#ABB2BF">,</span></span>
|
|
2187
|
+
<span class="line"><span style="color:#61AFEF">producer</span><span style="color:#ABB2BF">: (</span><span style="color:#E06C75;font-style:italic">item</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">T</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">index</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">number</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">=></span><span style="color:#E5C07B"> Promise</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">R</span><span style="color:#ABB2BF">>): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">R</span><span style="color:#ABB2BF">[]>;</span></span></code></pre>
|
|
2188
|
+
<p>Run <code>items</code> through <code>producer</code> concurrently, capping in-flight calls
|
|
2189
|
+
at <code>limit</code>. Returns results in input order (same shape as
|
|
2190
|
+
<code>Promise.all(items.map(producer))</code> — but bounded).</p>
|
|
2191
|
+
<p><code>producer</code> may throw; the rejection propagates after in-flight work
|
|
2192
|
+
settles. Other items continue running so the rejection isn’t masked
|
|
2193
|
+
by a Promise.all-style fast-fail leaving zombie pending work.</p>
|
|
2194
|
+
<p>Implementation detail: uses an internal <code>Semaphore(limit)</code>; callers
|
|
2195
|
+
who need to share a permit pool across multiple <code>runWithLimit</code> calls
|
|
2196
|
+
(e.g. crawler global RPC cap) should use the <code>Semaphore</code> class
|
|
2197
|
+
directly via <code>acquire</code>/<code>release</code>.</p>
|
|
2198
|
+
<h4 id="type-parameters-3">Type Parameters</h4>
|
|
2199
|
+
<div class="table-scroll">
|
|
2200
|
+
|
|
2201
|
+
|
|
2202
|
+
|
|
2203
|
+
|
|
2204
|
+
|
|
2205
|
+
|
|
2206
|
+
|
|
2207
|
+
|
|
2208
|
+
|
|
2209
|
+
|
|
2210
|
+
|
|
2211
|
+
|
|
2212
|
+
|
|
2213
|
+
<table><thead><tr><th align="left">Type Parameter</th></tr></thead><tbody><tr><td align="left"><code>T</code></td></tr><tr><td align="left"><code>R</code></td></tr></tbody></table></div>
|
|
2214
|
+
<h4 id="parameters-29">Parameters</h4>
|
|
2215
|
+
<div class="table-scroll">
|
|
2216
|
+
|
|
2217
|
+
|
|
2218
|
+
|
|
2219
|
+
|
|
2220
|
+
|
|
2221
|
+
|
|
2222
|
+
|
|
2223
|
+
|
|
2224
|
+
|
|
2225
|
+
|
|
2226
|
+
|
|
2227
|
+
|
|
2228
|
+
|
|
2229
|
+
|
|
2230
|
+
|
|
2231
|
+
|
|
2232
|
+
|
|
2233
|
+
|
|
2234
|
+
|
|
2235
|
+
|
|
2236
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>items</code></td><td align="left">readonly <code>T</code>[]</td></tr><tr><td align="left"><code>limit</code></td><td align="left"><code>number</code></td></tr><tr><td align="left"><code>producer</code></td><td align="left">(<code>item</code>: <code>T</code>, <code>index</code>: <code>number</code>) => <code>Promise</code><<code>R</code>></td></tr></tbody></table></div>
|
|
2237
|
+
<h4 id="returns-42">Returns</h4>
|
|
2238
|
+
<p><code>Promise</code><<code>R</code>[]></p>
|
|
2239
|
+
<hr>
|
|
2240
|
+
<p><a id="snapshottoobservations"></a></p>
|
|
2241
|
+
<h3 id="snapshottoobservations">snapshotToObservations()</h3>
|
|
2242
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> snapshotToObservations</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">snap</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">WireDocumentSnapshot</span><span style="color:#ABB2BF">): {</span></span>
|
|
2243
|
+
<span class="line"><span style="color:#E06C75"> observations</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Record</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">FieldObservation</span><span style="color:#ABB2BF">>;</span></span>
|
|
2244
|
+
<span class="line"><span style="color:#E06C75"> reservedNames</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Record</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">ReservedFieldReason</span><span style="color:#ABB2BF">>;</span></span>
|
|
2245
|
+
<span class="line"><span style="color:#ABB2BF">};</span></span></code></pre>
|
|
2246
|
+
<p>Convert a Firestore document snapshot into a FieldObservation map.
|
|
2247
|
+
Detects reserved field names per 0.B — they appear in the output but
|
|
2248
|
+
the descriptor returned by the merge layer carries <code>reservedReason</code>
|
|
2249
|
+
so codegen can skip them.</p>
|
|
2250
|
+
<p>Throws <code>WireProtoUnavailableError</code> if <code>_fieldsProto</code> is absent (0.A
|
|
2251
|
+
fail-loud contract). Empty docs (proto present but zero keys) return
|
|
2252
|
+
an empty record without throwing.</p>
|
|
2253
|
+
<h4 id="parameters-30">Parameters</h4>
|
|
2254
|
+
<div class="table-scroll">
|
|
2255
|
+
|
|
2256
|
+
|
|
2257
|
+
|
|
2258
|
+
|
|
2259
|
+
|
|
2260
|
+
|
|
2261
|
+
|
|
2262
|
+
|
|
2263
|
+
|
|
2264
|
+
|
|
2265
|
+
|
|
2266
|
+
|
|
2267
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>snap</code></td><td align="left"><a href="#wiredocumentsnapshot"><code>WireDocumentSnapshot</code></a></td></tr></tbody></table></div>
|
|
2268
|
+
<h4 id="returns-43">Returns</h4>
|
|
2269
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#ABB2BF">{</span></span>
|
|
2270
|
+
<span class="line"><span style="color:#E06C75"> observations</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">Record</span><span style="color:#56B6C2"><</span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75">FieldObservation</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span>
|
|
2271
|
+
<span class="line"><span style="color:#E06C75"> reservedNames</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">Record</span><span style="color:#56B6C2"><</span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75">ReservedFieldReason</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span>
|
|
2272
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span></code></pre>
|
|
2273
|
+
<h5 id="observations">observations</h5>
|
|
2274
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">observations</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">Record</span><span style="color:#56B6C2"><</span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75">FieldObservation</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2275
|
+
<h5 id="reservednames">reservedNames</h5>
|
|
2276
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">reservedNames</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">Record</span><span style="color:#56B6C2"><</span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75">ReservedFieldReason</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2277
|
+
<hr>
|
|
2278
|
+
<p><a id="totemplatepath"></a></p>
|
|
2279
|
+
<h3 id="totemplatepath">toTemplatePath()</h3>
|
|
2280
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> toTemplatePath</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">concretePath</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2281
|
+
<p>Map a concrete collection path to its template-path form per Phase 3.1
|
|
2282
|
+
lock. Doc-id segments become <code>{singular(parentColl)Id}</code> so the result
|
|
2283
|
+
matches Firestore rules’ <code>path.raw</code> segments under typical naming
|
|
2284
|
+
conventions (TTT corpus verified: <code>ttt_lobbies</code> → <code>{lobbyId}</code>).</p>
|
|
2285
|
+
<p>Inputs alternate <code>coll/doc/coll/doc/.../coll</code>. Length is always odd (a
|
|
2286
|
+
collection path ends on a collection segment).</p>
|
|
2287
|
+
<p>Heuristic — agents needing strict alignment with rules should normalize
|
|
2288
|
+
both sides before joining. See Risk 6 in the implementation plan.</p>
|
|
2289
|
+
<p>Examples:
|
|
2290
|
+
<code>users</code> → <code>users</code>
|
|
2291
|
+
<code>users/uid_1/posts</code> → <code>users/{userId}/posts</code>
|
|
2292
|
+
<code>ttt_lobbies/abc/games/g1/moves</code> → <code>ttt_lobbies/{lobbyId}/games/{gameId}/moves</code></p>
|
|
2293
|
+
<h4 id="parameters-31">Parameters</h4>
|
|
2294
|
+
<div class="table-scroll">
|
|
2295
|
+
|
|
2296
|
+
|
|
2297
|
+
|
|
2298
|
+
|
|
2299
|
+
|
|
2300
|
+
|
|
2301
|
+
|
|
2302
|
+
|
|
2303
|
+
|
|
2304
|
+
|
|
2305
|
+
|
|
2306
|
+
|
|
2307
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>concretePath</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
2308
|
+
<h4 id="returns-44">Returns</h4>
|
|
2309
|
+
<p><code>string</code></p>
|
|
2310
|
+
<hr>
|
|
2311
|
+
<p><a id="wirevaluetofieldtype"></a></p>
|
|
2312
|
+
<h3 id="wirevaluetofieldtype">wireValueToFieldType()</h3>
|
|
2313
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> wireValueToFieldType</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">v</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">any</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">FieldType</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2314
|
+
<p>Pure type extraction. Does not extract examples or enum samples — use
|
|
2315
|
+
<code>wireValueToObservation</code> for the full observation.</p>
|
|
2316
|
+
<h4 id="parameters-32">Parameters</h4>
|
|
2317
|
+
<div class="table-scroll">
|
|
2318
|
+
|
|
2319
|
+
|
|
2320
|
+
|
|
2321
|
+
|
|
2322
|
+
|
|
2323
|
+
|
|
2324
|
+
|
|
2325
|
+
|
|
2326
|
+
|
|
2327
|
+
|
|
2328
|
+
|
|
2329
|
+
|
|
2330
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>v</code></td><td align="left"><code>any</code></td></tr></tbody></table></div>
|
|
2331
|
+
<h4 id="returns-45">Returns</h4>
|
|
2332
|
+
<p><a href="#fieldtype"><code>FieldType</code></a></p>
|
|
2333
|
+
<hr>
|
|
2334
|
+
<p><a id="wirevaluetoobservation"></a></p>
|
|
2335
|
+
<h3 id="wirevaluetoobservation">wireValueToObservation()</h3>
|
|
2336
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> wireValueToObservation</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">v</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">any</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">FieldObservation</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2337
|
+
<p>Full observation including JSON-safe example projection and enum sample
|
|
2338
|
+
extraction. The merge layer consumes this shape.</p>
|
|
2339
|
+
<h4 id="parameters-33">Parameters</h4>
|
|
2340
|
+
<div class="table-scroll">
|
|
2341
|
+
|
|
2342
|
+
|
|
2343
|
+
|
|
2344
|
+
|
|
2345
|
+
|
|
2346
|
+
|
|
2347
|
+
|
|
2348
|
+
|
|
2349
|
+
|
|
2350
|
+
|
|
2351
|
+
|
|
2352
|
+
|
|
2353
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>v</code></td><td align="left"><code>any</code></td></tr></tbody></table></div>
|
|
2354
|
+
<h4 id="returns-46">Returns</h4>
|
|
2355
|
+
<p><a href="#fieldobservation"><code>FieldObservation</code></a></p> </article> </main> <aside class="doc-toc api-symbols" aria-label="API symbols"> <h2 class="doc-toc-heading">Symbols</h2> <input class="api-symbol-filter" type="search" placeholder="Filter symbols" aria-label="Filter API symbols" data-api-symbol-filter> <div class="api-symbol-groups" data-api-symbol-groups> <section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#classes"> Classes </a> <ul> <li data-api-symbol="localenvironmentcrawleradapter"> <a href="#localenvironmentcrawleradapter">LocalEnvironmentCrawlerAdapter</a> </li><li data-api-symbol="semaphore"> <a href="#semaphore">Semaphore</a> </li><li data-api-symbol="sessionstore"> <a href="#sessionstore">SessionStore</a> </li><li data-api-symbol="wireprotounavailableerror"> <a href="#wireprotounavailableerror">WireProtoUnavailableError</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#interfaces"> Interfaces </a> <ul> <li data-api-symbol="collectiongroupcapablefirestore"> <a href="#collectiongroupcapablefirestore">CollectionGroupCapableFirestore</a> </li><li data-api-symbol="collectiongroupquery"> <a href="#collectiongroupquery">CollectionGroupQuery</a> </li><li data-api-symbol="collectiongroupsnapshot"> <a href="#collectiongroupsnapshot">CollectionGroupSnapshot</a> </li><li data-api-symbol="collectionschema"> <a href="#collectionschema">CollectionSchema</a> </li><li data-api-symbol="convergenceresult"> <a href="#convergenceresult">ConvergenceResult</a> </li><li data-api-symbol="crawlercollectionref"> <a href="#crawlercollectionref">CrawlerCollectionRef</a> </li><li data-api-symbol="crawlerdocumentref"> <a href="#crawlerdocumentref">CrawlerDocumentRef</a> </li><li data-api-symbol="crawlerfirestore"> <a href="#crawlerfirestore">CrawlerFirestore</a> </li><li data-api-symbol="crawloptions"> <a href="#crawloptions">CrawlOptions</a> </li><li data-api-symbol="crawlresult"> <a href="#crawlresult">CrawlResult</a> </li><li data-api-symbol="discoveredcollection"> <a href="#discoveredcollection">DiscoveredCollection</a> </li><li data-api-symbol="discoverpathstoolresult"> <a href="#discoverpathstoolresult">DiscoverPathsToolResult</a> </li><li data-api-symbol="dryruncostestimate"> <a href="#dryruncostestimate">DryRunCostEstimate</a> </li><li data-api-symbol="enumcandidate"> <a href="#enumcandidate">EnumCandidate</a> </li><li data-api-symbol="fielddescriptor"> <a href="#fielddescriptor">FieldDescriptor</a> </li><li data-api-symbol="fieldobservation"> <a href="#fieldobservation">FieldObservation</a> </li><li data-api-symbol="fieldschema"> <a href="#fieldschema">FieldSchema</a> </li><li data-api-symbol="findcollectiongrouphost"> <a href="#findcollectiongrouphost">FindCollectionGroupHost</a> </li><li data-api-symbol="findcollectiongroupoptions"> <a href="#findcollectiongroupoptions">FindCollectionGroupOptions</a> </li><li data-api-symbol="findcollectiongroupresult"> <a href="#findcollectiongroupresult">FindCollectionGroupResult</a> </li><li data-api-symbol="firestorediscovertooldeps"> <a href="#firestorediscovertooldeps">FirestoreDiscoverToolDeps</a> </li><li data-api-symbol="fullcrawlresult"> <a href="#fullcrawlresult">FullCrawlResult</a> </li><li data-api-symbol="persistedcrawlstate"> <a href="#persistedcrawlstate">PersistedCrawlState</a> </li><li data-api-symbol="persisteddiscoveredcollection"> <a href="#persisteddiscoveredcollection">PersistedDiscoveredCollection</a> </li><li data-api-symbol="sessionerror"> <a href="#sessionerror">SessionError</a> </li><li data-api-symbol="sessionrecord"> <a href="#sessionrecord">SessionRecord</a> </li><li data-api-symbol="sessionstoreoptions"> <a href="#sessionstoreoptions">SessionStoreOptions</a> </li><li data-api-symbol="wiredocumentsnapshot"> <a href="#wiredocumentsnapshot">WireDocumentSnapshot</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#type-aliases"> Type Aliases </a> <ul> <li data-api-symbol="discoverevent"> <a href="#discoverevent">DiscoverEvent</a> </li><li data-api-symbol="examplevalue"> <a href="#examplevalue">ExampleValue</a> </li><li data-api-symbol="fieldpath"> <a href="#fieldpath">FieldPath</a> </li><li data-api-symbol="fieldtype"> <a href="#fieldtype">FieldType</a> </li><li data-api-symbol="firestorescalartype"> <a href="#firestorescalartype">FirestoreScalarType</a> </li><li data-api-symbol="reservedfieldreason"> <a href="#reservedfieldreason">ReservedFieldReason</a> </li><li data-api-symbol="samplingcomplete"> <a href="#samplingcomplete">SamplingComplete</a> </li><li data-api-symbol="schemachange"> <a href="#schemachange">SchemaChange</a> </li><li data-api-symbol="sessionerrorcode"> <a href="#sessionerrorcode">SessionErrorCode</a> </li><li data-api-symbol="sessionresult"> <a href="#sessionresult">SessionResult</a> </li><li data-api-symbol="wirevalue"> <a href="#wirevalue">WireValue</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#variables"> Variables </a> <ul> <li data-api-symbol="default_enum_threshold"> <a href="#default_enum_threshold">DEFAULT_ENUM_THRESHOLD</a> </li><li data-api-symbol="default_max_session_bytes"> <a href="#default_max_session_bytes">DEFAULT_MAX_SESSION_BYTES</a> </li><li data-api-symbol="default_max_sessions"> <a href="#default_max_sessions">DEFAULT_MAX_SESSIONS</a> </li><li data-api-symbol="default_ttl_ms"> <a href="#default_ttl_ms">DEFAULT_TTL_MS</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#functions"> Functions </a> <ul> <li data-api-symbol="classifyfieldname()"> <a href="#classifyfieldname">classifyFieldName()</a> </li><li data-api-symbol="crawl()"> <a href="#crawl">crawl()</a> </li><li data-api-symbol="crawlstructure()"> <a href="#crawlstructure">crawlStructure()</a> </li><li data-api-symbol="createfirestorediscovertools()"> <a href="#createfirestorediscovertools">createFirestoreDiscoverTools()</a> </li><li data-api-symbol="decodetoken()"> <a href="#decodetoken">decodeToken()</a> </li><li data-api-symbol="emptyschema()"> <a href="#emptyschema">emptySchema()</a> </li><li data-api-symbol="encodetoken()"> <a href="#encodetoken">encodeToken()</a> </li><li data-api-symbol="fieldtypekey()"> <a href="#fieldtypekey">fieldTypeKey()</a> </li><li data-api-symbol="findcollectiongroup()"> <a href="#findcollectiongroup">findCollectionGroup()</a> </li><li data-api-symbol="infertemplatevariable()"> <a href="#infertemplatevariable">inferTemplateVariable()</a> </li><li data-api-symbol="mergedescriptorwithobservation()"> <a href="#mergedescriptorwithobservation">mergeDescriptorWithObservation()</a> </li><li data-api-symbol="mergedoc()"> <a href="#mergedoc">mergeDoc()</a> </li><li data-api-symbol="runconvergence()"> <a href="#runconvergence">runConvergence()</a> </li><li data-api-symbol="runwithlimit()"> <a href="#runwithlimit">runWithLimit()</a> </li><li data-api-symbol="snapshottoobservations()"> <a href="#snapshottoobservations">snapshotToObservations()</a> </li><li data-api-symbol="totemplatepath()"> <a href="#totemplatepath">toTemplatePath()</a> </li><li data-api-symbol="wirevaluetofieldtype()"> <a href="#wirevaluetofieldtype">wireValueToFieldType()</a> </li><li data-api-symbol="wirevaluetoobservation()"> <a href="#wirevaluetoobservation">wireValueToObservation()</a> </li> </ul> </section> <p class="api-symbol-empty" data-api-symbol-empty hidden>No matching symbols</p> </div> </aside> </div> <script type="module">const a=document.querySelector("[data-api-symbol-filter]"),d=[...document.querySelectorAll("[data-api-symbol-group]")],n=document.querySelector("[data-api-symbol-empty]");a?.addEventListener("input",()=>{const t=a.value.trim().toLowerCase();let o=0;for(const i of d){let e=0;i.querySelectorAll("[data-api-symbol]").forEach(l=>{const r=!t||(l.dataset.apiSymbol??"").includes(t);l.hidden=!r,r&&e++}),i.hidden=e===0,o+=e}n&&(n.hidden=o>0)});</script> <script type="module">const s=new Map;document.querySelectorAll('.doc-toc a[href^="#"]').forEach(t=>s.set(decodeURIComponent(t.hash.slice(1)),t));if(s.size>0){const t=new Set,n=()=>{let o=null;for(const e of s.keys())if(t.has(e)){o=e;break}s.forEach((e,c)=>e.classList.toggle("active",c===o))},r=new IntersectionObserver(o=>{for(const e of o)e.isIntersecting?t.add(e.target.id):t.delete(e.target.id);n()},{rootMargin:"-72px 0px -60% 0px"});s.forEach((o,e)=>{const c=document.getElementById(e);c&&r.observe(c)})}</script> <script type="module">document.querySelector('.studio__nav [aria-current="page"]')?.scrollIntoView({block:"nearest",inline:"center"});</script> </body> </html>
|