pyric 0.1.0-alpha.21 → 0.1.0-alpha.24
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 +12 -4
- package/dist/ai/activity.d.ts +9 -0
- package/dist/ai/activity.d.ts.map +1 -0
- package/dist/ai/activity.js +45 -0
- package/dist/ai/activity.js.map +1 -0
- package/dist/ai/broker/broker.d.ts +25 -0
- package/dist/ai/broker/broker.d.ts.map +1 -1
- package/dist/ai/broker/broker.js +46 -42
- package/dist/ai/broker/broker.js.map +1 -1
- package/dist/ai/broker/gemini-engine.d.ts +7 -0
- package/dist/ai/broker/gemini-engine.d.ts.map +1 -1
- package/dist/ai/broker/gemini-engine.js +15 -0
- package/dist/ai/broker/gemini-engine.js.map +1 -1
- package/dist/ai/broker/index.d.ts +1 -1
- package/dist/ai/broker/index.d.ts.map +1 -1
- package/dist/ai/broker/index.js.map +1 -1
- package/dist/ai/broker/openai-engine.d.ts.map +1 -1
- package/dist/ai/broker/openai-engine.js +7 -3
- package/dist/ai/broker/openai-engine.js.map +1 -1
- package/dist/ai/broker/scripted-engine.d.ts +9 -1
- package/dist/ai/broker/scripted-engine.d.ts.map +1 -1
- package/dist/ai/broker/scripted-engine.js +14 -5
- package/dist/ai/broker/scripted-engine.js.map +1 -1
- package/dist/ai/broker/types.d.ts +6 -2
- package/dist/ai/broker/types.d.ts.map +1 -1
- package/dist/ai/events.d.ts +12 -0
- package/dist/ai/events.d.ts.map +1 -0
- package/dist/ai/events.js +17 -0
- package/dist/ai/events.js.map +1 -0
- package/dist/ai/generation-enums.d.ts +43 -0
- package/dist/ai/generation-enums.d.ts.map +1 -0
- package/dist/ai/generation-enums.js +37 -0
- package/dist/ai/generation-enums.js.map +1 -0
- package/dist/ai/index.d.ts +1 -0
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +1 -0
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/instances.d.ts +6 -0
- package/dist/ai/instances.d.ts.map +1 -1
- package/dist/ai/instances.js +20 -2
- package/dist/ai/instances.js.map +1 -1
- package/dist/ai/internal.d.ts +3 -0
- package/dist/ai/internal.d.ts.map +1 -1
- package/dist/ai/internal.js +3 -0
- package/dist/ai/internal.js.map +1 -1
- package/dist/ai/sandbox-plane.d.ts.map +1 -1
- package/dist/ai/sandbox-plane.js +23 -8
- package/dist/ai/sandbox-plane.js.map +1 -1
- package/dist/ai/scripting.d.ts +20 -2
- package/dist/ai/scripting.d.ts.map +1 -1
- package/dist/ai/scripting.js +30 -3
- package/dist/ai/scripting.js.map +1 -1
- package/dist/app/internal.d.ts +1 -0
- package/dist/app/internal.d.ts.map +1 -1
- package/dist/app/internal.js +1 -0
- package/dist/app/internal.js.map +1 -1
- package/dist/auth/email-link.d.ts +8 -1
- package/dist/auth/email-link.d.ts.map +1 -1
- package/dist/auth/email-link.js +29 -20
- package/dist/auth/email-link.js.map +1 -1
- package/dist/auth/events.d.ts +12 -0
- package/dist/auth/events.d.ts.map +1 -0
- package/dist/auth/events.js +18 -0
- package/dist/auth/events.js.map +1 -0
- package/dist/auth/factor-id.d.ts +7 -0
- package/dist/auth/factor-id.d.ts.map +1 -0
- package/dist/auth/factor-id.js +6 -0
- package/dist/auth/factor-id.js.map +1 -0
- package/dist/auth/index.d.ts +1 -0
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +1 -0
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/instances.d.ts.map +1 -1
- package/dist/auth/instances.js +13 -1
- package/dist/auth/instances.js.map +1 -1
- package/dist/auth/internal.d.ts +20 -0
- package/dist/auth/internal.d.ts.map +1 -0
- package/dist/auth/internal.js +19 -0
- package/dist/auth/internal.js.map +1 -0
- package/dist/auth/modular.d.ts +9 -0
- package/dist/auth/modular.d.ts.map +1 -1
- package/dist/auth/modular.js +20 -0
- package/dist/auth/modular.js.map +1 -1
- package/dist/auth/reauth.js +3 -2
- package/dist/auth/reauth.js.map +1 -1
- package/dist/auth/sandbox/default-avatar.d.ts +64 -0
- package/dist/auth/sandbox/default-avatar.d.ts.map +1 -0
- package/dist/auth/sandbox/default-avatar.js +118 -0
- package/dist/auth/sandbox/default-avatar.js.map +1 -0
- package/dist/auth/sandbox/driver.d.ts +36 -0
- package/dist/auth/sandbox/driver.d.ts.map +1 -1
- package/dist/auth/sandbox/driver.js +47 -0
- package/dist/auth/sandbox/driver.js.map +1 -1
- package/dist/auth/sandbox/project-store.d.ts +0 -1
- package/dist/auth/sandbox/project-store.d.ts.map +1 -1
- package/dist/auth/sandbox/project-store.js +0 -1
- package/dist/auth/sandbox/project-store.js.map +1 -1
- package/dist/auth/sandbox-backend-types.d.ts +34 -20
- package/dist/auth/sandbox-backend-types.d.ts.map +1 -1
- package/dist/auth/sandbox-backend-types.js +2 -3
- package/dist/auth/sandbox-backend-types.js.map +1 -1
- package/dist/auth/sandbox-backend.d.ts +98 -20
- package/dist/auth/sandbox-backend.d.ts.map +1 -1
- package/dist/auth/sandbox-backend.js +403 -96
- package/dist/auth/sandbox-backend.js.map +1 -1
- package/dist/auth/seed-user.d.ts +38 -0
- package/dist/auth/seed-user.d.ts.map +1 -0
- package/dist/auth/seed-user.js +2 -0
- package/dist/auth/seed-user.js.map +1 -0
- package/dist/auth/tokens.d.ts +6 -1
- package/dist/auth/tokens.d.ts.map +1 -1
- package/dist/auth/tokens.js +19 -17
- package/dist/auth/tokens.js.map +1 -1
- package/dist/auth/types.d.ts +13 -1
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/auth/types.js.map +1 -1
- package/dist/database/activity-coverage.d.ts +9 -0
- package/dist/database/activity-coverage.d.ts.map +1 -0
- package/dist/database/activity-coverage.js +11 -0
- package/dist/database/activity-coverage.js.map +1 -0
- package/dist/database/connection-lifecycle.d.ts +3 -0
- package/dist/database/connection-lifecycle.d.ts.map +1 -1
- package/dist/database/connection-lifecycle.js +54 -23
- package/dist/database/connection-lifecycle.js.map +1 -1
- package/dist/database/events.d.ts +12 -0
- package/dist/database/events.d.ts.map +1 -0
- package/dist/database/events.js +10 -0
- package/dist/database/events.js.map +1 -0
- package/dist/database/instances.d.ts +7 -7
- package/dist/database/instances.d.ts.map +1 -1
- package/dist/database/instances.js +35 -13
- package/dist/database/instances.js.map +1 -1
- package/dist/database/internal/query-projection.d.ts +102 -0
- package/dist/database/internal/query-projection.d.ts.map +1 -0
- package/dist/database/internal/query-projection.js +293 -0
- package/dist/database/internal/query-projection.js.map +1 -0
- package/dist/database/internal.d.ts +2 -0
- package/dist/database/internal.d.ts.map +1 -1
- package/dist/database/internal.js +2 -0
- package/dist/database/internal.js.map +1 -1
- package/dist/database/listeners.d.ts.map +1 -1
- package/dist/database/listeners.js +165 -37
- package/dist/database/listeners.js.map +1 -1
- package/dist/database/operations.d.ts.map +1 -1
- package/dist/database/operations.js +77 -50
- package/dist/database/operations.js.map +1 -1
- package/dist/database/replay.d.ts.map +1 -1
- package/dist/database/replay.js +6 -2
- package/dist/database/replay.js.map +1 -1
- package/dist/database/routing.d.ts +4 -0
- package/dist/database/routing.d.ts.map +1 -1
- package/dist/database/routing.js.map +1 -1
- package/dist/database/sandbox/backend-for.d.ts +4 -3
- package/dist/database/sandbox/backend-for.d.ts.map +1 -1
- package/dist/database/sandbox/backend-for.js +130 -24
- package/dist/database/sandbox/backend-for.js.map +1 -1
- package/dist/database/sandbox/backend-state.d.ts +7 -0
- package/dist/database/sandbox/backend-state.d.ts.map +1 -1
- package/dist/database/sandbox/backend-state.js +15 -1
- package/dist/database/sandbox/backend-state.js.map +1 -1
- package/dist/database/sandbox/backend.d.ts +2 -1
- package/dist/database/sandbox/backend.d.ts.map +1 -1
- package/dist/database/sandbox/backend.js +3 -3
- package/dist/database/sandbox/backend.js.map +1 -1
- package/dist/database/sandbox/child-listeners.d.ts +5 -0
- package/dist/database/sandbox/child-listeners.d.ts.map +1 -1
- package/dist/database/sandbox/child-listeners.js +34 -14
- package/dist/database/sandbox/child-listeners.js.map +1 -1
- package/dist/database/sandbox/listener-types.d.ts +5 -0
- package/dist/database/sandbox/listener-types.d.ts.map +1 -1
- package/dist/database/sandbox/operation-events.d.ts +5 -0
- package/dist/database/sandbox/operation-events.d.ts.map +1 -1
- package/dist/database/sandbox/operation-events.js +18 -3
- package/dist/database/sandbox/operation-events.js.map +1 -1
- package/dist/database/sandbox/persistence-state.d.ts.map +1 -1
- package/dist/database/sandbox/persistence-state.js +1 -8
- package/dist/database/sandbox/persistence-state.js.map +1 -1
- package/dist/database/sandbox/priority-writes.js +2 -2
- package/dist/database/sandbox/priority-writes.js.map +1 -1
- package/dist/database/sandbox/query.d.ts +2 -101
- package/dist/database/sandbox/query.d.ts.map +1 -1
- package/dist/database/sandbox/query.js +1 -225
- package/dist/database/sandbox/query.js.map +1 -1
- package/dist/database/sandbox/rules-eval.d.ts +28 -0
- package/dist/database/sandbox/rules-eval.d.ts.map +1 -1
- package/dist/database/sandbox/rules-eval.js +136 -9
- package/dist/database/sandbox/rules-eval.js.map +1 -1
- package/dist/database/sandbox/transactions.d.ts.map +1 -1
- package/dist/database/sandbox/transactions.js +17 -38
- package/dist/database/sandbox/transactions.js.map +1 -1
- package/dist/database/sandbox/value-listeners.d.ts +11 -1
- package/dist/database/sandbox/value-listeners.d.ts.map +1 -1
- package/dist/database/sandbox/value-listeners.js +65 -27
- package/dist/database/sandbox/value-listeners.js.map +1 -1
- package/dist/database/sandbox/write-plane.d.ts.map +1 -1
- package/dist/database/sandbox/write-plane.js +30 -22
- package/dist/database/sandbox/write-plane.js.map +1 -1
- package/dist/database/sdk-activity.d.ts +5 -0
- package/dist/database/sdk-activity.d.ts.map +1 -0
- package/dist/database/sdk-activity.js +20 -0
- package/dist/database/sdk-activity.js.map +1 -0
- package/dist/database/transactions.d.ts.map +1 -1
- package/dist/database/transactions.js +7 -3
- package/dist/database/transactions.js.map +1 -1
- package/dist/database/types.d.ts +9 -1
- package/dist/database/types.d.ts.map +1 -1
- package/dist/database/types.js.map +1 -1
- package/dist/deferred/entry.d.ts +6 -3
- package/dist/deferred/entry.d.ts.map +1 -1
- package/dist/deferred/entry.js +13 -10
- package/dist/deferred/entry.js.map +1 -1
- package/dist/firestore/activity-coverage.d.ts +9 -0
- package/dist/firestore/activity-coverage.d.ts.map +1 -0
- package/dist/firestore/activity-coverage.js +9 -0
- package/dist/firestore/activity-coverage.js.map +1 -0
- package/dist/firestore/aggregates.d.ts.map +1 -1
- package/dist/firestore/aggregates.js +32 -10
- package/dist/firestore/aggregates.js.map +1 -1
- package/dist/firestore/bytes.d.ts +13 -0
- package/dist/firestore/bytes.d.ts.map +1 -0
- package/dist/firestore/bytes.js +51 -0
- package/dist/firestore/bytes.js.map +1 -0
- package/dist/firestore/converter-method.d.ts +11 -0
- package/dist/firestore/converter-method.d.ts.map +1 -0
- package/dist/firestore/converter-method.js +39 -0
- package/dist/firestore/converter-method.js.map +1 -0
- package/dist/firestore/errors.d.ts.map +1 -1
- package/dist/firestore/errors.js +4 -0
- package/dist/firestore/errors.js.map +1 -1
- package/dist/firestore/field-values.d.ts +3 -36
- package/dist/firestore/field-values.d.ts.map +1 -1
- package/dist/firestore/field-values.js +3 -136
- package/dist/firestore/field-values.js.map +1 -1
- package/dist/firestore/geo-point.d.ts +15 -0
- package/dist/firestore/geo-point.d.ts.map +1 -0
- package/dist/firestore/geo-point.js +50 -0
- package/dist/firestore/geo-point.js.map +1 -0
- package/dist/firestore/index.d.ts +1 -1
- package/dist/firestore/index.d.ts.map +1 -1
- package/dist/firestore/index.js +1 -1
- package/dist/firestore/index.js.map +1 -1
- package/dist/firestore/instances.d.ts.map +1 -1
- package/dist/firestore/instances.js +23 -2
- package/dist/firestore/instances.js.map +1 -1
- package/dist/firestore/internal/document-data.d.ts +3 -0
- package/dist/firestore/internal/document-data.d.ts.map +1 -0
- package/dist/firestore/internal/document-data.js +10 -0
- package/dist/firestore/internal/document-data.js.map +1 -0
- package/dist/firestore/internal/index.d.ts +3 -0
- package/dist/firestore/internal/index.d.ts.map +1 -1
- package/dist/firestore/internal/index.js +5 -0
- package/dist/firestore/internal/index.js.map +1 -1
- package/dist/firestore/internal/value-codec.d.ts +16 -61
- package/dist/firestore/internal/value-codec.d.ts.map +1 -1
- package/dist/firestore/internal/value-codec.js +137 -82
- package/dist/firestore/internal/value-codec.js.map +1 -1
- package/dist/firestore/internal/value-depth.d.ts +3 -0
- package/dist/firestore/internal/value-depth.d.ts.map +1 -0
- package/dist/firestore/internal/value-depth.js +19 -0
- package/dist/firestore/internal/value-depth.js.map +1 -0
- package/dist/firestore/listeners.d.ts +18 -1
- package/dist/firestore/listeners.d.ts.map +1 -1
- package/dist/firestore/listeners.js +60 -21
- package/dist/firestore/listeners.js.map +1 -1
- package/dist/firestore/persistence.d.ts +0 -9
- package/dist/firestore/persistence.d.ts.map +1 -1
- package/dist/firestore/persistence.js +23 -9
- package/dist/firestore/persistence.js.map +1 -1
- package/dist/firestore/plain-object.d.ts +3 -0
- package/dist/firestore/plain-object.d.ts.map +1 -0
- package/dist/firestore/plain-object.js +9 -0
- package/dist/firestore/plain-object.js.map +1 -0
- package/dist/firestore/query-constraints.d.ts.map +1 -1
- package/dist/firestore/query-constraints.js +4 -3
- package/dist/firestore/query-constraints.js.map +1 -1
- package/dist/firestore/reads.d.ts +9 -7
- package/dist/firestore/reads.d.ts.map +1 -1
- package/dist/firestore/reads.js +74 -36
- package/dist/firestore/reads.js.map +1 -1
- package/dist/firestore/refs.d.ts +2 -1
- package/dist/firestore/refs.d.ts.map +1 -1
- package/dist/firestore/refs.js +37 -24
- package/dist/firestore/refs.js.map +1 -1
- package/dist/firestore/sandbox/activity-query-display.d.ts +67 -0
- package/dist/firestore/sandbox/activity-query-display.d.ts.map +1 -0
- package/dist/firestore/sandbox/activity-query-display.js +119 -0
- package/dist/firestore/sandbox/activity-query-display.js.map +1 -0
- package/dist/firestore/sandbox/admin-compat/batch.d.ts +4 -8
- package/dist/firestore/sandbox/admin-compat/batch.d.ts.map +1 -1
- package/dist/firestore/sandbox/admin-compat/batch.js +27 -19
- package/dist/firestore/sandbox/admin-compat/batch.js.map +1 -1
- package/dist/firestore/sandbox/admin-compat/query-comparison.d.ts.map +1 -1
- package/dist/firestore/sandbox/admin-compat/query-comparison.js +8 -3
- package/dist/firestore/sandbox/admin-compat/query-comparison.js.map +1 -1
- package/dist/firestore/sandbox/admin-compat/query.d.ts +8 -0
- package/dist/firestore/sandbox/admin-compat/query.d.ts.map +1 -1
- package/dist/firestore/sandbox/admin-compat/query.js +44 -5
- package/dist/firestore/sandbox/admin-compat/query.js.map +1 -1
- package/dist/firestore/sandbox/admin-compat/read-translation.d.ts.map +1 -1
- package/dist/firestore/sandbox/admin-compat/read-translation.js +18 -9
- package/dist/firestore/sandbox/admin-compat/read-translation.js.map +1 -1
- package/dist/firestore/sandbox/admin-compat/transaction.d.ts +2 -2
- package/dist/firestore/sandbox/admin-compat/transaction.d.ts.map +1 -1
- package/dist/firestore/sandbox/admin-compat/transaction.js +13 -4
- package/dist/firestore/sandbox/admin-compat/transaction.js.map +1 -1
- package/dist/firestore/sandbox/admin-compat/types.d.ts +6 -33
- package/dist/firestore/sandbox/admin-compat/types.d.ts.map +1 -1
- package/dist/firestore/sandbox/admin-compat/types.js +1 -76
- package/dist/firestore/sandbox/admin-compat/types.js.map +1 -1
- package/dist/firestore/sandbox/atomic-state.d.ts +4 -0
- package/dist/firestore/sandbox/atomic-state.d.ts.map +1 -0
- package/dist/firestore/sandbox/atomic-state.js +105 -0
- package/dist/firestore/sandbox/atomic-state.js.map +1 -0
- package/dist/firestore/sandbox/atomic-write-pipeline.d.ts +3 -2
- package/dist/firestore/sandbox/atomic-write-pipeline.d.ts.map +1 -1
- package/dist/firestore/sandbox/atomic-write-pipeline.js +128 -58
- package/dist/firestore/sandbox/atomic-write-pipeline.js.map +1 -1
- package/dist/firestore/sandbox/batch-write-executor.d.ts.map +1 -1
- package/dist/firestore/sandbox/batch-write-executor.js +54 -28
- package/dist/firestore/sandbox/batch-write-executor.js.map +1 -1
- package/dist/firestore/sandbox/converters/user-timestamp.d.ts +6 -40
- package/dist/firestore/sandbox/converters/user-timestamp.d.ts.map +1 -1
- package/dist/firestore/sandbox/converters/user-timestamp.js +20 -43
- package/dist/firestore/sandbox/converters/user-timestamp.js.map +1 -1
- package/dist/firestore/sandbox/document-copy.d.ts +4 -0
- package/dist/firestore/sandbox/document-copy.d.ts.map +1 -0
- package/dist/firestore/sandbox/document-copy.js +28 -0
- package/dist/firestore/sandbox/document-copy.js.map +1 -0
- package/dist/firestore/sandbox/document-store.d.ts +99 -0
- package/dist/firestore/sandbox/document-store.d.ts.map +1 -0
- package/dist/firestore/sandbox/document-store.js +2 -0
- package/dist/firestore/sandbox/document-store.js.map +1 -0
- package/dist/firestore/sandbox/errors.d.ts +4 -1
- package/dist/firestore/sandbox/errors.d.ts.map +1 -1
- package/dist/firestore/sandbox/errors.js +2 -25
- package/dist/firestore/sandbox/errors.js.map +1 -1
- package/dist/firestore/sandbox/event-log.d.ts +22 -4
- package/dist/firestore/sandbox/event-log.d.ts.map +1 -1
- package/dist/firestore/sandbox/event-log.js +66 -6
- package/dist/firestore/sandbox/event-log.js.map +1 -1
- package/dist/firestore/sandbox/field-merge.d.ts.map +1 -1
- package/dist/firestore/sandbox/field-merge.js +10 -20
- package/dist/firestore/sandbox/field-merge.js.map +1 -1
- package/dist/firestore/sandbox/history-controls.d.ts +1 -1
- package/dist/firestore/sandbox/history-controls.d.ts.map +1 -1
- package/dist/firestore/sandbox/history-controls.js +1 -1
- package/dist/firestore/sandbox/history-controls.js.map +1 -1
- package/dist/firestore/sandbox/list-query-proof.d.ts +4 -1
- package/dist/firestore/sandbox/list-query-proof.d.ts.map +1 -1
- package/dist/firestore/sandbox/list-query-proof.js +32 -96
- package/dist/firestore/sandbox/list-query-proof.js.map +1 -1
- package/dist/firestore/sandbox/listener-dispatch.d.ts +26 -1
- package/dist/firestore/sandbox/listener-dispatch.d.ts.map +1 -1
- package/dist/firestore/sandbox/listener-dispatch.js +58 -5
- package/dist/firestore/sandbox/listener-dispatch.js.map +1 -1
- package/dist/firestore/sandbox/local-environment.d.ts +16 -2
- package/dist/firestore/sandbox/local-environment.d.ts.map +1 -1
- package/dist/firestore/sandbox/local-environment.js +33 -9
- package/dist/firestore/sandbox/local-environment.js.map +1 -1
- package/dist/firestore/sandbox/local-state.d.ts +5 -99
- package/dist/firestore/sandbox/local-state.d.ts.map +1 -1
- package/dist/firestore/sandbox/local-state.js +64 -117
- package/dist/firestore/sandbox/local-state.js.map +1 -1
- package/dist/firestore/sandbox/query-execution.d.ts +4 -1
- package/dist/firestore/sandbox/query-execution.d.ts.map +1 -1
- package/dist/firestore/sandbox/query-execution.js +51 -26
- package/dist/firestore/sandbox/query-execution.js.map +1 -1
- package/dist/firestore/sandbox/query-operand-equality.d.ts.map +1 -1
- package/dist/firestore/sandbox/query-operand-equality.js +50 -14
- package/dist/firestore/sandbox/query-operand-equality.js.map +1 -1
- package/dist/firestore/sandbox/query-operators.d.ts +4 -0
- package/dist/firestore/sandbox/query-operators.d.ts.map +1 -0
- package/dist/firestore/sandbox/query-operators.js +17 -0
- package/dist/firestore/sandbox/query-operators.js.map +1 -0
- package/dist/firestore/sandbox/query-value-registry.d.ts +1 -1
- package/dist/firestore/sandbox/query-value-registry.d.ts.map +1 -1
- package/dist/firestore/sandbox/query-value-registry.js +3 -1
- package/dist/firestore/sandbox/query-value-registry.js.map +1 -1
- package/dist/firestore/sandbox/request-events.d.ts +3 -0
- package/dist/firestore/sandbox/request-events.d.ts.map +1 -1
- package/dist/firestore/sandbox/request-events.js +4 -0
- package/dist/firestore/sandbox/request-events.js.map +1 -1
- package/dist/firestore/sandbox/rules-evidence.d.ts +7 -0
- package/dist/firestore/sandbox/rules-evidence.d.ts.map +1 -0
- package/dist/firestore/sandbox/rules-evidence.js +87 -0
- package/dist/firestore/sandbox/rules-evidence.js.map +1 -0
- package/dist/firestore/sandbox/rules-list-authorizer.d.ts +13 -1
- package/dist/firestore/sandbox/rules-list-authorizer.d.ts.map +1 -1
- package/dist/firestore/sandbox/rules-list-authorizer.js +53 -74
- package/dist/firestore/sandbox/rules-list-authorizer.js.map +1 -1
- package/dist/firestore/sandbox/rules-operation-reader.d.ts +8 -1
- package/dist/firestore/sandbox/rules-operation-reader.d.ts.map +1 -1
- package/dist/firestore/sandbox/rules-operation-reader.js +13 -5
- package/dist/firestore/sandbox/rules-operation-reader.js.map +1 -1
- package/dist/firestore/sandbox/rules-read-engine.d.ts +8 -1
- package/dist/firestore/sandbox/rules-read-engine.d.ts.map +1 -1
- package/dist/firestore/sandbox/rules-read-engine.js +21 -10
- package/dist/firestore/sandbox/rules-read-engine.js.map +1 -1
- package/dist/firestore/sandbox/rules-state.d.ts +5 -0
- package/dist/firestore/sandbox/rules-state.d.ts.map +1 -1
- package/dist/firestore/sandbox/rules-state.js +16 -0
- package/dist/firestore/sandbox/rules-state.js.map +1 -1
- package/dist/firestore/sandbox/snapshot-listeners.d.ts +9 -1
- package/dist/firestore/sandbox/snapshot-listeners.d.ts.map +1 -1
- package/dist/firestore/sandbox/snapshot-listeners.js.map +1 -1
- package/dist/firestore/sandbox/transaction-merge.d.ts +2 -33
- package/dist/firestore/sandbox/transaction-merge.d.ts.map +1 -1
- package/dist/firestore/sandbox/transaction-merge.js +19 -7
- package/dist/firestore/sandbox/transaction-merge.js.map +1 -1
- package/dist/firestore/sandbox/transaction-types.d.ts +11 -21
- package/dist/firestore/sandbox/transaction-types.d.ts.map +1 -1
- package/dist/firestore/sandbox/transaction-types.js.map +1 -1
- package/dist/firestore/sandbox/transaction-write-executor.d.ts +2 -1
- package/dist/firestore/sandbox/transaction-write-executor.d.ts.map +1 -1
- package/dist/firestore/sandbox/transaction-write-executor.js +110 -69
- package/dist/firestore/sandbox/transaction-write-executor.js.map +1 -1
- package/dist/firestore/sandbox/transaction.d.ts +3 -2
- package/dist/firestore/sandbox/transaction.d.ts.map +1 -1
- package/dist/firestore/sandbox/transaction.js +23 -6
- package/dist/firestore/sandbox/transaction.js.map +1 -1
- package/dist/firestore/sandbox/value-resolver.d.ts +1 -8
- package/dist/firestore/sandbox/value-resolver.d.ts.map +1 -1
- package/dist/firestore/sandbox/value-resolver.js +2 -13
- package/dist/firestore/sandbox/value-resolver.js.map +1 -1
- package/dist/firestore/sandbox/write-engine.d.ts +5 -1
- package/dist/firestore/sandbox/write-engine.d.ts.map +1 -1
- package/dist/firestore/sandbox/write-engine.js +14 -7
- package/dist/firestore/sandbox/write-engine.js.map +1 -1
- package/dist/firestore/sandbox/write-runtime.d.ts +12 -4
- package/dist/firestore/sandbox/write-runtime.d.ts.map +1 -1
- package/dist/firestore/sandbox/write-runtime.js +72 -38
- package/dist/firestore/sandbox/write-runtime.js.map +1 -1
- package/dist/firestore/sandbox/writes.d.ts +3 -1
- package/dist/firestore/sandbox/writes.d.ts.map +1 -1
- package/dist/firestore/sdk-activity.d.ts +8 -0
- package/dist/firestore/sdk-activity.d.ts.map +1 -0
- package/dist/firestore/sdk-activity.js +23 -0
- package/dist/firestore/sdk-activity.js.map +1 -0
- package/dist/firestore/snapshots.d.ts +18 -2
- package/dist/firestore/snapshots.d.ts.map +1 -1
- package/dist/firestore/snapshots.js +69 -16
- package/dist/firestore/snapshots.js.map +1 -1
- package/dist/firestore/state.d.ts +8 -3
- package/dist/firestore/state.d.ts.map +1 -1
- package/dist/firestore/state.js +30 -13
- package/dist/firestore/state.js.map +1 -1
- package/dist/firestore/timestamp.d.ts +28 -0
- package/dist/firestore/timestamp.d.ts.map +1 -0
- package/dist/firestore/timestamp.js +80 -0
- package/dist/firestore/timestamp.js.map +1 -0
- package/dist/firestore/tools.d.ts.map +1 -1
- package/dist/firestore/tools.js +2 -4
- package/dist/firestore/tools.js.map +1 -1
- package/dist/firestore/transactions.d.ts.map +1 -1
- package/dist/firestore/transactions.js +76 -3
- package/dist/firestore/transactions.js.map +1 -1
- package/dist/firestore/types.d.ts +26 -5
- package/dist/firestore/types.d.ts.map +1 -1
- package/dist/firestore/types.js.map +1 -1
- package/dist/firestore/vector-value.d.ts +11 -0
- package/dist/firestore/vector-value.d.ts.map +1 -0
- package/dist/firestore/vector-value.js +51 -0
- package/dist/firestore/vector-value.js.map +1 -0
- package/dist/firestore/writes.d.ts +0 -7
- package/dist/firestore/writes.d.ts.map +1 -1
- package/dist/firestore/writes.js +42 -25
- package/dist/firestore/writes.js.map +1 -1
- package/dist/functions/events.d.ts +12 -0
- package/dist/functions/events.d.ts.map +1 -0
- package/dist/functions/events.js +10 -0
- package/dist/functions/events.js.map +1 -0
- package/dist/messaging/broker/broker.d.ts +43 -30
- package/dist/messaging/broker/broker.d.ts.map +1 -1
- package/dist/messaging/broker/broker.js +148 -43
- package/dist/messaging/broker/broker.js.map +1 -1
- package/dist/messaging/broker/delivery-history.d.ts +5 -0
- package/dist/messaging/broker/delivery-history.d.ts.map +1 -0
- package/dist/messaging/broker/delivery-history.js +46 -0
- package/dist/messaging/broker/delivery-history.js.map +1 -0
- package/dist/messaging/broker/index.d.ts +2 -1
- package/dist/messaging/broker/index.d.ts.map +1 -1
- package/dist/messaging/broker/index.js +7 -0
- package/dist/messaging/broker/index.js.map +1 -1
- package/dist/messaging/broker/persistence.d.ts +12 -0
- package/dist/messaging/broker/persistence.d.ts.map +1 -0
- package/dist/messaging/broker/persistence.js +42 -0
- package/dist/messaging/broker/persistence.js.map +1 -0
- package/dist/messaging/broker/types.d.ts +44 -0
- package/dist/messaging/broker/types.d.ts.map +1 -1
- package/dist/messaging/broker/types.js +10 -1
- package/dist/messaging/broker/types.js.map +1 -1
- package/dist/messaging/events.d.ts +12 -0
- package/dist/messaging/events.d.ts.map +1 -0
- package/dist/messaging/events.js +19 -0
- package/dist/messaging/events.js.map +1 -0
- package/dist/rules/api/case-types.d.ts +7 -0
- package/dist/rules/api/case-types.d.ts.map +1 -1
- package/dist/rules/api/rtdb.d.ts.map +1 -1
- package/dist/rules/api/rtdb.js +20 -7
- package/dist/rules/api/rtdb.js.map +1 -1
- package/dist/rules/grammar/parse-error-wording.d.ts +31 -0
- package/dist/rules/grammar/parse-error-wording.d.ts.map +1 -0
- package/dist/rules/grammar/parse-error-wording.js +86 -0
- package/dist/rules/grammar/parse-error-wording.js.map +1 -0
- package/dist/rules/indexes/query-analysis.d.ts +33 -0
- package/dist/rules/indexes/query-analysis.d.ts.map +1 -0
- package/dist/rules/indexes/query-analysis.js +153 -0
- package/dist/rules/indexes/query-analysis.js.map +1 -0
- package/dist/rules/indexes/service-query.d.ts +48 -0
- package/dist/rules/indexes/service-query.d.ts.map +1 -0
- package/dist/rules/indexes/service-query.js +60 -0
- package/dist/rules/indexes/service-query.js.map +1 -0
- package/dist/rules/internal/index.d.ts +4 -0
- package/dist/rules/internal/index.d.ts.map +1 -1
- package/dist/rules/internal/index.js +10 -0
- package/dist/rules/internal/index.js.map +1 -1
- package/dist/rules/modules/rules-capabilities.generated.d.ts +1 -1
- package/dist/rules/modules/rules-capabilities.generated.js +1 -1
- package/dist/rules/modules/rules-capabilities.generated.js.map +1 -1
- package/dist/rules/rtdb/constraints/atoms.d.ts.map +1 -1
- package/dist/rules/rtdb/constraints/atoms.js +7 -7
- package/dist/rules/rtdb/constraints/atoms.js.map +1 -1
- package/dist/rules/rtdb/constraints/data.d.ts +2 -2
- package/dist/rules/rtdb/constraints/data.d.ts.map +1 -1
- package/dist/rules/rtdb/constraints/data.js +4 -4
- package/dist/rules/rtdb/constraints/data.js.map +1 -1
- package/dist/rules/rtdb/constraints/document.d.ts.map +1 -1
- package/dist/rules/rtdb/constraints/document.js +6 -2
- package/dist/rules/rtdb/constraints/document.js.map +1 -1
- package/dist/rules/rtdb/constraints/policies.d.ts +2 -2
- package/dist/rules/rtdb/constraints/policies.d.ts.map +1 -1
- package/dist/rules/rtdb/constraints/policies.js +3 -3
- package/dist/rules/rtdb/constraints/policies.js.map +1 -1
- package/dist/rules/rtdb/constraints/schema.js +3 -3
- package/dist/rules/rtdb/constraints/schema.js.map +1 -1
- package/dist/rules/rtdb/grammar/RtdbExpr.ohm +1 -3
- package/dist/rules/rtdb/grammar/RtdbExpr.ohm.generated.d.ts +1 -1
- package/dist/rules/rtdb/grammar/RtdbExpr.ohm.generated.d.ts.map +1 -1
- package/dist/rules/rtdb/grammar/RtdbExpr.ohm.generated.js +1 -3
- package/dist/rules/rtdb/grammar/RtdbExpr.ohm.generated.js.map +1 -1
- package/dist/rules/rtdb/grammar/linter.d.ts.map +1 -1
- package/dist/rules/rtdb/grammar/linter.js +28 -30
- package/dist/rules/rtdb/grammar/linter.js.map +1 -1
- package/dist/rules/rtdb/grammar/simulator.d.ts +15 -1
- package/dist/rules/rtdb/grammar/simulator.d.ts.map +1 -1
- package/dist/rules/rtdb/grammar/simulator.js +93 -65
- package/dist/rules/rtdb/grammar/simulator.js.map +1 -1
- package/dist/rules/rtdb/grammar/validator.d.ts.map +1 -1
- package/dist/rules/rtdb/grammar/validator.js +25 -26
- package/dist/rules/rtdb/grammar/validator.js.map +1 -1
- package/dist/rules/rtdb/simulation/handler.d.ts.map +1 -1
- package/dist/rules/rtdb/simulation/handler.js +136 -32
- package/dist/rules/rtdb/simulation/handler.js.map +1 -1
- package/dist/rules/rtdb/simulation/spec.d.ts +95 -5
- package/dist/rules/rtdb/simulation/spec.d.ts.map +1 -1
- package/dist/rules/rtdb/simulation/spec.js +22 -1
- package/dist/rules/rtdb/simulation/spec.js.map +1 -1
- package/dist/rules/rtdb/types.d.ts +18 -18
- package/dist/rules/simulator/evaluator.js +35 -69
- package/dist/rules/simulator/evaluator.js.map +1 -1
- package/dist/rules/simulator/handler.d.ts.map +1 -1
- package/dist/rules/simulator/handler.js +12 -3
- package/dist/rules/simulator/handler.js.map +1 -1
- package/dist/rules/simulator/mapdiff.d.ts +2 -0
- package/dist/rules/simulator/mapdiff.d.ts.map +1 -1
- package/dist/rules/simulator/mapdiff.js +7 -5
- package/dist/rules/simulator/mapdiff.js.map +1 -1
- package/dist/rules/simulator/query-proof-residual.d.ts +11 -0
- package/dist/rules/simulator/query-proof-residual.d.ts.map +1 -0
- package/dist/rules/simulator/query-proof-residual.js +177 -0
- package/dist/rules/simulator/query-proof-residual.js.map +1 -0
- package/dist/rules/simulator/query-proof.d.ts +21 -47
- package/dist/rules/simulator/query-proof.d.ts.map +1 -1
- package/dist/rules/simulator/query-proof.js +78 -13
- package/dist/rules/simulator/query-proof.js.map +1 -1
- package/dist/rules/simulator/request-path.d.ts +26 -0
- package/dist/rules/simulator/request-path.d.ts.map +1 -0
- package/dist/rules/simulator/request-path.js +36 -0
- package/dist/rules/simulator/request-path.js.map +1 -0
- package/dist/rules/simulator/trace-recorder.d.ts +1 -0
- package/dist/rules/simulator/trace-recorder.d.ts.map +1 -1
- package/dist/rules/simulator/trace-recorder.js +4 -0
- package/dist/rules/simulator/trace-recorder.js.map +1 -1
- package/dist/rules/simulator/wrappers/timestamp.d.ts +6 -0
- package/dist/rules/simulator/wrappers/timestamp.d.ts.map +1 -1
- package/dist/rules/simulator/wrappers/timestamp.js +8 -1
- package/dist/rules/simulator/wrappers/timestamp.js.map +1 -1
- package/dist/rules/simulator-tools-impl.d.ts.map +1 -1
- package/dist/rules/simulator-tools-impl.js +6 -3
- package/dist/rules/simulator-tools-impl.js.map +1 -1
- package/dist/rules/stdlib-tools.js +4 -4
- package/dist/rules/stdlib-tools.js.map +1 -1
- package/dist/rules/test/spec.d.ts +4 -4
- package/dist/sandbox/active-listeners.d.ts +69 -0
- package/dist/sandbox/active-listeners.d.ts.map +1 -0
- package/dist/sandbox/active-listeners.js +159 -0
- package/dist/sandbox/active-listeners.js.map +1 -0
- package/dist/sandbox/admin-firestore/error-translation.d.ts.map +1 -1
- package/dist/sandbox/admin-firestore/error-translation.js +15 -2
- package/dist/sandbox/admin-firestore/error-translation.js.map +1 -1
- package/dist/sandbox/admin-firestore/listeners.d.ts +0 -25
- package/dist/sandbox/admin-firestore/listeners.d.ts.map +1 -1
- package/dist/sandbox/admin-firestore/listeners.js +26 -2
- package/dist/sandbox/admin-firestore/listeners.js.map +1 -1
- package/dist/sandbox/admin-firestore/remote/listeners.d.ts.map +1 -1
- package/dist/sandbox/admin-firestore/remote/listeners.js +50 -29
- package/dist/sandbox/admin-firestore/remote/listeners.js.map +1 -1
- package/dist/sandbox/admin-firestore/remote/value-codec.d.ts +5 -12
- package/dist/sandbox/admin-firestore/remote/value-codec.d.ts.map +1 -1
- package/dist/sandbox/admin-firestore/remote/value-codec.js +7 -14
- package/dist/sandbox/admin-firestore/remote/value-codec.js.map +1 -1
- package/dist/sandbox/admin-firestore/remote/wire-types.d.ts +2 -0
- package/dist/sandbox/admin-firestore/remote/wire-types.d.ts.map +1 -1
- package/dist/sandbox/attribution/attribution-mode.d.ts +36 -0
- package/dist/sandbox/attribution/attribution-mode.d.ts.map +1 -0
- package/dist/sandbox/attribution/attribution-mode.js +68 -0
- package/dist/sandbox/attribution/attribution-mode.js.map +1 -0
- package/dist/sandbox/attribution/effect-regions.d.ts +37 -0
- package/dist/sandbox/attribution/effect-regions.d.ts.map +1 -0
- package/dist/sandbox/attribution/effect-regions.js +114 -0
- package/dist/sandbox/attribution/effect-regions.js.map +1 -0
- package/dist/sandbox/attribution/element-selector.d.ts +42 -0
- package/dist/sandbox/attribution/element-selector.d.ts.map +1 -0
- package/dist/sandbox/attribution/element-selector.js +109 -0
- package/dist/sandbox/attribution/element-selector.js.map +1 -0
- package/dist/sandbox/attribution/listener-owners.d.ts +111 -0
- package/dist/sandbox/attribution/listener-owners.d.ts.map +1 -0
- package/dist/sandbox/attribution/listener-owners.js +215 -0
- package/dist/sandbox/attribution/listener-owners.js.map +1 -0
- package/dist/sandbox/branches/engine.d.ts +129 -0
- package/dist/sandbox/branches/engine.d.ts.map +1 -0
- package/dist/sandbox/branches/engine.js +280 -0
- package/dist/sandbox/branches/engine.js.map +1 -0
- package/dist/sandbox/branches/index.d.ts +12 -139
- package/dist/sandbox/branches/index.d.ts.map +1 -1
- package/dist/sandbox/branches/index.js +8 -390
- package/dist/sandbox/branches/index.js.map +1 -1
- package/dist/sandbox/branches/promotion.d.ts +27 -0
- package/dist/sandbox/branches/promotion.d.ts.map +1 -0
- package/dist/sandbox/branches/promotion.js +160 -0
- package/dist/sandbox/branches/promotion.js.map +1 -0
- package/dist/sandbox/branches/state-diff.d.ts +66 -0
- package/dist/sandbox/branches/state-diff.d.ts.map +1 -0
- package/dist/sandbox/branches/state-diff.js +270 -0
- package/dist/sandbox/branches/state-diff.js.map +1 -0
- package/dist/sandbox/branches/store.d.ts +64 -0
- package/dist/sandbox/branches/store.d.ts.map +1 -0
- package/dist/sandbox/branches/store.js +264 -0
- package/dist/sandbox/branches/store.js.map +1 -0
- package/dist/sandbox/checkpoints/capture.d.ts +39 -0
- package/dist/sandbox/checkpoints/capture.d.ts.map +1 -0
- package/dist/sandbox/checkpoints/capture.js +69 -0
- package/dist/sandbox/checkpoints/capture.js.map +1 -0
- package/dist/sandbox/checkpoints/directory-backend.d.ts +30 -0
- package/dist/sandbox/checkpoints/directory-backend.d.ts.map +1 -0
- package/dist/sandbox/checkpoints/directory-backend.js +98 -0
- package/dist/sandbox/checkpoints/directory-backend.js.map +1 -0
- package/dist/sandbox/checkpoints/index.d.ts +15 -0
- package/dist/sandbox/checkpoints/index.d.ts.map +1 -0
- package/dist/sandbox/checkpoints/index.js +13 -0
- package/dist/sandbox/checkpoints/index.js.map +1 -0
- package/dist/sandbox/checkpoints/record-backend.d.ts +25 -0
- package/dist/sandbox/checkpoints/record-backend.d.ts.map +1 -0
- package/dist/sandbox/checkpoints/record-backend.js +81 -0
- package/dist/sandbox/checkpoints/record-backend.js.map +1 -0
- package/dist/sandbox/checkpoints/saved-states.d.ts +35 -0
- package/dist/sandbox/checkpoints/saved-states.d.ts.map +1 -0
- package/dist/sandbox/checkpoints/saved-states.js +47 -0
- package/dist/sandbox/checkpoints/saved-states.js.map +1 -0
- package/dist/sandbox/checkpoints/types.d.ts +84 -0
- package/dist/sandbox/checkpoints/types.d.ts.map +1 -0
- package/dist/sandbox/checkpoints/types.js +51 -0
- package/dist/sandbox/checkpoints/types.js.map +1 -0
- package/dist/sandbox/checkpoints/validation.d.ts +3 -0
- package/dist/sandbox/checkpoints/validation.d.ts.map +1 -0
- package/dist/sandbox/checkpoints/validation.js +99 -0
- package/dist/sandbox/checkpoints/validation.js.map +1 -0
- package/dist/sandbox/clock.d.ts +121 -0
- package/dist/sandbox/clock.d.ts.map +1 -0
- package/dist/sandbox/clock.js +167 -0
- package/dist/sandbox/clock.js.map +1 -0
- package/dist/sandbox/full-state.d.ts +160 -0
- package/dist/sandbox/full-state.d.ts.map +1 -0
- package/dist/sandbox/full-state.js +267 -0
- package/dist/sandbox/full-state.js.map +1 -0
- package/dist/sandbox/index.d.ts +13 -6
- package/dist/sandbox/index.d.ts.map +1 -1
- package/dist/sandbox/index.js +23 -9
- package/dist/sandbox/index.js.map +1 -1
- package/dist/sandbox/internal/ai-evidence.d.ts +27 -0
- package/dist/sandbox/internal/ai-evidence.d.ts.map +1 -0
- package/dist/sandbox/internal/ai-evidence.js +29 -0
- package/dist/sandbox/internal/ai-evidence.js.map +1 -0
- package/dist/sandbox/internal/event-history.d.ts +32 -0
- package/dist/sandbox/internal/event-history.d.ts.map +1 -0
- package/dist/sandbox/internal/event-history.js +199 -0
- package/dist/sandbox/internal/event-history.js.map +1 -0
- package/dist/sandbox/internal/history-integrity.d.ts +3 -0
- package/dist/sandbox/internal/history-integrity.d.ts.map +1 -0
- package/dist/sandbox/internal/history-integrity.js +12 -0
- package/dist/sandbox/internal/history-integrity.js.map +1 -0
- package/dist/sandbox/internal/history-retention.d.ts +6 -0
- package/dist/sandbox/internal/history-retention.d.ts.map +1 -0
- package/dist/sandbox/internal/history-retention.js +12 -0
- package/dist/sandbox/internal/history-retention.js.map +1 -0
- package/dist/sandbox/internal/index.d.ts +27 -0
- package/dist/sandbox/internal/index.d.ts.map +1 -1
- package/dist/sandbox/internal/index.js +26 -0
- package/dist/sandbox/internal/index.js.map +1 -1
- package/dist/sandbox/internal/observation-history.d.ts +6 -0
- package/dist/sandbox/internal/observation-history.d.ts.map +1 -0
- package/dist/sandbox/internal/observation-history.js +6 -0
- package/dist/sandbox/internal/observation-history.js.map +1 -0
- package/dist/sandbox/internal/observation-payload.d.ts +6 -0
- package/dist/sandbox/internal/observation-payload.d.ts.map +1 -0
- package/dist/sandbox/internal/observation-payload.js +24 -0
- package/dist/sandbox/internal/observation-payload.js.map +1 -0
- package/dist/sandbox/internal/provenance.d.ts +0 -1
- package/dist/sandbox/internal/provenance.d.ts.map +1 -1
- package/dist/sandbox/internal/provenance.js +6 -0
- package/dist/sandbox/internal/provenance.js.map +1 -1
- package/dist/sandbox/internal/root.d.ts +2 -1
- package/dist/sandbox/internal/root.d.ts.map +1 -1
- package/dist/sandbox/internal/root.js +2 -2
- package/dist/sandbox/internal/root.js.map +1 -1
- package/dist/sandbox/internal/rules-evidence-retention.d.ts +11 -0
- package/dist/sandbox/internal/rules-evidence-retention.d.ts.map +1 -0
- package/dist/sandbox/internal/rules-evidence-retention.js +27 -0
- package/dist/sandbox/internal/rules-evidence-retention.js.map +1 -0
- package/dist/sandbox/internal/sandbox-impl.d.ts +40 -33
- package/dist/sandbox/internal/sandbox-impl.d.ts.map +1 -1
- package/dist/sandbox/internal/sandbox-impl.js +83 -40
- package/dist/sandbox/internal/sandbox-impl.js.map +1 -1
- package/dist/sandbox/internal/sdk-activity.d.ts +112 -0
- package/dist/sandbox/internal/sdk-activity.d.ts.map +1 -0
- package/dist/sandbox/internal/sdk-activity.js +240 -0
- package/dist/sandbox/internal/sdk-activity.js.map +1 -0
- package/dist/sandbox/internal/sdk-coverage.d.ts +10 -0
- package/dist/sandbox/internal/sdk-coverage.d.ts.map +1 -0
- package/dist/sandbox/internal/sdk-coverage.js +21 -0
- package/dist/sandbox/internal/sdk-coverage.js.map +1 -0
- package/dist/sandbox/internal/sdk-observation.d.ts +32 -0
- package/dist/sandbox/internal/sdk-observation.d.ts.map +1 -0
- package/dist/sandbox/internal/sdk-observation.js +29 -0
- package/dist/sandbox/internal/sdk-observation.js.map +1 -0
- package/dist/sandbox/internal/sdk-rates.d.ts +97 -0
- package/dist/sandbox/internal/sdk-rates.d.ts.map +1 -0
- package/dist/sandbox/internal/sdk-rates.js +187 -0
- package/dist/sandbox/internal/sdk-rates.js.map +1 -0
- package/dist/sandbox/internal/sdk-write-activity.d.ts +5 -0
- package/dist/sandbox/internal/sdk-write-activity.d.ts.map +1 -0
- package/dist/sandbox/internal/sdk-write-activity.js +13 -0
- package/dist/sandbox/internal/sdk-write-activity.js.map +1 -0
- package/dist/sandbox/internal/state-schemas.d.ts +120 -0
- package/dist/sandbox/internal/state-schemas.d.ts.map +1 -0
- package/dist/sandbox/internal/state-schemas.js +42 -0
- package/dist/sandbox/internal/state-schemas.js.map +1 -0
- package/dist/sandbox/internal/state-values.d.ts +6 -0
- package/dist/sandbox/internal/state-values.d.ts.map +1 -0
- package/dist/sandbox/internal/state-values.js +15 -0
- package/dist/sandbox/internal/state-values.js.map +1 -0
- package/dist/sandbox/internal/storage-activity.d.ts +13 -0
- package/dist/sandbox/internal/storage-activity.d.ts.map +1 -0
- package/dist/sandbox/internal/storage-activity.js +48 -0
- package/dist/sandbox/internal/storage-activity.js.map +1 -0
- package/dist/sandbox/internal/usage-evidence.d.ts +24 -0
- package/dist/sandbox/internal/usage-evidence.d.ts.map +1 -0
- package/dist/sandbox/internal/usage-evidence.js +56 -0
- package/dist/sandbox/internal/usage-evidence.js.map +1 -0
- package/dist/sandbox/operation-record.d.ts +20 -1
- package/dist/sandbox/operation-record.d.ts.map +1 -1
- package/dist/sandbox/operation-record.js +100 -4
- package/dist/sandbox/operation-record.js.map +1 -1
- package/dist/sandbox/persistence/changed-buckets.d.ts +19 -0
- package/dist/sandbox/persistence/changed-buckets.d.ts.map +1 -0
- package/dist/sandbox/persistence/changed-buckets.js +72 -0
- package/dist/sandbox/persistence/changed-buckets.js.map +1 -0
- package/dist/sandbox/persistence/chunk-format.d.ts +27 -1
- package/dist/sandbox/persistence/chunk-format.d.ts.map +1 -1
- package/dist/sandbox/persistence/chunk-format.js +37 -25
- package/dist/sandbox/persistence/chunk-format.js.map +1 -1
- package/dist/sandbox/persistence/controller.d.ts.map +1 -1
- package/dist/sandbox/persistence/controller.js +91 -36
- package/dist/sandbox/persistence/controller.js.map +1 -1
- package/dist/sandbox/persistence/import-bundle.d.ts +8 -0
- package/dist/sandbox/persistence/import-bundle.d.ts.map +1 -0
- package/dist/sandbox/persistence/import-bundle.js +66 -0
- package/dist/sandbox/persistence/import-bundle.js.map +1 -0
- package/dist/sandbox/persistence/serialize.d.ts +1 -1
- package/dist/sandbox/persistence/serialize.d.ts.map +1 -1
- package/dist/sandbox/persistence/serialize.js +16 -11
- package/dist/sandbox/persistence/serialize.js.map +1 -1
- package/dist/sandbox/persistence/types.d.ts +4 -0
- package/dist/sandbox/persistence/types.d.ts.map +1 -1
- package/dist/sandbox/persistence/validate-services.d.ts +7 -0
- package/dist/sandbox/persistence/validate-services.d.ts.map +1 -0
- package/dist/sandbox/persistence/validate-services.js +73 -0
- package/dist/sandbox/persistence/validate-services.js.map +1 -0
- package/dist/sandbox/remote.d.ts +6 -0
- package/dist/sandbox/remote.d.ts.map +1 -1
- package/dist/sandbox/remote.js.map +1 -1
- package/dist/sandbox/replay/index.d.ts +1 -1
- package/dist/sandbox/replay/index.d.ts.map +1 -1
- package/dist/sandbox/replay/index.js +18 -8
- package/dist/sandbox/replay/index.js.map +1 -1
- package/dist/sandbox/types/errors.d.ts +3 -1
- package/dist/sandbox/types/errors.d.ts.map +1 -1
- package/dist/sandbox/types/errors.js +0 -4
- package/dist/sandbox/types/errors.js.map +1 -1
- package/dist/sandbox/types/events.d.ts +105 -76
- package/dist/sandbox/types/events.d.ts.map +1 -1
- package/dist/sandbox/types/events.js +0 -5
- package/dist/sandbox/types/events.js.map +1 -1
- package/dist/sandbox/types/index.d.ts +2 -1
- package/dist/sandbox/types/index.d.ts.map +1 -1
- package/dist/sandbox/types/index.js +1 -0
- package/dist/sandbox/types/index.js.map +1 -1
- package/dist/sandbox/types/operation.d.ts +13 -4
- package/dist/sandbox/types/operation.d.ts.map +1 -1
- package/dist/sandbox/types/persistence.d.ts +2 -2
- package/dist/sandbox/types/query-proof.d.ts +25 -0
- package/dist/sandbox/types/query-proof.d.ts.map +1 -0
- package/dist/sandbox/types/query-proof.js +2 -0
- package/dist/sandbox/types/query-proof.js.map +1 -0
- package/dist/sandbox/types/request-observation.d.ts +19 -0
- package/dist/sandbox/types/request-observation.d.ts.map +1 -0
- package/dist/sandbox/types/request-observation.js +13 -0
- package/dist/sandbox/types/request-observation.js.map +1 -0
- package/dist/sandbox/types/rules-evidence.d.ts +48 -0
- package/dist/sandbox/types/rules-evidence.d.ts.map +1 -0
- package/dist/sandbox/types/rules-evidence.js +2 -0
- package/dist/sandbox/types/rules-evidence.js.map +1 -0
- package/dist/sandbox/types/service-event-record.d.ts +30 -0
- package/dist/sandbox/types/service-event-record.d.ts.map +1 -0
- package/dist/sandbox/types/service-event-record.js +13 -0
- package/dist/sandbox/types/service-event-record.js.map +1 -0
- package/dist/sandbox/types/service-event-records.d.ts +64 -0
- package/dist/sandbox/types/service-event-records.d.ts.map +1 -0
- package/dist/sandbox/types/service-event-records.js +31 -0
- package/dist/sandbox/types/service-event-records.js.map +1 -0
- package/dist/sandbox/types/service-mutation-event.d.ts +88 -0
- package/dist/sandbox/types/service-mutation-event.d.ts.map +1 -0
- package/dist/sandbox/types/service-mutation-event.js +2 -0
- package/dist/sandbox/types/service-mutation-event.js.map +1 -0
- package/dist/storage/activity-coverage.d.ts +9 -0
- package/dist/storage/activity-coverage.d.ts.map +1 -0
- package/dist/storage/activity-coverage.js +9 -0
- package/dist/storage/activity-coverage.js.map +1 -0
- package/dist/storage/base64.d.ts +14 -0
- package/dist/storage/base64.d.ts.map +1 -0
- package/dist/storage/base64.js +34 -0
- package/dist/storage/base64.js.map +1 -0
- package/dist/storage/download.d.ts +12 -4
- package/dist/storage/download.d.ts.map +1 -1
- package/dist/storage/download.js +19 -6
- package/dist/storage/download.js.map +1 -1
- package/dist/storage/enforce.d.ts +13 -2
- package/dist/storage/enforce.d.ts.map +1 -1
- package/dist/storage/enforce.js +21 -3
- package/dist/storage/enforce.js.map +1 -1
- package/dist/storage/errors.d.ts +29 -5
- package/dist/storage/errors.d.ts.map +1 -1
- package/dist/storage/errors.js +28 -0
- package/dist/storage/errors.js.map +1 -1
- package/dist/storage/events.d.ts +12 -0
- package/dist/storage/events.d.ts.map +1 -0
- package/dist/storage/events.js +10 -0
- package/dist/storage/events.js.map +1 -0
- package/dist/storage/index.d.ts +7 -7
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +7 -5
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/internal.d.ts +10 -1
- package/dist/storage/internal.d.ts.map +1 -1
- package/dist/storage/internal.js +9 -1
- package/dist/storage/internal.js.map +1 -1
- package/dist/storage/metadata.d.ts +19 -0
- package/dist/storage/metadata.d.ts.map +1 -1
- package/dist/storage/metadata.js +50 -19
- package/dist/storage/metadata.js.map +1 -1
- package/dist/storage/observed.d.ts +16 -0
- package/dist/storage/observed.d.ts.map +1 -0
- package/dist/storage/observed.js +17 -0
- package/dist/storage/observed.js.map +1 -0
- package/dist/storage/persistence.d.ts +157 -20
- package/dist/storage/persistence.d.ts.map +1 -1
- package/dist/storage/persistence.js +423 -53
- package/dist/storage/persistence.js.map +1 -1
- package/dist/storage/reference.d.ts +3 -1
- package/dist/storage/reference.d.ts.map +1 -1
- package/dist/storage/reference.js +3 -2
- package/dist/storage/reference.js.map +1 -1
- package/dist/storage/remote-bytes.d.ts +44 -0
- package/dist/storage/remote-bytes.d.ts.map +1 -0
- package/dist/storage/remote-bytes.js +97 -0
- package/dist/storage/remote-bytes.js.map +1 -0
- package/dist/storage/resumable.d.ts.map +1 -1
- package/dist/storage/resumable.js +16 -0
- package/dist/storage/resumable.js.map +1 -1
- package/dist/storage/rules-resolution.d.ts +13 -1
- package/dist/storage/rules-resolution.d.ts.map +1 -1
- package/dist/storage/rules-resolution.js +28 -0
- package/dist/storage/rules-resolution.js.map +1 -1
- package/dist/storage/sandbox/persistence-state.d.ts +25 -0
- package/dist/storage/sandbox/persistence-state.d.ts.map +1 -0
- package/dist/storage/sandbox/persistence-state.js +53 -0
- package/dist/storage/sandbox/persistence-state.js.map +1 -0
- package/dist/storage/sandbox/rules-bindings.d.ts +15 -0
- package/dist/storage/sandbox/rules-bindings.d.ts.map +1 -0
- package/dist/storage/sandbox/rules-bindings.js +69 -0
- package/dist/storage/sandbox/rules-bindings.js.map +1 -0
- package/dist/storage/sandbox/rules-collection-methods.d.ts +3 -0
- package/dist/storage/sandbox/rules-collection-methods.d.ts.map +1 -0
- package/dist/storage/sandbox/rules-collection-methods.js +149 -0
- package/dist/storage/sandbox/rules-collection-methods.js.map +1 -0
- package/dist/storage/sandbox/rules-evaluator.d.ts +2 -2
- package/dist/storage/sandbox/rules-evaluator.d.ts.map +1 -1
- package/dist/storage/sandbox/rules-evaluator.js +51 -129
- package/dist/storage/sandbox/rules-evaluator.js.map +1 -1
- package/dist/storage/sandbox/rules-firestore-lookup.d.ts +25 -0
- package/dist/storage/sandbox/rules-firestore-lookup.d.ts.map +1 -0
- package/dist/storage/sandbox/rules-firestore-lookup.js +94 -0
- package/dist/storage/sandbox/rules-firestore-lookup.js.map +1 -0
- package/dist/storage/sandbox/rules-hashing-methods.d.ts +16 -0
- package/dist/storage/sandbox/rules-hashing-methods.d.ts.map +1 -0
- package/dist/storage/sandbox/rules-hashing-methods.js +41 -0
- package/dist/storage/sandbox/rules-hashing-methods.js.map +1 -0
- package/dist/storage/sandbox/rules-method-calls.d.ts +40 -0
- package/dist/storage/sandbox/rules-method-calls.d.ts.map +1 -0
- package/dist/storage/sandbox/rules-method-calls.js +47 -0
- package/dist/storage/sandbox/rules-method-calls.js.map +1 -0
- package/dist/storage/sandbox/rules-methods.d.ts +11 -12
- package/dist/storage/sandbox/rules-methods.d.ts.map +1 -1
- package/dist/storage/sandbox/rules-methods.js +62 -359
- package/dist/storage/sandbox/rules-methods.js.map +1 -1
- package/dist/storage/sandbox/rules-operators.d.ts +32 -0
- package/dist/storage/sandbox/rules-operators.d.ts.map +1 -0
- package/dist/storage/sandbox/rules-operators.js +85 -0
- package/dist/storage/sandbox/rules-operators.js.map +1 -0
- package/dist/storage/sandbox/rules-string-methods.d.ts +3 -0
- package/dist/storage/sandbox/rules-string-methods.d.ts.map +1 -0
- package/dist/storage/sandbox/rules-string-methods.js +199 -0
- package/dist/storage/sandbox/rules-string-methods.js.map +1 -0
- package/dist/storage/sandbox/rules-time-methods.d.ts +25 -0
- package/dist/storage/sandbox/rules-time-methods.d.ts.map +1 -0
- package/dist/storage/sandbox/rules-time-methods.js +89 -0
- package/dist/storage/sandbox/rules-time-methods.js.map +1 -0
- package/dist/storage/sandbox/rules-values.d.ts +6 -0
- package/dist/storage/sandbox/rules-values.d.ts.map +1 -1
- package/dist/storage/sandbox/rules-values.js +29 -2
- package/dist/storage/sandbox/rules-values.js.map +1 -1
- package/dist/storage/sandbox/rules.d.ts +25 -13
- package/dist/storage/sandbox/rules.d.ts.map +1 -1
- package/dist/storage/sandbox/rules.js +19 -10
- package/dist/storage/sandbox/rules.js.map +1 -1
- package/dist/storage/sandbox/running-service.d.ts +65 -0
- package/dist/storage/sandbox/running-service.d.ts.map +1 -0
- package/dist/storage/sandbox/running-service.js +30 -0
- package/dist/storage/sandbox/running-service.js.map +1 -0
- package/dist/storage/service.d.ts +46 -28
- package/dist/storage/service.d.ts.map +1 -1
- package/dist/storage/service.js +169 -57
- package/dist/storage/service.js.map +1 -1
- package/dist/storage/string-format.d.ts +9 -0
- package/dist/storage/string-format.d.ts.map +1 -0
- package/dist/storage/string-format.js +8 -0
- package/dist/storage/string-format.js.map +1 -0
- package/dist/storage/upload.d.ts +2 -1
- package/dist/storage/upload.d.ts.map +1 -1
- package/dist/storage/upload.js +6 -2
- package/dist/storage/upload.js.map +1 -1
- package/dist/storage/url.d.ts +18 -0
- package/dist/storage/url.d.ts.map +1 -0
- package/dist/storage/url.js +84 -0
- package/dist/storage/url.js.map +1 -0
- package/package.json +17 -1
- package/src/ai/activity.ts +43 -0
- package/src/ai/broker/broker.ts +59 -6
- package/src/ai/broker/gemini-engine.ts +16 -0
- package/src/ai/broker/index.ts +1 -1
- package/src/ai/broker/openai-engine.ts +6 -3
- package/src/ai/broker/scripted-engine.ts +16 -5
- package/src/ai/broker/types.ts +6 -2
- package/src/ai/events.ts +29 -0
- package/src/ai/generation-enums.ts +48 -0
- package/src/ai/index.ts +9 -0
- package/src/ai/instances.ts +22 -2
- package/src/ai/internal.ts +5 -0
- package/src/ai/sandbox-plane.ts +23 -8
- package/src/ai/scripting.ts +42 -7
- package/src/app/internal.ts +1 -0
- package/src/auth/email-link.ts +32 -21
- package/src/auth/events.ts +29 -0
- package/src/auth/factor-id.ts +7 -0
- package/src/auth/index.ts +2 -0
- package/src/auth/instances.ts +13 -1
- package/src/auth/internal.ts +24 -0
- package/src/auth/modular.ts +27 -0
- package/src/auth/reauth.ts +3 -2
- package/src/auth/sandbox/default-avatar.ts +177 -0
- package/src/auth/sandbox/driver.ts +54 -0
- package/src/auth/sandbox/project-store.ts +0 -2
- package/src/auth/sandbox-backend-types.ts +31 -20
- package/src/auth/sandbox-backend.ts +400 -94
- package/src/auth/seed-user.ts +38 -0
- package/src/auth/tokens.ts +21 -18
- package/src/auth/types.ts +13 -1
- package/src/database/activity-coverage.ts +10 -0
- package/src/database/connection-lifecycle.ts +53 -24
- package/src/database/events.ts +20 -0
- package/src/database/instances.ts +52 -21
- package/src/database/internal/query-projection.ts +333 -0
- package/src/database/internal.ts +2 -0
- package/src/database/listeners.ts +162 -44
- package/src/database/operations.ts +73 -50
- package/src/database/replay.ts +6 -2
- package/src/database/routing.ts +4 -0
- package/src/database/sandbox/backend-for.ts +145 -25
- package/src/database/sandbox/backend-state.ts +15 -1
- package/src/database/sandbox/backend.ts +4 -2
- package/src/database/sandbox/child-listeners.ts +32 -13
- package/src/database/sandbox/listener-types.ts +5 -0
- package/src/database/sandbox/operation-events.ts +23 -9
- package/src/database/sandbox/persistence-state.ts +4 -11
- package/src/database/sandbox/priority-writes.ts +2 -2
- package/src/database/sandbox/query.ts +13 -268
- package/src/database/sandbox/rules-eval.ts +144 -10
- package/src/database/sandbox/transactions.ts +17 -39
- package/src/database/sandbox/value-listeners.ts +66 -23
- package/src/database/sandbox/write-plane.ts +29 -22
- package/src/database/sdk-activity.ts +26 -0
- package/src/database/transactions.ts +15 -11
- package/src/database/types.ts +12 -1
- package/src/deferred/entry.ts +16 -10
- package/src/firestore/activity-coverage.ts +8 -0
- package/src/firestore/aggregates.ts +17 -9
- package/src/firestore/bytes.ts +56 -0
- package/src/firestore/converter-method.ts +49 -0
- package/src/firestore/errors.ts +8 -0
- package/src/firestore/field-values.ts +3 -158
- package/src/firestore/geo-point.ts +56 -0
- package/src/firestore/index.ts +1 -1
- package/src/firestore/instances.ts +23 -2
- package/src/firestore/internal/document-data.ts +9 -0
- package/src/firestore/internal/index.ts +7 -0
- package/src/firestore/internal/value-codec.ts +150 -83
- package/src/firestore/internal/value-depth.ts +19 -0
- package/src/firestore/listeners.ts +60 -18
- package/src/firestore/persistence.ts +14 -9
- package/src/firestore/plain-object.ts +7 -0
- package/src/firestore/query-constraints.ts +4 -8
- package/src/firestore/reads.ts +81 -48
- package/src/firestore/refs.ts +56 -41
- package/src/firestore/sandbox/activity-query-display.ts +138 -0
- package/src/firestore/sandbox/admin-compat/batch.ts +26 -19
- package/src/firestore/sandbox/admin-compat/query-comparison.ts +9 -8
- package/src/firestore/sandbox/admin-compat/query.ts +46 -12
- package/src/firestore/sandbox/admin-compat/read-translation.ts +18 -6
- package/src/firestore/sandbox/admin-compat/transaction.ts +14 -4
- package/src/firestore/sandbox/admin-compat/types.ts +6 -88
- package/src/firestore/sandbox/atomic-state.ts +112 -0
- package/src/firestore/sandbox/atomic-write-pipeline.ts +129 -77
- package/src/firestore/sandbox/batch-write-executor.ts +51 -29
- package/src/firestore/sandbox/converters/user-timestamp.ts +19 -42
- package/src/firestore/sandbox/document-copy.ts +27 -0
- package/src/firestore/sandbox/document-store.ts +108 -0
- package/src/firestore/sandbox/errors.ts +5 -1
- package/src/firestore/sandbox/event-log.ts +72 -7
- package/src/firestore/sandbox/field-merge.ts +10 -19
- package/src/firestore/sandbox/history-controls.ts +1 -1
- package/src/firestore/sandbox/list-query-proof.ts +43 -72
- package/src/firestore/sandbox/listener-dispatch.ts +59 -4
- package/src/firestore/sandbox/local-environment.ts +35 -7
- package/src/firestore/sandbox/local-state.ts +72 -232
- package/src/firestore/sandbox/query-execution.ts +56 -34
- package/src/firestore/sandbox/query-operand-equality.ts +57 -14
- package/src/firestore/sandbox/query-operators.ts +20 -0
- package/src/firestore/sandbox/query-value-registry.ts +3 -2
- package/src/firestore/sandbox/request-events.ts +5 -0
- package/src/firestore/sandbox/rules-evidence.ts +94 -0
- package/src/firestore/sandbox/rules-list-authorizer.ts +62 -107
- package/src/firestore/sandbox/rules-operation-reader.ts +11 -4
- package/src/firestore/sandbox/rules-read-engine.ts +19 -8
- package/src/firestore/sandbox/rules-state.ts +21 -0
- package/src/firestore/sandbox/snapshot-listeners.ts +12 -1
- package/src/firestore/sandbox/transaction-merge.ts +33 -20
- package/src/firestore/sandbox/transaction-types.ts +11 -21
- package/src/firestore/sandbox/transaction-write-executor.ts +103 -69
- package/src/firestore/sandbox/transaction.ts +24 -7
- package/src/firestore/sandbox/value-resolver.ts +2 -13
- package/src/firestore/sandbox/write-engine.ts +13 -5
- package/src/firestore/sandbox/write-runtime.ts +68 -40
- package/src/firestore/sandbox/writes.ts +3 -1
- package/src/firestore/sdk-activity.ts +31 -0
- package/src/firestore/snapshots.ts +84 -18
- package/src/firestore/state.ts +34 -14
- package/src/firestore/timestamp.ts +86 -0
- package/src/firestore/tools.ts +3 -3
- package/src/firestore/transactions.ts +88 -8
- package/src/firestore/types.ts +26 -5
- package/src/firestore/vector-value.ts +54 -0
- package/src/firestore/writes.ts +53 -43
- package/src/functions/events.ts +27 -0
- package/src/messaging/broker/broker.test.ts +114 -0
- package/src/messaging/broker/broker.ts +152 -65
- package/src/messaging/broker/delivery-history.ts +49 -0
- package/src/messaging/broker/index.ts +11 -0
- package/src/messaging/broker/persistence.ts +54 -0
- package/src/messaging/broker/types.ts +50 -0
- package/src/messaging/events.ts +29 -0
- package/src/rules/api/case-types.ts +7 -0
- package/src/rules/api/rtdb.ts +15 -7
- package/src/rules/grammar/parse-error-wording.ts +98 -0
- package/src/rules/indexes/query-analysis.ts +136 -0
- package/src/rules/indexes/service-query.ts +69 -0
- package/src/rules/internal/index.ts +16 -0
- package/src/rules/modules/rules-capabilities.generated.ts +1 -1
- package/src/rules/rtdb/constraints/atoms.spec.ts +7 -7
- package/src/rules/rtdb/constraints/atoms.ts +7 -7
- package/src/rules/rtdb/constraints/data.ts +4 -4
- package/src/rules/rtdb/constraints/document.ts +4 -2
- package/src/rules/rtdb/constraints/game.spec.ts +4 -4
- package/src/rules/rtdb/constraints/policies.spec.ts +5 -5
- package/src/rules/rtdb/constraints/policies.ts +4 -4
- package/src/rules/rtdb/constraints/schema.ts +3 -3
- package/src/rules/rtdb/grammar/RtdbExpr.ohm +1 -3
- package/src/rules/rtdb/grammar/RtdbExpr.ohm.generated.ts +1 -3
- package/src/rules/rtdb/grammar/linter.ts +34 -30
- package/src/rules/rtdb/grammar/simulator.ts +112 -74
- package/src/rules/rtdb/grammar/validator.ts +30 -26
- package/src/rules/rtdb/simulation/handler.ts +139 -36
- package/src/rules/rtdb/simulation/spec.ts +24 -1
- package/src/rules/simulator/evaluator.ts +34 -41
- package/src/rules/simulator/handler.ts +12 -3
- package/src/rules/simulator/mapdiff.ts +7 -5
- package/src/rules/simulator/query-proof-residual.ts +209 -0
- package/src/rules/simulator/query-proof.ts +53 -27
- package/src/rules/simulator/request-path.ts +39 -0
- package/src/rules/simulator/trace-recorder.ts +3 -0
- package/src/rules/simulator/wrappers/timestamp.ts +8 -1
- package/src/rules/simulator-tools-impl.ts +6 -3
- package/src/rules/stdlib-tools.ts +4 -4
- package/src/sandbox/active-listeners.ts +245 -0
- package/src/sandbox/admin-firestore/error-translation.ts +16 -2
- package/src/sandbox/admin-firestore/listeners.ts +26 -1
- package/src/sandbox/admin-firestore/remote/listeners.ts +50 -32
- package/src/sandbox/admin-firestore/remote/value-codec.ts +7 -14
- package/src/sandbox/admin-firestore/remote/wire-types.ts +3 -0
- package/src/sandbox/attribution/attribution-mode.ts +74 -0
- package/src/sandbox/attribution/effect-regions.ts +130 -0
- package/src/sandbox/attribution/element-selector.ts +118 -0
- package/src/sandbox/attribution/listener-owners.ts +277 -0
- package/src/sandbox/branches/engine.ts +362 -0
- package/src/sandbox/branches/index.ts +12 -448
- package/src/sandbox/branches/promotion.ts +207 -0
- package/src/sandbox/branches/state-diff.ts +333 -0
- package/src/sandbox/branches/store.ts +317 -0
- package/src/sandbox/checkpoints/capture.ts +77 -0
- package/src/sandbox/checkpoints/directory-backend.ts +110 -0
- package/src/sandbox/checkpoints/index.ts +32 -0
- package/src/sandbox/checkpoints/record-backend.ts +109 -0
- package/src/sandbox/checkpoints/saved-states.ts +72 -0
- package/src/sandbox/checkpoints/types.ts +115 -0
- package/src/sandbox/checkpoints/validation.ts +102 -0
- package/src/sandbox/clock.ts +205 -0
- package/src/sandbox/full-state.ts +403 -0
- package/src/sandbox/index.ts +53 -10
- package/src/sandbox/internal/ai-evidence.ts +38 -0
- package/src/sandbox/internal/event-history.ts +193 -0
- package/src/sandbox/internal/history-integrity.ts +12 -0
- package/src/sandbox/internal/history-retention.ts +16 -0
- package/src/sandbox/internal/index.ts +65 -0
- package/src/sandbox/internal/observation-history.ts +5 -0
- package/src/sandbox/internal/observation-payload.ts +18 -0
- package/src/sandbox/internal/provenance.ts +5 -0
- package/src/sandbox/internal/root.ts +3 -2
- package/src/sandbox/internal/rules-evidence-retention.ts +28 -0
- package/src/sandbox/internal/sandbox-impl.ts +91 -45
- package/src/sandbox/internal/sdk-activity.ts +291 -0
- package/src/sandbox/internal/sdk-coverage.ts +28 -0
- package/src/sandbox/internal/sdk-observation.ts +62 -0
- package/src/sandbox/internal/sdk-rates.ts +240 -0
- package/src/sandbox/internal/sdk-write-activity.ts +14 -0
- package/src/sandbox/internal/state-schemas.ts +47 -0
- package/src/sandbox/internal/state-values.ts +20 -0
- package/src/sandbox/internal/storage-activity.ts +43 -0
- package/src/sandbox/internal/usage-evidence.ts +77 -0
- package/src/sandbox/operation-record.ts +107 -4
- package/src/sandbox/persistence/changed-buckets.ts +61 -0
- package/src/sandbox/persistence/chunk-format.ts +39 -27
- package/src/sandbox/persistence/controller.ts +85 -33
- package/src/sandbox/persistence/import-bundle.ts +64 -0
- package/src/sandbox/persistence/serialize.ts +16 -10
- package/src/sandbox/persistence/types.ts +4 -0
- package/src/sandbox/persistence/validate-services.ts +70 -0
- package/src/sandbox/remote.ts +7 -0
- package/src/sandbox/replay/index.ts +15 -8
- package/src/sandbox/types/errors.ts +3 -1
- package/src/sandbox/types/events.ts +118 -75
- package/src/sandbox/types/index.ts +12 -0
- package/src/sandbox/types/operation.ts +14 -4
- package/src/sandbox/types/persistence.ts +2 -2
- package/src/sandbox/types/query-proof.ts +26 -0
- package/src/sandbox/types/request-observation.ts +25 -0
- package/src/sandbox/types/rules-evidence.ts +37 -0
- package/src/sandbox/types/service-event-record.ts +34 -0
- package/src/sandbox/types/service-event-records.ts +42 -0
- package/src/sandbox/types/service-mutation-event.ts +93 -0
- package/src/storage/activity-coverage.ts +8 -0
- package/src/storage/base64.ts +35 -0
- package/src/storage/download.ts +19 -6
- package/src/storage/enforce.ts +26 -4
- package/src/storage/errors.ts +29 -14
- package/src/storage/events.ts +21 -0
- package/src/storage/index.ts +7 -7
- package/src/storage/internal.ts +21 -0
- package/src/storage/metadata.ts +68 -19
- package/src/storage/observed.ts +16 -0
- package/src/storage/persistence.ts +574 -66
- package/src/storage/reference.ts +6 -3
- package/src/storage/remote-bytes.ts +122 -0
- package/src/storage/resumable.ts +16 -3
- package/src/storage/rules-resolution.ts +43 -1
- package/src/storage/sandbox/persistence-state.ts +71 -0
- package/src/storage/sandbox/rules-bindings.ts +69 -0
- package/src/storage/sandbox/rules-collection-methods.ts +161 -0
- package/src/storage/sandbox/rules-evaluator.ts +65 -142
- package/src/storage/sandbox/rules-firestore-lookup.ts +112 -0
- package/src/storage/sandbox/rules-hashing-methods.ts +50 -0
- package/src/storage/sandbox/rules-method-calls.ts +67 -0
- package/src/storage/sandbox/rules-methods.ts +63 -404
- package/src/storage/sandbox/rules-operators.ts +93 -0
- package/src/storage/sandbox/rules-string-methods.ts +214 -0
- package/src/storage/sandbox/rules-time-methods.ts +98 -0
- package/src/storage/sandbox/rules-values.ts +20 -1
- package/src/storage/sandbox/rules.ts +27 -14
- package/src/storage/sandbox/running-service.ts +52 -0
- package/src/storage/service.ts +196 -85
- package/src/storage/string-format.ts +8 -0
- package/src/storage/upload.ts +8 -3
- package/src/storage/url.ts +106 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { assertCompleteHistory } from '../internal/history-integrity.js';
|
|
1
2
|
/**
|
|
2
3
|
* Replay — capture a session via `sandbox.history()` and re-issue
|
|
3
4
|
* every write against a fresh sandbox; the engine classifies any
|
|
@@ -38,7 +39,7 @@
|
|
|
38
39
|
* subtree differs.
|
|
39
40
|
* - `time-drift` — like `sentinel-drift` but specifically a
|
|
40
41
|
* captured `serverTimestamp`. Surfaces when
|
|
41
|
-
* `pinRequestTime: false` and the
|
|
42
|
+
* `pinRequestTime: false` and the sandbox clock
|
|
42
43
|
* advanced between capture and replay.
|
|
43
44
|
* - `real-divergence` — anything else. If the captured metadata
|
|
44
45
|
* doesn't license drift at this exact leaf,
|
|
@@ -112,6 +113,7 @@ export function replay(
|
|
|
112
113
|
options: ReplayOptions = {},
|
|
113
114
|
originalState?: Record<string, DocData>,
|
|
114
115
|
): ReplayResult {
|
|
116
|
+
assertCompleteHistory(events);
|
|
115
117
|
const pinRequestTime = options.pinRequestTime !== false; // default true
|
|
116
118
|
const sandbox = initializeSandbox();
|
|
117
119
|
const env = getInternalEnv(sandbox);
|
|
@@ -132,7 +134,8 @@ export function replay(
|
|
|
132
134
|
? new Timestamp(wEv.requestTime.seconds, wEv.requestTime.nanoseconds)
|
|
133
135
|
: undefined;
|
|
134
136
|
|
|
135
|
-
|
|
137
|
+
const hasAutoId = Boolean(wEv.autoId);
|
|
138
|
+
if (hasAutoId) {
|
|
136
139
|
// Auto-id create: split path, mint a fresh id, record the alias.
|
|
137
140
|
const collection = wEv.path.slice(0, wEv.path.lastIndexOf('/'));
|
|
138
141
|
const { path: mintedPath } = env.createWithAutoId(
|
|
@@ -146,14 +149,17 @@ export function replay(
|
|
|
146
149
|
}
|
|
147
150
|
|
|
148
151
|
try {
|
|
149
|
-
env.execute
|
|
152
|
+
const operation: Parameters<typeof env.execute>[0] = {
|
|
150
153
|
method: wEv.method,
|
|
151
154
|
path: wEv.path,
|
|
152
155
|
auth: wEv.auth,
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
156
|
+
};
|
|
157
|
+
const hasData = data !== undefined;
|
|
158
|
+
const hasRequestTime = requestTime !== undefined;
|
|
159
|
+
if (hasData) operation.data = data as DocData;
|
|
160
|
+
if (hasRequestTime) operation.requestTime = requestTime;
|
|
161
|
+
if (bypassRules) operation.bypassRules = true;
|
|
162
|
+
env.execute(operation);
|
|
157
163
|
} catch {
|
|
158
164
|
// Replay denials surface as state divergence below; keep going
|
|
159
165
|
// to surface as much as possible in one pass.
|
|
@@ -161,7 +167,8 @@ export function replay(
|
|
|
161
167
|
}
|
|
162
168
|
|
|
163
169
|
const replayedState = getInternalEnv(sandbox).snapshot();
|
|
164
|
-
const
|
|
170
|
+
const hasOriginalState = originalState !== undefined;
|
|
171
|
+
const divergences = hasOriginalState
|
|
165
172
|
? computeDivergences(writes, originalState, replayedState, pathAliases)
|
|
166
173
|
: [];
|
|
167
174
|
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Sandbox-layer error types: the error code union, the structured
|
|
3
3
|
* denial-context payload, and the `SandboxError` class itself.
|
|
4
4
|
*/
|
|
5
|
+
import type { QueryProofDiagnostic } from './query-proof.js';
|
|
5
6
|
|
|
6
7
|
import type { AuthState } from './auth-state.js';
|
|
7
8
|
|
|
@@ -41,6 +42,7 @@ export type SandboxErrorCode =
|
|
|
41
42
|
* reference traces.
|
|
42
43
|
*/
|
|
43
44
|
export interface DenialContext {
|
|
45
|
+
queryProof?: QueryProofDiagnostic;
|
|
44
46
|
/** The rule whose evaluation produced the denial (#370). */
|
|
45
47
|
rule?: { line?: number; col?: number; column?: number; file?: string; citation?: string; expression?: string };
|
|
46
48
|
|
|
@@ -93,7 +95,7 @@ export interface DenialContext {
|
|
|
93
95
|
readonly where?: readonly {
|
|
94
96
|
readonly field: string;
|
|
95
97
|
readonly op: string;
|
|
96
|
-
readonly value: string | number | boolean | null;
|
|
98
|
+
readonly value: string | number | boolean | null | readonly (string | number | boolean | null)[];
|
|
97
99
|
}[];
|
|
98
100
|
readonly limit?: number | null;
|
|
99
101
|
readonly offset?: number | null;
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
export type { RulesEvidence } from './rules-evidence.js';
|
|
2
|
+
import type { QueryProofDiagnostic } from './query-proof.js';
|
|
3
|
+
import type { ServiceMutationEvent } from './service-mutation-event.js';
|
|
1
4
|
/**
|
|
2
5
|
* The sandbox event surface: every discriminated event variant the
|
|
3
6
|
* sandbox can emit, the shared provenance/service/actor/lens types that
|
|
@@ -11,6 +14,16 @@ import type {
|
|
|
11
14
|
OperationContext,
|
|
12
15
|
RulesDisposition,
|
|
13
16
|
} from './operation.js';
|
|
17
|
+
export type { MutationEventService, ServiceEventOperation } from './service-event-records.js';
|
|
18
|
+
export type {
|
|
19
|
+
ServiceMutationEvent,
|
|
20
|
+
ServiceMutationEventFields,
|
|
21
|
+
ServiceMutationEventOf,
|
|
22
|
+
} from './service-mutation-event.js';
|
|
23
|
+
export type {
|
|
24
|
+
ServiceEventRecord,
|
|
25
|
+
ServiceEventTarget,
|
|
26
|
+
} from './service-event-record.js';
|
|
14
27
|
export type {
|
|
15
28
|
ActivityEventProvenance,
|
|
16
29
|
AuthLens,
|
|
@@ -110,6 +123,10 @@ export interface SnapshotErrorEvent {
|
|
|
110
123
|
* @see traffic-monitor-decision.md for the field-by-field rationale.
|
|
111
124
|
*/
|
|
112
125
|
export interface RequestEvent {
|
|
126
|
+
rulesEvidence?: import('./rules-evidence.js').RulesEvidence;
|
|
127
|
+
rulesEvidenceExpired?: boolean;
|
|
128
|
+
/** Primary static-proof explanation; evaluatedRule is secondary when present. */
|
|
129
|
+
queryProof?: QueryProofDiagnostic;
|
|
113
130
|
/** Discriminator. */
|
|
114
131
|
kind: 'request';
|
|
115
132
|
/** Unique within a sandbox process. Useful for React list keys. */
|
|
@@ -125,6 +142,7 @@ export interface RequestEvent {
|
|
|
125
142
|
* and the sandbox upgraded it (today: thrown as SimulatorUnsupportedError,
|
|
126
143
|
* surfaced here as a discrete result so the panel can show it distinctly
|
|
127
144
|
* from a real denial). */
|
|
145
|
+
/** Local operational outcome. A proof-limited deny does not establish Firebase denial. */
|
|
128
146
|
result: 'allow' | 'deny' | 'unsupported';
|
|
129
147
|
/** Simulator debug messages — the per-rule trace (`Rule #0 (read) → ALLOW`).
|
|
130
148
|
* Same shape as `DenialEvent.reasons` so consumer code can share rendering. */
|
|
@@ -151,7 +169,8 @@ export interface RequestEvent {
|
|
|
151
169
|
/** Parsed from the simulator's "Rule #N → …" debug line. Absent when no
|
|
152
170
|
* rule matched (e.g. no allow rules at the path — implicit deny). */
|
|
153
171
|
matchedRule?: { ruleIndex: number; operations: string[] };
|
|
154
|
-
/**
|
|
172
|
+
/** For query-proof failures this is the actual residual evaluation, not the
|
|
173
|
+
* primary explanation; consult queryProof. Otherwise, the deciding rule's verdict + 1-indexed source line + full sub-expression
|
|
155
174
|
* trace, projected from the simulator's structured `RuleEvaluation`
|
|
156
175
|
* (additive: present on `result: 'allow' | 'deny'` Firestore events when the
|
|
157
176
|
* simulator produced a per-rule trace — the allowing rule on an allow, the
|
|
@@ -241,6 +260,79 @@ export interface WriteSandboxEvent {
|
|
|
241
260
|
detail?: { admin?: boolean } & Record<string, unknown>;
|
|
242
261
|
}
|
|
243
262
|
|
|
263
|
+
/**
|
|
264
|
+
* Who owns a listener: the diagnostic attribution pyric records alongside
|
|
265
|
+
* its own listener events. This is pyric's own surface, not a Firebase one.
|
|
266
|
+
*
|
|
267
|
+
* Three kinds, each answering a different question about the same listener:
|
|
268
|
+
*
|
|
269
|
+
* - `frame`, where the listener was created. The first stack frame outside
|
|
270
|
+
* pyric's own files at the moment the listener attached: the application
|
|
271
|
+
* file, line, optional column, and the enclosing function name when the
|
|
272
|
+
* runtime reported one. Captured once per attach, and only while listener
|
|
273
|
+
* attribution is enabled, which a production build never is.
|
|
274
|
+
* - `tag`, what the application says owns the listener. Supplied by the
|
|
275
|
+
* caller through the `owner` listen option, either as a name or as a DOM
|
|
276
|
+
* element. For an element, `name` is the element's lower-case tag name and
|
|
277
|
+
* `element` is a selector that identifies it again later.
|
|
278
|
+
* - `regions`, what the delivery changed. The selectors of the elements a
|
|
279
|
+
* snapshot callback mutated during its own synchronous run. Present only in
|
|
280
|
+
* a browser, and only on a delivery event.
|
|
281
|
+
* - `component`, the framework component that owns the listener, captured
|
|
282
|
+
* during render. Unlike `frame`, which reads the call stack at the moment
|
|
283
|
+
* the listener attaches, `component` reads the render-phase call stack of
|
|
284
|
+
* the component that will go on to attach it. `@pyric/ui`'s framework
|
|
285
|
+
* bindings capture this once per component instance and thread it through
|
|
286
|
+
* the `owner` listen option.
|
|
287
|
+
*
|
|
288
|
+
* One listener can have more than one owner at once: an attach usually
|
|
289
|
+
* carries a frame and, when the caller supplied one, a tag or a component.
|
|
290
|
+
* Events therefore carry `owners` as an array rather than a single field. An
|
|
291
|
+
* event with no attribution omits the array entirely rather than carrying an
|
|
292
|
+
* empty one.
|
|
293
|
+
*/
|
|
294
|
+
export type ListenerOwner =
|
|
295
|
+
| {
|
|
296
|
+
kind: 'frame';
|
|
297
|
+
/** Path or URL of the application file that created the listener. */
|
|
298
|
+
file: string;
|
|
299
|
+
/** 1-based line number within {@link file}. */
|
|
300
|
+
line: number;
|
|
301
|
+
/** 1-based column, when the runtime's stack format carried one. */
|
|
302
|
+
column?: number;
|
|
303
|
+
/** Enclosing function name, when the runtime's stack format named one. */
|
|
304
|
+
function?: string;
|
|
305
|
+
}
|
|
306
|
+
| {
|
|
307
|
+
kind: 'tag';
|
|
308
|
+
/** Caller-supplied name, or the element's lower-case tag name. */
|
|
309
|
+
name: string;
|
|
310
|
+
/** Selector that re-identifies the element the caller named. */
|
|
311
|
+
element?: string;
|
|
312
|
+
}
|
|
313
|
+
| {
|
|
314
|
+
kind: 'regions';
|
|
315
|
+
/** Selectors of the elements the snapshot callback mutated. */
|
|
316
|
+
selectors: string[];
|
|
317
|
+
}
|
|
318
|
+
| {
|
|
319
|
+
kind: 'component';
|
|
320
|
+
/** The component function's name, read from the render-phase stack. A
|
|
321
|
+
* minified production build mangles this like any other identifier;
|
|
322
|
+
* the consuming UI states that rather than guessing at the original
|
|
323
|
+
* name. */
|
|
324
|
+
name: string;
|
|
325
|
+
/** The chain of enclosing component frames, outermost first, best
|
|
326
|
+
* effort. Absent when only one component frame was found. */
|
|
327
|
+
path?: string[];
|
|
328
|
+
/** Selector that re-identifies the component's root DOM element, once
|
|
329
|
+
* the consumer has attached the returned `ref` to it. */
|
|
330
|
+
element?: string;
|
|
331
|
+
/** The root element's tag name, lower case, so a consumer can show the
|
|
332
|
+
* element as `nav#conversations` when the selector is id-only. */
|
|
333
|
+
tag?: string;
|
|
334
|
+
};
|
|
335
|
+
|
|
244
336
|
/**
|
|
245
337
|
* Snapshot delivered to a `onSnapshot` listener's user callback.
|
|
246
338
|
*
|
|
@@ -275,6 +367,11 @@ export interface SnapshotDeliveryEvent {
|
|
|
275
367
|
/** The user op that triggered this re-eval. Absent on initial fire
|
|
276
368
|
* and on `deployRules`-driven re-evals. */
|
|
277
369
|
triggeredBy?: { method: string; path: string };
|
|
370
|
+
/** Attribution for this delivery: the `regions` owner naming the elements
|
|
371
|
+
* the callback mutated during its own synchronous run. The `frame` and
|
|
372
|
+
* `tag` owners live on the matching `listener_attach` event; correlate on
|
|
373
|
+
* `listenerId` rather than repeating them on every delivery. */
|
|
374
|
+
owners?: ListenerOwner[];
|
|
278
375
|
}
|
|
279
376
|
|
|
280
377
|
/**
|
|
@@ -320,6 +417,9 @@ export interface ListenerLifecycleEvent {
|
|
|
320
417
|
message: string;
|
|
321
418
|
reasons?: string[];
|
|
322
419
|
};
|
|
420
|
+
/** Attribution recorded on `listener_attach`: the creation `frame` and,
|
|
421
|
+
* when the caller supplied one, the `tag`. */
|
|
422
|
+
owners?: ListenerOwner[];
|
|
323
423
|
}
|
|
324
424
|
|
|
325
425
|
/**
|
|
@@ -337,80 +437,6 @@ export interface SessionBoundaryEvent {
|
|
|
337
437
|
priorOpCount: number;
|
|
338
438
|
}
|
|
339
439
|
|
|
340
|
-
/**
|
|
341
|
-
* Cross-service mutation event — the unified envelope the NON-Firestore
|
|
342
|
-
* services (`auth` / `storage` / `rtdb`) emit into the single
|
|
343
|
-
* `onEvent`/`history()` stream (Pyric Studio keystone, track T1).
|
|
344
|
-
*
|
|
345
|
-
* **Why a new variant rather than reusing `request`/`write`.** Firestore's
|
|
346
|
-
* existing kinds are tightly coupled to the rules-simulator: `RequestEvent`
|
|
347
|
-
* carries `result: 'allow'|'deny'`, `evalMs`, the simulator's `reasons[]`,
|
|
348
|
-
* and `matchedRule`; `WriteSandboxEvent` carries Firestore-specific
|
|
349
|
-
* `sentinels`, `autoId`, and a Firestore `requestTime` Timestamp. Auth user-
|
|
350
|
-
* DB mutations (no path, no rule eval), Storage object puts, and RTDB tree
|
|
351
|
-
* writes don't have those concepts, and bending them into the Firestore
|
|
352
|
-
* shapes would either lie (synthesize a fake `result`/`requestTime`) or
|
|
353
|
-
* pollute the Firestore consumer contract. So this is ONE small, additive
|
|
354
|
-
* variant the three services share — Firestore consumers filter on their
|
|
355
|
-
* existing `kind`s and never see it. See the design rationale.
|
|
356
|
-
*
|
|
357
|
-
* It is intentionally generic: `op` is a free-ish string discriminated by
|
|
358
|
-
* `service`, and `before`/`after` are best-effort serializable snapshots
|
|
359
|
-
* (omitted when not meaningful — e.g. a sign-out has no `after`). Studio's
|
|
360
|
-
* data grids / Action Center render `service` + `op` + `path` directly and
|
|
361
|
-
* diff `before`→`after` when both are present.
|
|
362
|
-
*/
|
|
363
|
-
export interface ServiceMutationEvent {
|
|
364
|
-
kind: 'service_mutation';
|
|
365
|
-
id: string;
|
|
366
|
-
at: number;
|
|
367
|
-
/**
|
|
368
|
-
* Which service performed the mutation. Always one of the non-Firestore
|
|
369
|
-
* services — Firestore rides its own `request`/`write` path. (The
|
|
370
|
-
* provenance `service` field on the stamped event mirrors this; it is set
|
|
371
|
-
* redundantly here so a consumer matching purely on `kind` still gets the
|
|
372
|
-
* discriminator without reaching into provenance.)
|
|
373
|
-
*/
|
|
374
|
-
service: 'auth' | 'storage' | 'rtdb' | 'messaging' | 'ai';
|
|
375
|
-
/**
|
|
376
|
-
* Service-scoped operation name. Stable, lowercase, snake/kebab-free:
|
|
377
|
-
* - auth: `user_create` | `user_update` | `user_delete` |
|
|
378
|
-
* `users_clear` | `sign_in` | `sign_out`
|
|
379
|
-
* - storage: `object_put` | `object_delete` | `metadata_update`
|
|
380
|
-
* - rtdb: `set` | `update` | `remove` | `transaction`
|
|
381
|
-
* - ai: `generate_content` | `stream_generate_content` |
|
|
382
|
-
* `count_tokens` | `request_rejected` | `response_blocked` |
|
|
383
|
-
* `model_substituted`
|
|
384
|
-
* New ops can be added without a breaking change (consumers switch with a
|
|
385
|
-
* default branch).
|
|
386
|
-
*/
|
|
387
|
-
op: string;
|
|
388
|
-
/**
|
|
389
|
-
* The thing mutated, in the service's own addressing scheme:
|
|
390
|
-
* - auth: the user `uid` (or `'*'` for a clear-all). Absent for a
|
|
391
|
-
* sign-out with no prior user.
|
|
392
|
-
* - storage: the object `fullPath` (e.g. `avatars/alice.png`).
|
|
393
|
-
* - rtdb: the database path (e.g. `/rooms/r1/messages`), or for a
|
|
394
|
-
* multi-path `update` the ref path the call targeted.
|
|
395
|
-
*/
|
|
396
|
-
path?: string;
|
|
397
|
-
/** Identity in effect when the op ran (the service's `request.auth`
|
|
398
|
-
* equivalent). `null` for admin/anonymous-driven mutations (e.g.
|
|
399
|
-
* `sandbox.createUser`, an unauthenticated RTDB write). */
|
|
400
|
-
auth: AuthState;
|
|
401
|
-
/** Best-effort serializable snapshot of the state BEFORE the mutation.
|
|
402
|
-
* Absent when there was no prior state (a create) or it isn't cheap to
|
|
403
|
-
* capture. */
|
|
404
|
-
before?: unknown;
|
|
405
|
-
/** Best-effort serializable snapshot of the state AFTER the mutation.
|
|
406
|
-
* Absent on deletes / sign-outs (nothing remains). */
|
|
407
|
-
after?: unknown;
|
|
408
|
-
/** Free-form, service-specific extras a consumer may surface without
|
|
409
|
-
* re-deriving (e.g. storage `{ size, contentType }`, rtdb
|
|
410
|
-
* `{ committed }` for a transaction). Kept loose on purpose — it's a
|
|
411
|
-
* display hint, not a contract. */
|
|
412
|
-
detail?: Record<string, unknown>;
|
|
413
|
-
}
|
|
414
440
|
|
|
415
441
|
/**
|
|
416
442
|
* Canonical service operation event. This is the service-neutral successor to
|
|
@@ -424,6 +450,7 @@ export interface ServiceMutationEvent {
|
|
|
424
450
|
* their state is a Firestore document.
|
|
425
451
|
*/
|
|
426
452
|
export interface SandboxOperationEvent {
|
|
453
|
+
observation?: import('./request-observation.js').RequestObservation;
|
|
427
454
|
kind: 'operation';
|
|
428
455
|
id: string;
|
|
429
456
|
at: number;
|
|
@@ -526,6 +553,10 @@ export interface SandboxListenerEvent {
|
|
|
526
553
|
reasons?: string[];
|
|
527
554
|
rules?: SandboxOperationEvent['rules'];
|
|
528
555
|
rulesDisposition?: RulesDisposition;
|
|
556
|
+
/** Attribution for this listener. `attach` carries the creation `frame`
|
|
557
|
+
* and any caller-supplied `tag`; `delivery` carries the `regions` the
|
|
558
|
+
* callback mutated. */
|
|
559
|
+
owners?: ListenerOwner[];
|
|
529
560
|
}
|
|
530
561
|
|
|
531
562
|
/** Canonical non-rules operational failure. */
|
|
@@ -544,6 +575,17 @@ export interface SandboxRuntimeErrorEvent {
|
|
|
544
575
|
detail?: Record<string, unknown>;
|
|
545
576
|
}
|
|
546
577
|
|
|
578
|
+
/** A delivery failure, not a failed sandbox operation. Source IDs delimit the omitted batch. */
|
|
579
|
+
export interface SandboxObservationGapEvent {
|
|
580
|
+
kind: 'observation_gap';
|
|
581
|
+
id: string;
|
|
582
|
+
at: number;
|
|
583
|
+
reason: 'frame-limit' | 'history-limit';
|
|
584
|
+
omittedCount: number;
|
|
585
|
+
firstEventId: string;
|
|
586
|
+
lastEventId: string;
|
|
587
|
+
}
|
|
588
|
+
|
|
547
589
|
/**
|
|
548
590
|
* Discriminated union of every event the sandbox emits to
|
|
549
591
|
* {@link Sandbox.onEvent} subscribers.
|
|
@@ -570,5 +612,6 @@ export type SandboxEvent = (
|
|
|
570
612
|
| SandboxCommitEvent
|
|
571
613
|
| SandboxListenerEvent
|
|
572
614
|
| SandboxRuntimeErrorEvent
|
|
615
|
+
| SandboxObservationGapEvent
|
|
573
616
|
) &
|
|
574
617
|
EventProvenance;
|
|
@@ -25,16 +25,28 @@ export { SandboxError } from './errors.js';
|
|
|
25
25
|
|
|
26
26
|
export type { PersistableService, SandboxSnapshot } from './persistence.js';
|
|
27
27
|
|
|
28
|
+
export {
|
|
29
|
+
MUTATION_EVENT_SERVICES,
|
|
30
|
+
SERVICE_EVENT_RECORDS,
|
|
31
|
+
} from './service-event-records.js';
|
|
32
|
+
|
|
28
33
|
export type {
|
|
29
34
|
DenialEvent,
|
|
30
35
|
ListenerLifecycleEvent,
|
|
36
|
+
ListenerOwner,
|
|
37
|
+
MutationEventService,
|
|
31
38
|
RequestEvent,
|
|
32
39
|
SandboxCommitEvent,
|
|
33
40
|
SandboxEvent,
|
|
34
41
|
SandboxListenerEvent,
|
|
35
42
|
SandboxOperationEvent,
|
|
43
|
+
SandboxObservationGapEvent,
|
|
36
44
|
SandboxRuntimeErrorEvent,
|
|
45
|
+
ServiceEventOperation,
|
|
46
|
+
ServiceEventRecord,
|
|
47
|
+
ServiceEventTarget,
|
|
37
48
|
ServiceMutationEvent,
|
|
49
|
+
ServiceMutationEventFields,
|
|
38
50
|
SessionBoundaryEvent,
|
|
39
51
|
SnapshotDeliveryEvent,
|
|
40
52
|
SnapshotErrorEvent,
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
/** Cross-service operation identity and Security Rules disposition. */
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
import type { MutationEventService } from './service-event-records.js';
|
|
4
|
+
|
|
5
|
+
/** Which sandbox service emitted an event. Firestore is named directly because
|
|
6
|
+
* it rides its own rule-eval-shaped `request`/`write` path rather than the
|
|
7
|
+
* cross-service mutation envelope; every other service reaches this union by
|
|
8
|
+
* declaring an event record beside its own code. */
|
|
9
|
+
export type EventService = 'firestore' | 'runtime' | MutationEventService;
|
|
5
10
|
|
|
6
11
|
/** Who initiated the operation behind an event. Missing source is represented
|
|
7
12
|
* explicitly as `unattributed`; it is never silently promoted to app traffic. */
|
|
@@ -28,14 +33,17 @@ export interface OperationContext {
|
|
|
28
33
|
readonly planId?: string;
|
|
29
34
|
}
|
|
30
35
|
|
|
31
|
-
/**
|
|
36
|
+
/** An evaluated/deny disposition records a local rejection, not proof completeness
|
|
37
|
+
* or Firebase parity. Consumers must also inspect accompanying queryProof.
|
|
38
|
+
* What happened at the Security Rules seam. Admin is a lens; `bypassed` is
|
|
32
39
|
* the rules disposition. */
|
|
33
40
|
export type RulesDisposition =
|
|
34
41
|
| { kind: 'evaluated'; verdict: 'allow' | 'deny' }
|
|
35
42
|
| { kind: 'bypassed'; reason: 'admin' }
|
|
36
43
|
| {
|
|
37
44
|
kind: 'not-evaluated';
|
|
38
|
-
|
|
45
|
+
/** External execution supplies an SDK outcome, without a local rules evaluation. */
|
|
46
|
+
reason: 'no-rules' | 'unsupported' | 'not-a-rules-operation' | 'runtime-error' | 'external-execution';
|
|
39
47
|
};
|
|
40
48
|
|
|
41
49
|
/** Provenance consumed only by the firestore activity diagnostics. Bundled in
|
|
@@ -53,6 +61,8 @@ export interface ActivityEventProvenance {
|
|
|
53
61
|
/** Compatibility provenance carried by sandbox events while producers and
|
|
54
62
|
* consumers migrate to the canonical `operationContext`. */
|
|
55
63
|
export interface EventProvenance {
|
|
64
|
+
/** Wall-clock observation time, independent of the simulated service clock. */
|
|
65
|
+
observedAt?: number;
|
|
56
66
|
service?: EventService;
|
|
57
67
|
actor?: EventActor;
|
|
58
68
|
authLens?: AuthLens;
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
export interface PersistableService {
|
|
21
21
|
/**
|
|
22
22
|
* Return a plain-JSON-serializable snapshot of this service's state.
|
|
23
|
-
* Called
|
|
24
|
-
* value is stored under the service's registered name in the
|
|
23
|
+
* Called when the service changes, or on every flush when `subscribe`
|
|
24
|
+
* is omitted. The return value is stored under the service's registered name in the
|
|
25
25
|
* `services` map of the persisted blob.
|
|
26
26
|
*/
|
|
27
27
|
snapshot(): unknown;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { QueryProofResidual } from '../../rules/simulator/query-proof.js';
|
|
2
|
+
|
|
3
|
+
/** Local proof evidence. These categories do not claim a Firebase decision. */
|
|
4
|
+
export interface QueryProofFailure {
|
|
5
|
+
kind: 'unsupported-predicate' | 'unsupported-path' | 'constraints-not-satisfied';
|
|
6
|
+
reason: string;
|
|
7
|
+
residual: QueryProofResidual;
|
|
8
|
+
/** Location of the rejected predicate, which may be inside a helper. */
|
|
9
|
+
predicate?: QueryProofFailure['rule'];
|
|
10
|
+
rule?: {
|
|
11
|
+
line?: number;
|
|
12
|
+
col?: number;
|
|
13
|
+
column?: number;
|
|
14
|
+
file?: string;
|
|
15
|
+
citation?: string;
|
|
16
|
+
expression?: string;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface QueryProofDiagnostic {
|
|
21
|
+
kind: QueryProofFailure['kind'] | 'residual-denied' | 'no-rule';
|
|
22
|
+
/** Rejected rules, in source order. None were evaluated against stored rows. */
|
|
23
|
+
failures: QueryProofFailure[];
|
|
24
|
+
/** Complete query identity, separate from the conservative proof projection. */
|
|
25
|
+
query?: unknown;
|
|
26
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { AiEvidence } from '../internal/ai-evidence.js';
|
|
2
|
+
|
|
3
|
+
/** A cumulative execution snapshot. Its request ID survives lifecycle updates. */
|
|
4
|
+
export interface RequestObservation {
|
|
5
|
+
readonly id: string;
|
|
6
|
+
readonly startedAt: number;
|
|
7
|
+
readonly endedAt?: number;
|
|
8
|
+
readonly status: 'pending' | 'completed' | 'failed' | 'cancelled' | 'interrupted';
|
|
9
|
+
readonly ai?: AiEvidence;
|
|
10
|
+
readonly response?: { readonly text: string; readonly truncated: boolean };
|
|
11
|
+
readonly error?: { readonly code: string };
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/** Consistent execution labels for retained host and page observations. */
|
|
15
|
+
export function requestStatusLabel(status: string): string {
|
|
16
|
+
switch (status) {
|
|
17
|
+
case 'pending': return 'In progress';
|
|
18
|
+
case 'completed': return 'Completed';
|
|
19
|
+
case 'failed': return 'Failed';
|
|
20
|
+
case 'cancelled': return 'Cancelled';
|
|
21
|
+
case 'interrupted': return 'Interrupted';
|
|
22
|
+
case 'closed': return 'Closed';
|
|
23
|
+
default: return 'Not recorded';
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export type RuleScalar = string | number | boolean | null;
|
|
2
|
+
|
|
3
|
+
interface RuleCheckLocation {
|
|
4
|
+
expression: string;
|
|
5
|
+
parent: number | null;
|
|
6
|
+
operator?: string;
|
|
7
|
+
kind?: string;
|
|
8
|
+
helper?: string;
|
|
9
|
+
binding?: string;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export type RuleCheck = RuleCheckLocation & (
|
|
13
|
+
| { state: 'value'; value: RuleScalar }
|
|
14
|
+
| { state: 'error'; error: string }
|
|
15
|
+
| { state: 'skipped' | 'unavailable' }
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
/** Bounded evidence from the evaluation that handled a request; never a replay. */
|
|
19
|
+
export interface RulesEvidence {
|
|
20
|
+
version: string;
|
|
21
|
+
scope: 'request' | 'query-residual';
|
|
22
|
+
decision: 'ALLOW' | 'DENY' | 'UNSUPPORTED';
|
|
23
|
+
truncated: boolean;
|
|
24
|
+
rules: Array<{
|
|
25
|
+
expression: string;
|
|
26
|
+
verdict: 'ALLOW' | 'DENY' | 'ERROR' | 'UNSUPPORTED';
|
|
27
|
+
line?: number;
|
|
28
|
+
path?: string;
|
|
29
|
+
error?: string;
|
|
30
|
+
checks: RuleCheck[];
|
|
31
|
+
}>;
|
|
32
|
+
paths: Array<{ path: string; matched: boolean; line?: number }>;
|
|
33
|
+
queryProof?: {
|
|
34
|
+
kind: string;
|
|
35
|
+
failures: Array<{ reason: string; expression?: string; line?: number }>;
|
|
36
|
+
};
|
|
37
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The shape one service declares so the sandbox core knows what that service
|
|
3
|
+
* puts on the event stream.
|
|
4
|
+
*
|
|
5
|
+
* A record is authored next to the service it describes
|
|
6
|
+
* (`packages/pyric/src/<surface>/events.ts`), the way one tool method is one
|
|
7
|
+
* record file. The sandbox core derives the service union and each service's
|
|
8
|
+
* operation enum from those declarations rather than restating them, so a
|
|
9
|
+
* service cannot emit an operation it never declared and cannot be added to
|
|
10
|
+
* the stream vocabulary without declaring one.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
/** What a service event's `path` addresses, in that service's own scheme. */
|
|
14
|
+
export interface ServiceEventTarget {
|
|
15
|
+
/** The addressing scheme's own name for the target, e.g. `uid`, `fullPath`. */
|
|
16
|
+
readonly name: string;
|
|
17
|
+
/** What the target names, for a consumer rendering the event. */
|
|
18
|
+
readonly description: string;
|
|
19
|
+
/** Whether every operation this service emits carries a target. */
|
|
20
|
+
readonly always: boolean;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/** One service's declaration of its slice of the event stream. */
|
|
24
|
+
export interface ServiceEventRecord<
|
|
25
|
+
Service extends string = string,
|
|
26
|
+
Operation extends string = string,
|
|
27
|
+
> {
|
|
28
|
+
/** The service name that appears on the event and in its provenance. */
|
|
29
|
+
readonly service: Service;
|
|
30
|
+
/** Every operation this service emits, in no significant order. */
|
|
31
|
+
readonly operations: readonly Operation[];
|
|
32
|
+
/** What the event's `path` addresses. */
|
|
33
|
+
readonly target: ServiceEventTarget;
|
|
34
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Every service's event declaration, in one place, so the sandbox core can
|
|
3
|
+
* derive the stream's vocabulary instead of restating it.
|
|
4
|
+
*
|
|
5
|
+
* Why static imports rather than a registry the capabilities register into.
|
|
6
|
+
* The operation enums have to exist as types: `ServiceMutationEvent.op` is
|
|
7
|
+
* derived from them, and a value pushed into a registry at module load carries
|
|
8
|
+
* no type a `.d.ts` can name. A registry would also make the vocabulary depend
|
|
9
|
+
* on which surfaces a bundle happened to load, so the same event would be
|
|
10
|
+
* well-typed in one entry point and untyped in another. These imports reach
|
|
11
|
+
* six leaf files that declare data and import nothing but the record type, so
|
|
12
|
+
* the edge costs the central runtime no capability code.
|
|
13
|
+
*/
|
|
14
|
+
import { AI_EVENT_RECORD } from '../../ai/events.js';
|
|
15
|
+
import { AUTH_EVENT_RECORD } from '../../auth/events.js';
|
|
16
|
+
import { RTDB_EVENT_RECORD } from '../../database/events.js';
|
|
17
|
+
import { FUNCTIONS_EVENT_RECORD } from '../../functions/events.js';
|
|
18
|
+
import { MESSAGING_EVENT_RECORD } from '../../messaging/events.js';
|
|
19
|
+
import { STORAGE_EVENT_RECORD } from '../../storage/events.js';
|
|
20
|
+
import type { ServiceEventRecord } from './service-event-record.js';
|
|
21
|
+
|
|
22
|
+
/** Keyed by the service name each record declares. */
|
|
23
|
+
export const SERVICE_EVENT_RECORDS = {
|
|
24
|
+
auth: AUTH_EVENT_RECORD,
|
|
25
|
+
storage: STORAGE_EVENT_RECORD,
|
|
26
|
+
rtdb: RTDB_EVENT_RECORD,
|
|
27
|
+
messaging: MESSAGING_EVENT_RECORD,
|
|
28
|
+
ai: AI_EVENT_RECORD,
|
|
29
|
+
functions: FUNCTIONS_EVENT_RECORD,
|
|
30
|
+
} as const satisfies Record<string, ServiceEventRecord>;
|
|
31
|
+
|
|
32
|
+
/** Every service that emits the cross-service mutation envelope. */
|
|
33
|
+
export type MutationEventService = keyof typeof SERVICE_EVENT_RECORDS;
|
|
34
|
+
|
|
35
|
+
/** The operations one service declared. */
|
|
36
|
+
export type ServiceEventOperation<Service extends MutationEventService> =
|
|
37
|
+
(typeof SERVICE_EVENT_RECORDS)[Service]['operations'][number];
|
|
38
|
+
|
|
39
|
+
/** Every declared service name, as a runtime list. */
|
|
40
|
+
export const MUTATION_EVENT_SERVICES = Object.keys(
|
|
41
|
+
SERVICE_EVENT_RECORDS,
|
|
42
|
+
) as MutationEventService[];
|