@akterjs/effect 0.0.0-stage → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +43 -2
- package/dist/contract/actor/actor-already-exists.errors.d.mts +8 -0
- package/dist/contract/actor/actor-already-exists.errors.mjs +4 -0
- package/dist/contract/actor/actor-definition.pure.d.mts +21 -0
- package/dist/contract/actor/actor-definition.pure.mjs +106 -0
- package/dist/contract/actor/actor-erased.errors.d.mts +8 -0
- package/dist/contract/actor/actor-erased.errors.mjs +4 -0
- package/dist/contract/actor/actor-names.pure.d.mts +11 -0
- package/dist/contract/actor/actor-names.pure.mjs +51 -0
- package/dist/contract/actor/actor-not-created.errors.d.mts +8 -0
- package/dist/contract/actor/actor-not-created.errors.mjs +4 -0
- package/dist/contract/actor/actor-not-registered.errors.d.mts +8 -0
- package/dist/contract/actor/actor-not-registered.errors.mjs +4 -0
- package/dist/contract/actor/actor-registry.service.d.mts +16 -0
- package/dist/contract/actor/actor-registry.service.mjs +21 -0
- package/dist/contract/actor/actor.contract.d.mts +238 -0
- package/dist/contract/actor/actor.contract.mjs +1 -0
- package/dist/contract/actor/host-interface.pure.d.mts +23 -0
- package/dist/contract/actor/host-interface.pure.mjs +39 -0
- package/dist/contract/actor/reserved-member.errors.d.mts +9 -0
- package/dist/contract/actor/reserved-member.errors.mjs +7 -0
- package/dist/contract/akter.service.d.mts +75 -0
- package/dist/contract/akter.service.mjs +134 -0
- package/dist/contract/caller/authentication.api.d.mts +6 -0
- package/dist/contract/caller/authentication.api.mjs +5 -0
- package/dist/contract/caller/caller-admission.pure.d.mts +27 -0
- package/dist/contract/caller/caller-admission.pure.mjs +59 -0
- package/dist/contract/caller/caller-not-allowed.errors.d.mts +16 -0
- package/dist/contract/caller/caller-not-allowed.errors.mjs +18 -0
- package/dist/contract/caller/caller.schema.d.mts +7 -0
- package/dist/contract/caller/caller.schema.mjs +8 -0
- package/dist/contract/caller/current-caller.service.d.mts +7 -0
- package/dist/contract/caller/current-caller.service.mjs +4 -0
- package/dist/contract/caller/principal.schema.d.mts +13 -0
- package/dist/contract/caller/principal.schema.mjs +10 -0
- package/dist/contract/caller/unauthenticated.errors.d.mts +8 -0
- package/dist/contract/caller/unauthenticated.errors.mjs +4 -0
- package/dist/contract/client/actor-client.adapter.d.mts +42 -0
- package/dist/contract/client/actor-client.adapter.mjs +90 -0
- package/dist/contract/client/actor-client.contract.d.mts +30 -0
- package/dist/contract/client/actor-client.contract.mjs +1 -0
- package/dist/contract/client/actor-rpc.contract.d.mts +33 -0
- package/dist/contract/client/actor-rpc.contract.mjs +16 -0
- package/dist/contract/client/actor-unavailable.errors.d.mts +9 -0
- package/dist/contract/client/actor-unavailable.errors.mjs +7 -0
- package/dist/contract/client/client-failure.contract.d.mts +28 -0
- package/dist/contract/client/client-failure.contract.mjs +28 -0
- package/dist/contract/client/invalid-request.errors.d.mts +9 -0
- package/dist/contract/client/invalid-request.errors.mjs +7 -0
- package/dist/contract/client/storage-limit.errors.d.mts +16 -0
- package/dist/contract/client/storage-limit.errors.mjs +14 -0
- package/dist/contract/command/command-id-expired.errors.d.mts +11 -0
- package/dist/contract/command/command-id-expired.errors.mjs +9 -0
- package/dist/contract/command/command-id.schema.d.mts +3 -0
- package/dist/contract/command/command-id.schema.mjs +4 -0
- package/dist/contract/command/command.contract.d.mts +117 -0
- package/dist/contract/command/command.contract.mjs +111 -0
- package/dist/contract/command/outbox-id.pure.d.mts +9 -0
- package/dist/contract/command/outbox-id.pure.mjs +14 -0
- package/dist/contract/command/outbox.schema.d.mts +9 -0
- package/dist/contract/command/outbox.schema.mjs +10 -0
- package/dist/contract/command/timer.schema.d.mts +20 -0
- package/dist/contract/command/timer.schema.mjs +14 -0
- package/dist/contract/computer/checkpoint-expired.errors.d.mts +12 -0
- package/dist/contract/computer/checkpoint-expired.errors.mjs +8 -0
- package/dist/contract/computer/computer-client-failure.contract.d.mts +16 -0
- package/dist/contract/computer/computer-client-failure.contract.mjs +1 -0
- package/dist/contract/computer/computer-client.adapter.d.mts +21 -0
- package/dist/contract/computer/computer-client.adapter.mjs +70 -0
- package/dist/contract/computer/computer-client.contract.d.mts +56 -0
- package/dist/contract/computer/computer-client.contract.mjs +1 -0
- package/dist/contract/computer/computer-held.errors.d.mts +13 -0
- package/dist/contract/computer/computer-held.errors.mjs +11 -0
- package/dist/contract/computer/computer-limit.errors.d.mts +15 -0
- package/dist/contract/computer/computer-limit.errors.mjs +13 -0
- package/dist/contract/computer/computer-lost.errors.d.mts +12 -0
- package/dist/contract/computer/computer-lost.errors.mjs +8 -0
- package/dist/contract/computer/computer-not-found.errors.d.mts +9 -0
- package/dist/contract/computer/computer-not-found.errors.mjs +5 -0
- package/dist/contract/computer/computer.schema.d.mts +122 -0
- package/dist/contract/computer/computer.schema.mjs +117 -0
- package/dist/contract/computer/computers-unavailable.errors.d.mts +9 -0
- package/dist/contract/computer/computers-unavailable.errors.mjs +5 -0
- package/dist/contract/computer/files/computer-files.schema.d.mts +28 -0
- package/dist/contract/computer/files/computer-files.schema.mjs +24 -0
- package/dist/contract/computer/rpc/computer-rpc.contract.d.mts +108 -0
- package/dist/contract/computer/rpc/computer-rpc.contract.mjs +117 -0
- package/dist/contract/computer/step/computer-step.contract.d.mts +21 -0
- package/dist/contract/computer/step/computer-step.contract.mjs +89 -0
- package/dist/contract/computer/step/computer-step.schema.d.mts +69 -0
- package/dist/contract/computer/step/computer-step.schema.mjs +71 -0
- package/dist/contract/computer/step/step-failure.schema.d.mts +13 -0
- package/dist/contract/computer/step/step-failure.schema.mjs +24 -0
- package/dist/contract/computer/step/step-not-found.errors.d.mts +9 -0
- package/dist/contract/computer/step/step-not-found.errors.mjs +5 -0
- package/dist/contract/description/published-contract.pure.d.mts +51 -0
- package/dist/contract/description/published-contract.pure.mjs +75 -0
- package/dist/contract/file/access/file-access-denied.errors.d.mts +11 -0
- package/dist/contract/file/access/file-access-denied.errors.mjs +9 -0
- package/dist/contract/file/access/file-access.contract.d.mts +35 -0
- package/dist/contract/file/access/file-access.contract.mjs +32 -0
- package/dist/contract/file/actor-files.contract.d.mts +50 -0
- package/dist/contract/file/actor-files.contract.mjs +1 -0
- package/dist/contract/file/blob-transfer.errors.d.mts +9 -0
- package/dist/contract/file/blob-transfer.errors.mjs +7 -0
- package/dist/contract/file/file-client-failure.contract.d.mts +24 -0
- package/dist/contract/file/file-client-failure.contract.mjs +1 -0
- package/dist/contract/file/file-client.adapter.d.mts +17 -0
- package/dist/contract/file/file-client.adapter.mjs +21 -0
- package/dist/contract/file/file-client.contract.d.mts +14 -0
- package/dist/contract/file/file-client.contract.mjs +1 -0
- package/dist/contract/file/file-listing.pure.d.mts +6 -0
- package/dist/contract/file/file-listing.pure.mjs +18 -0
- package/dist/contract/file/file-not-found.errors.d.mts +8 -0
- package/dist/contract/file/file-not-found.errors.mjs +4 -0
- package/dist/contract/file/file-path.pure.d.mts +4 -0
- package/dist/contract/file/file-path.pure.mjs +38 -0
- package/dist/contract/file/files-unavailable.errors.d.mts +8 -0
- package/dist/contract/file/files-unavailable.errors.mjs +4 -0
- package/dist/contract/file/invalid-file-request.errors.d.mts +9 -0
- package/dist/contract/file/invalid-file-request.errors.mjs +7 -0
- package/dist/contract/file/rpc/file-rpc.contract.d.mts +88 -0
- package/dist/contract/file/rpc/file-rpc.contract.mjs +117 -0
- package/dist/contract/file/rpc/file-too-large.errors.d.mts +13 -0
- package/dist/contract/file/rpc/file-too-large.errors.mjs +11 -0
- package/dist/contract/file/rpc/rpc-file-clients.layer.d.mts +10 -0
- package/dist/contract/file/rpc/rpc-file-clients.layer.mjs +95 -0
- package/dist/contract/fork/fork-rpc.contract.d.mts +40 -0
- package/dist/contract/fork/fork-rpc.contract.mjs +26 -0
- package/dist/contract/history/actor-journal.service.d.mts +58 -0
- package/dist/contract/history/actor-journal.service.mjs +67 -0
- package/dist/contract/history/history-entry.pure.d.mts +79 -0
- package/dist/contract/history/history-entry.pure.mjs +95 -0
- package/dist/contract/hosted/handler-failed.errors.d.mts +16 -0
- package/dist/contract/hosted/handler-failed.errors.mjs +14 -0
- package/dist/contract/hosted/handler-failure.pure.d.mts +21 -0
- package/dist/contract/hosted/handler-failure.pure.mjs +86 -0
- package/dist/contract/hosted/hosted-actor.service.d.mts +23 -0
- package/dist/contract/hosted/hosted-actor.service.mjs +64 -0
- package/dist/contract/hosted/hosted-command.service.d.mts +20 -0
- package/dist/contract/hosted/hosted-command.service.mjs +88 -0
- package/dist/contract/hosted/hosted-create.service.d.mts +17 -0
- package/dist/contract/hosted/hosted-create.service.mjs +67 -0
- package/dist/contract/hosted/hosted-error.contract.d.mts +11 -0
- package/dist/contract/hosted/hosted-error.contract.mjs +1 -0
- package/dist/contract/hosted/hosted-failure.schema.d.mts +18 -0
- package/dist/contract/hosted/hosted-failure.schema.mjs +31 -0
- package/dist/contract/hosted/hosted-outcome.contract.d.mts +18 -0
- package/dist/contract/hosted/hosted-outcome.contract.mjs +1 -0
- package/dist/contract/hosted/hosted-query.service.d.mts +16 -0
- package/dist/contract/hosted/hosted-query.service.mjs +42 -0
- package/dist/contract/hosted/hosted-request.pure.d.mts +61 -0
- package/dist/contract/hosted/hosted-request.pure.mjs +91 -0
- package/dist/contract/job/job-id.pure.d.mts +11 -0
- package/dist/contract/job/job-id.pure.mjs +20 -0
- package/dist/contract/job/job-patches.contract.d.mts +32 -0
- package/dist/contract/job/job-patches.contract.mjs +45 -0
- package/dist/contract/job/job-signal.schema.d.mts +13 -0
- package/dist/contract/job/job-signal.schema.mjs +16 -0
- package/dist/contract/job/reserved-payload-field.errors.d.mts +10 -0
- package/dist/contract/job/reserved-payload-field.errors.mjs +8 -0
- package/dist/contract/job/started-job.schema.d.mts +7 -0
- package/dist/contract/job/started-job.schema.mjs +8 -0
- package/dist/contract/json-codec.pure.d.mts +7 -0
- package/dist/contract/json-codec.pure.mjs +14 -0
- package/dist/contract/room.contract.d.mts +75 -0
- package/dist/contract/room.contract.mjs +36 -0
- package/dist/contract/secret/actor-secrets.adapter.d.mts +33 -0
- package/dist/contract/secret/actor-secrets.adapter.mjs +38 -0
- package/dist/contract/secret/invalid-secret-name.errors.d.mts +10 -0
- package/dist/contract/secret/invalid-secret-name.errors.mjs +8 -0
- package/dist/contract/secret/secret-unavailable.errors.d.mts +11 -0
- package/dist/contract/secret/secret-unavailable.errors.mjs +10 -0
- package/dist/contract/secret/secret.schema.d.mts +25 -0
- package/dist/contract/secret/secret.schema.mjs +34 -0
- package/dist/contract/spend/billing-unavailable.errors.d.mts +12 -0
- package/dist/contract/spend/billing-unavailable.errors.mjs +8 -0
- package/dist/contract/spend/spend-cap-reached.errors.d.mts +17 -0
- package/dist/contract/spend/spend-cap-reached.errors.mjs +15 -0
- package/dist/contract/state/actor-state.pure.d.mts +38 -0
- package/dist/contract/state/actor-state.pure.mjs +153 -0
- package/dist/contract/state/actor-state.service.d.mts +45 -0
- package/dist/contract/state/actor-state.service.mjs +18 -0
- package/dist/contract/state/state-migration.pure.d.mts +11 -0
- package/dist/contract/state/state-migration.pure.mjs +23 -0
- package/dist/contract/state/state-read.pure.d.mts +12 -0
- package/dist/contract/state/state-read.pure.mjs +22 -0
- package/dist/contract/state/state-unreadable.errors.d.mts +9 -0
- package/dist/contract/state/state-unreadable.errors.mjs +7 -0
- package/dist/host/actor/actor-database.service.d.mts +46 -0
- package/dist/host/actor/actor-database.service.mjs +112 -0
- package/dist/host/actor/actor-exclusive.pure.d.mts +7 -0
- package/dist/host/actor/actor-exclusive.pure.mjs +16 -0
- package/dist/host/actor/actor-records.sql.d.mts +29 -0
- package/dist/host/actor/actor-records.sql.mjs +26 -0
- package/dist/host/actor/reserved-name.errors.d.mts +10 -0
- package/dist/host/actor/reserved-name.errors.mjs +8 -0
- package/dist/host/actor/reserved-names.pure.d.mts +15 -0
- package/dist/host/actor/reserved-names.pure.mjs +20 -0
- package/dist/host/actor/room.actor.d.mts +4 -0
- package/dist/host/actor/room.actor.mjs +36 -0
- package/dist/host/blob/blob-frames.pure.d.mts +7 -0
- package/dist/host/blob/blob-frames.pure.mjs +28 -0
- package/dist/host/blob/blob-grant.schema.d.mts +14 -0
- package/dist/host/blob/blob-grant.schema.mjs +15 -0
- package/dist/host/blob/blob-grants.service.d.mts +28 -0
- package/dist/host/blob/blob-grants.service.mjs +129 -0
- package/dist/host/blob/blob-keyring.service.d.mts +18 -0
- package/dist/host/blob/blob-keyring.service.mjs +4 -0
- package/dist/host/blob/blob-range.pure.d.mts +13 -0
- package/dist/host/blob/blob-range.pure.mjs +23 -0
- package/dist/host/blob/blob-sealing.contract.d.mts +37 -0
- package/dist/host/blob/blob-sealing.contract.mjs +1 -0
- package/dist/host/blob/blob-sealing.service.d.mts +11 -0
- package/dist/host/blob/blob-sealing.service.mjs +16 -0
- package/dist/host/blob/export/blob-archive.sql.d.mts +21 -0
- package/dist/host/blob/export/blob-archive.sql.mjs +75 -0
- package/dist/host/blob/export/blob-export-holds.sql.d.mts +49 -0
- package/dist/host/blob/export/blob-export-holds.sql.mjs +25 -0
- package/dist/host/blob/plain-blob-sealing.pure.d.mts +5 -0
- package/dist/host/blob/plain-blob-sealing.pure.mjs +55 -0
- package/dist/host/blob/reference/blob-catalog.sql.d.mts +40 -0
- package/dist/host/blob/reference/blob-catalog.sql.mjs +145 -0
- package/dist/host/blob/reference/blob-coordinator.pure.d.mts +10 -0
- package/dist/host/blob/reference/blob-coordinator.pure.mjs +153 -0
- package/dist/host/blob/reference/blob-file-page.sql.d.mts +13 -0
- package/dist/host/blob/reference/blob-file-page.sql.mjs +21 -0
- package/dist/host/blob/reference/blob-forks.sql.d.mts +21 -0
- package/dist/host/blob/reference/blob-forks.sql.mjs +40 -0
- package/dist/host/blob/reference/blob-lineage.sql.d.mts +14 -0
- package/dist/host/blob/reference/blob-lineage.sql.mjs +24 -0
- package/dist/host/blob/reference/blob-reads.pure.d.mts +15 -0
- package/dist/host/blob/reference/blob-reads.pure.mjs +97 -0
- package/dist/host/blob/reference/blob-receipts.sql.d.mts +71 -0
- package/dist/host/blob/reference/blob-receipts.sql.mjs +176 -0
- package/dist/host/blob/reference/blob-transfer-adopt.pure.d.mts +21 -0
- package/dist/host/blob/reference/blob-transfer-adopt.pure.mjs +68 -0
- package/dist/host/blob/reference/blob-transfer-fork.pure.d.mts +15 -0
- package/dist/host/blob/reference/blob-transfer-fork.pure.mjs +125 -0
- package/dist/host/blob/reference/blob-transfer-upkeep.pure.d.mts +18 -0
- package/dist/host/blob/reference/blob-transfer-upkeep.pure.mjs +54 -0
- package/dist/host/blob/reference/blob-transfer.pure.d.mts +85 -0
- package/dist/host/blob/reference/blob-transfer.pure.mjs +1 -0
- package/dist/host/blob/sealed-blob-sealing.pure.d.mts +10 -0
- package/dist/host/blob/sealed-blob-sealing.pure.mjs +130 -0
- package/dist/host/blob/stream/blob-directory.pure.d.mts +18 -0
- package/dist/host/blob/stream/blob-directory.pure.mjs +84 -0
- package/dist/host/blob/stream/blob-length.pure.d.mts +9 -0
- package/dist/host/blob/stream/blob-length.pure.mjs +19 -0
- package/dist/host/blob/stream/blob-writing.pure.d.mts +8 -0
- package/dist/host/blob/stream/blob-writing.pure.mjs +15 -0
- package/dist/host/command/batch/command-batch.sql.d.mts +61 -0
- package/dist/host/command/batch/command-batch.sql.mjs +100 -0
- package/dist/host/command/command-context.adapter.d.mts +47 -0
- package/dist/host/command/command-context.adapter.mjs +90 -0
- package/dist/host/command/command-id-age.pure.d.mts +13 -0
- package/dist/host/command/command-id-age.pure.mjs +31 -0
- package/dist/host/command/command-id-reuse.pure.d.mts +28 -0
- package/dist/host/command/command-id-reuse.pure.mjs +38 -0
- package/dist/host/command/command-id-reused.errors.d.mts +13 -0
- package/dist/host/command/command-id-reused.errors.mjs +11 -0
- package/dist/host/command/command-journal.sql.d.mts +84 -0
- package/dist/host/command/command-journal.sql.mjs +74 -0
- package/dist/host/command/command-rejected.errors.d.mts +8 -0
- package/dist/host/command/command-rejected.errors.mjs +4 -0
- package/dist/host/command/command-replay.service.d.mts +62 -0
- package/dist/host/command/command-replay.service.mjs +140 -0
- package/dist/host/command/command-reply.pure.d.mts +8 -0
- package/dist/host/command/command-reply.pure.mjs +12 -0
- package/dist/host/command/command-runner.service.d.mts +68 -0
- package/dist/host/command/command-runner.service.mjs +215 -0
- package/dist/host/command/files/command-file-inputs.sql.d.mts +51 -0
- package/dist/host/command/files/command-file-inputs.sql.mjs +59 -0
- package/dist/host/command/history-pruned.errors.d.mts +10 -0
- package/dist/host/command/history-pruned.errors.mjs +8 -0
- package/dist/host/command/replay/replay-cursor-stalled.errors.d.mts +9 -0
- package/dist/host/command/replay/replay-cursor-stalled.errors.mjs +7 -0
- package/dist/host/command/replay/replay-cursor.pure.d.mts +7 -0
- package/dist/host/command/replay/replay-cursor.pure.mjs +12 -0
- package/dist/host/computer/computer-steps.sql.d.mts +14 -0
- package/dist/host/computer/computer-steps.sql.mjs +76 -0
- package/dist/host/computer/job-computers.service.d.mts +20 -0
- package/dist/host/computer/job-computers.service.mjs +59 -0
- package/dist/host/computer/local-computer-files.layer.d.mts +11 -0
- package/dist/host/computer/local-computer-files.layer.mjs +69 -0
- package/dist/host/computer/local-computer-log.layer.d.mts +23 -0
- package/dist/host/computer/local-computer-log.layer.mjs +64 -0
- package/dist/host/computer/local-computer-records.layer.d.mts +190 -0
- package/dist/host/computer/local-computer-records.layer.mjs +99 -0
- package/dist/host/computer/local-computer.schema.d.mts +69 -0
- package/dist/host/computer/local-computer.schema.mjs +29 -0
- package/dist/host/computer/local-computers.adapter.d.mts +18 -0
- package/dist/host/computer/local-computers.adapter.mjs +248 -0
- package/dist/host/computer/local-step.layer.d.mts +30 -0
- package/dist/host/computer/local-step.layer.mjs +119 -0
- package/dist/host/file/actor-file-storage.sql.d.mts +15 -0
- package/dist/host/file/actor-file-storage.sql.mjs +82 -0
- package/dist/host/file/actor-files.sql.d.mts +9 -0
- package/dist/host/file/actor-files.sql.mjs +3 -0
- package/dist/host/file/blob-home-lock.pure.d.mts +8 -0
- package/dist/host/file/blob-home-lock.pure.mjs +10 -0
- package/dist/host/file/blob-home.sql.d.mts +19 -0
- package/dist/host/file/blob-home.sql.mjs +30 -0
- package/dist/host/file/local-blob-home.service.d.mts +16 -0
- package/dist/host/file/local-blob-home.service.mjs +43 -0
- package/dist/host/file/local-blob-owner.sql.d.mts +30 -0
- package/dist/host/file/local-blob-owner.sql.mjs +68 -0
- package/dist/host/file/local-file-upkeep.pure.d.mts +12 -0
- package/dist/host/file/local-file-upkeep.pure.mjs +41 -0
- package/dist/host/file/replay-file-storage.sql.d.mts +7 -0
- package/dist/host/file/replay-file-storage.sql.mjs +26 -0
- package/dist/host/fork/actor-fork.sql.d.mts +52 -0
- package/dist/host/fork/actor-fork.sql.mjs +42 -0
- package/dist/host/fork/fork-computers.adapter.d.mts +43 -0
- package/dist/host/fork/fork-computers.adapter.mjs +193 -0
- package/dist/host/hash/blob-hashing.service.d.mts +10 -0
- package/dist/host/hash/blob-hashing.service.mjs +4 -0
- package/dist/host/job/job-durables.sql.d.mts +44 -0
- package/dist/host/job/job-durables.sql.mjs +136 -0
- package/dist/host/job/job-engine.adapter.d.mts +33 -0
- package/dist/host/job/job-engine.adapter.mjs +258 -0
- package/dist/host/job/job-journal.sql.d.mts +85 -0
- package/dist/host/job/job-journal.sql.mjs +109 -0
- package/dist/host/job/job-results.service.d.mts +37 -0
- package/dist/host/job/job-results.service.mjs +63 -0
- package/dist/host/job/job-runs.pure.d.mts +103 -0
- package/dist/host/job/job-runs.pure.mjs +193 -0
- package/dist/host/job/undelivered-result.pure.d.mts +49 -0
- package/dist/host/job/undelivered-result.pure.mjs +147 -0
- package/dist/host/layout/actor-layout.sql.d.mts +8 -0
- package/dist/host/layout/actor-layout.sql.mjs +33 -0
- package/dist/host/layout/layout-version.errors.d.mts +10 -0
- package/dist/host/layout/layout-version.errors.mjs +8 -0
- package/dist/host/layout/layout-version.pure.d.mts +10 -0
- package/dist/host/layout/layout-version.pure.mjs +14 -0
- package/dist/host/migration/actor-migrations.service.d.mts +46 -0
- package/dist/host/migration/actor-migrations.service.mjs +143 -0
- package/dist/host/migration/migration-edited.errors.d.mts +9 -0
- package/dist/host/migration/migration-edited.errors.mjs +7 -0
- package/dist/host/migration/migration-failed.errors.d.mts +12 -0
- package/dist/host/migration/migration-failed.errors.mjs +10 -0
- package/dist/host/migration/migration-failure.pure.d.mts +9 -0
- package/dist/host/migration/migration-failure.pure.mjs +19 -0
- package/dist/host/migration/migration-hasher.adapter.d.mts +15 -0
- package/dist/host/migration/migration-hasher.adapter.mjs +40 -0
- package/dist/host/migration/migration-missing.errors.d.mts +9 -0
- package/dist/host/migration/migration-missing.errors.mjs +7 -0
- package/dist/host/migration/migration-plan.pure.d.mts +20 -0
- package/dist/host/migration/migration-plan.pure.mjs +32 -0
- package/dist/host/outbox/actor-outbox.sql.d.mts +33 -0
- package/dist/host/outbox/actor-outbox.sql.mjs +28 -0
- package/dist/host/outbox/outbox-acknowledgements.sql.d.mts +12 -0
- package/dist/host/outbox/outbox-acknowledgements.sql.mjs +47 -0
- package/dist/host/outbox/outbox-runner.service.d.mts +37 -0
- package/dist/host/outbox/outbox-runner.service.mjs +155 -0
- package/dist/host/query/query-policy.pure.d.mts +15 -0
- package/dist/host/query/query-policy.pure.mjs +12 -0
- package/dist/host/query/query-runner.service.d.mts +42 -0
- package/dist/host/query/query-runner.service.mjs +72 -0
- package/dist/host/sqlite/actor-connections.pure.d.mts +26 -0
- package/dist/host/sqlite/actor-connections.pure.mjs +4 -0
- package/dist/host/sqlite/sqlite-connection.adapter.d.mts +22 -0
- package/dist/host/sqlite/sqlite-connection.adapter.mjs +151 -0
- package/dist/host/sqlite/sqlite-driver.service.d.mts +33 -0
- package/dist/host/sqlite/sqlite-driver.service.mjs +88 -0
- package/dist/host/sqlite/sqlite-parameters.pure.d.mts +5 -0
- package/dist/host/sqlite/sqlite-parameters.pure.mjs +21 -0
- package/dist/host/sqlite/sqlite-reason.pure.d.mts +8 -0
- package/dist/host/sqlite/sqlite-reason.pure.mjs +13 -0
- package/dist/host/timer/actor-timers.sql.d.mts +32 -0
- package/dist/host/timer/actor-timers.sql.mjs +8 -0
- package/dist/host/timer/timer-runner.service.d.mts +26 -0
- package/dist/host/timer/timer-runner.service.mjs +68 -0
- package/dist/host/upkeep/actor-due.sql.d.mts +26 -0
- package/dist/host/upkeep/actor-due.sql.mjs +43 -0
- package/dist/host/upkeep/actor-upkeep.service.d.mts +55 -0
- package/dist/host/upkeep/actor-upkeep.service.mjs +218 -0
- package/dist/host/upkeep/execution-authority.pure.d.mts +19 -0
- package/dist/host/upkeep/execution-authority.pure.mjs +10 -0
- package/dist/runtime/akter-local.layer.d.mts +28 -0
- package/dist/runtime/akter-local.layer.mjs +24 -0
- package/dist/runtime/akter.layer.d.mts +91 -0
- package/dist/runtime/akter.layer.mjs +99 -0
- package/dist/runtime/blob-hashing.layer.d.mts +4 -0
- package/dist/runtime/blob-hashing.layer.mjs +15 -0
- package/dist/runtime/hosted-environment.layer.d.mts +34 -0
- package/dist/runtime/hosted-environment.layer.mjs +40 -0
- package/dist/runtime/http-server.layer.d.mts +9 -0
- package/dist/runtime/http-server.layer.mjs +15 -0
- package/dist/runtime/local-actor-engine.layer.d.mts +10 -0
- package/dist/runtime/local-actor-engine.layer.mjs +14 -0
- package/dist/runtime/local-engine.layer.d.mts +15 -0
- package/dist/runtime/local-engine.layer.mjs +14 -0
- package/dist/runtime/local-environments.layer.d.mts +24 -0
- package/dist/runtime/local-environments.layer.mjs +159 -0
- package/dist/runtime/local-file-clients.layer.d.mts +13 -0
- package/dist/runtime/local-file-clients.layer.mjs +78 -0
- package/dist/runtime/local-job-runtime.layer.d.mts +19 -0
- package/dist/runtime/local-job-runtime.layer.mjs +21 -0
- package/dist/serve/archive/archived-actors.layer.d.mts +17 -0
- package/dist/serve/archive/archived-actors.layer.mjs +84 -0
- package/dist/serve/archive/archived-store.layer.d.mts +12 -0
- package/dist/serve/archive/archived-store.layer.mjs +40 -0
- package/dist/serve/engine/actor-engine.layer.d.mts +8 -0
- package/dist/serve/engine/actor-engine.layer.mjs +30 -0
- package/dist/serve/engine/actor-fork.service.d.mts +63 -0
- package/dist/serve/engine/actor-fork.service.mjs +277 -0
- package/dist/serve/engine/actor-holding.pure.d.mts +7 -0
- package/dist/serve/engine/actor-holding.pure.mjs +9 -0
- package/dist/serve/engine/actor-host.service.d.mts +66 -0
- package/dist/serve/engine/actor-host.service.mjs +209 -0
- package/dist/serve/engine/actor-location.service.d.mts +38 -0
- package/dist/serve/engine/actor-location.service.mjs +109 -0
- package/dist/serve/engine/actor-residents.pure.d.mts +92 -0
- package/dist/serve/engine/actor-residents.pure.mjs +201 -0
- package/dist/serve/engine/actor-shard.pure.d.mts +4 -0
- package/dist/serve/engine/actor-shard.pure.mjs +8 -0
- package/dist/serve/engine/actor-state.pure.d.mts +17 -0
- package/dist/serve/engine/actor-state.pure.mjs +20 -0
- package/dist/serve/engine/actors-not-hosted.errors.d.mts +9 -0
- package/dist/serve/engine/actors-not-hosted.errors.mjs +7 -0
- package/dist/serve/engine/job-runtime.layer.d.mts +6 -0
- package/dist/serve/engine/job-runtime.layer.mjs +5 -0
- package/dist/serve/environment/environment-already-exists.errors.d.mts +10 -0
- package/dist/serve/environment/environment-already-exists.errors.mjs +9 -0
- package/dist/serve/environment/environment-in-use.errors.d.mts +10 -0
- package/dist/serve/environment/environment-in-use.errors.mjs +14 -0
- package/dist/serve/environment/environment-not-found.errors.d.mts +10 -0
- package/dist/serve/environment/environment-not-found.errors.mjs +9 -0
- package/dist/serve/environment/environment-records.sql.d.mts +92 -0
- package/dist/serve/environment/environment-records.sql.mjs +59 -0
- package/dist/serve/environment/environment-store.sql.d.mts +38 -0
- package/dist/serve/environment/environment-store.sql.mjs +78 -0
- package/dist/serve/environment/local-environment.schema.d.mts +38 -0
- package/dist/serve/environment/local-environment.schema.mjs +43 -0
- package/dist/serve/environment/local-environments.service.d.mts +44 -0
- package/dist/serve/environment/local-environments.service.mjs +196 -0
- package/dist/serve/environment/promotion-notice.pure.d.mts +22 -0
- package/dist/serve/environment/promotion-notice.pure.mjs +30 -0
- package/dist/serve/environment/snapshot-operations.sql.d.mts +32 -0
- package/dist/serve/environment/snapshot-operations.sql.mjs +131 -0
- package/dist/serve/environment/store-snapshot.sql.d.mts +32 -0
- package/dist/serve/environment/store-snapshot.sql.mjs +74 -0
- package/dist/serve/erasure/local-actor-erasure.service.d.mts +26 -0
- package/dist/serve/erasure/local-actor-erasure.service.mjs +102 -0
- package/dist/serve/history/actor-host-runners.service.d.mts +23 -0
- package/dist/serve/history/actor-host-runners.service.mjs +35 -0
- package/dist/serve/hosted/hosted-app-build.errors.d.mts +13 -0
- package/dist/serve/hosted/hosted-app-build.errors.mjs +9 -0
- package/dist/serve/hosted/hosted-app-checks.layer.d.mts +15 -0
- package/dist/serve/hosted/hosted-app-checks.layer.mjs +32 -0
- package/dist/serve/hosted/hosted-file-forward.layer.d.mts +22 -0
- package/dist/serve/hosted/hosted-file-forward.layer.mjs +42 -0
- package/dist/serve/hosted/hosted-file-rpcs.layer.d.mts +25 -0
- package/dist/serve/hosted/hosted-file-rpcs.layer.mjs +82 -0
- package/dist/serve/hosted/hosted-file-server.layer.d.mts +18 -0
- package/dist/serve/hosted/hosted-file-server.layer.mjs +33 -0
- package/dist/serve/hosted/hosted-files.layer.d.mts +32 -0
- package/dist/serve/hosted/hosted-files.layer.mjs +55 -0
- package/dist/serve/hosted/hosted-runtime.layer.d.mts +42 -0
- package/dist/serve/hosted/hosted-runtime.layer.mjs +48 -0
- package/dist/serve/hosted/hosted-runtime.service.d.mts +77 -0
- package/dist/serve/hosted/hosted-runtime.service.mjs +74 -0
- package/dist/serve/hosted/hosted-secrets.layer.d.mts +10 -0
- package/dist/serve/hosted/hosted-secrets.layer.mjs +28 -0
- package/dist/serve/http/loopback-host.pure.d.mts +11 -0
- package/dist/serve/http/loopback-host.pure.mjs +29 -0
- package/dist/serve/inspect/actor-inspection.schema.d.mts +119 -0
- package/dist/serve/inspect/actor-inspection.schema.mjs +75 -0
- package/dist/serve/inspect/actor-inspection.sql.d.mts +12 -0
- package/dist/serve/inspect/actor-inspection.sql.mjs +43 -0
- package/dist/serve/inspect/inspect.service.d.mts +24 -0
- package/dist/serve/inspect/inspect.service.mjs +92 -0
- package/dist/serve/inspect/inspector-page.pure.d.mts +2 -0
- package/dist/serve/inspect/inspector-page.pure.mjs +155 -0
- package/dist/serve/inspect/inspector-wal.pure.d.mts +3 -0
- package/dist/serve/inspect/inspector-wal.pure.mjs +19 -0
- package/dist/serve/inspect/inspector.handlers.d.mts +5 -0
- package/dist/serve/inspect/inspector.handlers.mjs +50 -0
- package/dist/serve/inspect/inspector.layer.d.mts +9 -0
- package/dist/serve/inspect/inspector.layer.mjs +14 -0
- package/dist/serve/live/live-reads.service.d.mts +44 -0
- package/dist/serve/live/live-reads.service.mjs +152 -0
- package/dist/serve/live/live-tables.sql.d.mts +35 -0
- package/dist/serve/live/live-tables.sql.mjs +66 -0
- package/dist/serve/live/state-reads.pure.d.mts +11 -0
- package/dist/serve/live/state-reads.pure.mjs +7 -0
- package/dist/serve/rpc/actor-rpc.handlers.d.mts +24 -0
- package/dist/serve/rpc/actor-rpc.handlers.mjs +142 -0
- package/dist/serve/rpc/akter-server.layer.d.mts +18 -0
- package/dist/serve/rpc/akter-server.layer.mjs +61 -0
- package/dist/serve/rpc/computer/computer-copy.layer.d.mts +22 -0
- package/dist/serve/rpc/computer/computer-copy.layer.mjs +70 -0
- package/dist/serve/rpc/computer/computer-rpc-access.pure.d.mts +29 -0
- package/dist/serve/rpc/computer/computer-rpc-access.pure.mjs +46 -0
- package/dist/serve/rpc/computer/computer-rpc.layer.d.mts +39 -0
- package/dist/serve/rpc/computer/computer-rpc.layer.mjs +84 -0
- package/dist/serve/rpc/computer/step-rpc.handlers.d.mts +23 -0
- package/dist/serve/rpc/computer/step-rpc.handlers.mjs +43 -0
- package/dist/serve/rpc/development-authentication.handlers.d.mts +7 -0
- package/dist/serve/rpc/development-authentication.handlers.mjs +19 -0
- package/dist/serve/rpc/development-guard.pure.d.mts +10 -0
- package/dist/serve/rpc/development-guard.pure.mjs +16 -0
- package/dist/serve/rpc/file/file-rpc-access.pure.d.mts +55 -0
- package/dist/serve/rpc/file/file-rpc-access.pure.mjs +67 -0
- package/dist/serve/rpc/file/file-rpc.layer.d.mts +53 -0
- package/dist/serve/rpc/file/file-rpc.layer.mjs +143 -0
- package/dist/serve/rpc/file/upload-sessions.pure.d.mts +45 -0
- package/dist/serve/rpc/file/upload-sessions.pure.mjs +187 -0
- package/dist/serve/rpc/in-process-client.layer.d.mts +13 -0
- package/dist/serve/rpc/in-process-client.layer.mjs +34 -0
- package/dist/serve/rpc/listener-not-loopback.errors.d.mts +9 -0
- package/dist/serve/rpc/listener-not-loopback.errors.mjs +7 -0
- package/dist/serve/rpc/ndjson-only.pure.d.mts +5 -0
- package/dist/serve/rpc/ndjson-only.pure.mjs +14 -0
- package/dist/serve/rpc/served-rpc.layer.d.mts +6 -0
- package/dist/serve/rpc/served-rpc.layer.mjs +19 -0
- package/dist/serve/store/actor-not-migrated.errors.d.mts +10 -0
- package/dist/serve/store/actor-not-migrated.errors.mjs +8 -0
- package/dist/serve/store/store-migrations.layer.d.mts +5 -0
- package/dist/serve/store/store-migrations.layer.mjs +18 -0
- package/dist/serve/store/store-migrations.service.d.mts +26 -0
- package/dist/serve/store/store-migrations.service.mjs +47 -0
- package/dist/serve/store/store-unreadable.errors.d.mts +9 -0
- package/dist/serve/store/store-unreadable.errors.mjs +7 -0
- package/dist/serve/verify/verify.layer.d.mts +16 -0
- package/dist/serve/verify/verify.layer.mjs +36 -0
- package/dist/testing/story-driver.service.d.mts +29 -0
- package/dist/testing/story-driver.service.mjs +126 -0
- package/dist/testing/story.layer.d.mts +21 -0
- package/dist/testing/story.layer.mjs +42 -0
- package/package.json +106 -3
- package/src/contract/actor/actor-already-exists.errors.ts +8 -0
- package/src/contract/actor/actor-definition.pure.ts +157 -0
- package/src/contract/actor/actor-erased.errors.ts +8 -0
- package/src/contract/actor/actor-names.pure.ts +64 -0
- package/src/contract/actor/actor-not-created.errors.ts +8 -0
- package/src/contract/actor/actor-not-registered.errors.ts +8 -0
- package/src/contract/actor/actor-registry.service.ts +35 -0
- package/src/contract/actor/actor.contract.ts +409 -0
- package/src/contract/actor/host-interface.pure.ts +60 -0
- package/src/contract/actor/reserved-member.errors.ts +9 -0
- package/src/contract/akter.service.ts +233 -0
- package/src/contract/caller/authentication.api.ts +9 -0
- package/src/contract/caller/caller-admission.pure.ts +90 -0
- package/src/contract/caller/caller-not-allowed.errors.ts +26 -0
- package/src/contract/caller/caller.schema.ts +7 -0
- package/src/contract/caller/current-caller.service.ts +7 -0
- package/src/contract/caller/principal.schema.ts +13 -0
- package/src/contract/caller/unauthenticated.errors.ts +8 -0
- package/src/contract/client/actor-client.adapter.ts +217 -0
- package/src/contract/client/actor-client.contract.ts +53 -0
- package/src/contract/client/actor-rpc.contract.ts +91 -0
- package/src/contract/client/actor-unavailable.errors.ts +9 -0
- package/src/contract/client/client-failure.contract.ts +53 -0
- package/src/contract/client/invalid-request.errors.ts +9 -0
- package/src/contract/client/storage-limit.errors.ts +16 -0
- package/src/contract/command/command-id-expired.errors.ts +11 -0
- package/src/contract/command/command-id.schema.ts +5 -0
- package/src/contract/command/command.contract.ts +334 -0
- package/src/contract/command/outbox-id.pure.ts +25 -0
- package/src/contract/command/outbox.schema.ts +11 -0
- package/src/contract/command/timer.schema.ts +21 -0
- package/src/contract/computer/checkpoint-expired.errors.ts +12 -0
- package/src/contract/computer/computer-client-failure.contract.ts +27 -0
- package/src/contract/computer/computer-client.adapter.ts +110 -0
- package/src/contract/computer/computer-client.contract.ts +75 -0
- package/src/contract/computer/computer-held.errors.ts +10 -0
- package/src/contract/computer/computer-limit.errors.ts +11 -0
- package/src/contract/computer/computer-lost.errors.ts +10 -0
- package/src/contract/computer/computer-not-found.errors.ts +9 -0
- package/src/contract/computer/computer.schema.ts +159 -0
- package/src/contract/computer/computers-unavailable.errors.ts +9 -0
- package/src/contract/computer/files/computer-files.schema.ts +31 -0
- package/src/contract/computer/rpc/computer-rpc.contract.ts +140 -0
- package/src/contract/computer/step/computer-step.contract.ts +126 -0
- package/src/contract/computer/step/computer-step.schema.ts +80 -0
- package/src/contract/computer/step/step-failure.schema.ts +26 -0
- package/src/contract/computer/step/step-not-found.errors.ts +7 -0
- package/src/contract/description/published-contract.pure.ts +187 -0
- package/src/contract/file/access/file-access-denied.errors.ts +11 -0
- package/src/contract/file/access/file-access.contract.ts +56 -0
- package/src/contract/file/actor-files.contract.ts +78 -0
- package/src/contract/file/blob-transfer.errors.ts +6 -0
- package/src/contract/file/file-client-failure.contract.ts +43 -0
- package/src/contract/file/file-client.adapter.ts +45 -0
- package/src/contract/file/file-client.contract.ts +24 -0
- package/src/contract/file/file-listing.pure.ts +30 -0
- package/src/contract/file/file-not-found.errors.ts +6 -0
- package/src/contract/file/file-path.pure.ts +37 -0
- package/src/contract/file/files-unavailable.errors.ts +8 -0
- package/src/contract/file/invalid-file-request.errors.ts +9 -0
- package/src/contract/file/rpc/file-rpc.contract.ts +148 -0
- package/src/contract/file/rpc/file-too-large.errors.ts +10 -0
- package/src/contract/file/rpc/rpc-file-clients.layer.ts +184 -0
- package/src/contract/fork/fork-rpc.contract.ts +44 -0
- package/src/contract/history/actor-journal.service.ts +195 -0
- package/src/contract/history/history-entry.pure.ts +282 -0
- package/src/contract/hosted/handler-failed.errors.ts +16 -0
- package/src/contract/hosted/handler-failure.pure.ts +161 -0
- package/src/contract/hosted/hosted-actor.service.ts +97 -0
- package/src/contract/hosted/hosted-command.service.ts +114 -0
- package/src/contract/hosted/hosted-create.service.ts +95 -0
- package/src/contract/hosted/hosted-error.contract.ts +22 -0
- package/src/contract/hosted/hosted-failure.schema.ts +32 -0
- package/src/contract/hosted/hosted-outcome.contract.ts +21 -0
- package/src/contract/hosted/hosted-query.service.ts +50 -0
- package/src/contract/hosted/hosted-request.pure.ts +185 -0
- package/src/contract/job/job-id.pure.ts +37 -0
- package/src/contract/job/job-patches.contract.ts +86 -0
- package/src/contract/job/job-signal.schema.ts +23 -0
- package/src/contract/job/reserved-payload-field.errors.ts +10 -0
- package/src/contract/job/started-job.schema.ts +9 -0
- package/src/contract/json-codec.pure.ts +27 -0
- package/src/contract/room.contract.ts +31 -0
- package/src/contract/secret/actor-secrets.adapter.ts +87 -0
- package/src/contract/secret/invalid-secret-name.errors.ts +10 -0
- package/src/contract/secret/secret-unavailable.errors.ts +13 -0
- package/src/contract/secret/secret.schema.ts +43 -0
- package/src/contract/spend/billing-unavailable.errors.ts +12 -0
- package/src/contract/spend/spend-cap-reached.errors.ts +17 -0
- package/src/contract/state/actor-state.pure.ts +192 -0
- package/src/contract/state/actor-state.service.ts +69 -0
- package/src/contract/state/state-migration.pure.ts +57 -0
- package/src/contract/state/state-read.pure.ts +40 -0
- package/src/contract/state/state-unreadable.errors.ts +9 -0
- package/src/host/actor/actor-database.service.ts +145 -0
- package/src/host/actor/actor-exclusive.pure.ts +32 -0
- package/src/host/actor/actor-records.sql.ts +78 -0
- package/src/host/actor/reserved-name.errors.ts +10 -0
- package/src/host/actor/reserved-names.pure.ts +40 -0
- package/src/host/actor/room.actor.ts +57 -0
- package/src/host/blob/blob-frames.pure.ts +52 -0
- package/src/host/blob/blob-grant.schema.ts +22 -0
- package/src/host/blob/blob-grants.service.ts +197 -0
- package/src/host/blob/blob-keyring.service.ts +25 -0
- package/src/host/blob/blob-range.pure.ts +33 -0
- package/src/host/blob/blob-sealing.contract.ts +46 -0
- package/src/host/blob/blob-sealing.service.ts +25 -0
- package/src/host/blob/export/blob-archive.sql.ts +153 -0
- package/src/host/blob/export/blob-export-holds.sql.ts +91 -0
- package/src/host/blob/plain-blob-sealing.pure.ts +70 -0
- package/src/host/blob/reference/blob-catalog.sql.ts +339 -0
- package/src/host/blob/reference/blob-coordinator.pure.ts +217 -0
- package/src/host/blob/reference/blob-file-page.sql.ts +48 -0
- package/src/host/blob/reference/blob-forks.sql.ts +125 -0
- package/src/host/blob/reference/blob-lineage.sql.ts +63 -0
- package/src/host/blob/reference/blob-reads.pure.ts +172 -0
- package/src/host/blob/reference/blob-receipts.sql.ts +375 -0
- package/src/host/blob/reference/blob-transfer-adopt.pure.ts +127 -0
- package/src/host/blob/reference/blob-transfer-fork.pure.ts +174 -0
- package/src/host/blob/reference/blob-transfer-upkeep.pure.ts +132 -0
- package/src/host/blob/reference/blob-transfer.pure.ts +127 -0
- package/src/host/blob/sealed-blob-sealing.pure.ts +163 -0
- package/src/host/blob/stream/blob-directory.pure.ts +177 -0
- package/src/host/blob/stream/blob-length.pure.ts +40 -0
- package/src/host/blob/stream/blob-writing.pure.ts +49 -0
- package/src/host/command/batch/command-batch.sql.ts +207 -0
- package/src/host/command/command-context.adapter.ts +134 -0
- package/src/host/command/command-id-age.pure.ts +54 -0
- package/src/host/command/command-id-reuse.pure.ts +90 -0
- package/src/host/command/command-id-reused.errors.ts +13 -0
- package/src/host/command/command-journal.sql.ts +232 -0
- package/src/host/command/command-rejected.errors.ts +8 -0
- package/src/host/command/command-replay.service.ts +223 -0
- package/src/host/command/command-reply.pure.ts +21 -0
- package/src/host/command/command-runner.service.ts +320 -0
- package/src/host/command/files/command-file-inputs.sql.ts +114 -0
- package/src/host/command/history-pruned.errors.ts +10 -0
- package/src/host/command/replay/replay-cursor-stalled.errors.ts +9 -0
- package/src/host/command/replay/replay-cursor.pure.ts +19 -0
- package/src/host/computer/computer-steps.sql.ts +120 -0
- package/src/host/computer/job-computers.service.ts +84 -0
- package/src/host/computer/local-computer-files.layer.ts +103 -0
- package/src/host/computer/local-computer-log.layer.ts +115 -0
- package/src/host/computer/local-computer-records.layer.ts +205 -0
- package/src/host/computer/local-computer.schema.ts +36 -0
- package/src/host/computer/local-computers.adapter.ts +379 -0
- package/src/host/computer/local-step.layer.ts +174 -0
- package/src/host/file/actor-file-storage.sql.ts +79 -0
- package/src/host/file/actor-files.sql.ts +15 -0
- package/src/host/file/blob-home-lock.pure.ts +23 -0
- package/src/host/file/blob-home.sql.ts +55 -0
- package/src/host/file/local-blob-home.service.ts +71 -0
- package/src/host/file/local-blob-owner.sql.ts +89 -0
- package/src/host/file/local-file-upkeep.pure.ts +77 -0
- package/src/host/file/replay-file-storage.sql.ts +43 -0
- package/src/host/fork/actor-fork.sql.ts +110 -0
- package/src/host/fork/fork-computers.adapter.ts +366 -0
- package/src/host/hash/blob-hashing.service.ts +14 -0
- package/src/host/job/job-durables.sql.ts +214 -0
- package/src/host/job/job-engine.adapter.ts +420 -0
- package/src/host/job/job-journal.sql.ts +257 -0
- package/src/host/job/job-results.service.ts +111 -0
- package/src/host/job/job-runs.pure.ts +445 -0
- package/src/host/job/undelivered-result.pure.ts +265 -0
- package/src/host/layout/actor-layout.sql.ts +45 -0
- package/src/host/layout/layout-version.errors.ts +10 -0
- package/src/host/layout/layout-version.pure.ts +22 -0
- package/src/host/migration/actor-migrations.service.ts +159 -0
- package/src/host/migration/migration-edited.errors.ts +9 -0
- package/src/host/migration/migration-failed.errors.ts +12 -0
- package/src/host/migration/migration-failure.pure.ts +28 -0
- package/src/host/migration/migration-hasher.adapter.ts +70 -0
- package/src/host/migration/migration-missing.errors.ts +9 -0
- package/src/host/migration/migration-plan.pure.ts +66 -0
- package/src/host/outbox/actor-outbox.sql.ts +98 -0
- package/src/host/outbox/outbox-acknowledgements.sql.ts +93 -0
- package/src/host/outbox/outbox-runner.service.ts +253 -0
- package/src/host/query/query-policy.pure.ts +31 -0
- package/src/host/query/query-runner.service.ts +132 -0
- package/src/host/sqlite/actor-connections.pure.ts +44 -0
- package/src/host/sqlite/sqlite-connection.adapter.ts +260 -0
- package/src/host/sqlite/sqlite-driver.service.ts +151 -0
- package/src/host/sqlite/sqlite-parameters.pure.ts +28 -0
- package/src/host/sqlite/sqlite-reason.pure.ts +19 -0
- package/src/host/timer/actor-timers.sql.ts +67 -0
- package/src/host/timer/timer-runner.service.ts +117 -0
- package/src/host/upkeep/actor-due.sql.ts +71 -0
- package/src/host/upkeep/actor-upkeep.service.ts +404 -0
- package/src/host/upkeep/execution-authority.pure.ts +37 -0
- package/src/runtime/akter-local.layer.ts +49 -0
- package/src/runtime/akter.layer.ts +208 -0
- package/src/runtime/blob-hashing.layer.ts +21 -0
- package/src/runtime/hosted-environment.layer.ts +85 -0
- package/src/runtime/http-server.layer.ts +29 -0
- package/src/runtime/local-actor-engine.layer.ts +33 -0
- package/src/runtime/local-engine.layer.ts +37 -0
- package/src/runtime/local-environments.layer.ts +214 -0
- package/src/runtime/local-file-clients.layer.ts +112 -0
- package/src/runtime/local-job-runtime.layer.ts +38 -0
- package/src/serve/archive/archived-actors.layer.ts +97 -0
- package/src/serve/archive/archived-store.layer.ts +46 -0
- package/src/serve/engine/actor-engine.layer.ts +46 -0
- package/src/serve/engine/actor-fork.service.ts +403 -0
- package/src/serve/engine/actor-holding.pure.ts +28 -0
- package/src/serve/engine/actor-host.service.ts +454 -0
- package/src/serve/engine/actor-location.service.ts +219 -0
- package/src/serve/engine/actor-residents.pure.ts +500 -0
- package/src/serve/engine/actor-shard.pure.ts +13 -0
- package/src/serve/engine/actor-state.pure.ts +45 -0
- package/src/serve/engine/actors-not-hosted.errors.ts +9 -0
- package/src/serve/engine/job-runtime.layer.ts +13 -0
- package/src/serve/environment/environment-already-exists.errors.ts +9 -0
- package/src/serve/environment/environment-in-use.errors.ts +17 -0
- package/src/serve/environment/environment-not-found.errors.ts +9 -0
- package/src/serve/environment/environment-records.sql.ts +208 -0
- package/src/serve/environment/environment-store.sql.ts +116 -0
- package/src/serve/environment/local-environment.schema.ts +79 -0
- package/src/serve/environment/local-environments.service.ts +268 -0
- package/src/serve/environment/promotion-notice.pure.ts +63 -0
- package/src/serve/environment/snapshot-operations.sql.ts +210 -0
- package/src/serve/environment/store-snapshot.sql.ts +128 -0
- package/src/serve/erasure/local-actor-erasure.service.ts +170 -0
- package/src/serve/history/actor-host-runners.service.ts +85 -0
- package/src/serve/hosted/hosted-app-build.errors.ts +11 -0
- package/src/serve/hosted/hosted-app-checks.layer.ts +74 -0
- package/src/serve/hosted/hosted-file-forward.layer.ts +63 -0
- package/src/serve/hosted/hosted-file-rpcs.layer.ts +149 -0
- package/src/serve/hosted/hosted-file-server.layer.ts +75 -0
- package/src/serve/hosted/hosted-files.layer.ts +76 -0
- package/src/serve/hosted/hosted-runtime.layer.ts +145 -0
- package/src/serve/hosted/hosted-runtime.service.ts +128 -0
- package/src/serve/hosted/hosted-secrets.layer.ts +38 -0
- package/src/serve/http/loopback-host.pure.ts +67 -0
- package/src/serve/inspect/actor-inspection.schema.ts +94 -0
- package/src/serve/inspect/actor-inspection.sql.ts +112 -0
- package/src/serve/inspect/inspect.service.ts +173 -0
- package/src/serve/inspect/inspector-page.pure.ts +159 -0
- package/src/serve/inspect/inspector-wal.pure.ts +40 -0
- package/src/serve/inspect/inspector.handlers.ts +103 -0
- package/src/serve/inspect/inspector.layer.ts +26 -0
- package/src/serve/live/live-reads.service.ts +285 -0
- package/src/serve/live/live-tables.sql.ts +148 -0
- package/src/serve/live/state-reads.pure.ts +22 -0
- package/src/serve/rpc/actor-rpc.handlers.ts +242 -0
- package/src/serve/rpc/akter-server.layer.ts +119 -0
- package/src/serve/rpc/computer/computer-copy.layer.ts +95 -0
- package/src/serve/rpc/computer/computer-rpc-access.pure.ts +75 -0
- package/src/serve/rpc/computer/computer-rpc.layer.ts +143 -0
- package/src/serve/rpc/computer/step-rpc.handlers.ts +84 -0
- package/src/serve/rpc/development-authentication.handlers.ts +28 -0
- package/src/serve/rpc/development-guard.pure.ts +39 -0
- package/src/serve/rpc/file/file-rpc-access.pure.ts +119 -0
- package/src/serve/rpc/file/file-rpc.layer.ts +209 -0
- package/src/serve/rpc/file/upload-sessions.pure.ts +363 -0
- package/src/serve/rpc/in-process-client.layer.ts +62 -0
- package/src/serve/rpc/listener-not-loopback.errors.ts +9 -0
- package/src/serve/rpc/ndjson-only.pure.ts +33 -0
- package/src/serve/rpc/served-rpc.layer.ts +34 -0
- package/src/serve/store/actor-not-migrated.errors.ts +10 -0
- package/src/serve/store/store-migrations.layer.ts +35 -0
- package/src/serve/store/store-migrations.service.ts +76 -0
- package/src/serve/store/store-unreadable.errors.ts +9 -0
- package/src/serve/verify/verify.layer.ts +77 -0
- package/src/testing/story-driver.service.ts +266 -0
- package/src/testing/story.layer.ts +99 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { Array as Arr, Context, Option, Record as Rec, Schema, pipe } from "effect";
|
|
2
|
+
import type { Effect } from "effect";
|
|
3
|
+
import { Rpc, RpcGroup } from "effect/rpc";
|
|
4
|
+
|
|
5
|
+
import type {
|
|
6
|
+
ActorDefinition,
|
|
7
|
+
ActorHandlers,
|
|
8
|
+
AddressedCommand,
|
|
9
|
+
AddressedCommands,
|
|
10
|
+
ActorOptions,
|
|
11
|
+
DefinitionOf,
|
|
12
|
+
HostedActor,
|
|
13
|
+
PrincipalOf,
|
|
14
|
+
StateFields,
|
|
15
|
+
} from "./actor.contract.js";
|
|
16
|
+
import {
|
|
17
|
+
computerRpcsOf,
|
|
18
|
+
creationErrors,
|
|
19
|
+
creationModesOf,
|
|
20
|
+
fileRpcsOf,
|
|
21
|
+
forkRpcOf,
|
|
22
|
+
} from "#src/contract/client/actor-rpc.contract";
|
|
23
|
+
import type { ActorRpcs, CreationMode } from "#src/contract/client/actor-rpc.contract";
|
|
24
|
+
import { Authentication } from "#src/contract/caller/authentication.api";
|
|
25
|
+
import { CommandId } from "#src/contract/command/command-id.schema";
|
|
26
|
+
import { declaredSchema } from "#src/contract/command/command.contract";
|
|
27
|
+
import type { PlainSchema } from "#src/contract/command/command.contract";
|
|
28
|
+
import { HostedFailure } from "#src/contract/hosted/hosted-failure.schema";
|
|
29
|
+
import { Principal } from "#src/contract/caller/principal.schema";
|
|
30
|
+
import { rejectInvalidSecrets, rejectReserved } from "./actor-names.pure.js";
|
|
31
|
+
import type { Declaring } from "./actor-names.pure.js";
|
|
32
|
+
|
|
33
|
+
function definitionOf<Options extends ActorOptions>(declaring: Declaring<Options>): DefinitionOf<Options>;
|
|
34
|
+
function definitionOf(declaring: Declaring<ActorOptions>): ActorDefinition {
|
|
35
|
+
const { options } = declaring;
|
|
36
|
+
|
|
37
|
+
rejectReserved(declaring);
|
|
38
|
+
rejectInvalidSecrets(declaring);
|
|
39
|
+
|
|
40
|
+
return {
|
|
41
|
+
callers: options.callers ?? { user: Principal },
|
|
42
|
+
commands: options.commands,
|
|
43
|
+
create: pipe(
|
|
44
|
+
Option.fromNullishOr(options.create),
|
|
45
|
+
Option.match({ onNone: (): PlainSchema => Schema.Never, onSome: (input): PlainSchema => declaredSchema(input) }),
|
|
46
|
+
),
|
|
47
|
+
// A declaration admitting no caller kind, as the plain SDK compiles an actor without files to, is none.
|
|
48
|
+
fileAccess: Option.filter(Option.fromNullishOr(options.files), (declared) =>
|
|
49
|
+
Option.exists(declared.callers, Arr.isReadonlyArrayNonEmpty),
|
|
50
|
+
),
|
|
51
|
+
jobs: options.jobs ?? {},
|
|
52
|
+
key: options.key,
|
|
53
|
+
queries: options.queries ?? {},
|
|
54
|
+
secrets: Arr.dedupe(options.secrets ?? []),
|
|
55
|
+
state: options.state,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
interface Naming<Name extends string, Definition extends ActorDefinition> {
|
|
60
|
+
readonly definition: Definition;
|
|
61
|
+
readonly name: Name;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function commandsOf<Name extends string, Definition extends ActorDefinition>(
|
|
65
|
+
naming: Naming<Name, Definition>,
|
|
66
|
+
): AddressedCommands<Name, Definition>;
|
|
67
|
+
function commandsOf({ definition, name }: Naming<string, ActorDefinition>): Readonly<Record<string, AddressedCommand>> {
|
|
68
|
+
return Rec.map(definition.commands, (declaration, member) => ({
|
|
69
|
+
...declaration,
|
|
70
|
+
address: { actor: name, key: definition.key, member },
|
|
71
|
+
}));
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function initialOf<Options extends ActorOptions>(options: Options): Option.Option<() => Options["state"]["Type"]>;
|
|
75
|
+
function initialOf(options: ActorOptions): Option.Option<() => StateFields> {
|
|
76
|
+
return Option.fromNullishOr(options.initial);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
function principalOf<Definition extends ActorDefinition, Needs>(
|
|
80
|
+
principal: Effect.Effect<Principal, never, Needs>,
|
|
81
|
+
): Effect.Effect<PrincipalOf<Definition>, never, Needs>;
|
|
82
|
+
function principalOf<Needs>(principal: Effect.Effect<Principal, never, Needs>): Effect.Effect<Principal, never, Needs> {
|
|
83
|
+
return principal;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const handlersKey = <Name extends string>(name: Name): Context.Key<ActorHandlers<Name>, HostedActor> =>
|
|
87
|
+
Context.Service<ActorHandlers<Name>, HostedActor>(`@akterjs/effect/contract/actor-handlers/${name}`);
|
|
88
|
+
|
|
89
|
+
const failureOf = (declared: PlainSchema): PlainSchema => Schema.Union([declared, HostedFailure]);
|
|
90
|
+
|
|
91
|
+
const updateOf = (value: PlainSchema): PlainSchema => Schema.Struct({ value, version: Schema.Int });
|
|
92
|
+
|
|
93
|
+
const subscriptionTag = (name: string, member: string): `${string}/${string}/subscribe` =>
|
|
94
|
+
`${name}/${member}/subscribe`;
|
|
95
|
+
|
|
96
|
+
const creationTag = (name: string, mode: CreationMode): `${string}/${string}` => `${name}/${mode}`;
|
|
97
|
+
|
|
98
|
+
const created: PlainSchema = Schema.Void;
|
|
99
|
+
|
|
100
|
+
const warmTag = (name: string): `${string}/warm` => `${name}/warm`;
|
|
101
|
+
|
|
102
|
+
interface NamedDefinition {
|
|
103
|
+
readonly definition: ActorDefinition;
|
|
104
|
+
readonly name: string;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
const rpcsOf = ({ definition, name }: NamedDefinition): ActorRpcs =>
|
|
108
|
+
RpcGroup.make(
|
|
109
|
+
...Arr.map(Rec.toEntries(definition.commands), ([member, declaration]) =>
|
|
110
|
+
Rpc.make(`${name}/${member}`, {
|
|
111
|
+
error: failureOf(declaration.error),
|
|
112
|
+
payload: { commandId: CommandId, key: definition.key, payload: declaration.payload },
|
|
113
|
+
success: declaration.success,
|
|
114
|
+
}),
|
|
115
|
+
),
|
|
116
|
+
...Arr.map(Rec.toEntries(definition.queries), ([member, declaration]) =>
|
|
117
|
+
Rpc.make(`${name}/${member}`, {
|
|
118
|
+
error: failureOf(declaration.error),
|
|
119
|
+
payload: { key: definition.key, payload: declaration.payload },
|
|
120
|
+
success: declaration.success,
|
|
121
|
+
}),
|
|
122
|
+
),
|
|
123
|
+
...Arr.map(Rec.toEntries(definition.queries), ([member, declaration]) =>
|
|
124
|
+
Rpc.make(subscriptionTag(name, member), {
|
|
125
|
+
error: failureOf(declaration.error),
|
|
126
|
+
payload: { key: definition.key, payload: declaration.payload },
|
|
127
|
+
stream: true,
|
|
128
|
+
success: updateOf(declaration.success),
|
|
129
|
+
}),
|
|
130
|
+
),
|
|
131
|
+
...Arr.map(creationModesOf(definition.create), (mode) =>
|
|
132
|
+
Rpc.make(creationTag(name, mode), {
|
|
133
|
+
error: failureOf(creationErrors[mode]),
|
|
134
|
+
payload: { commandId: CommandId, key: definition.key, payload: definition.create },
|
|
135
|
+
success: created,
|
|
136
|
+
}),
|
|
137
|
+
),
|
|
138
|
+
Rpc.make(warmTag(name), {
|
|
139
|
+
error: failureOf(Schema.Never),
|
|
140
|
+
payload: { key: definition.key },
|
|
141
|
+
}),
|
|
142
|
+
Rpc.make(subscriptionTag(name, "state"), {
|
|
143
|
+
error: failureOf(Schema.Never),
|
|
144
|
+
payload: { key: definition.key },
|
|
145
|
+
stream: true,
|
|
146
|
+
success: updateOf(definition.state),
|
|
147
|
+
}),
|
|
148
|
+
...Option.match(definition.fileAccess, { onNone: () => [], onSome: () => fileRpcsOf(name) }),
|
|
149
|
+
forkRpcOf({ actor: name, key: definition.key }),
|
|
150
|
+
...computerRpcsOf(name),
|
|
151
|
+
).middleware(Authentication);
|
|
152
|
+
|
|
153
|
+
export { reservedMembers } from "./actor-names.pure.js";
|
|
154
|
+
|
|
155
|
+
export { fileAccess } from "#src/contract/file/access/file-access.contract";
|
|
156
|
+
|
|
157
|
+
export { commandsOf, definitionOf, handlersKey, initialOf, principalOf, rpcsOf };
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { Array as Arr, Option, Record as Rec, Schema } from "effect";
|
|
2
|
+
|
|
3
|
+
import type { ActorOptions, ReservedMember } from "./actor.contract.js";
|
|
4
|
+
import { ReservedMemberError } from "./reserved-member.errors.js";
|
|
5
|
+
import { InvalidSecretNameError } from "#src/contract/secret/invalid-secret-name.errors";
|
|
6
|
+
import { SecretName } from "#src/contract/secret/secret.schema";
|
|
7
|
+
|
|
8
|
+
const isSecretName = Schema.is(SecretName);
|
|
9
|
+
|
|
10
|
+
/** Every name the actor object and its clients use, so no command or query may take one. */
|
|
11
|
+
const reservedMembers: readonly ReservedMember[] = [
|
|
12
|
+
"callers",
|
|
13
|
+
"client",
|
|
14
|
+
"commands",
|
|
15
|
+
"computer",
|
|
16
|
+
"create",
|
|
17
|
+
"ensure",
|
|
18
|
+
"files",
|
|
19
|
+
"fork",
|
|
20
|
+
"handlers",
|
|
21
|
+
"history",
|
|
22
|
+
"historyStream",
|
|
23
|
+
"initial",
|
|
24
|
+
"jobs",
|
|
25
|
+
"key",
|
|
26
|
+
"name",
|
|
27
|
+
"principal",
|
|
28
|
+
"queries",
|
|
29
|
+
"rpcs",
|
|
30
|
+
"secret",
|
|
31
|
+
"secrets",
|
|
32
|
+
"state",
|
|
33
|
+
"then",
|
|
34
|
+
"toLayer",
|
|
35
|
+
"update",
|
|
36
|
+
"warm",
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
interface Declaring<Options extends ActorOptions> {
|
|
40
|
+
readonly name: string;
|
|
41
|
+
readonly options: Options;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const rejectReserved = ({ name, options }: Declaring<ActorOptions>): void => {
|
|
45
|
+
const members = [...Rec.keys(options.commands), ...Rec.keys(options.queries ?? {})];
|
|
46
|
+
const reserved = Arr.findFirst(members, (member) => Arr.contains(reservedMembers, member));
|
|
47
|
+
|
|
48
|
+
if (Option.isSome(reserved)) {
|
|
49
|
+
throw ReservedMemberError.make({ actor: name, member: reserved.value });
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
/** A secret name no environment could set is a mistake in the declaration, refused where the actor is made. */
|
|
54
|
+
const rejectInvalidSecrets = ({ name, options }: Declaring<ActorOptions>): void => {
|
|
55
|
+
const invalid = Arr.findFirst(options.secrets ?? [], (secret) => !isSecretName(secret));
|
|
56
|
+
|
|
57
|
+
if (Option.isSome(invalid)) {
|
|
58
|
+
throw InvalidSecretNameError.make({ actor: name, secret: invalid.value });
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
export { rejectInvalidSecrets, rejectReserved, reservedMembers };
|
|
63
|
+
|
|
64
|
+
export type { Declaring };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Context, Effect, HashMap, Layer, Option, Ref } from "effect";
|
|
2
|
+
|
|
3
|
+
import type { HostedActor } from "./actor.contract.js";
|
|
4
|
+
import { ActorNotRegisteredError } from "./actor-not-registered.errors.js";
|
|
5
|
+
|
|
6
|
+
export class ActorRegistry extends Context.Service<
|
|
7
|
+
ActorRegistry,
|
|
8
|
+
{
|
|
9
|
+
readonly lookup: (name: string) => Effect.Effect<HostedActor, ActorNotRegisteredError>;
|
|
10
|
+
readonly register: (actor: HostedActor) => Effect.Effect<void>;
|
|
11
|
+
}
|
|
12
|
+
>()("@akterjs/effect/contract/actor/actor-registry.service/ActorRegistry", {
|
|
13
|
+
make: Effect.gen(function* makeActorRegistry() {
|
|
14
|
+
const actors = yield* Ref.make(HashMap.empty<string, HostedActor>());
|
|
15
|
+
|
|
16
|
+
const register = Effect.fn("ActorRegistry.register")(function* register(actor: HostedActor) {
|
|
17
|
+
yield* Ref.update(actors, HashMap.set(actor.name, actor));
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
const lookup = Effect.fn("ActorRegistry.lookup")(function* lookup(name: string) {
|
|
21
|
+
const current = yield* Ref.get(actors);
|
|
22
|
+
const found = HashMap.get(current, name);
|
|
23
|
+
|
|
24
|
+
if (Option.isNone(found)) {
|
|
25
|
+
return yield* ActorNotRegisteredError.make({ actor: name });
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return found.value;
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
return { lookup, register } as const;
|
|
32
|
+
}),
|
|
33
|
+
}) {
|
|
34
|
+
public static readonly layer = Layer.effect(this, this.make);
|
|
35
|
+
}
|
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
import type { Context, Effect, Exit, Layer, Option, Schema } from "effect";
|
|
2
|
+
import type { SqlClient, SqlError } from "effect/sql";
|
|
3
|
+
|
|
4
|
+
import type { ClientOf, ComputerClientOf, FileClientOf, SecretOf } from "#src/contract/client/actor-client.adapter";
|
|
5
|
+
import type { ActorRpcs } from "#src/contract/client/actor-rpc.contract";
|
|
6
|
+
import type { ActorState, FileStorage } from "#src/contract/state/actor-state.service";
|
|
7
|
+
import type { Akter } from "#src/contract/akter.service";
|
|
8
|
+
import type {
|
|
9
|
+
ActorJobs,
|
|
10
|
+
AnyCommand,
|
|
11
|
+
AnyQuery,
|
|
12
|
+
Declared,
|
|
13
|
+
DeclaredSchema,
|
|
14
|
+
Jobs,
|
|
15
|
+
NoJobs,
|
|
16
|
+
PlainSchema,
|
|
17
|
+
} from "#src/contract/command/command.contract";
|
|
18
|
+
import type {
|
|
19
|
+
FileAccess,
|
|
20
|
+
FileAccessDeniedError,
|
|
21
|
+
FileAccessRequest,
|
|
22
|
+
} from "#src/contract/file/access/file-access.contract";
|
|
23
|
+
import type { HostedError, HostedOutcome, StateUnreadableError } from "#src/contract/hosted/hosted-error.contract";
|
|
24
|
+
import type { Principal } from "#src/contract/caller/principal.schema";
|
|
25
|
+
|
|
26
|
+
type Decoded = PlainSchema["Type"];
|
|
27
|
+
|
|
28
|
+
type StateFields = Readonly<Record<string, Decoded>>;
|
|
29
|
+
|
|
30
|
+
type KeySchema = PlainSchema & { readonly Encoded: string };
|
|
31
|
+
|
|
32
|
+
type StateSchema = PlainSchema & { readonly Type: StateFields };
|
|
33
|
+
|
|
34
|
+
type PrincipalSchema = PlainSchema & { readonly Type: Principal };
|
|
35
|
+
|
|
36
|
+
type CallersSchemas = Readonly<Record<string, PrincipalSchema>>;
|
|
37
|
+
|
|
38
|
+
type DefaultCallers = Readonly<Record<"user", typeof Principal>>;
|
|
39
|
+
|
|
40
|
+
interface CommandAddress<
|
|
41
|
+
Name extends string = string,
|
|
42
|
+
Key extends KeySchema = KeySchema,
|
|
43
|
+
Member extends string = string,
|
|
44
|
+
> {
|
|
45
|
+
readonly actor: Name;
|
|
46
|
+
readonly key: Key;
|
|
47
|
+
readonly member: Member;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
interface AddressedCommand extends AnyCommand {
|
|
51
|
+
readonly address: CommandAddress;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
interface ActorDefinition {
|
|
55
|
+
readonly callers: CallersSchemas;
|
|
56
|
+
readonly commands: Readonly<Record<string, AnyCommand>>;
|
|
57
|
+
readonly create: PlainSchema;
|
|
58
|
+
/** Which caller kinds may make file calls, as `Akter.fileAccess` declared it; none means the actor has no file calls. */
|
|
59
|
+
readonly fileAccess: Option.Option<FileAccess>;
|
|
60
|
+
readonly jobs: Jobs;
|
|
61
|
+
readonly key: KeySchema;
|
|
62
|
+
readonly queries: Readonly<Record<string, AnyQuery>>;
|
|
63
|
+
/** The secrets the actor's job activities may read, by name. Nothing reads one it doesn't list. */
|
|
64
|
+
readonly secrets: readonly string[];
|
|
65
|
+
readonly state: StateSchema;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
interface ActorOptions {
|
|
69
|
+
readonly callers?: CallersSchemas;
|
|
70
|
+
readonly commands: Readonly<Record<string, AnyCommand>>;
|
|
71
|
+
readonly create?: Declared;
|
|
72
|
+
readonly files?: FileAccess;
|
|
73
|
+
readonly initial?: () => StateFields;
|
|
74
|
+
readonly jobs?: Jobs;
|
|
75
|
+
readonly key: KeySchema;
|
|
76
|
+
readonly queries?: Readonly<Record<string, AnyQuery>>;
|
|
77
|
+
readonly secrets?: readonly string[];
|
|
78
|
+
readonly state: StateSchema;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
type NoQueries = Readonly<Record<string, never>>;
|
|
82
|
+
|
|
83
|
+
interface TypeError<Message extends string> {
|
|
84
|
+
readonly "Akter type error": Message;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
interface DefinitionOf<Options extends ActorOptions> {
|
|
88
|
+
readonly callers: Options extends { readonly callers: infer Callers extends CallersSchemas }
|
|
89
|
+
? Callers
|
|
90
|
+
: DefaultCallers;
|
|
91
|
+
readonly commands: Options["commands"];
|
|
92
|
+
readonly create: Options extends { readonly create: infer Input extends Declared }
|
|
93
|
+
? DeclaredSchema<Input>
|
|
94
|
+
: Schema.Never;
|
|
95
|
+
readonly fileAccess: Options extends { readonly files: infer Files extends FileAccess }
|
|
96
|
+
? Option.Some<Files>
|
|
97
|
+
: Option.None<never>;
|
|
98
|
+
readonly jobs: Options extends { readonly jobs: infer Declaring extends Jobs } ? Declaring : NoJobs;
|
|
99
|
+
readonly key: Options["key"];
|
|
100
|
+
readonly queries: Options extends { readonly queries: infer Queries extends Readonly<Record<string, AnyQuery>> }
|
|
101
|
+
? Queries
|
|
102
|
+
: NoQueries;
|
|
103
|
+
readonly secrets: Options extends { readonly secrets: infer Names extends readonly string[] } ? Names : readonly [];
|
|
104
|
+
readonly state: Options["state"];
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
type CreationCheck<Options extends ActorOptions> = Options extends { readonly initial: () => infer Initial }
|
|
108
|
+
? Options extends { readonly create: Declared }
|
|
109
|
+
? TypeError<"declare initial or create, not both">
|
|
110
|
+
: Initial extends Options["state"]["Type"]
|
|
111
|
+
? unknown
|
|
112
|
+
: TypeError<"initial must return the state">
|
|
113
|
+
: Options extends { readonly create: Declared }
|
|
114
|
+
? unknown
|
|
115
|
+
: TypeError<"declare initial or create">;
|
|
116
|
+
|
|
117
|
+
type MemberNamesCheck<Options extends ActorOptions> = Options extends {
|
|
118
|
+
readonly queries: infer Queries extends Readonly<Record<string, AnyQuery>>;
|
|
119
|
+
}
|
|
120
|
+
? [Extract<keyof Options["commands"], keyof Queries>] extends [never]
|
|
121
|
+
? unknown
|
|
122
|
+
: TypeError<`'${Extract<keyof Options["commands"], keyof Queries> & string}' is both a command and a query`>
|
|
123
|
+
: unknown;
|
|
124
|
+
|
|
125
|
+
type KindsOf<Members extends Readonly<Record<string, AnyCommand | AnyQuery>>> = {
|
|
126
|
+
readonly [Name in keyof Members]: Extract<Members[Name]["callers"], { readonly _tag: "Some" }>["value"][number];
|
|
127
|
+
}[keyof Members];
|
|
128
|
+
|
|
129
|
+
type FileKindsOf<Options extends ActorOptions> = Options extends { readonly files: FileAccess<infer Kinds> }
|
|
130
|
+
? Kinds
|
|
131
|
+
: never;
|
|
132
|
+
|
|
133
|
+
type UndeclaredKinds<Options extends ActorOptions> = Exclude<
|
|
134
|
+
KindsOf<Options["commands"]> | KindsOf<DefinitionOf<Options>["queries"]> | FileKindsOf<Options>,
|
|
135
|
+
keyof DefinitionOf<Options>["callers"]
|
|
136
|
+
>;
|
|
137
|
+
|
|
138
|
+
type ReservedMember =
|
|
139
|
+
| "callers"
|
|
140
|
+
| "client"
|
|
141
|
+
| "commands"
|
|
142
|
+
| "computer"
|
|
143
|
+
| "create"
|
|
144
|
+
| "ensure"
|
|
145
|
+
| "files"
|
|
146
|
+
| "fork"
|
|
147
|
+
| "handlers"
|
|
148
|
+
| "history"
|
|
149
|
+
| "historyStream"
|
|
150
|
+
| "initial"
|
|
151
|
+
| "jobs"
|
|
152
|
+
| "key"
|
|
153
|
+
| "name"
|
|
154
|
+
| "principal"
|
|
155
|
+
| "queries"
|
|
156
|
+
| "rpcs"
|
|
157
|
+
| "secret"
|
|
158
|
+
| "secrets"
|
|
159
|
+
| "state"
|
|
160
|
+
| "then"
|
|
161
|
+
| "toLayer"
|
|
162
|
+
| "update"
|
|
163
|
+
| "warm";
|
|
164
|
+
|
|
165
|
+
type ReservedOf<Options extends ActorOptions> = Extract<
|
|
166
|
+
keyof Options["commands"] | keyof DefinitionOf<Options>["queries"],
|
|
167
|
+
ReservedMember
|
|
168
|
+
>;
|
|
169
|
+
|
|
170
|
+
type ReservedNamesCheck<Options extends ActorOptions> = [ReservedOf<Options>] extends [never]
|
|
171
|
+
? unknown
|
|
172
|
+
: TypeError<`'${ReservedOf<Options> & string}' is a reserved member name`>;
|
|
173
|
+
|
|
174
|
+
type CallersCheck<Options extends ActorOptions> = [UndeclaredKinds<Options>] extends [never]
|
|
175
|
+
? unknown
|
|
176
|
+
: TypeError<`'${UndeclaredKinds<Options>}' is not a declared caller`>;
|
|
177
|
+
|
|
178
|
+
type OptionsCheck<Options extends ActorOptions> = CreationCheck<Options> &
|
|
179
|
+
MemberNamesCheck<Options> &
|
|
180
|
+
ReservedNamesCheck<Options> &
|
|
181
|
+
CallersCheck<Options>;
|
|
182
|
+
|
|
183
|
+
type StateOf<Definition extends ActorDefinition> = Definition["state"]["Type"];
|
|
184
|
+
|
|
185
|
+
type PrincipalOf<Definition extends ActorDefinition> = Definition["callers"][keyof Definition["callers"]]["Type"];
|
|
186
|
+
|
|
187
|
+
type ScopeFailure = Effect.Error<FileStorage["available"]> | SqlError.SqlError;
|
|
188
|
+
|
|
189
|
+
type CommandHandler<Definition extends ActorDefinition, Name extends keyof Definition["commands"]> = (
|
|
190
|
+
state: StateOf<Definition>,
|
|
191
|
+
payload: Definition["commands"][Name]["payload"]["Type"],
|
|
192
|
+
) => Effect.Effect<
|
|
193
|
+
Definition["commands"][Name]["success"]["Type"],
|
|
194
|
+
Definition["commands"][Name]["error"]["Type"] | ScopeFailure,
|
|
195
|
+
Akter | ActorState
|
|
196
|
+
>;
|
|
197
|
+
|
|
198
|
+
type QueryHandler<Definition extends ActorDefinition, Name extends keyof Definition["queries"]> = (
|
|
199
|
+
state: StateOf<Definition>,
|
|
200
|
+
payload: Definition["queries"][Name]["payload"]["Type"],
|
|
201
|
+
) => Effect.Effect<
|
|
202
|
+
Definition["queries"][Name]["success"]["Type"],
|
|
203
|
+
Definition["queries"][Name]["error"]["Type"] | ScopeFailure,
|
|
204
|
+
Akter
|
|
205
|
+
>;
|
|
206
|
+
|
|
207
|
+
/** The job a result belongs to: `id` is the id `Akter.start` returned when the job was started. */
|
|
208
|
+
interface FinishedJob {
|
|
209
|
+
readonly id: string;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
type ResultHandler<Definition extends ActorDefinition, Name extends keyof Definition["jobs"]> = (
|
|
213
|
+
state: StateOf<Definition>,
|
|
214
|
+
result: Exit.Exit<Definition["jobs"][Name]["success"]["Type"], Definition["jobs"][Name]["error"]["Type"]>,
|
|
215
|
+
job: FinishedJob,
|
|
216
|
+
) => Effect.Effect<void, ScopeFailure, Akter | ActorState>;
|
|
217
|
+
|
|
218
|
+
/** Decides one file call from the actor's state and the verified caller (`Actor.principal`), never the request. */
|
|
219
|
+
type FileAuthorizer<Definition extends ActorDefinition> = (
|
|
220
|
+
state: StateOf<Definition>,
|
|
221
|
+
request: (typeof FileAccessRequest)["Type"],
|
|
222
|
+
) => Effect.Effect<void, FileAccessDeniedError | ScopeFailure, Akter>;
|
|
223
|
+
|
|
224
|
+
interface FileRules<Definition extends ActorDefinition> {
|
|
225
|
+
readonly authorize: FileAuthorizer<Definition>;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
type CreateHandler<Definition extends ActorDefinition> = (
|
|
229
|
+
input: Definition["create"]["Type"],
|
|
230
|
+
) => Effect.Effect<StateOf<Definition>, ScopeFailure, Akter>;
|
|
231
|
+
|
|
232
|
+
type Migration = (sql: SqlClient.SqlClient) => Effect.Effect<unknown, SqlError.SqlError>;
|
|
233
|
+
|
|
234
|
+
type Migrations = Readonly<Record<number, Migration>>;
|
|
235
|
+
|
|
236
|
+
interface StateMigration<Current> {
|
|
237
|
+
readonly upgrade: (stored: string) => Effect.Effect<Current, Schema.SchemaError>;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
interface Implementation<Definition extends ActorDefinition> {
|
|
241
|
+
readonly commands: { readonly [Name in keyof Definition["commands"]]: CommandHandler<Definition, Name> };
|
|
242
|
+
readonly create?: CreateHandler<Definition>;
|
|
243
|
+
readonly files?: Definition["fileAccess"] extends Option.None<unknown> ? never : FileRules<Definition>;
|
|
244
|
+
readonly migrations?: Migrations;
|
|
245
|
+
readonly queries?: { readonly [Name in keyof Definition["queries"]]: QueryHandler<Definition, Name> };
|
|
246
|
+
readonly results?: { readonly [Name in keyof Definition["jobs"]]: ResultHandler<Definition, Name> };
|
|
247
|
+
readonly state?: StateMigration<StateOf<Definition>>;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
type ImplementationCheck<Definition extends ActorDefinition> = (Definition["queries"] extends NoQueries
|
|
251
|
+
? unknown
|
|
252
|
+
: { readonly queries: unknown }) &
|
|
253
|
+
(Definition["create"] extends Schema.Never ? unknown : { readonly create: unknown }) &
|
|
254
|
+
(Definition["fileAccess"] extends Option.None<unknown> ? unknown : { readonly files: unknown }) &
|
|
255
|
+
(Definition["jobs"] extends NoJobs ? unknown : { readonly results: unknown });
|
|
256
|
+
|
|
257
|
+
declare const actorHandlersBrand: unique symbol;
|
|
258
|
+
|
|
259
|
+
interface ActorHandlers<Name extends string> {
|
|
260
|
+
readonly [actorHandlersBrand]: Name;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
type AddressedCommands<Name extends string, Definition extends ActorDefinition> = {
|
|
264
|
+
readonly [Member in keyof Definition["commands"]]: Definition["commands"][Member] & {
|
|
265
|
+
readonly address: CommandAddress<Name, Definition["key"], Member & string>;
|
|
266
|
+
};
|
|
267
|
+
};
|
|
268
|
+
|
|
269
|
+
interface Actor<Name extends string, Definition extends ActorDefinition> {
|
|
270
|
+
readonly callers: Definition["callers"];
|
|
271
|
+
readonly client: ClientOf<Definition>;
|
|
272
|
+
/** The actor's computers, for a job activity or the host. */
|
|
273
|
+
readonly computer: ComputerClientOf<Definition>;
|
|
274
|
+
/** Which caller kinds may make file calls, as `Akter.fileAccess` declared them. */
|
|
275
|
+
readonly fileAccess: Definition["fileAccess"];
|
|
276
|
+
readonly files: FileClientOf<Definition>;
|
|
277
|
+
readonly commands: AddressedCommands<Name, Definition>;
|
|
278
|
+
readonly create: Definition["create"];
|
|
279
|
+
readonly handlers: Context.Key<ActorHandlers<Name>, HostedActor>;
|
|
280
|
+
readonly initial: Option.Option<() => StateOf<Definition>>;
|
|
281
|
+
readonly jobs: ActorJobs<Name, Definition["jobs"]>;
|
|
282
|
+
readonly key: Definition["key"];
|
|
283
|
+
readonly name: Name;
|
|
284
|
+
readonly principal: Effect.Effect<PrincipalOf<Definition>, never, Akter>;
|
|
285
|
+
readonly queries: Definition["queries"];
|
|
286
|
+
readonly rpcs: ActorRpcs;
|
|
287
|
+
/** One of the actor's declared secrets, for a job activity: never from a command, query or result handler. */
|
|
288
|
+
readonly secret: SecretOf<Definition>;
|
|
289
|
+
readonly secrets: Definition["secrets"];
|
|
290
|
+
readonly state: Definition["state"];
|
|
291
|
+
readonly toLayer: (
|
|
292
|
+
implementation: Implementation<Definition> & ImplementationCheck<Definition>,
|
|
293
|
+
) => Layer.Layer<ActorHandlers<Name>>;
|
|
294
|
+
readonly update: (patch: Partial<StateOf<Definition>>) => Effect.Effect<void, never, ActorState>;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
type ImplementationOf<Target> =
|
|
298
|
+
Target extends Actor<infer _Name extends string, infer Definition>
|
|
299
|
+
? Implementation<Definition> & ImplementationCheck<Definition>
|
|
300
|
+
: never;
|
|
301
|
+
|
|
302
|
+
interface CommandScope {
|
|
303
|
+
readonly files: FileStorage;
|
|
304
|
+
readonly id: Effect.Effect<string>;
|
|
305
|
+
readonly key: string;
|
|
306
|
+
readonly now: Effect.Effect<number>;
|
|
307
|
+
readonly principal: Principal;
|
|
308
|
+
readonly sql: SqlClient.SqlClient;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
interface CommandEnvironment {
|
|
312
|
+
readonly files: FileStorage;
|
|
313
|
+
readonly id: Effect.Effect<string>;
|
|
314
|
+
readonly key: string;
|
|
315
|
+
readonly now: Effect.Effect<number>;
|
|
316
|
+
readonly sql: SqlClient.SqlClient;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
interface HostedRequest {
|
|
320
|
+
readonly member: string;
|
|
321
|
+
readonly payload: string;
|
|
322
|
+
readonly principal: string;
|
|
323
|
+
readonly state: Option.Option<string>;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
/** A job's result, delivered as a command to the actor that started the job. */
|
|
327
|
+
interface HostedResult extends HostedRequest {
|
|
328
|
+
/** The id `Akter.start` returned for the job. */
|
|
329
|
+
readonly jobId: string;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
interface HostedActor {
|
|
333
|
+
readonly callers: CallersSchemas;
|
|
334
|
+
/**
|
|
335
|
+
* Which caller kinds may make file calls; none means the actor has no file calls. A bundle built before contracts
|
|
336
|
+
* declared file calls registers no such field, and a host reads that as none, so its file calls are refused.
|
|
337
|
+
*/
|
|
338
|
+
readonly fileAccess?: Option.Option<FileAccess> | undefined;
|
|
339
|
+
/** The host interface version the actor was built with (`host-interface.pure.ts`); absent, it is 0. */
|
|
340
|
+
readonly hostInterface?: number | undefined;
|
|
341
|
+
readonly initial: Option.Option<() => StateFields>;
|
|
342
|
+
/**
|
|
343
|
+
* The actor's key schema. A host decodes a file or computer request's key by its encoded side only, since the bundle's
|
|
344
|
+
* own copy of effect built it (`hosted-file-rpcs.layer.ts`).
|
|
345
|
+
*/
|
|
346
|
+
readonly key: KeySchema;
|
|
347
|
+
readonly migrations: Migrations;
|
|
348
|
+
readonly name: string;
|
|
349
|
+
/** The secrets the actor declares; a host opens only these. Absent in builds from before secrets, meaning none. */
|
|
350
|
+
readonly secrets?: readonly string[] | undefined;
|
|
351
|
+
readonly state: StateSchema;
|
|
352
|
+
readonly runCreate: (
|
|
353
|
+
request: HostedRequest,
|
|
354
|
+
environment: CommandEnvironment,
|
|
355
|
+
) => Effect.Effect<HostedOutcome, HostedError>;
|
|
356
|
+
readonly runCommand: (
|
|
357
|
+
request: HostedRequest,
|
|
358
|
+
environment: CommandEnvironment,
|
|
359
|
+
) => Effect.Effect<HostedOutcome, HostedError>;
|
|
360
|
+
readonly readState: (
|
|
361
|
+
principal: string,
|
|
362
|
+
) => Effect.Effect<(stored: Option.Option<string>) => Effect.Effect<string, HostedError>, HostedError>;
|
|
363
|
+
readonly runQuery: (request: HostedRequest, environment: CommandEnvironment) => Effect.Effect<string, HostedError>;
|
|
364
|
+
readonly runResult: (
|
|
365
|
+
request: HostedResult,
|
|
366
|
+
environment: CommandEnvironment,
|
|
367
|
+
) => Effect.Effect<HostedOutcome, HostedError>;
|
|
368
|
+
readonly upgradeState: (stored: string) => Effect.Effect<Option.Option<string>, StateUnreadableError>;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
export type {
|
|
372
|
+
Actor,
|
|
373
|
+
ActorDefinition,
|
|
374
|
+
AddressedCommand,
|
|
375
|
+
AddressedCommands,
|
|
376
|
+
CommandAddress,
|
|
377
|
+
ActorHandlers,
|
|
378
|
+
ActorOptions,
|
|
379
|
+
CallersSchemas,
|
|
380
|
+
CommandEnvironment,
|
|
381
|
+
CommandHandler,
|
|
382
|
+
CommandScope,
|
|
383
|
+
CreateHandler,
|
|
384
|
+
Decoded,
|
|
385
|
+
DefinitionOf,
|
|
386
|
+
FileAuthorizer,
|
|
387
|
+
FileRules,
|
|
388
|
+
FinishedJob,
|
|
389
|
+
HostedActor,
|
|
390
|
+
HostedRequest,
|
|
391
|
+
HostedResult,
|
|
392
|
+
Implementation,
|
|
393
|
+
ImplementationOf,
|
|
394
|
+
KeySchema,
|
|
395
|
+
Migration,
|
|
396
|
+
Migrations,
|
|
397
|
+
OptionsCheck,
|
|
398
|
+
PrincipalOf,
|
|
399
|
+
PrincipalSchema,
|
|
400
|
+
QueryHandler,
|
|
401
|
+
ReservedMember,
|
|
402
|
+
ResultHandler,
|
|
403
|
+
StateFields,
|
|
404
|
+
StateMigration,
|
|
405
|
+
StateOf,
|
|
406
|
+
StateSchema,
|
|
407
|
+
};
|
|
408
|
+
|
|
409
|
+
export type { HostedError, HostedOutcome } from "#src/contract/hosted/hosted-error.contract";
|