@rikalabs/akter 0.1.0-alpha.0
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/CHANGELOG.md +15 -0
- package/LICENSE +202 -0
- package/NOTICE +8 -0
- package/README.md +116 -0
- package/dist/actor/codecs.d.ts +77 -0
- package/dist/actor/codecs.js +87 -0
- package/dist/actor/connections.d.ts +34 -0
- package/dist/actor/connections.js +145 -0
- package/dist/actor/definition.d.ts +893 -0
- package/dist/actor/definition.js +147 -0
- package/dist/actor/descriptor.d.ts +172 -0
- package/dist/actor/descriptor.js +367 -0
- package/dist/actor/handles.d.ts +77 -0
- package/dist/actor/handles.js +265 -0
- package/dist/actor/jobs.d.ts +10 -0
- package/dist/actor/jobs.js +137 -0
- package/dist/actor/layers.d.ts +41 -0
- package/dist/actor/layers.js +177 -0
- package/dist/actor/reads.d.ts +47 -0
- package/dist/actor/reads.js +224 -0
- package/dist/actor/served.d.ts +120 -0
- package/dist/actor/served.js +72 -0
- package/dist/actor/turns.d.ts +13 -0
- package/dist/actor/turns.js +332 -0
- package/dist/actor/workflows.d.ts +16 -0
- package/dist/actor/workflows.js +37 -0
- package/dist/client/calls.d.ts +47 -0
- package/dist/client/calls.js +425 -0
- package/dist/client/clock.d.ts +56 -0
- package/dist/client/clock.js +119 -0
- package/dist/client/fleet-page.d.ts +15 -0
- package/dist/client/fleet-page.js +13 -0
- package/dist/client/fleet.d.ts +29 -0
- package/dist/client/fleet.js +51 -0
- package/dist/client/index.d.ts +17 -0
- package/dist/client/index.js +6 -0
- package/dist/client/make.d.ts +157 -0
- package/dist/client/make.js +221 -0
- package/dist/client/offline/queue.d.ts +118 -0
- package/dist/client/offline/queue.js +292 -0
- package/dist/client/offline/store.d.ts +74 -0
- package/dist/client/offline/store.js +78 -0
- package/dist/client/optimistic.d.ts +57 -0
- package/dist/client/optimistic.js +136 -0
- package/dist/client/report.d.ts +2 -0
- package/dist/client/report.js +8 -0
- package/dist/client/sessions/connection.d.ts +118 -0
- package/dist/client/sessions/connection.js +162 -0
- package/dist/client/sessions/feed.d.ts +42 -0
- package/dist/client/sessions/feed.js +43 -0
- package/dist/client/sessions/sse.d.ts +47 -0
- package/dist/client/sessions/sse.js +112 -0
- package/dist/client/sessions/stream.d.ts +28 -0
- package/dist/client/sessions/stream.js +35 -0
- package/dist/client/sessions/watch.d.ts +34 -0
- package/dist/client/sessions/watch.js +40 -0
- package/dist/client/transport.d.ts +37 -0
- package/dist/client/transport.js +66 -0
- package/dist/contexts/command.d.ts +132 -0
- package/dist/contexts/command.js +20 -0
- package/dist/contexts/connection.d.ts +68 -0
- package/dist/contexts/connection.js +0 -0
- package/dist/contexts/job.d.ts +49 -0
- package/dist/contexts/job.js +0 -0
- package/dist/contexts/workflow.d.ts +147 -0
- package/dist/contexts/workflow.js +22 -0
- package/dist/errors/actor.d.ts +200 -0
- package/dist/errors/actor.js +271 -0
- package/dist/errors/content.d.ts +19 -0
- package/dist/errors/content.js +14 -0
- package/dist/errors/database.d.ts +22 -0
- package/dist/errors/database.js +23 -0
- package/dist/errors/events.d.ts +17 -0
- package/dist/errors/events.js +14 -0
- package/dist/errors/subscription.d.ts +12 -0
- package/dist/errors/subscription.js +8 -0
- package/dist/errors/workflow.d.ts +28 -0
- package/dist/errors/workflow.js +17 -0
- package/dist/handles/actors.d.ts +17 -0
- package/dist/handles/actors.js +7 -0
- package/dist/handles/content.d.ts +59 -0
- package/dist/handles/content.js +36 -0
- package/dist/handles/intents.d.ts +164 -0
- package/dist/handles/intents.js +214 -0
- package/dist/handles/run.d.ts +31 -0
- package/dist/handles/run.js +21 -0
- package/dist/handles/workflow.d.ts +27 -0
- package/dist/handles/workflow.js +23 -0
- package/dist/identity/caller.d.ts +105 -0
- package/dist/identity/caller.js +68 -0
- package/dist/identity/child.d.ts +18 -0
- package/dist/identity/child.js +39 -0
- package/dist/identity/command.d.ts +19 -0
- package/dist/identity/command.js +21 -0
- package/dist/identity/connection.d.ts +24 -0
- package/dist/identity/connection.js +29 -0
- package/dist/identity/content.d.ts +18 -0
- package/dist/identity/content.js +12 -0
- package/dist/identity/digest.d.ts +4 -0
- package/dist/identity/digest.js +5 -0
- package/dist/identity/execution.d.ts +32 -0
- package/dist/identity/execution.js +63 -0
- package/dist/identity/mint.d.ts +51 -0
- package/dist/identity/mint.js +76 -0
- package/dist/identity/version.d.ts +2 -0
- package/dist/identity/version.js +3 -0
- package/dist/index.d.ts +159 -0
- package/dist/index.js +97 -0
- package/dist/members/blob.d.ts +43 -0
- package/dist/members/blob.js +29 -0
- package/dist/members/command.d.ts +109 -0
- package/dist/members/command.js +61 -0
- package/dist/members/connection.d.ts +55 -0
- package/dist/members/connection.js +49 -0
- package/dist/members/event.d.ts +36 -0
- package/dist/members/event.js +24 -0
- package/dist/members/job.d.ts +157 -0
- package/dist/members/job.js +67 -0
- package/dist/members/payload.d.ts +93 -0
- package/dist/members/payload.js +145 -0
- package/dist/members/reducer.d.ts +64 -0
- package/dist/members/reducer.js +27 -0
- package/dist/members/stream.d.ts +36 -0
- package/dist/members/stream.js +14 -0
- package/dist/members/subscription.d.ts +182 -0
- package/dist/members/subscription.js +91 -0
- package/dist/members/workflow.d.ts +99 -0
- package/dist/members/workflow.js +2 -0
- package/dist/policies/access.d.ts +35 -0
- package/dist/policies/access.js +6 -0
- package/dist/policies/command.d.ts +127 -0
- package/dist/policies/command.js +45 -0
- package/dist/policies/job.d.ts +28 -0
- package/dist/policies/job.js +60 -0
- package/dist/policies/schedules.d.ts +33 -0
- package/dist/policies/schedules.js +131 -0
- package/dist/protocol/frames.d.ts +66 -0
- package/dist/protocol/frames.js +55 -0
- package/dist/protocol/inspection.d.ts +807 -0
- package/dist/protocol/inspection.js +243 -0
- package/dist/protocol/wire.d.ts +184 -0
- package/dist/protocol/wire.js +150 -0
- package/dist/runtime/actors.d.ts +155 -0
- package/dist/runtime/actors.js +4 -0
- package/dist/runtime/admission.d.ts +34 -0
- package/dist/runtime/admission.js +72 -0
- package/dist/runtime/adoption/backfill.d.ts +27 -0
- package/dist/runtime/adoption/backfill.js +144 -0
- package/dist/runtime/adoption/enforce.d.ts +55 -0
- package/dist/runtime/adoption/enforce.js +241 -0
- package/dist/runtime/adoption/observe.d.ts +43 -0
- package/dist/runtime/adoption/observe.js +139 -0
- package/dist/runtime/adoption/plan.d.ts +45 -0
- package/dist/runtime/adoption/plan.js +192 -0
- package/dist/runtime/adoption/startup.d.ts +32 -0
- package/dist/runtime/adoption/startup.js +76 -0
- package/dist/runtime/adoption/status.d.ts +23 -0
- package/dist/runtime/adoption/status.js +47 -0
- package/dist/runtime/adoption/target.d.ts +33 -0
- package/dist/runtime/adoption/target.js +49 -0
- package/dist/runtime/connections/holder.d.ts +221 -0
- package/dist/runtime/connections/holder.js +816 -0
- package/dist/runtime/connections/owner.d.ts +263 -0
- package/dist/runtime/connections/owner.js +896 -0
- package/dist/runtime/connections/protocol.d.ts +441 -0
- package/dist/runtime/connections/protocol.js +222 -0
- package/dist/runtime/connections/reads.d.ts +24 -0
- package/dist/runtime/connections/reads.js +19 -0
- package/dist/runtime/connections/streams.d.ts +62 -0
- package/dist/runtime/connections/streams.js +128 -0
- package/dist/runtime/connections/transport.d.ts +40 -0
- package/dist/runtime/connections/transport.js +68 -0
- package/dist/runtime/connections/watch.d.ts +52 -0
- package/dist/runtime/connections/watch.js +159 -0
- package/dist/runtime/content/grant.d.ts +34 -0
- package/dist/runtime/content/grant.js +58 -0
- package/dist/runtime/content/store.d.ts +63 -0
- package/dist/runtime/content/store.js +294 -0
- package/dist/runtime/cron/key.d.ts +2 -0
- package/dist/runtime/cron/key.js +2 -0
- package/dist/runtime/cron/schedule.d.ts +69 -0
- package/dist/runtime/cron/schedule.js +144 -0
- package/dist/runtime/database/bounded.d.ts +43 -0
- package/dist/runtime/database/bounded.js +108 -0
- package/dist/runtime/database/connection.d.ts +8 -0
- package/dist/runtime/database/connection.js +18 -0
- package/dist/runtime/database/coordination.d.ts +19 -0
- package/dist/runtime/database/coordination.js +72 -0
- package/dist/runtime/database/flock.d.ts +10 -0
- package/dist/runtime/database/flock.js +60 -0
- package/dist/runtime/database/gate.d.ts +26 -0
- package/dist/runtime/database/gate.js +54 -0
- package/dist/runtime/database/keepalive.d.ts +11 -0
- package/dist/runtime/database/keepalive.js +22 -0
- package/dist/runtime/database/migrations.d.ts +177 -0
- package/dist/runtime/database/migrations.js +1018 -0
- package/dist/runtime/database/neki/migrations.d.ts +31 -0
- package/dist/runtime/database/neki/migrations.js +276 -0
- package/dist/runtime/database/neki/session.d.ts +23 -0
- package/dist/runtime/database/neki/session.js +31 -0
- package/dist/runtime/database/pglite.d.ts +21 -0
- package/dist/runtime/database/pglite.js +74 -0
- package/dist/runtime/database/replica.d.ts +41 -0
- package/dist/runtime/database/replica.js +51 -0
- package/dist/runtime/database/shards.d.ts +21 -0
- package/dist/runtime/database/shards.js +37 -0
- package/dist/runtime/database/snapshot.d.ts +7 -0
- package/dist/runtime/database/snapshot.js +7 -0
- package/dist/runtime/database/tenancy.d.ts +69 -0
- package/dist/runtime/database/tenancy.js +145 -0
- package/dist/runtime/database/transient.d.ts +10 -0
- package/dist/runtime/database/transient.js +25 -0
- package/dist/runtime/drain.d.ts +132 -0
- package/dist/runtime/drain.js +109 -0
- package/dist/runtime/entity/mailbox.d.ts +86 -0
- package/dist/runtime/entity/mailbox.js +121 -0
- package/dist/runtime/entity/register.d.ts +424 -0
- package/dist/runtime/entity/register.js +669 -0
- package/dist/runtime/events/append.d.ts +192 -0
- package/dist/runtime/events/append.js +128 -0
- package/dist/runtime/events/cursor.d.ts +2 -0
- package/dist/runtime/events/cursor.js +5 -0
- package/dist/runtime/events/replay.d.ts +20 -0
- package/dist/runtime/events/replay.js +45 -0
- package/dist/runtime/feeds.d.ts +26 -0
- package/dist/runtime/feeds.js +100 -0
- package/dist/runtime/fleet/checks.d.ts +17 -0
- package/dist/runtime/fleet/checks.js +106 -0
- package/dist/runtime/fleet/maintainer.d.ts +38 -0
- package/dist/runtime/fleet/maintainer.js +383 -0
- package/dist/runtime/fleet/pgoutput.d.ts +41 -0
- package/dist/runtime/fleet/pgoutput.js +102 -0
- package/dist/runtime/fleet/setup.d.ts +36 -0
- package/dist/runtime/fleet/setup.js +58 -0
- package/dist/runtime/fleet/subscribe.d.ts +42 -0
- package/dist/runtime/fleet/subscribe.js +147 -0
- package/dist/runtime/index.d.ts +66 -0
- package/dist/runtime/index.js +37 -0
- package/dist/runtime/inspector/http.d.ts +19 -0
- package/dist/runtime/inspector/http.js +36 -0
- package/dist/runtime/inspector/layer.d.ts +46 -0
- package/dist/runtime/inspector/layer.js +180 -0
- package/dist/runtime/inspector/queries.d.ts +711 -0
- package/dist/runtime/inspector/queries.js +494 -0
- package/dist/runtime/jobs/attempt.d.ts +254 -0
- package/dist/runtime/jobs/attempt.js +413 -0
- package/dist/runtime/jobs/isolation.d.ts +20 -0
- package/dist/runtime/jobs/isolation.js +10 -0
- package/dist/runtime/jobs/progress.d.ts +95 -0
- package/dist/runtime/jobs/progress.js +144 -0
- package/dist/runtime/layer.d.ts +260 -0
- package/dist/runtime/layer.js +876 -0
- package/dist/runtime/members.d.ts +381 -0
- package/dist/runtime/members.js +8 -0
- package/dist/runtime/operators/audit.d.ts +64 -0
- package/dist/runtime/operators/audit.js +56 -0
- package/dist/runtime/operators/auth.d.ts +29 -0
- package/dist/runtime/operators/auth.js +42 -0
- package/dist/runtime/operators/export.d.ts +68 -0
- package/dist/runtime/operators/export.js +137 -0
- package/dist/runtime/operators/grants.d.ts +45 -0
- package/dist/runtime/operators/grants.js +40 -0
- package/dist/runtime/operators/repair.d.ts +206 -0
- package/dist/runtime/operators/repair.js +226 -0
- package/dist/runtime/operators/routes.d.ts +35 -0
- package/dist/runtime/operators/routes.js +190 -0
- package/dist/runtime/operators/seed.d.ts +123 -0
- package/dist/runtime/operators/seed.js +123 -0
- package/dist/runtime/payloads/versions.d.ts +65 -0
- package/dist/runtime/payloads/versions.js +240 -0
- package/dist/runtime/peering/authority.d.ts +42 -0
- package/dist/runtime/peering/authority.js +132 -0
- package/dist/runtime/peering/credentials.d.ts +21 -0
- package/dist/runtime/peering/credentials.js +13 -0
- package/dist/runtime/peering/transport.d.ts +51 -0
- package/dist/runtime/peering/transport.js +175 -0
- package/dist/runtime/queries.d.ts +18 -0
- package/dist/runtime/queries.js +169 -0
- package/dist/runtime/readiness.d.ts +36 -0
- package/dist/runtime/readiness.js +44 -0
- package/dist/runtime/registration.d.ts +58 -0
- package/dist/runtime/registration.js +186 -0
- package/dist/runtime/request.d.ts +158 -0
- package/dist/runtime/request.js +102 -0
- package/dist/runtime/retry.d.ts +8 -0
- package/dist/runtime/retry.js +11 -0
- package/dist/runtime/runner.d.ts +93 -0
- package/dist/runtime/runner.js +122 -0
- package/dist/runtime/storage/codec.d.ts +39 -0
- package/dist/runtime/storage/codec.js +41 -0
- package/dist/runtime/storage/generation.d.ts +69 -0
- package/dist/runtime/storage/generation.js +49 -0
- package/dist/runtime/storage/placements.d.ts +15 -0
- package/dist/runtime/storage/placements.js +38 -0
- package/dist/runtime/storage/platform.d.ts +6 -0
- package/dist/runtime/storage/platform.js +9 -0
- package/dist/runtime/storage/retention.d.ts +73 -0
- package/dist/runtime/storage/retention.js +158 -0
- package/dist/runtime/subscriptions/identity.d.ts +31 -0
- package/dist/runtime/subscriptions/identity.js +45 -0
- package/dist/runtime/subscriptions/relay.d.ts +175 -0
- package/dist/runtime/subscriptions/relay.js +763 -0
- package/dist/runtime/subscriptions/storage.d.ts +40 -0
- package/dist/runtime/subscriptions/storage.js +98 -0
- package/dist/runtime/sweeps.d.ts +39 -0
- package/dist/runtime/sweeps.js +54 -0
- package/dist/runtime/telemetry/defects.d.ts +57 -0
- package/dist/runtime/telemetry/defects.js +43 -0
- package/dist/runtime/telemetry/metrics.d.ts +52 -0
- package/dist/runtime/telemetry/metrics.js +138 -0
- package/dist/runtime/telemetry/routes.d.ts +19 -0
- package/dist/runtime/telemetry/routes.js +18 -0
- package/dist/runtime/telemetry/sampler.d.ts +26 -0
- package/dist/runtime/telemetry/sampler.js +101 -0
- package/dist/runtime/telemetry/spans.d.ts +38 -0
- package/dist/runtime/telemetry/spans.js +44 -0
- package/dist/runtime/telemetry/usage.d.ts +52 -0
- package/dist/runtime/telemetry/usage.js +30 -0
- package/dist/runtime/topology/admission.d.ts +13 -0
- package/dist/runtime/topology/admission.js +36 -0
- package/dist/runtime/topology/locks.d.ts +56 -0
- package/dist/runtime/topology/locks.js +81 -0
- package/dist/runtime/topology/messages.d.ts +15 -0
- package/dist/runtime/topology/messages.js +32 -0
- package/dist/runtime/turn/admission.d.ts +22 -0
- package/dist/runtime/turn/admission.js +41 -0
- package/dist/runtime/turn/blobs.d.ts +38 -0
- package/dist/runtime/turn/blobs.js +215 -0
- package/dist/runtime/turn/execute.d.ts +208 -0
- package/dist/runtime/turn/execute.js +972 -0
- package/dist/runtime/turn/group.d.ts +165 -0
- package/dist/runtime/turn/group.js +326 -0
- package/dist/runtime/turn/hooks.d.ts +44 -0
- package/dist/runtime/turn/hooks.js +28 -0
- package/dist/runtime/turn/outbox.d.ts +159 -0
- package/dist/runtime/turn/outbox.js +269 -0
- package/dist/runtime/turn/pipeline.d.ts +68 -0
- package/dist/runtime/turn/pipeline.js +83 -0
- package/dist/runtime/turn/receipt.d.ts +81 -0
- package/dist/runtime/turn/receipt.js +32 -0
- package/dist/runtime/turn/relay.d.ts +179 -0
- package/dist/runtime/turn/relay.js +685 -0
- package/dist/runtime/turn/rows.d.ts +43 -0
- package/dist/runtime/turn/rows.js +592 -0
- package/dist/runtime/workflows/compatibility.d.ts +125 -0
- package/dist/runtime/workflows/compatibility.js +285 -0
- package/dist/runtime/workflows/engine.d.ts +107 -0
- package/dist/runtime/workflows/engine.js +826 -0
- package/dist/runtime/workflows/manifest.d.ts +34 -0
- package/dist/runtime/workflows/manifest.js +39 -0
- package/dist/runtime/workflows/steps.d.ts +33 -0
- package/dist/runtime/workflows/steps.js +152 -0
- package/dist/serve/api.d.ts +99 -0
- package/dist/serve/api.js +403 -0
- package/dist/serve/assertion/binding.d.ts +41 -0
- package/dist/serve/assertion/binding.js +92 -0
- package/dist/serve/assertion/verify.d.ts +93 -0
- package/dist/serve/assertion/verify.js +189 -0
- package/dist/serve/auth.d.ts +200 -0
- package/dist/serve/auth.js +92 -0
- package/dist/serve/clock.d.ts +10 -0
- package/dist/serve/clock.js +25 -0
- package/dist/serve/jwt.d.ts +65 -0
- package/dist/serve/jwt.js +202 -0
- package/dist/serve/layer.d.ts +98 -0
- package/dist/serve/layer.js +809 -0
- package/dist/serve/mcp/endpoint.d.ts +39 -0
- package/dist/serve/mcp/endpoint.js +187 -0
- package/dist/serve/mcp/tools.d.ts +37 -0
- package/dist/serve/mcp/tools.js +125 -0
- package/dist/serve/origin.d.ts +6 -0
- package/dist/serve/origin.js +21 -0
- package/dist/serve/sessions/feed.d.ts +79 -0
- package/dist/serve/sessions/feed.js +115 -0
- package/dist/serve/sessions/socket.d.ts +56 -0
- package/dist/serve/sessions/socket.js +212 -0
- package/dist/serve/sessions/sse.d.ts +27 -0
- package/dist/serve/sessions/sse.js +26 -0
- package/dist/serve/sessions/stream.d.ts +9 -0
- package/dist/serve/sessions/stream.js +9 -0
- package/dist/serve/sessions/watch.d.ts +12 -0
- package/dist/serve/sessions/watch.js +11 -0
- package/dist/serve/wire.d.ts +16 -0
- package/dist/serve/wire.js +50 -0
- package/dist/state/blob.d.ts +71 -0
- package/dist/state/blob.js +0 -0
- package/dist/state/migration.d.ts +53 -0
- package/dist/state/migration.js +29 -0
- package/dist/tables/fleet.d.ts +170 -0
- package/dist/tables/fleet.js +214 -0
- package/dist/tables/owned.d.ts +250 -0
- package/dist/tables/owned.js +233 -0
- package/dist/testing/actor-test.d.ts +360 -0
- package/dist/testing/actor-test.js +337 -0
- package/dist/testing/cluster.d.ts +93 -0
- package/dist/testing/cluster.js +296 -0
- package/dist/testing/conformance/access.d.ts +5 -0
- package/dist/testing/conformance/access.js +531 -0
- package/dist/testing/conformance/admission.d.ts +11 -0
- package/dist/testing/conformance/admission.js +182 -0
- package/dist/testing/conformance/adoption.d.ts +2 -0
- package/dist/testing/conformance/adoption.js +1019 -0
- package/dist/testing/conformance/assertions.d.ts +202 -0
- package/dist/testing/conformance/assertions.js +849 -0
- package/dist/testing/conformance/batches.d.ts +41 -0
- package/dist/testing/conformance/batches.js +388 -0
- package/dist/testing/conformance/blobs.d.ts +14 -0
- package/dist/testing/conformance/blobs.js +405 -0
- package/dist/testing/conformance/capacity.d.ts +8 -0
- package/dist/testing/conformance/capacity.js +433 -0
- package/dist/testing/conformance/client.d.ts +5 -0
- package/dist/testing/conformance/client.js +719 -0
- package/dist/testing/conformance/cold-serve.d.ts +16 -0
- package/dist/testing/conformance/cold-serve.js +254 -0
- package/dist/testing/conformance/connections/actors.d.ts +1143 -0
- package/dist/testing/conformance/connections/actors.js +180 -0
- package/dist/testing/conformance/connections/harness.d.ts +1754 -0
- package/dist/testing/conformance/connections/harness.js +142 -0
- package/dist/testing/conformance/connections/holders.d.ts +4 -0
- package/dist/testing/conformance/connections/holders.js +165 -0
- package/dist/testing/conformance/connections/lifecycle.d.ts +4 -0
- package/dist/testing/conformance/connections/lifecycle.js +113 -0
- package/dist/testing/conformance/connections/limits.d.ts +4 -0
- package/dist/testing/conformance/connections/limits.js +127 -0
- package/dist/testing/conformance/connections/reauthorization.d.ts +4 -0
- package/dist/testing/conformance/connections/reauthorization.js +170 -0
- package/dist/testing/conformance/connections/resync.d.ts +4 -0
- package/dist/testing/conformance/connections/resync.js +360 -0
- package/dist/testing/conformance/connections/takeover.d.ts +4 -0
- package/dist/testing/conformance/connections/takeover.js +287 -0
- package/dist/testing/conformance/connections.d.ts +4 -0
- package/dist/testing/conformance/connections.js +15 -0
- package/dist/testing/conformance/content-blobs.d.ts +16 -0
- package/dist/testing/conformance/content-blobs.js +534 -0
- package/dist/testing/conformance/counter.d.ts +16 -0
- package/dist/testing/conformance/counter.js +813 -0
- package/dist/testing/conformance/cron.d.ts +5 -0
- package/dist/testing/conformance/cron.js +665 -0
- package/dist/testing/conformance/drain.d.ts +26 -0
- package/dist/testing/conformance/drain.js +540 -0
- package/dist/testing/conformance/effect-control.d.ts +38 -0
- package/dist/testing/conformance/effect-control.js +1059 -0
- package/dist/testing/conformance/effects.d.ts +23 -0
- package/dist/testing/conformance/effects.js +432 -0
- package/dist/testing/conformance/events.d.ts +28 -0
- package/dist/testing/conformance/events.js +335 -0
- package/dist/testing/conformance/export.d.ts +2 -0
- package/dist/testing/conformance/export.js +368 -0
- package/dist/testing/conformance/fleet.d.ts +444 -0
- package/dist/testing/conformance/fleet.js +1009 -0
- package/dist/testing/conformance/groups.d.ts +7 -0
- package/dist/testing/conformance/groups.js +353 -0
- package/dist/testing/conformance/heap.d.ts +3 -0
- package/dist/testing/conformance/heap.js +149 -0
- package/dist/testing/conformance/http.d.ts +2809 -0
- package/dist/testing/conformance/http.js +1234 -0
- package/dist/testing/conformance/inspection-views.d.ts +8 -0
- package/dist/testing/conformance/inspection-views.js +272 -0
- package/dist/testing/conformance/inspector.d.ts +7 -0
- package/dist/testing/conformance/inspector.js +650 -0
- package/dist/testing/conformance/mint.d.ts +58 -0
- package/dist/testing/conformance/mint.js +692 -0
- package/dist/testing/conformance/multi-runner.d.ts +8 -0
- package/dist/testing/conformance/multi-runner.js +403 -0
- package/dist/testing/conformance/neki/plan.d.ts +19 -0
- package/dist/testing/conformance/neki/plan.js +30 -0
- package/dist/testing/conformance/observability.d.ts +3 -0
- package/dist/testing/conformance/observability.js +343 -0
- package/dist/testing/conformance/offline.d.ts +4 -0
- package/dist/testing/conformance/offline.js +474 -0
- package/dist/testing/conformance/operator-harness.d.ts +57 -0
- package/dist/testing/conformance/operator-harness.js +78 -0
- package/dist/testing/conformance/operator.d.ts +3 -0
- package/dist/testing/conformance/operator.js +379 -0
- package/dist/testing/conformance/outbox-cross-shard.d.ts +14 -0
- package/dist/testing/conformance/outbox-cross-shard.js +160 -0
- package/dist/testing/conformance/outbox.d.ts +36 -0
- package/dist/testing/conformance/outbox.js +437 -0
- package/dist/testing/conformance/payload-migrations.d.ts +3 -0
- package/dist/testing/conformance/payload-migrations.js +612 -0
- package/dist/testing/conformance/pipeline.d.ts +3 -0
- package/dist/testing/conformance/pipeline.js +1040 -0
- package/dist/testing/conformance/placement.d.ts +22 -0
- package/dist/testing/conformance/placement.js +539 -0
- package/dist/testing/conformance/platform.d.ts +40 -0
- package/dist/testing/conformance/platform.js +101 -0
- package/dist/testing/conformance/progress.d.ts +39 -0
- package/dist/testing/conformance/progress.js +666 -0
- package/dist/testing/conformance/properties.d.ts +6 -0
- package/dist/testing/conformance/properties.js +295 -0
- package/dist/testing/conformance/protocols.d.ts +4 -0
- package/dist/testing/conformance/protocols.js +618 -0
- package/dist/testing/conformance/provider/advertise.d.ts +21 -0
- package/dist/testing/conformance/provider/advertise.js +44 -0
- package/dist/testing/conformance/read-your-writes.d.ts +20 -0
- package/dist/testing/conformance/read-your-writes.js +192 -0
- package/dist/testing/conformance/reducers.d.ts +8 -0
- package/dist/testing/conformance/reducers.js +258 -0
- package/dist/testing/conformance/relay.d.ts +42 -0
- package/dist/testing/conformance/relay.js +1115 -0
- package/dist/testing/conformance/restore.d.ts +43 -0
- package/dist/testing/conformance/restore.js +341 -0
- package/dist/testing/conformance/retention.d.ts +14 -0
- package/dist/testing/conformance/retention.js +463 -0
- package/dist/testing/conformance/rls.d.ts +24 -0
- package/dist/testing/conformance/rls.js +576 -0
- package/dist/testing/conformance/simulation.d.ts +31 -0
- package/dist/testing/conformance/simulation.js +167 -0
- package/dist/testing/conformance/single-shard.d.ts +2 -0
- package/dist/testing/conformance/single-shard.js +125 -0
- package/dist/testing/conformance/singleton.d.ts +3 -0
- package/dist/testing/conformance/singleton.js +293 -0
- package/dist/testing/conformance/statements.d.ts +60 -0
- package/dist/testing/conformance/statements.js +108 -0
- package/dist/testing/conformance/streams.d.ts +7 -0
- package/dist/testing/conformance/streams.js +280 -0
- package/dist/testing/conformance/subscriptions/access.d.ts +4 -0
- package/dist/testing/conformance/subscriptions/access.js +98 -0
- package/dist/testing/conformance/subscriptions/actors.d.ts +4910 -0
- package/dist/testing/conformance/subscriptions/actors.js +372 -0
- package/dist/testing/conformance/subscriptions/cluster.d.ts +4 -0
- package/dist/testing/conformance/subscriptions/cluster.js +89 -0
- package/dist/testing/conformance/subscriptions/delivery.d.ts +4 -0
- package/dist/testing/conformance/subscriptions/delivery.js +253 -0
- package/dist/testing/conformance/subscriptions/deploys.d.ts +4 -0
- package/dist/testing/conformance/subscriptions/deploys.js +162 -0
- package/dist/testing/conformance/subscriptions/epochs.d.ts +4 -0
- package/dist/testing/conformance/subscriptions/epochs.js +169 -0
- package/dist/testing/conformance/subscriptions/failures.d.ts +4 -0
- package/dist/testing/conformance/subscriptions/failures.js +108 -0
- package/dist/testing/conformance/subscriptions/feeds.d.ts +4 -0
- package/dist/testing/conformance/subscriptions/feeds.js +218 -0
- package/dist/testing/conformance/subscriptions/harness.d.ts +124 -0
- package/dist/testing/conformance/subscriptions/harness.js +143 -0
- package/dist/testing/conformance/subscriptions/operator.d.ts +4 -0
- package/dist/testing/conformance/subscriptions/operator.js +128 -0
- package/dist/testing/conformance/subscriptions/retention.d.ts +4 -0
- package/dist/testing/conformance/subscriptions/retention.js +288 -0
- package/dist/testing/conformance/subscriptions/routing.d.ts +4 -0
- package/dist/testing/conformance/subscriptions/routing.js +179 -0
- package/dist/testing/conformance/subscriptions.d.ts +4 -0
- package/dist/testing/conformance/subscriptions.js +19 -0
- package/dist/testing/conformance/tables.d.ts +125 -0
- package/dist/testing/conformance/tables.js +664 -0
- package/dist/testing/conformance/transports/actors.d.ts +1907 -0
- package/dist/testing/conformance/transports/actors.js +163 -0
- package/dist/testing/conformance/transports/client.d.ts +3 -0
- package/dist/testing/conformance/transports/client.js +237 -0
- package/dist/testing/conformance/transports/feeds.d.ts +3 -0
- package/dist/testing/conformance/transports/feeds.js +232 -0
- package/dist/testing/conformance/transports/harness.d.ts +93 -0
- package/dist/testing/conformance/transports/harness.js +84 -0
- package/dist/testing/conformance/transports/streams.d.ts +3 -0
- package/dist/testing/conformance/transports/streams.js +96 -0
- package/dist/testing/conformance/transports/websocket.d.ts +3 -0
- package/dist/testing/conformance/transports/websocket.js +384 -0
- package/dist/testing/conformance/transports/wire.d.ts +141 -0
- package/dist/testing/conformance/transports/wire.js +204 -0
- package/dist/testing/conformance/transports.d.ts +3 -0
- package/dist/testing/conformance/transports.js +11 -0
- package/dist/testing/conformance/watch.d.ts +59 -0
- package/dist/testing/conformance/watch.js +879 -0
- package/dist/testing/conformance/workflow-engine.d.ts +97 -0
- package/dist/testing/conformance/workflow-engine.js +253 -0
- package/dist/testing/conformance/workflow-versions.d.ts +3 -0
- package/dist/testing/conformance/workflow-versions.js +545 -0
- package/dist/testing/conformance/workflows/access.d.ts +4 -0
- package/dist/testing/conformance/workflows/access.js +147 -0
- package/dist/testing/conformance/workflows/actors.d.ts +2317 -0
- package/dist/testing/conformance/workflows/actors.js +305 -0
- package/dist/testing/conformance/workflows/basics.d.ts +4 -0
- package/dist/testing/conformance/workflows/basics.js +144 -0
- package/dist/testing/conformance/workflows/engine.d.ts +4 -0
- package/dist/testing/conformance/workflows/engine.js +80 -0
- package/dist/testing/conformance/workflows/guards.d.ts +4 -0
- package/dist/testing/conformance/workflows/guards.js +172 -0
- package/dist/testing/conformance/workflows/harness.d.ts +14 -0
- package/dist/testing/conformance/workflows/harness.js +44 -0
- package/dist/testing/conformance/workflows/recovery.d.ts +4 -0
- package/dist/testing/conformance/workflows/recovery.js +181 -0
- package/dist/testing/conformance/workflows/starts.d.ts +4 -0
- package/dist/testing/conformance/workflows/starts.js +57 -0
- package/dist/testing/conformance/workflows/suspension.d.ts +4 -0
- package/dist/testing/conformance/workflows/suspension.js +106 -0
- package/dist/testing/conformance/workflows/waits.d.ts +4 -0
- package/dist/testing/conformance/workflows/waits.js +284 -0
- package/dist/testing/conformance/workflows.d.ts +4 -0
- package/dist/testing/conformance/workflows.js +19 -0
- package/dist/testing/conformance.d.ts +330 -0
- package/dist/testing/conformance.js +364 -0
- package/dist/testing/database.d.ts +31 -0
- package/dist/testing/database.js +70 -0
- package/dist/testing/foundation.d.ts +41 -0
- package/dist/testing/foundation.js +517 -0
- package/dist/testing/index.d.ts +20 -0
- package/dist/testing/index.js +12 -0
- package/dist/testing/property.d.ts +40 -0
- package/dist/testing/property.js +95 -0
- package/dist/testing/simulate-cluster.d.ts +112 -0
- package/dist/testing/simulate-cluster.js +257 -0
- package/dist/testing/simulate.d.ts +90 -0
- package/dist/testing/simulate.js +127 -0
- package/package.json +1 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { Latch } from "effect";
|
|
2
|
+
/**
|
|
3
|
+
* The most commands one turn batch runs. It stays below the 64 open
|
|
4
|
+
* subtransactions past which Postgres overflows its per-backend subtransaction
|
|
5
|
+
* cache, since a batch of an actor whose handlers issue statements can hold a
|
|
6
|
+
* savepoint per command.
|
|
7
|
+
*/
|
|
8
|
+
export const BATCH_CAP = 32;
|
|
9
|
+
/**
|
|
10
|
+
* The most calls of one commutative reducer that one merged turn combines.
|
|
11
|
+
* Merging never waits for calls: it takes only those already waiting.
|
|
12
|
+
*/
|
|
13
|
+
export const MERGE_CAP = 1024;
|
|
14
|
+
/**
|
|
15
|
+
* The most command ids an activation keeps to run alone after a failed batch.
|
|
16
|
+
* An id leaves the set when its retry is taken, and a caller that never
|
|
17
|
+
* retries would otherwise leave it for the activation's lifetime. Past the
|
|
18
|
+
* cap the oldest go first: an evicted id's late retry may join a batch again,
|
|
19
|
+
* which a retryable failure makes safe.
|
|
20
|
+
*/
|
|
21
|
+
export const ALONE_CAP = BATCH_CAP * 32;
|
|
22
|
+
/** Adds `ids` to `alone` as its newest entries, then drops the oldest past `ALONE_CAP`. */
|
|
23
|
+
export const markAlone = ({ alone, ids, }) => {
|
|
24
|
+
for (const id of ids) {
|
|
25
|
+
alone.delete(id);
|
|
26
|
+
alone.add(id);
|
|
27
|
+
}
|
|
28
|
+
for (const oldest of alone) {
|
|
29
|
+
if (alone.size <= ALONE_CAP)
|
|
30
|
+
return;
|
|
31
|
+
alone.delete(oldest);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
/** True when `next` joins a merged turn of `previous`'s commutative reducer. */
|
|
35
|
+
export const merges = ({ previous, next, }) => next.command.merge !== undefined && next.request.command === previous.request.command;
|
|
36
|
+
/**
|
|
37
|
+
* Removes the next batch from the front of `waiting`, in delivery order: the
|
|
38
|
+
* first command, then each command behind it that is already waiting, up to
|
|
39
|
+
* `BATCH_CAP` turns. Consecutive calls of one commutative reducer are one
|
|
40
|
+
* merged turn of up to `MERGE_CAP` calls. Nothing waits for more to arrive. A
|
|
41
|
+
* command joins a batch only once its own `queued` hook has finished, so the
|
|
42
|
+
* batch stops at the first command that is still in it, and takes nothing when
|
|
43
|
+
* that is the first.
|
|
44
|
+
*
|
|
45
|
+
* A batch stops before a command id it already holds, so a retry queued
|
|
46
|
+
* behind its original resolves through the receipt the original commits. It
|
|
47
|
+
* also stops before a command listed in `alone`, and such a command runs in a
|
|
48
|
+
* batch of its own, once: these are the commands of a batch that failed, run
|
|
49
|
+
* one per transaction until each has been processed.
|
|
50
|
+
*/
|
|
51
|
+
export const takeBatch = ({ waiting, alone, }) => {
|
|
52
|
+
if (waiting[0]?.queued !== true)
|
|
53
|
+
return [];
|
|
54
|
+
const first = waiting.shift();
|
|
55
|
+
if (alone.delete(first.request.commandId))
|
|
56
|
+
return [first];
|
|
57
|
+
const batch = [first];
|
|
58
|
+
const ids = new Set([first.request.commandId]);
|
|
59
|
+
let turns = 1;
|
|
60
|
+
let merged = first.command.merge === undefined ? 0 : 1;
|
|
61
|
+
while (waiting.length > 0) {
|
|
62
|
+
const next = waiting[0];
|
|
63
|
+
const { commandId } = next.request;
|
|
64
|
+
if (!next.queued || ids.has(commandId) || alone.has(commandId))
|
|
65
|
+
break;
|
|
66
|
+
const joins = merged > 0 && merged < MERGE_CAP && merges({ previous: batch.at(-1), next });
|
|
67
|
+
if (!joins && turns === BATCH_CAP)
|
|
68
|
+
break;
|
|
69
|
+
if (joins)
|
|
70
|
+
merged += 1;
|
|
71
|
+
else {
|
|
72
|
+
turns += 1;
|
|
73
|
+
merged = next.command.merge === undefined ? 0 : 1;
|
|
74
|
+
}
|
|
75
|
+
ids.add(commandId);
|
|
76
|
+
batch.push(waiting.shift());
|
|
77
|
+
}
|
|
78
|
+
return batch;
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* One activation handler's waiting commands in arrival order, and its
|
|
82
|
+
* worker's wake-up. A command is offered as Cluster delivers it and becomes
|
|
83
|
+
* takeable once its `queued` hook finished; the wake-up stays open while the
|
|
84
|
+
* front command is takeable, so the worker never sleeps past ready work and a
|
|
85
|
+
* command whose hook is still running holds back every command behind it.
|
|
86
|
+
* `alone` outlives the handler: it holds the ids of a failed batch, each run
|
|
87
|
+
* in a transaction of its own once.
|
|
88
|
+
*/
|
|
89
|
+
export const activationMailbox = (alone) => {
|
|
90
|
+
const waiting = [];
|
|
91
|
+
const ready = Latch.makeUnsafe(false);
|
|
92
|
+
return {
|
|
93
|
+
offer: (entry) => {
|
|
94
|
+
waiting.push(entry);
|
|
95
|
+
},
|
|
96
|
+
/** Marks `entry`'s `queued` hook finished, so a batch may take it. */
|
|
97
|
+
queued: (entry) => {
|
|
98
|
+
entry.queued = true;
|
|
99
|
+
ready.openUnsafe();
|
|
100
|
+
},
|
|
101
|
+
/** Waits until the front command may be takeable. */
|
|
102
|
+
await: ready.await,
|
|
103
|
+
/** The next batch, possibly empty; the wake-up closes once the front command is not takeable. */
|
|
104
|
+
take: () => {
|
|
105
|
+
const batch = takeBatch({ waiting, alone });
|
|
106
|
+
if (waiting[0]?.queued !== true)
|
|
107
|
+
ready.closeUnsafe();
|
|
108
|
+
return batch;
|
|
109
|
+
},
|
|
110
|
+
/** Puts taken commands back in front of everything that arrived since. */
|
|
111
|
+
requeue: (entries) => {
|
|
112
|
+
if (entries.length === 0)
|
|
113
|
+
return;
|
|
114
|
+
waiting.unshift(...entries);
|
|
115
|
+
ready.openUnsafe();
|
|
116
|
+
},
|
|
117
|
+
/** Runs each of `ids` alone once, the next time it is taken. */
|
|
118
|
+
isolate: (ids) => markAlone({ alone, ids }),
|
|
119
|
+
size: () => waiting.length,
|
|
120
|
+
};
|
|
121
|
+
};
|
|
@@ -0,0 +1,424 @@
|
|
|
1
|
+
import { type Crypto, Effect, Schema, Scope, Stream } from "effect";
|
|
2
|
+
import { Entity, Sharding } from "effect/cluster";
|
|
3
|
+
import { Rpc } from "effect/rpc";
|
|
4
|
+
import { SqlClient } from "effect/sql";
|
|
5
|
+
import { ActorError } from "../../errors/actor.ts";
|
|
6
|
+
import { DeliveryFailed } from "../request.ts";
|
|
7
|
+
import { type Registration } from "../members.ts";
|
|
8
|
+
import { ActorRef } from "../../identity/caller.ts";
|
|
9
|
+
import type { Authorize } from "../connections/streams.ts";
|
|
10
|
+
import type { Transport } from "../connections/transport.ts";
|
|
11
|
+
import { DefectLog } from "../telemetry/defects.ts";
|
|
12
|
+
/**
|
|
13
|
+
* The commands an activation holds, waiting and in its current batch, when its
|
|
14
|
+
* policy declares no `mailboxCapacity`. Cluster refuses the next, which
|
|
15
|
+
* dispatch answers `ActorUnavailable`: a hot actor's backlog then waits in its
|
|
16
|
+
* callers' retries, where it holds no memory or turn connection on this runner.
|
|
17
|
+
*/
|
|
18
|
+
export declare const ACTIVATION_MAILBOX = 1024;
|
|
19
|
+
/** Encodes a tenant and actor id as the Cluster entity id. */
|
|
20
|
+
export declare const encodeEntityId: (tenantAndId: readonly [string, string]) => Effect.Effect<string, Schema.SchemaError, never>;
|
|
21
|
+
/**
|
|
22
|
+
* What a runner knows of one activation when a delivery to it times out: the
|
|
23
|
+
* handlers Cluster has built for it and whether one is being built, the
|
|
24
|
+
* worker's phase, the commands waiting in its mailbox and in its current
|
|
25
|
+
* batch, and whether an in-place restart is running.
|
|
26
|
+
*/
|
|
27
|
+
export interface ActivationDiagnosis {
|
|
28
|
+
readonly handlers: number;
|
|
29
|
+
readonly building: boolean;
|
|
30
|
+
readonly worker: "none" | "idle" | "turn" | "workflow kick" | "restarting";
|
|
31
|
+
readonly mailbox: number;
|
|
32
|
+
readonly batch: number;
|
|
33
|
+
}
|
|
34
|
+
/** The command entity definition for an actor type, created once per name. */
|
|
35
|
+
export declare const commandEntity: (name: string) => Entity.Entity<string, Rpc.Rpc<"Execute", Schema.Struct<{
|
|
36
|
+
readonly ref: Schema.Struct<{
|
|
37
|
+
readonly tenant: Schema.NonEmptyString;
|
|
38
|
+
readonly actor: Schema.NonEmptyString;
|
|
39
|
+
readonly id: Schema.NonEmptyString;
|
|
40
|
+
}>;
|
|
41
|
+
readonly caller: Schema.toTaggedUnion<"_tag", readonly [Schema.TaggedStruct<"User", {
|
|
42
|
+
readonly subject: Schema.NonEmptyString;
|
|
43
|
+
}>, Schema.TaggedStruct<"Anonymous", {}>, Schema.TaggedStruct<"System", {
|
|
44
|
+
readonly source: Schema.Literals<readonly ["process", "actor", "timer", "cron", "workflow", "job", "subscription"]>;
|
|
45
|
+
readonly ref: Schema.optional<Schema.Struct<{
|
|
46
|
+
readonly tenant: Schema.NonEmptyString;
|
|
47
|
+
readonly actor: Schema.NonEmptyString;
|
|
48
|
+
readonly id: Schema.NonEmptyString;
|
|
49
|
+
}>>;
|
|
50
|
+
readonly onBehalfOf: Schema.optional<Schema.Struct<{
|
|
51
|
+
readonly subject: Schema.NonEmptyString;
|
|
52
|
+
}>>;
|
|
53
|
+
readonly mint: Schema.optional<Schema.Struct<{
|
|
54
|
+
readonly commandId: Schema.String;
|
|
55
|
+
readonly ordinal: Schema.Int;
|
|
56
|
+
}>>;
|
|
57
|
+
}>]>;
|
|
58
|
+
readonly command: Schema.NonEmptyString;
|
|
59
|
+
readonly commandId: Schema.String;
|
|
60
|
+
readonly payload: Schema.String;
|
|
61
|
+
readonly external: Schema.optionalKey<Schema.Boolean>;
|
|
62
|
+
readonly clockOffset: Schema.optionalKey<Schema.Finite>;
|
|
63
|
+
readonly redelivered: Schema.optionalKey<Schema.Boolean>;
|
|
64
|
+
readonly intent: Schema.optionalKey<Schema.Struct<{
|
|
65
|
+
readonly tenant: Schema.NonEmptyString;
|
|
66
|
+
readonly actor: Schema.NonEmptyString;
|
|
67
|
+
readonly id: Schema.NonEmptyString;
|
|
68
|
+
}>>;
|
|
69
|
+
readonly delivery: Schema.optionalKey<Schema.Struct<{
|
|
70
|
+
readonly subscription: Schema.NonEmptyString;
|
|
71
|
+
readonly sourceType: Schema.NonEmptyString;
|
|
72
|
+
readonly sourceId: Schema.NonEmptyString;
|
|
73
|
+
readonly epoch: Schema.String;
|
|
74
|
+
readonly kind: Schema.Literals<readonly ["event", "gap", "rejected"]>;
|
|
75
|
+
readonly position: Schema.String;
|
|
76
|
+
}>>;
|
|
77
|
+
readonly queuedAtMs: Schema.optionalKey<Schema.Finite>;
|
|
78
|
+
readonly usageToken: Schema.optionalKey<Schema.NonEmptyString>;
|
|
79
|
+
}>, Schema.Struct<{
|
|
80
|
+
readonly outcome: Schema.TaggedUnion<{
|
|
81
|
+
readonly Acknowledged: Schema.TaggedStruct<"Acknowledged", {
|
|
82
|
+
readonly reason: Schema.Literals<readonly ["AlreadyApplied", "Stale", "Unsubscribed", "NotCreated"]>;
|
|
83
|
+
}>;
|
|
84
|
+
readonly Defect: Schema.TaggedStruct<"Defect", {
|
|
85
|
+
readonly cause: Schema.Defect;
|
|
86
|
+
}>;
|
|
87
|
+
readonly Failure: Schema.TaggedStruct<"Failure", {
|
|
88
|
+
readonly value: Schema.String;
|
|
89
|
+
}>;
|
|
90
|
+
readonly Success: Schema.TaggedStruct<"Success", {
|
|
91
|
+
readonly value: Schema.String;
|
|
92
|
+
}>;
|
|
93
|
+
}>;
|
|
94
|
+
readonly version: Schema.optionalKey<Schema.String>;
|
|
95
|
+
readonly endedAtMs: Schema.optionalKey<Schema.Finite>;
|
|
96
|
+
readonly replayed: Schema.optionalKey<Schema.Boolean>;
|
|
97
|
+
}>, Schema.Union<readonly [typeof ActorError, typeof DeliveryFailed]>, never, never> | Rpc.Rpc<"Wake", Schema.Void, Schema.Void, Schema.Never, never, never>>;
|
|
98
|
+
/** The connection entity definition for an actor type, created once per name. */
|
|
99
|
+
export declare const connectionEntity: (name: string) => Entity.Entity<`${string}/Connections`, Rpc.Rpc<"Close", Schema.Struct<{
|
|
100
|
+
ref: Schema.Struct<{
|
|
101
|
+
readonly tenant: Schema.NonEmptyString;
|
|
102
|
+
readonly actor: Schema.NonEmptyString;
|
|
103
|
+
readonly id: Schema.NonEmptyString;
|
|
104
|
+
}>;
|
|
105
|
+
connectionId: Schema.String;
|
|
106
|
+
holder: Schema.String;
|
|
107
|
+
holderEpoch: Schema.String;
|
|
108
|
+
cause: typeof import("../../index.ts").SessionEnded;
|
|
109
|
+
}>, Schema.Void, typeof ActorError, never, never> | Rpc.Rpc<"Frame", Schema.Struct<{
|
|
110
|
+
ref: Schema.Struct<{
|
|
111
|
+
readonly tenant: Schema.NonEmptyString;
|
|
112
|
+
readonly actor: Schema.NonEmptyString;
|
|
113
|
+
readonly id: Schema.NonEmptyString;
|
|
114
|
+
}>;
|
|
115
|
+
connectionId: Schema.String;
|
|
116
|
+
holder: Schema.String;
|
|
117
|
+
holderEpoch: Schema.String;
|
|
118
|
+
seq: Schema.Finite;
|
|
119
|
+
frame: Schema.String;
|
|
120
|
+
authorizedUntil: Schema.Finite;
|
|
121
|
+
commands: Schema.Struct<{
|
|
122
|
+
readonly secret: Schema.String;
|
|
123
|
+
readonly seq: Schema.Finite;
|
|
124
|
+
readonly issuedAt: Schema.Finite;
|
|
125
|
+
readonly expiresAt: Schema.Finite;
|
|
126
|
+
}>;
|
|
127
|
+
}>, Schema.TaggedUnion<{
|
|
128
|
+
readonly Acked: Schema.TaggedStruct<"Acked", {
|
|
129
|
+
generation: Schema.String;
|
|
130
|
+
owner: Schema.String;
|
|
131
|
+
ownerEpoch: Schema.String;
|
|
132
|
+
}>;
|
|
133
|
+
readonly Closed: Schema.TaggedStruct<"Closed", {
|
|
134
|
+
readonly ended: typeof import("../../index.ts").SessionEnded;
|
|
135
|
+
}>;
|
|
136
|
+
}>, typeof ActorError, never, never> | Rpc.Rpc<"Open", Schema.Struct<{
|
|
137
|
+
ref: Schema.Struct<{
|
|
138
|
+
readonly tenant: Schema.NonEmptyString;
|
|
139
|
+
readonly actor: Schema.NonEmptyString;
|
|
140
|
+
readonly id: Schema.NonEmptyString;
|
|
141
|
+
}>;
|
|
142
|
+
connectionId: Schema.String;
|
|
143
|
+
holder: Schema.String;
|
|
144
|
+
holderEpoch: Schema.String;
|
|
145
|
+
member: Schema.String;
|
|
146
|
+
caller: Schema.toTaggedUnion<"_tag", readonly [Schema.TaggedStruct<"User", {
|
|
147
|
+
readonly subject: Schema.NonEmptyString;
|
|
148
|
+
}>, Schema.TaggedStruct<"Anonymous", {}>, Schema.TaggedStruct<"System", {
|
|
149
|
+
readonly source: Schema.Literals<readonly ["process", "actor", "timer", "cron", "workflow", "job", "subscription"]>;
|
|
150
|
+
readonly ref: Schema.optional<Schema.Struct<{
|
|
151
|
+
readonly tenant: Schema.NonEmptyString;
|
|
152
|
+
readonly actor: Schema.NonEmptyString;
|
|
153
|
+
readonly id: Schema.NonEmptyString;
|
|
154
|
+
}>>;
|
|
155
|
+
readonly onBehalfOf: Schema.optional<Schema.Struct<{
|
|
156
|
+
readonly subject: Schema.NonEmptyString;
|
|
157
|
+
}>>;
|
|
158
|
+
readonly mint: Schema.optional<Schema.Struct<{
|
|
159
|
+
readonly commandId: Schema.String;
|
|
160
|
+
readonly ordinal: Schema.Int;
|
|
161
|
+
}>>;
|
|
162
|
+
}>]>;
|
|
163
|
+
params: Schema.String;
|
|
164
|
+
commands: Schema.Struct<{
|
|
165
|
+
readonly secret: Schema.String;
|
|
166
|
+
readonly seq: Schema.Finite;
|
|
167
|
+
readonly issuedAt: Schema.Finite;
|
|
168
|
+
readonly expiresAt: Schema.Finite;
|
|
169
|
+
}>;
|
|
170
|
+
}>, Schema.TaggedUnion<{
|
|
171
|
+
readonly Failed: Schema.TaggedStruct<"Failed", {
|
|
172
|
+
readonly value: Schema.String;
|
|
173
|
+
}>;
|
|
174
|
+
readonly Opened: Schema.TaggedStruct<"Opened", {
|
|
175
|
+
readonly generation: Schema.String;
|
|
176
|
+
readonly owner: Schema.String;
|
|
177
|
+
readonly ownerEpoch: Schema.String;
|
|
178
|
+
readonly baseline: Schema.String;
|
|
179
|
+
readonly recovered: Schema.optional<Schema.Boolean>;
|
|
180
|
+
}>;
|
|
181
|
+
}>, typeof ActorError, never, never> | Rpc.Rpc<"Progress", Schema.Struct<{
|
|
182
|
+
ref: Schema.Struct<{
|
|
183
|
+
readonly tenant: Schema.NonEmptyString;
|
|
184
|
+
readonly actor: Schema.NonEmptyString;
|
|
185
|
+
readonly id: Schema.NonEmptyString;
|
|
186
|
+
}>;
|
|
187
|
+
jobId: Schema.String;
|
|
188
|
+
job: Schema.String;
|
|
189
|
+
attempt: Schema.Finite;
|
|
190
|
+
seq: Schema.Finite;
|
|
191
|
+
leaseUntil: Schema.Finite;
|
|
192
|
+
frame: Schema.String;
|
|
193
|
+
}>, Schema.Void, Schema.Never, never, never> | Rpc.Rpc<"ProgressClosed", Schema.Struct<{
|
|
194
|
+
ref: Schema.Struct<{
|
|
195
|
+
readonly tenant: Schema.NonEmptyString;
|
|
196
|
+
readonly actor: Schema.NonEmptyString;
|
|
197
|
+
readonly id: Schema.NonEmptyString;
|
|
198
|
+
}>;
|
|
199
|
+
jobId: Schema.String;
|
|
200
|
+
attempt: Schema.Finite;
|
|
201
|
+
}>, Schema.Void, Schema.Never, never, never> | Rpc.Rpc<"Resync", Schema.Struct<{
|
|
202
|
+
ref: Schema.Struct<{
|
|
203
|
+
readonly tenant: Schema.NonEmptyString;
|
|
204
|
+
readonly actor: Schema.NonEmptyString;
|
|
205
|
+
readonly id: Schema.NonEmptyString;
|
|
206
|
+
}>;
|
|
207
|
+
connectionId: Schema.String;
|
|
208
|
+
holder: Schema.String;
|
|
209
|
+
holderEpoch: Schema.String;
|
|
210
|
+
after: Schema.optional<Schema.String>;
|
|
211
|
+
authorizedUntil: Schema.Finite;
|
|
212
|
+
}>, Schema.TaggedUnion<{
|
|
213
|
+
readonly Closed: Schema.TaggedStruct<"Closed", {
|
|
214
|
+
readonly ended: typeof import("../../index.ts").SessionEnded;
|
|
215
|
+
}>;
|
|
216
|
+
readonly Replayed: Schema.TaggedStruct<"Replayed", {
|
|
217
|
+
generation: Schema.String;
|
|
218
|
+
owner: Schema.String;
|
|
219
|
+
ownerEpoch: Schema.String;
|
|
220
|
+
}>;
|
|
221
|
+
}>, typeof ActorError, never, never> | Rpc.Rpc<"Subscribe", Schema.Struct<{
|
|
222
|
+
member: Schema.String;
|
|
223
|
+
caller: Schema.toTaggedUnion<"_tag", readonly [Schema.TaggedStruct<"User", {
|
|
224
|
+
readonly subject: Schema.NonEmptyString;
|
|
225
|
+
}>, Schema.TaggedStruct<"Anonymous", {}>, Schema.TaggedStruct<"System", {
|
|
226
|
+
readonly source: Schema.Literals<readonly ["process", "actor", "timer", "cron", "workflow", "job", "subscription"]>;
|
|
227
|
+
readonly ref: Schema.optional<Schema.Struct<{
|
|
228
|
+
readonly tenant: Schema.NonEmptyString;
|
|
229
|
+
readonly actor: Schema.NonEmptyString;
|
|
230
|
+
readonly id: Schema.NonEmptyString;
|
|
231
|
+
}>>;
|
|
232
|
+
readonly onBehalfOf: Schema.optional<Schema.Struct<{
|
|
233
|
+
readonly subject: Schema.NonEmptyString;
|
|
234
|
+
}>>;
|
|
235
|
+
readonly mint: Schema.optional<Schema.Struct<{
|
|
236
|
+
readonly commandId: Schema.String;
|
|
237
|
+
readonly ordinal: Schema.Int;
|
|
238
|
+
}>>;
|
|
239
|
+
}>]>;
|
|
240
|
+
input: Schema.String;
|
|
241
|
+
authorizedUntil: Schema.Finite;
|
|
242
|
+
}>, import("effect/rpc/RpcSchema").Stream<Schema.TaggedUnion<{
|
|
243
|
+
readonly Done: Schema.TaggedStruct<"Done", {}>;
|
|
244
|
+
readonly Element: Schema.TaggedStruct<"Element", {
|
|
245
|
+
readonly value: Schema.String;
|
|
246
|
+
}>;
|
|
247
|
+
readonly Started: Schema.TaggedStruct<"Started", {
|
|
248
|
+
readonly owner: Schema.String;
|
|
249
|
+
readonly ownerEpoch: Schema.String;
|
|
250
|
+
}>;
|
|
251
|
+
}>, Schema.Union<readonly [typeof ActorError, Schema.TaggedStruct<"StreamFailed", {
|
|
252
|
+
readonly value: Schema.String;
|
|
253
|
+
}>]>>, Schema.Never, never, never>>;
|
|
254
|
+
/**
|
|
255
|
+
* Registers an actor type's command entity with Cluster and starts its
|
|
256
|
+
* activations, worker, and singleton keeper.
|
|
257
|
+
*
|
|
258
|
+
* - One worker per handler runs queued commands as turn batches in delivery
|
|
259
|
+
* order, so an activation has one transaction in flight. Commands enqueue
|
|
260
|
+
* synchronously when Cluster delivers the request, and replies follow the
|
|
261
|
+
* batch's commit; broadcasts go out first. With `pipelining`, the next batch
|
|
262
|
+
* already waiting is taken while the previous one commits. Its admission
|
|
263
|
+
* waits until a batch with a workflow command is published, because that
|
|
264
|
+
* batch's kick can re-arm a running execution's timer under the generation
|
|
265
|
+
* row lock the admission would hold, and the next batch may be the very call
|
|
266
|
+
* that execution's activity is waiting on.
|
|
267
|
+
* - A retryable failure committed nothing. The worker ends the activation,
|
|
268
|
+
* waits its backoff, starts the next one in place, and only then answers each
|
|
269
|
+
* unanswered command `ActorUnavailable`, so a caller never retries into the
|
|
270
|
+
* closed activation and never waits out its delivery timeout when Cluster
|
|
271
|
+
* would drop a re-sent command mid-restart (as during a database failover).
|
|
272
|
+
* Restarts never overlap because the one worker serializes them.
|
|
273
|
+
* - A defect aborts the whole batch; a following batch whose admission was
|
|
274
|
+
* already sent is rolled back unseen. After a deterministic defect the
|
|
275
|
+
* failed batch's commands rerun one per transaction so one bad command cannot
|
|
276
|
+
* keep rolling back its neighbours, and a lone command answers `Defect`.
|
|
277
|
+
* Defect hooks do not run, since they can loop on corrupt state. A defect
|
|
278
|
+
* after the batch committed lets redelivered commands replay their receipts.
|
|
279
|
+
* - Restart backoff is kept per activation, because Cluster's own is shared by
|
|
280
|
+
* every entity of the type and never resets.
|
|
281
|
+
* - Each handler's resources live in a child of the entity's scope, closed when
|
|
282
|
+
* a rebuild supersedes it, the handler closes, or the entity ends, because a
|
|
283
|
+
* defect during shutdown can drop the superseded handler's own scope.
|
|
284
|
+
* - Full-mailbox and full-runner rejections share one Cluster error; only an
|
|
285
|
+
* activation already resident can have a full mailbox, and a rebuilt handler
|
|
286
|
+
* can overlap its predecessor, hence the count.
|
|
287
|
+
* - A singleton starts only on the runner holding its shard's lease. Every
|
|
288
|
+
* runner serves its entity, and one keeper re-wakes the default tenant's
|
|
289
|
+
* instance so it moves to a survivor. A failing singleton build answers every
|
|
290
|
+
* command with its defect instead of retrying forever.
|
|
291
|
+
* - A draining runner refuses a batch, or interrupts its run at the deadline,
|
|
292
|
+
* and every unanswered caller retries elsewhere.
|
|
293
|
+
* - The turn span carries no captured stack: its call site is always this file.
|
|
294
|
+
*/
|
|
295
|
+
export declare const registerActor: (registration: Registration, transport: Transport, authorize: Authorize, gate: {
|
|
296
|
+
run: <A, E, R>(turn: Effect.Effect<A, E, R>) => Effect.Effect<A, E | ActorError, R>;
|
|
297
|
+
readonly open: boolean;
|
|
298
|
+
close: Effect.Effect<void, never, never>;
|
|
299
|
+
expire: Effect.Effect<number, never, never>;
|
|
300
|
+
}, writable: Effect.Effect<void, ActorError, never>) => Effect.Effect<{
|
|
301
|
+
isResident: (entityId: string) => boolean;
|
|
302
|
+
owner: {
|
|
303
|
+
activations: Map<string, import("../connections/owner.ts").Activation>;
|
|
304
|
+
hasConnections: boolean;
|
|
305
|
+
hasStreams: boolean;
|
|
306
|
+
hasProgress: boolean;
|
|
307
|
+
progress: (activation: import("../connections/owner.ts").Activation, message: import("../connections/owner.ts").ProgressDelivery) => Effect.Effect<void, never, Entity.CurrentAddress | Sharding.Sharding | SqlClient.SqlClient>;
|
|
308
|
+
closeProgress: (activation: import("../connections/owner.ts").Activation, jobId: string) => Effect.Effect<void, never, SqlClient.SqlClient>;
|
|
309
|
+
progressClosed: (activation: import("../connections/owner.ts").Activation, message: {
|
|
310
|
+
readonly ref: ActorRef;
|
|
311
|
+
readonly jobId: string;
|
|
312
|
+
readonly attempt: number;
|
|
313
|
+
}) => Effect.Effect<void, never, SqlClient.SqlClient>;
|
|
314
|
+
feedBroadcasts: (committed: import("../turn/execute.ts").CommittedEvents) => Effect.Effect<import("../members.ts").Broadcast[], never, never>;
|
|
315
|
+
watchBroadcasts: (activation: import("../connections/owner.ts").Activation, writes: import("../connections/protocol.ts").WriteSet, version: string) => Effect.Effect<import("../members.ts").Broadcast[], never, never>;
|
|
316
|
+
hibernate: (entityId: string) => Effect.Effect<void, never, SqlClient.SqlClient>;
|
|
317
|
+
subscribe: (activation: import("../connections/owner.ts").Activation, request: {
|
|
318
|
+
readonly member: string;
|
|
319
|
+
readonly caller: import("../../index.ts").Caller;
|
|
320
|
+
readonly input: string;
|
|
321
|
+
readonly authorizedUntil: number;
|
|
322
|
+
}) => Stream.Stream<{
|
|
323
|
+
readonly _tag: "Done";
|
|
324
|
+
} | {
|
|
325
|
+
readonly _tag: "Element";
|
|
326
|
+
readonly value: string;
|
|
327
|
+
} | {
|
|
328
|
+
readonly _tag: "Started";
|
|
329
|
+
readonly owner: string;
|
|
330
|
+
readonly ownerEpoch: string;
|
|
331
|
+
}, ActorError | {
|
|
332
|
+
readonly _tag: "StreamFailed";
|
|
333
|
+
readonly value: string;
|
|
334
|
+
}, SqlClient.SqlClient>;
|
|
335
|
+
endStreams: (activation: import("../connections/owner.ts").Activation) => Effect.Effect<void, never, never>;
|
|
336
|
+
watchStreams: Effect.Effect<void, never, never>;
|
|
337
|
+
enter: (entityId: string, ref: ActorRef, key: bigint) => Effect.Effect<import("../connections/owner.ts").Activation, never, Scope.Scope | SqlClient.SqlClient>;
|
|
338
|
+
prepare: (activation: import("../connections/owner.ts").Activation) => Effect.Effect<void, never, Entity.CurrentAddress | Sharding.Sharding | SqlClient.SqlClient>;
|
|
339
|
+
list: (activation: import("../connections/owner.ts").Activation) => (member: string) => Effect.Effect<readonly import("../members.ts").OpenConnection[], never, never>;
|
|
340
|
+
flush: (activation: import("../connections/owner.ts").Activation, broadcasts: ReadonlyArray<import("../members.ts").Broadcast>, head: string, own?: {
|
|
341
|
+
readonly connectionId: string;
|
|
342
|
+
readonly member: string;
|
|
343
|
+
readonly frames: import("../members.ts").ConnectionResult["sends"];
|
|
344
|
+
readonly replay?: boolean;
|
|
345
|
+
}) => Effect.Effect<void, never, SqlClient.SqlClient>;
|
|
346
|
+
open: (activation: import("../connections/owner.ts").Activation, request: {
|
|
347
|
+
readonly ref: ActorRef;
|
|
348
|
+
readonly connectionId: string;
|
|
349
|
+
readonly holder: string;
|
|
350
|
+
readonly holderEpoch: string;
|
|
351
|
+
} & {
|
|
352
|
+
readonly member: string;
|
|
353
|
+
readonly caller: import("../../index.ts").Caller;
|
|
354
|
+
readonly params: string;
|
|
355
|
+
readonly commands: import("../../identity/connection.ts").ConnectionCommands;
|
|
356
|
+
}) => Effect.Effect<{
|
|
357
|
+
generation: string;
|
|
358
|
+
owner: string;
|
|
359
|
+
ownerEpoch: string;
|
|
360
|
+
_tag: "Opened";
|
|
361
|
+
baseline: string;
|
|
362
|
+
recovered: boolean;
|
|
363
|
+
value?: undefined;
|
|
364
|
+
} | {
|
|
365
|
+
_tag: "Failed";
|
|
366
|
+
value: string;
|
|
367
|
+
} | {
|
|
368
|
+
generation: string;
|
|
369
|
+
owner: string;
|
|
370
|
+
ownerEpoch: string;
|
|
371
|
+
value?: undefined;
|
|
372
|
+
_tag: "Opened";
|
|
373
|
+
baseline: string;
|
|
374
|
+
}, ActorError, Entity.CurrentAddress | Sharding.Sharding | SqlClient.SqlClient>;
|
|
375
|
+
frame: (activation: import("../connections/owner.ts").Activation, request: {
|
|
376
|
+
readonly ref: ActorRef;
|
|
377
|
+
readonly connectionId: string;
|
|
378
|
+
readonly holder: string;
|
|
379
|
+
readonly holderEpoch: string;
|
|
380
|
+
} & {
|
|
381
|
+
readonly seq: number;
|
|
382
|
+
readonly frame: string;
|
|
383
|
+
readonly authorizedUntil: number;
|
|
384
|
+
readonly commands: import("../../identity/connection.ts").ConnectionCommands;
|
|
385
|
+
}) => Effect.Effect<{
|
|
386
|
+
_tag: "Closed";
|
|
387
|
+
ended: import("../../index.ts").SessionEnded;
|
|
388
|
+
} | {
|
|
389
|
+
generation: string;
|
|
390
|
+
owner: string;
|
|
391
|
+
ownerEpoch: string;
|
|
392
|
+
_tag: "Acked";
|
|
393
|
+
}, ActorError, Entity.CurrentAddress | Sharding.Sharding | SqlClient.SqlClient>;
|
|
394
|
+
close: (activation: import("../connections/owner.ts").Activation, request: {
|
|
395
|
+
readonly ref: ActorRef;
|
|
396
|
+
readonly connectionId: string;
|
|
397
|
+
readonly holder: string;
|
|
398
|
+
readonly holderEpoch: string;
|
|
399
|
+
} & {
|
|
400
|
+
readonly cause: import("../../index.ts").SessionEnded;
|
|
401
|
+
}) => Effect.Effect<void, ActorError, Entity.CurrentAddress | Sharding.Sharding | SqlClient.SqlClient>;
|
|
402
|
+
resync: (activation: import("../connections/owner.ts").Activation, request: {
|
|
403
|
+
readonly ref: ActorRef;
|
|
404
|
+
readonly connectionId: string;
|
|
405
|
+
readonly holder: string;
|
|
406
|
+
readonly holderEpoch: string;
|
|
407
|
+
} & {
|
|
408
|
+
readonly after?: string | undefined;
|
|
409
|
+
readonly authorizedUntil: number;
|
|
410
|
+
}) => Effect.Effect<{
|
|
411
|
+
_tag: "Closed";
|
|
412
|
+
ended: import("../../index.ts").SessionEnded;
|
|
413
|
+
} | {
|
|
414
|
+
generation: string;
|
|
415
|
+
owner: string;
|
|
416
|
+
ownerEpoch: string;
|
|
417
|
+
_tag: "Replayed";
|
|
418
|
+
}, ActorError, Entity.CurrentAddress | Sharding.Sharding | SqlClient.SqlClient>;
|
|
419
|
+
};
|
|
420
|
+
/** This type's view of one activation, for a delivery that timed out. */
|
|
421
|
+
diagnose: (entityId: string) => ActivationDiagnosis;
|
|
422
|
+
/** Activations of this type being rebuilt or restarted in place now. */
|
|
423
|
+
restarting: () => string[];
|
|
424
|
+
}, never, Crypto.Crypto | DefectLog | Scope.Scope | Sharding.Sharding | SqlClient.SqlClient>;
|