@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.
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,334 @@
1
+ import {
2
+ Array as Arr,
3
+ Context,
4
+ Duration,
5
+ Effect,
6
+ Option,
7
+ Record as Rec,
8
+ Schema,
9
+ SchemaTransformation,
10
+ Struct,
11
+ pipe,
12
+ } from "effect";
13
+ import type { Exit } from "effect";
14
+ import { Workflow } from "effect/workflow";
15
+
16
+ import { carrying, patchedOf, patchesKey, withPatches } from "#src/contract/job/job-patches.contract";
17
+ import { ReservedPayloadFieldError } from "#src/contract/job/reserved-payload-field.errors";
18
+
19
+ type PlainSchema = Schema.Top & {
20
+ readonly DecodingServices: never;
21
+ readonly EncodingServices: never;
22
+ };
23
+
24
+ type PlainFields = Readonly<Record<PropertyKey, PlainSchema>>;
25
+
26
+ type Declared = PlainFields | PlainSchema;
27
+
28
+ type DeclaredSchema<Input extends Declared> = Input extends PlainFields ? Schema.Struct<Input> : Input;
29
+
30
+ interface Command<
31
+ Payload extends PlainSchema,
32
+ Success extends PlainSchema,
33
+ Failure extends PlainSchema,
34
+ Kinds extends string = string,
35
+ > {
36
+ readonly callers: Option.Option<readonly Kinds[]>;
37
+ readonly error: Failure;
38
+ readonly payload: Payload;
39
+ readonly success: Success;
40
+ }
41
+
42
+ interface Query<
43
+ Payload extends PlainSchema,
44
+ Success extends PlainSchema,
45
+ Failure extends PlainSchema,
46
+ Kinds extends string = string,
47
+ > extends Command<Payload, Success, Failure, Kinds> {
48
+ /** How old an answer may be when no `atLeast` asks for newer; none means every answer is fresh. */
49
+ readonly staleFor: Option.Option<Duration.Duration>;
50
+ }
51
+
52
+ type AnyCommand = Command<PlainSchema, PlainSchema, PlainSchema>;
53
+
54
+ type AnyQuery = Query<PlainSchema, PlainSchema, PlainSchema>;
55
+
56
+ interface DeclarationOptions {
57
+ readonly callers?: readonly string[];
58
+ readonly error?: PlainSchema;
59
+ readonly payload?: Declared;
60
+ readonly success?: PlainSchema;
61
+ }
62
+
63
+ interface QueryOptions extends DeclarationOptions {
64
+ /**
65
+ * How old an answer to this query may be. A read is at most `staleFor` old, and never older than the version the
66
+ * caller's `atLeast` names, so a caller reads its own writes. An engine may always answer fresher. Without it, every
67
+ * answer is fresh.
68
+ */
69
+ readonly staleFor?: Duration.Input;
70
+ }
71
+
72
+ type PayloadOf<Options extends DeclarationOptions> = Options extends { readonly payload: infer Input extends Declared }
73
+ ? DeclaredSchema<Input>
74
+ : Schema.Void;
75
+
76
+ type SuccessOf<Options extends DeclarationOptions> = Options extends {
77
+ readonly success: infer Success extends PlainSchema;
78
+ }
79
+ ? Success
80
+ : Schema.Void;
81
+
82
+ type ErrorOf<Options extends DeclarationOptions> = Options extends { readonly error: infer Failure extends PlainSchema }
83
+ ? Failure
84
+ : Schema.Never;
85
+
86
+ type KindsOf<Options extends DeclarationOptions> = Options extends {
87
+ readonly callers: readonly (infer Kinds extends string)[];
88
+ }
89
+ ? Kinds
90
+ : never;
91
+
92
+ function declaredSchema<Input extends Declared>(input: Input): DeclaredSchema<Input>;
93
+ function declaredSchema(input: Declared): PlainSchema {
94
+ if (Schema.isSchema(input)) {
95
+ return input;
96
+ }
97
+
98
+ return Schema.Struct(input);
99
+ }
100
+
101
+ const payloadSchema = (options: DeclarationOptions): PlainSchema =>
102
+ pipe(
103
+ Option.fromNullishOr(options.payload),
104
+ Option.match({ onNone: (): PlainSchema => Schema.Void, onSome: (input): PlainSchema => declaredSchema(input) }),
105
+ );
106
+
107
+ function command<const Options extends DeclarationOptions>(
108
+ options?: Options,
109
+ ): Command<PayloadOf<Options>, SuccessOf<Options>, ErrorOf<Options>, KindsOf<Options>>;
110
+ function command(options: DeclarationOptions = {}): AnyCommand {
111
+ return {
112
+ callers: Option.fromNullishOr(options.callers),
113
+ error: options.error ?? Schema.Never,
114
+ payload: payloadSchema(options),
115
+ success: options.success ?? Schema.Void,
116
+ };
117
+ }
118
+
119
+ function query<const Options extends QueryOptions>(
120
+ options?: Options,
121
+ ): Query<PayloadOf<Options>, SuccessOf<Options>, ErrorOf<Options>, KindsOf<Options>>;
122
+ function query(options: QueryOptions = {}): AnyQuery {
123
+ return {
124
+ ...command(options),
125
+ staleFor: Option.map(Option.fromNullishOr(options.staleFor), Duration.fromInputUnsafe),
126
+ };
127
+ }
128
+
129
+ interface JobOptions {
130
+ readonly error?: PlainSchema;
131
+ readonly payload: PlainFields;
132
+ /**
133
+ * Named changes to the job's code. A job started while its contract declares a patch sees it with `Akter.patched`
134
+ * for its whole run; a job started before the patch existed doesn't, even after a deploy adds it.
135
+ */
136
+ readonly patches?: readonly string[];
137
+ readonly success?: PlainSchema;
138
+ }
139
+
140
+ interface Job<
141
+ Fields extends PlainFields,
142
+ Success extends PlainSchema,
143
+ Failure extends PlainSchema,
144
+ Patch extends string = never,
145
+ > {
146
+ readonly error: Failure;
147
+ readonly patches: readonly Patch[];
148
+ readonly payload: Fields;
149
+ readonly success: Success;
150
+ }
151
+
152
+ /**
153
+ * How the host reads and writes a job's payload and result. The host reads only the decoders and `encodeResult`
154
+ * (host interface item 2); `startedPayload` is the bundle's own, which `Akter.start` encodes with.
155
+ */
156
+ interface JobCodecs {
157
+ readonly decodePayload: (text: string) => Effect.Effect<unknown, Schema.SchemaError>;
158
+ readonly decodeResult: (text: string) => Effect.Effect<Exit.Exit<unknown, unknown>, Schema.SchemaError>;
159
+ readonly encodeResult: (exit: Exit.Exit<unknown, unknown>) => Effect.Effect<string, Schema.SchemaError>;
160
+ /** The declared payload, encoded as the journal keeps it: with the patches the job declares, when it declares any. */
161
+ readonly startedPayload?: Schema.Codec<unknown, string>;
162
+ }
163
+
164
+ type AnyJob = Job<PlainFields, PlainSchema, PlainSchema, string>;
165
+
166
+ type PatchesOf<Options extends JobOptions> = Options extends {
167
+ readonly patches: readonly (infer Patch extends string)[];
168
+ }
169
+ ? Patch
170
+ : never;
171
+
172
+ type Jobs = Readonly<Record<string, AnyJob>>;
173
+
174
+ type NoJobs = Readonly<Record<string, never>>;
175
+
176
+ type JobWorkflow<Tag extends string, Declaring extends AnyJob> = Workflow.Workflow<
177
+ Tag,
178
+ Schema.Struct<Declaring["payload"]>,
179
+ Declaring["success"],
180
+ Declaring["error"]
181
+ > & {
182
+ /** The patches the job's contract declares now. */
183
+ readonly patches: Declaring["patches"];
184
+ /**
185
+ * Inside the job's run: whether the code that started this run declared `name`. Gate a change to the job's code
186
+ * with it while jobs started before the change are still in flight.
187
+ */
188
+ readonly patched: (name: Declaring["patches"][number]) => Effect.Effect<boolean>;
189
+ };
190
+
191
+ type ActorJobs<Name extends string, Declaring extends Jobs> = {
192
+ readonly [Member in keyof Declaring & string]: JobWorkflow<`${Name}/${Member}`, Declaring[Member]>;
193
+ };
194
+
195
+ interface StartableJob {
196
+ readonly _tag: string;
197
+ readonly annotations: Context.Context<never>;
198
+ readonly payloadSchema: PlainSchema;
199
+ }
200
+
201
+ interface Tagging {
202
+ readonly actor: string;
203
+ readonly member: string;
204
+ }
205
+
206
+ interface DeclaredJobs<Name extends string, Declaring extends Jobs> {
207
+ readonly jobs: Declaring;
208
+ readonly name: Name;
209
+ }
210
+
211
+ const JobCodecsOf = Context.Reference<Option.Option<JobCodecs>>(
212
+ "@akterjs/effect/contract/command/command.contract/JobCodecsOf",
213
+ { defaultValue: Option.none },
214
+ );
215
+
216
+ function job<const Options extends JobOptions>(
217
+ options: Options,
218
+ ): Job<Options["payload"], SuccessOf<Options>, ErrorOf<Options>, PatchesOf<Options>>;
219
+ function job(options: JobOptions): AnyJob {
220
+ return {
221
+ error: options.error ?? Schema.Never,
222
+ patches: options.patches ?? [],
223
+ payload: options.payload,
224
+ success: options.success ?? Schema.Void,
225
+ };
226
+ }
227
+
228
+ const jobTag = ({ actor, member }: Tagging): string => `${actor}/${member}`;
229
+
230
+ const jobResult = ({
231
+ error,
232
+ success,
233
+ }: Pick<AnyJob, "error" | "success">): Schema.Exit<PlainSchema, PlainSchema, Schema.Defect> =>
234
+ Schema.Exit(success, error, Schema.Defect());
235
+
236
+ /**
237
+ * A job's payload as its journal keeps it: the declared fields, plus the patches the starting code declared under
238
+ * `patchesKey` when it declared any. Code that predates patches ignores the extra key, so a rollback still reads it.
239
+ */
240
+ const jobCodecs = (declared: AnyJob): JobCodecs => {
241
+ const fields = Schema.Struct(declared.payload);
242
+ const stored = Schema.Struct({ ...declared.payload, [patchesKey]: Schema.optionalKey(Schema.Array(Schema.String)) });
243
+ const result = Schema.fromJsonString(Schema.toCodecJson(jobResult(declared)));
244
+ const decodeStored = Schema.decodeEffect(Schema.fromJsonString(Schema.toCodecJson(stored)));
245
+
246
+ const withDeclaredPatches = (payload: typeof fields.Encoded): typeof stored.Encoded => {
247
+ if (Arr.isReadonlyArrayEmpty(declared.patches)) {
248
+ return payload;
249
+ }
250
+
251
+ return { ...payload, [patchesKey]: declared.patches };
252
+ };
253
+
254
+ // Between the encoded forms: the declared fields encode as they always have, and the patches ride beside them.
255
+ const started = Schema.toEncoded(stored).pipe(
256
+ Schema.decodeTo(
257
+ fields,
258
+ SchemaTransformation.transform({
259
+ decode: (payload) => Struct.omit(payload, [patchesKey]),
260
+ encode: withDeclaredPatches,
261
+ }),
262
+ ),
263
+ );
264
+
265
+ return {
266
+ decodePayload: (text) =>
267
+ Effect.map(decodeStored(text), (payload) =>
268
+ carrying({ fields: Struct.omit(payload, [patchesKey]), patches: payload[patchesKey] }),
269
+ ),
270
+ decodeResult: Schema.decodeEffect(result),
271
+ encodeResult: Schema.encodeEffect(result),
272
+ startedPayload: Schema.fromJsonString(Schema.toCodecJson(started)),
273
+ };
274
+ };
275
+
276
+ const workflowOf = (name: string, member: string, declared: AnyJob): JobWorkflow<string, AnyJob> => {
277
+ // The stored payload keeps the job's patches under `patchesKey`, so a declared field of that name would collide.
278
+ if (Rec.has(declared.payload, patchesKey)) {
279
+ throw ReservedPayloadFieldError.make({ field: patchesKey, job: jobTag({ actor: name, member }) });
280
+ }
281
+
282
+ const annotations = Context.make(JobCodecsOf, Option.some(jobCodecs(declared)));
283
+
284
+ const made = Workflow.make(jobTag({ actor: name, member }), {
285
+ annotations,
286
+ error: declared.error,
287
+ idempotencyKey: () => jobTag({ actor: name, member }),
288
+ payload: declared.payload,
289
+ success: declared.success,
290
+ });
291
+
292
+ const register = made.toLayer.bind(made);
293
+
294
+ // The job's run sees the patches its start declared (`patched`); the rest of the Workflow is Effect's own.
295
+ const toLayer: typeof made.toLayer = (execute) => register(withPatches(execute));
296
+
297
+ return Object.assign(made, {
298
+ patched: patchedOf({ patches: declared.patches, tag: jobTag({ actor: name, member }) }),
299
+ patches: declared.patches,
300
+ toLayer,
301
+ });
302
+ };
303
+
304
+ function jobsOf<Name extends string, Declaring extends Jobs>(
305
+ declaring: DeclaredJobs<Name, Declaring>,
306
+ ): ActorJobs<Name, Declaring>;
307
+ function jobsOf({ jobs, name }: DeclaredJobs<string, Jobs>): Readonly<Record<string, JobWorkflow<string, AnyJob>>> {
308
+ return Rec.map(jobs, (declared, member) => workflowOf(name, member, declared));
309
+ }
310
+
311
+ export { JobCodecsOf, command, declaredSchema, job, jobCodecs, jobResult, jobTag, jobsOf, query };
312
+
313
+ export type {
314
+ ActorJobs,
315
+ AnyCommand,
316
+ AnyJob,
317
+ AnyQuery,
318
+ Command,
319
+ Declared,
320
+ DeclaredSchema,
321
+ DeclarationOptions,
322
+ Job,
323
+ JobOptions,
324
+ JobCodecs,
325
+ JobWorkflow,
326
+ Jobs,
327
+ NoJobs,
328
+ PatchesOf,
329
+ PlainFields,
330
+ PlainSchema,
331
+ Query,
332
+ QueryOptions,
333
+ StartableJob,
334
+ };
@@ -0,0 +1,25 @@
1
+ import { String as Str } from "effect";
2
+
3
+ import type { OutboxMessage } from "./outbox.schema.js";
4
+
5
+ const outboxPrefix = "outbox:";
6
+
7
+ const outboxCommandId = (id: string): string => `${outboxPrefix}${id}`;
8
+
9
+ const isOutboxCommandId: (commandId: string) => boolean = Str.startsWith(outboxPrefix);
10
+
11
+ const mintedIdOf = (commandId: string): string => {
12
+ if (isOutboxCommandId(commandId)) {
13
+ return Str.slice(outboxPrefix.length)(commandId);
14
+ }
15
+
16
+ return commandId;
17
+ };
18
+
19
+ interface Unsent extends Omit<OutboxMessage, "commandId"> {
20
+ readonly id: string;
21
+ }
22
+
23
+ const outboxMessage = ({ id, ...unsent }: Unsent): OutboxMessage => ({ ...unsent, commandId: outboxCommandId(id) });
24
+
25
+ export { isOutboxCommandId, mintedIdOf, outboxCommandId, outboxMessage };
@@ -0,0 +1,11 @@
1
+ import { Schema } from "effect";
2
+
3
+ export const OutboxMessage = Schema.Struct({
4
+ actor: Schema.String,
5
+ commandId: Schema.String,
6
+ key: Schema.String,
7
+ member: Schema.String,
8
+ payload: Schema.String,
9
+ });
10
+
11
+ export type OutboxMessage = typeof OutboxMessage.Type;
@@ -0,0 +1,21 @@
1
+ import { Schema } from "effect";
2
+
3
+ export const TimerId = Schema.String.pipe(Schema.brand("TimerId"));
4
+
5
+ export type TimerId = typeof TimerId.Type;
6
+
7
+ export const ScheduledTimer = Schema.Struct({
8
+ after: Schema.Duration,
9
+ command: Schema.String,
10
+ id: TimerId,
11
+ payload: Schema.String,
12
+ });
13
+
14
+ export type ScheduledTimer = typeof ScheduledTimer.Type;
15
+
16
+ export const TimerChanges = Schema.Struct({
17
+ cancelled: Schema.Array(TimerId),
18
+ scheduled: Schema.Array(ScheduledTimer),
19
+ });
20
+
21
+ export type TimerChanges = typeof TimerChanges.Type;
@@ -0,0 +1,12 @@
1
+ import { Schema } from "effect";
2
+
3
+ /**
4
+ * The computer's saved checkpoint can no longer be forked: Archil keeps only the current session's checkpoint and
5
+ * the one before it. Resume the computer to take a new one, or fork without it.
6
+ */
7
+ export class CheckpointExpiredError extends Schema.TaggedError<
8
+ CheckpointExpiredError,
9
+ { readonly brand: unique symbol }
10
+ >()("CheckpointExpiredError", {
11
+ computer: Schema.String,
12
+ }) {}
@@ -0,0 +1,27 @@
1
+ import type { ActorUnavailableError } from "#src/contract/client/actor-unavailable.errors";
2
+ import type { CallerNotAllowedError } from "#src/contract/caller/caller-not-allowed.errors";
3
+ import type { UnauthenticatedError } from "#src/contract/caller/unauthenticated.errors";
4
+ import type { InvalidRequestError } from "#src/contract/client/invalid-request.errors";
5
+ import type { ComputerHeldError } from "./computer-held.errors.js";
6
+ import type { ComputerLimitError } from "./computer-limit.errors.js";
7
+ import type { ComputerLostError } from "./computer-lost.errors.js";
8
+ import type { ComputerNotFoundError } from "./computer-not-found.errors.js";
9
+ import type { ComputersUnavailableError } from "./computers-unavailable.errors.js";
10
+
11
+ /**
12
+ * What a computer client can fail with. A network client adds the caller's refusals, `CallerNotAllowedError` and
13
+ * `UnauthenticatedError`; a host's own client never refuses its caller. A request past the exec limits is an
14
+ * `InvalidRequestError`.
15
+ */
16
+ type ComputerClientFailure =
17
+ | ActorUnavailableError
18
+ | CallerNotAllowedError
19
+ | ComputerHeldError
20
+ | ComputerLimitError
21
+ | ComputerLostError
22
+ | ComputerNotFoundError
23
+ | ComputersUnavailableError
24
+ | InvalidRequestError
25
+ | UnauthenticatedError;
26
+
27
+ export type { ComputerClientFailure };
@@ -0,0 +1,110 @@
1
+ import { Array as Arr, Context, Effect, Option, Schema } from "effect";
2
+
3
+ import type { ActorDefinition, Decoded } from "#src/contract/actor/actor.contract";
4
+ import { InvalidRequestError } from "#src/contract/client/invalid-request.errors";
5
+ import type {
6
+ ActorComputers,
7
+ ComputerAddress,
8
+ ComputerClient,
9
+ ComputerClientFailure,
10
+ } from "./computer-client.contract.js";
11
+ import { ComputerSpec, ExecRequest } from "./computer.schema.js";
12
+ import type { ComputerLogLine, ComputerLogPage } from "./computer.schema.js";
13
+ import { ComputersUnavailableError } from "./computers-unavailable.errors.js";
14
+ import { SecretUnavailableError } from "#src/contract/secret/secret-unavailable.errors";
15
+ import { step } from "./step/computer-step.contract.js";
16
+ import { StepRequest } from "./step/computer-step.schema.js";
17
+
18
+ interface ComputerClientSource {
19
+ readonly definition: ActorDefinition;
20
+ readonly name: string;
21
+ }
22
+
23
+ type ComputerClientOf<Definition extends ActorDefinition> = (
24
+ key: Definition["key"]["Type"],
25
+ ) => Effect.Effect<ActorComputers, ComputersUnavailableError | InvalidRequestError>;
26
+
27
+ const checked = <Checked extends Schema.Decoder<unknown>>(
28
+ schema: Checked,
29
+ actor: string,
30
+ ): ((value: Checked["Type"]) => Effect.Effect<Checked["Type"], InvalidRequestError>) => {
31
+ const decode = Schema.decodeUnknownEffect(schema);
32
+
33
+ return (value) =>
34
+ Effect.mapError(decode(value), (invalid) => InvalidRequestError.make({ actor, message: invalid.message }));
35
+ };
36
+
37
+ /** A spec binds only secrets the actor declares, so a computer never gets a credential its actor may not read. */
38
+ const declared =
39
+ ({ definition, name }: ComputerClientSource) =>
40
+ (spec: ComputerSpec): Effect.Effect<ComputerSpec, SecretUnavailableError> => {
41
+ const undeclared = Arr.findFirst(spec.secrets ?? [], ({ secret }) => !Arr.contains(definition.secrets, secret));
42
+
43
+ return Option.match(undeclared, {
44
+ onNone: () => Effect.succeed(spec),
45
+ onSome: ({ secret }) => Effect.fail(SecretUnavailableError.make({ actor: name, reason: "undeclared", secret })),
46
+ });
47
+ };
48
+
49
+ /**
50
+ * Checks every spec and exec request against the contract, so an engine never sees one past the limits, and every
51
+ * secret a spec binds against the actor's declaration.
52
+ */
53
+ const bounded = (client: ComputerClient, source: ComputerClientSource): ActorComputers => {
54
+ const spec = checked(ComputerSpec, source.name);
55
+ const request = checked(ExecRequest, source.name);
56
+ const allowed = declared(source);
57
+ const stepRequest = checked(StepRequest, source.name);
58
+
59
+ const checkedClient: ComputerClient = {
60
+ ...client,
61
+ ensure: (wanted) => Effect.flatMap(Effect.flatMap(spec(wanted), allowed), client.ensure),
62
+ exec: (computer, wanted) => Effect.flatMap(request(wanted), (valid) => client.exec(computer, valid)),
63
+ };
64
+
65
+ return {
66
+ ...checkedClient,
67
+ step: (computer, wanted) =>
68
+ Effect.flatMap(stepRequest(wanted), (valid) => step({ client: checkedClient, computer, request: valid })),
69
+ };
70
+ };
71
+
72
+ export class ActorComputerClients extends Context.Service<
73
+ ActorComputerClients,
74
+ {
75
+ readonly connect: (address: ComputerAddress) => ComputerClient;
76
+ /** A page of one computer's log, read from outside the actor (`<Actor>/computer/logs`). */
77
+ readonly logs: (
78
+ address: ComputerAddress,
79
+ computer: string,
80
+ page: ComputerLogPage,
81
+ ) => Effect.Effect<readonly ComputerLogLine[], ComputerClientFailure>;
82
+ }
83
+ >()("@akterjs/effect/contract/computer/computer-client.adapter/ActorComputerClients") {
84
+ public static clientOf<Definition extends ActorDefinition>(
85
+ source: ComputerClientSource,
86
+ ): ComputerClientOf<Definition>;
87
+ public static clientOf({
88
+ definition,
89
+ name,
90
+ }: ComputerClientSource): (
91
+ key: Decoded,
92
+ ) => Effect.Effect<ActorComputers, ComputersUnavailableError | InvalidRequestError> {
93
+ return (key) =>
94
+ Effect.gen(function* connectComputers() {
95
+ const clients = yield* Effect.serviceOption(ActorComputerClients);
96
+
97
+ if (Option.isNone(clients)) {
98
+ return yield* ComputersUnavailableError.make({ message: "computers aren't available on this host" });
99
+ }
100
+
101
+ const encoded = yield* Schema.encodeEffect(definition.key)(key).pipe(
102
+ Effect.mapError(() => InvalidRequestError.make({ actor: name, message: "the actor key is invalid" })),
103
+ );
104
+
105
+ return bounded(clients.value.connect({ actor: name, key: encoded }), { definition, name });
106
+ });
107
+ }
108
+ }
109
+
110
+ export type { ComputerClientOf };
@@ -0,0 +1,75 @@
1
+ import type { Effect } from "effect";
2
+ import type { WorkflowEngine } from "effect/workflow";
3
+
4
+ import type { ComputerClientFailure } from "./computer-client-failure.contract.js";
5
+ import type { Computer, ComputerName, ComputerSpec, ExecRequest, ExecResult } from "./computer.schema.js";
6
+ import type { CheckpointExpiredError } from "./checkpoint-expired.errors.js";
7
+ import type { SecretUnavailableError } from "#src/contract/secret/secret-unavailable.errors";
8
+ import type { StepRequest } from "./step/computer-step.schema.js";
9
+ import type { ComputerFileRequest } from "./files/computer-files.schema.js";
10
+
11
+ interface ComputerAddress {
12
+ readonly actor: string;
13
+ readonly key: string;
14
+ }
15
+
16
+ /**
17
+ * One actor's computers. Each call reaches a provider, so call it from a job activity or the host, never from a
18
+ * command or query (ADR 0007). `ensure`, `pause`, `resume`, `stop` and `remove` drive the computer to that state
19
+ * and are safe to send again after a lost reply. `exec` runs one step, keyed so a resend reads its outcome back.
20
+ */
21
+ /**
22
+ * Where a fork goes: another actor, by its encoded key, and optionally a new name. A live computer is paused for
23
+ * its checkpoint and resumed; a paused or stopped one forks from its saved checkpoint.
24
+ */
25
+ interface ComputerFork {
26
+ readonly into: ComputerAddress;
27
+ readonly name?: ComputerName;
28
+ }
29
+
30
+ /**
31
+ * A hold on a computer, such as a fork's id. `pause` with a hold keeps the computer paused, or stopped if it was stopped: `ensure`, `exec`
32
+ * and a `resume` or `pause` without the same hold fail with `ComputerHeldError`, so nothing changes its pause under a fork. `resume` with the hold releases it and returns the computer to where the held `pause` found it, running, paused or stopped. A hold survives restarts, so a retried fork releases what an earlier attempt held.
33
+ */
34
+ interface ComputerHold {
35
+ readonly hold?: string;
36
+ }
37
+
38
+ interface ComputerClient {
39
+ /** A spec's `secrets` must be among the actor's declared secrets, and set in its environment. */
40
+ readonly ensure: (spec: ComputerSpec) => Effect.Effect<Computer, ComputerClientFailure | SecretUnavailableError>;
41
+ readonly exec: (computer: string, request: ExecRequest) => Effect.Effect<ExecResult, ComputerClientFailure>;
42
+ /** Reads or replaces one file in the computer's files directory; a write answers empty bytes. */
43
+ readonly files: (computer: string, request: ComputerFileRequest) => Effect.Effect<Uint8Array, ComputerClientFailure>;
44
+ /** Copies the computer, its files and memory, to the target actor. A resend finds the copy already made. */
45
+ readonly fork: (
46
+ computer: string,
47
+ fork: ComputerFork,
48
+ ) => Effect.Effect<Computer, ComputerClientFailure | CheckpointExpiredError>;
49
+ readonly get: (computer: string) => Effect.Effect<Computer, ComputerClientFailure>;
50
+ readonly list: Effect.Effect<readonly Computer[], ComputerClientFailure>;
51
+ readonly pause: (computer: string, hold?: ComputerHold) => Effect.Effect<Computer, ComputerClientFailure>;
52
+ readonly remove: (computer: string) => Effect.Effect<void, ComputerClientFailure>;
53
+ readonly resume: (computer: string, hold?: ComputerHold) => Effect.Effect<Computer, ComputerClientFailure>;
54
+ readonly stop: (computer: string) => Effect.Effect<Computer, ComputerClientFailure>;
55
+ }
56
+
57
+ /**
58
+ * An actor's computers as its jobs reach them through `Actor.computer(key)`: the client, plus `step`, which runs one
59
+ * command as a durable step of the calling job (`./step/computer-step.contract.ts`). Call `step` from a job, never from
60
+ * inside an activity.
61
+ */
62
+ interface ActorComputers extends ComputerClient {
63
+ readonly step: (
64
+ computer: string,
65
+ request: StepRequest,
66
+ ) => Effect.Effect<
67
+ ExecResult,
68
+ ComputerClientFailure,
69
+ WorkflowEngine.WorkflowEngine | WorkflowEngine.WorkflowInstance
70
+ >;
71
+ }
72
+
73
+ export type { ActorComputers, ComputerAddress, ComputerClient, ComputerFork, ComputerHold };
74
+
75
+ export type { ComputerClientFailure } from "./computer-client-failure.contract.js";
@@ -0,0 +1,10 @@
1
+ import { Schema } from "effect";
2
+
3
+ /**
4
+ * A fork holds the computer paused. Nothing but that fork's resume, carrying the same hold, may run or resume it;
5
+ * try again once the fork ends.
6
+ */
7
+ export class ComputerHeldError extends Schema.TaggedError<ComputerHeldError, { readonly brand: unique symbol }>()(
8
+ "ComputerHeldError",
9
+ { computer: Schema.String, hold: Schema.String },
10
+ ) {}
@@ -0,0 +1,11 @@
1
+ import { Schema } from "effect";
2
+
3
+ /**
4
+ * A new computer would pass a limit, so none was made: `store`, the computers one app environment may keep, or
5
+ * `account`, the sandboxes the platform's provider account may run at once. Remove a computer, or try again once
6
+ * one is gone. Nothing waits for room.
7
+ */
8
+ export class ComputerLimitError extends Schema.TaggedError<ComputerLimitError, { readonly brand: unique symbol }>()(
9
+ "ComputerLimitError",
10
+ { computer: Schema.String, limit: Schema.Literals(["store", "account"]), maximum: Schema.Int },
11
+ ) {}
@@ -0,0 +1,10 @@
1
+ import { Schema } from "effect";
2
+
3
+ /**
4
+ * The computer's disk no longer exists, so it can't be resumed or run in. It is not recreated empty under the same
5
+ * name; remove it and ensure it again to start over.
6
+ */
7
+ export class ComputerLostError extends Schema.TaggedError<ComputerLostError, { readonly brand: unique symbol }>()(
8
+ "ComputerLostError",
9
+ { computer: Schema.String },
10
+ ) {}
@@ -0,0 +1,9 @@
1
+ import { Schema } from "effect";
2
+
3
+ /** The actor has no computer of that name. */
4
+ export class ComputerNotFoundError extends Schema.TaggedError<
5
+ ComputerNotFoundError,
6
+ { readonly brand: unique symbol }
7
+ >()("ComputerNotFoundError", {
8
+ computer: Schema.String,
9
+ }) {}