@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.
Files changed (798) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +43 -2
  3. package/dist/contract/actor/actor-already-exists.errors.d.mts +8 -0
  4. package/dist/contract/actor/actor-already-exists.errors.mjs +4 -0
  5. package/dist/contract/actor/actor-definition.pure.d.mts +21 -0
  6. package/dist/contract/actor/actor-definition.pure.mjs +106 -0
  7. package/dist/contract/actor/actor-erased.errors.d.mts +8 -0
  8. package/dist/contract/actor/actor-erased.errors.mjs +4 -0
  9. package/dist/contract/actor/actor-names.pure.d.mts +11 -0
  10. package/dist/contract/actor/actor-names.pure.mjs +51 -0
  11. package/dist/contract/actor/actor-not-created.errors.d.mts +8 -0
  12. package/dist/contract/actor/actor-not-created.errors.mjs +4 -0
  13. package/dist/contract/actor/actor-not-registered.errors.d.mts +8 -0
  14. package/dist/contract/actor/actor-not-registered.errors.mjs +4 -0
  15. package/dist/contract/actor/actor-registry.service.d.mts +16 -0
  16. package/dist/contract/actor/actor-registry.service.mjs +21 -0
  17. package/dist/contract/actor/actor.contract.d.mts +238 -0
  18. package/dist/contract/actor/actor.contract.mjs +1 -0
  19. package/dist/contract/actor/host-interface.pure.d.mts +23 -0
  20. package/dist/contract/actor/host-interface.pure.mjs +39 -0
  21. package/dist/contract/actor/reserved-member.errors.d.mts +9 -0
  22. package/dist/contract/actor/reserved-member.errors.mjs +7 -0
  23. package/dist/contract/akter.service.d.mts +75 -0
  24. package/dist/contract/akter.service.mjs +134 -0
  25. package/dist/contract/caller/authentication.api.d.mts +6 -0
  26. package/dist/contract/caller/authentication.api.mjs +5 -0
  27. package/dist/contract/caller/caller-admission.pure.d.mts +27 -0
  28. package/dist/contract/caller/caller-admission.pure.mjs +59 -0
  29. package/dist/contract/caller/caller-not-allowed.errors.d.mts +16 -0
  30. package/dist/contract/caller/caller-not-allowed.errors.mjs +18 -0
  31. package/dist/contract/caller/caller.schema.d.mts +7 -0
  32. package/dist/contract/caller/caller.schema.mjs +8 -0
  33. package/dist/contract/caller/current-caller.service.d.mts +7 -0
  34. package/dist/contract/caller/current-caller.service.mjs +4 -0
  35. package/dist/contract/caller/principal.schema.d.mts +13 -0
  36. package/dist/contract/caller/principal.schema.mjs +10 -0
  37. package/dist/contract/caller/unauthenticated.errors.d.mts +8 -0
  38. package/dist/contract/caller/unauthenticated.errors.mjs +4 -0
  39. package/dist/contract/client/actor-client.adapter.d.mts +42 -0
  40. package/dist/contract/client/actor-client.adapter.mjs +90 -0
  41. package/dist/contract/client/actor-client.contract.d.mts +30 -0
  42. package/dist/contract/client/actor-client.contract.mjs +1 -0
  43. package/dist/contract/client/actor-rpc.contract.d.mts +33 -0
  44. package/dist/contract/client/actor-rpc.contract.mjs +16 -0
  45. package/dist/contract/client/actor-unavailable.errors.d.mts +9 -0
  46. package/dist/contract/client/actor-unavailable.errors.mjs +7 -0
  47. package/dist/contract/client/client-failure.contract.d.mts +28 -0
  48. package/dist/contract/client/client-failure.contract.mjs +28 -0
  49. package/dist/contract/client/invalid-request.errors.d.mts +9 -0
  50. package/dist/contract/client/invalid-request.errors.mjs +7 -0
  51. package/dist/contract/client/storage-limit.errors.d.mts +16 -0
  52. package/dist/contract/client/storage-limit.errors.mjs +14 -0
  53. package/dist/contract/command/command-id-expired.errors.d.mts +11 -0
  54. package/dist/contract/command/command-id-expired.errors.mjs +9 -0
  55. package/dist/contract/command/command-id.schema.d.mts +3 -0
  56. package/dist/contract/command/command-id.schema.mjs +4 -0
  57. package/dist/contract/command/command.contract.d.mts +117 -0
  58. package/dist/contract/command/command.contract.mjs +111 -0
  59. package/dist/contract/command/outbox-id.pure.d.mts +9 -0
  60. package/dist/contract/command/outbox-id.pure.mjs +14 -0
  61. package/dist/contract/command/outbox.schema.d.mts +9 -0
  62. package/dist/contract/command/outbox.schema.mjs +10 -0
  63. package/dist/contract/command/timer.schema.d.mts +20 -0
  64. package/dist/contract/command/timer.schema.mjs +14 -0
  65. package/dist/contract/computer/checkpoint-expired.errors.d.mts +12 -0
  66. package/dist/contract/computer/checkpoint-expired.errors.mjs +8 -0
  67. package/dist/contract/computer/computer-client-failure.contract.d.mts +16 -0
  68. package/dist/contract/computer/computer-client-failure.contract.mjs +1 -0
  69. package/dist/contract/computer/computer-client.adapter.d.mts +21 -0
  70. package/dist/contract/computer/computer-client.adapter.mjs +70 -0
  71. package/dist/contract/computer/computer-client.contract.d.mts +56 -0
  72. package/dist/contract/computer/computer-client.contract.mjs +1 -0
  73. package/dist/contract/computer/computer-held.errors.d.mts +13 -0
  74. package/dist/contract/computer/computer-held.errors.mjs +11 -0
  75. package/dist/contract/computer/computer-limit.errors.d.mts +15 -0
  76. package/dist/contract/computer/computer-limit.errors.mjs +13 -0
  77. package/dist/contract/computer/computer-lost.errors.d.mts +12 -0
  78. package/dist/contract/computer/computer-lost.errors.mjs +8 -0
  79. package/dist/contract/computer/computer-not-found.errors.d.mts +9 -0
  80. package/dist/contract/computer/computer-not-found.errors.mjs +5 -0
  81. package/dist/contract/computer/computer.schema.d.mts +122 -0
  82. package/dist/contract/computer/computer.schema.mjs +117 -0
  83. package/dist/contract/computer/computers-unavailable.errors.d.mts +9 -0
  84. package/dist/contract/computer/computers-unavailable.errors.mjs +5 -0
  85. package/dist/contract/computer/files/computer-files.schema.d.mts +28 -0
  86. package/dist/contract/computer/files/computer-files.schema.mjs +24 -0
  87. package/dist/contract/computer/rpc/computer-rpc.contract.d.mts +108 -0
  88. package/dist/contract/computer/rpc/computer-rpc.contract.mjs +117 -0
  89. package/dist/contract/computer/step/computer-step.contract.d.mts +21 -0
  90. package/dist/contract/computer/step/computer-step.contract.mjs +89 -0
  91. package/dist/contract/computer/step/computer-step.schema.d.mts +69 -0
  92. package/dist/contract/computer/step/computer-step.schema.mjs +71 -0
  93. package/dist/contract/computer/step/step-failure.schema.d.mts +13 -0
  94. package/dist/contract/computer/step/step-failure.schema.mjs +24 -0
  95. package/dist/contract/computer/step/step-not-found.errors.d.mts +9 -0
  96. package/dist/contract/computer/step/step-not-found.errors.mjs +5 -0
  97. package/dist/contract/description/published-contract.pure.d.mts +51 -0
  98. package/dist/contract/description/published-contract.pure.mjs +75 -0
  99. package/dist/contract/file/access/file-access-denied.errors.d.mts +11 -0
  100. package/dist/contract/file/access/file-access-denied.errors.mjs +9 -0
  101. package/dist/contract/file/access/file-access.contract.d.mts +35 -0
  102. package/dist/contract/file/access/file-access.contract.mjs +32 -0
  103. package/dist/contract/file/actor-files.contract.d.mts +50 -0
  104. package/dist/contract/file/actor-files.contract.mjs +1 -0
  105. package/dist/contract/file/blob-transfer.errors.d.mts +9 -0
  106. package/dist/contract/file/blob-transfer.errors.mjs +7 -0
  107. package/dist/contract/file/file-client-failure.contract.d.mts +24 -0
  108. package/dist/contract/file/file-client-failure.contract.mjs +1 -0
  109. package/dist/contract/file/file-client.adapter.d.mts +17 -0
  110. package/dist/contract/file/file-client.adapter.mjs +21 -0
  111. package/dist/contract/file/file-client.contract.d.mts +14 -0
  112. package/dist/contract/file/file-client.contract.mjs +1 -0
  113. package/dist/contract/file/file-listing.pure.d.mts +6 -0
  114. package/dist/contract/file/file-listing.pure.mjs +18 -0
  115. package/dist/contract/file/file-not-found.errors.d.mts +8 -0
  116. package/dist/contract/file/file-not-found.errors.mjs +4 -0
  117. package/dist/contract/file/file-path.pure.d.mts +4 -0
  118. package/dist/contract/file/file-path.pure.mjs +38 -0
  119. package/dist/contract/file/files-unavailable.errors.d.mts +8 -0
  120. package/dist/contract/file/files-unavailable.errors.mjs +4 -0
  121. package/dist/contract/file/invalid-file-request.errors.d.mts +9 -0
  122. package/dist/contract/file/invalid-file-request.errors.mjs +7 -0
  123. package/dist/contract/file/rpc/file-rpc.contract.d.mts +88 -0
  124. package/dist/contract/file/rpc/file-rpc.contract.mjs +117 -0
  125. package/dist/contract/file/rpc/file-too-large.errors.d.mts +13 -0
  126. package/dist/contract/file/rpc/file-too-large.errors.mjs +11 -0
  127. package/dist/contract/file/rpc/rpc-file-clients.layer.d.mts +10 -0
  128. package/dist/contract/file/rpc/rpc-file-clients.layer.mjs +95 -0
  129. package/dist/contract/fork/fork-rpc.contract.d.mts +40 -0
  130. package/dist/contract/fork/fork-rpc.contract.mjs +26 -0
  131. package/dist/contract/history/actor-journal.service.d.mts +58 -0
  132. package/dist/contract/history/actor-journal.service.mjs +67 -0
  133. package/dist/contract/history/history-entry.pure.d.mts +79 -0
  134. package/dist/contract/history/history-entry.pure.mjs +95 -0
  135. package/dist/contract/hosted/handler-failed.errors.d.mts +16 -0
  136. package/dist/contract/hosted/handler-failed.errors.mjs +14 -0
  137. package/dist/contract/hosted/handler-failure.pure.d.mts +21 -0
  138. package/dist/contract/hosted/handler-failure.pure.mjs +86 -0
  139. package/dist/contract/hosted/hosted-actor.service.d.mts +23 -0
  140. package/dist/contract/hosted/hosted-actor.service.mjs +64 -0
  141. package/dist/contract/hosted/hosted-command.service.d.mts +20 -0
  142. package/dist/contract/hosted/hosted-command.service.mjs +88 -0
  143. package/dist/contract/hosted/hosted-create.service.d.mts +17 -0
  144. package/dist/contract/hosted/hosted-create.service.mjs +67 -0
  145. package/dist/contract/hosted/hosted-error.contract.d.mts +11 -0
  146. package/dist/contract/hosted/hosted-error.contract.mjs +1 -0
  147. package/dist/contract/hosted/hosted-failure.schema.d.mts +18 -0
  148. package/dist/contract/hosted/hosted-failure.schema.mjs +31 -0
  149. package/dist/contract/hosted/hosted-outcome.contract.d.mts +18 -0
  150. package/dist/contract/hosted/hosted-outcome.contract.mjs +1 -0
  151. package/dist/contract/hosted/hosted-query.service.d.mts +16 -0
  152. package/dist/contract/hosted/hosted-query.service.mjs +42 -0
  153. package/dist/contract/hosted/hosted-request.pure.d.mts +61 -0
  154. package/dist/contract/hosted/hosted-request.pure.mjs +91 -0
  155. package/dist/contract/job/job-id.pure.d.mts +11 -0
  156. package/dist/contract/job/job-id.pure.mjs +20 -0
  157. package/dist/contract/job/job-patches.contract.d.mts +32 -0
  158. package/dist/contract/job/job-patches.contract.mjs +45 -0
  159. package/dist/contract/job/job-signal.schema.d.mts +13 -0
  160. package/dist/contract/job/job-signal.schema.mjs +16 -0
  161. package/dist/contract/job/reserved-payload-field.errors.d.mts +10 -0
  162. package/dist/contract/job/reserved-payload-field.errors.mjs +8 -0
  163. package/dist/contract/job/started-job.schema.d.mts +7 -0
  164. package/dist/contract/job/started-job.schema.mjs +8 -0
  165. package/dist/contract/json-codec.pure.d.mts +7 -0
  166. package/dist/contract/json-codec.pure.mjs +14 -0
  167. package/dist/contract/room.contract.d.mts +75 -0
  168. package/dist/contract/room.contract.mjs +36 -0
  169. package/dist/contract/secret/actor-secrets.adapter.d.mts +33 -0
  170. package/dist/contract/secret/actor-secrets.adapter.mjs +38 -0
  171. package/dist/contract/secret/invalid-secret-name.errors.d.mts +10 -0
  172. package/dist/contract/secret/invalid-secret-name.errors.mjs +8 -0
  173. package/dist/contract/secret/secret-unavailable.errors.d.mts +11 -0
  174. package/dist/contract/secret/secret-unavailable.errors.mjs +10 -0
  175. package/dist/contract/secret/secret.schema.d.mts +25 -0
  176. package/dist/contract/secret/secret.schema.mjs +34 -0
  177. package/dist/contract/spend/billing-unavailable.errors.d.mts +12 -0
  178. package/dist/contract/spend/billing-unavailable.errors.mjs +8 -0
  179. package/dist/contract/spend/spend-cap-reached.errors.d.mts +17 -0
  180. package/dist/contract/spend/spend-cap-reached.errors.mjs +15 -0
  181. package/dist/contract/state/actor-state.pure.d.mts +38 -0
  182. package/dist/contract/state/actor-state.pure.mjs +153 -0
  183. package/dist/contract/state/actor-state.service.d.mts +45 -0
  184. package/dist/contract/state/actor-state.service.mjs +18 -0
  185. package/dist/contract/state/state-migration.pure.d.mts +11 -0
  186. package/dist/contract/state/state-migration.pure.mjs +23 -0
  187. package/dist/contract/state/state-read.pure.d.mts +12 -0
  188. package/dist/contract/state/state-read.pure.mjs +22 -0
  189. package/dist/contract/state/state-unreadable.errors.d.mts +9 -0
  190. package/dist/contract/state/state-unreadable.errors.mjs +7 -0
  191. package/dist/host/actor/actor-database.service.d.mts +46 -0
  192. package/dist/host/actor/actor-database.service.mjs +112 -0
  193. package/dist/host/actor/actor-exclusive.pure.d.mts +7 -0
  194. package/dist/host/actor/actor-exclusive.pure.mjs +16 -0
  195. package/dist/host/actor/actor-records.sql.d.mts +29 -0
  196. package/dist/host/actor/actor-records.sql.mjs +26 -0
  197. package/dist/host/actor/reserved-name.errors.d.mts +10 -0
  198. package/dist/host/actor/reserved-name.errors.mjs +8 -0
  199. package/dist/host/actor/reserved-names.pure.d.mts +15 -0
  200. package/dist/host/actor/reserved-names.pure.mjs +20 -0
  201. package/dist/host/actor/room.actor.d.mts +4 -0
  202. package/dist/host/actor/room.actor.mjs +36 -0
  203. package/dist/host/blob/blob-frames.pure.d.mts +7 -0
  204. package/dist/host/blob/blob-frames.pure.mjs +28 -0
  205. package/dist/host/blob/blob-grant.schema.d.mts +14 -0
  206. package/dist/host/blob/blob-grant.schema.mjs +15 -0
  207. package/dist/host/blob/blob-grants.service.d.mts +28 -0
  208. package/dist/host/blob/blob-grants.service.mjs +129 -0
  209. package/dist/host/blob/blob-keyring.service.d.mts +18 -0
  210. package/dist/host/blob/blob-keyring.service.mjs +4 -0
  211. package/dist/host/blob/blob-range.pure.d.mts +13 -0
  212. package/dist/host/blob/blob-range.pure.mjs +23 -0
  213. package/dist/host/blob/blob-sealing.contract.d.mts +37 -0
  214. package/dist/host/blob/blob-sealing.contract.mjs +1 -0
  215. package/dist/host/blob/blob-sealing.service.d.mts +11 -0
  216. package/dist/host/blob/blob-sealing.service.mjs +16 -0
  217. package/dist/host/blob/export/blob-archive.sql.d.mts +21 -0
  218. package/dist/host/blob/export/blob-archive.sql.mjs +75 -0
  219. package/dist/host/blob/export/blob-export-holds.sql.d.mts +49 -0
  220. package/dist/host/blob/export/blob-export-holds.sql.mjs +25 -0
  221. package/dist/host/blob/plain-blob-sealing.pure.d.mts +5 -0
  222. package/dist/host/blob/plain-blob-sealing.pure.mjs +55 -0
  223. package/dist/host/blob/reference/blob-catalog.sql.d.mts +40 -0
  224. package/dist/host/blob/reference/blob-catalog.sql.mjs +145 -0
  225. package/dist/host/blob/reference/blob-coordinator.pure.d.mts +10 -0
  226. package/dist/host/blob/reference/blob-coordinator.pure.mjs +153 -0
  227. package/dist/host/blob/reference/blob-file-page.sql.d.mts +13 -0
  228. package/dist/host/blob/reference/blob-file-page.sql.mjs +21 -0
  229. package/dist/host/blob/reference/blob-forks.sql.d.mts +21 -0
  230. package/dist/host/blob/reference/blob-forks.sql.mjs +40 -0
  231. package/dist/host/blob/reference/blob-lineage.sql.d.mts +14 -0
  232. package/dist/host/blob/reference/blob-lineage.sql.mjs +24 -0
  233. package/dist/host/blob/reference/blob-reads.pure.d.mts +15 -0
  234. package/dist/host/blob/reference/blob-reads.pure.mjs +97 -0
  235. package/dist/host/blob/reference/blob-receipts.sql.d.mts +71 -0
  236. package/dist/host/blob/reference/blob-receipts.sql.mjs +176 -0
  237. package/dist/host/blob/reference/blob-transfer-adopt.pure.d.mts +21 -0
  238. package/dist/host/blob/reference/blob-transfer-adopt.pure.mjs +68 -0
  239. package/dist/host/blob/reference/blob-transfer-fork.pure.d.mts +15 -0
  240. package/dist/host/blob/reference/blob-transfer-fork.pure.mjs +125 -0
  241. package/dist/host/blob/reference/blob-transfer-upkeep.pure.d.mts +18 -0
  242. package/dist/host/blob/reference/blob-transfer-upkeep.pure.mjs +54 -0
  243. package/dist/host/blob/reference/blob-transfer.pure.d.mts +85 -0
  244. package/dist/host/blob/reference/blob-transfer.pure.mjs +1 -0
  245. package/dist/host/blob/sealed-blob-sealing.pure.d.mts +10 -0
  246. package/dist/host/blob/sealed-blob-sealing.pure.mjs +130 -0
  247. package/dist/host/blob/stream/blob-directory.pure.d.mts +18 -0
  248. package/dist/host/blob/stream/blob-directory.pure.mjs +84 -0
  249. package/dist/host/blob/stream/blob-length.pure.d.mts +9 -0
  250. package/dist/host/blob/stream/blob-length.pure.mjs +19 -0
  251. package/dist/host/blob/stream/blob-writing.pure.d.mts +8 -0
  252. package/dist/host/blob/stream/blob-writing.pure.mjs +15 -0
  253. package/dist/host/command/batch/command-batch.sql.d.mts +61 -0
  254. package/dist/host/command/batch/command-batch.sql.mjs +100 -0
  255. package/dist/host/command/command-context.adapter.d.mts +47 -0
  256. package/dist/host/command/command-context.adapter.mjs +90 -0
  257. package/dist/host/command/command-id-age.pure.d.mts +13 -0
  258. package/dist/host/command/command-id-age.pure.mjs +31 -0
  259. package/dist/host/command/command-id-reuse.pure.d.mts +28 -0
  260. package/dist/host/command/command-id-reuse.pure.mjs +38 -0
  261. package/dist/host/command/command-id-reused.errors.d.mts +13 -0
  262. package/dist/host/command/command-id-reused.errors.mjs +11 -0
  263. package/dist/host/command/command-journal.sql.d.mts +84 -0
  264. package/dist/host/command/command-journal.sql.mjs +74 -0
  265. package/dist/host/command/command-rejected.errors.d.mts +8 -0
  266. package/dist/host/command/command-rejected.errors.mjs +4 -0
  267. package/dist/host/command/command-replay.service.d.mts +62 -0
  268. package/dist/host/command/command-replay.service.mjs +140 -0
  269. package/dist/host/command/command-reply.pure.d.mts +8 -0
  270. package/dist/host/command/command-reply.pure.mjs +12 -0
  271. package/dist/host/command/command-runner.service.d.mts +68 -0
  272. package/dist/host/command/command-runner.service.mjs +215 -0
  273. package/dist/host/command/files/command-file-inputs.sql.d.mts +51 -0
  274. package/dist/host/command/files/command-file-inputs.sql.mjs +59 -0
  275. package/dist/host/command/history-pruned.errors.d.mts +10 -0
  276. package/dist/host/command/history-pruned.errors.mjs +8 -0
  277. package/dist/host/command/replay/replay-cursor-stalled.errors.d.mts +9 -0
  278. package/dist/host/command/replay/replay-cursor-stalled.errors.mjs +7 -0
  279. package/dist/host/command/replay/replay-cursor.pure.d.mts +7 -0
  280. package/dist/host/command/replay/replay-cursor.pure.mjs +12 -0
  281. package/dist/host/computer/computer-steps.sql.d.mts +14 -0
  282. package/dist/host/computer/computer-steps.sql.mjs +76 -0
  283. package/dist/host/computer/job-computers.service.d.mts +20 -0
  284. package/dist/host/computer/job-computers.service.mjs +59 -0
  285. package/dist/host/computer/local-computer-files.layer.d.mts +11 -0
  286. package/dist/host/computer/local-computer-files.layer.mjs +69 -0
  287. package/dist/host/computer/local-computer-log.layer.d.mts +23 -0
  288. package/dist/host/computer/local-computer-log.layer.mjs +64 -0
  289. package/dist/host/computer/local-computer-records.layer.d.mts +190 -0
  290. package/dist/host/computer/local-computer-records.layer.mjs +99 -0
  291. package/dist/host/computer/local-computer.schema.d.mts +69 -0
  292. package/dist/host/computer/local-computer.schema.mjs +29 -0
  293. package/dist/host/computer/local-computers.adapter.d.mts +18 -0
  294. package/dist/host/computer/local-computers.adapter.mjs +248 -0
  295. package/dist/host/computer/local-step.layer.d.mts +30 -0
  296. package/dist/host/computer/local-step.layer.mjs +119 -0
  297. package/dist/host/file/actor-file-storage.sql.d.mts +15 -0
  298. package/dist/host/file/actor-file-storage.sql.mjs +82 -0
  299. package/dist/host/file/actor-files.sql.d.mts +9 -0
  300. package/dist/host/file/actor-files.sql.mjs +3 -0
  301. package/dist/host/file/blob-home-lock.pure.d.mts +8 -0
  302. package/dist/host/file/blob-home-lock.pure.mjs +10 -0
  303. package/dist/host/file/blob-home.sql.d.mts +19 -0
  304. package/dist/host/file/blob-home.sql.mjs +30 -0
  305. package/dist/host/file/local-blob-home.service.d.mts +16 -0
  306. package/dist/host/file/local-blob-home.service.mjs +43 -0
  307. package/dist/host/file/local-blob-owner.sql.d.mts +30 -0
  308. package/dist/host/file/local-blob-owner.sql.mjs +68 -0
  309. package/dist/host/file/local-file-upkeep.pure.d.mts +12 -0
  310. package/dist/host/file/local-file-upkeep.pure.mjs +41 -0
  311. package/dist/host/file/replay-file-storage.sql.d.mts +7 -0
  312. package/dist/host/file/replay-file-storage.sql.mjs +26 -0
  313. package/dist/host/fork/actor-fork.sql.d.mts +52 -0
  314. package/dist/host/fork/actor-fork.sql.mjs +42 -0
  315. package/dist/host/fork/fork-computers.adapter.d.mts +43 -0
  316. package/dist/host/fork/fork-computers.adapter.mjs +193 -0
  317. package/dist/host/hash/blob-hashing.service.d.mts +10 -0
  318. package/dist/host/hash/blob-hashing.service.mjs +4 -0
  319. package/dist/host/job/job-durables.sql.d.mts +44 -0
  320. package/dist/host/job/job-durables.sql.mjs +136 -0
  321. package/dist/host/job/job-engine.adapter.d.mts +33 -0
  322. package/dist/host/job/job-engine.adapter.mjs +258 -0
  323. package/dist/host/job/job-journal.sql.d.mts +85 -0
  324. package/dist/host/job/job-journal.sql.mjs +109 -0
  325. package/dist/host/job/job-results.service.d.mts +37 -0
  326. package/dist/host/job/job-results.service.mjs +63 -0
  327. package/dist/host/job/job-runs.pure.d.mts +103 -0
  328. package/dist/host/job/job-runs.pure.mjs +193 -0
  329. package/dist/host/job/undelivered-result.pure.d.mts +49 -0
  330. package/dist/host/job/undelivered-result.pure.mjs +147 -0
  331. package/dist/host/layout/actor-layout.sql.d.mts +8 -0
  332. package/dist/host/layout/actor-layout.sql.mjs +33 -0
  333. package/dist/host/layout/layout-version.errors.d.mts +10 -0
  334. package/dist/host/layout/layout-version.errors.mjs +8 -0
  335. package/dist/host/layout/layout-version.pure.d.mts +10 -0
  336. package/dist/host/layout/layout-version.pure.mjs +14 -0
  337. package/dist/host/migration/actor-migrations.service.d.mts +46 -0
  338. package/dist/host/migration/actor-migrations.service.mjs +143 -0
  339. package/dist/host/migration/migration-edited.errors.d.mts +9 -0
  340. package/dist/host/migration/migration-edited.errors.mjs +7 -0
  341. package/dist/host/migration/migration-failed.errors.d.mts +12 -0
  342. package/dist/host/migration/migration-failed.errors.mjs +10 -0
  343. package/dist/host/migration/migration-failure.pure.d.mts +9 -0
  344. package/dist/host/migration/migration-failure.pure.mjs +19 -0
  345. package/dist/host/migration/migration-hasher.adapter.d.mts +15 -0
  346. package/dist/host/migration/migration-hasher.adapter.mjs +40 -0
  347. package/dist/host/migration/migration-missing.errors.d.mts +9 -0
  348. package/dist/host/migration/migration-missing.errors.mjs +7 -0
  349. package/dist/host/migration/migration-plan.pure.d.mts +20 -0
  350. package/dist/host/migration/migration-plan.pure.mjs +32 -0
  351. package/dist/host/outbox/actor-outbox.sql.d.mts +33 -0
  352. package/dist/host/outbox/actor-outbox.sql.mjs +28 -0
  353. package/dist/host/outbox/outbox-acknowledgements.sql.d.mts +12 -0
  354. package/dist/host/outbox/outbox-acknowledgements.sql.mjs +47 -0
  355. package/dist/host/outbox/outbox-runner.service.d.mts +37 -0
  356. package/dist/host/outbox/outbox-runner.service.mjs +155 -0
  357. package/dist/host/query/query-policy.pure.d.mts +15 -0
  358. package/dist/host/query/query-policy.pure.mjs +12 -0
  359. package/dist/host/query/query-runner.service.d.mts +42 -0
  360. package/dist/host/query/query-runner.service.mjs +72 -0
  361. package/dist/host/sqlite/actor-connections.pure.d.mts +26 -0
  362. package/dist/host/sqlite/actor-connections.pure.mjs +4 -0
  363. package/dist/host/sqlite/sqlite-connection.adapter.d.mts +22 -0
  364. package/dist/host/sqlite/sqlite-connection.adapter.mjs +151 -0
  365. package/dist/host/sqlite/sqlite-driver.service.d.mts +33 -0
  366. package/dist/host/sqlite/sqlite-driver.service.mjs +88 -0
  367. package/dist/host/sqlite/sqlite-parameters.pure.d.mts +5 -0
  368. package/dist/host/sqlite/sqlite-parameters.pure.mjs +21 -0
  369. package/dist/host/sqlite/sqlite-reason.pure.d.mts +8 -0
  370. package/dist/host/sqlite/sqlite-reason.pure.mjs +13 -0
  371. package/dist/host/timer/actor-timers.sql.d.mts +32 -0
  372. package/dist/host/timer/actor-timers.sql.mjs +8 -0
  373. package/dist/host/timer/timer-runner.service.d.mts +26 -0
  374. package/dist/host/timer/timer-runner.service.mjs +68 -0
  375. package/dist/host/upkeep/actor-due.sql.d.mts +26 -0
  376. package/dist/host/upkeep/actor-due.sql.mjs +43 -0
  377. package/dist/host/upkeep/actor-upkeep.service.d.mts +55 -0
  378. package/dist/host/upkeep/actor-upkeep.service.mjs +218 -0
  379. package/dist/host/upkeep/execution-authority.pure.d.mts +19 -0
  380. package/dist/host/upkeep/execution-authority.pure.mjs +10 -0
  381. package/dist/runtime/akter-local.layer.d.mts +28 -0
  382. package/dist/runtime/akter-local.layer.mjs +24 -0
  383. package/dist/runtime/akter.layer.d.mts +91 -0
  384. package/dist/runtime/akter.layer.mjs +99 -0
  385. package/dist/runtime/blob-hashing.layer.d.mts +4 -0
  386. package/dist/runtime/blob-hashing.layer.mjs +15 -0
  387. package/dist/runtime/hosted-environment.layer.d.mts +34 -0
  388. package/dist/runtime/hosted-environment.layer.mjs +40 -0
  389. package/dist/runtime/http-server.layer.d.mts +9 -0
  390. package/dist/runtime/http-server.layer.mjs +15 -0
  391. package/dist/runtime/local-actor-engine.layer.d.mts +10 -0
  392. package/dist/runtime/local-actor-engine.layer.mjs +14 -0
  393. package/dist/runtime/local-engine.layer.d.mts +15 -0
  394. package/dist/runtime/local-engine.layer.mjs +14 -0
  395. package/dist/runtime/local-environments.layer.d.mts +24 -0
  396. package/dist/runtime/local-environments.layer.mjs +159 -0
  397. package/dist/runtime/local-file-clients.layer.d.mts +13 -0
  398. package/dist/runtime/local-file-clients.layer.mjs +78 -0
  399. package/dist/runtime/local-job-runtime.layer.d.mts +19 -0
  400. package/dist/runtime/local-job-runtime.layer.mjs +21 -0
  401. package/dist/serve/archive/archived-actors.layer.d.mts +17 -0
  402. package/dist/serve/archive/archived-actors.layer.mjs +84 -0
  403. package/dist/serve/archive/archived-store.layer.d.mts +12 -0
  404. package/dist/serve/archive/archived-store.layer.mjs +40 -0
  405. package/dist/serve/engine/actor-engine.layer.d.mts +8 -0
  406. package/dist/serve/engine/actor-engine.layer.mjs +30 -0
  407. package/dist/serve/engine/actor-fork.service.d.mts +63 -0
  408. package/dist/serve/engine/actor-fork.service.mjs +277 -0
  409. package/dist/serve/engine/actor-holding.pure.d.mts +7 -0
  410. package/dist/serve/engine/actor-holding.pure.mjs +9 -0
  411. package/dist/serve/engine/actor-host.service.d.mts +66 -0
  412. package/dist/serve/engine/actor-host.service.mjs +209 -0
  413. package/dist/serve/engine/actor-location.service.d.mts +38 -0
  414. package/dist/serve/engine/actor-location.service.mjs +109 -0
  415. package/dist/serve/engine/actor-residents.pure.d.mts +92 -0
  416. package/dist/serve/engine/actor-residents.pure.mjs +201 -0
  417. package/dist/serve/engine/actor-shard.pure.d.mts +4 -0
  418. package/dist/serve/engine/actor-shard.pure.mjs +8 -0
  419. package/dist/serve/engine/actor-state.pure.d.mts +17 -0
  420. package/dist/serve/engine/actor-state.pure.mjs +20 -0
  421. package/dist/serve/engine/actors-not-hosted.errors.d.mts +9 -0
  422. package/dist/serve/engine/actors-not-hosted.errors.mjs +7 -0
  423. package/dist/serve/engine/job-runtime.layer.d.mts +6 -0
  424. package/dist/serve/engine/job-runtime.layer.mjs +5 -0
  425. package/dist/serve/environment/environment-already-exists.errors.d.mts +10 -0
  426. package/dist/serve/environment/environment-already-exists.errors.mjs +9 -0
  427. package/dist/serve/environment/environment-in-use.errors.d.mts +10 -0
  428. package/dist/serve/environment/environment-in-use.errors.mjs +14 -0
  429. package/dist/serve/environment/environment-not-found.errors.d.mts +10 -0
  430. package/dist/serve/environment/environment-not-found.errors.mjs +9 -0
  431. package/dist/serve/environment/environment-records.sql.d.mts +92 -0
  432. package/dist/serve/environment/environment-records.sql.mjs +59 -0
  433. package/dist/serve/environment/environment-store.sql.d.mts +38 -0
  434. package/dist/serve/environment/environment-store.sql.mjs +78 -0
  435. package/dist/serve/environment/local-environment.schema.d.mts +38 -0
  436. package/dist/serve/environment/local-environment.schema.mjs +43 -0
  437. package/dist/serve/environment/local-environments.service.d.mts +44 -0
  438. package/dist/serve/environment/local-environments.service.mjs +196 -0
  439. package/dist/serve/environment/promotion-notice.pure.d.mts +22 -0
  440. package/dist/serve/environment/promotion-notice.pure.mjs +30 -0
  441. package/dist/serve/environment/snapshot-operations.sql.d.mts +32 -0
  442. package/dist/serve/environment/snapshot-operations.sql.mjs +131 -0
  443. package/dist/serve/environment/store-snapshot.sql.d.mts +32 -0
  444. package/dist/serve/environment/store-snapshot.sql.mjs +74 -0
  445. package/dist/serve/erasure/local-actor-erasure.service.d.mts +26 -0
  446. package/dist/serve/erasure/local-actor-erasure.service.mjs +102 -0
  447. package/dist/serve/history/actor-host-runners.service.d.mts +23 -0
  448. package/dist/serve/history/actor-host-runners.service.mjs +35 -0
  449. package/dist/serve/hosted/hosted-app-build.errors.d.mts +13 -0
  450. package/dist/serve/hosted/hosted-app-build.errors.mjs +9 -0
  451. package/dist/serve/hosted/hosted-app-checks.layer.d.mts +15 -0
  452. package/dist/serve/hosted/hosted-app-checks.layer.mjs +32 -0
  453. package/dist/serve/hosted/hosted-file-forward.layer.d.mts +22 -0
  454. package/dist/serve/hosted/hosted-file-forward.layer.mjs +42 -0
  455. package/dist/serve/hosted/hosted-file-rpcs.layer.d.mts +25 -0
  456. package/dist/serve/hosted/hosted-file-rpcs.layer.mjs +82 -0
  457. package/dist/serve/hosted/hosted-file-server.layer.d.mts +18 -0
  458. package/dist/serve/hosted/hosted-file-server.layer.mjs +33 -0
  459. package/dist/serve/hosted/hosted-files.layer.d.mts +32 -0
  460. package/dist/serve/hosted/hosted-files.layer.mjs +55 -0
  461. package/dist/serve/hosted/hosted-runtime.layer.d.mts +42 -0
  462. package/dist/serve/hosted/hosted-runtime.layer.mjs +48 -0
  463. package/dist/serve/hosted/hosted-runtime.service.d.mts +77 -0
  464. package/dist/serve/hosted/hosted-runtime.service.mjs +74 -0
  465. package/dist/serve/hosted/hosted-secrets.layer.d.mts +10 -0
  466. package/dist/serve/hosted/hosted-secrets.layer.mjs +28 -0
  467. package/dist/serve/http/loopback-host.pure.d.mts +11 -0
  468. package/dist/serve/http/loopback-host.pure.mjs +29 -0
  469. package/dist/serve/inspect/actor-inspection.schema.d.mts +119 -0
  470. package/dist/serve/inspect/actor-inspection.schema.mjs +75 -0
  471. package/dist/serve/inspect/actor-inspection.sql.d.mts +12 -0
  472. package/dist/serve/inspect/actor-inspection.sql.mjs +43 -0
  473. package/dist/serve/inspect/inspect.service.d.mts +24 -0
  474. package/dist/serve/inspect/inspect.service.mjs +92 -0
  475. package/dist/serve/inspect/inspector-page.pure.d.mts +2 -0
  476. package/dist/serve/inspect/inspector-page.pure.mjs +155 -0
  477. package/dist/serve/inspect/inspector-wal.pure.d.mts +3 -0
  478. package/dist/serve/inspect/inspector-wal.pure.mjs +19 -0
  479. package/dist/serve/inspect/inspector.handlers.d.mts +5 -0
  480. package/dist/serve/inspect/inspector.handlers.mjs +50 -0
  481. package/dist/serve/inspect/inspector.layer.d.mts +9 -0
  482. package/dist/serve/inspect/inspector.layer.mjs +14 -0
  483. package/dist/serve/live/live-reads.service.d.mts +44 -0
  484. package/dist/serve/live/live-reads.service.mjs +152 -0
  485. package/dist/serve/live/live-tables.sql.d.mts +35 -0
  486. package/dist/serve/live/live-tables.sql.mjs +66 -0
  487. package/dist/serve/live/state-reads.pure.d.mts +11 -0
  488. package/dist/serve/live/state-reads.pure.mjs +7 -0
  489. package/dist/serve/rpc/actor-rpc.handlers.d.mts +24 -0
  490. package/dist/serve/rpc/actor-rpc.handlers.mjs +142 -0
  491. package/dist/serve/rpc/akter-server.layer.d.mts +18 -0
  492. package/dist/serve/rpc/akter-server.layer.mjs +61 -0
  493. package/dist/serve/rpc/computer/computer-copy.layer.d.mts +22 -0
  494. package/dist/serve/rpc/computer/computer-copy.layer.mjs +70 -0
  495. package/dist/serve/rpc/computer/computer-rpc-access.pure.d.mts +29 -0
  496. package/dist/serve/rpc/computer/computer-rpc-access.pure.mjs +46 -0
  497. package/dist/serve/rpc/computer/computer-rpc.layer.d.mts +39 -0
  498. package/dist/serve/rpc/computer/computer-rpc.layer.mjs +84 -0
  499. package/dist/serve/rpc/computer/step-rpc.handlers.d.mts +23 -0
  500. package/dist/serve/rpc/computer/step-rpc.handlers.mjs +43 -0
  501. package/dist/serve/rpc/development-authentication.handlers.d.mts +7 -0
  502. package/dist/serve/rpc/development-authentication.handlers.mjs +19 -0
  503. package/dist/serve/rpc/development-guard.pure.d.mts +10 -0
  504. package/dist/serve/rpc/development-guard.pure.mjs +16 -0
  505. package/dist/serve/rpc/file/file-rpc-access.pure.d.mts +55 -0
  506. package/dist/serve/rpc/file/file-rpc-access.pure.mjs +67 -0
  507. package/dist/serve/rpc/file/file-rpc.layer.d.mts +53 -0
  508. package/dist/serve/rpc/file/file-rpc.layer.mjs +143 -0
  509. package/dist/serve/rpc/file/upload-sessions.pure.d.mts +45 -0
  510. package/dist/serve/rpc/file/upload-sessions.pure.mjs +187 -0
  511. package/dist/serve/rpc/in-process-client.layer.d.mts +13 -0
  512. package/dist/serve/rpc/in-process-client.layer.mjs +34 -0
  513. package/dist/serve/rpc/listener-not-loopback.errors.d.mts +9 -0
  514. package/dist/serve/rpc/listener-not-loopback.errors.mjs +7 -0
  515. package/dist/serve/rpc/ndjson-only.pure.d.mts +5 -0
  516. package/dist/serve/rpc/ndjson-only.pure.mjs +14 -0
  517. package/dist/serve/rpc/served-rpc.layer.d.mts +6 -0
  518. package/dist/serve/rpc/served-rpc.layer.mjs +19 -0
  519. package/dist/serve/store/actor-not-migrated.errors.d.mts +10 -0
  520. package/dist/serve/store/actor-not-migrated.errors.mjs +8 -0
  521. package/dist/serve/store/store-migrations.layer.d.mts +5 -0
  522. package/dist/serve/store/store-migrations.layer.mjs +18 -0
  523. package/dist/serve/store/store-migrations.service.d.mts +26 -0
  524. package/dist/serve/store/store-migrations.service.mjs +47 -0
  525. package/dist/serve/store/store-unreadable.errors.d.mts +9 -0
  526. package/dist/serve/store/store-unreadable.errors.mjs +7 -0
  527. package/dist/serve/verify/verify.layer.d.mts +16 -0
  528. package/dist/serve/verify/verify.layer.mjs +36 -0
  529. package/dist/testing/story-driver.service.d.mts +29 -0
  530. package/dist/testing/story-driver.service.mjs +126 -0
  531. package/dist/testing/story.layer.d.mts +21 -0
  532. package/dist/testing/story.layer.mjs +42 -0
  533. package/package.json +106 -3
  534. package/src/contract/actor/actor-already-exists.errors.ts +8 -0
  535. package/src/contract/actor/actor-definition.pure.ts +157 -0
  536. package/src/contract/actor/actor-erased.errors.ts +8 -0
  537. package/src/contract/actor/actor-names.pure.ts +64 -0
  538. package/src/contract/actor/actor-not-created.errors.ts +8 -0
  539. package/src/contract/actor/actor-not-registered.errors.ts +8 -0
  540. package/src/contract/actor/actor-registry.service.ts +35 -0
  541. package/src/contract/actor/actor.contract.ts +409 -0
  542. package/src/contract/actor/host-interface.pure.ts +60 -0
  543. package/src/contract/actor/reserved-member.errors.ts +9 -0
  544. package/src/contract/akter.service.ts +233 -0
  545. package/src/contract/caller/authentication.api.ts +9 -0
  546. package/src/contract/caller/caller-admission.pure.ts +90 -0
  547. package/src/contract/caller/caller-not-allowed.errors.ts +26 -0
  548. package/src/contract/caller/caller.schema.ts +7 -0
  549. package/src/contract/caller/current-caller.service.ts +7 -0
  550. package/src/contract/caller/principal.schema.ts +13 -0
  551. package/src/contract/caller/unauthenticated.errors.ts +8 -0
  552. package/src/contract/client/actor-client.adapter.ts +217 -0
  553. package/src/contract/client/actor-client.contract.ts +53 -0
  554. package/src/contract/client/actor-rpc.contract.ts +91 -0
  555. package/src/contract/client/actor-unavailable.errors.ts +9 -0
  556. package/src/contract/client/client-failure.contract.ts +53 -0
  557. package/src/contract/client/invalid-request.errors.ts +9 -0
  558. package/src/contract/client/storage-limit.errors.ts +16 -0
  559. package/src/contract/command/command-id-expired.errors.ts +11 -0
  560. package/src/contract/command/command-id.schema.ts +5 -0
  561. package/src/contract/command/command.contract.ts +334 -0
  562. package/src/contract/command/outbox-id.pure.ts +25 -0
  563. package/src/contract/command/outbox.schema.ts +11 -0
  564. package/src/contract/command/timer.schema.ts +21 -0
  565. package/src/contract/computer/checkpoint-expired.errors.ts +12 -0
  566. package/src/contract/computer/computer-client-failure.contract.ts +27 -0
  567. package/src/contract/computer/computer-client.adapter.ts +110 -0
  568. package/src/contract/computer/computer-client.contract.ts +75 -0
  569. package/src/contract/computer/computer-held.errors.ts +10 -0
  570. package/src/contract/computer/computer-limit.errors.ts +11 -0
  571. package/src/contract/computer/computer-lost.errors.ts +10 -0
  572. package/src/contract/computer/computer-not-found.errors.ts +9 -0
  573. package/src/contract/computer/computer.schema.ts +159 -0
  574. package/src/contract/computer/computers-unavailable.errors.ts +9 -0
  575. package/src/contract/computer/files/computer-files.schema.ts +31 -0
  576. package/src/contract/computer/rpc/computer-rpc.contract.ts +140 -0
  577. package/src/contract/computer/step/computer-step.contract.ts +126 -0
  578. package/src/contract/computer/step/computer-step.schema.ts +80 -0
  579. package/src/contract/computer/step/step-failure.schema.ts +26 -0
  580. package/src/contract/computer/step/step-not-found.errors.ts +7 -0
  581. package/src/contract/description/published-contract.pure.ts +187 -0
  582. package/src/contract/file/access/file-access-denied.errors.ts +11 -0
  583. package/src/contract/file/access/file-access.contract.ts +56 -0
  584. package/src/contract/file/actor-files.contract.ts +78 -0
  585. package/src/contract/file/blob-transfer.errors.ts +6 -0
  586. package/src/contract/file/file-client-failure.contract.ts +43 -0
  587. package/src/contract/file/file-client.adapter.ts +45 -0
  588. package/src/contract/file/file-client.contract.ts +24 -0
  589. package/src/contract/file/file-listing.pure.ts +30 -0
  590. package/src/contract/file/file-not-found.errors.ts +6 -0
  591. package/src/contract/file/file-path.pure.ts +37 -0
  592. package/src/contract/file/files-unavailable.errors.ts +8 -0
  593. package/src/contract/file/invalid-file-request.errors.ts +9 -0
  594. package/src/contract/file/rpc/file-rpc.contract.ts +148 -0
  595. package/src/contract/file/rpc/file-too-large.errors.ts +10 -0
  596. package/src/contract/file/rpc/rpc-file-clients.layer.ts +184 -0
  597. package/src/contract/fork/fork-rpc.contract.ts +44 -0
  598. package/src/contract/history/actor-journal.service.ts +195 -0
  599. package/src/contract/history/history-entry.pure.ts +282 -0
  600. package/src/contract/hosted/handler-failed.errors.ts +16 -0
  601. package/src/contract/hosted/handler-failure.pure.ts +161 -0
  602. package/src/contract/hosted/hosted-actor.service.ts +97 -0
  603. package/src/contract/hosted/hosted-command.service.ts +114 -0
  604. package/src/contract/hosted/hosted-create.service.ts +95 -0
  605. package/src/contract/hosted/hosted-error.contract.ts +22 -0
  606. package/src/contract/hosted/hosted-failure.schema.ts +32 -0
  607. package/src/contract/hosted/hosted-outcome.contract.ts +21 -0
  608. package/src/contract/hosted/hosted-query.service.ts +50 -0
  609. package/src/contract/hosted/hosted-request.pure.ts +185 -0
  610. package/src/contract/job/job-id.pure.ts +37 -0
  611. package/src/contract/job/job-patches.contract.ts +86 -0
  612. package/src/contract/job/job-signal.schema.ts +23 -0
  613. package/src/contract/job/reserved-payload-field.errors.ts +10 -0
  614. package/src/contract/job/started-job.schema.ts +9 -0
  615. package/src/contract/json-codec.pure.ts +27 -0
  616. package/src/contract/room.contract.ts +31 -0
  617. package/src/contract/secret/actor-secrets.adapter.ts +87 -0
  618. package/src/contract/secret/invalid-secret-name.errors.ts +10 -0
  619. package/src/contract/secret/secret-unavailable.errors.ts +13 -0
  620. package/src/contract/secret/secret.schema.ts +43 -0
  621. package/src/contract/spend/billing-unavailable.errors.ts +12 -0
  622. package/src/contract/spend/spend-cap-reached.errors.ts +17 -0
  623. package/src/contract/state/actor-state.pure.ts +192 -0
  624. package/src/contract/state/actor-state.service.ts +69 -0
  625. package/src/contract/state/state-migration.pure.ts +57 -0
  626. package/src/contract/state/state-read.pure.ts +40 -0
  627. package/src/contract/state/state-unreadable.errors.ts +9 -0
  628. package/src/host/actor/actor-database.service.ts +145 -0
  629. package/src/host/actor/actor-exclusive.pure.ts +32 -0
  630. package/src/host/actor/actor-records.sql.ts +78 -0
  631. package/src/host/actor/reserved-name.errors.ts +10 -0
  632. package/src/host/actor/reserved-names.pure.ts +40 -0
  633. package/src/host/actor/room.actor.ts +57 -0
  634. package/src/host/blob/blob-frames.pure.ts +52 -0
  635. package/src/host/blob/blob-grant.schema.ts +22 -0
  636. package/src/host/blob/blob-grants.service.ts +197 -0
  637. package/src/host/blob/blob-keyring.service.ts +25 -0
  638. package/src/host/blob/blob-range.pure.ts +33 -0
  639. package/src/host/blob/blob-sealing.contract.ts +46 -0
  640. package/src/host/blob/blob-sealing.service.ts +25 -0
  641. package/src/host/blob/export/blob-archive.sql.ts +153 -0
  642. package/src/host/blob/export/blob-export-holds.sql.ts +91 -0
  643. package/src/host/blob/plain-blob-sealing.pure.ts +70 -0
  644. package/src/host/blob/reference/blob-catalog.sql.ts +339 -0
  645. package/src/host/blob/reference/blob-coordinator.pure.ts +217 -0
  646. package/src/host/blob/reference/blob-file-page.sql.ts +48 -0
  647. package/src/host/blob/reference/blob-forks.sql.ts +125 -0
  648. package/src/host/blob/reference/blob-lineage.sql.ts +63 -0
  649. package/src/host/blob/reference/blob-reads.pure.ts +172 -0
  650. package/src/host/blob/reference/blob-receipts.sql.ts +375 -0
  651. package/src/host/blob/reference/blob-transfer-adopt.pure.ts +127 -0
  652. package/src/host/blob/reference/blob-transfer-fork.pure.ts +174 -0
  653. package/src/host/blob/reference/blob-transfer-upkeep.pure.ts +132 -0
  654. package/src/host/blob/reference/blob-transfer.pure.ts +127 -0
  655. package/src/host/blob/sealed-blob-sealing.pure.ts +163 -0
  656. package/src/host/blob/stream/blob-directory.pure.ts +177 -0
  657. package/src/host/blob/stream/blob-length.pure.ts +40 -0
  658. package/src/host/blob/stream/blob-writing.pure.ts +49 -0
  659. package/src/host/command/batch/command-batch.sql.ts +207 -0
  660. package/src/host/command/command-context.adapter.ts +134 -0
  661. package/src/host/command/command-id-age.pure.ts +54 -0
  662. package/src/host/command/command-id-reuse.pure.ts +90 -0
  663. package/src/host/command/command-id-reused.errors.ts +13 -0
  664. package/src/host/command/command-journal.sql.ts +232 -0
  665. package/src/host/command/command-rejected.errors.ts +8 -0
  666. package/src/host/command/command-replay.service.ts +223 -0
  667. package/src/host/command/command-reply.pure.ts +21 -0
  668. package/src/host/command/command-runner.service.ts +320 -0
  669. package/src/host/command/files/command-file-inputs.sql.ts +114 -0
  670. package/src/host/command/history-pruned.errors.ts +10 -0
  671. package/src/host/command/replay/replay-cursor-stalled.errors.ts +9 -0
  672. package/src/host/command/replay/replay-cursor.pure.ts +19 -0
  673. package/src/host/computer/computer-steps.sql.ts +120 -0
  674. package/src/host/computer/job-computers.service.ts +84 -0
  675. package/src/host/computer/local-computer-files.layer.ts +103 -0
  676. package/src/host/computer/local-computer-log.layer.ts +115 -0
  677. package/src/host/computer/local-computer-records.layer.ts +205 -0
  678. package/src/host/computer/local-computer.schema.ts +36 -0
  679. package/src/host/computer/local-computers.adapter.ts +379 -0
  680. package/src/host/computer/local-step.layer.ts +174 -0
  681. package/src/host/file/actor-file-storage.sql.ts +79 -0
  682. package/src/host/file/actor-files.sql.ts +15 -0
  683. package/src/host/file/blob-home-lock.pure.ts +23 -0
  684. package/src/host/file/blob-home.sql.ts +55 -0
  685. package/src/host/file/local-blob-home.service.ts +71 -0
  686. package/src/host/file/local-blob-owner.sql.ts +89 -0
  687. package/src/host/file/local-file-upkeep.pure.ts +77 -0
  688. package/src/host/file/replay-file-storage.sql.ts +43 -0
  689. package/src/host/fork/actor-fork.sql.ts +110 -0
  690. package/src/host/fork/fork-computers.adapter.ts +366 -0
  691. package/src/host/hash/blob-hashing.service.ts +14 -0
  692. package/src/host/job/job-durables.sql.ts +214 -0
  693. package/src/host/job/job-engine.adapter.ts +420 -0
  694. package/src/host/job/job-journal.sql.ts +257 -0
  695. package/src/host/job/job-results.service.ts +111 -0
  696. package/src/host/job/job-runs.pure.ts +445 -0
  697. package/src/host/job/undelivered-result.pure.ts +265 -0
  698. package/src/host/layout/actor-layout.sql.ts +45 -0
  699. package/src/host/layout/layout-version.errors.ts +10 -0
  700. package/src/host/layout/layout-version.pure.ts +22 -0
  701. package/src/host/migration/actor-migrations.service.ts +159 -0
  702. package/src/host/migration/migration-edited.errors.ts +9 -0
  703. package/src/host/migration/migration-failed.errors.ts +12 -0
  704. package/src/host/migration/migration-failure.pure.ts +28 -0
  705. package/src/host/migration/migration-hasher.adapter.ts +70 -0
  706. package/src/host/migration/migration-missing.errors.ts +9 -0
  707. package/src/host/migration/migration-plan.pure.ts +66 -0
  708. package/src/host/outbox/actor-outbox.sql.ts +98 -0
  709. package/src/host/outbox/outbox-acknowledgements.sql.ts +93 -0
  710. package/src/host/outbox/outbox-runner.service.ts +253 -0
  711. package/src/host/query/query-policy.pure.ts +31 -0
  712. package/src/host/query/query-runner.service.ts +132 -0
  713. package/src/host/sqlite/actor-connections.pure.ts +44 -0
  714. package/src/host/sqlite/sqlite-connection.adapter.ts +260 -0
  715. package/src/host/sqlite/sqlite-driver.service.ts +151 -0
  716. package/src/host/sqlite/sqlite-parameters.pure.ts +28 -0
  717. package/src/host/sqlite/sqlite-reason.pure.ts +19 -0
  718. package/src/host/timer/actor-timers.sql.ts +67 -0
  719. package/src/host/timer/timer-runner.service.ts +117 -0
  720. package/src/host/upkeep/actor-due.sql.ts +71 -0
  721. package/src/host/upkeep/actor-upkeep.service.ts +404 -0
  722. package/src/host/upkeep/execution-authority.pure.ts +37 -0
  723. package/src/runtime/akter-local.layer.ts +49 -0
  724. package/src/runtime/akter.layer.ts +208 -0
  725. package/src/runtime/blob-hashing.layer.ts +21 -0
  726. package/src/runtime/hosted-environment.layer.ts +85 -0
  727. package/src/runtime/http-server.layer.ts +29 -0
  728. package/src/runtime/local-actor-engine.layer.ts +33 -0
  729. package/src/runtime/local-engine.layer.ts +37 -0
  730. package/src/runtime/local-environments.layer.ts +214 -0
  731. package/src/runtime/local-file-clients.layer.ts +112 -0
  732. package/src/runtime/local-job-runtime.layer.ts +38 -0
  733. package/src/serve/archive/archived-actors.layer.ts +97 -0
  734. package/src/serve/archive/archived-store.layer.ts +46 -0
  735. package/src/serve/engine/actor-engine.layer.ts +46 -0
  736. package/src/serve/engine/actor-fork.service.ts +403 -0
  737. package/src/serve/engine/actor-holding.pure.ts +28 -0
  738. package/src/serve/engine/actor-host.service.ts +454 -0
  739. package/src/serve/engine/actor-location.service.ts +219 -0
  740. package/src/serve/engine/actor-residents.pure.ts +500 -0
  741. package/src/serve/engine/actor-shard.pure.ts +13 -0
  742. package/src/serve/engine/actor-state.pure.ts +45 -0
  743. package/src/serve/engine/actors-not-hosted.errors.ts +9 -0
  744. package/src/serve/engine/job-runtime.layer.ts +13 -0
  745. package/src/serve/environment/environment-already-exists.errors.ts +9 -0
  746. package/src/serve/environment/environment-in-use.errors.ts +17 -0
  747. package/src/serve/environment/environment-not-found.errors.ts +9 -0
  748. package/src/serve/environment/environment-records.sql.ts +208 -0
  749. package/src/serve/environment/environment-store.sql.ts +116 -0
  750. package/src/serve/environment/local-environment.schema.ts +79 -0
  751. package/src/serve/environment/local-environments.service.ts +268 -0
  752. package/src/serve/environment/promotion-notice.pure.ts +63 -0
  753. package/src/serve/environment/snapshot-operations.sql.ts +210 -0
  754. package/src/serve/environment/store-snapshot.sql.ts +128 -0
  755. package/src/serve/erasure/local-actor-erasure.service.ts +170 -0
  756. package/src/serve/history/actor-host-runners.service.ts +85 -0
  757. package/src/serve/hosted/hosted-app-build.errors.ts +11 -0
  758. package/src/serve/hosted/hosted-app-checks.layer.ts +74 -0
  759. package/src/serve/hosted/hosted-file-forward.layer.ts +63 -0
  760. package/src/serve/hosted/hosted-file-rpcs.layer.ts +149 -0
  761. package/src/serve/hosted/hosted-file-server.layer.ts +75 -0
  762. package/src/serve/hosted/hosted-files.layer.ts +76 -0
  763. package/src/serve/hosted/hosted-runtime.layer.ts +145 -0
  764. package/src/serve/hosted/hosted-runtime.service.ts +128 -0
  765. package/src/serve/hosted/hosted-secrets.layer.ts +38 -0
  766. package/src/serve/http/loopback-host.pure.ts +67 -0
  767. package/src/serve/inspect/actor-inspection.schema.ts +94 -0
  768. package/src/serve/inspect/actor-inspection.sql.ts +112 -0
  769. package/src/serve/inspect/inspect.service.ts +173 -0
  770. package/src/serve/inspect/inspector-page.pure.ts +159 -0
  771. package/src/serve/inspect/inspector-wal.pure.ts +40 -0
  772. package/src/serve/inspect/inspector.handlers.ts +103 -0
  773. package/src/serve/inspect/inspector.layer.ts +26 -0
  774. package/src/serve/live/live-reads.service.ts +285 -0
  775. package/src/serve/live/live-tables.sql.ts +148 -0
  776. package/src/serve/live/state-reads.pure.ts +22 -0
  777. package/src/serve/rpc/actor-rpc.handlers.ts +242 -0
  778. package/src/serve/rpc/akter-server.layer.ts +119 -0
  779. package/src/serve/rpc/computer/computer-copy.layer.ts +95 -0
  780. package/src/serve/rpc/computer/computer-rpc-access.pure.ts +75 -0
  781. package/src/serve/rpc/computer/computer-rpc.layer.ts +143 -0
  782. package/src/serve/rpc/computer/step-rpc.handlers.ts +84 -0
  783. package/src/serve/rpc/development-authentication.handlers.ts +28 -0
  784. package/src/serve/rpc/development-guard.pure.ts +39 -0
  785. package/src/serve/rpc/file/file-rpc-access.pure.ts +119 -0
  786. package/src/serve/rpc/file/file-rpc.layer.ts +209 -0
  787. package/src/serve/rpc/file/upload-sessions.pure.ts +363 -0
  788. package/src/serve/rpc/in-process-client.layer.ts +62 -0
  789. package/src/serve/rpc/listener-not-loopback.errors.ts +9 -0
  790. package/src/serve/rpc/ndjson-only.pure.ts +33 -0
  791. package/src/serve/rpc/served-rpc.layer.ts +34 -0
  792. package/src/serve/store/actor-not-migrated.errors.ts +10 -0
  793. package/src/serve/store/store-migrations.layer.ts +35 -0
  794. package/src/serve/store/store-migrations.service.ts +76 -0
  795. package/src/serve/store/store-unreadable.errors.ts +9 -0
  796. package/src/serve/verify/verify.layer.ts +77 -0
  797. package/src/testing/story-driver.service.ts +266 -0
  798. package/src/testing/story.layer.ts +99 -0
