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 { EventHistory, type EventHistoryLimits } from './event-history.js';
|
|
1
2
|
/**
|
|
2
3
|
* Internal `Sandbox` implementation — backs the public interface from
|
|
3
4
|
* `/app` and exposes the hook (`getEnv`) that other in-package modules
|
|
@@ -19,6 +20,7 @@
|
|
|
19
20
|
*/
|
|
20
21
|
|
|
21
22
|
import { LocalEnvironment } from '../../firestore/sandbox/local-environment.js';
|
|
23
|
+
import { SandboxClock, SANDBOX_CLOCK } from '../clock.js';
|
|
22
24
|
import type { AuthState } from '../types/auth-state.js';
|
|
23
25
|
import type { SandboxContext } from '../types/context.js';
|
|
24
26
|
import { SandboxError } from '../types/errors.js';
|
|
@@ -31,6 +33,7 @@ import type {
|
|
|
31
33
|
SandboxOperationEvent,
|
|
32
34
|
SandboxRuntimeErrorEvent,
|
|
33
35
|
ServiceMutationEvent,
|
|
36
|
+
ServiceMutationEventFields,
|
|
34
37
|
SessionBoundaryEvent,
|
|
35
38
|
} from '../types/events.js';
|
|
36
39
|
import type { PersistableService, SandboxSnapshot } from '../types/persistence.js';
|
|
@@ -89,8 +92,8 @@ export class SandboxImpl implements LocalSandbox {
|
|
|
89
92
|
/** Append-only history of every SandboxEvent emitted on this sandbox.
|
|
90
93
|
* Cleared on `reset()` AFTER the session_boundary event is appended,
|
|
91
94
|
* so the boundary is the last entry of the old session's history.
|
|
92
|
-
*
|
|
93
|
-
private eventHistory:
|
|
95
|
+
* Hosted adapters may bound observation retention; direct SDK roots retain full history. */
|
|
96
|
+
private readonly eventHistory: EventHistory;
|
|
94
97
|
|
|
95
98
|
/** Ambient provenance for the current {@link runWithProvenance} window
|
|
96
99
|
* (undefined outside any window). Purely synchronous — set on entry,
|
|
@@ -108,6 +111,17 @@ export class SandboxImpl implements LocalSandbox {
|
|
|
108
111
|
/** Subscribers to currentUser changes. Stable across reset() and
|
|
109
112
|
* dispose() the same way `eventSubs` is — dispose clears them. */
|
|
110
113
|
private currentUserSubs = new Set<(user: AuthState) => void>();
|
|
114
|
+
private readonly documentChanges = new Set<(path: string | null) => void>();
|
|
115
|
+
|
|
116
|
+
/** Persistence tracks mutations independently of retained events and SDK transport. */
|
|
117
|
+
onDocumentChange(callback: (path: string | null) => void): () => void {
|
|
118
|
+
this.documentChanges.add(callback);
|
|
119
|
+
return () => { this.documentChanges.delete(callback); };
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
private readonly documentChanged = (path: string | null): void => {
|
|
123
|
+
for (const callback of this.documentChanges) callback(path);
|
|
124
|
+
};
|
|
111
125
|
|
|
112
126
|
/** Persistence controller. Null until `enablePersistence` is called.
|
|
113
127
|
* Survives `reset()` so the next write re-flushes the empty state;
|
|
@@ -144,14 +158,28 @@ export class SandboxImpl implements LocalSandbox {
|
|
|
144
158
|
private _onServiceRegistered: ((name: string, hooks: PersistableService) => void) | null = null;
|
|
145
159
|
private _onServiceUnregistered: ((name: string) => void) | null = null;
|
|
146
160
|
|
|
147
|
-
|
|
161
|
+
/**
|
|
162
|
+
* The sandbox's one source of time. Handed to every service on this sandbox
|
|
163
|
+
* so a `serverTimestamp()`, a `request.time`, and a token's `iat` minted in
|
|
164
|
+
* the same operation agree. Survives `reset()`: a pinned instant belongs to
|
|
165
|
+
* the session, not to the data. Reached from outside through `getClock`.
|
|
166
|
+
*/
|
|
167
|
+
readonly clock: SandboxClock;
|
|
168
|
+
/** The cross-module-instance key `getClock` reads. See `sandbox/clock.ts`. */
|
|
169
|
+
declare readonly [SANDBOX_CLOCK]: SandboxClock;
|
|
170
|
+
|
|
171
|
+
private constructor(env: LocalEnvironment, clock: SandboxClock, historyLimits?: EventHistoryLimits) {
|
|
172
|
+
this.eventHistory = new EventHistory(historyLimits);
|
|
148
173
|
this._env = env;
|
|
174
|
+
this.clock = clock;
|
|
175
|
+
Object.defineProperty(this, SANDBOX_CLOCK, { value: clock, enumerable: false });
|
|
149
176
|
this.attachToEnv();
|
|
150
177
|
}
|
|
151
178
|
|
|
152
179
|
/** Factory used by `initializeSandbox`. */
|
|
153
|
-
static createRoot(): SandboxImpl {
|
|
154
|
-
|
|
180
|
+
static createRoot(historyLimits?: EventHistoryLimits): SandboxImpl {
|
|
181
|
+
const clock = new SandboxClock();
|
|
182
|
+
return new SandboxImpl(new LocalEnvironment(clock), clock, historyLimits);
|
|
155
183
|
}
|
|
156
184
|
|
|
157
185
|
/**
|
|
@@ -174,6 +202,7 @@ export class SandboxImpl implements LocalSandbox {
|
|
|
174
202
|
* through {@link emit}. Refreshed on `reset()` after the env swap.
|
|
175
203
|
*/
|
|
176
204
|
private attachToEnv(): void {
|
|
205
|
+
this.envUnsubs.push(this._env.onStateChange(this.documentChanged));
|
|
177
206
|
this.envUnsubs.push(
|
|
178
207
|
this._env.onRequest((event) => {
|
|
179
208
|
// RequestEvent already carries `kind: 'request'` from buildRequestEvent.
|
|
@@ -207,7 +236,7 @@ export class SandboxImpl implements LocalSandbox {
|
|
|
207
236
|
const ev: ListenerLifecycleEvent = {
|
|
208
237
|
kind: 'listener_errored',
|
|
209
238
|
id: makeSandboxEventId(),
|
|
210
|
-
at:
|
|
239
|
+
at: this.clock.now(),
|
|
211
240
|
listenerId,
|
|
212
241
|
target:
|
|
213
242
|
target.kind === 'doc'
|
|
@@ -271,16 +300,19 @@ export class SandboxImpl implements LocalSandbox {
|
|
|
271
300
|
* the raw fan-out + history append it wraps.
|
|
272
301
|
*/
|
|
273
302
|
private dispatch(event: SandboxEvent): void {
|
|
303
|
+
event = { ...event, observedAt: Date.now() };
|
|
274
304
|
// Append to history unconditionally — consumers that call
|
|
275
305
|
// sandbox.history() expect every event the sandbox saw, regardless
|
|
276
306
|
// of whether onEvent subscribers were attached at emit time.
|
|
277
|
-
this.eventHistory.
|
|
307
|
+
this.eventHistory.append(event);
|
|
278
308
|
this.dispatchedCount++;
|
|
279
|
-
|
|
309
|
+
const hasNoSubscribers = this.eventSubs.size === 0;
|
|
310
|
+
if (hasNoSubscribers) return;
|
|
280
311
|
for (const cb of this.eventSubs) {
|
|
281
312
|
try {
|
|
282
313
|
const result = cb(event) as unknown;
|
|
283
|
-
|
|
314
|
+
const isAsyncResult = result !== null && result !== undefined && typeof (result as { then?: unknown }).then === 'function';
|
|
315
|
+
if (isAsyncResult) {
|
|
284
316
|
(result as Promise<unknown>).catch(() => { /* swallow */ });
|
|
285
317
|
}
|
|
286
318
|
} catch { /* swallow — observational */ }
|
|
@@ -320,7 +352,7 @@ export class SandboxImpl implements LocalSandbox {
|
|
|
320
352
|
* `dispose()` leaves the boundary as the final entry.
|
|
321
353
|
*/
|
|
322
354
|
history(): SandboxEvent[] {
|
|
323
|
-
return
|
|
355
|
+
return this.eventHistory.snapshot();
|
|
324
356
|
}
|
|
325
357
|
|
|
326
358
|
/**
|
|
@@ -344,9 +376,19 @@ export class SandboxImpl implements LocalSandbox {
|
|
|
344
376
|
* interleave after live ones. Returns the number of events primed.
|
|
345
377
|
*/
|
|
346
378
|
primeEventHistory(events: readonly SandboxEvent[]): number {
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
379
|
+
const hasHistory = this.eventHistory.length > 0;
|
|
380
|
+
const isEmpty = events.length === 0;
|
|
381
|
+
if (hasHistory) return 0;
|
|
382
|
+
if (isEmpty) return 0;
|
|
383
|
+
for (const event of events) {
|
|
384
|
+
const unfinished = event.kind === 'operation' && event.observation?.status === 'pending';
|
|
385
|
+
if (unfinished) {
|
|
386
|
+
const observation: NonNullable<SandboxOperationEvent['observation']> = {
|
|
387
|
+
...event.observation!, status: 'interrupted', error: { code: 'host-restarted' },
|
|
388
|
+
};
|
|
389
|
+
this.eventHistory.append({ ...event, observation });
|
|
390
|
+
} else this.eventHistory.append(event);
|
|
391
|
+
}
|
|
350
392
|
return events.length;
|
|
351
393
|
}
|
|
352
394
|
|
|
@@ -371,7 +413,7 @@ export class SandboxImpl implements LocalSandbox {
|
|
|
371
413
|
const boundary: SessionBoundaryEvent = {
|
|
372
414
|
kind: 'session_boundary',
|
|
373
415
|
id: makeSandboxEventId(),
|
|
374
|
-
at:
|
|
416
|
+
at: this.clock.now(),
|
|
375
417
|
phase: 'reset',
|
|
376
418
|
priorOpCount: this.dispatchedCount,
|
|
377
419
|
};
|
|
@@ -379,12 +421,13 @@ export class SandboxImpl implements LocalSandbox {
|
|
|
379
421
|
// The boundary is now the last entry in eventHistory; clear the
|
|
380
422
|
// history AFTER emit so consumers that took a snapshot before
|
|
381
423
|
// reset() retain the boundary in their copy.
|
|
382
|
-
this.eventHistory
|
|
424
|
+
this.eventHistory.clear();
|
|
383
425
|
|
|
384
426
|
// Clear currentUser to null and notify — a reset wipes everything
|
|
385
427
|
// including signed-in identity. Subscribers see the sign-out so
|
|
386
428
|
// their UI / Firestore handles reflect the post-reset state.
|
|
387
|
-
|
|
429
|
+
const hadCurrentUser = this._currentUser !== null;
|
|
430
|
+
if (hadCurrentUser) {
|
|
388
431
|
this._currentUser = null;
|
|
389
432
|
this.notifyCurrentUserSubs(null);
|
|
390
433
|
}
|
|
@@ -395,8 +438,9 @@ export class SandboxImpl implements LocalSandbox {
|
|
|
395
438
|
for (const unsub of this.envUnsubs) unsub();
|
|
396
439
|
this.envUnsubs = [];
|
|
397
440
|
this._env.dispose();
|
|
398
|
-
this._env = new LocalEnvironment();
|
|
441
|
+
this._env = new LocalEnvironment(this.clock);
|
|
399
442
|
this.attachToEnv();
|
|
443
|
+
this.documentChanged(null);
|
|
400
444
|
}
|
|
401
445
|
|
|
402
446
|
async resetAll(): Promise<{ errors: string[] }> {
|
|
@@ -433,7 +477,7 @@ export class SandboxImpl implements LocalSandbox {
|
|
|
433
477
|
const boundary: SessionBoundaryEvent = {
|
|
434
478
|
kind: 'session_boundary',
|
|
435
479
|
id: makeSandboxEventId(),
|
|
436
|
-
at:
|
|
480
|
+
at: this.clock.now(),
|
|
437
481
|
phase: 'dispose',
|
|
438
482
|
priorOpCount: this.dispatchedCount,
|
|
439
483
|
};
|
|
@@ -460,6 +504,7 @@ export class SandboxImpl implements LocalSandbox {
|
|
|
460
504
|
// subscriptions on it would leak.
|
|
461
505
|
this.eventSubs.clear();
|
|
462
506
|
this.currentUserSubs.clear();
|
|
507
|
+
this.documentChanges.clear();
|
|
463
508
|
}
|
|
464
509
|
|
|
465
510
|
snapshot(): SandboxSnapshot {
|
|
@@ -736,18 +781,14 @@ export function primeEventHistory(
|
|
|
736
781
|
* their activity lands on the same stream — e.g.
|
|
737
782
|
* `emitSandboxEvent(sandbox, userCreatedEvent, { service: 'auth' })`.
|
|
738
783
|
*
|
|
739
|
-
*
|
|
740
|
-
*
|
|
741
|
-
*
|
|
742
|
-
*
|
|
743
|
-
*
|
|
744
|
-
*
|
|
745
|
-
*
|
|
746
|
-
*
|
|
747
|
-
* - rtdb: set / update / remove / transaction-commit
|
|
748
|
-
* (`RtdbBackend` in `pyric/database`, via the modular surface).
|
|
749
|
-
* Firestore still rides the env→sandbox fan-out and is unchanged. See
|
|
750
|
-
* the design rationale.
|
|
784
|
+
* Every non-Firestore service emits here, sharing one additive union variant,
|
|
785
|
+
* {@link ServiceMutationEvent} (`kind: 'service_mutation'`), built via
|
|
786
|
+
* {@link makeServiceMutationEvent}, rather than bending into Firestore's
|
|
787
|
+
* rule-eval-shaped `request`/`write` kinds. Which services those are, and
|
|
788
|
+
* which operations each of them emits, is declared once per service in
|
|
789
|
+
* `<surface>/events.ts` and derived into this variant's types by
|
|
790
|
+
* `sandbox/types/service-event-records.ts`. Firestore still rides the
|
|
791
|
+
* env→sandbox fan-out and is unchanged.
|
|
751
792
|
*
|
|
752
793
|
* Throws if `sandbox` wasn't produced by `initializeSandbox()` (same guard
|
|
753
794
|
* as {@link getInternalEnv}).
|
|
@@ -767,10 +808,14 @@ export function emitSandboxEvent(
|
|
|
767
808
|
}
|
|
768
809
|
|
|
769
810
|
/**
|
|
770
|
-
* Build a {@link ServiceMutationEvent} with a fresh `id`
|
|
771
|
-
*
|
|
772
|
-
*
|
|
773
|
-
*
|
|
811
|
+
* Build a {@link ServiceMutationEvent} with a fresh `id` minted from the same
|
|
812
|
+
* monotonic counter Firestore events use, so a non-Firestore service
|
|
813
|
+
* (auth/storage/rtdb) doesn't have to re-implement id minting or worry about
|
|
814
|
+
* colliding with the Firestore stream's ids.
|
|
815
|
+
*
|
|
816
|
+
* `at` is the caller's, and it is required: the instant an event carries is the
|
|
817
|
+
* sandbox clock's, which only the calling service can resolve, and a default
|
|
818
|
+
* here would silently stamp the wall clock onto a sandbox running virtual time.
|
|
774
819
|
*
|
|
775
820
|
* The returned event is NOT yet dispatched; hand it to
|
|
776
821
|
* {@link emitSandboxEvent} (which stamps provenance and lands it on the
|
|
@@ -778,60 +823,61 @@ export function emitSandboxEvent(
|
|
|
778
823
|
* site is `emitSandboxEvent(sandbox, makeServiceMutationEvent({ ... }), { service })`.
|
|
779
824
|
*/
|
|
780
825
|
export function makeServiceMutationEvent(
|
|
781
|
-
fields:
|
|
826
|
+
fields: ServiceMutationEventFields,
|
|
782
827
|
): ServiceMutationEvent {
|
|
828
|
+
const { at, ...rest } = fields;
|
|
783
829
|
return {
|
|
784
830
|
kind: 'service_mutation',
|
|
785
831
|
id: makeSandboxEventId(),
|
|
786
|
-
at
|
|
787
|
-
...
|
|
832
|
+
at,
|
|
833
|
+
...rest,
|
|
788
834
|
};
|
|
789
835
|
}
|
|
790
836
|
|
|
791
837
|
export function makeSandboxOperationEvent(
|
|
792
|
-
fields: Omit<SandboxOperationEvent, 'kind' | 'id'
|
|
838
|
+
fields: Omit<SandboxOperationEvent, 'kind' | 'id'>,
|
|
793
839
|
): SandboxOperationEvent {
|
|
794
840
|
const { at, ...rest } = fields;
|
|
795
841
|
return {
|
|
796
842
|
kind: 'operation',
|
|
797
843
|
id: makeSandboxEventId(),
|
|
798
|
-
at
|
|
844
|
+
at,
|
|
799
845
|
...rest,
|
|
800
846
|
};
|
|
801
847
|
}
|
|
802
848
|
|
|
803
849
|
export function makeSandboxCommitEvent(
|
|
804
|
-
fields: Omit<SandboxCommitEvent, 'kind' | 'id'
|
|
850
|
+
fields: Omit<SandboxCommitEvent, 'kind' | 'id'>,
|
|
805
851
|
): SandboxCommitEvent {
|
|
806
852
|
const { at, ...rest } = fields;
|
|
807
853
|
return {
|
|
808
854
|
kind: 'commit',
|
|
809
855
|
id: makeSandboxEventId(),
|
|
810
|
-
at
|
|
856
|
+
at,
|
|
811
857
|
...rest,
|
|
812
858
|
};
|
|
813
859
|
}
|
|
814
860
|
|
|
815
861
|
export function makeSandboxListenerEvent(
|
|
816
|
-
fields: Omit<SandboxListenerEvent, 'kind' | 'id'
|
|
862
|
+
fields: Omit<SandboxListenerEvent, 'kind' | 'id'>,
|
|
817
863
|
): SandboxListenerEvent {
|
|
818
864
|
const { at, ...rest } = fields;
|
|
819
865
|
return {
|
|
820
866
|
kind: 'listener',
|
|
821
867
|
id: makeSandboxEventId(),
|
|
822
|
-
at
|
|
868
|
+
at,
|
|
823
869
|
...rest,
|
|
824
870
|
};
|
|
825
871
|
}
|
|
826
872
|
|
|
827
873
|
export function makeSandboxRuntimeErrorEvent(
|
|
828
|
-
fields: Omit<SandboxRuntimeErrorEvent, 'kind' | 'id'
|
|
874
|
+
fields: Omit<SandboxRuntimeErrorEvent, 'kind' | 'id'>,
|
|
829
875
|
): SandboxRuntimeErrorEvent {
|
|
830
876
|
const { at, ...rest } = fields;
|
|
831
877
|
return {
|
|
832
878
|
kind: 'runtime_error',
|
|
833
879
|
id: makeSandboxEventId(),
|
|
834
|
-
at
|
|
880
|
+
at,
|
|
835
881
|
...rest,
|
|
836
882
|
};
|
|
837
883
|
}
|
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
import type { AiEvidence } from './ai-evidence.js';
|
|
2
|
+
import { firestoreReadUsage, databaseReadUsage, firestoreWriteUsage, type UsageEvidence } from './usage-evidence.js';
|
|
3
|
+
import type { ListenerOwner } from '../types/events.js';
|
|
4
|
+
import type { ServiceIndexQuery } from '../../rules/indexes/service-query.js';
|
|
5
|
+
import { sdkObservation, type SdkObservation } from './sdk-observation.js';
|
|
6
|
+
|
|
7
|
+
/** Page-side SDK evidence. Transport messages are deliberately not deliveries. */
|
|
8
|
+
export interface SdkActivitySource {
|
|
9
|
+
readonly service: 'firestore' | 'database' | 'storage' | 'ai';
|
|
10
|
+
readonly target: string;
|
|
11
|
+
/** Canonical adapter descriptor, used only for identity, never exposed in records. */
|
|
12
|
+
readonly key: string;
|
|
13
|
+
readonly isQuery?: boolean;
|
|
14
|
+
readonly indexQuery?: ServiceIndexQuery;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export interface SdkActivityRecord {
|
|
18
|
+
readonly response?: Readonly<{ text: string; truncated: boolean }>;
|
|
19
|
+
readonly ai?: Readonly<AiEvidence>;
|
|
20
|
+
readonly id: string;
|
|
21
|
+
readonly appId: string;
|
|
22
|
+
readonly sourceId: string;
|
|
23
|
+
readonly service: SdkActivitySource['service'];
|
|
24
|
+
readonly target: string;
|
|
25
|
+
readonly isQuery: boolean;
|
|
26
|
+
readonly indexQuery?: ServiceIndexQuery;
|
|
27
|
+
readonly method: string;
|
|
28
|
+
readonly kind: 'operation' | 'subscription';
|
|
29
|
+
readonly status: 'pending' | 'active' | 'completed' | 'failed' | 'closed';
|
|
30
|
+
readonly startedAt: number;
|
|
31
|
+
readonly endedAt?: number;
|
|
32
|
+
readonly deliveryCount: number;
|
|
33
|
+
readonly lastDeliveryAt?: number;
|
|
34
|
+
readonly lastProgressAt?: number;
|
|
35
|
+
readonly owners: readonly ListenerOwner[];
|
|
36
|
+
/** Optional bridge identity. It is not the logical activity id. */
|
|
37
|
+
readonly transportId?: string;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export interface SdkActivityHandle {
|
|
41
|
+
readonly id: string;
|
|
42
|
+
/** Call immediately before handing a successful result to application code. */
|
|
43
|
+
delivered(snapshot?: unknown, usage?: UsageEvidence): void;
|
|
44
|
+
/** A task callback render signal, never a result or rate observation. */
|
|
45
|
+
progress(): void;
|
|
46
|
+
complete(usage?: UsageEvidence): void;
|
|
47
|
+
fail(usage?: UsageEvidence): void;
|
|
48
|
+
ai(detail: AiEvidence): void;
|
|
49
|
+
response(value: unknown): void;
|
|
50
|
+
close(): void;
|
|
51
|
+
transport(id: string): void;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export interface SdkActivityEvent {
|
|
55
|
+
readonly phase: 'start' | 'delivery' | 'end' | 'remove' | 'transport' | 'progress';
|
|
56
|
+
readonly record: SdkActivityRecord;
|
|
57
|
+
readonly usage?: UsageEvidence;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
interface AppIdentity {
|
|
61
|
+
id: string;
|
|
62
|
+
sources: Map<string, { id: string; uses: number }>;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Lifecycle only: no DOM, payloads, callback wrappers, Promise chains, or
|
|
67
|
+
* backend events. Adapters report at their existing public execution boundary.
|
|
68
|
+
*/
|
|
69
|
+
export function createSdkActivityJournal(options: {
|
|
70
|
+
now?: () => number;
|
|
71
|
+
/** Independent of the sandbox clock and wall-clock adjustments. */
|
|
72
|
+
monotonicNow?: () => number;
|
|
73
|
+
retentionMs?: number;
|
|
74
|
+
maxCompleted?: number;
|
|
75
|
+
/** Protect completed deliveries until the page's render window has elapsed. */
|
|
76
|
+
correlationWindowMs?: number;
|
|
77
|
+
} = {}) {
|
|
78
|
+
const now = options.now ?? Date.now;
|
|
79
|
+
const monotonicNow = options.monotonicNow ?? (() => performance.now());
|
|
80
|
+
const correlationWindowMs = options.correlationWindowMs ?? 250;
|
|
81
|
+
const retentionMs = Math.max(options.retentionMs ?? 30_000, correlationWindowMs);
|
|
82
|
+
const maxCompleted = options.maxCompleted ?? 100;
|
|
83
|
+
const apps = new WeakMap<object, AppIdentity>();
|
|
84
|
+
const records = new Map<string, SdkActivityRecord>();
|
|
85
|
+
const releaseSources = new Map<string, () => void>();
|
|
86
|
+
const subscribers = new Set<(event: SdkActivityEvent) => void>();
|
|
87
|
+
const observers = new Set<(observation: SdkObservation) => void>();
|
|
88
|
+
const observations: Array<{ event: SdkObservation; observers: Array<(event: SdkObservation) => void> }> = [];
|
|
89
|
+
let observationSequence = 0;
|
|
90
|
+
let observing = false;
|
|
91
|
+
let appSerial = 0;
|
|
92
|
+
let sourceSerial = 0;
|
|
93
|
+
let activitySerial = 0;
|
|
94
|
+
let timer: ReturnType<typeof setTimeout> | undefined;
|
|
95
|
+
let disposed = false;
|
|
96
|
+
let registrationId: string | undefined;
|
|
97
|
+
let silenced = false;
|
|
98
|
+
let pruning = false;
|
|
99
|
+
|
|
100
|
+
function notify(phase: SdkActivityEvent['phase'], record: SdkActivityRecord, usage?: UsageEvidence): void {
|
|
101
|
+
const observation = sdkObservation({ phase, record, usage }, now(), monotonicNow(), observationSequence + 1);
|
|
102
|
+
if (observation) {
|
|
103
|
+
observationSequence++;
|
|
104
|
+
observations.push({ event: observation, observers: [...observers] });
|
|
105
|
+
}
|
|
106
|
+
// An observer may synchronously cause another SDK call. Finish delivering
|
|
107
|
+
// this observation before delivering the next to any other observer.
|
|
108
|
+
if (!observing) {
|
|
109
|
+
observing = true;
|
|
110
|
+
try {
|
|
111
|
+
while (observations.length) {
|
|
112
|
+
const next = observations.shift()!;
|
|
113
|
+
for (const observer of next.observers) {
|
|
114
|
+
try { observer(next.event); } catch { /* Diagnostics cannot alter SDK behavior. */ }
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
} finally {
|
|
118
|
+
observing = false;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
for (const subscriber of [...subscribers]) {
|
|
122
|
+
try { subscriber({ phase, record }); } catch { /* Diagnostics cannot alter SDK behavior. */ }
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
function remove(record: SdkActivityRecord): void {
|
|
127
|
+
if (!records.delete(record.id)) return;
|
|
128
|
+
releaseSources.get(record.id)?.();
|
|
129
|
+
releaseSources.delete(record.id);
|
|
130
|
+
notify('remove', record);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
const retainedAt = (record: SdkActivityRecord) => Math.max(record.endedAt ?? 0, record.lastProgressAt ?? 0);
|
|
134
|
+
function prune(): void {
|
|
135
|
+
if (pruning) return;
|
|
136
|
+
pruning = true;
|
|
137
|
+
try {
|
|
138
|
+
clearTimeout(timer);
|
|
139
|
+
timer = undefined;
|
|
140
|
+
const ended = [...records.values()].filter(record => record.endedAt !== undefined)
|
|
141
|
+
.sort((a, b) => retainedAt(a) - retainedAt(b));
|
|
142
|
+
const expiredBefore = now() - retentionMs;
|
|
143
|
+
while (ended.length && (
|
|
144
|
+
retainedAt(ended[0]) <= expiredBefore
|
|
145
|
+
|| (ended.length > maxCompleted && retainedAt(ended[0]) <= now() - correlationWindowMs)
|
|
146
|
+
)) {
|
|
147
|
+
remove(ended.shift()!);
|
|
148
|
+
}
|
|
149
|
+
if (ended.length && !disposed) {
|
|
150
|
+
const delay = ended.length > maxCompleted ? correlationWindowMs : retentionMs;
|
|
151
|
+
timer = setTimeout(prune, Math.max(1, retainedAt(ended[0]) + delay - now()));
|
|
152
|
+
// Retention must not keep a Node process alive.
|
|
153
|
+
if (typeof timer === 'object' && 'unref' in timer) timer.unref();
|
|
154
|
+
}
|
|
155
|
+
} finally { pruning = false; }
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
return {
|
|
159
|
+
/** Host-side mirror calls implement transport, not another public SDK call. */
|
|
160
|
+
silence<T>(execute: () => T): T {
|
|
161
|
+
const previous = silenced;
|
|
162
|
+
silenced = true;
|
|
163
|
+
try { return execute(); } finally { silenced = previous; }
|
|
164
|
+
},
|
|
165
|
+
/** Synchronous registration scope, solely to join backend attach evidence. */
|
|
166
|
+
registering<T>(activity: SdkActivityHandle, register: () => T): T {
|
|
167
|
+
const previous = registrationId;
|
|
168
|
+
registrationId = activity.id;
|
|
169
|
+
try { return register(); } finally { registrationId = previous; }
|
|
170
|
+
},
|
|
171
|
+
registrationId(): string | undefined { return registrationId; },
|
|
172
|
+
begin(input: {
|
|
173
|
+
app: object;
|
|
174
|
+
source: SdkActivitySource;
|
|
175
|
+
method: string;
|
|
176
|
+
kind: SdkActivityRecord['kind'];
|
|
177
|
+
owners?: readonly ListenerOwner[];
|
|
178
|
+
transportId?: string;
|
|
179
|
+
}): SdkActivityHandle {
|
|
180
|
+
if (disposed || silenced) return {
|
|
181
|
+
id: '', delivered() {}, progress() {}, complete() {}, fail() {}, close() {}, transport() {}, ai() {}, response() {},
|
|
182
|
+
};
|
|
183
|
+
let app = apps.get(input.app);
|
|
184
|
+
if (!app) {
|
|
185
|
+
app = { id: `app-${++appSerial}`, sources: new Map() };
|
|
186
|
+
apps.set(input.app, app);
|
|
187
|
+
}
|
|
188
|
+
const key = JSON.stringify([input.source.service, input.source.key]);
|
|
189
|
+
let source = app.sources.get(key);
|
|
190
|
+
if (!source) {
|
|
191
|
+
source = { id: `${app.id}/source-${++sourceSerial}`, uses: 0 };
|
|
192
|
+
app.sources.set(key, source);
|
|
193
|
+
}
|
|
194
|
+
++source.uses;
|
|
195
|
+
const id = `${app.id}/activity-${++activitySerial}`;
|
|
196
|
+
const record: SdkActivityRecord = Object.freeze({
|
|
197
|
+
id, appId: app.id, sourceId: source.id,
|
|
198
|
+
service: input.source.service, target: input.source.target,
|
|
199
|
+
isQuery: input.source.isQuery ?? false,
|
|
200
|
+
...(input.source.indexQuery ? { indexQuery: structuredClone(input.source.indexQuery) } : {}),
|
|
201
|
+
method: input.method, kind: input.kind,
|
|
202
|
+
status: input.kind === 'operation' ? 'pending' : 'active',
|
|
203
|
+
startedAt: now(), deliveryCount: 0,
|
|
204
|
+
owners: Object.freeze([...(input.owners ?? [])]),
|
|
205
|
+
...(input.transportId === undefined ? {} : { transportId: input.transportId }),
|
|
206
|
+
});
|
|
207
|
+
if (!disposed) {
|
|
208
|
+
records.set(id, record);
|
|
209
|
+
const identity = app;
|
|
210
|
+
const sourceIdentity = source;
|
|
211
|
+
releaseSources.set(id, () => {
|
|
212
|
+
if (--sourceIdentity.uses === 0) identity.sources.delete(key);
|
|
213
|
+
});
|
|
214
|
+
notify('start', record);
|
|
215
|
+
}
|
|
216
|
+
function update(phase: SdkActivityEvent['phase'], patch: Partial<SdkActivityRecord>, usage?: UsageEvidence): void {
|
|
217
|
+
const current = records.get(id);
|
|
218
|
+
if (!current || (current.endedAt !== undefined && !(phase === 'progress' && current.status === 'completed'))) return;
|
|
219
|
+
const next = Object.freeze({ ...current, ...patch });
|
|
220
|
+
records.set(id, next);
|
|
221
|
+
notify(phase, next, usage);
|
|
222
|
+
}
|
|
223
|
+
function end(status: 'completed' | 'failed' | 'closed', usage?: UsageEvidence): void {
|
|
224
|
+
update('end', { status, endedAt: now() }, usage);
|
|
225
|
+
prune();
|
|
226
|
+
}
|
|
227
|
+
return {
|
|
228
|
+
id,
|
|
229
|
+
delivered(snapshot, suppliedUsage) {
|
|
230
|
+
const current = records.get(id);
|
|
231
|
+
if (!current || (current.kind === 'operation' && current.deliveryCount > 0)) return;
|
|
232
|
+
let usage: UsageEvidence;
|
|
233
|
+
try {
|
|
234
|
+
usage = suppliedUsage ?? (current.service === 'firestore'
|
|
235
|
+
? (current.method.endsWith('FromCache') ? { documentReads: 0 } : firestoreReadUsage(snapshot, current.kind === 'subscription', current.deliveryCount === 0))
|
|
236
|
+
: databaseReadUsage(snapshot));
|
|
237
|
+
} catch { usage = { unmeasured: 1 }; }
|
|
238
|
+
update('delivery', { deliveryCount: current.deliveryCount + 1, lastDeliveryAt: now() }, usage);
|
|
239
|
+
},
|
|
240
|
+
progress() { update('progress', { lastProgressAt: now() }); prune(); },
|
|
241
|
+
complete(usage) { end('completed', usage ?? (record.service === 'firestore' ? firestoreWriteUsage(record.method) : undefined)); },
|
|
242
|
+
fail(usage) { end('failed', usage); },
|
|
243
|
+
response(value) {
|
|
244
|
+
try {
|
|
245
|
+
const text = JSON.stringify(value, null, 2);
|
|
246
|
+
if (text !== undefined) update('transport', { response: Object.freeze({ text: text.slice(0, 65536), truncated: text.length > 65536 }) });
|
|
247
|
+
} catch { /* Diagnostics must never break the SDK response. */ }
|
|
248
|
+
},
|
|
249
|
+
ai(detail) { update('transport', { ai: Object.freeze({ ...detail }) }); },
|
|
250
|
+
close() { end('closed'); },
|
|
251
|
+
transport(transportId) { update('transport', { transportId }); },
|
|
252
|
+
};
|
|
253
|
+
},
|
|
254
|
+
records(): readonly SdkActivityRecord[] {
|
|
255
|
+
prune();
|
|
256
|
+
return [...records.values()];
|
|
257
|
+
},
|
|
258
|
+
subscribe(subscriber: (event: SdkActivityEvent) => void): () => void {
|
|
259
|
+
if (!disposed) subscribers.add(subscriber);
|
|
260
|
+
return () => { subscribers.delete(subscriber); };
|
|
261
|
+
},
|
|
262
|
+
/** Live observations, independent of history retention and Flow rendering. */
|
|
263
|
+
observe(observer: (observation: SdkObservation) => void): () => void {
|
|
264
|
+
if (!disposed) observers.add(observer);
|
|
265
|
+
return () => { observers.delete(observer); };
|
|
266
|
+
},
|
|
267
|
+
dispose(): void {
|
|
268
|
+
disposed = true;
|
|
269
|
+
clearTimeout(timer);
|
|
270
|
+
for (const record of [...records.values()]) remove(record);
|
|
271
|
+
subscribers.clear();
|
|
272
|
+
observers.clear();
|
|
273
|
+
},
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
/** Shared by the in-page SDK, bridge adapters, and the page's runtime chip. */
|
|
278
|
+
const JOURNAL_KEY = Symbol.for('pyric.sdk-activity');
|
|
279
|
+
const globalStore = globalThis as {
|
|
280
|
+
[JOURNAL_KEY]?: ReturnType<typeof createSdkActivityJournal>;
|
|
281
|
+
};
|
|
282
|
+
// SDK and runtime bundles may load separate source/dist copies in one realm.
|
|
283
|
+
export const sdkActivity = globalStore[JOURNAL_KEY]
|
|
284
|
+
?? (globalStore[JOURNAL_KEY] = createSdkActivityJournal());
|
|
285
|
+
|
|
286
|
+
/** Return the same snapshot synchronously, without adding a Promise reaction. */
|
|
287
|
+
export function finishSdkRead<T>(activity: SdkActivityHandle, snapshot: T): T {
|
|
288
|
+
activity.delivered(snapshot);
|
|
289
|
+
activity.complete();
|
|
290
|
+
return snapshot;
|
|
291
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { storageActivityCoverage } from '../../storage/activity-coverage.js';
|
|
2
|
+
import type { EventService } from '../types/operation.js';
|
|
3
|
+
import { firestoreActivityCoverage } from '../../firestore/activity-coverage.js';
|
|
4
|
+
import { databaseActivityCoverage } from '../../database/activity-coverage.js';
|
|
5
|
+
|
|
6
|
+
export type SdkMethodCategory = 'read' | 'write' | 'listener';
|
|
7
|
+
export interface SdkMethodCoverage {
|
|
8
|
+
readonly method: string;
|
|
9
|
+
readonly category: SdkMethodCategory;
|
|
10
|
+
}
|
|
11
|
+
// Statically aggregate only service-owned data, never import service executors.
|
|
12
|
+
// This keeps the foundation usable before SDK construction and prevents cycles.
|
|
13
|
+
const services = [{ service: 'ai' as const, read: ['generateContent', 'generateContentStream', 'countTokens'], write: [], listener: [], untrackedMethods: [] }, firestoreActivityCoverage, databaseActivityCoverage, storageActivityCoverage];
|
|
14
|
+
const methods = new Map<EventService, readonly SdkMethodCoverage[]>();
|
|
15
|
+
const untracked = new Map<EventService, readonly string[]>();
|
|
16
|
+
for (const service of services) {
|
|
17
|
+
methods.set(service.service, Object.freeze((['read', 'write', 'listener'] as const).flatMap(category =>
|
|
18
|
+
service[category].map(method => Object.freeze({ method, category })))));
|
|
19
|
+
untracked.set(service.service, Object.freeze([...service.untrackedMethods]));
|
|
20
|
+
}
|
|
21
|
+
const empty = Object.freeze([]);
|
|
22
|
+
/** Explicit public data-operation coverage, not a claim about every SDK API. */
|
|
23
|
+
export function sdkMethodCoverage(service: EventService): readonly SdkMethodCoverage[] {
|
|
24
|
+
return methods.get(service) ?? empty;
|
|
25
|
+
}
|
|
26
|
+
export function sdkUntrackedMethods(service: EventService): readonly string[] {
|
|
27
|
+
return untracked.get(service) ?? empty;
|
|
28
|
+
}
|