@akterjs/effect 0.0.0-stage → 0.1.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/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,30 @@
|
|
|
1
|
+
import { BlobOwner, TransferEffect } from "../blob/reference/blob-transfer.pure.mjs";
|
|
2
|
+
import { LocalBlobHome } from "./blob-home.sql.mjs";
|
|
3
|
+
import { LocalBlobHomes } from "./local-blob-home.service.mjs";
|
|
4
|
+
import { Effect, Option, Scope } from "effect";
|
|
5
|
+
import { SqlClient } from "effect/sql";
|
|
6
|
+
interface LocalOwner {
|
|
7
|
+
readonly actor: string;
|
|
8
|
+
readonly sql: SqlClient.SqlClient;
|
|
9
|
+
}
|
|
10
|
+
interface LocalActorFiles {
|
|
11
|
+
readonly home: LocalBlobHome;
|
|
12
|
+
readonly kick: Effect.Effect<void>;
|
|
13
|
+
readonly owner: BlobOwner;
|
|
14
|
+
readonly sql: SqlClient.SqlClient;
|
|
15
|
+
}
|
|
16
|
+
interface OwnerOpening extends LocalOwner {
|
|
17
|
+
readonly exclusive: BlobOwner["exclusive"];
|
|
18
|
+
readonly snapshot: BlobOwner["snapshot"];
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* The blob owner of one actor whose writes go through `exclusive`, the actor's own serializer, so a file write never
|
|
22
|
+
* interleaves with a command's transaction on the same connection.
|
|
23
|
+
*/
|
|
24
|
+
declare const blobOwnerOn: ({ actor, exclusive, snapshot, sql }: OwnerOpening) => TransferEffect<BlobOwner>;
|
|
25
|
+
declare const localBlobOwner: ({ actor, sql }: LocalOwner) => TransferEffect<BlobOwner, Scope.Scope>;
|
|
26
|
+
/** Recovers and settles an owner's transfers on its home, then keeps its references settled until the scope closes. */
|
|
27
|
+
declare const actorFilesOn: ({ home, owner, sql }: Omit<LocalActorFiles, "kick">) => TransferEffect<LocalActorFiles, Scope.Scope>;
|
|
28
|
+
type LocalActorFileOpener = (opening: LocalOwner) => TransferEffect<Option.Option<LocalActorFiles>, Scope.Scope>;
|
|
29
|
+
declare const localActorFiles: (homes: Option.Option<LocalBlobHomes["Service"]>) => LocalActorFileOpener;
|
|
30
|
+
export { type LocalActorFileOpener, type LocalActorFiles, type LocalOwner, actorFilesOn, blobOwnerOn, localActorFiles, localBlobOwner };
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { actorExclusive } from "../actor/actor-exclusive.pure.mjs";
|
|
2
|
+
import { blobForks } from "../blob/reference/blob-forks.sql.mjs";
|
|
3
|
+
import { blobReceipts, prepareReceipts } from "../blob/reference/blob-receipts.sql.mjs";
|
|
4
|
+
import { localFileUpkeep } from "./local-file-upkeep.pure.mjs";
|
|
5
|
+
import { Effect, Option } from "effect";
|
|
6
|
+
// src/host/file/local-blob-owner.sql.ts
|
|
7
|
+
/**
|
|
8
|
+
* The blob owner of one actor whose writes go through `exclusive`, the actor's own serializer, so a file write never
|
|
9
|
+
* interleaves with a command's transaction on the same connection.
|
|
10
|
+
*/
|
|
11
|
+
const blobOwnerOn = ({ actor, exclusive, snapshot, sql }) => Effect.gen(function* openBlobOwner() {
|
|
12
|
+
const receipts = blobReceipts({
|
|
13
|
+
actor,
|
|
14
|
+
sql
|
|
15
|
+
});
|
|
16
|
+
yield* exclusive(Effect.andThen(prepareReceipts(sql), receipts.resume));
|
|
17
|
+
return {
|
|
18
|
+
actor,
|
|
19
|
+
exclusive,
|
|
20
|
+
forks: blobForks({
|
|
21
|
+
actor,
|
|
22
|
+
sql
|
|
23
|
+
}),
|
|
24
|
+
receipts,
|
|
25
|
+
snapshot,
|
|
26
|
+
transaction: sql.withTransaction
|
|
27
|
+
};
|
|
28
|
+
});
|
|
29
|
+
const localBlobOwner = ({ actor, sql }) => Effect.gen(function* openLocalBlobOwner() {
|
|
30
|
+
const exclusive = yield* actorExclusive;
|
|
31
|
+
const snapshot = yield* actorExclusive;
|
|
32
|
+
yield* Effect.addFinalizer(() => Effect.andThen(snapshot.close, exclusive.close));
|
|
33
|
+
return yield* blobOwnerOn({
|
|
34
|
+
actor,
|
|
35
|
+
exclusive: exclusive.run,
|
|
36
|
+
snapshot: snapshot.run,
|
|
37
|
+
sql
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
/** Recovers and settles an owner's transfers on its home, then keeps its references settled until the scope closes. */
|
|
41
|
+
const actorFilesOn = ({ home, owner, sql }) => Effect.gen(function* openActorFiles() {
|
|
42
|
+
yield* home.transfers.recover(owner);
|
|
43
|
+
yield* home.transfers.settle(owner);
|
|
44
|
+
const { kick } = yield* localFileUpkeep({
|
|
45
|
+
home,
|
|
46
|
+
owner
|
|
47
|
+
});
|
|
48
|
+
return {
|
|
49
|
+
home,
|
|
50
|
+
kick,
|
|
51
|
+
owner,
|
|
52
|
+
sql
|
|
53
|
+
};
|
|
54
|
+
});
|
|
55
|
+
const openLocalActorFiles = (homes, opening) => Effect.gen(function* openActorFiles() {
|
|
56
|
+
const home = yield* homes.get;
|
|
57
|
+
const owner = yield* localBlobOwner(opening);
|
|
58
|
+
return yield* actorFilesOn({
|
|
59
|
+
home,
|
|
60
|
+
owner,
|
|
61
|
+
sql: opening.sql
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
const localActorFiles = (homes) => (opening) => Option.match(homes, {
|
|
65
|
+
onNone: () => Effect.succeedNone,
|
|
66
|
+
onSome: (available) => Effect.asSome(openLocalActorFiles(available, opening))
|
|
67
|
+
});
|
|
68
|
+
export { actorFilesOn, blobOwnerOn, localActorFiles, localBlobOwner };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { BlobOwner } from "../blob/reference/blob-transfer.pure.mjs";
|
|
2
|
+
import { LocalBlobHome } from "./blob-home.sql.mjs";
|
|
3
|
+
import "./local-blob-home.service.mjs";
|
|
4
|
+
import { Effect, Scope } from "effect";
|
|
5
|
+
interface FileUpkeep {
|
|
6
|
+
readonly home: LocalBlobHome;
|
|
7
|
+
readonly owner: BlobOwner;
|
|
8
|
+
}
|
|
9
|
+
declare const localFileUpkeep: ({ home, owner }: FileUpkeep) => Effect.Effect<{
|
|
10
|
+
readonly kick: Effect.Effect<void>;
|
|
11
|
+
}, never, Scope.Scope>;
|
|
12
|
+
export { localFileUpkeep };
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Array, Clock, Effect, Queue } from "effect";
|
|
2
|
+
// src/host/file/local-file-upkeep.pure.ts
|
|
3
|
+
const oneNotification = 1;
|
|
4
|
+
const retryEvery = "1 minute";
|
|
5
|
+
/** Whether the owner is erased, and which of its releases are ready at `now` (a hold keeps some waiting). */
|
|
6
|
+
const pendingAt = (owner, now) => {
|
|
7
|
+
const read = Effect.all({
|
|
8
|
+
erased: owner.receipts.erased,
|
|
9
|
+
releases: owner.receipts.releases(now)
|
|
10
|
+
});
|
|
11
|
+
return owner.exclusive(owner.transaction(read));
|
|
12
|
+
};
|
|
13
|
+
const localFileUpkeep = ({ home, owner }) => Effect.gen(function* keepLocalFiles() {
|
|
14
|
+
const events = yield* Queue.sliding(oneNotification);
|
|
15
|
+
const kick = Effect.asVoid(Queue.offer(events, true));
|
|
16
|
+
const collect = Effect.gen(function* collectPages() {
|
|
17
|
+
for (;;) {
|
|
18
|
+
const removed = yield* home.transfers.collect;
|
|
19
|
+
if (!Array.isReadonlyArrayNonEmpty(removed)) return;
|
|
20
|
+
yield* Effect.yieldNow;
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
const pass = Effect.gen(function* settleFileReferences() {
|
|
24
|
+
yield* home.transfers.settle(owner);
|
|
25
|
+
yield* collect;
|
|
26
|
+
const now = yield* Clock.currentTimeMillis;
|
|
27
|
+
const pending = yield* pendingAt(owner, now);
|
|
28
|
+
if (!pending.erased && Array.isReadonlyArrayNonEmpty(pending.releases)) yield* kick;
|
|
29
|
+
}).pipe(Effect.catchTags({
|
|
30
|
+
BlobTransferError: () => Effect.logWarning("local file cleanup will retry"),
|
|
31
|
+
SqlError: () => Effect.logWarning("local file cleanup will retry")
|
|
32
|
+
}));
|
|
33
|
+
const waiting = Effect.timeoutOrElse(Queue.take(events), {
|
|
34
|
+
duration: retryEvery,
|
|
35
|
+
orElse: () => Effect.succeed(false)
|
|
36
|
+
});
|
|
37
|
+
const work = Effect.forever(Effect.andThen(waiting, pass));
|
|
38
|
+
yield* Effect.forkScoped(work);
|
|
39
|
+
return { kick };
|
|
40
|
+
});
|
|
41
|
+
export { localFileUpkeep };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { OpenedActor } from "../actor/actor-database.service.mjs";
|
|
2
|
+
import { LocalBlobHomes } from "./local-blob-home.service.mjs";
|
|
3
|
+
import { Effect, Option } from "effect";
|
|
4
|
+
import { SqlClient, SqlError } from "effect/sql";
|
|
5
|
+
type ReplayFileRestorer = (source: SqlClient.SqlClient, blank: OpenedActor) => Effect.Effect<OpenedActor, SqlError.SqlError>;
|
|
6
|
+
declare const replayFileStorage: (homes: Option.Option<LocalBlobHomes["Service"]>) => ReplayFileRestorer;
|
|
7
|
+
export { replayFileStorage };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { FilesUnavailableError } from "../../contract/file/files-unavailable.errors.mjs";
|
|
2
|
+
import { actorFileStorage } from "./actor-file-storage.sql.mjs";
|
|
3
|
+
import { Array, Effect, Option, Stream } from "effect";
|
|
4
|
+
// src/host/file/replay-file-storage.sql.ts
|
|
5
|
+
const replayFileStorage = (homes) => {
|
|
6
|
+
const open = Option.match(homes, {
|
|
7
|
+
onNone: () => () => Stream.fail(FilesUnavailableError.make({ message: "files aren't available on this host" })),
|
|
8
|
+
onSome: (available) => (opening) => Stream.unwrap(Effect.map(available.get, (home) => home.transfers.open(opening)))
|
|
9
|
+
});
|
|
10
|
+
return (source, blank) => Effect.gen(function* replayFiles() {
|
|
11
|
+
const owners = yield* source`SELECT actor, state FROM akter_blob_owners WHERE id = 1`;
|
|
12
|
+
const owner = Array.head(owners);
|
|
13
|
+
if (Option.isNone(owner)) return blank;
|
|
14
|
+
const stored = owner.value;
|
|
15
|
+
yield* blank.sql`INSERT INTO akter_blob_owners (id, actor, state) VALUES (1, ${stored.actor}, ${stored.state})`;
|
|
16
|
+
return {
|
|
17
|
+
...blank,
|
|
18
|
+
files: (sql) => actorFileStorage({
|
|
19
|
+
actor: stored.actor,
|
|
20
|
+
open,
|
|
21
|
+
sql
|
|
22
|
+
})
|
|
23
|
+
};
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
export { replayFileStorage };
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Effect, Option } from "effect";
|
|
2
|
+
import { SqlClient, SqlError } from "effect/sql";
|
|
3
|
+
type Sql<Value> = Effect.Effect<Value, SqlError.SqlError>;
|
|
4
|
+
/** A fork the parent recorded: `intent` until its child is published, then `published`. */
|
|
5
|
+
interface ForkRecord {
|
|
6
|
+
readonly child: string;
|
|
7
|
+
readonly state: "intent" | "published";
|
|
8
|
+
readonly version: number;
|
|
9
|
+
}
|
|
10
|
+
interface ForkIntent {
|
|
11
|
+
readonly into: string;
|
|
12
|
+
readonly version: number;
|
|
13
|
+
}
|
|
14
|
+
/** Where a forked actor came from, kept in its `akter_meta` and exported as its lineage (ADR 0019). */
|
|
15
|
+
interface Lineage {
|
|
16
|
+
readonly forkId: string;
|
|
17
|
+
/** The parent as `<Actor>/<key segment>`, the form both engines write. */
|
|
18
|
+
readonly origin: string;
|
|
19
|
+
readonly version: number;
|
|
20
|
+
}
|
|
21
|
+
declare const prepareForks: (sql: SqlClient.SqlClient) => Sql<void>;
|
|
22
|
+
interface Named {
|
|
23
|
+
readonly commandId: string;
|
|
24
|
+
readonly sql: SqlClient.SqlClient;
|
|
25
|
+
}
|
|
26
|
+
declare const recordedFork: ({ commandId, sql }: Named) => Sql<Option.Option<ForkRecord>>;
|
|
27
|
+
declare const recordIntent: ({ commandId, into, sql, version }: ForkIntent & Named) => Sql<void>;
|
|
28
|
+
declare const markPublished: ({ commandId, sql }: Named) => Sql<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Makes a copy of an actor's database into a quiet fork (ADR 0017): its timers, undelivered messages and open jobs
|
|
31
|
+
* are dropped or cancelled, its history starts at the copy, its file rows are cleared for the fork to inherit the
|
|
32
|
+
* files under its own claims, its `akter_meta` keeps only `copiedMeta`, and its lineage is recorded. Runs on the copy
|
|
33
|
+
* before anything opens it as an actor.
|
|
34
|
+
*/
|
|
35
|
+
declare const quietCopy: ({ forkId, origin, sql, version }: Lineage & {
|
|
36
|
+
readonly sql: SqlClient.SqlClient;
|
|
37
|
+
}) => Sql<void>;
|
|
38
|
+
/** The file fork a staged copy began: the child's file identity, and the parent's it forks from. */
|
|
39
|
+
interface ForkedFiles {
|
|
40
|
+
readonly actor: string;
|
|
41
|
+
readonly origin: string;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* The file fork recorded in a quieted copy, or none before its files were forked. Read it only from a copy whose
|
|
45
|
+
* `fork.id` is this fork's: before quietCopy commits, a copy holds its parent's own file rows.
|
|
46
|
+
*/
|
|
47
|
+
declare const forkedFiles: (sql: SqlClient.SqlClient) => Sql<Option.Option<ForkedFiles>>;
|
|
48
|
+
/** The fork id a published child carries, or none for an actor that was not forked. */
|
|
49
|
+
declare const forkIdOf: (sql: SqlClient.SqlClient) => Sql<Option.Option<string>>;
|
|
50
|
+
/** The lineage a forked actor's `akter_meta` records, or none for an actor that was not forked. */
|
|
51
|
+
declare const lineageOf: (sql: SqlClient.SqlClient) => Sql<Option.Option<Lineage>>;
|
|
52
|
+
export { type ForkRecord, type ForkedFiles, type Lineage, forkIdOf, forkedFiles, lineageOf, markPublished, prepareForks, quietCopy, recordIntent, recordedFork };
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { clearCopiedFiles } from "../blob/reference/blob-receipts.sql.mjs";
|
|
2
|
+
import { startJournalAtCopy } from "../command/command-journal.sql.mjs";
|
|
3
|
+
import { cancelOpenJobs } from "../job/job-journal.sql.mjs";
|
|
4
|
+
import { Array, Effect, Option } from "effect";
|
|
5
|
+
// src/host/fork/actor-fork.sql.ts
|
|
6
|
+
/**
|
|
7
|
+
* The `akter_meta` keys a fork's copy keeps: its layout version, and where its history was last pruned. Every other
|
|
8
|
+
* key belongs to the parent alone, such as the key of the parent's last export (`export_record`) or the parent's own
|
|
9
|
+
* lineage, so a copy drops it. A key added to `akter_meta` stays with the parent until it is listed here.
|
|
10
|
+
*/
|
|
11
|
+
const copiedMeta = ["layout", "pruned_before"];
|
|
12
|
+
const prepareForks = (sql) => Effect.asVoid(sql`CREATE TABLE IF NOT EXISTS akter_forks (command_id TEXT PRIMARY KEY, child TEXT NOT NULL, state TEXT NOT NULL CHECK (state IN ('intent', 'published')), version INTEGER NOT NULL) STRICT`);
|
|
13
|
+
const recordedFork = ({ commandId, sql }) => Effect.map(sql`SELECT child, state, version FROM akter_forks WHERE command_id = ${commandId}`, Array.head);
|
|
14
|
+
const recordIntent = ({ commandId, into, sql, version }) => Effect.asVoid(sql`INSERT INTO akter_forks (command_id, child, state, version) VALUES (${commandId}, ${into}, 'intent', ${version}) ON CONFLICT (command_id) DO UPDATE SET version = excluded.version`);
|
|
15
|
+
const markPublished = ({ commandId, sql }) => Effect.asVoid(sql`UPDATE akter_forks SET state = 'published' WHERE command_id = ${commandId}`);
|
|
16
|
+
/**
|
|
17
|
+
* Makes a copy of an actor's database into a quiet fork (ADR 0017): its timers, undelivered messages and open jobs
|
|
18
|
+
* are dropped or cancelled, its history starts at the copy, its file rows are cleared for the fork to inherit the
|
|
19
|
+
* files under its own claims, its `akter_meta` keeps only `copiedMeta`, and its lineage is recorded. Runs on the copy
|
|
20
|
+
* before anything opens it as an actor.
|
|
21
|
+
*/
|
|
22
|
+
const quietCopy = ({ forkId, origin, sql, version }) => sql.withTransaction(Effect.gen(function* quietFork() {
|
|
23
|
+
yield* prepareForks(sql);
|
|
24
|
+
yield* sql`DELETE FROM akter_forks`;
|
|
25
|
+
yield* sql`DELETE FROM akter_timers`;
|
|
26
|
+
yield* sql`DELETE FROM akter_outbox`;
|
|
27
|
+
yield* cancelOpenJobs(sql);
|
|
28
|
+
yield* startJournalAtCopy(sql);
|
|
29
|
+
yield* clearCopiedFiles(sql);
|
|
30
|
+
yield* sql`DELETE FROM akter_meta WHERE key NOT IN ${sql.in(copiedMeta)}`;
|
|
31
|
+
yield* sql`INSERT INTO akter_meta (key, value) VALUES ('fork.origin', ${origin}), ('fork.id', ${forkId}), ('fork.version', ${version})`;
|
|
32
|
+
}));
|
|
33
|
+
/**
|
|
34
|
+
* The file fork recorded in a quieted copy, or none before its files were forked. Read it only from a copy whose
|
|
35
|
+
* `fork.id` is this fork's: before quietCopy commits, a copy holds its parent's own file rows.
|
|
36
|
+
*/
|
|
37
|
+
const forkedFiles = (sql) => Effect.map(sql`SELECT owner.actor AS actor, fork.origin AS origin FROM akter_blob_owners AS owner, akter_blob_fork AS fork`, Array.head);
|
|
38
|
+
/** The fork id a published child carries, or none for an actor that was not forked. */
|
|
39
|
+
const forkIdOf = (sql) => Effect.map(sql`SELECT value FROM akter_meta WHERE key = 'fork.id'`, (rows) => Option.map(Array.head(rows), (row) => row.value));
|
|
40
|
+
/** The lineage a forked actor's `akter_meta` records, or none for an actor that was not forked. */
|
|
41
|
+
const lineageOf = (sql) => Effect.map(sql`SELECT origin.value AS origin, id.value AS forkId, version.value AS version FROM akter_meta AS origin JOIN akter_meta AS id ON id.key = 'fork.id' JOIN akter_meta AS version ON version.key = 'fork.version' WHERE origin.key = 'fork.origin'`, Array.head);
|
|
42
|
+
export { forkIdOf, forkedFiles, lineageOf, markPublished, prepareForks, quietCopy, recordIntent, recordedFork };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { ActorUnavailableError } from "../../contract/client/actor-unavailable.errors.mjs";
|
|
2
|
+
import { InvalidRequestError } from "../../contract/client/invalid-request.errors.mjs";
|
|
3
|
+
import { ComputerAddress } from "../../contract/computer/computer-client.contract.mjs";
|
|
4
|
+
import { Context, Effect, FileSystem, Layer, Option, Path } from "effect";
|
|
5
|
+
/** One actor fork's computers: the parent's, copied into the child, under the store's computers directory. */
|
|
6
|
+
interface ComputersFork {
|
|
7
|
+
readonly child: ComputerAddress;
|
|
8
|
+
/** The fork's id: the hold it keeps on the parent's computers, and the name of the mark on the child's. */
|
|
9
|
+
readonly fork: string;
|
|
10
|
+
readonly parent: ComputerAddress;
|
|
11
|
+
readonly root: string;
|
|
12
|
+
}
|
|
13
|
+
/** One of the parent's computers the fork copies. */
|
|
14
|
+
interface Held {
|
|
15
|
+
readonly name: string;
|
|
16
|
+
}
|
|
17
|
+
type ForkFailure = ActorUnavailableError | InvalidRequestError;
|
|
18
|
+
type Needs = FileSystem.FileSystem | Path.Path;
|
|
19
|
+
type Releasing = ComputersFork & {
|
|
20
|
+
readonly held: Option.Option<readonly Held[]>;
|
|
21
|
+
};
|
|
22
|
+
type Swept = Effect.Error<ReturnType<FileSystem.FileSystem["remove"]>>;
|
|
23
|
+
/** What `ForkComputers` offers, with the file system it runs on provided when its layer is built. */
|
|
24
|
+
interface ForkComputersOperations {
|
|
25
|
+
readonly copy: (forking: ComputersFork & {
|
|
26
|
+
readonly held: readonly Held[];
|
|
27
|
+
}) => Effect.Effect<void, ForkFailure>;
|
|
28
|
+
readonly discard: (forking: ComputersFork) => Effect.Effect<void, ForkFailure>;
|
|
29
|
+
readonly hold: (forking: ComputersFork) => Effect.Effect<readonly Held[], ForkFailure>;
|
|
30
|
+
readonly release: (forking: Releasing) => Effect.Effect<void, ForkFailure>;
|
|
31
|
+
readonly settle: (forking: Releasing) => Effect.Effect<void, ForkFailure>;
|
|
32
|
+
readonly sweep: <Unreadable>(root: string, storedActors: Effect.Effect<ReadonlySet<string>, Unreadable>) => Effect.Effect<void, Unreadable | Swept>;
|
|
33
|
+
}
|
|
34
|
+
declare const ForkComputers_base: Context.ServiceClass<ForkComputers, "@akterjs/effect/host/fork/fork-computers.adapter/ForkComputers", ForkComputersOperations>;
|
|
35
|
+
/**
|
|
36
|
+
* The computers of an actor fork on the local engine: `hold` the parent's before the cut, `copy` them into the child
|
|
37
|
+
* before it is published, stopped, then `settle` once it is, or `release` after a failure, so `discard` finds the
|
|
38
|
+
* copies to remove. `sweep` settles what crashed forks left when a host starts.
|
|
39
|
+
*/
|
|
40
|
+
export declare class ForkComputers extends ForkComputers_base {
|
|
41
|
+
static readonly layer: Layer.Layer<ForkComputers, never, Needs>;
|
|
42
|
+
}
|
|
43
|
+
export type { ComputersFork, Held };
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { ActorUnavailableError } from "../../contract/client/actor-unavailable.errors.mjs";
|
|
2
|
+
import { InvalidRequestError } from "../../contract/client/invalid-request.errors.mjs";
|
|
3
|
+
import { ActorComputerClients } from "../../contract/computer/computer-client.adapter.mjs";
|
|
4
|
+
import { localLog } from "../computer/local-computer-log.layer.mjs";
|
|
5
|
+
import { admitted, findRecord, listed, placeOf, saveRecord } from "../computer/local-computer-records.layer.mjs";
|
|
6
|
+
import { Array, Clock, Context, Effect, FileSystem, Layer, Match, Option, Path, Semaphore, String as String$1 } from "effect";
|
|
7
|
+
// src/host/fork/fork-computers.adapter.ts
|
|
8
|
+
const markPrefix = "@fork-";
|
|
9
|
+
const oneAtATime = 1;
|
|
10
|
+
const markOf = (fork) => `${markPrefix}${encodeURIComponent(fork)}`;
|
|
11
|
+
const storeOf = Effect.fnUntraced(function* storeOf(root) {
|
|
12
|
+
const path = yield* Path.Path;
|
|
13
|
+
return {
|
|
14
|
+
admission: yield* Semaphore.make(oneAtATime),
|
|
15
|
+
path,
|
|
16
|
+
root
|
|
17
|
+
};
|
|
18
|
+
});
|
|
19
|
+
const failedWith = (actor) => (failure) => Match.value(failure).pipe(Match.tags({
|
|
20
|
+
ActorUnavailableError: (unavailable) => unavailable,
|
|
21
|
+
ComputerHeldError: ({ computer, hold }) => ActorUnavailableError.make({
|
|
22
|
+
actor,
|
|
23
|
+
message: `${actor} can't fork while its computer ${computer} is held by ${hold}, a fork that didn't finish. Retry that fork, or resume the computer with the hold ${hold}, to release it.`
|
|
24
|
+
}),
|
|
25
|
+
ComputerLimitError: ({ maximum }) => InvalidRequestError.make({
|
|
26
|
+
actor,
|
|
27
|
+
message: `${actor} can't fork: copying its computers would pass the store's limit of ${String(maximum)} computers. Remove a computer, then fork again.`
|
|
28
|
+
}),
|
|
29
|
+
InvalidRequestError: (invalid) => invalid
|
|
30
|
+
}), Match.orElse(() => ActorUnavailableError.make({
|
|
31
|
+
actor,
|
|
32
|
+
message: "the fork didn't copy its computers. Retry it with the same id."
|
|
33
|
+
})));
|
|
34
|
+
const answered = (actor) => (effect) => Effect.mapError(effect, failedWith(actor));
|
|
35
|
+
const foundIn = (place) => Effect.map(findRecord(place), Option.map(() => ({ place })));
|
|
36
|
+
/** The parent's computers as their directories record them, by name. */
|
|
37
|
+
const parentComputers = Effect.fnUntraced(function* parentComputers(store, parent) {
|
|
38
|
+
const names = yield* listed(placeOf(store)(parent, "").actor);
|
|
39
|
+
const places = Array.map(Array.sort(names, String$1.Order), (name) => placeOf(store)(parent, name));
|
|
40
|
+
const found = yield* Effect.forEach(places, foundIn);
|
|
41
|
+
return Array.getSomes(found);
|
|
42
|
+
});
|
|
43
|
+
/** The parent's computer client when the engine runs computers; none when nothing can change them meanwhile. */
|
|
44
|
+
const clientOf = (parent) => Effect.map(Effect.serviceOption(ActorComputerClients), Option.map((clients) => clients.connect(parent)));
|
|
45
|
+
/** A computer that is gone, or that no engine runs, needs no hold: nothing can change it while the fork copies it. */
|
|
46
|
+
const unheld = (effect) => Effect.asVoid(effect).pipe(Effect.catchTags({
|
|
47
|
+
ComputerLostError: () => Effect.void,
|
|
48
|
+
ComputerNotFoundError: () => Effect.void,
|
|
49
|
+
ComputersUnavailableError: () => Effect.void
|
|
50
|
+
}));
|
|
51
|
+
const heldOf = ({ place }) => ({ name: place.name });
|
|
52
|
+
/**
|
|
53
|
+
* Holds each of the parent's computers paused under the fork's id, so no step or ensure changes one until the fork
|
|
54
|
+
* lets it go, and answers which the fork copies. A hold survives a restart, and the same hold taken again is a resend.
|
|
55
|
+
*/
|
|
56
|
+
const holdParent = ({ fork, parent, root }) => answered(parent.actor)(Effect.gen(function* holdComputers() {
|
|
57
|
+
const store = yield* storeOf(root);
|
|
58
|
+
const computers = yield* parentComputers(store, parent);
|
|
59
|
+
const client = yield* clientOf(parent);
|
|
60
|
+
if (Option.isSome(client)) {
|
|
61
|
+
const hold = ({ place }) => unheld(client.value.pause(place.name, { hold: fork }));
|
|
62
|
+
yield* Effect.forEach(computers, hold, { discard: true });
|
|
63
|
+
}
|
|
64
|
+
return Array.map(computers, heldOf);
|
|
65
|
+
}));
|
|
66
|
+
/** Copies one computer's disk and spec into the child, stopped: a fork copies its files and none of its processes. */
|
|
67
|
+
const copyOne = Effect.fnUntraced(function* copyOne(source, target) {
|
|
68
|
+
const fs = yield* FileSystem.FileSystem;
|
|
69
|
+
const record = yield* findRecord(source);
|
|
70
|
+
if (Option.isNone(record)) return;
|
|
71
|
+
yield* fs.makeDirectory(target.directory, { recursive: true });
|
|
72
|
+
if (yield* fs.exists(source.disk)) yield* fs.copy(source.disk, target.disk);
|
|
73
|
+
const createdAt = yield* Clock.currentTimeMillis;
|
|
74
|
+
yield* saveRecord(target, {
|
|
75
|
+
createdAt,
|
|
76
|
+
spec: record.value.spec,
|
|
77
|
+
state: "stopped"
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
const copied = (store, { child, fork, parent }) => ({ name }) => {
|
|
81
|
+
const source = placeOf(store)(parent, name);
|
|
82
|
+
const target = placeOf(store)(child, name);
|
|
83
|
+
const note = `copied from ${parent.actor}/${parent.key} by the fork ${fork}, stopped`;
|
|
84
|
+
return Effect.andThen(admitted({
|
|
85
|
+
computer: name,
|
|
86
|
+
store
|
|
87
|
+
})(copyOne(source, target)), localLog(store.path).note(target, "info", note));
|
|
88
|
+
};
|
|
89
|
+
const alreadyKept = ({ child, parent }) => ActorUnavailableError.make({
|
|
90
|
+
actor: parent.actor,
|
|
91
|
+
message: `computers are already kept for ${child.key}, which isn't stored, so the fork can't copy its own`
|
|
92
|
+
});
|
|
93
|
+
const copyInto = Effect.fnUntraced(function* copyInto(forking, held) {
|
|
94
|
+
const fs = yield* FileSystem.FileSystem;
|
|
95
|
+
const store = yield* storeOf(forking.root);
|
|
96
|
+
const directory = placeOf(store)(forking.child, "").actor;
|
|
97
|
+
if (yield* fs.exists(directory)) return yield* alreadyKept(forking);
|
|
98
|
+
yield* fs.makeDirectory(store.path.join(directory, markOf(forking.fork)), { recursive: true });
|
|
99
|
+
return yield* Effect.forEach(held, copied(store, forking), { discard: true });
|
|
100
|
+
});
|
|
101
|
+
/**
|
|
102
|
+
* Copies the held computers into the child before it is published. The child's computers directory is marked with
|
|
103
|
+
* the fork's id first, so a fork that never publishes leaves computers its retry or the next host start removes.
|
|
104
|
+
*/
|
|
105
|
+
const copyHeld = ({ held, ...forking }) => {
|
|
106
|
+
if (!Array.isReadonlyArrayNonEmpty(held)) return Effect.void;
|
|
107
|
+
return answered(forking.parent.actor)(copyInto(forking, held));
|
|
108
|
+
};
|
|
109
|
+
const released = (client, fork) => ({ name }) => unheld(client.resume(name, { hold: fork }));
|
|
110
|
+
/** Lets go of the fork's holds: each computer returns where it was, a stopped one stopped. */
|
|
111
|
+
const releaseParent = (client, fork, held) => Effect.forEach(held, released(client, fork), { discard: true });
|
|
112
|
+
/** Every computer of the parent: a fork that crashed no longer knows which it held. */
|
|
113
|
+
const everyComputer = (store, parent) => Effect.map(parentComputers(store, parent), Array.map(heldOf));
|
|
114
|
+
const releaseHeld = Effect.fnUntraced(function* releaseHeld(store, forking, held) {
|
|
115
|
+
const client = yield* clientOf(forking.parent);
|
|
116
|
+
if (Option.isNone(client)) return;
|
|
117
|
+
const letGo = yield* Option.match(held, {
|
|
118
|
+
onNone: () => everyComputer(store, forking.parent),
|
|
119
|
+
onSome: Effect.succeed
|
|
120
|
+
});
|
|
121
|
+
yield* releaseParent(client.value, forking.fork, letGo);
|
|
122
|
+
});
|
|
123
|
+
/** Lets go of the parent's computers after a fork failed, keeping the mark so the child's copies are discarded. */
|
|
124
|
+
const releaseComputers = ({ held, ...forking }) => answered(forking.parent.actor)(Effect.flatMap(storeOf(forking.root), (store) => releaseHeld(store, forking, held)));
|
|
125
|
+
/**
|
|
126
|
+
* Finishes a published fork's computers: removes the mark from the child's and lets go of the parent's. A retry of a
|
|
127
|
+
* fork that crashed after publishing passes no `held`, so every computer is let go of.
|
|
128
|
+
*/
|
|
129
|
+
const settleComputers = ({ held, ...forking }) => answered(forking.parent.actor)(Effect.gen(function* settleFork() {
|
|
130
|
+
const fs = yield* FileSystem.FileSystem;
|
|
131
|
+
const store = yield* storeOf(forking.root);
|
|
132
|
+
const mark = store.path.join(placeOf(store)(forking.child, "").actor, markOf(forking.fork));
|
|
133
|
+
yield* fs.remove(mark, {
|
|
134
|
+
force: true,
|
|
135
|
+
recursive: true
|
|
136
|
+
});
|
|
137
|
+
yield* releaseHeld(store, forking, held);
|
|
138
|
+
}));
|
|
139
|
+
/** Removes the computers a fork that never published left for a child that isn't stored: only a marked directory. */
|
|
140
|
+
const discardComputers = (forking) => answered(forking.parent.actor)(Effect.gen(function* discardChild() {
|
|
141
|
+
const fs = yield* FileSystem.FileSystem;
|
|
142
|
+
const store = yield* storeOf(forking.root);
|
|
143
|
+
const directory = placeOf(store)(forking.child, "").actor;
|
|
144
|
+
const names = yield* listed(directory);
|
|
145
|
+
if (Array.some(names, String$1.startsWith(markPrefix))) yield* fs.remove(directory, {
|
|
146
|
+
force: true,
|
|
147
|
+
recursive: true
|
|
148
|
+
});
|
|
149
|
+
}));
|
|
150
|
+
/** A stored child keeps its computers and loses the mark; a child that isn't stored loses its computers. */
|
|
151
|
+
const sweptPath = (path, root, stored) => (entry) => {
|
|
152
|
+
const mark = path.join(root, entry);
|
|
153
|
+
const owner = path.dirname(mark);
|
|
154
|
+
if (stored.has(String$1.replaceAll(path.sep, "/")(path.relative(root, owner)))) return mark;
|
|
155
|
+
return owner;
|
|
156
|
+
};
|
|
157
|
+
/**
|
|
158
|
+
* At a host's start, settles every mark crashed forks left on a child's computers. `storedActors` names each stored
|
|
159
|
+
* actor as `<Actor>/<key segment>`, and is read only when a mark is found.
|
|
160
|
+
*/
|
|
161
|
+
const sweepComputers = Effect.fnUntraced(function* sweepComputers(root, storedActors) {
|
|
162
|
+
const fs = yield* FileSystem.FileSystem;
|
|
163
|
+
const path = yield* Path.Path;
|
|
164
|
+
if (!(yield* fs.exists(root))) return;
|
|
165
|
+
const marks = yield* fs.glob(`*/*/${markPrefix}*/`, { root });
|
|
166
|
+
if (!Array.isReadonlyArrayNonEmpty(marks)) return;
|
|
167
|
+
const stored = yield* storedActors;
|
|
168
|
+
const swept = Array.map(marks, sweptPath(path, root, stored));
|
|
169
|
+
yield* Effect.forEach(swept, (removed) => fs.remove(removed, {
|
|
170
|
+
force: true,
|
|
171
|
+
recursive: true
|
|
172
|
+
}), { discard: true });
|
|
173
|
+
});
|
|
174
|
+
const make = Effect.gen(function* makeForkComputers() {
|
|
175
|
+
const services = yield* Effect.context();
|
|
176
|
+
return {
|
|
177
|
+
copy: (forking) => Effect.provideContext(copyHeld(forking), services),
|
|
178
|
+
discard: (forking) => Effect.provideContext(discardComputers(forking), services),
|
|
179
|
+
hold: (forking) => Effect.provideContext(holdParent(forking), services),
|
|
180
|
+
release: (forking) => Effect.provideContext(releaseComputers(forking), services),
|
|
181
|
+
settle: (forking) => Effect.provideContext(settleComputers(forking), services),
|
|
182
|
+
sweep: (root, storedActors) => Effect.provideContext(sweepComputers(root, storedActors), services)
|
|
183
|
+
};
|
|
184
|
+
});
|
|
185
|
+
/**
|
|
186
|
+
* The computers of an actor fork on the local engine: `hold` the parent's before the cut, `copy` them into the child
|
|
187
|
+
* before it is published, stopped, then `settle` once it is, or `release` after a failure, so `discard` finds the
|
|
188
|
+
* copies to remove. `sweep` settles what crashed forks left when a host starts.
|
|
189
|
+
*/
|
|
190
|
+
var ForkComputers = class extends Context.Service()("@akterjs/effect/host/fork/fork-computers.adapter/ForkComputers") {
|
|
191
|
+
static layer = Layer.effect(this, make);
|
|
192
|
+
};
|
|
193
|
+
export { ForkComputers };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Context, Effect } from "effect";
|
|
2
|
+
interface BlobDigest {
|
|
3
|
+
readonly digest: Effect.Effect<string>;
|
|
4
|
+
readonly update: (bytes: Uint8Array) => Effect.Effect<void>;
|
|
5
|
+
}
|
|
6
|
+
declare const BlobHashing_base: Context.ServiceClass<BlobHashing, "@akterjs/effect/host/hash/blob-hashing.service/BlobHashing", {
|
|
7
|
+
readonly sha256: Effect.Effect<BlobDigest>;
|
|
8
|
+
}>;
|
|
9
|
+
export declare class BlobHashing extends BlobHashing_base {}
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { ActorUnavailableError } from "../../contract/client/actor-unavailable.errors.mjs";
|
|
2
|
+
import { JobAddress } from "../../contract/job/job-id.pure.mjs";
|
|
3
|
+
import { StartedJob } from "../../contract/job/started-job.schema.mjs";
|
|
4
|
+
import { Execution, JobStore, Runs } from "./job-runs.pure.mjs";
|
|
5
|
+
import { Deferred, Effect, MutableHashMap, Scope } from "effect";
|
|
6
|
+
import { WorkflowEngine } from "effect/workflow";
|
|
7
|
+
/**
|
|
8
|
+
* The store of the session that has `address` open, opening the actor when no session has it. The actor stays
|
|
9
|
+
* resident until the scope closes, so a signal or poll from outside the job can't lose its session halfway. It fails
|
|
10
|
+
* with `ActorUnavailableError` when this host can't open the actor, such as when another host serves it.
|
|
11
|
+
*/
|
|
12
|
+
type Locate = (address: JobAddress) => Effect.Effect<JobStore, ActorUnavailableError, Scope.Scope>;
|
|
13
|
+
type Encoded = WorkflowEngine.Encoded;
|
|
14
|
+
interface Waiting {
|
|
15
|
+
readonly job: StartedJob;
|
|
16
|
+
readonly store: JobStore;
|
|
17
|
+
}
|
|
18
|
+
interface Engine extends Runs {
|
|
19
|
+
readonly locator: Deferred.Deferred<Locate>;
|
|
20
|
+
readonly waiting: MutableHashMap.MutableHashMap<string, Waiting>;
|
|
21
|
+
}
|
|
22
|
+
declare const storeOf: ({ engine, executionId }: {
|
|
23
|
+
readonly engine: Engine;
|
|
24
|
+
readonly executionId: string;
|
|
25
|
+
}) => Effect.Effect<JobStore, never, Scope.Scope>;
|
|
26
|
+
declare const executionOf: (engine: Engine) => Effect.Effect<Execution, never, WorkflowEngine.WorkflowInstance>;
|
|
27
|
+
/**
|
|
28
|
+
* A signal comes from outside the job, so it locates the actor's current session and keeps it resident until the
|
|
29
|
+
* result is stored, instead of trusting the store a running execution was started with, whose session can close
|
|
30
|
+
* between the lookup and the write. `deferredDone` has no error channel, so a signal this host can't deliver dies
|
|
31
|
+
* with the locator's `ActorUnavailableError`, which names the actor and what to do.
|
|
32
|
+
*/
|
|
33
|
+
declare const doneDeferred: (engine: Engine) => Encoded["deferredDone"];
|
|
34
|
+
declare const scheduleClock: (engine: Engine) => Encoded["scheduleClock"];
|
|
35
|
+
declare const deferredResult: (engine: Engine) => Encoded["deferredResult"];
|
|
36
|
+
/**
|
|
37
|
+
* Wakes this store's runs that wait on a deferred a committed command has since stored a result for (`Akter.signal`
|
|
38
|
+
* writes it with the command), once the command commits. Only the deferreds a run found empty are checked.
|
|
39
|
+
*/
|
|
40
|
+
declare const wakeSignalled: ({ engine, store }: {
|
|
41
|
+
readonly engine: Engine;
|
|
42
|
+
readonly store: JobStore;
|
|
43
|
+
}) => Effect.Effect<void>;
|
|
44
|
+
export { type Encoded, type Engine, type Locate, type Waiting, deferredResult, doneDeferred, executionOf, scheduleClock, storeOf, wakeSignalled };
|