@@ -0,0 +1,54 @@
1
+ import { Array, Clock, Effect, Option, Ref } from "effect";
2
+ // src/host/blob/reference/blob-transfer-upkeep.pure.ts
3
+ const collectWith = ({ catalog, directory }) => Effect.gen(function* collectUnreferenced() {
4
+ const deleting = yield* catalog.deletions;
5
+ yield* Effect.forEach(deleting, (blob) => Effect.andThen(directory.remove(blob), catalog.finishDelete(blob)), { discard: true });
6
+ return deleting;
7
+ });
8
+ const releaseWith = (home, owner, claim) => Effect.andThen(home.catalog.release(claim), owner.transaction(owner.receipts.acknowledge(claim.claim)));
9
+ const cancelWith = (home, owner, claim) => Effect.gen(function* abandonUpload() {
10
+ yield* owner.transaction(owner.receipts.cancel(claim));
11
+ yield* releaseWith(home, owner, claim);
12
+ });
13
+ const settleWith = (home) => (owner) => owner.exclusive(Effect.gen(function* drainReleases() {
14
+ if (yield* owner.transaction(owner.receipts.erased)) return yield* home.catalog.erase(owner.actor);
15
+ const now = yield* Clock.currentTimeMillis;
16
+ yield* owner.transaction(owner.receipts.expire(now));
17
+ const releases = yield* owner.transaction(owner.receipts.releases(now));
18
+ return yield* Effect.forEach(releases, (claim) => releaseWith(home, owner, claim), { discard: true });
19
+ }));
20
+ const recoverClaim = (home, owner, claim) => Effect.gen(function* reconcileUpload() {
21
+ const stored = yield* owner.transaction(owner.receipts.inspect(claim.claim));
22
+ if (Option.isSome(stored) && (stored.value.state === "prepared" || stored.value.state === "consumed")) return yield* home.catalog.complete(claim);
23
+ if (Option.isSome(stored)) return yield* cancelWith(home, owner, stored.value);
24
+ return yield* releaseWith(home, owner, claim);
25
+ });
26
+ const recoverUploads = Effect.fnUntraced(function* recoverUploads(home, owner) {
27
+ let after = "";
28
+ for (;;) {
29
+ const { active, claims } = yield* Effect.all({
30
+ active: Ref.get(home.uploads),
31
+ claims: home.catalog.pending(owner.actor, after)
32
+ });
33
+ if (!Array.isReadonlyArrayNonEmpty(claims)) return;
34
+ const abandoned = Array.filter(claims, (claim) => !active.has(claim.claim));
35
+ yield* Effect.forEach(abandoned, (claim) => recoverClaim(home, owner, claim), { discard: true });
36
+ after = Array.lastNonEmpty(claims).claim;
37
+ }
38
+ });
39
+ const eraseWith = (home, owner) => owner.exclusive(Effect.andThen(owner.transaction(owner.receipts.erase), home.catalog.erase(owner.actor)));
40
+ const transferUpkeep = (home) => ({
41
+ cancel: (owner, claim) => owner.exclusive(cancelWith(home, owner, claim)),
42
+ collect: collectWith(home),
43
+ erase: (owner) => eraseWith(home, owner),
44
+ recover: (owner) => owner.exclusive(Effect.gen(function* recoverOwner() {
45
+ if (yield* owner.transaction(owner.receipts.erased)) return yield* home.catalog.erase(owner.actor);
46
+ if (yield* owner.transaction(owner.forks.pending)) {
47
+ yield* owner.transaction(owner.receipts.erase);
48
+ return yield* home.catalog.erase(owner.actor);
49
+ }
50
+ return yield* recoverUploads(home, owner);
51
+ })),
52
+ settle: settleWith(home)
53
+ });
54
+ export { transferUpkeep };
@@ -0,0 +1,85 @@
1
+ import { BlobRange, Opening, SealedBlob } from "../blob-sealing.contract.mjs";
2
+ import { BlobTransferError } from "../../../contract/file/blob-transfer.errors.mjs";
3
+ import { BlobDirectory } from "../stream/blob-directory.pure.mjs";
4
+ import { BlobCatalog, BlobClaim } from "./blob-catalog.sql.mjs";
5
+ import { BlobForks } from "./blob-forks.sql.mjs";
6
+ import { BlobReceipts } from "./blob-receipts.sql.mjs";
7
+ import { Effect, Stream } from "effect";
8
+ import { SqlError } from "effect/sql";
9
+ type TransferEffect<Value, Needs = never> = Effect.Effect<Value, BlobTransferError | SqlError.SqlError, Needs>;
10
+ type Serialized = <Success, Failure, Needs>(effect: Effect.Effect<Success, Failure, Needs>) => Effect.Effect<Success, Failure, Needs>;
11
+ type FileOperation = <Success, Failure, Needs>(effect: Effect.Effect<Success, Failure, Needs>, protect?: Serialized) => Effect.Effect<Success, Failure | BlobTransferError, Needs>;
12
+ type DurableTransaction = <Success, Failure, Needs>(effect: Effect.Effect<Success, Failure, Needs>) => Effect.Effect<Success, Failure | SqlError.SqlError, Needs>;
13
+ interface BlobOwner {
14
+ readonly actor: string;
15
+ readonly exclusive: Serialized;
16
+ readonly forks: BlobForks;
17
+ readonly receipts: BlobReceipts;
18
+ readonly snapshot: Serialized;
19
+ readonly transaction: DurableTransaction;
20
+ }
21
+ interface TransferHome {
22
+ readonly catalog: BlobCatalog;
23
+ readonly directory: BlobDirectory;
24
+ /** Where the home keeps its blobs, canonical, so two homes are the same home only when their roots are equal. */
25
+ readonly root: string;
26
+ }
27
+ /** The home a fork's target keeps its files in, with its own transfers. */
28
+ interface ForkHome extends TransferHome {
29
+ readonly transfers: BlobTransfers;
30
+ }
31
+ interface Upload<Failure, Services> {
32
+ readonly owner: BlobOwner;
33
+ readonly source: Stream.Stream<Uint8Array, Failure, Services>;
34
+ }
35
+ interface Download {
36
+ readonly owner: BlobOwner;
37
+ readonly path: string;
38
+ readonly range?: BlobRange;
39
+ }
40
+ /**
41
+ * One actor's files forked into another's. The fork runs on the home `source` keeps its files in; `into` is the home
42
+ * `target` keeps its files in. Within one home each file gains a claim for the target and its grant is rewrapped,
43
+ * with no bytes copied. Into another home each blob is adopted there (`adopt`): its sealed bytes are copied unchanged
44
+ * under the same blob id, and the target claims it in that home.
45
+ */
46
+ interface Fork {
47
+ readonly into: ForkHome;
48
+ readonly operation: string;
49
+ readonly source: BlobOwner;
50
+ readonly target: BlobOwner;
51
+ }
52
+ /** A file as the home it comes from records it: its size and SHA-256, and its grant for the origin. */
53
+ type AdoptedFile = Pick<SealedBlob, "bytes" | "grant" | "sha256">;
54
+ /**
55
+ * A blob another home stores, taken into this one: `claim` names the actor that will hold it here, the blob's id
56
+ * unchanged, since sealed frames are bound to it, and the claim to hold it by. `stored` is its bytes in this home's
57
+ * at-rest form, read only when this home lacks the blob.
58
+ */
59
+ interface Adoption<Failure, Services> {
60
+ readonly claim: BlobClaim;
61
+ readonly file: AdoptedFile;
62
+ /** The actor `file.grant` is wrapped for. */
63
+ readonly origin: string;
64
+ readonly stored: Stream.Stream<Uint8Array, Failure, Services>;
65
+ }
66
+ interface BlobTransfers {
67
+ readonly admit: Serialized;
68
+ /** Takes a blob into this home under `adoption.claim` and answers its grant for that actor (`blob-transfer-adopt`). */
69
+ readonly adopt: <Failure, Services>(adoption: Adoption<Failure, Services>) => Effect.Effect<string, BlobTransferError | SqlError.SqlError | Failure, Services>;
70
+ readonly close: Effect.Effect<void>;
71
+ readonly collect: TransferEffect<readonly string[]>;
72
+ readonly download: (download: Download) => Stream.Stream<Uint8Array, BlobTransferError | SqlError.SqlError>;
73
+ readonly erase: (owner: BlobOwner) => TransferEffect<void>;
74
+ readonly fork: (fork: Fork) => TransferEffect<void>;
75
+ /**
76
+ * Runs `effect` while no command, upload or other file operation of this home runs, so the home's blobs and catalog
77
+ * stay as they are; the fiber running it may still take any actor's own lock. A snapshot copies the home under it.
78
+ */
79
+ readonly hold: Serialized;
80
+ readonly open: (opening: Omit<Opening, "filename">) => Stream.Stream<Uint8Array, BlobTransferError | SqlError.SqlError>;
81
+ readonly recover: (owner: BlobOwner) => TransferEffect<void>;
82
+ readonly settle: (owner: BlobOwner) => TransferEffect<void>;
83
+ readonly upload: <Failure, Services>(upload: Upload<Failure, Services>) => Effect.Effect<string, BlobTransferError | SqlError.SqlError | Failure, Services>;
84
+ }
85
+ export type { AdoptedFile, Adoption, BlobOwner, BlobTransfers, Download, DurableTransaction, FileOperation, Fork, ForkHome, Serialized, TransferEffect, TransferHome, Upload };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,10 @@
1
+ import { BlobHashing } from "../hash/blob-hashing.service.mjs";
2
+ import { BlobGrants } from "./blob-grants.service.mjs";
3
+ import { BlobSealingOperations } from "./blob-sealing.contract.mjs";
4
+ import { Effect, FileSystem } from "effect";
5
+ import { Aead, SecureRandom } from "effect/crypto";
6
+ declare const sealedBlobSealing: ({ grants, hashing }: {
7
+ readonly grants: BlobGrants["Service"];
8
+ readonly hashing: BlobHashing["Service"];
9
+ }) => Effect.Effect<BlobSealingOperations, never, FileSystem.FileSystem | Aead.Aead | SecureRandom.SecureRandom>;
10
+ export { sealedBlobSealing };
@@ -0,0 +1,130 @@
1
+ import { framesOf } from "./blob-frames.pure.mjs";
2
+ import { rangeOf } from "./blob-range.pure.mjs";
3
+ import { BlobTransferError } from "../../contract/file/blob-transfer.errors.mjs";
4
+ import { blobWriter } from "./stream/blob-writing.pure.mjs";
5
+ import { exactLength } from "./stream/blob-length.pure.mjs";
6
+ import { Effect, FileSystem, Stream } from "effect";
7
+ import { Aead, SecureRandom } from "effect/crypto";
8
+ // src/host/blob/sealed-blob-sealing.pure.ts
9
+ const zeroBytes = 0;
10
+ const oneFrame = 1;
11
+ const frameBytes = 65536;
12
+ const nonceBytes = 24;
13
+ const overhead = 40;
14
+ const stride = 65576;
15
+ const failed = (blob) => BlobTransferError.make({
16
+ blob,
17
+ message: "the sealed file could not be opened"
18
+ });
19
+ const bindingOf = (blob, index, final) => new globalThis.TextEncoder().encode(`akter/blob-frame/v1/${blob.length}:${blob}/${index}/${final}`);
20
+ const encrypt = Effect.fnUntraced(function* encrypt({ aead, blob, bytes, index, key, random }) {
21
+ const nonce = yield* random.randomBytes(nonceBytes);
22
+ const aad = bindingOf(blob, index, bytes.byteLength < frameBytes);
23
+ const ciphertext = yield* aead.encrypt(key, bytes, {
24
+ aad,
25
+ nonce
26
+ });
27
+ const stored = new Uint8Array(nonceBytes + ciphertext.byteLength);
28
+ stored.set(nonce);
29
+ stored.set(ciphertext, nonceBytes);
30
+ return stored;
31
+ });
32
+ const decrypt = Effect.fnUntraced(function* decrypt({ aead, blob, bytes, index, key }) {
33
+ const nonce = bytes.subarray(zeroBytes, nonceBytes);
34
+ const aad = bindingOf(blob, index, bytes.byteLength < stride);
35
+ return yield* aead.decrypt(key, bytes.subarray(nonceBytes), {
36
+ aad,
37
+ nonce
38
+ });
39
+ });
40
+ const selected = ({ bytes, index, range }) => {
41
+ const start = Math.max(zeroBytes, range.offset - index * frameBytes);
42
+ const end = Math.max(zeroBytes, Math.min(bytes.byteLength, range.offset + range.length - index * frameBytes));
43
+ return bytes.subarray(start, end);
44
+ };
45
+ const plaintextSize = (blob, physical) => {
46
+ const remainder = (physical - overhead) % stride;
47
+ if (physical < overhead || remainder >= frameBytes) return Effect.fail(failed(blob));
48
+ return Effect.succeed(Math.floor((physical - overhead) / stride) * frameBytes + remainder);
49
+ };
50
+ const openingWith = (fileSystem, grants, keys) => (request) => Stream.unwrap(Effect.gen(function* open() {
51
+ const key = yield* grants.open(request);
52
+ const stored = yield* Effect.mapError(fileSystem.stat(request.filename), () => failed(request.blob));
53
+ const bytes = yield* plaintextSize(request.blob, Number(stored.size));
54
+ const range = yield* rangeOf({
55
+ ...request,
56
+ bytes
57
+ });
58
+ const first = Math.floor(range.offset / frameBytes);
59
+ const last = Math.floor((range.offset + range.length) / frameBytes);
60
+ const offset = first * stride;
61
+ const end = Math.min((last + oneFrame) * stride, Number(stored.size));
62
+ const source = exactLength({
63
+ blob: request.blob,
64
+ bytes: end - offset,
65
+ source: fileSystem.stream(request.filename, {
66
+ bytesToRead: end - offset,
67
+ offset
68
+ })
69
+ });
70
+ return framesOf({
71
+ size: stride,
72
+ source
73
+ }).pipe(Stream.filter((frame) => frame.byteLength > zeroBytes), Stream.mapEffect((frame, index) => Effect.map(decrypt({
74
+ ...keys,
75
+ blob: request.blob,
76
+ bytes: frame,
77
+ index: first + index,
78
+ key
79
+ }), (opened) => selected({
80
+ bytes: opened,
81
+ index: first + index,
82
+ range
83
+ }))), Stream.mapError(() => failed(request.blob)));
84
+ }));
85
+ const sealedBlobSealing = ({ grants, hashing }) => Effect.gen(function* makeSealedSealing() {
86
+ const fileSystem = yield* FileSystem.FileSystem;
87
+ const write = yield* blobWriter;
88
+ const aead = yield* Aead.Aead;
89
+ const random = yield* SecureRandom.SecureRandom;
90
+ const seal = Effect.fnUntraced(function* seal(request) {
91
+ const { grant, key } = yield* grants.fresh(request);
92
+ const hash = yield* hashing.sha256;
93
+ let bytes = zeroBytes;
94
+ const frameSource = Effect.fnUntraced(function* frameSource(frame, index) {
95
+ yield* hash.update(frame);
96
+ bytes += frame.byteLength;
97
+ return yield* Effect.mapError(encrypt({
98
+ aead,
99
+ blob: request.blob,
100
+ bytes: frame,
101
+ index,
102
+ key,
103
+ random
104
+ }), () => failed(request.blob));
105
+ });
106
+ const source = framesOf({
107
+ size: frameBytes,
108
+ source: request.source
109
+ }).pipe(Stream.mapEffect(frameSource));
110
+ yield* write({
111
+ ...request,
112
+ source
113
+ });
114
+ const sha256 = yield* hash.digest;
115
+ return {
116
+ bytes,
117
+ grant,
118
+ sha256
119
+ };
120
+ });
121
+ return {
122
+ open: openingWith(fileSystem, grants, {
123
+ aead,
124
+ random
125
+ }),
126
+ rewrap: grants.rewrap,
127
+ seal
128
+ };
129
+ });
130
+ export { sealedBlobSealing };
@@ -0,0 +1,18 @@
1
+ import { Opening, SealedBlob, Sealing } from "../blob-sealing.contract.mjs";
2
+ import { BlobSealing } from "../blob-sealing.service.mjs";
3
+ import { BlobTransferError } from "../../../contract/file/blob-transfer.errors.mjs";
4
+ import { Effect, FileSystem, Path, Stream } from "effect";
5
+ interface BlobDirectory {
6
+ readonly open: (opening: Omit<Opening, "filename">) => Stream.Stream<Uint8Array, BlobTransferError>;
7
+ /** Writes `source` as the blob's stored bytes, unchanged, replacing a partial file an interrupted write left. */
8
+ readonly place: <Failure, Services>(placing: Pick<Sealing<Failure, Services>, "blob" | "source">) => Effect.Effect<void, BlobTransferError | Failure, Services>;
9
+ readonly publish: <Failure, Services>(sealing: Omit<Sealing<Failure, Services>, "filename">) => Effect.Effect<SealedBlob, BlobTransferError | Failure, Services>;
10
+ readonly remove: (blob: string) => Effect.Effect<void, BlobTransferError>;
11
+ /** The blob's bytes as this home stores them, sealed or not, for another home to place unchanged. */
12
+ readonly stored: (blob: string) => Stream.Stream<Uint8Array, BlobTransferError>;
13
+ }
14
+ declare const blobDirectory: ({ store, sealing }: {
15
+ readonly store: string;
16
+ readonly sealing: BlobSealing["Service"];
17
+ }) => Effect.Effect<BlobDirectory, BlobTransferError, FileSystem.FileSystem | Path.Path>;
18
+ export { type BlobDirectory, blobDirectory };
@@ -0,0 +1,84 @@
1
+ import { BlobTransferError } from "../../../contract/file/blob-transfer.errors.mjs";
2
+ import { blobWriter } from "./blob-writing.pure.mjs";
3
+ import { Effect, Exit, FileSystem, Path, Schema, Stream } from "effect";
4
+ // src/host/blob/stream/blob-directory.pure.ts
5
+ const failed = (blob, message) => BlobTransferError.make({
6
+ blob,
7
+ message
8
+ });
9
+ const blobId = Schema.String.check(Schema.isUUID());
10
+ const syncDirectory = (directory) => directory.fileSystem.open(directory.root, { flag: "r" }).pipe(Effect.flatMap((opened) => opened.sync), Effect.scoped, Effect.mapError(() => failed("", "the blob directory could not be synced")));
11
+ const filenameOf = (directory, blob) => Schema.decodeEffect(blobId)(blob).pipe(Effect.mapBoth({
12
+ onFailure: () => failed(blob, "a blob id must be an opaque UUID"),
13
+ onSuccess: (valid) => directory.path.join(directory.root, valid)
14
+ }));
15
+ const openingFilename = (directory, blob) => Effect.gen(function* resolveBlob() {
16
+ const filename = yield* filenameOf(directory, blob);
17
+ if ((yield* Effect.mapError(directory.fileSystem.realPath(filename), () => failed(blob, "the blob could not be resolved"))) !== filename) return yield* failed(blob, "the blob must not redirect outside its location");
18
+ return filename;
19
+ });
20
+ const prepareDirectory = Effect.fnUntraced(function* prepareDirectory(directory) {
21
+ yield* Effect.mapError(directory.fileSystem.makeDirectory(directory.root, { recursive: true }), () => failed("", "the blob directory could not be created"));
22
+ if ((yield* Effect.mapError(directory.fileSystem.realPath(directory.root), () => failed("", "the blob directory could not be resolved"))) !== directory.root) return yield* failed("", "the blob directory must not redirect outside the store");
23
+ yield* syncDirectory({
24
+ ...directory,
25
+ root: directory.path.dirname(directory.root)
26
+ });
27
+ return yield* syncDirectory(directory);
28
+ });
29
+ const removeBlob = (directory, blob) => Effect.gen(function* removeBlobFile() {
30
+ const filename = yield* filenameOf(directory, blob);
31
+ yield* Effect.mapError(directory.fileSystem.remove(filename, { force: true }), () => failed(blob, "the blob could not be removed"));
32
+ yield* syncDirectory(directory);
33
+ });
34
+ /** Syncs the directory after a blob's file was written, removing the file when the sync fails. */
35
+ const syncedOrRemoved = (directory, blob) => syncDirectory(directory).pipe(Effect.onExit((exit) => {
36
+ if (Exit.isSuccess(exit)) return Effect.void;
37
+ return removeBlob(directory, blob);
38
+ }));
39
+ const publishWith = (directory, sealing) => Effect.fnUntraced(function* publish(request) {
40
+ const filename = yield* filenameOf(directory, request.blob);
41
+ const sealed = yield* sealing.seal({
42
+ ...request,
43
+ filename
44
+ });
45
+ yield* syncedOrRemoved(directory, request.blob);
46
+ return sealed;
47
+ });
48
+ const placeWith = (directory, write) => Effect.fnUntraced(function* place({ blob, source }) {
49
+ const filename = yield* filenameOf(directory, blob);
50
+ yield* Effect.mapError(directory.fileSystem.remove(filename, { force: true }), () => failed(blob, "the leftover blob could not be removed"));
51
+ yield* write({
52
+ blob,
53
+ filename,
54
+ source
55
+ });
56
+ return yield* syncedOrRemoved(directory, blob);
57
+ });
58
+ const storedWith = (directory) => (blob) => {
59
+ const read = (filename) => Stream.mapError(directory.fileSystem.stream(filename), () => failed(blob, "the stored blob could not be read"));
60
+ return Stream.unwrap(Effect.map(openingFilename(directory, blob), read));
61
+ };
62
+ const blobDirectory = ({ store, sealing }) => Effect.gen(function* openBlobDirectory() {
63
+ const fileSystem = yield* FileSystem.FileSystem;
64
+ const path = yield* Path.Path;
65
+ const parent = yield* Effect.mapError(fileSystem.realPath(store), () => failed("", "the store could not be resolved"));
66
+ const directory = {
67
+ fileSystem,
68
+ path,
69
+ root: path.join(parent, "blobs")
70
+ };
71
+ const write = yield* blobWriter;
72
+ yield* prepareDirectory(directory);
73
+ return {
74
+ open: (opening) => Stream.unwrap(Effect.map(openingFilename(directory, opening.blob), (filename) => sealing.open({
75
+ ...opening,
76
+ filename
77
+ }))),
78
+ place: placeWith(directory, write),
79
+ publish: publishWith(directory, sealing),
80
+ remove: (blob) => removeBlob(directory, blob),
81
+ stored: storedWith(directory)
82
+ };
83
+ });
84
+ export { blobDirectory };
@@ -0,0 +1,9 @@
1
+ import { BlobTransferError } from "../../../contract/file/blob-transfer.errors.mjs";
2
+ import { Stream } from "effect";
3
+ interface Reading<Failure, Services> {
4
+ readonly blob: string;
5
+ readonly bytes: number;
6
+ readonly source: Stream.Stream<Uint8Array, Failure, Services>;
7
+ }
8
+ declare const exactLength: <Failure, Services>({ blob, bytes, source }: Reading<Failure, Services>) => Stream.Stream<Uint8Array, Failure | BlobTransferError, Services>;
9
+ export { exactLength };
@@ -0,0 +1,19 @@
1
+ import { BlobTransferError } from "../../../contract/file/blob-transfer.errors.mjs";
2
+ import { Effect, Stream } from "effect";
3
+ // src/host/blob/stream/blob-length.pure.ts
4
+ const zeroBytes = 0;
5
+ const exactLength = ({ blob, bytes, source }) => Stream.suspend(() => {
6
+ let read = zeroBytes;
7
+ const counted = Stream.tap(source, (chunk) => Effect.sync(() => {
8
+ read += chunk.byteLength;
9
+ }));
10
+ const finished = Effect.suspend(() => {
11
+ if (read !== bytes) return Effect.fail(BlobTransferError.make({
12
+ blob,
13
+ message: "the file ended before the requested bytes were read"
14
+ }));
15
+ return Effect.void;
16
+ });
17
+ return Stream.concat(counted, Stream.drain(Stream.fromEffect(finished)));
18
+ });
19
+ export { exactLength };
@@ -0,0 +1,8 @@
1
+ import { Sealing } from "../blob-sealing.contract.mjs";
2
+ import { BlobTransferError } from "../../../contract/file/blob-transfer.errors.mjs";
3
+ import { Effect, FileSystem } from "effect";
4
+ /** What a blob write needs: the bytes and where they go. Placing bytes as they are needs no actor. */
5
+ type BlobWrite<Failure, Services> = Pick<Sealing<Failure, Services>, "blob" | "filename" | "source">;
6
+ type WriteBlob = <Failure, Services>(sealing: BlobWrite<Failure, Services>) => Effect.Effect<void, BlobTransferError | Failure, Services>;
7
+ declare const blobWriter: Effect.Effect<WriteBlob, never, FileSystem.FileSystem>;
8
+ export { type WriteBlob, blobWriter };
@@ -0,0 +1,15 @@
1
+ import { BlobTransferError } from "../../../contract/file/blob-transfer.errors.mjs";
2
+ import { Effect, Exit, FileSystem, Stream } from "effect";
3
+ // src/host/blob/stream/blob-writing.pure.ts
4
+ const failed = (blob, message) => BlobTransferError.make({
5
+ blob,
6
+ message
7
+ });
8
+ const blobWriter = Effect.map(FileSystem.FileSystem, (fileSystem) => Effect.fnUntraced(function* writeBlob({ blob, filename, source }) {
9
+ const file = yield* Effect.mapError(fileSystem.open(filename, { flag: "wx" }), () => failed(blob, "the upload destination could not be opened"));
10
+ yield* Stream.runForEach(source, (bytes) => Effect.mapError(file.writeAll(bytes), () => failed(blob, "the upload could not be written"))).pipe(Effect.andThen(Effect.mapError(file.sync, () => failed(blob, "the upload could not be synced"))), Effect.onExit((exit) => {
11
+ if (Exit.isSuccess(exit)) return Effect.void;
12
+ return Effect.mapError(fileSystem.remove(filename, { force: true }), () => failed(blob, "the incomplete upload could not be removed"));
13
+ }));
14
+ }, Effect.scoped));
15
+ export { blobWriter };
@@ -0,0 +1,61 @@
1
+ import { RecordedCommand } from "../command-journal.sql.mjs";
2
+ import { Context, Effect, HashMap, HashSet, Option, Ref } from "effect";
3
+ import { SqlClient, SqlError } from "effect/sql";
4
+ /**
5
+ * The journal of one engine batch, kept in memory so a command's bookkeeping needs no round trip of its own.
6
+ *
7
+ * An engine that runs many commands in one transaction (akter-cloud) provides `CommandBatch` around each of them.
8
+ * The first command reads the actor's state, the batch's recorded command ids and the last seq once; later ones read
9
+ * them from here. Their state and journal writes go to `held`, a client whose statements the engine sends ahead of the
10
+ * next statement that reaches SQLite, or with the commit, so a handler's own SQL still sees every earlier write. Only
11
+ * the engine writes `akter_*` tables (handler writes to them are refused), which is what makes the cache sound.
12
+ */
13
+ interface Journal {
14
+ /** Command ids whose journal rows were read at the start of the batch, recorded or not. */
15
+ readonly known: HashSet.HashSet<string>;
16
+ readonly nextSeq: number;
17
+ readonly recorded: HashMap.HashMap<string, RecordedCommand>;
18
+ /** The seq each command recorded in this batch was given. */
19
+ readonly seqs: HashMap.HashMap<string, number>;
20
+ readonly state: Option.Option<string>;
21
+ }
22
+ interface Batch {
23
+ readonly commandIds: readonly string[];
24
+ /** The journal including the running command. */
25
+ readonly current: Ref.Ref<Option.Option<Journal>>;
26
+ readonly held: SqlClient.SqlClient;
27
+ /** The journal as of the last command the engine kept. */
28
+ readonly kept: Ref.Ref<Option.Option<Journal>>;
29
+ }
30
+ declare const CommandBatch: Context.Reference<Option.Option<Batch>>;
31
+ declare const CommandBatchJournal: {
32
+ /** Forgets the journal, so the next command reads it again; after journal pruning, for one. */
33
+ readonly forget: Effect.Effect<void, never, never>;
34
+ /** Notes a journal row and returns the seq it is written with, or none outside a batch. */
35
+ readonly record: (commandId: string, recorded: RecordedCommand) => Effect.Effect<Option.Option<number>>;
36
+ /** The recorded outcome of `commandId`, from the batch journal when it answers for the id. */
37
+ readonly recorded: (sql: SqlClient.SqlClient, commandId: string, read: Effect.Effect<Option.Option<RecordedCommand>, SqlError.SqlError>) => Effect.Effect<Option.Option<RecordedCommand>, SqlError.SqlError>;
38
+ /** Notes a state the running command saved. */
39
+ readonly saved: (value: string) => Effect.Effect<void>;
40
+ /** The seq a command recorded in this batch was given, or none when the batch did not record it. */
41
+ readonly seq: (commandId: string) => Effect.Effect<Option.Option<number>>;
42
+ /** The actor's current state, from the batch journal when there is one. */
43
+ readonly state: (sql: SqlClient.SqlClient, read: Effect.Effect<Option.Option<string>, SqlError.SqlError>) => Effect.Effect<Option.Option<string>, SqlError.SqlError>;
44
+ /** The client for the running command's journal and state writes: the batch's held client, or `sql` itself. */
45
+ readonly writer: (sql: SqlClient.SqlClient) => Effect.Effect<SqlClient.SqlClient>;
46
+ };
47
+ /** Opens the in-memory journal of one engine batch over `held`, the client whose writes the engine holds. */
48
+ declare const commandBatch: (args_0: {
49
+ readonly commandIds: readonly string[];
50
+ readonly held: SqlClient.SqlClient;
51
+ }) => Effect.Effect<{
52
+ commandIds: readonly string[];
53
+ current: Ref.Ref<Option.Option<Journal>>;
54
+ held: SqlClient.SqlClient;
55
+ kept: Ref.Ref<Option.Option<Journal>>;
56
+ }, never, never>;
57
+ /** The engine kept the running command: its journal changes stand. */
58
+ declare const keepCommand: (batch: Batch) => Effect.Effect<void>;
59
+ /** The engine rolled the running command back: its journal changes go with it. */
60
+ declare const dropCommand: (batch: Batch) => Effect.Effect<void>;
61
+ export { CommandBatch, CommandBatchJournal, type Batch as CommandBatchScope, commandBatch, dropCommand, keepCommand };
@@ -0,0 +1,100 @@
1
+ import { Array, Context, Effect, HashMap, HashSet, Option, Ref, Schema } from "effect";
2
+ // src/host/command/batch/command-batch.sql.ts
3
+ const CommandBatch = Context.Reference("@akterjs/effect/host/command/batch/command-batch.sql/CommandBatch", { defaultValue: Option.none });
4
+ const firstSeq = 1;
5
+ const nextOf = 1;
6
+ const IdList = Schema.fromJsonString(Schema.Array(Schema.String));
7
+ const journalRows = (sql, ids) => sql`SELECT command_id AS "commandId", command, exit, principal FROM akter_commands WHERE command_id IN (SELECT value FROM json_each(${ids}))`;
8
+ const readJournal = Effect.fnUntraced(function* readJournal(sql, commandIds) {
9
+ const ids = yield* Effect.orDie(Schema.encodeEffect(IdList)(commandIds));
10
+ const [states, rows, last] = yield* Effect.all([
11
+ sql`SELECT value FROM akter_state WHERE id = 1`,
12
+ journalRows(sql, ids),
13
+ sql`SELECT coalesce(max(seq), 0) AS seq FROM akter_commands`
14
+ ]);
15
+ return {
16
+ known: HashSet.fromIterable(commandIds),
17
+ nextSeq: Option.match(Array.head(last), {
18
+ onNone: () => firstSeq,
19
+ onSome: (row) => row.seq + nextOf
20
+ }),
21
+ recorded: HashMap.fromIterable(Array.map(rows, ({ commandId, ...recorded }) => [commandId, recorded])),
22
+ seqs: HashMap.empty(),
23
+ state: Option.map(Array.head(states), (row) => row.value)
24
+ };
25
+ });
26
+ /** The batch's journal, read on first use with the engine's real client. */
27
+ const journalOf = (sql) => Effect.flatMap(CommandBatch, (batch) => Option.match(batch, {
28
+ onNone: () => Effect.succeedNone,
29
+ onSome: (open) => Effect.flatMap(Ref.get(open.current), (current) => Option.match(current, {
30
+ onNone: () => Effect.tap(readJournal(sql, open.commandIds), (read) => Effect.andThen(Ref.set(open.current, Option.some(read)), Ref.set(open.kept, Option.some(read)))).pipe(Effect.map((read) => Option.some([open, read]))),
31
+ onSome: (journal) => Effect.succeedSome([open, journal])
32
+ }))
33
+ }));
34
+ const update = (change) => Effect.flatMap(CommandBatch, (batch) => Option.match(batch, {
35
+ onNone: () => Effect.void,
36
+ onSome: (open) => Ref.update(open.current, Option.map(change))
37
+ }));
38
+ /** Whether a batch journal answers for this command id: it was read at the start or recorded since. */
39
+ const answers = (journal, commandId) => HashSet.has(journal.known, commandId) || HashMap.has(journal.recorded, commandId);
40
+ const CommandBatchJournal = {
41
+ /** Forgets the journal, so the next command reads it again; after journal pruning, for one. */
42
+ forget: Effect.flatMap(CommandBatch, (batch) => Option.match(batch, {
43
+ onNone: () => Effect.void,
44
+ onSome: (open) => Effect.andThen(Ref.set(open.current, Option.none()), Ref.set(open.kept, Option.none()))
45
+ })),
46
+ /** Notes a journal row and returns the seq it is written with, or none outside a batch. */
47
+ record: (commandId, recorded) => Effect.flatMap(CommandBatch, (batch) => Option.match(batch, {
48
+ onNone: () => Effect.succeedNone,
49
+ onSome: (open) => Ref.modify(open.current, (current) => Option.match(current, {
50
+ onNone: () => [Option.none(), current],
51
+ onSome: (journal) => [Option.some(journal.nextSeq), Option.some({
52
+ ...journal,
53
+ nextSeq: journal.nextSeq + nextOf,
54
+ recorded: HashMap.set(journal.recorded, commandId, recorded),
55
+ seqs: HashMap.set(journal.seqs, commandId, journal.nextSeq)
56
+ })]
57
+ }))
58
+ })),
59
+ /** The recorded outcome of `commandId`, from the batch journal when it answers for the id. */
60
+ recorded: (sql, commandId, read) => Effect.flatMap(journalOf(sql), (opened) => Option.match(Option.filter(opened, ([, journal]) => answers(journal, commandId)), {
61
+ onNone: () => read,
62
+ onSome: ([, journal]) => Effect.succeed(HashMap.get(journal.recorded, commandId))
63
+ })),
64
+ /** Notes a state the running command saved. */
65
+ saved: (value) => update((journal) => ({
66
+ ...journal,
67
+ state: Option.some(value)
68
+ })),
69
+ /** The seq a command recorded in this batch was given, or none when the batch did not record it. */
70
+ seq: (commandId) => Effect.flatMap(CommandBatch, (batch) => Option.match(batch, {
71
+ onNone: () => Effect.succeedNone,
72
+ onSome: (open) => Effect.map(Ref.get(open.current), Option.flatMap((journal) => HashMap.get(journal.seqs, commandId)))
73
+ })),
74
+ /** The actor's current state, from the batch journal when there is one. */
75
+ state: (sql, read) => Effect.flatMap(journalOf(sql), Option.match({
76
+ onNone: () => read,
77
+ onSome: ([, journal]) => Effect.succeed(journal.state)
78
+ })),
79
+ /** The client for the running command's journal and state writes: the batch's held client, or `sql` itself. */
80
+ writer: (sql) => Effect.map(CommandBatch, Option.match({
81
+ onNone: () => sql,
82
+ onSome: (open) => open.held
83
+ }))
84
+ };
85
+ const noJournal = () => Ref.make(Option.none());
86
+ /** Opens the in-memory journal of one engine batch over `held`, the client whose writes the engine holds. */
87
+ const commandBatch = Effect.fnUntraced(function* commandBatch({ commandIds, held }) {
88
+ const [current, kept] = yield* Effect.all([noJournal(), noJournal()]);
89
+ return {
90
+ commandIds,
91
+ current,
92
+ held,
93
+ kept
94
+ };
95
+ });
96
+ /** The engine kept the running command: its journal changes stand. */
97
+ const keepCommand = (batch) => Effect.flatMap(Ref.get(batch.current), (current) => Ref.set(batch.kept, current));
98
+ /** The engine rolled the running command back: its journal changes go with it. */
99
+ const dropCommand = (batch) => Effect.flatMap(Ref.get(batch.kept), (kept) => Ref.set(batch.current, kept));
100
+ export { CommandBatch, CommandBatchJournal, commandBatch, dropCommand, keepCommand };
@@ -0,0 +1,47 @@
1
+ import { CommandEnvironment } from "../../contract/actor/actor.contract.mjs";
2
+ import { FileStorage } from "../../contract/file/actor-files.contract.mjs";
3
+ import { Context, Effect, Layer, Ref, Schema } from "effect";
4
+ import { SecureRandom } from "effect/crypto";
5
+ import { SqlClient } from "effect/sql";
6
+ interface Tracking {
7
+ readonly files: FileStorage;
8
+ readonly key: string;
9
+ readonly sql: SqlClient.SqlClient;
10
+ }
11
+ interface TrackedContext {
12
+ readonly environment: CommandEnvironment;
13
+ readonly recorded: Effect.Effect<typeof RecordedContext.Encoded>;
14
+ }
15
+ declare const RecordedContext: Schema.Struct<{
16
+ readonly files: Schema.fromJsonString<Schema.toCodecJson<Schema.$Array<Schema.Struct<{
17
+ readonly receipt: Schema.String;
18
+ readonly row: Schema.Option<Schema.Struct<{
19
+ readonly actor: Schema.String;
20
+ readonly blob: Schema.String;
21
+ readonly bytes: Schema.Int;
22
+ readonly claim: Schema.String;
23
+ readonly expiresAt: Schema.Int;
24
+ readonly grant: Schema.String;
25
+ readonly receipt: Schema.String;
26
+ readonly sha256: Schema.String;
27
+ readonly state: Schema.Literals<readonly ["uploading", "prepared", "consumed", "canceled"]>;
28
+ }>>;
29
+ }>>>>;
30
+ readonly ids: Schema.fromJsonString<Schema.$Array<Schema.String>>;
31
+ readonly times: Schema.fromJsonString<Schema.$Array<Schema.Int>>;
32
+ }>;
33
+ type RecordedValues = typeof RecordedContext.Encoded;
34
+ declare const CommandContext_base: Context.ServiceClass<CommandContext, "@akterjs/effect/host/command/command-context.adapter/CommandContext", {
35
+ readonly track: (tracking: Tracking) => Effect.Effect<TrackedContext>;
36
+ }> & {
37
+ readonly make: Effect.Effect<{
38
+ readonly track: (tracking: Tracking) => Effect.Effect<TrackedContext>;
39
+ }, never, SecureRandom.SecureRandom>;
40
+ };
41
+ export declare class CommandContext extends CommandContext_base {
42
+ static readonly layer: Layer.Layer<CommandContext, never, never>;
43
+ /** Whether a failed statement's message reaches the caller or only the host's log. */
44
+ static readonly statementDetail: Context.Reference<"logged" | "shown">;
45
+ static replaying(random: SecureRandom.SecureRandom["Service"], script: Ref.Ref<RecordedValues>): CommandContext["Service"];
46
+ }
47
+ export type { RecordedValues };