pyric-tools 0.1.0-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +125 -0
- package/dist/auth/domains/handler.d.ts +6 -0
- package/dist/auth/domains/handler.d.ts.map +1 -0
- package/dist/auth/domains/handler.js +75 -0
- package/dist/auth/domains/handler.js.map +1 -0
- package/dist/auth/domains/spec.d.ts +25 -0
- package/dist/auth/domains/spec.d.ts.map +1 -0
- package/dist/auth/domains/spec.js +6 -0
- package/dist/auth/domains/spec.js.map +1 -0
- package/dist/auth/index.d.ts +34 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +30 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/mapper.d.ts +5 -0
- package/dist/auth/mapper.d.ts.map +1 -0
- package/dist/auth/mapper.js +49 -0
- package/dist/auth/mapper.js.map +1 -0
- package/dist/auth/provider/handler.d.ts +9 -0
- package/dist/auth/provider/handler.d.ts.map +1 -0
- package/dist/auth/provider/handler.js +128 -0
- package/dist/auth/provider/handler.js.map +1 -0
- package/dist/auth/provider/spec.d.ts +29 -0
- package/dist/auth/provider/spec.d.ts.map +1 -0
- package/dist/auth/provider/spec.js +12 -0
- package/dist/auth/provider/spec.js.map +1 -0
- package/dist/auth/resolver.d.ts +16 -0
- package/dist/auth/resolver.d.ts.map +1 -0
- package/dist/auth/resolver.js +32 -0
- package/dist/auth/resolver.js.map +1 -0
- package/dist/auth/tools.d.ts +23 -0
- package/dist/auth/tools.d.ts.map +1 -0
- package/dist/auth/tools.js +71 -0
- package/dist/auth/tools.js.map +1 -0
- package/dist/auth/types.d.ts +37 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +17 -0
- package/dist/auth/types.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 +430 -0
- package/dist/bridge/client/bridge.js.map +1 -0
- package/dist/bridge/client/dispatch.d.ts +49 -0
- package/dist/bridge/client/dispatch.d.ts.map +1 -0
- package/dist/bridge/client/dispatch.js +103 -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 +228 -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 +165 -0
- package/dist/bridge/server/bridge.d.ts.map +1 -0
- package/dist/bridge/server/bridge.js +410 -0
- package/dist/bridge/server/bridge.js.map +1 -0
- package/dist/bridge/server/confirm-policy.d.ts +56 -0
- package/dist/bridge/server/confirm-policy.d.ts.map +1 -0
- package/dist/bridge/server/confirm-policy.js +107 -0
- package/dist/bridge/server/confirm-policy.js.map +1 -0
- package/dist/bridge/server/confirm-prompt.d.ts +73 -0
- package/dist/bridge/server/confirm-prompt.d.ts.map +1 -0
- package/dist/bridge/server/confirm-prompt.js +199 -0
- package/dist/bridge/server/confirm-prompt.js.map +1 -0
- package/dist/bridge/server/confirm.d.ts +92 -0
- package/dist/bridge/server/confirm.d.ts.map +1 -0
- package/dist/bridge/server/confirm.js +210 -0
- package/dist/bridge/server/confirm.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 +132 -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 +42 -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.d.ts +33 -0
- package/dist/bridge/server/mcp.d.ts.map +1 -0
- package/dist/bridge/server/mcp.js +159 -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 +102 -0
- package/dist/bridge/server/standalone.d.ts.map +1 -0
- package/dist/bridge/server/standalone.js +352 -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 +79 -0
- package/dist/bridge/server/tool-metadata.js.map +1 -0
- package/dist/bridge/server.d.ts +25 -0
- package/dist/bridge/server.d.ts.map +1 -0
- package/dist/bridge/server.js +23 -0
- package/dist/bridge/server.js.map +1 -0
- package/dist/cli/auth.d.ts +37 -0
- package/dist/cli/auth.d.ts.map +1 -0
- package/dist/cli/auth.js +119 -0
- package/dist/cli/auth.js.map +1 -0
- package/dist/cli/database-rules.d.ts +25 -0
- package/dist/cli/database-rules.d.ts.map +1 -0
- package/dist/cli/database-rules.js +215 -0
- package/dist/cli/database-rules.js.map +1 -0
- package/dist/cli/deploy-progress.d.ts +35 -0
- package/dist/cli/deploy-progress.d.ts.map +1 -0
- package/dist/cli/deploy-progress.js +69 -0
- package/dist/cli/deploy-progress.js.map +1 -0
- package/dist/cli/deploy.d.ts +81 -0
- package/dist/cli/deploy.d.ts.map +1 -0
- package/dist/cli/deploy.js +413 -0
- package/dist/cli/deploy.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 +227 -0
- package/dist/cli/dev-runner.js.map +1 -0
- package/dist/cli/discover.d.ts +47 -0
- package/dist/cli/discover.d.ts.map +1 -0
- package/dist/cli/discover.js +77 -0
- package/dist/cli/discover.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/index.d.ts +55 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +500 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init-templates.d.ts +37 -0
- package/dist/cli/init-templates.d.ts.map +1 -0
- package/dist/cli/init-templates.js +638 -0
- package/dist/cli/init-templates.js.map +1 -0
- package/dist/cli/init.d.ts +124 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +423 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/login.d.ts +18 -0
- package/dist/cli/login.d.ts.map +1 -0
- package/dist/cli/login.js +59 -0
- package/dist/cli/login.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 +126 -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 +40 -0
- package/dist/cli/rules.d.ts.map +1 -0
- package/dist/cli/rules.js +162 -0
- package/dist/cli/rules.js.map +1 -0
- package/dist/cli/scope.d.ts +38 -0
- package/dist/cli/scope.d.ts.map +1 -0
- package/dist/cli/scope.js +63 -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 +685 -0
- package/dist/cli/serve.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/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/authorize.d.ts +22 -0
- package/dist/credentials/core/authorize.d.ts.map +1 -0
- package/dist/credentials/core/authorize.js +39 -0
- package/dist/credentials/core/authorize.js.map +1 -0
- package/dist/credentials/core/client.d.ts +14 -0
- package/dist/credentials/core/client.d.ts.map +1 -0
- package/dist/credentials/core/client.js +13 -0
- package/dist/credentials/core/client.js.map +1 -0
- package/dist/credentials/core/exchange.d.ts +24 -0
- package/dist/credentials/core/exchange.d.ts.map +1 -0
- package/dist/credentials/core/exchange.js +46 -0
- package/dist/credentials/core/exchange.js.map +1 -0
- package/dist/credentials/core/flow.d.ts +15 -0
- package/dist/credentials/core/flow.d.ts.map +1 -0
- package/dist/credentials/core/flow.js +40 -0
- package/dist/credentials/core/flow.js.map +1 -0
- package/dist/credentials/core/from-user-credential.d.ts +3 -0
- package/dist/credentials/core/from-user-credential.d.ts.map +1 -0
- package/dist/credentials/core/from-user-credential.js +19 -0
- package/dist/credentials/core/from-user-credential.js.map +1 -0
- package/dist/credentials/core/scopes.d.ts +26 -0
- package/dist/credentials/core/scopes.d.ts.map +1 -0
- package/dist/credentials/core/scopes.js +32 -0
- package/dist/credentials/core/scopes.js.map +1 -0
- package/dist/credentials/core/types.d.ts +72 -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/index.d.ts +14 -0
- package/dist/credentials/index.d.ts.map +1 -0
- package/dist/credentials/index.js +13 -0
- package/dist/credentials/index.js.map +1 -0
- package/dist/credentials/node/ensure-scope.d.ts +29 -0
- package/dist/credentials/node/ensure-scope.d.ts.map +1 -0
- package/dist/credentials/node/ensure-scope.js +42 -0
- package/dist/credentials/node/ensure-scope.js.map +1 -0
- package/dist/credentials/node/file-store.d.ts +4 -0
- package/dist/credentials/node/file-store.d.ts.map +1 -0
- package/dist/credentials/node/file-store.js +52 -0
- package/dist/credentials/node/file-store.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 +60 -0
- package/dist/credentials/node/from-adc.js.map +1 -0
- package/dist/credentials/node/index.d.ts +10 -0
- package/dist/credentials/node/index.d.ts.map +1 -0
- package/dist/credentials/node/index.js +10 -0
- package/dist/credentials/node/index.js.map +1 -0
- package/dist/credentials/node/loopback-authorizer.d.ts +12 -0
- package/dist/credentials/node/loopback-authorizer.d.ts.map +1 -0
- package/dist/credentials/node/loopback-authorizer.js +61 -0
- package/dist/credentials/node/loopback-authorizer.js.map +1 -0
- package/dist/credentials/node/resolve-local-token.d.ts +20 -0
- package/dist/credentials/node/resolve-local-token.d.ts.map +1 -0
- package/dist/credentials/node/resolve-local-token.js +97 -0
- package/dist/credentials/node/resolve-local-token.js.map +1 -0
- package/dist/credentials/server/bff.d.ts +44 -0
- package/dist/credentials/server/bff.d.ts.map +1 -0
- package/dist/credentials/server/bff.js +43 -0
- package/dist/credentials/server/bff.js.map +1 -0
- package/dist/deploy/api-enablement.d.ts +45 -0
- package/dist/deploy/api-enablement.d.ts.map +1 -0
- package/dist/deploy/api-enablement.js +125 -0
- package/dist/deploy/api-enablement.js.map +1 -0
- package/dist/deploy/firestore/databases.d.ts +41 -0
- package/dist/deploy/firestore/databases.d.ts.map +1 -0
- package/dist/deploy/firestore/databases.js +63 -0
- package/dist/deploy/firestore/databases.js.map +1 -0
- package/dist/deploy/firestore/indexes.d.ts +120 -0
- package/dist/deploy/firestore/indexes.d.ts.map +1 -0
- package/dist/deploy/firestore/indexes.js +243 -0
- package/dist/deploy/firestore/indexes.js.map +1 -0
- package/dist/deploy/firestore/recipes.d.ts +21 -0
- package/dist/deploy/firestore/recipes.d.ts.map +1 -0
- package/dist/deploy/firestore/recipes.js +34 -0
- package/dist/deploy/firestore/recipes.js.map +1 -0
- package/dist/deploy/firestore/rules.d.ts +76 -0
- package/dist/deploy/firestore/rules.d.ts.map +1 -0
- package/dist/deploy/firestore/rules.js +180 -0
- package/dist/deploy/firestore/rules.js.map +1 -0
- package/dist/deploy/from-admin-app.d.ts +20 -0
- package/dist/deploy/from-admin-app.d.ts.map +1 -0
- package/dist/deploy/from-admin-app.js +18 -0
- package/dist/deploy/from-admin-app.js.map +1 -0
- package/dist/deploy/from-service-account.d.ts +29 -0
- package/dist/deploy/from-service-account.d.ts.map +1 -0
- package/dist/deploy/from-service-account.js +115 -0
- package/dist/deploy/from-service-account.js.map +1 -0
- package/dist/deploy/functions/bundle.d.ts +37 -0
- package/dist/deploy/functions/bundle.d.ts.map +1 -0
- package/dist/deploy/functions/bundle.js +181 -0
- package/dist/deploy/functions/bundle.js.map +1 -0
- package/dist/deploy/functions/core.d.ts +18 -0
- package/dist/deploy/functions/core.d.ts.map +1 -0
- package/dist/deploy/functions/core.js +211 -0
- package/dist/deploy/functions/core.js.map +1 -0
- package/dist/deploy/functions/iam.d.ts +17 -0
- package/dist/deploy/functions/iam.d.ts.map +1 -0
- package/dist/deploy/functions/iam.js +40 -0
- package/dist/deploy/functions/iam.js.map +1 -0
- package/dist/deploy/functions/operation.d.ts +39 -0
- package/dist/deploy/functions/operation.d.ts.map +1 -0
- package/dist/deploy/functions/operation.js +37 -0
- package/dist/deploy/functions/operation.js.map +1 -0
- package/dist/deploy/functions/spec.d.ts +69 -0
- package/dist/deploy/functions/spec.d.ts.map +1 -0
- package/dist/deploy/functions/spec.js +7 -0
- package/dist/deploy/functions/spec.js.map +1 -0
- package/dist/deploy/functions/types.d.ts +50 -0
- package/dist/deploy/functions/types.d.ts.map +1 -0
- package/dist/deploy/functions/types.js +3 -0
- package/dist/deploy/functions/types.js.map +1 -0
- package/dist/deploy/hosting/channels.d.ts +93 -0
- package/dist/deploy/hosting/channels.d.ts.map +1 -0
- package/dist/deploy/hosting/channels.js +134 -0
- package/dist/deploy/hosting/channels.js.map +1 -0
- package/dist/deploy/hosting/config.d.ts +28 -0
- package/dist/deploy/hosting/config.d.ts.map +1 -0
- package/dist/deploy/hosting/config.js +261 -0
- package/dist/deploy/hosting/config.js.map +1 -0
- package/dist/deploy/hosting/core.d.ts +38 -0
- package/dist/deploy/hosting/core.d.ts.map +1 -0
- package/dist/deploy/hosting/core.js +311 -0
- package/dist/deploy/hosting/core.js.map +1 -0
- package/dist/deploy/hosting/gzip.d.ts +11 -0
- package/dist/deploy/hosting/gzip.d.ts.map +1 -0
- package/dist/deploy/hosting/gzip.js +20 -0
- package/dist/deploy/hosting/gzip.js.map +1 -0
- package/dist/deploy/hosting/hash.d.ts +6 -0
- package/dist/deploy/hosting/hash.d.ts.map +1 -0
- package/dist/deploy/hosting/hash.js +17 -0
- package/dist/deploy/hosting/hash.js.map +1 -0
- package/dist/deploy/hosting/sites.d.ts +77 -0
- package/dist/deploy/hosting/sites.d.ts.map +1 -0
- package/dist/deploy/hosting/sites.js +73 -0
- package/dist/deploy/hosting/sites.js.map +1 -0
- package/dist/deploy/hosting/spec.d.ts +140 -0
- package/dist/deploy/hosting/spec.d.ts.map +1 -0
- package/dist/deploy/hosting/spec.js +8 -0
- package/dist/deploy/hosting/spec.js.map +1 -0
- package/dist/deploy/hosting/types.d.ts +71 -0
- package/dist/deploy/hosting/types.d.ts.map +1 -0
- package/dist/deploy/hosting/types.js +3 -0
- package/dist/deploy/hosting/types.js.map +1 -0
- package/dist/deploy/hosting/walk.d.ts +31 -0
- package/dist/deploy/hosting/walk.d.ts.map +1 -0
- package/dist/deploy/hosting/walk.js +167 -0
- package/dist/deploy/hosting/walk.js.map +1 -0
- package/dist/deploy/index.d.ts +51 -0
- package/dist/deploy/index.d.ts.map +1 -0
- package/dist/deploy/index.js +50 -0
- package/dist/deploy/index.js.map +1 -0
- package/dist/deploy/memoize-ttl.d.ts +58 -0
- package/dist/deploy/memoize-ttl.d.ts.map +1 -0
- package/dist/deploy/memoize-ttl.js +88 -0
- package/dist/deploy/memoize-ttl.js.map +1 -0
- package/dist/deploy/namespaces.d.ts +119 -0
- package/dist/deploy/namespaces.d.ts.map +1 -0
- package/dist/deploy/namespaces.js +192 -0
- package/dist/deploy/namespaces.js.map +1 -0
- package/dist/deploy/preflight.d.ts +119 -0
- package/dist/deploy/preflight.d.ts.map +1 -0
- package/dist/deploy/preflight.js +440 -0
- package/dist/deploy/preflight.js.map +1 -0
- package/dist/deploy/provider.d.ts +130 -0
- package/dist/deploy/provider.d.ts.map +1 -0
- package/dist/deploy/provider.js +21 -0
- package/dist/deploy/provider.js.map +1 -0
- package/dist/deploy/providers/database.d.ts +8 -0
- package/dist/deploy/providers/database.d.ts.map +1 -0
- package/dist/deploy/providers/database.js +37 -0
- package/dist/deploy/providers/database.js.map +1 -0
- package/dist/deploy/providers/firestore.d.ts +11 -0
- package/dist/deploy/providers/firestore.d.ts.map +1 -0
- package/dist/deploy/providers/firestore.js +43 -0
- package/dist/deploy/providers/firestore.js.map +1 -0
- package/dist/deploy/providers/functions.d.ts +9 -0
- package/dist/deploy/providers/functions.d.ts.map +1 -0
- package/dist/deploy/providers/functions.js +49 -0
- package/dist/deploy/providers/functions.js.map +1 -0
- package/dist/deploy/providers/hosting.d.ts +13 -0
- package/dist/deploy/providers/hosting.d.ts.map +1 -0
- package/dist/deploy/providers/hosting.js +149 -0
- package/dist/deploy/providers/hosting.js.map +1 -0
- package/dist/deploy/providers/storage.d.ts +9 -0
- package/dist/deploy/providers/storage.d.ts.map +1 -0
- package/dist/deploy/providers/storage.js +46 -0
- package/dist/deploy/providers/storage.js.map +1 -0
- package/dist/deploy/registry.d.ts +17 -0
- package/dist/deploy/registry.d.ts.map +1 -0
- package/dist/deploy/registry.js +15 -0
- package/dist/deploy/registry.js.map +1 -0
- package/dist/deploy/rtdb/rules.d.ts +21 -0
- package/dist/deploy/rtdb/rules.d.ts.map +1 -0
- package/dist/deploy/rtdb/rules.js +104 -0
- package/dist/deploy/rtdb/rules.js.map +1 -0
- package/dist/deploy/scope.d.ts +81 -0
- package/dist/deploy/scope.d.ts.map +1 -0
- package/dist/deploy/scope.js +44 -0
- package/dist/deploy/scope.js.map +1 -0
- package/dist/deploy/tools.d.ts +55 -0
- package/dist/deploy/tools.d.ts.map +1 -0
- package/dist/deploy/tools.js +329 -0
- package/dist/deploy/tools.js.map +1 -0
- package/dist/deploy/with-resolved-scope.d.ts +31 -0
- package/dist/deploy/with-resolved-scope.d.ts.map +1 -0
- package/dist/deploy/with-resolved-scope.js +73 -0
- package/dist/deploy/with-resolved-scope.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 +49 -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 +333 -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/findCollectionGroup.d.ts +80 -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/index.d.ts +15 -0
- package/dist/discover/index.d.ts.map +1 -0
- package/dist/discover/index.js +24 -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/rest-crawler-firestore.d.ts +51 -0
- package/dist/discover/rest-crawler-firestore.d.ts.map +1 -0
- package/dist/discover/rest-crawler-firestore.js +154 -0
- package/dist/discover/rest-crawler-firestore.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 +59 -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 +191 -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 +81 -0
- package/dist/discover/wire.d.ts.map +1 -0
- package/dist/discover/wire.js +308 -0
- package/dist/discover/wire.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/exempt.d.ts +11 -0
- package/dist/register/exempt.d.ts.map +1 -0
- package/dist/register/exempt.js +74 -0
- package/dist/register/exempt.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 +126 -0
- package/dist/register/index.js.map +1 -0
- package/dist/register/mapping.d.ts +17 -0
- package/dist/register/mapping.d.ts.map +1 -0
- package/dist/register/mapping.js +31 -0
- package/dist/register/mapping.js.map +1 -0
- package/dist/registry/admin-deps.d.ts +17 -0
- package/dist/registry/admin-deps.d.ts.map +1 -0
- package/dist/registry/admin-deps.js +68 -0
- package/dist/registry/admin-deps.js.map +1 -0
- package/dist/registry/compose.d.ts +68 -0
- package/dist/registry/compose.d.ts.map +1 -0
- package/dist/registry/compose.js +113 -0
- package/dist/registry/compose.js.map +1 -0
- package/dist/registry/index.d.ts +11 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +11 -0
- package/dist/registry/index.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 +719 -0
- package/dist/remote/index.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 +38 -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 +134 -0
- package/dist/serve/bundler.d.ts.map +1 -0
- package/dist/serve/bundler.js +452 -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_.BsN3bPok.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/index.html +1 -0
- package/dist/serve/docs-ui/docs/index.json +9914 -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 +87 -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 +86 -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 +82 -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 +70 -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 +86 -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 +92 -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 +78 -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 +67 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-api/index.html +53 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-api.md +73 -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 +75 -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 +95 -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 +73 -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 +146 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore.md +49 -0
- package/dist/serve/docs-ui/docs/pyric-auth/index.html +64 -0
- package/dist/serve/docs-ui/docs/pyric-auth-compat/index.html +874 -0
- package/dist/serve/docs-ui/docs/pyric-auth-compat.md +265 -0
- package/dist/serve/docs-ui/docs/pyric-auth-reference-api/index.html +112 -0
- package/dist/serve/docs-ui/docs/pyric-auth-reference-api.md +129 -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 +80 -0
- package/dist/serve/docs-ui/docs/pyric-auth-reference-sandbox-test-driver.md +107 -0
- package/dist/serve/docs-ui/docs/pyric-auth.md +84 -0
- package/dist/serve/docs-ui/docs/pyric-database/index.html +36 -0
- package/dist/serve/docs-ui/docs/pyric-database-compat/index.html +2428 -0
- package/dist/serve/docs-ui/docs/pyric-database-compat.md +850 -0
- package/dist/serve/docs-ui/docs/pyric-database-explanation-rules-authoring-and-deploy-are-separate/index.html +23 -0
- package/dist/serve/docs-ui/docs/pyric-database-explanation-rules-authoring-and-deploy-are-separate.md +29 -0
- package/dist/serve/docs-ui/docs/pyric-database-reference-rules-tooling/index.html +263 -0
- package/dist/serve/docs-ui/docs/pyric-database-reference-rules-tooling.md +288 -0
- package/dist/serve/docs-ui/docs/pyric-database-tutorials-01-author-rtdb-rules-with-constraints/index.html +116 -0
- package/dist/serve/docs-ui/docs/pyric-database-tutorials-01-author-rtdb-rules-with-constraints.md +142 -0
- package/dist/serve/docs-ui/docs/pyric-database.md +18 -0
- package/dist/serve/docs-ui/docs/pyric-firestore/index.html +54 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-compat/index.html +1345 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-compat.md +366 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-explanation-rules-tooling-is-separate/index.html +79 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-explanation-rules-tooling-is-separate.md +62 -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 +85 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-explanation-two-backends-one-surface/index.html +61 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-explanation-two-backends-one-surface.md +87 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-build-queries/index.html +105 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-build-queries.md +138 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-migrate-from-firebase-firestore/index.html +65 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-migrate-from-firebase-firestore.md +93 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-pick-a-backend/index.html +112 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-pick-a-backend.md +100 -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 +55 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-onsnapshot/index.html +61 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-onsnapshot.md +83 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-sandbox-ops/index.html +52 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-sandbox-ops.md +73 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-api/index.html +132 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-api.md +160 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-feature-matrix/index.html +793 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-feature-matrix.md +239 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-getfirestore/index.html +55 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-getfirestore.md +76 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-query-constraints/index.html +78 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-query-constraints.md +115 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-sandbox-ops/index.html +53 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-sandbox-ops.md +76 -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 +65 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-01-write-a-sandbox-demo/index.html +127 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-01-write-a-sandbox-demo.md +157 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-02-swap-to-prod-backend/index.html +85 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-02-swap-to-prod-backend.md +122 -0
- package/dist/serve/docs-ui/docs/pyric-firestore.md +69 -0
- package/dist/serve/docs-ui/docs/pyric-rules/index.html +93 -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 +74 -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 +71 -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 +70 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-simulator-vs-rules-test-api/index.html +96 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-simulator-vs-rules-test-api.md +76 -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 +75 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-value-wrappers-design/index.html +62 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-value-wrappers-design.md +80 -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 +54 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-compare-rulesets-for-weakening.md +69 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-inspect-rules-via-the-ast/index.html +89 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-inspect-rules-via-the-ast.md +113 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-lint-rules-source/index.html +50 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-lint-rules-source.md +73 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-pin-request-time/index.html +47 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-pin-request-time.md +58 -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 +78 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-resolve-module-imports/index.html +92 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-resolve-module-imports.md +93 -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 +117 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-test-rules-against-firebase/index.html +70 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-test-rules-against-firebase.md +93 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-api/index.html +129 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-api.md +176 -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 +105 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-errors/index.html +63 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-errors.md +89 -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 +98 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-stdlib-modules/index.html +239 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-stdlib-modules.md +135 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-test-case-schema/index.html +93 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-test-case-schema.md +109 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-validator-findings/index.html +86 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-validator-findings.md +113 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-value-wrappers/index.html +101 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-value-wrappers.md +134 -0
- package/dist/serve/docs-ui/docs/pyric-rules-tutorials-01-lint-your-first-rules-file/index.html +107 -0
- package/dist/serve/docs-ui/docs/pyric-rules-tutorials-01-lint-your-first-rules-file.md +142 -0
- package/dist/serve/docs-ui/docs/pyric-rules-tutorials-02-write-a-test-suite-for-your-rules/index.html +151 -0
- package/dist/serve/docs-ui/docs/pyric-rules-tutorials-02-write-a-test-suite-for-your-rules.md +194 -0
- package/dist/serve/docs-ui/docs/pyric-rules.md +88 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox/index.html +67 -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 +157 -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 +98 -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 +105 -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 +80 -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 +88 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-why-adapters-are-siblings.md +87 -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-how-to-multiple-isolated-sandboxes/index.html +63 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-multiple-isolated-sandboxes.md +83 -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 +154 -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 +69 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-replay-events/index.html +89 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-replay-events.md +87 -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 +86 -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 +112 -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 +70 -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 +73 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-api/index.html +77 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-api.md +117 -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 +137 -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 +114 -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 +99 -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 +128 -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 +188 -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 +77 -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 +154 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-tutorials-02-use-the-sandbox-in-a-test-harness/index.html +191 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-tutorials-02-use-the-sandbox-in-a-test-harness.md +222 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-tutorials-03-build-a-traffic-monitor/index.html +163 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-tutorials-03-build-a-traffic-monitor.md +192 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox.md +63 -0
- package/dist/serve/docs-ui/docs/pyric-storage/index.html +65 -0
- package/dist/serve/docs-ui/docs/pyric-storage-compat/index.html +1076 -0
- package/dist/serve/docs-ui/docs/pyric-storage-compat.md +337 -0
- package/dist/serve/docs-ui/docs/pyric-storage-explanation-implementation-scope/index.html +63 -0
- package/dist/serve/docs-ui/docs/pyric-storage-explanation-implementation-scope.md +104 -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 +80 -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 +104 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-enforce-rules.md +111 -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 +76 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-round-trip-metadata/index.html +77 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-round-trip-metadata.md +100 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-switch-backends/index.html +65 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-switch-backends.md +82 -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 +82 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-api/index.html +92 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-api.md +152 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-error-codes/index.html +46 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-error-codes.md +66 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-rules-subset/index.html +73 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-rules-subset.md +90 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-storage-options/index.html +45 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-storage-options.md +65 -0
- package/dist/serve/docs-ui/docs/pyric-storage-tutorials-01-upload-and-download/index.html +114 -0
- package/dist/serve/docs-ui/docs/pyric-storage-tutorials-01-upload-and-download.md +141 -0
- package/dist/serve/docs-ui/docs/pyric-storage.md +63 -0
- package/dist/serve/docs-ui/docs/pyric-tools/index.html +45 -0
- package/dist/serve/docs-ui/docs/pyric-tools-bridge/index.html +71 -0
- package/dist/serve/docs-ui/docs/pyric-tools-bridge.md +90 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy/index.html +59 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-explanation-primitives-vs-orchestrators/index.html +63 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-explanation-primitives-vs-orchestrators.md +83 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-explanation-token-caching/index.html +47 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-explanation-token-caching.md +70 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-explanation-why-no-firebase-cli/index.html +36 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-explanation-why-no-firebase-cli.md +50 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-explanation-why-this-package-exists/index.html +47 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-explanation-why-this-package-exists.md +60 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-build-projectscope-from-firebase-auth/index.html +55 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-build-projectscope-from-firebase-auth.md +68 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-build-projectscope-from-service-account/index.html +35 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-build-projectscope-from-service-account.md +52 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-bundle-and-deploy-a-function/index.html +81 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-bundle-and-deploy-a-function.md +98 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-deploy-firestore-indexes/index.html +71 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-deploy-firestore-indexes.md +91 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-deploy-firestore-rules/index.html +100 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-deploy-firestore-rules.md +105 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-deploy-hosting-rewrites/index.html +86 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-deploy-hosting-rewrites.md +92 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-deploy-realtime-database-rules/index.html +132 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-deploy-realtime-database-rules.md +165 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-deploy-to-a-preview-channel/index.html +46 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-deploy-to-a-preview-channel.md +62 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-handle-errors-and-outcomes/index.html +75 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-handle-errors-and-outcomes.md +94 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-provision-a-firestore-database/index.html +48 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-provision-a-firestore-database.md +65 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-register-tools-with-an-agent/index.html +65 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-register-tools-with-an-agent.md +82 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-api/index.html +155 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-api.md +190 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-cli-agent-io/index.html +84 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-cli-agent-io.md +66 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-error-codes/index.html +71 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-error-codes.md +102 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-firestore-namespace/index.html +138 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-firestore-namespace.md +175 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-functions-namespace/index.html +105 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-functions-namespace.md +133 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-hosting-config/index.html +194 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-hosting-config.md +95 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-hosting-namespace/index.html +99 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-hosting-namespace.md +126 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-rtdb-namespace/index.html +110 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-rtdb-namespace.md +133 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-scope-and-outcome/index.html +68 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-scope-and-outcome.md +88 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-tool-factories/index.html +160 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-tool-factories.md +104 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-tutorials-01-deploy-a-cloud-function/index.html +88 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-tutorials-01-deploy-a-cloud-function.md +119 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy.md +52 -0
- package/dist/serve/docs-ui/docs/pyric-tools-how-to-build-a-standalone-binary/index.html +92 -0
- package/dist/serve/docs-ui/docs/pyric-tools-how-to-build-a-standalone-binary.md +95 -0
- package/dist/serve/docs-ui/docs/pyric-tools-how-to-configure-auth-providers-and-domains/index.html +101 -0
- package/dist/serve/docs-ui/docs/pyric-tools-how-to-configure-auth-providers-and-domains.md +126 -0
- package/dist/serve/docs-ui/docs/pyric-tools-how-to-discover-a-schema-from-firestore/index.html +95 -0
- package/dist/serve/docs-ui/docs/pyric-tools-how-to-discover-a-schema-from-firestore.md +119 -0
- package/dist/serve/docs-ui/docs/pyric-tools-how-to-promote-sandbox-state-to-a-fixture/index.html +52 -0
- package/dist/serve/docs-ui/docs/pyric-tools-how-to-promote-sandbox-state-to-a-fixture.md +83 -0
- package/dist/serve/docs-ui/docs/pyric-tools-how-to-serve-persistence-and-multi-tab/index.html +232 -0
- package/dist/serve/docs-ui/docs/pyric-tools-how-to-serve-persistence-and-multi-tab.md +178 -0
- package/dist/serve/docs-ui/docs/pyric-tools-how-to-use-the-vite-plugin/index.html +340 -0
- package/dist/serve/docs-ui/docs/pyric-tools-how-to-use-the-vite-plugin.md +288 -0
- package/dist/serve/docs-ui/docs/pyric-tools-how-to-verify-against-a-captured-session/index.html +128 -0
- package/dist/serve/docs-ui/docs/pyric-tools-how-to-verify-against-a-captured-session.md +173 -0
- package/dist/serve/docs-ui/docs/pyric-tools-reference-cli/index.html +433 -0
- package/dist/serve/docs-ui/docs/pyric-tools-reference-cli.md +252 -0
- package/dist/serve/docs-ui/docs/pyric-tools-reference-verify/index.html +81 -0
- package/dist/serve/docs-ui/docs/pyric-tools-reference-verify.md +98 -0
- package/dist/serve/docs-ui/docs/pyric-tools-tutorials-getting-started/index.html +92 -0
- package/dist/serve/docs-ui/docs/pyric-tools-tutorials-getting-started.md +117 -0
- package/dist/serve/docs-ui/docs/pyric-tools-tutorials-server-adoption/index.html +221 -0
- package/dist/serve/docs-ui/docs/pyric-tools-tutorials-server-adoption.md +239 -0
- package/dist/serve/docs-ui/docs/pyric-tools-tutorials-wire-claude-code/index.html +205 -0
- package/dist/serve/docs-ui/docs/pyric-tools-tutorials-wire-claude-code.md +250 -0
- package/dist/serve/docs-ui/docs/pyric-tools.md +47 -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 +108 -0
- package/dist/serve/docs-ui/docs/ui-auth-authusers/index.html +258 -0
- package/dist/serve/docs-ui/docs/ui-auth-authusers.md +174 -0
- package/dist/serve/docs-ui/docs/ui-firestore-collectionlist/index.html +92 -0
- package/dist/serve/docs-ui/docs/ui-firestore-collectionlist.md +71 -0
- package/dist/serve/docs-ui/docs/ui-firestore-deletewithconfirm/index.html +128 -0
- package/dist/serve/docs-ui/docs/ui-firestore-deletewithconfirm.md +94 -0
- package/dist/serve/docs-ui/docs/ui-firestore-documenteditor/index.html +154 -0
- package/dist/serve/docs-ui/docs/ui-firestore-documenteditor.md +107 -0
- package/dist/serve/docs-ui/docs/ui-firestore-documentlist/index.html +132 -0
- package/dist/serve/docs-ui/docs/ui-firestore-documentlist.md +86 -0
- package/dist/serve/docs-ui/docs/ui-firestore-documentpreview/index.html +159 -0
- package/dist/serve/docs-ui/docs/ui-firestore-documentpreview.md +78 -0
- package/dist/serve/docs-ui/docs/ui-firestore-querybuilder/index.html +104 -0
- package/dist/serve/docs-ui/docs/ui-firestore-querybuilder.md +95 -0
- package/dist/serve/docs-ui/docs/ui-firestore-referencepicker/index.html +113 -0
- package/dist/serve/docs-ui/docs/ui-firestore-referencepicker.md +85 -0
- package/dist/serve/docs-ui/docs/ui-primitives-badge/index.html +56 -0
- package/dist/serve/docs-ui/docs/ui-primitives-badge.md +34 -0
- package/dist/serve/docs-ui/docs/ui-primitives-confirmdialog/index.html +140 -0
- package/dist/serve/docs-ui/docs/ui-primitives-confirmdialog.md +98 -0
- package/dist/serve/docs-ui/docs/ui-primitives-copybutton/index.html +58 -0
- package/dist/serve/docs-ui/docs/ui-primitives-copybutton.md +31 -0
- package/dist/serve/docs-ui/docs/ui-primitives-jsonview/index.html +58 -0
- package/dist/serve/docs-ui/docs/ui-primitives-jsonview.md +41 -0
- package/dist/serve/docs-ui/docs/ui-primitives-segmentedcontrol/index.html +70 -0
- package/dist/serve/docs-ui/docs/ui-primitives-segmentedcontrol.md +44 -0
- package/dist/serve/docs-ui/docs/ui-primitives-toast/index.html +87 -0
- package/dist/serve/docs-ui/docs/ui-primitives-toast.md +74 -0
- package/dist/serve/docs-ui/docs/ui-primitives-virtuallist/index.html +85 -0
- package/dist/serve/docs-ui/docs/ui-primitives-virtuallist.md +48 -0
- package/dist/serve/docs-ui/docs/ui-storage/index.html +154 -0
- package/dist/serve/docs-ui/docs/ui-storage-deleteselectionwithconfirm/index.html +127 -0
- package/dist/serve/docs-ui/docs/ui-storage-deleteselectionwithconfirm.md +83 -0
- package/dist/serve/docs-ui/docs/ui-storage-objectbrowser/index.html +137 -0
- package/dist/serve/docs-ui/docs/ui-storage-objectbrowser.md +84 -0
- package/dist/serve/docs-ui/docs/ui-storage-objectinspector/index.html +139 -0
- package/dist/serve/docs-ui/docs/ui-storage-objectinspector.md +87 -0
- package/dist/serve/docs-ui/docs/ui-storage-pathbreadcrumb/index.html +72 -0
- package/dist/serve/docs-ui/docs/ui-storage-pathbreadcrumb.md +51 -0
- package/dist/serve/docs-ui/docs/ui-storage-rules-aware-affordances/index.html +65 -0
- package/dist/serve/docs-ui/docs/ui-storage-rules-aware-affordances.md +53 -0
- package/dist/serve/docs-ui/docs/ui-storage-uploaddropzone/index.html +93 -0
- package/dist/serve/docs-ui/docs/ui-storage-uploaddropzone.md +72 -0
- package/dist/serve/docs-ui/docs/ui-storage-usestoragerulesgate/index.html +153 -0
- package/dist/serve/docs-ui/docs/ui-storage-usestoragerulesgate.md +105 -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 +54 -0
- package/dist/serve/docs-ui/docs/ui-traffic-trafficdetail/index.html +78 -0
- package/dist/serve/docs-ui/docs/ui-traffic-trafficdetail.md +53 -0
- package/dist/serve/docs-ui/docs/ui-traffic-trafficlog/index.html +118 -0
- package/dist/serve/docs-ui/docs/ui-traffic-trafficlog.md +63 -0
- package/dist/serve/docs-ui/docs/ui-traffic-trafficstats/index.html +51 -0
- package/dist/serve/docs-ui/docs/ui-traffic-trafficstats.md +40 -0
- package/dist/serve/docs-ui/docs/ui-traffic.md +96 -0
- package/dist/serve/docs-ui/docs/ui.md +88 -0
- package/dist/serve/docs-ui/index.html +1 -0
- package/dist/serve/docs-ui/llms.txt +221 -0
- package/dist/serve/entries/app.d.ts +26 -0
- package/dist/serve/entries/app.d.ts.map +1 -0
- package/dist/serve/entries/app.js +51 -0
- package/dist/serve/entries/app.js.map +1 -0
- package/dist/serve/entries/auth-helper-core.d.ts +47 -0
- package/dist/serve/entries/auth-helper-core.d.ts.map +1 -0
- package/dist/serve/entries/auth-helper-core.js +121 -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.d.ts +62 -0
- package/dist/serve/entries/auth.d.ts.map +1 -0
- package/dist/serve/entries/auth.js +128 -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 +34 -0
- package/dist/serve/entries/database.d.ts.map +1 -0
- package/dist/serve/entries/database.js +42 -0
- package/dist/serve/entries/database.js.map +1 -0
- package/dist/serve/entries/firestore.d.ts +68 -0
- package/dist/serve/entries/firestore.d.ts.map +1 -0
- package/dist/serve/entries/firestore.js +115 -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 +14 -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/runtime.d.ts +60 -0
- package/dist/serve/entries/runtime.d.ts.map +1 -0
- package/dist/serve/entries/runtime.js +555 -0
- package/dist/serve/entries/runtime.js.map +1 -0
- package/dist/serve/entries/session-store.d.ts +45 -0
- package/dist/serve/entries/session-store.d.ts.map +1 -0
- package/dist/serve/entries/session-store.js +71 -0
- package/dist/serve/entries/session-store.js.map +1 -0
- package/dist/serve/entries/storage.d.ts +23 -0
- package/dist/serve/entries/storage.d.ts.map +1 -0
- package/dist/serve/entries/storage.js +49 -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/namespace.d.ts +93 -0
- package/dist/serve/namespace.d.ts.map +1 -0
- package/dist/serve/namespace.js +367 -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/playground-ui/_astro/HomePage.BFOjZGZp.js +2 -0
- package/dist/serve/playground-ui/_astro/PlaygroundPage.3jki8il0.js +3300 -0
- package/dist/serve/playground-ui/_astro/PlaygroundPage.MhP_vFvK.css +32 -0
- package/dist/serve/playground-ui/_astro/TopBar.ChifCjLD.js +5025 -0
- package/dist/serve/playground-ui/_astro/client.D61DpmEZ.js +274 -0
- package/dist/serve/playground-ui/_astro/client.GCK88uRs.js +1 -0
- package/dist/serve/playground-ui/_astro/esbuild.BHljloGq.wasm +0 -0
- package/dist/serve/playground-ui/_astro/index.B9aLOeXL.js +29 -0
- package/dist/serve/playground-ui/_astro/index.BTKE7uRF.js +1227 -0
- package/dist/serve/playground-ui/_astro/index.BfCthstx.css +1 -0
- package/dist/serve/playground-ui/_astro/index.Mr0Dtjih.js +342 -0
- package/dist/serve/playground-ui/_astro/ort-wasm-simd-threaded.asyncify.DMmc6YqF.wasm +0 -0
- package/dist/serve/playground-ui/favicon.svg +4 -0
- package/dist/serve/playground-ui/index.html +2 -0
- package/dist/serve/playground-ui/playground/index.html +2 -0
- package/dist/serve/rules.d.ts +45 -0
- package/dist/serve/rules.d.ts.map +1 -0
- package/dist/serve/rules.js +139 -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 +32 -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 +66 -0
- package/dist/serve/standalone-assets.d.ts.map +1 -0
- package/dist/serve/standalone-assets.js +144 -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-Bncteb8z.js +23 -0
- package/dist/serve/studio-ui/assets/index-CmkJxFcG.js +4577 -0
- package/dist/serve/studio-ui/assets/index-DNK39P6C.css +1 -0
- package/dist/serve/studio-ui/assets/seed-Bab4ArXQ.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 +687 -0
- package/dist/serve/vite-plugin.js.map +1 -0
- package/dist/serve/worker/client.d.ts +668 -0
- package/dist/serve/worker/client.d.ts.map +1 -0
- package/dist/serve/worker/client.js +1635 -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 +122 -0
- package/dist/serve/worker/entry.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 +434 -0
- package/dist/serve/worker/host-auth.js.map +1 -0
- package/dist/serve/worker/host-context.d.ts +180 -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.d.ts +81 -0
- package/dist/serve/worker/host.d.ts.map +1 -0
- package/dist/serve/worker/host.js +1605 -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/protocol.d.ts +955 -0
- package/dist/serve/worker/protocol.d.ts.map +1 -0
- package/dist/serve/worker/protocol.js +197 -0
- package/dist/serve/worker/protocol.js.map +1 -0
- package/dist/serve/worker/serve-init.d.ts +192 -0
- package/dist/serve/worker/serve-init.d.ts.map +1 -0
- package/dist/serve/worker/serve-init.js +555 -0
- package/dist/serve/worker/serve-init.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 +79 -0
- package/dist/verify/fixture.d.ts.map +1 -0
- package/dist/verify/fixture.js +114 -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/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 +127 -0
|
@@ -0,0 +1,555 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `pyric dev` in-page runtime — the shared chunk every served SDK bundle
|
|
3
|
+
* closes over. One sandbox per page; init payload (rules, future bridge URL)
|
|
4
|
+
* fetched from `/__pyric/init.json` at module init.
|
|
5
|
+
*
|
|
6
|
+
* TOP-LEVEL AWAIT IS LOAD-BEARING: every importer (the auth/firestore bundles,
|
|
7
|
+
* and therefore the user's app module) is deferred until this module resolves,
|
|
8
|
+
* so by the time app code runs the rules are deployed — no
|
|
9
|
+
* "first write raced the ruleset" class of bugs.
|
|
10
|
+
*
|
|
11
|
+
* This file is BUNDLED FOR THE BROWSER by `../bundler.ts` (esbuild) — it is
|
|
12
|
+
* never imported by node-side pyric-tools code. Bundle splitting must keep it
|
|
13
|
+
* a single shared chunk: two copies would mean two sandboxes (P0 validation
|
|
14
|
+
* constraint, design rationale section 9).
|
|
15
|
+
*/
|
|
16
|
+
import { initializeSandbox, recordBackendOverBlob, serializeToBuckets, bundleRecords, } from 'pyric/sandbox';
|
|
17
|
+
import { getFirestore, sandbox as sandboxOps } from 'pyric/firestore';
|
|
18
|
+
import { getDatabase, sandbox as rtdbSandbox } from 'pyric/database/modular';
|
|
19
|
+
import { getAuth, onAuthStateChanged, signOut, sandbox as authOps } from 'pyric/auth';
|
|
20
|
+
import { getFirestore as workerGetFirestore, getWorkerVersion, callTool as workerCallTool, relayWorkerOp, relayWorkerSub, getAuth as workerGetAuth, onAuthStateChanged as workerOnAuthStateChanged, restorePortSession as workerRestorePortSession, } from '../worker/client.js';
|
|
21
|
+
import { SessionStore } from './session-store.js';
|
|
22
|
+
import { keepaliveSafe } from './keepalive.js';
|
|
23
|
+
import { toPageOriginWsUrl } from './bridge-url.js';
|
|
24
|
+
import { buildVerifyFixture } from '../../verify/fixture.js';
|
|
25
|
+
/**
|
|
26
|
+
* The DEFAULT-ON worker path (Phase 3c): when SharedWorker is available the
|
|
27
|
+
* `firebase/*` entry adapters route to the worker-hosted sandbox instead of
|
|
28
|
+
* the in-page one. The worker owns rules/seed/persist/capture/session (it
|
|
29
|
+
* fetches the SAME `/__pyric/init.json`), so on this path the page MUST NOT
|
|
30
|
+
* re-run that backend init below — doing so would double-POST captures and
|
|
31
|
+
* fight the worker over `/__pyric/state`. Unsupported browsers fall back to
|
|
32
|
+
* the in-page sandbox + the shipped BroadcastChannel sync (strict enhancement).
|
|
33
|
+
*
|
|
34
|
+
* `globalThis.__PYRIC_FORCE_INPAGE__` is an explicit opt-out: a host that does
|
|
35
|
+
* NOT serve the worker bundle (`/__pyric/sdk/worker.js`) sets it before this
|
|
36
|
+
* module evaluates so the page takes the in-page path instead of trying to load
|
|
37
|
+
* a worker that 404s. `pyric dev` always serves the worker and never sets it;
|
|
38
|
+
* the `pyric-tools/vite` plugin sets it until it serves the worker (M2).
|
|
39
|
+
*/
|
|
40
|
+
export const useWorker = typeof SharedWorker !== 'undefined' &&
|
|
41
|
+
!globalThis.__PYRIC_FORCE_INPAGE__;
|
|
42
|
+
/** Served URL of the bundled SharedWorker host (bundler `worker.js`). */
|
|
43
|
+
export const WORKER_URL = '/__pyric/sdk/worker.js';
|
|
44
|
+
/**
|
|
45
|
+
* STABLE SharedWorker name — every tab of the origin shares ONE worker (the
|
|
46
|
+
* whole point: one backend, live multi-tab sync). We deliberately do NOT
|
|
47
|
+
* version the name: a versioned name would make tabs opened across a pyric
|
|
48
|
+
* rebuild connect to DIFFERENT workers, silently splitting the backend so a
|
|
49
|
+
* write in one tab wouldn't reach another.
|
|
50
|
+
*
|
|
51
|
+
* The cost: a SharedWorker can't hot-update its code — it runs whatever version
|
|
52
|
+
* started it until ALL tabs of the origin close. So if pyric itself is rebuilt
|
|
53
|
+
* while tabs are open, they keep the OLD worker. We DETECT that (see the
|
|
54
|
+
* staleness check below) and warn, rather than trading away multi-tab sharing.
|
|
55
|
+
* (End users of `pyric dev` edit their OWN app, not pyric's worker bundle, so
|
|
56
|
+
* this only affects pyric development.)
|
|
57
|
+
*/
|
|
58
|
+
const WORKER_NAME = 'pyric-shared-worker';
|
|
59
|
+
/**
|
|
60
|
+
* The in-page sandbox. On the worker path it is NOT the data backend — it
|
|
61
|
+
* stays mounted as the FALLBACK primitive and as the provider-sign-in
|
|
62
|
+
* resolution surface (the in-page `AuthFlowResolver` + `ServeAuthHelper`
|
|
63
|
+
* resolve popup/redirect identities, which the entry then bridges to the
|
|
64
|
+
* worker via `auth.acceptIdentity`).
|
|
65
|
+
*/
|
|
66
|
+
export const sandbox = initializeSandbox();
|
|
67
|
+
/**
|
|
68
|
+
* The shared worker-backed Firestore handle (one SharedWorker connection for
|
|
69
|
+
* the whole page — the auth entry reuses its port too). Null when SharedWorker
|
|
70
|
+
* is unavailable. Opening it here connects the SharedWorker eagerly so the
|
|
71
|
+
* worker's first-connect init (rules/seed/persist) is underway before app code
|
|
72
|
+
* issues its first op.
|
|
73
|
+
*/
|
|
74
|
+
export const workerDb = useWorker ? workerGetFirestore(WORKER_URL, WORKER_NAME) : null;
|
|
75
|
+
// Staleness guard: warn (don't split) if the running worker is older than what
|
|
76
|
+
// serve is now serving. serve stamps the served bundle hash into
|
|
77
|
+
// `<meta name="pyric-worker-v">`; the worker reports its OWN baked hash. A
|
|
78
|
+
// mismatch means a still-running worker from before a pyric rebuild — close all
|
|
79
|
+
// tabs of the origin to load the new worker.
|
|
80
|
+
if (useWorker && typeof document !== 'undefined') {
|
|
81
|
+
const servedV = document
|
|
82
|
+
.querySelector('meta[name="pyric-worker-v"]')
|
|
83
|
+
?.getAttribute('content');
|
|
84
|
+
void getWorkerVersion(workerDb)
|
|
85
|
+
.then((runningV) => {
|
|
86
|
+
if (servedV && runningV && runningV !== 'dev' && servedV !== runningV) {
|
|
87
|
+
console.warn(`[pyric dev] the SharedWorker is running OLDER code (build ${runningV}) than what is now ` +
|
|
88
|
+
`served (build ${servedV}). A SharedWorker can't hot-update — CLOSE ALL TABS of this origin ` +
|
|
89
|
+
'and reopen to load the new worker. (All tabs share one worker, so a partial reload leaves ' +
|
|
90
|
+
'the old code running for everyone.)');
|
|
91
|
+
}
|
|
92
|
+
})
|
|
93
|
+
.catch(() => { });
|
|
94
|
+
}
|
|
95
|
+
/** Page-wide auth session store — `entries/auth.ts`'s `setPersistence` wrap
|
|
96
|
+
* switches its mode. Memory-backed fallback keeps non-browser imports inert. */
|
|
97
|
+
const memoryStorage = () => {
|
|
98
|
+
const m = new Map();
|
|
99
|
+
return {
|
|
100
|
+
getItem: (k) => m.get(k) ?? null,
|
|
101
|
+
setItem: (k, v) => void m.set(k, v),
|
|
102
|
+
removeItem: (k) => void m.delete(k),
|
|
103
|
+
};
|
|
104
|
+
};
|
|
105
|
+
export const sessionStore = new SessionStore(typeof localStorage !== 'undefined' && typeof sessionStorage !== 'undefined'
|
|
106
|
+
? { local: localStorage, session: sessionStorage }
|
|
107
|
+
: { local: memoryStorage(), session: memoryStorage() });
|
|
108
|
+
const diagnostics = {
|
|
109
|
+
sandboxReady: true,
|
|
110
|
+
rulesDeployed: false,
|
|
111
|
+
databaseRulesDeployed: false,
|
|
112
|
+
rulesHash: null,
|
|
113
|
+
databaseRulesHash: null,
|
|
114
|
+
initError: null,
|
|
115
|
+
bridgeConnected: false,
|
|
116
|
+
seededDocs: 0,
|
|
117
|
+
persistEnabled: false,
|
|
118
|
+
lastFlushAt: null,
|
|
119
|
+
persistReadOnly: false,
|
|
120
|
+
seedSkipped: false,
|
|
121
|
+
};
|
|
122
|
+
globalThis.__pyricServe = diagnostics;
|
|
123
|
+
let bridgeUrlFromPayload = null;
|
|
124
|
+
// ── init payload: fetch + apply (top-level await — see header) ────────
|
|
125
|
+
// WORKER PATH: skipped — the worker fetches the same init.json and owns
|
|
126
|
+
// rules/seed/persist/capture/session. Running it here too would double-POST
|
|
127
|
+
// captures and fight the worker over the /__pyric/state writer lock.
|
|
128
|
+
if (!useWorker)
|
|
129
|
+
try {
|
|
130
|
+
const res = await fetch('/__pyric/init.json');
|
|
131
|
+
if (!res.ok)
|
|
132
|
+
throw new Error(`/__pyric/init.json → ${res.status}`);
|
|
133
|
+
const payload = (await res.json());
|
|
134
|
+
bridgeUrlFromPayload = payload.bridgeUrl;
|
|
135
|
+
// Register RTDB with the persistence registry BEFORE enablePersistence
|
|
136
|
+
// (below) so the restored tree rides the controller blob and is applied
|
|
137
|
+
// during restore-on-attach — same eager-registration reasoning as the
|
|
138
|
+
// worker path (serve-init.ts). `getDatabase(sandbox)` is idempotent
|
|
139
|
+
// (one backend per sandbox) so a later rules/op call reuses it.
|
|
140
|
+
getDatabase(sandbox);
|
|
141
|
+
if (payload.rules) {
|
|
142
|
+
const db = getFirestore(sandbox);
|
|
143
|
+
const lint = sandboxOps.setRules(db, payload.rules);
|
|
144
|
+
if (lint.parseError) {
|
|
145
|
+
// The server lints before serving, so this is a defensive surface —
|
|
146
|
+
// loud, but don't brick the page: the sandbox keeps its default rules.
|
|
147
|
+
throw new Error(`firestore.rules failed to parse in the sandbox: ${JSON.stringify(lint.parseError)}`);
|
|
148
|
+
}
|
|
149
|
+
diagnostics.rulesDeployed = true;
|
|
150
|
+
diagnostics.rulesHash = payload.rulesHash;
|
|
151
|
+
}
|
|
152
|
+
if (payload.databaseRules) {
|
|
153
|
+
rtdbSandbox.setRules(getDatabase(sandbox), payload.databaseRules);
|
|
154
|
+
diagnostics.databaseRulesDeployed = true;
|
|
155
|
+
diagnostics.databaseRulesHash = payload.databaseRulesHash ?? null;
|
|
156
|
+
}
|
|
157
|
+
// Auth users land first in either mode (persist restore or state-file
|
|
158
|
+
// fixture) so restored docs' owner uids resolve in rules and the session
|
|
159
|
+
// restore below has a DB to restore into.
|
|
160
|
+
if (payload.authUsers && payload.authUsers.length > 0) {
|
|
161
|
+
authOps.seedUsers(getAuth(sandbox), payload.authUsers);
|
|
162
|
+
}
|
|
163
|
+
if (!payload.persist && payload.seedState) {
|
|
164
|
+
// ── ephemeral fixture (`--seed <state-file>`): restore the blob through
|
|
165
|
+
// the persistence controller's OWN deserializer (wrapper re-hydration —
|
|
166
|
+
// seedDocuments on raw marker JSON would break instanceof in rules) via
|
|
167
|
+
// a read-only backend. Writes go nowhere: ephemeral stays ephemeral.
|
|
168
|
+
const seedSnap = payload.seedState;
|
|
169
|
+
const fixtureBundle = bundleRecords(serializeToBuckets(seedSnap.firestore ?? {}, seedSnap.services ?? {}, 0));
|
|
170
|
+
// NOTE (pre-mortem #6b): this attaches a PERMANENT controller whose
|
|
171
|
+
// write() is a no-op — so every later mutation in this page pays the
|
|
172
|
+
// whole-state serialize cost to feed a sink. pyric exposes no
|
|
173
|
+
// `disablePersistence`/dispose, so a one-shot restore isn't possible from
|
|
174
|
+
// here without a pyric change (tracked as a pyric follow-up). Accepted:
|
|
175
|
+
// fixture pages are demo-sized; the cost is bounded and invisible to
|
|
176
|
+
// correctness.
|
|
177
|
+
await sandbox.enablePersistence({
|
|
178
|
+
key: 'pyric-serve-fixture',
|
|
179
|
+
injectedBackend: recordBackendOverBlob({
|
|
180
|
+
read: async () => fixtureBundle,
|
|
181
|
+
write: async () => { },
|
|
182
|
+
clear: async () => { },
|
|
183
|
+
}),
|
|
184
|
+
});
|
|
185
|
+
const docs = payload.seedState.firestore;
|
|
186
|
+
diagnostics.seededDocs = docs ? Object.keys(docs).length : 0;
|
|
187
|
+
}
|
|
188
|
+
if (payload.persist) {
|
|
189
|
+
// ── persist mode (flow doc section 3c): the substrate is durable. The
|
|
190
|
+
// sandbox's OWN persistence controller with an HTTP backend over
|
|
191
|
+
// /__pyric/state — it owns restore-on-attach (wrapper re-hydration),
|
|
192
|
+
// debounced auto-flush, and the beforeunload safety flush.
|
|
193
|
+
const section = (name) => `/__pyric/state?section=${name}`;
|
|
194
|
+
// Single-writer lock (pre-mortem #3): a per-page id claims the writer
|
|
195
|
+
// role on first flush; a second tab gets 423 and drops to read-only so
|
|
196
|
+
// it can't erase this tab's world. The server frees a stale lock, so a
|
|
197
|
+
// reload after the writer closed can reclaim it.
|
|
198
|
+
const writerId = typeof crypto !== 'undefined' && crypto.randomUUID ? crypto.randomUUID() : `w-${Date.now()}`;
|
|
199
|
+
const writerHeaders = { 'content-type': 'application/json', 'x-pyric-writer': writerId };
|
|
200
|
+
let readOnly = false;
|
|
201
|
+
const lostWriterLock = () => {
|
|
202
|
+
if (readOnly)
|
|
203
|
+
return;
|
|
204
|
+
readOnly = true;
|
|
205
|
+
diagnostics.persistReadOnly = true;
|
|
206
|
+
console.warn('[pyric dev] another tab is the persist writer — THIS tab is read-only ' +
|
|
207
|
+
'(your changes here will NOT be saved). Close the other tab and reload to take over.');
|
|
208
|
+
};
|
|
209
|
+
await sandbox.enablePersistence({
|
|
210
|
+
key: 'pyric-serve',
|
|
211
|
+
injectedBackend: recordBackendOverBlob({
|
|
212
|
+
async read() {
|
|
213
|
+
const res = await fetch(section('firestore'));
|
|
214
|
+
return res.status === 200 ? await res.text() : null;
|
|
215
|
+
},
|
|
216
|
+
async write(value) {
|
|
217
|
+
if (readOnly)
|
|
218
|
+
return; // a non-writer tab silently no-ops its flushes
|
|
219
|
+
const res = await fetch(section('firestore'), {
|
|
220
|
+
method: 'POST',
|
|
221
|
+
headers: writerHeaders,
|
|
222
|
+
body: value,
|
|
223
|
+
// The controller's beforeunload flush fires THIS write as the
|
|
224
|
+
// page is leaving; a plain fetch is aborted on unload (pre-mortem
|
|
225
|
+
// #1 — the "crash-only" claim was wrong). `keepalive` lets a
|
|
226
|
+
// small final flush survive unload. It's capped (~64KB across
|
|
227
|
+
// all keepalive requests), so large states skip it and warn
|
|
228
|
+
// once — those lose the final unsaved delta on tab close
|
|
229
|
+
// (reload-based flushes are unaffected).
|
|
230
|
+
keepalive: keepaliveSafe(value),
|
|
231
|
+
});
|
|
232
|
+
if (res.status === 423)
|
|
233
|
+
return lostWriterLock();
|
|
234
|
+
if (!res.ok)
|
|
235
|
+
throw new Error(`state flush → ${res.status}`);
|
|
236
|
+
diagnostics.lastFlushAt = Date.now();
|
|
237
|
+
},
|
|
238
|
+
async clear() {
|
|
239
|
+
if (readOnly)
|
|
240
|
+
return;
|
|
241
|
+
await fetch(section('firestore'), { method: 'POST', headers: writerHeaders, body: 'null' });
|
|
242
|
+
},
|
|
243
|
+
}),
|
|
244
|
+
});
|
|
245
|
+
diagnostics.persistEnabled = true;
|
|
246
|
+
// Heartbeat: keep an alive-but-idle writer's lock fresh. PUT refreshes
|
|
247
|
+
// the lock WITHOUT writing state (a POST would clobber). Release on
|
|
248
|
+
// pagehide so another tab can take over promptly.
|
|
249
|
+
const heartbeat = setInterval(() => {
|
|
250
|
+
if (readOnly)
|
|
251
|
+
return;
|
|
252
|
+
void fetch('/__pyric/state', { method: 'PUT', headers: writerHeaders }).then((res) => {
|
|
253
|
+
if (res.status === 423) {
|
|
254
|
+
lostWriterLock();
|
|
255
|
+
clearInterval(heartbeat);
|
|
256
|
+
}
|
|
257
|
+
}, () => { });
|
|
258
|
+
}, 20_000);
|
|
259
|
+
if (typeof window !== 'undefined') {
|
|
260
|
+
window.addEventListener('pagehide', () => {
|
|
261
|
+
clearInterval(heartbeat);
|
|
262
|
+
if (!readOnly) {
|
|
263
|
+
fetch('/__pyric/state', { method: 'DELETE', headers: writerHeaders, keepalive: true }).catch(() => { });
|
|
264
|
+
}
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
// Auth user-DB changes flush separately (the controller's blob is
|
|
268
|
+
// firestore-only). Debounced; exportUsers→seedUsers round-trips.
|
|
269
|
+
const auth = getAuth(sandbox);
|
|
270
|
+
let authFlushTimer = null;
|
|
271
|
+
authOps.subscribeUsers(auth, () => {
|
|
272
|
+
if (readOnly)
|
|
273
|
+
return;
|
|
274
|
+
if (authFlushTimer)
|
|
275
|
+
clearTimeout(authFlushTimer);
|
|
276
|
+
authFlushTimer = setTimeout(() => {
|
|
277
|
+
void fetch(section('auth'), {
|
|
278
|
+
method: 'POST',
|
|
279
|
+
headers: writerHeaders,
|
|
280
|
+
body: JSON.stringify({ users: authOps.exportUsers(auth) }),
|
|
281
|
+
}).then((res) => {
|
|
282
|
+
if (res.status === 423)
|
|
283
|
+
lostWriterLock();
|
|
284
|
+
else if (res.ok)
|
|
285
|
+
diagnostics.lastFlushAt = Date.now();
|
|
286
|
+
}, (e) => console.warn('[pyric dev] auth state flush failed:', e));
|
|
287
|
+
}, 500);
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
if (payload.capture) {
|
|
291
|
+
// ── capture mode (the write-side of the pyric verify loop): whenever
|
|
292
|
+
// the sandbox changes, push a snapshot of the full session fixture
|
|
293
|
+
// (rules + history + firestore state) to /__pyric/capture. The server
|
|
294
|
+
// writes it verbatim to `.pyric/last-session.json` so `pyric verify`
|
|
295
|
+
// can replay without any extra arguments. This is independent of
|
|
296
|
+
// --persist — capture is about the verify loop, persist is about
|
|
297
|
+
// cross-reload durability.
|
|
298
|
+
const flushCapture = () => {
|
|
299
|
+
const rtdbState = payload.databaseRules || sandbox.history().some((event) => event.service === 'rtdb')
|
|
300
|
+
? rtdbSandbox.snapshotState(getDatabase(sandbox))
|
|
301
|
+
: undefined;
|
|
302
|
+
const auth = getAuth(sandbox);
|
|
303
|
+
const body = JSON.stringify(buildVerifyFixture({
|
|
304
|
+
sandbox,
|
|
305
|
+
firestoreRules: payload.rules,
|
|
306
|
+
rtdbRules: payload.databaseRules ?? null,
|
|
307
|
+
rtdbState,
|
|
308
|
+
rtdbDatabaseUrl: payload.databaseUrl ?? null,
|
|
309
|
+
authState: {
|
|
310
|
+
users: authOps.exportUsers(auth),
|
|
311
|
+
currentUser: auth.currentUser,
|
|
312
|
+
},
|
|
313
|
+
}));
|
|
314
|
+
fetch('/__pyric/capture', {
|
|
315
|
+
method: 'POST',
|
|
316
|
+
headers: { 'content-type': 'application/json' },
|
|
317
|
+
body,
|
|
318
|
+
keepalive: keepaliveSafe(body),
|
|
319
|
+
}).catch(() => { });
|
|
320
|
+
};
|
|
321
|
+
// Debounced flush on every sandbox event — coalesces rapid writes (e.g.
|
|
322
|
+
// seeding multiple docs) into a single push. 400ms matches the cadence
|
|
323
|
+
// of the persist auth flush; small enough to feel live, large enough to
|
|
324
|
+
// avoid one-POST-per-write on bulk ops.
|
|
325
|
+
let captureTimer = null;
|
|
326
|
+
sandbox.onEvent(() => {
|
|
327
|
+
if (captureTimer)
|
|
328
|
+
clearTimeout(captureTimer);
|
|
329
|
+
captureTimer = setTimeout(flushCapture, 400);
|
|
330
|
+
});
|
|
331
|
+
// Unload flush — best-effort, keepalive. Separate from any persist
|
|
332
|
+
// pagehide listener so they don't interfere.
|
|
333
|
+
if (typeof window !== 'undefined') {
|
|
334
|
+
window.addEventListener('pagehide', () => {
|
|
335
|
+
flushCapture();
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
if (payload.seed && Object.keys(payload.seed).length > 0) {
|
|
340
|
+
// A seed fixture applies only into an empty home — mirrors the worker's
|
|
341
|
+
// guard (serve/worker/serve-init.ts): by this point any --persist restore
|
|
342
|
+
// above has already run, so an existing document means lived/restored
|
|
343
|
+
// data, not a blank slate. Never stomp it with a fixture.
|
|
344
|
+
const existing = Object.keys(sandboxOps.snapshotState(getFirestore(sandbox))).length > 0;
|
|
345
|
+
if (existing) {
|
|
346
|
+
diagnostics.seedSkipped = true;
|
|
347
|
+
console.info('[pyric dev] --seed skipped: the sandbox already has restored data — the fixture would ' +
|
|
348
|
+
'have overwritten it. Use `--persist --fresh` to discard existing state and re-seed.');
|
|
349
|
+
}
|
|
350
|
+
else {
|
|
351
|
+
// Admin-style fixture load (bypasses rules) — runs before app code
|
|
352
|
+
// (top-level await), so the app's first render sees the seeded state.
|
|
353
|
+
sandboxOps.seedDocuments(getFirestore(sandbox), payload.seed);
|
|
354
|
+
diagnostics.seededDocs = Object.keys(payload.seed).length;
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
catch (e) {
|
|
359
|
+
diagnostics.initError = e instanceof Error ? e.message : String(e);
|
|
360
|
+
console.error('[pyric dev] init failed — the sandbox is running WITHOUT your project rules:', diagnostics.initError);
|
|
361
|
+
}
|
|
362
|
+
// ── auth session persistence (flow doc section 3c — client-fidelity item): real
|
|
363
|
+
// Firebase keeps you signed in across reloads by default. Restore BEFORE
|
|
364
|
+
// subscribing so the initial signed-out emission can't clear the stored
|
|
365
|
+
// session; a session only resolves while its uid still exists in the user
|
|
366
|
+
// DB (ephemeral reloads drop helper-created sessions, consistently).
|
|
367
|
+
// WORKER PATH (#754): sessions are PER-PORT in the worker, so this page
|
|
368
|
+
// re-establishes ITS OWN session (`auth.restorePortSession`) from the same
|
|
369
|
+
// web-storage record, then keeps the record in sync. The top-level await
|
|
370
|
+
// below is load-bearing: it keeps a restored session ordered BEFORE the
|
|
371
|
+
// app's first auth op on this port (worker messages are FIFO). ──
|
|
372
|
+
if (useWorker && workerDb) {
|
|
373
|
+
const auth = workerGetAuth(workerDb);
|
|
374
|
+
const stored = sessionStore.load();
|
|
375
|
+
if (stored) {
|
|
376
|
+
const user = await workerRestorePortSession(auth, stored.uid);
|
|
377
|
+
if (user)
|
|
378
|
+
console.info(`[pyric dev] auth session restored (${user.uid})`);
|
|
379
|
+
else
|
|
380
|
+
sessionStore.clear(); // user gone or disabled — signed out, like a stale token
|
|
381
|
+
}
|
|
382
|
+
workerOnAuthStateChanged(auth, (user) => {
|
|
383
|
+
if (user)
|
|
384
|
+
sessionStore.save(user.uid);
|
|
385
|
+
else
|
|
386
|
+
sessionStore.clear();
|
|
387
|
+
});
|
|
388
|
+
}
|
|
389
|
+
else if (!useWorker) {
|
|
390
|
+
const auth = getAuth(sandbox);
|
|
391
|
+
const stored = sessionStore.load();
|
|
392
|
+
if (stored) {
|
|
393
|
+
try {
|
|
394
|
+
authOps.restoreSession(auth, stored.uid);
|
|
395
|
+
console.info(`[pyric dev] auth session restored (${stored.uid})`);
|
|
396
|
+
}
|
|
397
|
+
catch {
|
|
398
|
+
sessionStore.clear(); // user gone or disabled — signed out, like a stale token
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
onAuthStateChanged(auth, (user) => {
|
|
402
|
+
if (user)
|
|
403
|
+
sessionStore.save(user.uid);
|
|
404
|
+
else
|
|
405
|
+
sessionStore.clear();
|
|
406
|
+
});
|
|
407
|
+
}
|
|
408
|
+
// ── provenance (flow doc section 3a): make the shim's presence unmistakable.
|
|
409
|
+
// Source says `firebase/*`; what runs is the pyric sandbox — say so loudly
|
|
410
|
+
// once, and explain any stack frame that points into /__pyric/sdk/. ────────
|
|
411
|
+
console.info(`[pyric dev] firebase/* on this page is served by the pyric sandbox` +
|
|
412
|
+
(useWorker
|
|
413
|
+
? ' in a SharedWorker (one backend for all tabs; rules/seed/persist owned by the worker)'
|
|
414
|
+
: diagnostics.rulesHash
|
|
415
|
+
? ` (rules ${diagnostics.rulesHash})`
|
|
416
|
+
: ' (no project rules)') +
|
|
417
|
+
` — diagnostics: globalThis.__pyricServe`);
|
|
418
|
+
let provenanceHintShown = false;
|
|
419
|
+
function explainSandboxFrame(stackOrUrl) {
|
|
420
|
+
if (provenanceHintShown || !stackOrUrl || !stackOrUrl.includes('/__pyric/sdk/'))
|
|
421
|
+
return;
|
|
422
|
+
provenanceHintShown = true;
|
|
423
|
+
console.info('[pyric dev] the error above originates in the pyric sandbox shim serving firebase/*, ' +
|
|
424
|
+
'not the real Firebase SDK — behavior can differ where COMPAT coverage is incomplete.');
|
|
425
|
+
}
|
|
426
|
+
if (typeof window !== 'undefined') {
|
|
427
|
+
window.addEventListener('error', (e) => explainSandboxFrame(e.error instanceof Error ? (e.error.stack ?? e.filename) : e.filename));
|
|
428
|
+
window.addEventListener('unhandledrejection', (e) => explainSandboxFrame(e.reason instanceof Error ? e.reason.stack : undefined));
|
|
429
|
+
}
|
|
430
|
+
// ── bridge peer (only when `pyric dev --bridge` put a URL in the payload;
|
|
431
|
+
// dynamic import so bridge-less pages never load the client chunk) ─────
|
|
432
|
+
async function connectBridgePeer(rawUrl) {
|
|
433
|
+
// Re-anchor the bridge WS to THIS page's origin so it reaches the server the
|
|
434
|
+
// page was actually served from over Tailscale / a LAN IP / https, not the
|
|
435
|
+
// server's baked-in localhost. See bridge-url.ts.
|
|
436
|
+
const url = toPageOriginWsUrl(rawUrl, window.location);
|
|
437
|
+
const { connectBridge } = await import('../../bridge/client/bridge.js');
|
|
438
|
+
// On the worker path, route agent tool-calls THROUGH the SharedWorker so the
|
|
439
|
+
// agent shares the one sandbox the app + Studio use (no separate in-page
|
|
440
|
+
// backend). Off the worker path (in-page fallback), dispatch in-page as before.
|
|
441
|
+
if (useWorker && workerDb) {
|
|
442
|
+
const wdb = workerDb;
|
|
443
|
+
connectBridge(sandbox, {
|
|
444
|
+
url,
|
|
445
|
+
dispatcher: (_sandbox, name, args) => workerCallTool(wdb, name, args),
|
|
446
|
+
// Generic worker relay (remote sandbox, slice 1): server-side Node code
|
|
447
|
+
// (`connectRemoteSandbox`) reaches THIS page's SharedWorker through the
|
|
448
|
+
// bridge — ops and snap-delivering subscriptions pass straight through
|
|
449
|
+
// to the one sandbox the app + Studio + agent share.
|
|
450
|
+
workerRelay: {
|
|
451
|
+
op: (op) => relayWorkerOp(wdb, op),
|
|
452
|
+
subscribe: (sub, onValue) => relayWorkerSub(wdb, sub, onValue),
|
|
453
|
+
},
|
|
454
|
+
});
|
|
455
|
+
}
|
|
456
|
+
else {
|
|
457
|
+
connectBridge(sandbox, { url });
|
|
458
|
+
}
|
|
459
|
+
diagnostics.bridgeConnected = true;
|
|
460
|
+
console.info('[pyric dev] sandbox registered with the MCP bridge at', url);
|
|
461
|
+
}
|
|
462
|
+
if (bridgeUrlFromPayload) {
|
|
463
|
+
// In-page path: bridgeUrlFromPayload came from the (already-blocking) init
|
|
464
|
+
// block above, so connect inline.
|
|
465
|
+
try {
|
|
466
|
+
await connectBridgePeer(bridgeUrlFromPayload);
|
|
467
|
+
}
|
|
468
|
+
catch (e) {
|
|
469
|
+
console.error('[pyric dev] bridge connect failed:', e instanceof Error ? e.message : String(e));
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
else if (useWorker) {
|
|
473
|
+
// Worker path: the worker owns serve-init, so the page skipped the init.json
|
|
474
|
+
// fetch. Discover the bridge URL (the agent routes its tool-calls THROUGH the
|
|
475
|
+
// worker) in a FIRE-AND-FORGET task so app boot is NEVER blocked — runtime.ts
|
|
476
|
+
// is on the load-bearing top-level-await path, and the agent connecting a beat
|
|
477
|
+
// later is fine. Bridge-less pages just read a null bridgeUrl and stop.
|
|
478
|
+
void (async () => {
|
|
479
|
+
try {
|
|
480
|
+
const res = await fetch('/__pyric/init.json');
|
|
481
|
+
const url = res.ok ? (await res.json()).bridgeUrl : null;
|
|
482
|
+
if (url)
|
|
483
|
+
await connectBridgePeer(url);
|
|
484
|
+
}
|
|
485
|
+
catch (e) {
|
|
486
|
+
console.error('[pyric dev] bridge connect failed:', e instanceof Error ? e.message : String(e));
|
|
487
|
+
}
|
|
488
|
+
})();
|
|
489
|
+
}
|
|
490
|
+
// ── cross-tab realtime sync — wire AFTER sandbox + auth are fully set up ──────
|
|
491
|
+
//
|
|
492
|
+
// Two independent channels, two independent kinds of state:
|
|
493
|
+
//
|
|
494
|
+
// Channel 1 — Firestore writes (`pyric:serve:tabsync`):
|
|
495
|
+
// `sandbox.enableTabSync` owns the channel entirely. It broadcasts every
|
|
496
|
+
// committed Firestore write event to peer tabs and runs the hello/state
|
|
497
|
+
// late-join handshake so a freshly-opened tab inherits the current
|
|
498
|
+
// Firestore documents. A write in Tab A fires `onSnapshot` listeners in Tab B
|
|
499
|
+
// — restoring production's cross-client realtime without a server.
|
|
500
|
+
//
|
|
501
|
+
// Channel 2 — Auth state (`pyric:serve:auth-sync`):
|
|
502
|
+
// Auth lives outside the Firestore environment so `enableTabSync` can't
|
|
503
|
+
// carry it. `wireAuthTabSync` bridges sign-in/sign-out/user-DB changes
|
|
504
|
+
// over its own BroadcastChannel using a full-state protocol (see
|
|
505
|
+
// `tab-sync-wiring.ts` for the detailed protocol + echo-guard rationale).
|
|
506
|
+
//
|
|
507
|
+
// Both are no-ops in non-browser environments (`BroadcastChannel` absent).
|
|
508
|
+
//
|
|
509
|
+
// WORKER PATH: retired. The SharedWorker IS the single backend for all tabs, so
|
|
510
|
+
// cross-tab Firestore + auth are automatic — the in-page sandbox these channels
|
|
511
|
+
// would sync isn't the data backend here. Kept ONLY for the in-page fallback
|
|
512
|
+
// (the tier the plan designates for browsers without SharedWorker).
|
|
513
|
+
if (!useWorker && typeof BroadcastChannel !== 'undefined') {
|
|
514
|
+
// 1. Firestore cross-tab — library primitive does the heavy lifting.
|
|
515
|
+
sandbox.enableTabSync({
|
|
516
|
+
channel: new BroadcastChannel('pyric:serve:tabsync'),
|
|
517
|
+
});
|
|
518
|
+
// 2. Auth cross-tab — our own bridge (see tab-sync-wiring.ts).
|
|
519
|
+
// Dynamic import keeps the module out of the critical path; the channel
|
|
520
|
+
// is opened synchronously above so `hello` is posted as soon as the
|
|
521
|
+
// listener is wired (wireAuthTabSync handles ordering internally).
|
|
522
|
+
void import('./tab-sync-wiring.js').then(({ wireAuthTabSync }) => {
|
|
523
|
+
wireAuthTabSync(getAuth(sandbox),
|
|
524
|
+
// Cast: authOps's generics are narrowed to `Auth` which is exactly what
|
|
525
|
+
// wireAuthTabSync expects; `as` here avoids a deep generic unification
|
|
526
|
+
// that TypeScript can't resolve across module boundaries.
|
|
527
|
+
authOps, onAuthStateChanged, signOut);
|
|
528
|
+
});
|
|
529
|
+
}
|
|
530
|
+
// ── rules hot-reload (SSE) — `pyric dev` watches firestore.rules and
|
|
531
|
+
// broadcasts; we re-deploy in place, no page refresh. EventSource is
|
|
532
|
+
// browser-only; guarded so the bundle stays inert under other runtimes. ──
|
|
533
|
+
// IN-PAGE PATH ONLY: open a per-tab SSE to re-deploy rules to the in-page
|
|
534
|
+
// sandbox. On the WORKER path the SharedWorker owns ONE hot-reload stream for
|
|
535
|
+
// the whole origin (see entry.ts), so tabs open NO SSE connection — multi-tab
|
|
536
|
+
// pages would otherwise exhaust Chrome's ~6-connections-per-origin cap and a
|
|
537
|
+
// later tab's navigation would hang until an earlier tab closed.
|
|
538
|
+
if (!useWorker && typeof EventSource !== 'undefined') {
|
|
539
|
+
const events = new EventSource('/__pyric/events');
|
|
540
|
+
events.addEventListener('rules-changed', (e) => {
|
|
541
|
+
try {
|
|
542
|
+
const { rules, rulesHash } = JSON.parse(e.data);
|
|
543
|
+
const lint = sandboxOps.setRules(getFirestore(sandbox), rules);
|
|
544
|
+
if (lint.parseError)
|
|
545
|
+
throw new Error(JSON.stringify(lint.parseError));
|
|
546
|
+
diagnostics.rulesDeployed = true;
|
|
547
|
+
diagnostics.rulesHash = rulesHash;
|
|
548
|
+
console.info(`[pyric dev] firestore.rules hot-reloaded (hash ${rulesHash})`);
|
|
549
|
+
}
|
|
550
|
+
catch (err) {
|
|
551
|
+
console.error('[pyric dev] rules hot-reload failed:', err instanceof Error ? err.message : String(err));
|
|
552
|
+
}
|
|
553
|
+
});
|
|
554
|
+
}
|
|
555
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/serve/entries/runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auth session persistence for `pyric dev` — the one genuine
|
|
3
|
+
* client-fidelity item in the persistence model (flow doc section 3c): real
|
|
4
|
+
* Firebase keeps you signed in across reloads by DEFAULT
|
|
5
|
+
* (`browserLocalPersistence`), so the served sandbox does too.
|
|
6
|
+
*
|
|
7
|
+
* The user *database* persists with the substrate (`--persist`); the
|
|
8
|
+
* *session* persists like the real client — independent of data mode, in
|
|
9
|
+
* web storage, honoring `setPersistence` semantics:
|
|
10
|
+
*
|
|
11
|
+
* LOCAL (default) → localStorage (survives reload + browser restart)
|
|
12
|
+
* SESSION → sessionStorage (survives reload, not the tab)
|
|
13
|
+
* NONE → nothing stored
|
|
14
|
+
*
|
|
15
|
+
* A restored session only resolves when the referenced uid still exists in
|
|
16
|
+
* the sandbox user DB — so ephemeral mode drops helper-created sessions on
|
|
17
|
+
* reload, consistently (`sandbox.restoreSession` throws, we clear).
|
|
18
|
+
*
|
|
19
|
+
* Pure over injected Storage objects so the logic is bun-testable; the
|
|
20
|
+
* browser wiring (real storages, `onAuthStateChanged` recording, restore at
|
|
21
|
+
* init) lives in the entries that import this.
|
|
22
|
+
*/
|
|
23
|
+
export type SessionMode = 'LOCAL' | 'SESSION' | 'NONE';
|
|
24
|
+
export interface SessionStores {
|
|
25
|
+
local: Pick<Storage, 'getItem' | 'setItem' | 'removeItem'>;
|
|
26
|
+
session: Pick<Storage, 'getItem' | 'setItem' | 'removeItem'>;
|
|
27
|
+
}
|
|
28
|
+
export interface StoredSession {
|
|
29
|
+
uid: string;
|
|
30
|
+
}
|
|
31
|
+
export declare class SessionStore {
|
|
32
|
+
private readonly stores;
|
|
33
|
+
private mode;
|
|
34
|
+
constructor(stores: SessionStores);
|
|
35
|
+
/** `setPersistence` parity: switch the backing store and MIGRATE any
|
|
36
|
+
* current session into it (the real SDK carries the session over). */
|
|
37
|
+
setMode(mode: SessionMode): void;
|
|
38
|
+
save(uid: string): void;
|
|
39
|
+
/** Reads BOTH storages (localStorage first — matches lookup order when a
|
|
40
|
+
* prior page used a different mode). */
|
|
41
|
+
load(): StoredSession | null;
|
|
42
|
+
clear(): void;
|
|
43
|
+
private backing;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=session-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../../src/serve/entries/session-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAIvD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,YAAY,CAAC,CAAC;IAC3D,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,YAAY,CAAC,CAAC;CAC9D;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;CACb;AAED,qBAAa,YAAY;IAGX,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,IAAI,CAAwB;gBAEP,MAAM,EAAE,aAAa;IAElD;2EACuE;IACvE,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAOhC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAMvB;6CACyC;IACzC,IAAI,IAAI,aAAa,GAAG,IAAI;IAc5B,KAAK,IAAI,IAAI;IAKb,OAAO,CAAC,OAAO;CAGhB"}
|