@rivetkit/engine 1.0.0 → 2.2.1-pr.4600.b74ff3b

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 (1038) hide show
  1. package/CLAUDE.md +38 -0
  2. package/artifacts/config-schema.json +1140 -0
  3. package/artifacts/errors/actor.kv_storage_quota_exceeded.json +5 -0
  4. package/artifacts/errors/actor.no_runner_config_configured.json +5 -0
  5. package/artifacts/errors/guard.actor_runner_failed.json +5 -0
  6. package/artifacts/errors/guard.invalid_request.json +5 -0
  7. package/artifacts/errors/guard.invalid_request_body.json +5 -0
  8. package/artifacts/errors/guard.invalid_response_body.json +5 -0
  9. package/artifacts/errors/guard.missing_query_parameter.json +5 -0
  10. package/artifacts/errors/guard.query_ambiguous_runner_configs.json +5 -0
  11. package/artifacts/errors/guard.query_duplicate_param.json +5 -0
  12. package/artifacts/errors/guard.query_empty_actor_name.json +5 -0
  13. package/artifacts/errors/guard.query_get_disallowed_params.json +5 -0
  14. package/artifacts/errors/guard.query_invalid_base64_input.json +5 -0
  15. package/artifacts/errors/guard.query_invalid_cbor_input.json +5 -0
  16. package/artifacts/errors/guard.query_invalid_params.json +5 -0
  17. package/artifacts/errors/guard.query_invalid_percent_encoding.json +5 -0
  18. package/artifacts/errors/guard.query_missing_runner_name.json +5 -0
  19. package/artifacts/errors/guard.query_no_runner_configs.json +5 -0
  20. package/artifacts/errors/guard.query_param_missing_equals.json +5 -0
  21. package/artifacts/errors/guard.query_path_token_syntax.json +5 -0
  22. package/artifacts/errors/guard.query_unknown_param.json +5 -0
  23. package/artifacts/errors/guard.request_body_too_large.json +5 -0
  24. package/artifacts/errors/guard.response_body_too_large.json +5 -0
  25. package/artifacts/errors/serverless_runner_pool.failed_to_fetch_metadata.json +5 -0
  26. package/artifacts/errors/serverless_runner_pool.not_found.json +5 -0
  27. package/artifacts/errors/{api.rate_limited.json → test.api_rate_limited.json} +2 -2
  28. package/artifacts/errors/{namespace.invalid_name.json → test.namespace_invalid_name.json} +2 -2
  29. package/artifacts/errors/ws.going_away.json +5 -0
  30. package/artifacts/openapi.json +458 -6
  31. package/docker/builder-base/linux-gnu.Dockerfile +21 -0
  32. package/docker/builder-base/linux-musl.Dockerfile +53 -0
  33. package/docker/builder-base/osxcross.Dockerfile +42 -0
  34. package/docker/builder-base/windows-mingw.Dockerfile +41 -0
  35. package/docker/builder-base/windows-msvc.Dockerfile +25 -0
  36. package/docker/dev/docker-compose.yml +43 -18
  37. package/docker/dev/grafana/dashboards/api.json +1077 -1239
  38. package/docker/dev/grafana/dashboards/cache.json +911 -1074
  39. package/docker/dev/grafana/dashboards/epoxy.json +1606 -0
  40. package/docker/dev/grafana/dashboards/futures.json +242 -229
  41. package/docker/dev/grafana/dashboards/gasoline.json +2663 -2476
  42. package/docker/dev/grafana/dashboards/guard.json +1433 -1273
  43. package/docker/dev/grafana/dashboards/operation.json +871 -0
  44. package/docker/dev/grafana/dashboards/pegboard.json +1274 -0
  45. package/docker/dev/grafana/dashboards/tokio.json +930 -1004
  46. package/docker/dev/grafana/dashboards/traces.json +35 -13
  47. package/docker/dev/grafana/provisioning/datasources/datasources.yaml +8 -0
  48. package/docker/{dev-multinode/otel-collector-server → dev/otel-collector}/config.yaml +18 -13
  49. package/docker/dev/prometheus/prometheus.yml +4 -0
  50. package/docker/dev/rivet-engine/config.jsonc +9 -16
  51. package/docker/dev-host/docker-compose.yml +38 -16
  52. package/docker/dev-host/grafana/dashboards/api.json +1077 -1239
  53. package/docker/dev-host/grafana/dashboards/cache.json +911 -1074
  54. package/docker/dev-host/grafana/dashboards/epoxy.json +1606 -0
  55. package/docker/dev-host/grafana/dashboards/futures.json +242 -229
  56. package/docker/dev-host/grafana/dashboards/gasoline.json +2663 -2476
  57. package/docker/dev-host/grafana/dashboards/guard.json +1433 -1273
  58. package/docker/dev-host/grafana/dashboards/operation.json +871 -0
  59. package/docker/dev-host/grafana/dashboards/pegboard.json +1274 -0
  60. package/docker/dev-host/grafana/dashboards/tokio.json +930 -1004
  61. package/docker/dev-host/grafana/dashboards/traces.json +35 -13
  62. package/docker/dev-host/grafana/provisioning/datasources/datasources.yaml +8 -0
  63. package/docker/dev-host/{otel-collector-server → otel-collector}/config.yaml +18 -13
  64. package/docker/dev-host/prometheus/prometheus.yml +4 -0
  65. package/docker/dev-host/rivet-engine/config.jsonc +9 -16
  66. package/docker/dev-multidc/core/grafana/dashboards/api.json +1077 -1239
  67. package/docker/dev-multidc/core/grafana/dashboards/cache.json +911 -1074
  68. package/docker/dev-multidc/core/grafana/dashboards/epoxy.json +1606 -0
  69. package/docker/dev-multidc/core/grafana/dashboards/futures.json +242 -229
  70. package/docker/dev-multidc/core/grafana/dashboards/gasoline.json +2663 -2476
  71. package/docker/dev-multidc/core/grafana/dashboards/guard.json +1433 -1273
  72. package/docker/dev-multidc/core/grafana/dashboards/operation.json +871 -0
  73. package/docker/dev-multidc/core/grafana/dashboards/pegboard.json +1274 -0
  74. package/docker/dev-multidc/core/grafana/dashboards/tokio.json +930 -1004
  75. package/docker/dev-multidc/core/grafana/dashboards/traces.json +35 -13
  76. package/docker/dev-multidc/core/grafana/provisioning/datasources/datasources.yaml +8 -0
  77. package/docker/dev-multidc/core/prometheus/prometheus.yml +4 -0
  78. package/docker/dev-multidc/datacenters/dc-a/{otel-collector-server → otel-collector}/config.yaml +18 -13
  79. package/docker/dev-multidc/datacenters/dc-a/rivet-engine/config.jsonc +23 -22
  80. package/docker/{dev-multidc-multinode/datacenters/dc-b/otel-collector-server → dev-multidc/datacenters/dc-b/otel-collector}/config.yaml +18 -13
  81. package/docker/dev-multidc/datacenters/dc-b/rivet-engine/config.jsonc +23 -22
  82. package/docker/dev-multidc/datacenters/dc-c/{otel-collector-server → otel-collector}/config.yaml +18 -13
  83. package/docker/dev-multidc/datacenters/dc-c/rivet-engine/config.jsonc +23 -22
  84. package/docker/dev-multidc/docker-compose.yml +71 -64
  85. package/docker/dev-multidc-multinode/core/grafana/dashboards/api.json +1077 -1239
  86. package/docker/dev-multidc-multinode/core/grafana/dashboards/cache.json +911 -1074
  87. package/docker/dev-multidc-multinode/core/grafana/dashboards/epoxy.json +1606 -0
  88. package/docker/dev-multidc-multinode/core/grafana/dashboards/futures.json +242 -229
  89. package/docker/dev-multidc-multinode/core/grafana/dashboards/gasoline.json +2663 -2476
  90. package/docker/dev-multidc-multinode/core/grafana/dashboards/guard.json +1433 -1273
  91. package/docker/dev-multidc-multinode/core/grafana/dashboards/operation.json +871 -0
  92. package/docker/dev-multidc-multinode/core/grafana/dashboards/pegboard.json +1274 -0
  93. package/docker/dev-multidc-multinode/core/grafana/dashboards/tokio.json +930 -1004
  94. package/docker/dev-multidc-multinode/core/grafana/dashboards/traces.json +35 -13
  95. package/docker/dev-multidc-multinode/core/grafana/provisioning/datasources/datasources.yaml +8 -0
  96. package/docker/dev-multidc-multinode/core/prometheus/prometheus.yml +4 -0
  97. package/docker/dev-multidc-multinode/datacenters/dc-a/{otel-collector-server → otel-collector}/config.yaml +28 -13
  98. package/docker/dev-multidc-multinode/datacenters/dc-a/rivet-engine/0/config.jsonc +23 -22
  99. package/docker/dev-multidc-multinode/datacenters/dc-a/rivet-engine/1/config.jsonc +23 -22
  100. package/docker/dev-multidc-multinode/datacenters/dc-a/rivet-engine/2/config.jsonc +23 -22
  101. package/docker/{dev-multidc/datacenters/dc-b/otel-collector-server → dev-multidc-multinode/datacenters/dc-b/otel-collector}/config.yaml +28 -13
  102. package/docker/dev-multidc-multinode/datacenters/dc-b/rivet-engine/0/config.jsonc +23 -22
  103. package/docker/dev-multidc-multinode/datacenters/dc-b/rivet-engine/1/config.jsonc +23 -22
  104. package/docker/dev-multidc-multinode/datacenters/dc-b/rivet-engine/2/config.jsonc +23 -22
  105. package/docker/dev-multidc-multinode/datacenters/dc-c/{otel-collector-server → otel-collector}/config.yaml +28 -13
  106. package/docker/dev-multidc-multinode/datacenters/dc-c/rivet-engine/0/config.jsonc +23 -22
  107. package/docker/dev-multidc-multinode/datacenters/dc-c/rivet-engine/1/config.jsonc +23 -22
  108. package/docker/dev-multidc-multinode/datacenters/dc-c/rivet-engine/2/config.jsonc +23 -22
  109. package/docker/dev-multidc-multinode/docker-compose.yml +113 -88
  110. package/docker/dev-multinode/docker-compose.yml +57 -26
  111. package/docker/dev-multinode/grafana/dashboards/api.json +1077 -1239
  112. package/docker/dev-multinode/grafana/dashboards/cache.json +911 -1074
  113. package/docker/dev-multinode/grafana/dashboards/epoxy.json +1606 -0
  114. package/docker/dev-multinode/grafana/dashboards/futures.json +242 -229
  115. package/docker/dev-multinode/grafana/dashboards/gasoline.json +2663 -2476
  116. package/docker/dev-multinode/grafana/dashboards/guard.json +1433 -1273
  117. package/docker/dev-multinode/grafana/dashboards/operation.json +871 -0
  118. package/docker/dev-multinode/grafana/dashboards/pegboard.json +1274 -0
  119. package/docker/dev-multinode/grafana/dashboards/tokio.json +930 -1004
  120. package/docker/dev-multinode/grafana/dashboards/traces.json +35 -13
  121. package/docker/dev-multinode/grafana/provisioning/datasources/datasources.yaml +8 -0
  122. package/docker/{dev/otel-collector-server → dev-multinode/otel-collector}/config.yaml +28 -13
  123. package/docker/dev-multinode/prometheus/prometheus.yml +4 -0
  124. package/docker/dev-multinode/rivet-engine/0/config.jsonc +9 -16
  125. package/docker/dev-multinode/rivet-engine/1/config.jsonc +9 -16
  126. package/docker/dev-multinode/rivet-engine/2/config.jsonc +9 -16
  127. package/docker/engine/linux-aarch64.Dockerfile +9 -49
  128. package/docker/engine/linux-x86_64.Dockerfile +7 -57
  129. package/docker/engine/macos-aarch64.Dockerfile +8 -54
  130. package/docker/engine/macos-x86_64.Dockerfile +9 -55
  131. package/docker/engine/windows.Dockerfile +5 -53
  132. package/docker/template/grafana-dashboards/api.json +1077 -1239
  133. package/docker/template/grafana-dashboards/cache.json +911 -1074
  134. package/docker/template/grafana-dashboards/epoxy.json +1606 -0
  135. package/docker/template/grafana-dashboards/futures.json +242 -229
  136. package/docker/template/grafana-dashboards/gasoline.json +2663 -2476
  137. package/docker/template/grafana-dashboards/guard.json +1433 -1273
  138. package/docker/template/grafana-dashboards/operation.json +871 -0
  139. package/docker/template/grafana-dashboards/pegboard.json +1274 -0
  140. package/docker/template/grafana-dashboards/tokio.json +930 -1004
  141. package/docker/template/grafana-dashboards/traces.json +35 -13
  142. package/docker/template/node_modules/.bin/js-yaml +4 -4
  143. package/docker/template/node_modules/.bin/tsc +4 -4
  144. package/docker/template/node_modules/.bin/tsserver +4 -4
  145. package/docker/template/node_modules/.bin/tsx +4 -4
  146. package/docker/template/src/docker-compose.ts +42 -29
  147. package/docker/template/src/main.ts +4 -4
  148. package/docker/template/src/services/core/grafana.ts +14 -1
  149. package/docker/template/src/services/core/prometheus.ts +20 -0
  150. package/docker/template/src/services/edge/{otel-collector-server.ts → otel-collector.ts} +55 -24
  151. package/docker/template/src/services/edge/rivet-engine.ts +4 -16
  152. package/docker/template/src/services/edge/runner.ts +2 -3
  153. package/docker/universal/Dockerfile +5 -3
  154. package/package.json +2 -5
  155. package/packages/api-builder/src/global_context.rs +1 -1
  156. package/packages/api-builder/src/metrics.rs +28 -24
  157. package/packages/api-builder/src/middleware.rs +30 -48
  158. package/packages/api-builder/src/router.rs +13 -1
  159. package/packages/api-peer/Cargo.toml +7 -9
  160. package/packages/api-peer/src/actors/delete.rs +56 -57
  161. package/packages/api-peer/src/actors/get_or_create.rs +139 -0
  162. package/packages/api-peer/src/actors/kv_get.rs +40 -28
  163. package/packages/api-peer/src/actors/list.rs +31 -14
  164. package/packages/api-peer/src/actors/list_names.rs +6 -6
  165. package/packages/api-peer/src/actors/mod.rs +3 -0
  166. package/packages/api-peer/src/actors/reschedule.rs +55 -0
  167. package/packages/api-peer/src/actors/sleep.rs +55 -0
  168. package/packages/api-peer/src/envoys.rs +57 -0
  169. package/packages/api-peer/src/internal.rs +441 -24
  170. package/packages/api-peer/src/lib.rs +2 -1
  171. package/packages/api-peer/src/namespaces.rs +24 -9
  172. package/packages/api-peer/src/router.rs +31 -7
  173. package/packages/api-peer/src/runner_configs.rs +66 -19
  174. package/packages/api-peer/src/runners.rs +30 -32
  175. package/packages/api-public/Cargo.toml +2 -0
  176. package/packages/api-public/src/actors/create.rs +8 -17
  177. package/packages/api-public/src/actors/delete.rs +11 -35
  178. package/packages/api-public/src/actors/get_or_create.rs +23 -95
  179. package/packages/api-public/src/actors/kv_get.rs +12 -29
  180. package/packages/api-public/src/actors/list.rs +56 -78
  181. package/packages/api-public/src/actors/list_names.rs +15 -14
  182. package/packages/api-public/src/actors/mod.rs +2 -0
  183. package/packages/api-public/src/actors/reschedule.rs +65 -0
  184. package/packages/api-public/src/actors/sleep.rs +64 -0
  185. package/packages/api-public/src/actors/utils.rs +12 -60
  186. package/packages/api-public/src/ctx.rs +14 -6
  187. package/packages/api-public/src/datacenters.rs +5 -5
  188. package/packages/api-public/src/envoys.rs +57 -0
  189. package/packages/api-public/src/errors.rs +0 -7
  190. package/packages/api-public/src/health.rs +51 -44
  191. package/packages/api-public/src/lib.rs +2 -1
  192. package/packages/api-public/src/metadata.rs +44 -14
  193. package/packages/api-public/src/namespaces.rs +11 -11
  194. package/packages/api-public/src/router.rs +22 -5
  195. package/packages/api-public/src/runner_configs/delete.rs +13 -10
  196. package/packages/api-public/src/runner_configs/list.rs +5 -2
  197. package/packages/api-public/src/runner_configs/refresh_metadata.rs +1 -1
  198. package/packages/api-public/src/runner_configs/serverless_health_check.rs +2 -2
  199. package/packages/api-public/src/runner_configs/upsert.rs +12 -9
  200. package/packages/api-public/src/runner_configs/utils.rs +35 -175
  201. package/packages/api-public/src/runners.rs +17 -45
  202. package/packages/{dump-openapi → api-public-openapi-gen}/Cargo.toml +1 -1
  203. package/packages/api-types/src/actors/create.rs +1 -0
  204. package/packages/api-types/src/actors/delete.rs +20 -0
  205. package/packages/api-types/src/actors/get_or_create.rs +30 -0
  206. package/packages/api-types/src/actors/kv_get.rs +25 -0
  207. package/packages/api-types/src/actors/list.rs +8 -1
  208. package/packages/api-types/src/actors/mod.rs +5 -0
  209. package/packages/api-types/src/actors/reschedule.rs +26 -0
  210. package/packages/api-types/src/actors/sleep.rs +26 -0
  211. package/packages/api-types/src/datacenters/list.rs +2 -2
  212. package/packages/api-types/src/envoys/list.rs +24 -0
  213. package/packages/api-types/src/envoys/mod.rs +1 -0
  214. package/packages/api-types/src/lib.rs +1 -0
  215. package/packages/api-types/src/namespaces/list.rs +4 -0
  216. package/packages/api-types/src/namespaces/runner_configs.rs +23 -2
  217. package/packages/api-types/src/runner_configs/list.rs +6 -1
  218. package/packages/api-types/src/runner_configs/mod.rs +12 -0
  219. package/packages/api-types/src/runners/list.rs +4 -0
  220. package/packages/api-types/src/runners/list_names.rs +21 -0
  221. package/packages/api-types/src/runners/mod.rs +1 -0
  222. package/packages/api-util/src/lib.rs +44 -21
  223. package/packages/bootstrap/Cargo.toml +7 -4
  224. package/packages/bootstrap/src/backfill.rs +53 -0
  225. package/packages/bootstrap/src/lib.rs +43 -7
  226. package/packages/cache/Cargo.toml +3 -1
  227. package/packages/cache/src/driver.rs +43 -151
  228. package/packages/cache/src/getter_ctx.rs +48 -70
  229. package/packages/cache/src/inner.rs +28 -18
  230. package/packages/cache/src/key.rs +17 -3
  231. package/packages/cache/src/lib.rs +0 -2
  232. package/packages/cache/src/metrics.rs +43 -31
  233. package/packages/cache/src/req_config.rs +219 -156
  234. package/packages/cache/tests/fetch.rs +91 -0
  235. package/packages/cache/tests/in_flight.rs +361 -0
  236. package/packages/cache/tests/ttl.rs +314 -0
  237. package/packages/cache-purge/src/lib.rs +1 -1
  238. package/packages/config/Cargo.toml +1 -0
  239. package/packages/config/src/config/cache.rs +10 -3
  240. package/packages/config/src/config/clickhouse.rs +0 -30
  241. package/packages/config/src/config/{db.rs → db/mod.rs} +3 -18
  242. package/packages/config/src/config/db/postgres.rs +59 -0
  243. package/packages/config/src/config/guard.rs +19 -0
  244. package/packages/config/src/config/metrics.rs +22 -0
  245. package/packages/config/src/config/mod.rs +44 -10
  246. package/packages/config/src/config/pegboard.rs +242 -16
  247. package/packages/config/src/config/pubsub.rs +11 -0
  248. package/packages/config/src/config/runtime.rs +58 -0
  249. package/packages/config/src/config/telemetry.rs +1 -0
  250. package/packages/config/src/config/topology.rs +78 -19
  251. package/packages/config/src/defaults.rs +3 -0
  252. package/packages/config/src/lib.rs +10 -1
  253. package/packages/config-schema-gen/Cargo.toml +11 -0
  254. package/packages/config-schema-gen/build.rs +26 -0
  255. package/packages/config-schema-gen/src/lib.rs +2 -0
  256. package/packages/engine/Cargo.toml +11 -2
  257. package/packages/engine/src/commands/db/mod.rs +0 -10
  258. package/packages/engine/src/commands/epoxy.rs +395 -0
  259. package/packages/engine/src/commands/mod.rs +1 -1
  260. package/packages/engine/src/commands/start.rs +43 -63
  261. package/packages/engine/src/commands/udb/cli.rs +148 -4
  262. package/packages/engine/src/commands/wf/mod.rs +83 -12
  263. package/packages/engine/src/commands/wf/signal.rs +38 -0
  264. package/packages/engine/src/lib.rs +6 -3
  265. package/packages/engine/src/main.rs +1 -1
  266. package/packages/engine/src/run_config.rs +6 -7
  267. package/packages/engine/src/util/db.rs +1 -25
  268. package/packages/engine/src/util/wf/mod.rs +39 -5
  269. package/packages/engine/tests/common/actors.rs +50 -332
  270. package/packages/engine/tests/common/api/mod.rs +7 -0
  271. package/packages/engine/tests/common/api/peer.rs +364 -0
  272. package/packages/engine/tests/common/api/public.rs +473 -0
  273. package/packages/engine/tests/common/ctx.rs +15 -3
  274. package/packages/engine/tests/common/mod.rs +8 -5
  275. package/packages/engine/tests/common/test_envoy.rs +87 -0
  276. package/packages/engine/tests/common/test_helpers.rs +218 -130
  277. package/packages/engine/tests/common/test_runner.rs +273 -0
  278. package/packages/engine/tests/envoy/actors_lifecycle.rs +1277 -0
  279. package/packages/engine/tests/envoy/mod.rs +1 -0
  280. package/packages/engine/tests/mod.rs +3 -0
  281. package/packages/engine/tests/runner/actors_alarm.rs +1453 -0
  282. package/packages/engine/tests/runner/actors_kv_crud.rs +996 -0
  283. package/packages/engine/tests/runner/actors_kv_delete_range.rs +126 -0
  284. package/packages/engine/tests/runner/actors_kv_drop.rs +255 -0
  285. package/packages/engine/tests/runner/actors_kv_list.rs +1061 -0
  286. package/packages/engine/tests/runner/actors_kv_misc.rs +882 -0
  287. package/packages/engine/tests/runner/actors_lifecycle.rs +1284 -0
  288. package/packages/engine/tests/runner/actors_scheduling_errors.rs +1005 -0
  289. package/packages/engine/tests/runner/api_actors_create.rs +422 -0
  290. package/packages/engine/tests/runner/api_actors_delete.rs +487 -0
  291. package/packages/engine/tests/runner/api_actors_get_or_create.rs +634 -0
  292. package/packages/engine/tests/runner/api_actors_list.rs +1771 -0
  293. package/packages/engine/tests/runner/api_actors_list_names.rs +691 -0
  294. package/packages/engine/tests/runner/api_namespaces_create.rs +428 -0
  295. package/packages/engine/tests/runner/api_namespaces_list.rs +760 -0
  296. package/packages/engine/tests/runner/api_runner_configs_list.rs +646 -0
  297. package/packages/engine/tests/runner/api_runner_configs_upsert.rs +651 -0
  298. package/packages/engine/tests/runner/api_runners_list.rs +166 -0
  299. package/packages/engine/tests/runner/api_runners_list_names.rs +386 -0
  300. package/packages/engine/tests/runner/mod.rs +20 -0
  301. package/packages/engine/tests/runner/runner_drain_on_version.rs +620 -0
  302. package/packages/env/Cargo.toml +0 -4
  303. package/packages/env/src/lib.rs +0 -18
  304. package/packages/epoxy/Cargo.toml +3 -2
  305. package/packages/epoxy/README.md +554 -93
  306. package/packages/epoxy/src/consts.rs +4 -36
  307. package/packages/epoxy/src/http_client.rs +59 -26
  308. package/packages/epoxy/src/http_routes.rs +73 -10
  309. package/packages/epoxy/src/keys/keys.rs +260 -11
  310. package/packages/epoxy/src/keys/mod.rs +11 -1
  311. package/packages/epoxy/src/keys/replica.rs +5 -260
  312. package/packages/epoxy/src/lib.rs +2 -1
  313. package/packages/epoxy/src/metrics.rs +118 -0
  314. package/packages/epoxy/src/ops/kv/get_local.rs +15 -24
  315. package/packages/epoxy/src/ops/kv/get_optimistic.rs +102 -64
  316. package/packages/epoxy/src/ops/kv/mod.rs +1 -0
  317. package/packages/epoxy/src/ops/kv/purge_local.rs +18 -9
  318. package/packages/epoxy/src/ops/kv/read_value.rs +92 -0
  319. package/packages/epoxy/src/ops/mod.rs +0 -1
  320. package/packages/epoxy/src/ops/propose.rs +1079 -194
  321. package/packages/epoxy/src/replica/ballot.rs +162 -102
  322. package/packages/epoxy/src/replica/changelog.rs +147 -0
  323. package/packages/epoxy/src/replica/commit_kv.rs +69 -66
  324. package/packages/epoxy/src/replica/message_request.rs +33 -48
  325. package/packages/epoxy/src/replica/messages/accept.rs +82 -41
  326. package/packages/epoxy/src/replica/messages/commit.rs +21 -33
  327. package/packages/epoxy/src/replica/messages/mod.rs +0 -8
  328. package/packages/epoxy/src/replica/messages/prepare.rs +68 -69
  329. package/packages/epoxy/src/replica/mod.rs +1 -6
  330. package/packages/epoxy/src/replica/update_config.rs +3 -1
  331. package/packages/epoxy/src/types.rs +30 -54
  332. package/packages/epoxy/src/utils.rs +149 -16
  333. package/packages/epoxy/src/workflows/backfill.rs +233 -0
  334. package/packages/epoxy/src/workflows/coordinator/mod.rs +33 -7
  335. package/packages/epoxy/src/workflows/coordinator/reconfigure.rs +44 -0
  336. package/packages/epoxy/src/workflows/coordinator/replica_status_change.rs +4 -3
  337. package/packages/epoxy/src/workflows/mod.rs +1 -1
  338. package/packages/epoxy/src/workflows/replica/mod.rs +4 -6
  339. package/packages/epoxy/src/workflows/replica/setup.rs +130 -771
  340. package/packages/epoxy/tests/backfill.rs +65 -0
  341. package/packages/epoxy/tests/backfill_snapshot.rs +233 -0
  342. package/packages/epoxy/tests/common/mod.rs +77 -21
  343. package/packages/epoxy/tests/common/utils.rs +366 -10
  344. package/packages/epoxy/tests/consensus_regressions.rs +285 -0
  345. package/packages/epoxy/tests/kv.rs +128 -167
  346. package/packages/epoxy/tests/kv_get_optimistic.rs +257 -157
  347. package/packages/epoxy/tests/migration.rs +75 -0
  348. package/packages/epoxy/tests/proposal.rs +133 -28
  349. package/packages/epoxy/tests/reconfigure.rs +92 -474
  350. package/packages/error/tests/basic.rs +8 -8
  351. package/packages/gasoline/Cargo.toml +1 -0
  352. package/packages/gasoline/src/builder/common/message.rs +19 -47
  353. package/packages/gasoline/src/builder/common/signal.rs +37 -21
  354. package/packages/gasoline/src/builder/common/workflow.rs +19 -15
  355. package/packages/gasoline/src/builder/workflow/lupe.rs +295 -0
  356. package/packages/gasoline/src/builder/workflow/message.rs +24 -47
  357. package/packages/gasoline/src/builder/workflow/mod.rs +1 -0
  358. package/packages/gasoline/src/builder/workflow/signal.rs +68 -22
  359. package/packages/gasoline/src/builder/workflow/sub_workflow.rs +6 -15
  360. package/packages/gasoline/src/ctx/activity.rs +46 -6
  361. package/packages/gasoline/src/ctx/common.rs +26 -23
  362. package/packages/gasoline/src/ctx/listen.rs +33 -50
  363. package/packages/gasoline/src/ctx/message.rs +76 -64
  364. package/packages/gasoline/src/ctx/operation.rs +15 -5
  365. package/packages/gasoline/src/ctx/standalone.rs +32 -4
  366. package/packages/gasoline/src/ctx/test.rs +31 -6
  367. package/packages/gasoline/src/ctx/versioned_workflow.rs +33 -7
  368. package/packages/gasoline/src/ctx/workflow.rs +194 -384
  369. package/packages/gasoline/src/db/debug.rs +49 -9
  370. package/packages/gasoline/src/db/kv/debug.rs +905 -15
  371. package/packages/gasoline/src/db/kv/keys/history.rs +434 -9
  372. package/packages/gasoline/src/db/kv/keys/metric.rs +70 -47
  373. package/packages/gasoline/src/db/kv/keys/signal.rs +19 -3
  374. package/packages/gasoline/src/db/kv/keys/workflow.rs +349 -3
  375. package/packages/gasoline/src/db/kv/mod.rs +975 -514
  376. package/packages/gasoline/src/db/kv/system.rs +155 -18
  377. package/packages/gasoline/src/db/mod.rs +29 -7
  378. package/packages/gasoline/src/error.rs +26 -21
  379. package/packages/gasoline/src/executable.rs +3 -1
  380. package/packages/gasoline/src/history/cursor.rs +436 -336
  381. package/packages/gasoline/src/history/event.rs +24 -15
  382. package/packages/gasoline/src/listen.rs +2 -14
  383. package/packages/gasoline/src/message.rs +1 -1
  384. package/packages/gasoline/src/metrics.rs +260 -143
  385. package/packages/gasoline/src/prelude.rs +1 -1
  386. package/packages/gasoline/src/registry.rs +6 -2
  387. package/packages/gasoline/src/signal.rs +34 -31
  388. package/packages/gasoline/src/utils/mod.rs +1 -18
  389. package/packages/gasoline/src/utils/topic.rs +35 -0
  390. package/packages/gasoline/src/worker.rs +71 -14
  391. package/packages/gasoline/src/workflow.rs +13 -0
  392. package/packages/gasoline/tests/workflows/eviction_test.rs +2 -2
  393. package/packages/gasoline-macros/src/lib.rs +74 -12
  394. package/packages/gasoline-runtime/Cargo.toml +18 -0
  395. package/packages/gasoline-runtime/src/lib.rs +12 -0
  396. package/packages/gasoline-runtime/src/workflows/mod.rs +1 -0
  397. package/packages/gasoline-runtime/src/workflows/pruner.rs +55 -0
  398. package/packages/guard/Cargo.toml +16 -8
  399. package/packages/guard/src/cache/mod.rs +63 -43
  400. package/packages/guard/src/cache/pegboard_gateway.rs +144 -0
  401. package/packages/guard/src/errors.rs +105 -0
  402. package/packages/guard/src/lib.rs +5 -15
  403. package/packages/guard/src/metrics.rs +12 -0
  404. package/packages/guard/src/routing/actor_path.rs +409 -0
  405. package/packages/guard/src/routing/api_public.rs +6 -14
  406. package/packages/guard/src/routing/envoy.rs +98 -0
  407. package/packages/guard/src/routing/mod.rs +152 -206
  408. package/packages/guard/src/routing/pegboard_gateway/mod.rs +572 -0
  409. package/packages/guard/src/routing/pegboard_gateway/resolve_actor_query.rs +236 -0
  410. package/packages/guard/src/routing/runner.rs +24 -54
  411. package/packages/guard/src/routing/ws_health.rs +61 -0
  412. package/packages/guard/src/shared_state.rs +11 -2
  413. package/packages/guard/tests/parse_actor_path.rs +418 -165
  414. package/packages/guard-core/Cargo.toml +3 -10
  415. package/packages/guard-core/src/custom_serve.rs +4 -10
  416. package/packages/guard-core/src/errors.rs +20 -4
  417. package/packages/guard-core/src/lib.rs +6 -4
  418. package/packages/guard-core/src/metrics.rs +66 -53
  419. package/packages/guard-core/src/proxy_service.rs +618 -1520
  420. package/packages/guard-core/src/request_context.rs +149 -169
  421. package/packages/guard-core/src/response_body.rs +65 -0
  422. package/packages/guard-core/src/route.rs +76 -0
  423. package/packages/guard-core/src/server.rs +60 -26
  424. package/packages/guard-core/src/task_group.rs +4 -0
  425. package/packages/guard-core/src/utils.rs +296 -0
  426. package/packages/guard-core/src/websocket_handle.rs +3 -3
  427. package/packages/guard-core/tests/common/mod.rs +0 -1
  428. package/packages/guard-core/tests/custom_serve.rs +4 -6
  429. package/packages/guard-core/tests/simple_websocket.rs +19 -19
  430. package/packages/guard-core/tests/streaming_response.rs +4 -9
  431. package/packages/metrics/Cargo.toml +3 -2
  432. package/packages/metrics/src/buckets.rs +5 -11
  433. package/packages/metrics/src/lib.rs +6 -3
  434. package/packages/metrics/src/providers.rs +2 -42
  435. package/packages/metrics/src/registry.rs +7 -0
  436. package/packages/metrics/src/server.rs +57 -0
  437. package/packages/namespace/Cargo.toml +0 -3
  438. package/packages/namespace/src/keys/metric.rs +301 -0
  439. package/packages/namespace/src/keys/mod.rs +1 -1
  440. package/packages/namespace/src/ops/get_global.rs +7 -4
  441. package/packages/namespace/src/ops/get_local.rs +32 -16
  442. package/packages/namespace/src/ops/mod.rs +0 -1
  443. package/packages/namespace/src/ops/resolve_for_name_global.rs +7 -4
  444. package/packages/namespace/src/ops/resolve_for_name_local.rs +39 -19
  445. package/packages/namespace/src/workflows/namespace.rs +3 -3
  446. package/packages/pegboard/Cargo.toml +22 -0
  447. package/packages/pegboard/src/actor_kv/entry.rs +47 -0
  448. package/packages/pegboard/src/actor_kv/metrics.rs +19 -0
  449. package/packages/pegboard/src/actor_kv/mod.rs +530 -0
  450. package/packages/pegboard/src/actor_kv/preload.rs +363 -0
  451. package/packages/{actor-kv/src → pegboard/src/actor_kv}/utils.rs +36 -35
  452. package/packages/pegboard/src/errors.rs +39 -5
  453. package/packages/pegboard/src/keys/actor.rs +285 -2
  454. package/packages/{actor-kv/src/entry.rs → pegboard/src/keys/actor_kv.rs} +73 -39
  455. package/packages/pegboard/src/keys/backfill.rs +49 -0
  456. package/packages/pegboard/src/keys/envoy.rs +1070 -0
  457. package/packages/pegboard/src/keys/epoxy/ns.rs +1 -1
  458. package/packages/pegboard/src/keys/mod.rs +4 -6
  459. package/packages/pegboard/src/keys/ns.rs +493 -14
  460. package/packages/pegboard/src/keys/runner.rs +281 -0
  461. package/packages/{namespace → pegboard}/src/keys/runner_config.rs +53 -0
  462. package/packages/pegboard/src/lib.rs +15 -2
  463. package/packages/pegboard/src/metrics.rs +57 -16
  464. package/packages/pegboard/src/ops/actor/create.rs +123 -53
  465. package/packages/pegboard/src/ops/actor/get.rs +14 -45
  466. package/packages/pegboard/src/ops/actor/get_for_gateway.rs +16 -0
  467. package/packages/pegboard/src/ops/actor/get_for_key.rs +3 -0
  468. package/packages/pegboard/src/ops/actor/get_for_kv.rs +43 -0
  469. package/packages/pegboard/src/ops/actor/get_for_runner.rs +99 -0
  470. package/packages/pegboard/src/ops/actor/get_reservation_for_key.rs +1 -0
  471. package/packages/pegboard/src/ops/actor/list_for_ns.rs +10 -38
  472. package/packages/pegboard/src/ops/actor/list_names.rs +3 -3
  473. package/packages/pegboard/src/ops/actor/mod.rs +3 -1
  474. package/packages/pegboard/src/ops/actor/util.rs +263 -0
  475. package/packages/pegboard/src/ops/envoy/drain.rs +101 -0
  476. package/packages/pegboard/src/ops/envoy/evict_actors.rs +54 -0
  477. package/packages/pegboard/src/ops/envoy/expire.rs +92 -0
  478. package/packages/pegboard/src/ops/envoy/get.rs +135 -0
  479. package/packages/pegboard/src/ops/envoy/list.rs +131 -0
  480. package/packages/pegboard/src/ops/envoy/mod.rs +6 -0
  481. package/packages/pegboard/src/ops/envoy/update_ping.rs +92 -0
  482. package/packages/pegboard/src/ops/mod.rs +3 -0
  483. package/packages/pegboard/src/ops/runner/drain.rs +110 -0
  484. package/packages/pegboard/src/ops/runner/list_names.rs +3 -3
  485. package/packages/pegboard/src/ops/runner/list_runner_config_enabled_dcs.rs +199 -0
  486. package/packages/pegboard/src/ops/runner/list_runner_config_epoxy_replica_ids.rs +51 -0
  487. package/packages/pegboard/src/ops/runner/mod.rs +3 -1
  488. package/packages/pegboard/src/ops/runner/update_alloc_idx.rs +17 -5
  489. package/packages/{namespace → pegboard}/src/ops/runner_config/delete.rs +18 -9
  490. package/packages/pegboard/src/ops/runner_config/ensure_normal_if_missing.rs +62 -0
  491. package/packages/{namespace → pegboard}/src/ops/runner_config/get.rs +15 -5
  492. package/packages/pegboard/src/ops/runner_config/get_error.rs +146 -0
  493. package/packages/{namespace → pegboard}/src/ops/runner_config/list.rs +13 -12
  494. package/packages/pegboard/src/ops/runner_config/mod.rs +7 -0
  495. package/packages/pegboard/src/ops/runner_config/refresh_metadata.rs +124 -0
  496. package/packages/pegboard/src/ops/runner_config/upsert.rs +206 -0
  497. package/packages/pegboard/src/ops/serverless_metadata/fetch.rs +223 -0
  498. package/packages/pegboard/src/ops/serverless_metadata/mod.rs +1 -0
  499. package/packages/pegboard/src/pubsub_subjects.rs +52 -0
  500. package/packages/pegboard/src/utils.rs +36 -2
  501. package/packages/pegboard/src/workflows/actor/destroy.rs +135 -99
  502. package/packages/pegboard/src/workflows/actor/keys.rs +59 -5
  503. package/packages/pegboard/src/workflows/actor/metrics.rs +345 -0
  504. package/packages/pegboard/src/workflows/actor/mod.rs +848 -204
  505. package/packages/pegboard/src/workflows/actor/runtime.rs +785 -212
  506. package/packages/pegboard/src/workflows/actor/setup.rs +61 -0
  507. package/packages/pegboard/src/workflows/actor2/keys.rs +337 -0
  508. package/packages/pegboard/src/workflows/actor2/metrics.rs +334 -0
  509. package/packages/pegboard/src/workflows/actor2/mod.rs +1251 -0
  510. package/packages/pegboard/src/workflows/actor2/runtime.rs +1005 -0
  511. package/packages/pegboard/src/workflows/actor_runner_name_selector_backfill.rs +266 -0
  512. package/packages/pegboard/src/workflows/metrics_aggregator.rs +282 -0
  513. package/packages/pegboard/src/workflows/mod.rs +8 -0
  514. package/packages/pegboard/src/workflows/runner.rs +62 -56
  515. package/packages/pegboard/src/workflows/runner2.rs +978 -0
  516. package/packages/pegboard/src/workflows/runner_pool.rs +298 -0
  517. package/packages/pegboard/src/workflows/runner_pool_error_tracker.rs +173 -0
  518. package/packages/pegboard/src/workflows/runner_pool_metadata_poller.rs +237 -0
  519. package/packages/pegboard/src/workflows/serverless/backfill.rs +120 -0
  520. package/packages/pegboard/src/workflows/serverless/conn.rs +702 -0
  521. package/packages/pegboard/src/workflows/serverless/mod.rs +3 -0
  522. package/packages/pegboard/src/workflows/serverless/receiver.rs +87 -0
  523. package/packages/pegboard/tests/actor_v1_pre_migration.rs +77 -0
  524. package/packages/{actor-kv/tests/list_edge_cases.rs → pegboard/tests/kv_list_edge_cases.rs} +74 -59
  525. package/packages/{actor-kv → pegboard}/tests/kv_operations.rs +77 -48
  526. package/packages/pegboard-envoy/Cargo.toml +43 -0
  527. package/packages/pegboard-envoy/src/actor_event_demuxer.rs +165 -0
  528. package/packages/pegboard-envoy/src/conn.rs +417 -0
  529. package/packages/pegboard-envoy/src/errors.rs +38 -0
  530. package/packages/pegboard-envoy/src/lib.rs +250 -0
  531. package/packages/pegboard-envoy/src/metrics.rs +44 -0
  532. package/packages/pegboard-envoy/src/ping_task.rs +61 -0
  533. package/packages/pegboard-envoy/src/tunnel_to_ws_task.rs +183 -0
  534. package/packages/pegboard-envoy/src/utils.rs +68 -0
  535. package/packages/pegboard-envoy/src/ws_to_tunnel_task.rs +536 -0
  536. package/packages/pegboard-envoy/tests/support/ws_to_tunnel_task.rs +82 -0
  537. package/packages/pegboard-gateway/Cargo.toml +2 -0
  538. package/packages/pegboard-gateway/src/keepalive_task.rs +1 -1
  539. package/packages/pegboard-gateway/src/lib.rs +506 -128
  540. package/packages/pegboard-gateway/src/metrics.rs +7 -11
  541. package/packages/pegboard-gateway/src/metrics_task.rs +80 -0
  542. package/packages/pegboard-gateway/src/ping_task.rs +9 -2
  543. package/packages/pegboard-gateway/src/shared_state.rs +110 -74
  544. package/packages/pegboard-gateway/src/tunnel_to_ws_task.rs +21 -7
  545. package/packages/pegboard-gateway/src/ws_to_tunnel_task.rs +12 -6
  546. package/packages/pegboard-gateway2/Cargo.toml +37 -0
  547. package/packages/pegboard-gateway2/src/keepalive_task.rs +61 -0
  548. package/packages/pegboard-gateway2/src/lib.rs +1044 -0
  549. package/packages/pegboard-gateway2/src/metrics.rs +10 -0
  550. package/packages/pegboard-gateway2/src/metrics_task.rs +80 -0
  551. package/packages/pegboard-gateway2/src/ping_task.rs +30 -0
  552. package/packages/pegboard-gateway2/src/shared_state.rs +601 -0
  553. package/packages/pegboard-gateway2/src/tunnel_to_ws_task.rs +99 -0
  554. package/packages/pegboard-gateway2/src/ws_to_tunnel_task.rs +71 -0
  555. package/packages/{pegboard-serverless → pegboard-outbound}/Cargo.toml +9 -9
  556. package/packages/pegboard-outbound/src/lib.rs +487 -0
  557. package/packages/pegboard-outbound/src/metrics.rs +17 -0
  558. package/packages/pegboard-runner/Cargo.toml +11 -5
  559. package/packages/pegboard-runner/src/actor_event_demuxer.rs +163 -0
  560. package/packages/pegboard-runner/src/conn.rs +358 -122
  561. package/packages/pegboard-runner/src/errors.rs +5 -0
  562. package/packages/pegboard-runner/src/lib.rs +62 -36
  563. package/packages/pegboard-runner/src/metrics.rs +44 -0
  564. package/packages/pegboard-runner/src/ping_task.rs +60 -13
  565. package/packages/pegboard-runner/src/tunnel_to_ws_task.rs +249 -110
  566. package/packages/pegboard-runner/src/ws_to_tunnel_task.rs +738 -113
  567. package/packages/pegboard-runner/tests/support/ws_to_tunnel_task.rs +150 -0
  568. package/packages/pools/Cargo.toml +1 -2
  569. package/packages/pools/src/db/clickhouse.rs +7 -6
  570. package/packages/pools/src/db/udb.rs +16 -3
  571. package/packages/pools/src/db/ups.rs +27 -5
  572. package/packages/pools/src/error.rs +0 -3
  573. package/packages/pools/src/lib.rs +0 -2
  574. package/packages/pools/src/metrics.rs +33 -28
  575. package/packages/pools/src/pools.rs +15 -39
  576. package/packages/pools/src/prelude.rs +1 -1
  577. package/packages/postgres-util/Cargo.toml +13 -0
  578. package/packages/postgres-util/src/lib.rs +84 -0
  579. package/packages/runner-protocol/build.rs +157 -0
  580. package/packages/runner-protocol/src/lib.rs +16 -0
  581. package/packages/runner-protocol/src/util.rs +14 -0
  582. package/packages/runner-protocol/src/versioned.rs +4345 -0
  583. package/packages/runtime/src/lib.rs +46 -46
  584. package/packages/runtime/src/metrics.rs +39 -30
  585. package/packages/runtime/src/term_signal.rs +25 -12
  586. package/packages/runtime/src/traces.rs +5 -8
  587. package/packages/service-manager/src/lib.rs +66 -15
  588. package/packages/test-deps/src/datacenter.rs +22 -8
  589. package/packages/test-deps/src/lib.rs +47 -25
  590. package/packages/test-deps-docker/src/database.rs +45 -36
  591. package/packages/test-snapshot-gen/Cargo.toml +39 -0
  592. package/packages/test-snapshot-gen/snapshots/.gitkeep +0 -0
  593. package/packages/test-snapshot-gen/snapshots/epoxy-v1/metadata.json +3 -0
  594. package/packages/test-snapshot-gen/snapshots/epoxy-v1/replica-1/000008.log +0 -0
  595. package/packages/test-snapshot-gen/snapshots/epoxy-v1/replica-1/000009.sst +3 -0
  596. package/packages/test-snapshot-gen/snapshots/epoxy-v1/replica-1/CURRENT +3 -0
  597. package/packages/test-snapshot-gen/snapshots/epoxy-v1/replica-1/MANIFEST-000005 +3 -0
  598. package/packages/test-snapshot-gen/snapshots/epoxy-v1/replica-1/OPTIONS-000007 +3 -0
  599. package/packages/test-snapshot-gen/snapshots/epoxy-v1/replica-2/000008.log +0 -0
  600. package/packages/test-snapshot-gen/snapshots/epoxy-v1/replica-2/000009.sst +3 -0
  601. package/packages/test-snapshot-gen/snapshots/epoxy-v1/replica-2/CURRENT +3 -0
  602. package/packages/test-snapshot-gen/snapshots/epoxy-v1/replica-2/MANIFEST-000005 +3 -0
  603. package/packages/test-snapshot-gen/snapshots/epoxy-v1/replica-2/OPTIONS-000007 +3 -0
  604. package/packages/test-snapshot-gen/snapshots/pb-actor-v1-pre-migration/metadata.json +3 -0
  605. package/packages/test-snapshot-gen/snapshots/pb-actor-v1-pre-migration/replica-1/000008.log +0 -0
  606. package/packages/test-snapshot-gen/snapshots/pb-actor-v1-pre-migration/replica-1/000009.sst +3 -0
  607. package/packages/test-snapshot-gen/snapshots/pb-actor-v1-pre-migration/replica-1/CURRENT +3 -0
  608. package/packages/test-snapshot-gen/snapshots/pb-actor-v1-pre-migration/replica-1/MANIFEST-000005 +3 -0
  609. package/packages/test-snapshot-gen/snapshots/pb-actor-v1-pre-migration/replica-1/OPTIONS-000007 +3 -0
  610. package/packages/test-snapshot-gen/snapshots/pb-actor-v1-pre-migration/replica-2/000008.log +0 -0
  611. package/packages/test-snapshot-gen/snapshots/pb-actor-v1-pre-migration/replica-2/000009.sst +3 -0
  612. package/packages/test-snapshot-gen/snapshots/pb-actor-v1-pre-migration/replica-2/CURRENT +3 -0
  613. package/packages/test-snapshot-gen/snapshots/pb-actor-v1-pre-migration/replica-2/MANIFEST-000005 +3 -0
  614. package/packages/test-snapshot-gen/snapshots/pb-actor-v1-pre-migration/replica-2/OPTIONS-000007 +3 -0
  615. package/packages/test-snapshot-gen/src/lib.rs +328 -0
  616. package/packages/test-snapshot-gen/src/main.rs +145 -0
  617. package/packages/test-snapshot-gen/src/scenarios/epoxy_keys.rs +60 -0
  618. package/packages/test-snapshot-gen/src/scenarios/mod.rs +27 -0
  619. package/packages/test-snapshot-gen/src/scenarios/pb_actor_v1_pre_migration.rs +56 -0
  620. package/packages/test-snapshot-gen/src/test_cluster.rs +234 -0
  621. package/packages/tracing-reconfigure/src/lib.rs +1 -1
  622. package/packages/tracing-utils/src/lib.rs +12 -20
  623. package/packages/types/src/actor/error.rs +59 -0
  624. package/packages/types/src/actor/mod.rs +2 -0
  625. package/packages/types/src/actors.rs +5 -0
  626. package/packages/types/src/envoys.rs +21 -0
  627. package/packages/types/src/keys/backfill.rs +5 -0
  628. package/packages/types/src/keys/mod.rs +1 -0
  629. package/packages/types/src/lib.rs +2 -1
  630. package/packages/types/src/runner_configs.rs +43 -14
  631. package/packages/universaldb/Cargo.toml +4 -0
  632. package/packages/universaldb/src/database.rs +50 -5
  633. package/packages/universaldb/src/driver/mod.rs +12 -2
  634. package/packages/universaldb/src/driver/postgres/database.rs +88 -27
  635. package/packages/universaldb/src/driver/postgres/mod.rs +1 -1
  636. package/packages/universaldb/src/driver/postgres/transaction.rs +4 -7
  637. package/packages/universaldb/src/driver/postgres/transaction_task.rs +30 -52
  638. package/packages/universaldb/src/driver/rocksdb/database.rs +13 -7
  639. package/packages/universaldb/src/driver/rocksdb/transaction_conflict_tracker.rs +5 -5
  640. package/packages/universaldb/src/driver/rocksdb/transaction_task.rs +2 -1
  641. package/packages/universaldb/src/metrics.rs +39 -23
  642. package/packages/universaldb/src/prelude.rs +1 -1
  643. package/packages/universaldb/src/transaction.rs +9 -2
  644. package/packages/universaldb/src/utils/cherry_pick.rs +46 -46
  645. package/packages/universaldb/src/utils/keys.rs +21 -2
  646. package/packages/universaldb/src/utils/mod.rs +8 -0
  647. package/packages/universaldb/src/utils/subspace.rs +9 -4
  648. package/packages/universaldb/tests/integration.rs +5 -3
  649. package/packages/universaldb/tests/integration_gas.rs +5 -3
  650. package/packages/universaldb/tests/rocksdb.rs +152 -19
  651. package/packages/universalpubsub/Cargo.toml +8 -2
  652. package/packages/universalpubsub/benches/simple.rs +28 -8
  653. package/packages/universalpubsub/src/chunking.rs +27 -5
  654. package/packages/universalpubsub/src/driver/memory/mod.rs +131 -20
  655. package/packages/universalpubsub/src/driver/mod.rs +5 -0
  656. package/packages/universalpubsub/src/driver/nats/mod.rs +8 -0
  657. package/packages/universalpubsub/src/driver/postgres/mod.rs +505 -96
  658. package/packages/universalpubsub/src/lib.rs +3 -0
  659. package/packages/universalpubsub/src/metrics.rs +60 -0
  660. package/packages/universalpubsub/src/pubsub.rs +227 -87
  661. package/packages/universalpubsub/src/subject.rs +32 -0
  662. package/packages/universalpubsub/tests/chunking.rs +298 -0
  663. package/packages/universalpubsub/tests/integration.rs +148 -7
  664. package/packages/universalpubsub/tests/reconnect.rs +8 -6
  665. package/packages/util/Cargo.toml +1 -3
  666. package/packages/util/build.rs +6 -0
  667. package/packages/util/src/lib.rs +7 -2
  668. package/packages/util/src/metric.rs +1 -0
  669. package/packages/util/src/serde.rs +1 -516
  670. package/packages/{internal → util-serde}/Cargo.toml +4 -5
  671. package/packages/util-serde/src/lib.rs +517 -0
  672. package/packages/workflow-worker/Cargo.toml +4 -4
  673. package/packages/workflow-worker/src/lib.rs +3 -2
  674. package/sdks/go/api-full/client/client.go +17 -4
  675. package/sdks/go/api-full/metadata/client.go +50 -0
  676. package/sdks/go/api-full/namespaces/client.go +3 -0
  677. package/sdks/go/api-full/namespaces.go +6 -4
  678. package/sdks/go/api-full/runners/client.go +3 -0
  679. package/sdks/go/api-full/runners.go +8 -6
  680. package/sdks/go/api-full/types.go +107 -23
  681. package/sdks/rust/api-full/rust/.openapi-generator/FILES +6 -0
  682. package/sdks/rust/api-full/rust/Cargo.toml +1 -1
  683. package/sdks/rust/api-full/rust/README.md +5 -2
  684. package/sdks/rust/api-full/rust/docs/Actor.md +1 -0
  685. package/sdks/rust/api-full/rust/docs/ActorsDeleteApi.md +1 -1
  686. package/sdks/rust/api-full/rust/docs/ActorsKvGetApi.md +2 -1
  687. package/sdks/rust/api-full/rust/docs/ActorsListApi.md +3 -2
  688. package/sdks/rust/api-full/rust/docs/MetadataApi.md +34 -0
  689. package/sdks/rust/api-full/rust/docs/MetadataGetResponse.md +18 -0
  690. package/sdks/rust/api-full/rust/docs/NamespacesApi.md +3 -2
  691. package/sdks/rust/api-full/rust/docs/RunnerConfig.md +1 -0
  692. package/sdks/rust/api-full/rust/docs/RunnerConfigKindOneOf1Serverless.md +1 -0
  693. package/sdks/rust/api-full/rust/docs/RunnerConfigResponse.md +15 -0
  694. package/sdks/rust/api-full/rust/docs/RunnerConfigsListApi.md +3 -2
  695. package/sdks/rust/api-full/rust/docs/RunnerConfigsListResponseRunnerConfigsValue.md +1 -1
  696. package/sdks/rust/api-full/rust/docs/RunnersApi.md +3 -2
  697. package/sdks/rust/api-full/rust/src/apis/actors_create_api.rs +1 -1
  698. package/sdks/rust/api-full/rust/src/apis/actors_delete_api.rs +3 -5
  699. package/sdks/rust/api-full/rust/src/apis/actors_get_or_create_api.rs +1 -1
  700. package/sdks/rust/api-full/rust/src/apis/actors_kv_get_api.rs +4 -2
  701. package/sdks/rust/api-full/rust/src/apis/actors_list_api.rs +9 -2
  702. package/sdks/rust/api-full/rust/src/apis/actors_list_names_api.rs +1 -1
  703. package/sdks/rust/api-full/rust/src/apis/configuration.rs +2 -2
  704. package/sdks/rust/api-full/rust/src/apis/datacenters_api.rs +1 -1
  705. package/sdks/rust/api-full/rust/src/apis/health_api.rs +1 -1
  706. package/sdks/rust/api-full/rust/src/apis/metadata_api.rs +62 -0
  707. package/sdks/rust/api-full/rust/src/apis/mod.rs +1 -0
  708. package/sdks/rust/api-full/rust/src/apis/namespaces_api.rs +9 -2
  709. package/sdks/rust/api-full/rust/src/apis/runner_configs_delete_api.rs +1 -1
  710. package/sdks/rust/api-full/rust/src/apis/runner_configs_list_api.rs +9 -2
  711. package/sdks/rust/api-full/rust/src/apis/runner_configs_refresh_metadata_api.rs +1 -1
  712. package/sdks/rust/api-full/rust/src/apis/runner_configs_serverless_health_check_api.rs +1 -1
  713. package/sdks/rust/api-full/rust/src/apis/runner_configs_upsert_api.rs +1 -1
  714. package/sdks/rust/api-full/rust/src/apis/runners_api.rs +9 -2
  715. package/sdks/rust/api-full/rust/src/models/actor.rs +5 -1
  716. package/sdks/rust/api-full/rust/src/models/actor_name.rs +1 -1
  717. package/sdks/rust/api-full/rust/src/models/actors_create_request.rs +1 -1
  718. package/sdks/rust/api-full/rust/src/models/actors_create_response.rs +1 -1
  719. package/sdks/rust/api-full/rust/src/models/actors_get_or_create_request.rs +1 -1
  720. package/sdks/rust/api-full/rust/src/models/actors_get_or_create_response.rs +1 -1
  721. package/sdks/rust/api-full/rust/src/models/actors_kv_get_response.rs +1 -1
  722. package/sdks/rust/api-full/rust/src/models/actors_list_names_response.rs +1 -1
  723. package/sdks/rust/api-full/rust/src/models/actors_list_response.rs +1 -1
  724. package/sdks/rust/api-full/rust/src/models/crash_policy.rs +1 -1
  725. package/sdks/rust/api-full/rust/src/models/datacenter.rs +1 -1
  726. package/sdks/rust/api-full/rust/src/models/datacenter_health.rs +1 -1
  727. package/sdks/rust/api-full/rust/src/models/datacenters_list_response.rs +1 -1
  728. package/sdks/rust/api-full/rust/src/models/health_fanout_response.rs +1 -1
  729. package/sdks/rust/api-full/rust/src/models/health_response.rs +1 -1
  730. package/sdks/rust/api-full/rust/src/models/health_status.rs +1 -1
  731. package/sdks/rust/api-full/rust/src/models/metadata_get_response.rs +48 -0
  732. package/sdks/rust/api-full/rust/src/models/mod.rs +4 -0
  733. package/sdks/rust/api-full/rust/src/models/namespace.rs +1 -1
  734. package/sdks/rust/api-full/rust/src/models/namespace_list_response.rs +1 -1
  735. package/sdks/rust/api-full/rust/src/models/namespaces_create_request.rs +1 -1
  736. package/sdks/rust/api-full/rust/src/models/namespaces_create_response.rs +1 -1
  737. package/sdks/rust/api-full/rust/src/models/pagination.rs +1 -1
  738. package/sdks/rust/api-full/rust/src/models/runner.rs +1 -1
  739. package/sdks/rust/api-full/rust/src/models/runner_config.rs +4 -1
  740. package/sdks/rust/api-full/rust/src/models/runner_config_kind.rs +1 -1
  741. package/sdks/rust/api-full/rust/src/models/runner_config_kind_one_of.rs +1 -1
  742. package/sdks/rust/api-full/rust/src/models/runner_config_kind_one_of_1.rs +1 -1
  743. package/sdks/rust/api-full/rust/src/models/runner_config_kind_one_of_1_serverless.rs +5 -1
  744. package/sdks/rust/api-full/rust/src/models/runner_config_response.rs +39 -0
  745. package/sdks/rust/api-full/rust/src/models/runner_config_variant.rs +1 -1
  746. package/sdks/rust/api-full/rust/src/models/runner_configs_list_response.rs +1 -1
  747. package/sdks/rust/api-full/rust/src/models/runner_configs_list_response_runner_configs_value.rs +3 -3
  748. package/sdks/rust/api-full/rust/src/models/runner_configs_serverless_health_check_request.rs +1 -1
  749. package/sdks/rust/api-full/rust/src/models/runner_configs_serverless_health_check_response.rs +1 -1
  750. package/sdks/rust/api-full/rust/src/models/runner_configs_serverless_health_check_response_one_of.rs +1 -1
  751. package/sdks/rust/api-full/rust/src/models/runner_configs_serverless_health_check_response_one_of_1.rs +1 -1
  752. package/sdks/rust/api-full/rust/src/models/runner_configs_serverless_health_check_response_one_of_1_failure.rs +1 -1
  753. package/sdks/rust/api-full/rust/src/models/runner_configs_serverless_health_check_response_one_of_success.rs +1 -1
  754. package/sdks/rust/api-full/rust/src/models/runner_configs_serverless_metadata_error.rs +1 -1
  755. package/sdks/rust/api-full/rust/src/models/runner_configs_serverless_metadata_error_one_of.rs +1 -1
  756. package/sdks/rust/api-full/rust/src/models/runner_configs_serverless_metadata_error_one_of_1.rs +1 -1
  757. package/sdks/rust/api-full/rust/src/models/runner_configs_serverless_metadata_error_one_of_2.rs +1 -1
  758. package/sdks/rust/api-full/rust/src/models/runner_configs_serverless_metadata_error_one_of_3.rs +1 -1
  759. package/sdks/rust/api-full/rust/src/models/runner_configs_serverless_metadata_error_one_of_3_non_success_status.rs +1 -1
  760. package/sdks/rust/api-full/rust/src/models/runner_configs_serverless_metadata_error_one_of_4.rs +1 -1
  761. package/sdks/rust/api-full/rust/src/models/runner_configs_serverless_metadata_error_one_of_4_invalid_response_json.rs +1 -1
  762. package/sdks/rust/api-full/rust/src/models/runner_configs_serverless_metadata_error_one_of_5.rs +1 -1
  763. package/sdks/rust/api-full/rust/src/models/runner_configs_serverless_metadata_error_one_of_5_invalid_response_schema.rs +1 -1
  764. package/sdks/rust/api-full/rust/src/models/runner_configs_upsert_request_body.rs +1 -1
  765. package/sdks/rust/api-full/rust/src/models/runner_configs_upsert_response.rs +1 -1
  766. package/sdks/rust/api-full/rust/src/models/runners_list_names_response.rs +1 -1
  767. package/sdks/rust/api-full/rust/src/models/runners_list_response.rs +1 -1
  768. package/sdks/rust/api-full/src/apis/actors_api.rs +8 -4
  769. package/sdks/rust/api-full/src/apis/ns_api.rs +8 -4
  770. package/sdks/rust/data/src/converted.rs +7 -4
  771. package/sdks/rust/data/src/lib.rs +2 -2
  772. package/sdks/rust/data/src/versioned/mod.rs +47 -4
  773. package/sdks/rust/data/src/versioned/namespace_runner_config.rs +256 -6
  774. package/sdks/rust/envoy-client/Cargo.toml +25 -0
  775. package/sdks/rust/envoy-client/src/actor.rs +992 -0
  776. package/sdks/rust/envoy-client/src/commands.rs +88 -0
  777. package/sdks/rust/envoy-client/src/config.rs +159 -0
  778. package/sdks/rust/envoy-client/src/connection.rs +288 -0
  779. package/sdks/rust/envoy-client/src/context.rs +24 -0
  780. package/sdks/rust/envoy-client/src/envoy.rs +432 -0
  781. package/sdks/rust/envoy-client/src/events.rs +62 -0
  782. package/sdks/rust/envoy-client/src/handle.rs +355 -0
  783. package/sdks/rust/envoy-client/src/kv.rs +132 -0
  784. package/sdks/rust/envoy-client/src/latency_channel.rs +27 -0
  785. package/sdks/rust/envoy-client/src/lib.rs +15 -0
  786. package/sdks/rust/envoy-client/src/stringify.rs +322 -0
  787. package/sdks/rust/envoy-client/src/tunnel.rs +265 -0
  788. package/sdks/rust/envoy-client/src/utils.rs +172 -0
  789. package/sdks/rust/envoy-protocol/Cargo.toml +22 -0
  790. package/sdks/rust/envoy-protocol/build.rs +200 -0
  791. package/sdks/rust/envoy-protocol/src/generated.rs +1 -0
  792. package/sdks/rust/envoy-protocol/src/lib.rs +8 -0
  793. package/sdks/rust/envoy-protocol/src/versioned.rs +208 -0
  794. package/sdks/rust/epoxy-protocol/Cargo.toml +0 -2
  795. package/sdks/rust/epoxy-protocol/build.rs +7 -0
  796. package/sdks/rust/epoxy-protocol/src/lib.rs +2 -5
  797. package/sdks/rust/epoxy-protocol/src/protocol.rs +128 -0
  798. package/sdks/rust/test-envoy/Cargo.toml +23 -0
  799. package/sdks/rust/test-envoy/Dockerfile +22 -0
  800. package/sdks/rust/test-envoy/src/behaviors.rs +141 -0
  801. package/sdks/rust/test-envoy/src/lib.rs +11 -0
  802. package/sdks/rust/test-envoy/src/main.rs +4 -0
  803. package/sdks/rust/test-envoy/src/server.rs +269 -0
  804. package/sdks/schemas/README.md +1 -2
  805. package/sdks/schemas/data/namespace.runner_config.v3.bare +24 -0
  806. package/sdks/schemas/data/namespace.runner_config.v4.bare +25 -0
  807. package/sdks/schemas/data/namespace.runner_config.v5.bare +26 -0
  808. package/sdks/schemas/data/pegboard.namespace.runner_alloc_idx.v2.bare +8 -0
  809. package/sdks/schemas/envoy-protocol/v1.bare +459 -0
  810. package/sdks/schemas/epoxy-protocol/v2.bare +220 -0
  811. package/sdks/schemas/runner-protocol/v4.bare +438 -0
  812. package/sdks/schemas/runner-protocol/v5.bare +430 -0
  813. package/sdks/schemas/runner-protocol/v6.bare +432 -0
  814. package/sdks/schemas/runner-protocol/v7.bare +438 -0
  815. package/sdks/typescript/api-full/.turbo/turbo-build.log +28 -27
  816. package/sdks/typescript/api-full/build.js +7 -1
  817. package/sdks/typescript/api-full/package.json +66 -57
  818. package/sdks/typescript/api-full/rivetkit-engine-api-full-25.5.3.tgz +0 -0
  819. package/sdks/typescript/api-full/src/Client.ts +41 -10
  820. package/sdks/typescript/api-full/src/api/client/requests/ActorsDeleteRequest.ts +4 -2
  821. package/sdks/typescript/api-full/src/api/client/requests/ActorsKvGetRequest.ts +13 -0
  822. package/sdks/typescript/api-full/src/api/client/requests/ActorsListRequest.ts +6 -0
  823. package/sdks/typescript/api-full/src/api/client/requests/RunnerConfigsListRequest.ts +4 -0
  824. package/sdks/typescript/api-full/src/api/client/requests/index.ts +1 -0
  825. package/sdks/typescript/api-full/src/api/resources/index.ts +1 -0
  826. package/sdks/typescript/api-full/src/api/resources/metadata/client/Client.ts +97 -0
  827. package/sdks/typescript/api-full/src/api/resources/metadata/client/index.ts +1 -0
  828. package/sdks/typescript/api-full/src/api/resources/metadata/index.ts +1 -0
  829. package/sdks/typescript/api-full/src/api/resources/namespaces/client/Client.ts +12 -2
  830. package/sdks/typescript/api-full/src/api/resources/namespaces/client/requests/NamespacesListRequest.ts +6 -0
  831. package/sdks/typescript/api-full/src/api/resources/runners/client/Client.ts +12 -2
  832. package/sdks/typescript/api-full/src/api/resources/runners/client/requests/RunnersListRequest.ts +6 -0
  833. package/sdks/typescript/api-full/src/api/types/Actor.ts +2 -0
  834. package/sdks/typescript/api-full/src/api/types/MetadataGetResponse.ts +14 -0
  835. package/sdks/typescript/api-full/src/api/types/RunnerConfig.ts +1 -0
  836. package/sdks/typescript/api-full/src/api/types/RunnerConfigKindServerlessServerless.ts +2 -0
  837. package/sdks/typescript/api-full/src/api/types/RunnerConfigResponse.ts +9 -0
  838. package/sdks/typescript/api-full/src/api/types/RunnerConfigServerless.ts +2 -0
  839. package/sdks/typescript/api-full/src/api/types/RunnerConfigsListResponseRunnerConfigsValue.ts +1 -1
  840. package/sdks/typescript/api-full/src/api/types/index.ts +2 -0
  841. package/sdks/typescript/api-full/src/core/fetcher/stream-wrappers/Node18UniversalStreamWrapper.ts +6 -4
  842. package/sdks/typescript/api-full/src/core/fetcher/stream-wrappers/UndiciStreamWrapper.ts +4 -3
  843. package/sdks/typescript/api-full/src/serialization/types/Actor.ts +2 -0
  844. package/sdks/typescript/api-full/src/serialization/types/MetadataGetResponse.ts +34 -0
  845. package/sdks/typescript/api-full/src/serialization/types/RunnerConfig.ts +5 -0
  846. package/sdks/typescript/api-full/src/serialization/types/RunnerConfigKindServerlessServerless.ts +2 -0
  847. package/sdks/typescript/api-full/src/serialization/types/RunnerConfigResponse.ts +26 -0
  848. package/sdks/typescript/api-full/src/serialization/types/RunnerConfigServerless.ts +2 -0
  849. package/sdks/typescript/api-full/src/serialization/types/RunnerConfigsListResponseRunnerConfigsValue.ts +3 -3
  850. package/sdks/typescript/api-full/src/serialization/types/index.ts +2 -0
  851. package/sdks/typescript/api-full/turbo.json +9 -0
  852. package/sdks/typescript/envoy-protocol/.turbo/turbo-build.log +23 -0
  853. package/sdks/typescript/{runner-protocol → envoy-protocol}/dist/index.cjs +466 -281
  854. package/sdks/typescript/envoy-protocol/dist/index.cjs.map +1 -0
  855. package/sdks/typescript/envoy-protocol/dist/index.d.cts +699 -0
  856. package/sdks/typescript/envoy-protocol/dist/index.d.ts +699 -0
  857. package/sdks/typescript/{runner-protocol → envoy-protocol}/dist/index.js +530 -345
  858. package/sdks/typescript/envoy-protocol/dist/index.js.map +1 -0
  859. package/sdks/typescript/{runner-protocol → envoy-protocol}/node_modules/.bin/tsc +4 -4
  860. package/{tests/load → sdks/typescript/envoy-protocol}/node_modules/.bin/tsserver +4 -4
  861. package/sdks/typescript/envoy-protocol/node_modules/.bin/tsup +21 -0
  862. package/sdks/typescript/envoy-protocol/node_modules/.bin/tsup-node +21 -0
  863. package/sdks/typescript/envoy-protocol/package.json +36 -0
  864. package/sdks/typescript/envoy-protocol/src/index.ts +2331 -0
  865. package/sdks/typescript/envoy-protocol/tsconfig.json +9 -0
  866. package/sdks/typescript/envoy-protocol/tsup.config.ts +4 -0
  867. package/sdks/typescript/runner/package.json +8 -2
  868. package/sdks/typescript/runner/src/actor.ts +38 -0
  869. package/sdks/typescript/runner/src/mod.ts +435 -229
  870. package/sdks/typescript/runner/src/stringify.ts +36 -33
  871. package/sdks/typescript/runner/src/tunnel.ts +52 -56
  872. package/sdks/typescript/runner/src/utils.ts +19 -0
  873. package/sdks/typescript/runner/src/websocket-tunnel-adapter.ts +98 -435
  874. package/sdks/typescript/runner-protocol/package.json +11 -9
  875. package/sdks/typescript/runner-protocol/src/index.ts +224 -156
  876. package/sdks/typescript/runner-protocol/tsconfig.json +1 -9
  877. package/sdks/typescript/test-runner/.turbo/turbo-build.log +5 -5
  878. package/sdks/typescript/test-runner/dist/index.js +53 -44
  879. package/sdks/typescript/test-runner/dist/index.js.map +1 -1
  880. package/sdks/typescript/test-runner/node_modules/.bin/pino +2 -2
  881. package/sdks/typescript/test-runner/node_modules/.bin/tsc +4 -4
  882. package/sdks/typescript/test-runner/node_modules/.bin/tsserver +4 -4
  883. package/sdks/typescript/test-runner/node_modules/.bin/tsup +4 -4
  884. package/sdks/typescript/test-runner/node_modules/.bin/tsup-node +4 -4
  885. package/sdks/typescript/test-runner/node_modules/.bin/tsx +4 -4
  886. package/sdks/typescript/test-runner/node_modules/.bin/vitest +4 -4
  887. package/sdks/typescript/test-runner/package.json +3 -3
  888. package/sdks/typescript/test-runner/src/index.ts +65 -42
  889. package/sdks/typescript/test-runner/src/log.ts +4 -18
  890. package/artifacts/errors/actor.no_runners_available.json +0 -5
  891. package/artifacts/errors/guard.actor_destroyed.json +0 -5
  892. package/artifacts/errors/guard.actor_not_found.json +0 -5
  893. package/contrib-docs/ACTOR_KEY_RESERVATION.md +0 -101
  894. package/contrib-docs/API.md +0 -11
  895. package/contrib-docs/DOCKER.md +0 -5
  896. package/contrib-docs/ERRORS.md +0 -13
  897. package/contrib-docs/GUARD.md +0 -76
  898. package/contrib-docs/PEGBOARD_TUNNEL_RETRIES.md +0 -83
  899. package/contrib-docs/RUNNER_LIFECYCLE.md +0 -172
  900. package/contrib-docs/SDKS.md +0 -9
  901. package/contrib-docs/TEST_DEPENDENCIES.md +0 -43
  902. package/contrib-docs/design-choicse/EMBEDDED_KV.md +0 -80
  903. package/contrib-docs/operate/TRACING_RECONFIGURE.md +0 -78
  904. package/docker/dev/otel-collector-client/config.yaml +0 -39
  905. package/docker/dev-host/otel-collector-client/config.yaml +0 -39
  906. package/docker/dev-multidc/datacenters/dc-a/otel-collector-client/config.yaml +0 -39
  907. package/docker/dev-multidc/datacenters/dc-b/otel-collector-client/config.yaml +0 -39
  908. package/docker/dev-multidc/datacenters/dc-c/otel-collector-client/config.yaml +0 -39
  909. package/docker/dev-multidc-multinode/datacenters/dc-a/otel-collector-client/config.yaml +0 -39
  910. package/docker/dev-multidc-multinode/datacenters/dc-b/otel-collector-client/config.yaml +0 -39
  911. package/docker/dev-multidc-multinode/datacenters/dc-c/otel-collector-client/config.yaml +0 -39
  912. package/docker/dev-multinode/otel-collector-client/config.yaml +0 -39
  913. package/docker/template/src/services/edge/otel-collector-client.ts +0 -64
  914. package/packages/actor-kv/Cargo.toml +0 -31
  915. package/packages/actor-kv/src/key.rs +0 -81
  916. package/packages/actor-kv/src/lib.rs +0 -357
  917. package/packages/cache/src/rate_limit.rs +0 -109
  918. package/packages/cache/tests/integration.rs +0 -582
  919. package/packages/clickhouse-inserter/Cargo.toml +0 -17
  920. package/packages/clickhouse-inserter/src/error.rs +0 -16
  921. package/packages/clickhouse-inserter/src/lib.rs +0 -179
  922. package/packages/clickhouse-user-query/Cargo.toml +0 -16
  923. package/packages/clickhouse-user-query/examples/case_sensitivity_demo.rs +0 -100
  924. package/packages/clickhouse-user-query/examples/group_by_example.rs +0 -53
  925. package/packages/clickhouse-user-query/examples/string_contains_demo.rs +0 -96
  926. package/packages/clickhouse-user-query/src/builder.rs +0 -445
  927. package/packages/clickhouse-user-query/src/error.rs +0 -37
  928. package/packages/clickhouse-user-query/src/lib.rs +0 -61
  929. package/packages/clickhouse-user-query/src/query.rs +0 -143
  930. package/packages/clickhouse-user-query/src/schema.rs +0 -78
  931. package/packages/clickhouse-user-query/tests/builder_tests.rs +0 -619
  932. package/packages/clickhouse-user-query/tests/case_sensitivity_tests.rs +0 -307
  933. package/packages/clickhouse-user-query/tests/integration_tests.rs +0 -540
  934. package/packages/clickhouse-user-query/tests/query_tests.rs +0 -263
  935. package/packages/clickhouse-user-query/tests/schema_tests.rs +0 -44
  936. package/packages/config/src/config/vector.rs +0 -18
  937. package/packages/engine/src/commands/udb_keys.rs +0 -200
  938. package/packages/engine/tests/actors_create.rs +0 -524
  939. package/packages/engine/tests/actors_delete.rs +0 -243
  940. package/packages/engine/tests/actors_general.rs +0 -191
  941. package/packages/engine/tests/actors_get.rs +0 -230
  942. package/packages/engine/tests/actors_get_by_id.rs +0 -170
  943. package/packages/engine/tests/actors_get_or_create.rs +0 -294
  944. package/packages/engine/tests/actors_get_or_create_by_id.rs +0 -147
  945. package/packages/engine/tests/actors_lifecycle.rs +0 -165
  946. package/packages/engine/tests/actors_list.rs +0 -798
  947. package/packages/engine/tests/actors_list_names.rs +0 -353
  948. package/packages/engine/tests/common/ns.rs +0 -36
  949. package/packages/engine/tests/common/runner.rs +0 -134
  950. package/packages/engine/tests/runners_dupe_key.rs +0 -27
  951. package/packages/engine/tests/runners_version.rs +0 -50
  952. package/packages/env/build.rs +0 -8
  953. package/packages/epoxy/spec/KEYS.md +0 -33
  954. package/packages/epoxy/spec/PROPOSAL.md +0 -125
  955. package/packages/epoxy/spec/RECONFIGURE.md +0 -40
  956. package/packages/epoxy/src/ops/explicit_prepare.rs +0 -342
  957. package/packages/epoxy/src/replica/decide_path.rs +0 -51
  958. package/packages/epoxy/src/replica/lead_consensus.rs +0 -65
  959. package/packages/epoxy/src/replica/log.rs +0 -84
  960. package/packages/epoxy/src/replica/messages/accepted.rs +0 -35
  961. package/packages/epoxy/src/replica/messages/committed.rs +0 -41
  962. package/packages/epoxy/src/replica/messages/download_instances.rs +0 -69
  963. package/packages/epoxy/src/replica/messages/pre_accept.rs +0 -69
  964. package/packages/epoxy/src/replica/utils.rs +0 -111
  965. package/packages/epoxy/src/workflows/purger.rs +0 -81
  966. package/packages/guard/src/cache/actor.rs +0 -43
  967. package/packages/guard/src/middleware.rs +0 -42
  968. package/packages/guard/src/routing/pegboard_gateway.rs +0 -260
  969. package/packages/guard-core/src/analytics.rs +0 -46
  970. package/packages/internal/README.md +0 -1
  971. package/packages/internal/src/lib.rs +0 -1
  972. package/packages/internal/src/ops/bump_serverless_autoscaler_global.rs +0 -64
  973. package/packages/internal/src/ops/cache/mod.rs +0 -1
  974. package/packages/internal/src/ops/cache/purge_global.rs +0 -81
  975. package/packages/internal/src/ops/mod.rs +0 -2
  976. package/packages/namespace/src/ops/runner_config/mod.rs +0 -4
  977. package/packages/namespace/src/ops/runner_config/upsert.rs +0 -148
  978. package/packages/pegboard/src/ops/actor/get_runner.rs +0 -64
  979. package/packages/pegboard/src/ops/runner/find_dc_with_runner.rs +0 -222
  980. package/packages/pegboard-serverless/src/lib.rs +0 -523
  981. package/packages/types/src/msgs/mod.rs +0 -1
  982. package/packages/types/src/msgs/pegboard.rs +0 -5
  983. package/sdks/rust/epoxy-protocol/src/versioned.rs +0 -206
  984. package/sdks/rust/runner-protocol/build.rs +0 -115
  985. package/sdks/rust/runner-protocol/src/lib.rs +0 -10
  986. package/sdks/rust/runner-protocol/src/versioned.rs +0 -1734
  987. package/sdks/schemas/epoxy-protocol/v1.bare +0 -260
  988. package/sdks/typescript/runner/.turbo/turbo-build.log +0 -22
  989. package/sdks/typescript/runner/dist/mod.cjs +0 -2951
  990. package/sdks/typescript/runner/dist/mod.cjs.map +0 -1
  991. package/sdks/typescript/runner/dist/mod.d.cts +0 -326
  992. package/sdks/typescript/runner/dist/mod.d.ts +0 -326
  993. package/sdks/typescript/runner/dist/mod.js +0 -2951
  994. package/sdks/typescript/runner/dist/mod.js.map +0 -1
  995. package/sdks/typescript/runner/node_modules/.bin/pino +0 -21
  996. package/sdks/typescript/runner/node_modules/.bin/tsc +0 -21
  997. package/sdks/typescript/runner/node_modules/.bin/tsserver +0 -21
  998. package/sdks/typescript/runner/node_modules/.bin/tsup +0 -21
  999. package/sdks/typescript/runner/node_modules/.bin/tsup-node +0 -21
  1000. package/sdks/typescript/runner/node_modules/.bin/tsx +0 -21
  1001. package/sdks/typescript/runner/node_modules/.bin/uuid +0 -21
  1002. package/sdks/typescript/runner/node_modules/.bin/vitest +0 -21
  1003. package/sdks/typescript/runner-protocol/.turbo/turbo-build.log +0 -22
  1004. package/sdks/typescript/runner-protocol/dist/index.cjs.map +0 -1
  1005. package/sdks/typescript/runner-protocol/dist/index.d.cts +0 -666
  1006. package/sdks/typescript/runner-protocol/dist/index.d.ts +0 -666
  1007. package/sdks/typescript/runner-protocol/dist/index.js.map +0 -1
  1008. package/sdks/typescript/runner-protocol/node_modules/.bin/tsserver +0 -21
  1009. package/sdks/typescript/runner-protocol/node_modules/.bin/tsup +0 -21
  1010. package/sdks/typescript/runner-protocol/node_modules/.bin/tsup-node +0 -21
  1011. package/sdks/typescript/test-runner/Dockerfile +0 -26
  1012. package/tests/load/README.md +0 -28
  1013. package/tests/load/actor-lifecycle/README.md +0 -26
  1014. package/tests/load/actor-lifecycle/actor.ts +0 -41
  1015. package/tests/load/actor-lifecycle/config.ts +0 -14
  1016. package/tests/load/actor-lifecycle/index.ts +0 -62
  1017. package/tests/load/actor-lifecycle/rivet_api.ts +0 -140
  1018. package/tests/load/actor-lifecycle/types.ts +0 -17
  1019. package/tests/load/node_modules/.bin/biome +0 -21
  1020. package/tests/load/node_modules/.bin/tsc +0 -21
  1021. package/tests/load/package.json +0 -15
  1022. package/tests/load/tsconfig.json +0 -20
  1023. package/tests/smoke/README.md +0 -32
  1024. package/tests/smoke/package.json +0 -19
  1025. package/tests/smoke/scripts/connect.ts +0 -41
  1026. package/tests/smoke/src/server/registry.ts +0 -32
  1027. package/tests/smoke/src/server/server.ts +0 -7
  1028. package/tests/smoke/src/smoke-test/index.ts +0 -161
  1029. package/tests/smoke/src/smoke-test/spawn-actor.ts +0 -109
  1030. package/tests/smoke/tsconfig.json +0 -43
  1031. /package/packages/{dump-openapi → api-public-openapi-gen}/build.rs +0 -0
  1032. /package/packages/{dump-openapi → api-public-openapi-gen}/src/lib.rs +0 -0
  1033. /package/{sdks/rust → packages}/runner-protocol/Cargo.toml +0 -0
  1034. /package/{sdks/rust → packages}/runner-protocol/src/compat.rs +0 -0
  1035. /package/{sdks/rust → packages}/runner-protocol/src/generated.rs +0 -0
  1036. /package/{sdks/rust → packages}/runner-protocol/src/uuid_compat.rs +0 -0
  1037. /package/sdks/rust/{runner-protocol → envoy-protocol}/src/util.rs +0 -0
  1038. /package/{tests/smoke → sdks/typescript/envoy-protocol}/turbo.json +0 -0
@@ -1,1734 +0,0 @@
1
- use anyhow::{Ok, Result, bail};
2
- use vbare::OwnedVersionedData;
3
-
4
- use crate::generated::{v1, v2, v3};
5
- use crate::uuid_compat::{decode_bytes_from_uuid, encode_bytes_to_uuid};
6
-
7
- pub enum ToClient {
8
- V1(v1::ToClient),
9
- V2(v2::ToClient),
10
- V3(v3::ToClient),
11
- }
12
-
13
- impl OwnedVersionedData for ToClient {
14
- type Latest = v3::ToClient;
15
-
16
- fn wrap_latest(latest: v3::ToClient) -> Self {
17
- ToClient::V3(latest)
18
- }
19
-
20
- fn unwrap_latest(self) -> Result<Self::Latest> {
21
- if let ToClient::V3(data) = self {
22
- Ok(data)
23
- } else {
24
- bail!("version not latest");
25
- }
26
- }
27
-
28
- fn deserialize_version(payload: &[u8], version: u16) -> Result<Self> {
29
- match version {
30
- 1 => Ok(ToClient::V1(serde_bare::from_slice(payload)?)),
31
- 2 => Ok(ToClient::V2(serde_bare::from_slice(payload)?)),
32
- 3 => Ok(ToClient::V3(serde_bare::from_slice(payload)?)),
33
- _ => bail!("invalid version: {version}"),
34
- }
35
- }
36
-
37
- fn serialize_version(self, _version: u16) -> Result<Vec<u8>> {
38
- match self {
39
- ToClient::V1(data) => serde_bare::to_vec(&data).map_err(Into::into),
40
- ToClient::V2(data) => serde_bare::to_vec(&data).map_err(Into::into),
41
- ToClient::V3(data) => serde_bare::to_vec(&data).map_err(Into::into),
42
- }
43
- }
44
-
45
- fn deserialize_converters() -> Vec<impl Fn(Self) -> Result<Self>> {
46
- vec![Self::v1_to_v2, Self::v2_to_v3]
47
- }
48
-
49
- fn serialize_converters() -> Vec<impl Fn(Self) -> Result<Self>> {
50
- vec![Self::v3_to_v2, Self::v2_to_v1]
51
- }
52
- }
53
-
54
- impl ToClient {
55
- fn v1_to_v2(self) -> Result<Self> {
56
- match self {
57
- ToClient::V1(x) => {
58
- let inner = match x {
59
- v1::ToClient::ToClientInit(init) => {
60
- v2::ToClient::ToClientInit(v2::ToClientInit {
61
- runner_id: init.runner_id,
62
- last_event_idx: init.last_event_idx,
63
- metadata: v2::ProtocolMetadata {
64
- runner_lost_threshold: init.metadata.runner_lost_threshold,
65
- },
66
- })
67
- }
68
- v1::ToClient::ToClientClose => v2::ToClient::ToClientClose,
69
- v1::ToClient::ToClientCommands(commands) => v2::ToClient::ToClientCommands(
70
- commands
71
- .into_iter()
72
- .map(|cmd| v2::CommandWrapper {
73
- index: cmd.index,
74
- inner: match cmd.inner {
75
- v1::Command::CommandStartActor(start) => {
76
- v2::Command::CommandStartActor(v2::CommandStartActor {
77
- actor_id: start.actor_id,
78
- generation: start.generation,
79
- config: v2::ActorConfig {
80
- name: start.config.name,
81
- key: start.config.key,
82
- create_ts: start.config.create_ts,
83
- input: start.config.input,
84
- },
85
- })
86
- }
87
- v1::Command::CommandStopActor(stop) => {
88
- v2::Command::CommandStopActor(v2::CommandStopActor {
89
- actor_id: stop.actor_id,
90
- generation: stop.generation,
91
- })
92
- }
93
- },
94
- })
95
- .collect(),
96
- ),
97
- v1::ToClient::ToClientAckEvents(ack) => {
98
- v2::ToClient::ToClientAckEvents(v2::ToClientAckEvents {
99
- last_event_idx: ack.last_event_idx,
100
- })
101
- }
102
- v1::ToClient::ToClientKvResponse(resp) => {
103
- v2::ToClient::ToClientKvResponse(v2::ToClientKvResponse {
104
- request_id: resp.request_id,
105
- data: convert_kv_response_data_v1_to_v2(resp.data),
106
- })
107
- }
108
- v1::ToClient::ToClientTunnelMessage(msg) => {
109
- v2::ToClient::ToClientTunnelMessage(v2::ToClientTunnelMessage {
110
- request_id: msg.request_id,
111
- message_id: msg.message_id,
112
- message_kind: convert_to_client_tunnel_message_kind_v1_to_v2(
113
- msg.message_kind,
114
- ),
115
- gateway_reply_to: msg.gateway_reply_to,
116
- })
117
- }
118
- };
119
-
120
- Ok(ToClient::V2(inner))
121
- }
122
- _ => bail!("unexpected version"),
123
- }
124
- }
125
-
126
- fn v2_to_v3(self) -> Result<Self> {
127
- if let ToClient::V2(x) = self {
128
- let inner = match x {
129
- v2::ToClient::ToClientInit(init) => v3::ToClient::ToClientInit(v3::ToClientInit {
130
- runner_id: init.runner_id,
131
- last_event_idx: init.last_event_idx,
132
- metadata: v3::ProtocolMetadata {
133
- runner_lost_threshold: init.metadata.runner_lost_threshold,
134
- },
135
- }),
136
- v2::ToClient::ToClientClose => v3::ToClient::ToClientClose,
137
- v2::ToClient::ToClientCommands(commands) => v3::ToClient::ToClientCommands(
138
- commands
139
- .into_iter()
140
- .map(|cmd| v3::CommandWrapper {
141
- index: cmd.index,
142
- inner: match cmd.inner {
143
- v2::Command::CommandStartActor(start) => {
144
- v3::Command::CommandStartActor(v3::CommandStartActor {
145
- actor_id: start.actor_id,
146
- generation: start.generation,
147
- config: v3::ActorConfig {
148
- name: start.config.name,
149
- key: start.config.key,
150
- create_ts: start.config.create_ts,
151
- input: start.config.input,
152
- },
153
- hibernating_requests: Vec::new(),
154
- })
155
- }
156
- v2::Command::CommandStopActor(stop) => {
157
- v3::Command::CommandStopActor(v3::CommandStopActor {
158
- actor_id: stop.actor_id,
159
- generation: stop.generation,
160
- })
161
- }
162
- },
163
- })
164
- .collect(),
165
- ),
166
- v2::ToClient::ToClientAckEvents(ack) => {
167
- v3::ToClient::ToClientAckEvents(v3::ToClientAckEvents {
168
- last_event_idx: ack.last_event_idx,
169
- })
170
- }
171
- v2::ToClient::ToClientKvResponse(resp) => {
172
- v3::ToClient::ToClientKvResponse(v3::ToClientKvResponse {
173
- request_id: resp.request_id,
174
- data: convert_kv_response_data_v2_to_v3(resp.data),
175
- })
176
- }
177
- v2::ToClient::ToClientTunnelMessage(msg) => {
178
- // Extract v3 message_id from v2's UUIDs
179
- // v2.message_id (UUID) contains: gateway_id (4) + request_id (4) + message_index (2) = 10 bytes
180
- let decoded = decode_bytes_from_uuid(&msg.request_id);
181
-
182
- let mut gateway_id = [0u8; 4];
183
- gateway_id.copy_from_slice(&decoded[..4]);
184
- let mut request_id = [0u8; 4];
185
- request_id.copy_from_slice(&decoded[4..8]);
186
- let message_index = u16::from_le_bytes([decoded[8], decoded[9]]);
187
-
188
- v3::ToClient::ToClientTunnelMessage(v3::ToClientTunnelMessage {
189
- message_id: v3::MessageId {
190
- gateway_id,
191
- request_id,
192
- message_index,
193
- },
194
- message_kind: convert_to_client_tunnel_message_kind_v2_to_v3(
195
- msg.message_kind,
196
- ),
197
- })
198
- }
199
- };
200
-
201
- Ok(ToClient::V3(inner))
202
- } else {
203
- bail!("unexpected version");
204
- }
205
- }
206
-
207
- fn v3_to_v2(self) -> Result<Self> {
208
- if let ToClient::V3(x) = self {
209
- let inner = match x {
210
- v3::ToClient::ToClientInit(init) => v2::ToClient::ToClientInit(v2::ToClientInit {
211
- runner_id: init.runner_id,
212
- last_event_idx: init.last_event_idx,
213
- metadata: v2::ProtocolMetadata {
214
- runner_lost_threshold: init.metadata.runner_lost_threshold,
215
- },
216
- }),
217
- v3::ToClient::ToClientClose => v2::ToClient::ToClientClose,
218
- v3::ToClient::ToClientCommands(commands) => v2::ToClient::ToClientCommands(
219
- commands
220
- .into_iter()
221
- .map(|cmd| v2::CommandWrapper {
222
- index: cmd.index,
223
- inner: match cmd.inner {
224
- v3::Command::CommandStartActor(start) => {
225
- v2::Command::CommandStartActor(v2::CommandStartActor {
226
- actor_id: start.actor_id,
227
- generation: start.generation,
228
- config: v2::ActorConfig {
229
- name: start.config.name,
230
- key: start.config.key,
231
- create_ts: start.config.create_ts,
232
- input: start.config.input,
233
- },
234
- })
235
- }
236
- v3::Command::CommandStopActor(stop) => {
237
- v2::Command::CommandStopActor(v2::CommandStopActor {
238
- actor_id: stop.actor_id,
239
- generation: stop.generation,
240
- })
241
- }
242
- },
243
- })
244
- .collect(),
245
- ),
246
- v3::ToClient::ToClientAckEvents(ack) => {
247
- v2::ToClient::ToClientAckEvents(v2::ToClientAckEvents {
248
- last_event_idx: ack.last_event_idx,
249
- })
250
- }
251
- v3::ToClient::ToClientKvResponse(resp) => {
252
- v2::ToClient::ToClientKvResponse(v2::ToClientKvResponse {
253
- request_id: resp.request_id,
254
- data: convert_kv_response_data_v3_to_v2(resp.data),
255
- })
256
- }
257
- v3::ToClient::ToClientTunnelMessage(msg) => {
258
- // Encode v3 message_id into v2's UUIDs
259
- // v3: gateway_id (4) + request_id (4) + message_index (2) = 10 bytes
260
- let mut data = [0u8; 10];
261
- data[..4].copy_from_slice(&msg.message_id.gateway_id);
262
- data[4..8].copy_from_slice(&msg.message_id.request_id);
263
- data[8..10].copy_from_slice(&msg.message_id.message_index.to_le_bytes());
264
-
265
- let message_id = encode_bytes_to_uuid(&data);
266
-
267
- // request_id contains gateway_id + request_id for backwards compatibility
268
- let mut request_id_data = [0u8; 8];
269
- request_id_data[..4].copy_from_slice(&msg.message_id.gateway_id);
270
- request_id_data[4..8].copy_from_slice(&msg.message_id.request_id);
271
- let request_id = encode_bytes_to_uuid(&request_id_data);
272
-
273
- v2::ToClient::ToClientTunnelMessage(v2::ToClientTunnelMessage {
274
- request_id,
275
- message_id,
276
- message_kind: convert_to_client_tunnel_message_kind_v3_to_v2(
277
- msg.message_kind,
278
- &msg.message_id,
279
- )?,
280
- gateway_reply_to: None,
281
- })
282
- }
283
- };
284
-
285
- Ok(ToClient::V2(inner))
286
- } else {
287
- bail!("unexpected version");
288
- }
289
- }
290
-
291
- fn v2_to_v1(self) -> Result<Self> {
292
- if let ToClient::V2(x) = self {
293
- let inner = match x {
294
- v2::ToClient::ToClientInit(init) => v1::ToClient::ToClientInit(v1::ToClientInit {
295
- runner_id: init.runner_id,
296
- last_event_idx: init.last_event_idx,
297
- metadata: v1::ProtocolMetadata {
298
- runner_lost_threshold: init.metadata.runner_lost_threshold,
299
- },
300
- }),
301
- v2::ToClient::ToClientClose => v1::ToClient::ToClientClose,
302
- v2::ToClient::ToClientCommands(commands) => v1::ToClient::ToClientCommands(
303
- commands
304
- .into_iter()
305
- .map(|cmd| v1::CommandWrapper {
306
- index: cmd.index,
307
- inner: match cmd.inner {
308
- v2::Command::CommandStartActor(start) => {
309
- v1::Command::CommandStartActor(v1::CommandStartActor {
310
- actor_id: start.actor_id,
311
- generation: start.generation,
312
- config: v1::ActorConfig {
313
- name: start.config.name,
314
- key: start.config.key,
315
- create_ts: start.config.create_ts,
316
- input: start.config.input,
317
- },
318
- })
319
- }
320
- v2::Command::CommandStopActor(stop) => {
321
- v1::Command::CommandStopActor(v1::CommandStopActor {
322
- actor_id: stop.actor_id,
323
- generation: stop.generation,
324
- })
325
- }
326
- },
327
- })
328
- .collect(),
329
- ),
330
- v2::ToClient::ToClientAckEvents(ack) => {
331
- v1::ToClient::ToClientAckEvents(v1::ToClientAckEvents {
332
- last_event_idx: ack.last_event_idx,
333
- })
334
- }
335
- v2::ToClient::ToClientKvResponse(resp) => {
336
- v1::ToClient::ToClientKvResponse(v1::ToClientKvResponse {
337
- request_id: resp.request_id,
338
- data: convert_kv_response_data_v2_to_v1(resp.data),
339
- })
340
- }
341
- v2::ToClient::ToClientTunnelMessage(msg) => {
342
- v1::ToClient::ToClientTunnelMessage(v1::ToClientTunnelMessage {
343
- request_id: msg.request_id,
344
- message_id: msg.message_id,
345
- message_kind: convert_to_client_tunnel_message_kind_v2_to_v1(
346
- msg.message_kind,
347
- )?,
348
- gateway_reply_to: msg.gateway_reply_to,
349
- })
350
- }
351
- };
352
-
353
- Ok(ToClient::V1(inner))
354
- } else {
355
- bail!("unexpected version");
356
- }
357
- }
358
- }
359
-
360
- pub enum ToServer {
361
- V1(v1::ToServer),
362
- V2(v2::ToServer),
363
- V3(v3::ToServer),
364
- }
365
-
366
- impl OwnedVersionedData for ToServer {
367
- type Latest = v3::ToServer;
368
-
369
- fn wrap_latest(latest: v3::ToServer) -> Self {
370
- ToServer::V3(latest)
371
- }
372
-
373
- fn unwrap_latest(self) -> Result<Self::Latest> {
374
- if let ToServer::V3(data) = self {
375
- Ok(data)
376
- } else {
377
- bail!("version not latest");
378
- }
379
- }
380
-
381
- fn deserialize_version(payload: &[u8], version: u16) -> Result<Self> {
382
- match version {
383
- 1 => Ok(ToServer::V1(serde_bare::from_slice(payload)?)),
384
- 2 => Ok(ToServer::V2(serde_bare::from_slice(payload)?)),
385
- 3 => Ok(ToServer::V3(serde_bare::from_slice(payload)?)),
386
- _ => bail!("invalid version: {version}"),
387
- }
388
- }
389
-
390
- fn serialize_version(self, _version: u16) -> Result<Vec<u8>> {
391
- match self {
392
- ToServer::V1(data) => serde_bare::to_vec(&data).map_err(Into::into),
393
- ToServer::V2(data) => serde_bare::to_vec(&data).map_err(Into::into),
394
- ToServer::V3(data) => serde_bare::to_vec(&data).map_err(Into::into),
395
- }
396
- }
397
-
398
- fn deserialize_converters() -> Vec<impl Fn(Self) -> Result<Self>> {
399
- vec![Self::v1_to_v2, Self::v2_to_v3]
400
- }
401
-
402
- fn serialize_converters() -> Vec<impl Fn(Self) -> Result<Self>> {
403
- vec![Self::v3_to_v2, Self::v2_to_v1]
404
- }
405
- }
406
-
407
- impl ToServer {
408
- fn v1_to_v2(self) -> Result<Self> {
409
- if let ToServer::V1(x) = self {
410
- let inner = match x {
411
- v1::ToServer::ToServerInit(init) => v2::ToServer::ToServerInit(v2::ToServerInit {
412
- name: init.name,
413
- version: init.version,
414
- total_slots: init.total_slots,
415
- last_command_idx: init.last_command_idx,
416
- prepopulate_actor_names: init.prepopulate_actor_names.map(|map| {
417
- map.into_iter()
418
- .map(|(k, v)| {
419
- (
420
- k,
421
- v2::ActorName {
422
- metadata: v.metadata,
423
- },
424
- )
425
- })
426
- .collect()
427
- }),
428
- metadata: init.metadata,
429
- }),
430
- v1::ToServer::ToServerEvents(events) => v2::ToServer::ToServerEvents(
431
- events
432
- .into_iter()
433
- .map(|event| v2::EventWrapper {
434
- index: event.index,
435
- inner: convert_event_v1_to_v2(event.inner),
436
- })
437
- .collect(),
438
- ),
439
- v1::ToServer::ToServerAckCommands(ack) => {
440
- v2::ToServer::ToServerAckCommands(v2::ToServerAckCommands {
441
- last_command_idx: ack.last_command_idx,
442
- })
443
- }
444
- v1::ToServer::ToServerStopping => v2::ToServer::ToServerStopping,
445
- v1::ToServer::ToServerPing(ping) => {
446
- v2::ToServer::ToServerPing(v2::ToServerPing { ts: ping.ts })
447
- }
448
- v1::ToServer::ToServerKvRequest(req) => {
449
- v2::ToServer::ToServerKvRequest(v2::ToServerKvRequest {
450
- actor_id: req.actor_id,
451
- request_id: req.request_id,
452
- data: convert_kv_request_data_v1_to_v2(req.data),
453
- })
454
- }
455
- v1::ToServer::ToServerTunnelMessage(msg) => {
456
- v2::ToServer::ToServerTunnelMessage(v2::ToServerTunnelMessage {
457
- request_id: msg.request_id,
458
- message_id: msg.message_id,
459
- message_kind: convert_to_server_tunnel_message_kind_v1_to_v2(
460
- msg.message_kind,
461
- ),
462
- })
463
- }
464
- };
465
-
466
- Ok(ToServer::V2(inner))
467
- } else {
468
- bail!("unexpected version");
469
- }
470
- }
471
-
472
- fn v2_to_v3(self) -> Result<Self> {
473
- if let ToServer::V2(x) = self {
474
- let inner = match x {
475
- v2::ToServer::ToServerInit(init) => v3::ToServer::ToServerInit(v3::ToServerInit {
476
- name: init.name,
477
- version: init.version,
478
- total_slots: init.total_slots,
479
- last_command_idx: init.last_command_idx,
480
- prepopulate_actor_names: init.prepopulate_actor_names.map(|map| {
481
- map.into_iter()
482
- .map(|(k, v)| {
483
- (
484
- k,
485
- v3::ActorName {
486
- metadata: v.metadata,
487
- },
488
- )
489
- })
490
- .collect()
491
- }),
492
- metadata: init.metadata,
493
- }),
494
- v2::ToServer::ToServerEvents(events) => v3::ToServer::ToServerEvents(
495
- events
496
- .into_iter()
497
- .map(|event| v3::EventWrapper {
498
- index: event.index,
499
- inner: convert_event_v2_to_v3(event.inner),
500
- })
501
- .collect(),
502
- ),
503
- v2::ToServer::ToServerAckCommands(ack) => {
504
- v3::ToServer::ToServerAckCommands(v3::ToServerAckCommands {
505
- last_command_idx: ack.last_command_idx,
506
- })
507
- }
508
- v2::ToServer::ToServerStopping => v3::ToServer::ToServerStopping,
509
- v2::ToServer::ToServerPing(ping) => {
510
- v3::ToServer::ToServerPing(v3::ToServerPing { ts: ping.ts })
511
- }
512
- v2::ToServer::ToServerKvRequest(req) => {
513
- v3::ToServer::ToServerKvRequest(v3::ToServerKvRequest {
514
- actor_id: req.actor_id,
515
- request_id: req.request_id,
516
- data: convert_kv_request_data_v2_to_v3(req.data),
517
- })
518
- }
519
- v2::ToServer::ToServerTunnelMessage(msg) => {
520
- // Extract v3 message_id from v2's UUIDs
521
- // v2.message_id (UUID) contains: gateway_id (4) + request_id (4) + message_index (2) = 10 bytes
522
- let decoded = decode_bytes_from_uuid(&msg.request_id);
523
-
524
- let mut gateway_id = [0u8; 4];
525
- gateway_id.copy_from_slice(&decoded[..4]);
526
- let mut request_id = [0u8; 4];
527
- request_id.copy_from_slice(&decoded[4..8]);
528
- let message_index = u16::from_le_bytes([decoded[8], decoded[9]]);
529
-
530
- v3::ToServer::ToServerTunnelMessage(v3::ToServerTunnelMessage {
531
- message_id: v3::MessageId {
532
- gateway_id,
533
- request_id,
534
- message_index,
535
- },
536
- message_kind: convert_to_server_tunnel_message_kind_v2_to_v3(
537
- msg.message_kind,
538
- ),
539
- })
540
- }
541
- };
542
-
543
- Ok(ToServer::V3(inner))
544
- } else {
545
- bail!("unexpected version");
546
- }
547
- }
548
-
549
- fn v3_to_v2(self) -> Result<Self> {
550
- if let ToServer::V3(x) = self {
551
- let inner = match x {
552
- v3::ToServer::ToServerInit(init) => v2::ToServer::ToServerInit(v2::ToServerInit {
553
- name: init.name,
554
- version: init.version,
555
- total_slots: init.total_slots,
556
- last_command_idx: init.last_command_idx,
557
- prepopulate_actor_names: init.prepopulate_actor_names.map(|map| {
558
- map.into_iter()
559
- .map(|(k, v)| {
560
- (
561
- k,
562
- v2::ActorName {
563
- metadata: v.metadata,
564
- },
565
- )
566
- })
567
- .collect()
568
- }),
569
- metadata: init.metadata,
570
- }),
571
- v3::ToServer::ToServerEvents(events) => v2::ToServer::ToServerEvents(
572
- events
573
- .into_iter()
574
- .map(|event| v2::EventWrapper {
575
- index: event.index,
576
- inner: convert_event_v3_to_v2(event.inner),
577
- })
578
- .collect(),
579
- ),
580
- v3::ToServer::ToServerAckCommands(ack) => {
581
- v2::ToServer::ToServerAckCommands(v2::ToServerAckCommands {
582
- last_command_idx: ack.last_command_idx,
583
- })
584
- }
585
- v3::ToServer::ToServerStopping => v2::ToServer::ToServerStopping,
586
- v3::ToServer::ToServerPing(ping) => {
587
- v2::ToServer::ToServerPing(v2::ToServerPing { ts: ping.ts })
588
- }
589
- v3::ToServer::ToServerKvRequest(req) => {
590
- v2::ToServer::ToServerKvRequest(v2::ToServerKvRequest {
591
- actor_id: req.actor_id,
592
- request_id: req.request_id,
593
- data: convert_kv_request_data_v3_to_v2(req.data),
594
- })
595
- }
596
- v3::ToServer::ToServerTunnelMessage(msg) => {
597
- // Encode v3 message_id into v2's UUIDs
598
- // v3: gateway_id (4) + request_id (4) + message_index (2) = 10 bytes
599
- let mut data = [0u8; 10];
600
- data[..4].copy_from_slice(&msg.message_id.gateway_id);
601
- data[4..8].copy_from_slice(&msg.message_id.request_id);
602
- data[8..10].copy_from_slice(&msg.message_id.message_index.to_le_bytes());
603
-
604
- let message_id = encode_bytes_to_uuid(&data);
605
-
606
- // request_id contains gateway_id + request_id for backwards compatibility
607
- let mut request_id_data = [0u8; 8];
608
- request_id_data[..4].copy_from_slice(&msg.message_id.gateway_id);
609
- request_id_data[4..8].copy_from_slice(&msg.message_id.request_id);
610
- let request_id = encode_bytes_to_uuid(&request_id_data);
611
-
612
- v2::ToServer::ToServerTunnelMessage(v2::ToServerTunnelMessage {
613
- request_id,
614
- message_id,
615
- message_kind: convert_to_server_tunnel_message_kind_v3_to_v2(
616
- msg.message_kind,
617
- )?,
618
- })
619
- }
620
- };
621
-
622
- Ok(ToServer::V2(inner))
623
- } else {
624
- bail!("unexpected version");
625
- }
626
- }
627
-
628
- fn v2_to_v1(self) -> Result<Self> {
629
- if let ToServer::V2(x) = self {
630
- let inner = match x {
631
- v2::ToServer::ToServerInit(init) => v1::ToServer::ToServerInit(v1::ToServerInit {
632
- name: init.name,
633
- version: init.version,
634
- total_slots: init.total_slots,
635
- last_command_idx: init.last_command_idx,
636
- prepopulate_actor_names: init.prepopulate_actor_names.map(|map| {
637
- map.into_iter()
638
- .map(|(k, v)| {
639
- (
640
- k,
641
- v1::ActorName {
642
- metadata: v.metadata,
643
- },
644
- )
645
- })
646
- .collect()
647
- }),
648
- metadata: init.metadata,
649
- }),
650
- v2::ToServer::ToServerEvents(events) => v1::ToServer::ToServerEvents(
651
- events
652
- .into_iter()
653
- .map(|event| v1::EventWrapper {
654
- index: event.index,
655
- inner: convert_event_v2_to_v1(event.inner),
656
- })
657
- .collect(),
658
- ),
659
- v2::ToServer::ToServerAckCommands(ack) => {
660
- v1::ToServer::ToServerAckCommands(v1::ToServerAckCommands {
661
- last_command_idx: ack.last_command_idx,
662
- })
663
- }
664
- v2::ToServer::ToServerStopping => v1::ToServer::ToServerStopping,
665
- v2::ToServer::ToServerPing(ping) => {
666
- v1::ToServer::ToServerPing(v1::ToServerPing { ts: ping.ts })
667
- }
668
- v2::ToServer::ToServerKvRequest(req) => {
669
- v1::ToServer::ToServerKvRequest(v1::ToServerKvRequest {
670
- actor_id: req.actor_id,
671
- request_id: req.request_id,
672
- data: convert_kv_request_data_v2_to_v1(req.data),
673
- })
674
- }
675
- v2::ToServer::ToServerTunnelMessage(msg) => {
676
- v1::ToServer::ToServerTunnelMessage(v1::ToServerTunnelMessage {
677
- request_id: msg.request_id,
678
- message_id: msg.message_id,
679
- message_kind: convert_to_server_tunnel_message_kind_v2_to_v1(
680
- msg.message_kind,
681
- )?,
682
- })
683
- }
684
- };
685
-
686
- Ok(ToServer::V1(inner))
687
- } else {
688
- bail!("unexpected version");
689
- }
690
- }
691
- }
692
-
693
- pub enum ToRunner {
694
- // Only in v3
695
- V3(v3::ToRunner),
696
- }
697
-
698
- impl OwnedVersionedData for ToRunner {
699
- type Latest = v3::ToRunner;
700
-
701
- fn wrap_latest(latest: v3::ToRunner) -> Self {
702
- ToRunner::V3(latest)
703
- }
704
-
705
- fn unwrap_latest(self) -> Result<Self::Latest> {
706
- #[allow(irrefutable_let_patterns)]
707
- if let ToRunner::V3(data) = self {
708
- Ok(data)
709
- } else {
710
- bail!("version not latest");
711
- }
712
- }
713
-
714
- fn deserialize_version(payload: &[u8], version: u16) -> Result<Self> {
715
- match version {
716
- 1 | 2 | 3 => Ok(ToRunner::V3(serde_bare::from_slice(payload)?)),
717
- _ => bail!("invalid version: {version}"),
718
- }
719
- }
720
-
721
- fn serialize_version(self, _version: u16) -> Result<Vec<u8>> {
722
- match self {
723
- ToRunner::V3(data) => serde_bare::to_vec(&data).map_err(Into::into),
724
- }
725
- }
726
-
727
- fn deserialize_converters() -> Vec<impl Fn(Self) -> Result<Self>> {
728
- // No changes between v1 and v3
729
- vec![Ok, Ok]
730
- }
731
-
732
- fn serialize_converters() -> Vec<impl Fn(Self) -> Result<Self>> {
733
- // No changes between v1 and v3
734
- vec![Ok, Ok]
735
- }
736
- }
737
-
738
- pub enum ToGateway {
739
- // No change between v1 and v3
740
- V3(v3::ToGateway),
741
- }
742
-
743
- impl OwnedVersionedData for ToGateway {
744
- type Latest = v3::ToGateway;
745
-
746
- fn wrap_latest(latest: v3::ToGateway) -> Self {
747
- ToGateway::V3(latest)
748
- }
749
-
750
- fn unwrap_latest(self) -> Result<Self::Latest> {
751
- #[allow(irrefutable_let_patterns)]
752
- if let ToGateway::V3(data) = self {
753
- Ok(data)
754
- } else {
755
- bail!("version not latest");
756
- }
757
- }
758
-
759
- fn deserialize_version(payload: &[u8], version: u16) -> Result<Self> {
760
- match version {
761
- 1 | 2 | 3 => Ok(ToGateway::V3(serde_bare::from_slice(payload)?)),
762
- _ => bail!("invalid version: {version}"),
763
- }
764
- }
765
-
766
- fn serialize_version(self, _version: u16) -> Result<Vec<u8>> {
767
- match self {
768
- ToGateway::V3(data) => serde_bare::to_vec(&data).map_err(Into::into),
769
- }
770
- }
771
-
772
- fn deserialize_converters() -> Vec<impl Fn(Self) -> Result<Self>> {
773
- // No changes between v1 and v3
774
- vec![Ok, Ok]
775
- }
776
-
777
- fn serialize_converters() -> Vec<impl Fn(Self) -> Result<Self>> {
778
- // No changes between v1 and v3
779
- vec![Ok, Ok]
780
- }
781
- }
782
-
783
- pub enum ToServerlessServer {
784
- // No change between v1 and v3
785
- V3(v3::ToServerlessServer),
786
- }
787
-
788
- impl OwnedVersionedData for ToServerlessServer {
789
- type Latest = v3::ToServerlessServer;
790
-
791
- fn wrap_latest(latest: v3::ToServerlessServer) -> Self {
792
- ToServerlessServer::V3(latest)
793
- }
794
-
795
- fn unwrap_latest(self) -> Result<Self::Latest> {
796
- #[allow(irrefutable_let_patterns)]
797
- if let ToServerlessServer::V3(data) = self {
798
- Ok(data)
799
- } else {
800
- bail!("version not latest");
801
- }
802
- }
803
-
804
- fn deserialize_version(payload: &[u8], version: u16) -> Result<Self> {
805
- match version {
806
- 1 | 2 | 3 => Ok(ToServerlessServer::V3(serde_bare::from_slice(payload)?)),
807
- _ => bail!("invalid version: {version}"),
808
- }
809
- }
810
-
811
- fn serialize_version(self, _version: u16) -> Result<Vec<u8>> {
812
- match self {
813
- ToServerlessServer::V3(data) => serde_bare::to_vec(&data).map_err(Into::into),
814
- }
815
- }
816
-
817
- fn deserialize_converters() -> Vec<impl Fn(Self) -> Result<Self>> {
818
- // No changes between v1 and v3
819
- vec![Ok, Ok]
820
- }
821
-
822
- fn serialize_converters() -> Vec<impl Fn(Self) -> Result<Self>> {
823
- // No changes between v1 and v3
824
- vec![Ok, Ok]
825
- }
826
- }
827
-
828
- // Helper conversion functions
829
- fn convert_to_client_tunnel_message_kind_v1_to_v2(
830
- kind: v1::ToClientTunnelMessageKind,
831
- ) -> v2::ToClientTunnelMessageKind {
832
- match kind {
833
- v1::ToClientTunnelMessageKind::TunnelAck => v2::ToClientTunnelMessageKind::TunnelAck,
834
- v1::ToClientTunnelMessageKind::ToClientRequestStart(req) => {
835
- v2::ToClientTunnelMessageKind::ToClientRequestStart(v2::ToClientRequestStart {
836
- actor_id: req.actor_id,
837
- method: req.method,
838
- path: req.path,
839
- headers: req.headers,
840
- body: req.body,
841
- stream: req.stream,
842
- })
843
- }
844
- v1::ToClientTunnelMessageKind::ToClientRequestChunk(chunk) => {
845
- v2::ToClientTunnelMessageKind::ToClientRequestChunk(v2::ToClientRequestChunk {
846
- body: chunk.body,
847
- finish: chunk.finish,
848
- })
849
- }
850
- v1::ToClientTunnelMessageKind::ToClientRequestAbort => {
851
- v2::ToClientTunnelMessageKind::ToClientRequestAbort
852
- }
853
- v1::ToClientTunnelMessageKind::ToClientWebSocketOpen(ws) => {
854
- v2::ToClientTunnelMessageKind::ToClientWebSocketOpen(v2::ToClientWebSocketOpen {
855
- actor_id: ws.actor_id,
856
- path: ws.path,
857
- headers: ws.headers,
858
- })
859
- }
860
- v1::ToClientTunnelMessageKind::ToClientWebSocketMessage(msg) => {
861
- v2::ToClientTunnelMessageKind::ToClientWebSocketMessage(v2::ToClientWebSocketMessage {
862
- // Default to 0 for v1 messages (hibernation disabled by default)
863
- index: 0,
864
- data: msg.data,
865
- binary: msg.binary,
866
- })
867
- }
868
- v1::ToClientTunnelMessageKind::ToClientWebSocketClose(close) => {
869
- v2::ToClientTunnelMessageKind::ToClientWebSocketClose(v2::ToClientWebSocketClose {
870
- code: close.code,
871
- reason: close.reason,
872
- })
873
- }
874
- }
875
- }
876
-
877
- fn convert_to_client_tunnel_message_kind_v2_to_v1(
878
- kind: v2::ToClientTunnelMessageKind,
879
- ) -> Result<v1::ToClientTunnelMessageKind> {
880
- Ok(match kind {
881
- v2::ToClientTunnelMessageKind::TunnelAck => v1::ToClientTunnelMessageKind::TunnelAck,
882
- v2::ToClientTunnelMessageKind::ToClientRequestStart(req) => {
883
- v1::ToClientTunnelMessageKind::ToClientRequestStart(v1::ToClientRequestStart {
884
- actor_id: req.actor_id,
885
- method: req.method,
886
- path: req.path,
887
- headers: req.headers,
888
- body: req.body,
889
- stream: req.stream,
890
- })
891
- }
892
- v2::ToClientTunnelMessageKind::ToClientRequestChunk(chunk) => {
893
- v1::ToClientTunnelMessageKind::ToClientRequestChunk(v1::ToClientRequestChunk {
894
- body: chunk.body,
895
- finish: chunk.finish,
896
- })
897
- }
898
- v2::ToClientTunnelMessageKind::ToClientRequestAbort => {
899
- v1::ToClientTunnelMessageKind::ToClientRequestAbort
900
- }
901
- v2::ToClientTunnelMessageKind::ToClientWebSocketOpen(ws) => {
902
- v1::ToClientTunnelMessageKind::ToClientWebSocketOpen(v1::ToClientWebSocketOpen {
903
- actor_id: ws.actor_id,
904
- path: ws.path,
905
- headers: ws.headers,
906
- })
907
- }
908
- v2::ToClientTunnelMessageKind::ToClientWebSocketMessage(msg) => {
909
- v1::ToClientTunnelMessageKind::ToClientWebSocketMessage(v1::ToClientWebSocketMessage {
910
- data: msg.data,
911
- binary: msg.binary,
912
- })
913
- }
914
- v2::ToClientTunnelMessageKind::ToClientWebSocketClose(close) => {
915
- v1::ToClientTunnelMessageKind::ToClientWebSocketClose(v1::ToClientWebSocketClose {
916
- code: close.code,
917
- reason: close.reason,
918
- })
919
- }
920
- })
921
- }
922
-
923
- fn convert_to_server_tunnel_message_kind_v1_to_v2(
924
- kind: v1::ToServerTunnelMessageKind,
925
- ) -> v2::ToServerTunnelMessageKind {
926
- match kind {
927
- v1::ToServerTunnelMessageKind::TunnelAck => v2::ToServerTunnelMessageKind::TunnelAck,
928
- v1::ToServerTunnelMessageKind::ToServerResponseStart(resp) => {
929
- v2::ToServerTunnelMessageKind::ToServerResponseStart(v2::ToServerResponseStart {
930
- status: resp.status,
931
- headers: resp.headers,
932
- body: resp.body,
933
- stream: resp.stream,
934
- })
935
- }
936
- v1::ToServerTunnelMessageKind::ToServerResponseChunk(chunk) => {
937
- v2::ToServerTunnelMessageKind::ToServerResponseChunk(v2::ToServerResponseChunk {
938
- body: chunk.body,
939
- finish: chunk.finish,
940
- })
941
- }
942
- v1::ToServerTunnelMessageKind::ToServerResponseAbort => {
943
- v2::ToServerTunnelMessageKind::ToServerResponseAbort
944
- }
945
- v1::ToServerTunnelMessageKind::ToServerWebSocketOpen => {
946
- v2::ToServerTunnelMessageKind::ToServerWebSocketOpen(v2::ToServerWebSocketOpen {
947
- can_hibernate: false,
948
- last_msg_index: -1,
949
- })
950
- }
951
- v1::ToServerTunnelMessageKind::ToServerWebSocketMessage(msg) => {
952
- v2::ToServerTunnelMessageKind::ToServerWebSocketMessage(v2::ToServerWebSocketMessage {
953
- data: msg.data,
954
- binary: msg.binary,
955
- })
956
- }
957
- v1::ToServerTunnelMessageKind::ToServerWebSocketClose(close) => {
958
- v2::ToServerTunnelMessageKind::ToServerWebSocketClose(v2::ToServerWebSocketClose {
959
- code: close.code,
960
- reason: close.reason,
961
- retry: false,
962
- })
963
- }
964
- }
965
- }
966
-
967
- fn convert_to_server_tunnel_message_kind_v2_to_v1(
968
- kind: v2::ToServerTunnelMessageKind,
969
- ) -> Result<v1::ToServerTunnelMessageKind> {
970
- Ok(match kind {
971
- v2::ToServerTunnelMessageKind::TunnelAck => v1::ToServerTunnelMessageKind::TunnelAck,
972
- v2::ToServerTunnelMessageKind::ToServerResponseStart(resp) => {
973
- v1::ToServerTunnelMessageKind::ToServerResponseStart(v1::ToServerResponseStart {
974
- status: resp.status,
975
- headers: resp.headers,
976
- body: resp.body,
977
- stream: resp.stream,
978
- })
979
- }
980
- v2::ToServerTunnelMessageKind::ToServerResponseChunk(chunk) => {
981
- v1::ToServerTunnelMessageKind::ToServerResponseChunk(v1::ToServerResponseChunk {
982
- body: chunk.body,
983
- finish: chunk.finish,
984
- })
985
- }
986
- v2::ToServerTunnelMessageKind::ToServerResponseAbort => {
987
- v1::ToServerTunnelMessageKind::ToServerResponseAbort
988
- }
989
- v2::ToServerTunnelMessageKind::ToServerWebSocketOpen(_) => {
990
- v1::ToServerTunnelMessageKind::ToServerWebSocketOpen
991
- }
992
- v2::ToServerTunnelMessageKind::ToServerWebSocketMessage(msg) => {
993
- v1::ToServerTunnelMessageKind::ToServerWebSocketMessage(v1::ToServerWebSocketMessage {
994
- data: msg.data,
995
- binary: msg.binary,
996
- })
997
- }
998
- v2::ToServerTunnelMessageKind::ToServerWebSocketMessageAck(_) => {
999
- // v1 doesn't have MessageAck, this is a v2-only feature
1000
- bail!("ToServerWebSocketMessageAck is not supported in v1");
1001
- }
1002
- v2::ToServerTunnelMessageKind::ToServerWebSocketClose(close) => {
1003
- v1::ToServerTunnelMessageKind::ToServerWebSocketClose(v1::ToServerWebSocketClose {
1004
- code: close.code,
1005
- reason: close.reason,
1006
- })
1007
- }
1008
- })
1009
- }
1010
-
1011
- fn convert_event_v1_to_v2(event: v1::Event) -> v2::Event {
1012
- match event {
1013
- v1::Event::EventActorIntent(intent) => v2::Event::EventActorIntent(v2::EventActorIntent {
1014
- actor_id: intent.actor_id,
1015
- generation: intent.generation,
1016
- intent: convert_actor_intent_v1_to_v2(intent.intent),
1017
- }),
1018
- v1::Event::EventActorStateUpdate(state) => {
1019
- v2::Event::EventActorStateUpdate(v2::EventActorStateUpdate {
1020
- actor_id: state.actor_id,
1021
- generation: state.generation,
1022
- state: convert_actor_state_v1_to_v2(state.state),
1023
- })
1024
- }
1025
- v1::Event::EventActorSetAlarm(alarm) => {
1026
- v2::Event::EventActorSetAlarm(v2::EventActorSetAlarm {
1027
- actor_id: alarm.actor_id,
1028
- generation: alarm.generation,
1029
- alarm_ts: alarm.alarm_ts,
1030
- })
1031
- }
1032
- }
1033
- }
1034
-
1035
- fn convert_event_v2_to_v1(event: v2::Event) -> v1::Event {
1036
- match event {
1037
- v2::Event::EventActorIntent(intent) => v1::Event::EventActorIntent(v1::EventActorIntent {
1038
- actor_id: intent.actor_id,
1039
- generation: intent.generation,
1040
- intent: convert_actor_intent_v2_to_v1(intent.intent),
1041
- }),
1042
- v2::Event::EventActorStateUpdate(state) => {
1043
- v1::Event::EventActorStateUpdate(v1::EventActorStateUpdate {
1044
- actor_id: state.actor_id,
1045
- generation: state.generation,
1046
- state: convert_actor_state_v2_to_v1(state.state),
1047
- })
1048
- }
1049
- v2::Event::EventActorSetAlarm(alarm) => {
1050
- v1::Event::EventActorSetAlarm(v1::EventActorSetAlarm {
1051
- actor_id: alarm.actor_id,
1052
- generation: alarm.generation,
1053
- alarm_ts: alarm.alarm_ts,
1054
- })
1055
- }
1056
- }
1057
- }
1058
-
1059
- fn convert_actor_intent_v1_to_v2(intent: v1::ActorIntent) -> v2::ActorIntent {
1060
- match intent {
1061
- v1::ActorIntent::ActorIntentSleep => v2::ActorIntent::ActorIntentSleep,
1062
- v1::ActorIntent::ActorIntentStop => v2::ActorIntent::ActorIntentStop,
1063
- }
1064
- }
1065
-
1066
- fn convert_actor_intent_v2_to_v1(intent: v2::ActorIntent) -> v1::ActorIntent {
1067
- match intent {
1068
- v2::ActorIntent::ActorIntentSleep => v1::ActorIntent::ActorIntentSleep,
1069
- v2::ActorIntent::ActorIntentStop => v1::ActorIntent::ActorIntentStop,
1070
- }
1071
- }
1072
-
1073
- fn convert_actor_state_v1_to_v2(state: v1::ActorState) -> v2::ActorState {
1074
- match state {
1075
- v1::ActorState::ActorStateRunning => v2::ActorState::ActorStateRunning,
1076
- v1::ActorState::ActorStateStopped(stopped) => {
1077
- v2::ActorState::ActorStateStopped(v2::ActorStateStopped {
1078
- code: convert_stop_code_v1_to_v2(stopped.code),
1079
- message: stopped.message,
1080
- })
1081
- }
1082
- }
1083
- }
1084
-
1085
- fn convert_actor_state_v2_to_v1(state: v2::ActorState) -> v1::ActorState {
1086
- match state {
1087
- v2::ActorState::ActorStateRunning => v1::ActorState::ActorStateRunning,
1088
- v2::ActorState::ActorStateStopped(stopped) => {
1089
- v1::ActorState::ActorStateStopped(v1::ActorStateStopped {
1090
- code: convert_stop_code_v2_to_v1(stopped.code),
1091
- message: stopped.message,
1092
- })
1093
- }
1094
- }
1095
- }
1096
-
1097
- fn convert_stop_code_v1_to_v2(code: v1::StopCode) -> v2::StopCode {
1098
- match code {
1099
- v1::StopCode::Ok => v2::StopCode::Ok,
1100
- v1::StopCode::Error => v2::StopCode::Error,
1101
- }
1102
- }
1103
-
1104
- fn convert_stop_code_v2_to_v1(code: v2::StopCode) -> v1::StopCode {
1105
- match code {
1106
- v2::StopCode::Ok => v1::StopCode::Ok,
1107
- v2::StopCode::Error => v1::StopCode::Error,
1108
- }
1109
- }
1110
-
1111
- fn convert_kv_request_data_v1_to_v2(data: v1::KvRequestData) -> v2::KvRequestData {
1112
- match data {
1113
- v1::KvRequestData::KvGetRequest(req) => {
1114
- v2::KvRequestData::KvGetRequest(v2::KvGetRequest { keys: req.keys })
1115
- }
1116
- v1::KvRequestData::KvListRequest(req) => {
1117
- v2::KvRequestData::KvListRequest(v2::KvListRequest {
1118
- query: convert_kv_list_query_v1_to_v2(req.query),
1119
- reverse: req.reverse,
1120
- limit: req.limit,
1121
- })
1122
- }
1123
- v1::KvRequestData::KvPutRequest(req) => v2::KvRequestData::KvPutRequest(v2::KvPutRequest {
1124
- keys: req.keys,
1125
- values: req.values,
1126
- }),
1127
- v1::KvRequestData::KvDeleteRequest(req) => {
1128
- v2::KvRequestData::KvDeleteRequest(v2::KvDeleteRequest { keys: req.keys })
1129
- }
1130
- v1::KvRequestData::KvDropRequest => v2::KvRequestData::KvDropRequest,
1131
- }
1132
- }
1133
-
1134
- fn convert_kv_request_data_v2_to_v1(data: v2::KvRequestData) -> v1::KvRequestData {
1135
- match data {
1136
- v2::KvRequestData::KvGetRequest(req) => {
1137
- v1::KvRequestData::KvGetRequest(v1::KvGetRequest { keys: req.keys })
1138
- }
1139
- v2::KvRequestData::KvListRequest(req) => {
1140
- v1::KvRequestData::KvListRequest(v1::KvListRequest {
1141
- query: convert_kv_list_query_v2_to_v1(req.query),
1142
- reverse: req.reverse,
1143
- limit: req.limit,
1144
- })
1145
- }
1146
- v2::KvRequestData::KvPutRequest(req) => v1::KvRequestData::KvPutRequest(v1::KvPutRequest {
1147
- keys: req.keys,
1148
- values: req.values,
1149
- }),
1150
- v2::KvRequestData::KvDeleteRequest(req) => {
1151
- v1::KvRequestData::KvDeleteRequest(v1::KvDeleteRequest { keys: req.keys })
1152
- }
1153
- v2::KvRequestData::KvDropRequest => v1::KvRequestData::KvDropRequest,
1154
- }
1155
- }
1156
-
1157
- fn convert_kv_response_data_v1_to_v2(data: v1::KvResponseData) -> v2::KvResponseData {
1158
- match data {
1159
- v1::KvResponseData::KvErrorResponse(err) => {
1160
- v2::KvResponseData::KvErrorResponse(v2::KvErrorResponse {
1161
- message: err.message,
1162
- })
1163
- }
1164
- v1::KvResponseData::KvGetResponse(resp) => {
1165
- v2::KvResponseData::KvGetResponse(v2::KvGetResponse {
1166
- keys: resp.keys,
1167
- values: resp.values,
1168
- metadata: resp
1169
- .metadata
1170
- .into_iter()
1171
- .map(convert_kv_metadata_v1_to_v2)
1172
- .collect(),
1173
- })
1174
- }
1175
- v1::KvResponseData::KvListResponse(resp) => {
1176
- v2::KvResponseData::KvListResponse(v2::KvListResponse {
1177
- keys: resp.keys,
1178
- values: resp.values,
1179
- metadata: resp
1180
- .metadata
1181
- .into_iter()
1182
- .map(convert_kv_metadata_v1_to_v2)
1183
- .collect(),
1184
- })
1185
- }
1186
- v1::KvResponseData::KvPutResponse => v2::KvResponseData::KvPutResponse,
1187
- v1::KvResponseData::KvDeleteResponse => v2::KvResponseData::KvDeleteResponse,
1188
- v1::KvResponseData::KvDropResponse => v2::KvResponseData::KvDropResponse,
1189
- }
1190
- }
1191
-
1192
- fn convert_kv_response_data_v2_to_v1(data: v2::KvResponseData) -> v1::KvResponseData {
1193
- match data {
1194
- v2::KvResponseData::KvErrorResponse(err) => {
1195
- v1::KvResponseData::KvErrorResponse(v1::KvErrorResponse {
1196
- message: err.message,
1197
- })
1198
- }
1199
- v2::KvResponseData::KvGetResponse(resp) => {
1200
- v1::KvResponseData::KvGetResponse(v1::KvGetResponse {
1201
- keys: resp.keys,
1202
- values: resp.values,
1203
- metadata: resp
1204
- .metadata
1205
- .into_iter()
1206
- .map(convert_kv_metadata_v2_to_v1)
1207
- .collect(),
1208
- })
1209
- }
1210
- v2::KvResponseData::KvListResponse(resp) => {
1211
- v1::KvResponseData::KvListResponse(v1::KvListResponse {
1212
- keys: resp.keys,
1213
- values: resp.values,
1214
- metadata: resp
1215
- .metadata
1216
- .into_iter()
1217
- .map(convert_kv_metadata_v2_to_v1)
1218
- .collect(),
1219
- })
1220
- }
1221
- v2::KvResponseData::KvPutResponse => v1::KvResponseData::KvPutResponse,
1222
- v2::KvResponseData::KvDeleteResponse => v1::KvResponseData::KvDeleteResponse,
1223
- v2::KvResponseData::KvDropResponse => v1::KvResponseData::KvDropResponse,
1224
- }
1225
- }
1226
-
1227
- fn convert_kv_list_query_v1_to_v2(query: v1::KvListQuery) -> v2::KvListQuery {
1228
- match query {
1229
- v1::KvListQuery::KvListAllQuery => v2::KvListQuery::KvListAllQuery,
1230
- v1::KvListQuery::KvListRangeQuery(range) => {
1231
- v2::KvListQuery::KvListRangeQuery(v2::KvListRangeQuery {
1232
- start: range.start,
1233
- end: range.end,
1234
- exclusive: range.exclusive,
1235
- })
1236
- }
1237
- v1::KvListQuery::KvListPrefixQuery(prefix) => {
1238
- v2::KvListQuery::KvListPrefixQuery(v2::KvListPrefixQuery { key: prefix.key })
1239
- }
1240
- }
1241
- }
1242
-
1243
- fn convert_kv_list_query_v2_to_v1(query: v2::KvListQuery) -> v1::KvListQuery {
1244
- match query {
1245
- v2::KvListQuery::KvListAllQuery => v1::KvListQuery::KvListAllQuery,
1246
- v2::KvListQuery::KvListRangeQuery(range) => {
1247
- v1::KvListQuery::KvListRangeQuery(v1::KvListRangeQuery {
1248
- start: range.start,
1249
- end: range.end,
1250
- exclusive: range.exclusive,
1251
- })
1252
- }
1253
- v2::KvListQuery::KvListPrefixQuery(prefix) => {
1254
- v1::KvListQuery::KvListPrefixQuery(v1::KvListPrefixQuery { key: prefix.key })
1255
- }
1256
- }
1257
- }
1258
-
1259
- fn convert_kv_metadata_v1_to_v2(metadata: v1::KvMetadata) -> v2::KvMetadata {
1260
- v2::KvMetadata {
1261
- version: metadata.version,
1262
- create_ts: metadata.create_ts,
1263
- }
1264
- }
1265
-
1266
- fn convert_kv_metadata_v2_to_v1(metadata: v2::KvMetadata) -> v1::KvMetadata {
1267
- v1::KvMetadata {
1268
- version: metadata.version,
1269
- create_ts: metadata.create_ts,
1270
- }
1271
- }
1272
-
1273
- fn convert_to_client_tunnel_message_kind_v2_to_v3(
1274
- kind: v2::ToClientTunnelMessageKind,
1275
- ) -> v3::ToClientTunnelMessageKind {
1276
- match kind {
1277
- v2::ToClientTunnelMessageKind::ToClientRequestStart(req) => {
1278
- v3::ToClientTunnelMessageKind::ToClientRequestStart(v3::ToClientRequestStart {
1279
- actor_id: req.actor_id,
1280
- method: req.method,
1281
- path: req.path,
1282
- headers: req.headers,
1283
- body: req.body,
1284
- stream: req.stream,
1285
- })
1286
- }
1287
- v2::ToClientTunnelMessageKind::ToClientRequestChunk(chunk) => {
1288
- v3::ToClientTunnelMessageKind::ToClientRequestChunk(v3::ToClientRequestChunk {
1289
- body: chunk.body,
1290
- finish: chunk.finish,
1291
- })
1292
- }
1293
- v2::ToClientTunnelMessageKind::ToClientRequestAbort => {
1294
- v3::ToClientTunnelMessageKind::ToClientRequestAbort
1295
- }
1296
- v2::ToClientTunnelMessageKind::ToClientWebSocketOpen(ws) => {
1297
- v3::ToClientTunnelMessageKind::ToClientWebSocketOpen(v3::ToClientWebSocketOpen {
1298
- actor_id: ws.actor_id,
1299
- path: ws.path,
1300
- headers: ws.headers,
1301
- })
1302
- }
1303
- v2::ToClientTunnelMessageKind::ToClientWebSocketMessage(msg) => {
1304
- v3::ToClientTunnelMessageKind::ToClientWebSocketMessage(v3::ToClientWebSocketMessage {
1305
- data: msg.data,
1306
- binary: msg.binary,
1307
- })
1308
- }
1309
- v2::ToClientTunnelMessageKind::ToClientWebSocketClose(close) => {
1310
- v3::ToClientTunnelMessageKind::ToClientWebSocketClose(v3::ToClientWebSocketClose {
1311
- code: close.code,
1312
- reason: close.reason,
1313
- })
1314
- }
1315
- // DeprecatedTunnelAck is kept for backwards compatibility
1316
- v2::ToClientTunnelMessageKind::TunnelAck => {
1317
- v3::ToClientTunnelMessageKind::DeprecatedTunnelAck
1318
- }
1319
- }
1320
- }
1321
-
1322
- fn convert_to_client_tunnel_message_kind_v3_to_v2(
1323
- kind: v3::ToClientTunnelMessageKind,
1324
- message_id: &v3::MessageId,
1325
- ) -> Result<v2::ToClientTunnelMessageKind> {
1326
- Ok(match kind {
1327
- v3::ToClientTunnelMessageKind::ToClientRequestStart(req) => {
1328
- v2::ToClientTunnelMessageKind::ToClientRequestStart(v2::ToClientRequestStart {
1329
- actor_id: req.actor_id,
1330
- method: req.method,
1331
- path: req.path,
1332
- headers: req.headers,
1333
- body: req.body,
1334
- stream: req.stream,
1335
- })
1336
- }
1337
- v3::ToClientTunnelMessageKind::ToClientRequestChunk(chunk) => {
1338
- v2::ToClientTunnelMessageKind::ToClientRequestChunk(v2::ToClientRequestChunk {
1339
- body: chunk.body,
1340
- finish: chunk.finish,
1341
- })
1342
- }
1343
- v3::ToClientTunnelMessageKind::ToClientRequestAbort => {
1344
- v2::ToClientTunnelMessageKind::ToClientRequestAbort
1345
- }
1346
- v3::ToClientTunnelMessageKind::ToClientWebSocketOpen(ws) => {
1347
- v2::ToClientTunnelMessageKind::ToClientWebSocketOpen(v2::ToClientWebSocketOpen {
1348
- actor_id: ws.actor_id,
1349
- path: ws.path,
1350
- headers: ws.headers,
1351
- })
1352
- }
1353
- v3::ToClientTunnelMessageKind::ToClientWebSocketMessage(msg) => {
1354
- v2::ToClientTunnelMessageKind::ToClientWebSocketMessage(v2::ToClientWebSocketMessage {
1355
- data: msg.data,
1356
- binary: msg.binary,
1357
- index: message_id.message_index,
1358
- })
1359
- }
1360
- v3::ToClientTunnelMessageKind::ToClientWebSocketClose(close) => {
1361
- v2::ToClientTunnelMessageKind::ToClientWebSocketClose(v2::ToClientWebSocketClose {
1362
- code: close.code,
1363
- reason: close.reason,
1364
- })
1365
- }
1366
- v3::ToClientTunnelMessageKind::DeprecatedTunnelAck => {
1367
- v2::ToClientTunnelMessageKind::TunnelAck
1368
- }
1369
- })
1370
- }
1371
-
1372
- fn convert_to_server_tunnel_message_kind_v2_to_v3(
1373
- kind: v2::ToServerTunnelMessageKind,
1374
- ) -> v3::ToServerTunnelMessageKind {
1375
- match kind {
1376
- v2::ToServerTunnelMessageKind::ToServerResponseStart(resp) => {
1377
- v3::ToServerTunnelMessageKind::ToServerResponseStart(v3::ToServerResponseStart {
1378
- status: resp.status,
1379
- headers: resp.headers,
1380
- body: resp.body,
1381
- stream: resp.stream,
1382
- })
1383
- }
1384
- v2::ToServerTunnelMessageKind::ToServerResponseChunk(chunk) => {
1385
- v3::ToServerTunnelMessageKind::ToServerResponseChunk(v3::ToServerResponseChunk {
1386
- body: chunk.body,
1387
- finish: chunk.finish,
1388
- })
1389
- }
1390
- v2::ToServerTunnelMessageKind::ToServerResponseAbort => {
1391
- v3::ToServerTunnelMessageKind::ToServerResponseAbort
1392
- }
1393
- v2::ToServerTunnelMessageKind::ToServerWebSocketOpen(open) => {
1394
- v3::ToServerTunnelMessageKind::ToServerWebSocketOpen(v3::ToServerWebSocketOpen {
1395
- can_hibernate: open.can_hibernate,
1396
- })
1397
- }
1398
- v2::ToServerTunnelMessageKind::ToServerWebSocketMessage(msg) => {
1399
- v3::ToServerTunnelMessageKind::ToServerWebSocketMessage(v3::ToServerWebSocketMessage {
1400
- data: msg.data,
1401
- binary: msg.binary,
1402
- })
1403
- }
1404
- v2::ToServerTunnelMessageKind::ToServerWebSocketMessageAck(ack) => {
1405
- v3::ToServerTunnelMessageKind::ToServerWebSocketMessageAck(
1406
- v3::ToServerWebSocketMessageAck { index: ack.index },
1407
- )
1408
- }
1409
- v2::ToServerTunnelMessageKind::ToServerWebSocketClose(close) => {
1410
- v3::ToServerTunnelMessageKind::ToServerWebSocketClose(v3::ToServerWebSocketClose {
1411
- code: close.code,
1412
- reason: close.reason,
1413
- hibernate: close.retry,
1414
- })
1415
- }
1416
- // DeprecatedTunnelAck is kept for backwards compatibility
1417
- v2::ToServerTunnelMessageKind::TunnelAck => {
1418
- v3::ToServerTunnelMessageKind::DeprecatedTunnelAck
1419
- }
1420
- }
1421
- }
1422
-
1423
- fn convert_to_server_tunnel_message_kind_v3_to_v2(
1424
- kind: v3::ToServerTunnelMessageKind,
1425
- ) -> Result<v2::ToServerTunnelMessageKind> {
1426
- Ok(match kind {
1427
- v3::ToServerTunnelMessageKind::ToServerResponseStart(resp) => {
1428
- v2::ToServerTunnelMessageKind::ToServerResponseStart(v2::ToServerResponseStart {
1429
- status: resp.status,
1430
- headers: resp.headers,
1431
- body: resp.body,
1432
- stream: resp.stream,
1433
- })
1434
- }
1435
- v3::ToServerTunnelMessageKind::ToServerResponseChunk(chunk) => {
1436
- v2::ToServerTunnelMessageKind::ToServerResponseChunk(v2::ToServerResponseChunk {
1437
- body: chunk.body,
1438
- finish: chunk.finish,
1439
- })
1440
- }
1441
- v3::ToServerTunnelMessageKind::ToServerResponseAbort => {
1442
- v2::ToServerTunnelMessageKind::ToServerResponseAbort
1443
- }
1444
- v3::ToServerTunnelMessageKind::ToServerWebSocketOpen(open) => {
1445
- v2::ToServerTunnelMessageKind::ToServerWebSocketOpen(v2::ToServerWebSocketOpen {
1446
- can_hibernate: open.can_hibernate,
1447
- last_msg_index: -1,
1448
- })
1449
- }
1450
- v3::ToServerTunnelMessageKind::ToServerWebSocketMessage(msg) => {
1451
- v2::ToServerTunnelMessageKind::ToServerWebSocketMessage(v2::ToServerWebSocketMessage {
1452
- data: msg.data,
1453
- binary: msg.binary,
1454
- })
1455
- }
1456
- v3::ToServerTunnelMessageKind::ToServerWebSocketMessageAck(ack) => {
1457
- v2::ToServerTunnelMessageKind::ToServerWebSocketMessageAck(
1458
- v2::ToServerWebSocketMessageAck { index: ack.index },
1459
- )
1460
- }
1461
- v3::ToServerTunnelMessageKind::ToServerWebSocketClose(close) => {
1462
- v2::ToServerTunnelMessageKind::ToServerWebSocketClose(v2::ToServerWebSocketClose {
1463
- code: close.code,
1464
- reason: close.reason,
1465
- retry: close.hibernate,
1466
- })
1467
- }
1468
- v3::ToServerTunnelMessageKind::DeprecatedTunnelAck => {
1469
- v2::ToServerTunnelMessageKind::TunnelAck
1470
- }
1471
- })
1472
- }
1473
-
1474
- fn convert_event_v2_to_v3(event: v2::Event) -> v3::Event {
1475
- match event {
1476
- v2::Event::EventActorIntent(intent) => v3::Event::EventActorIntent(v3::EventActorIntent {
1477
- actor_id: intent.actor_id,
1478
- generation: intent.generation,
1479
- intent: convert_actor_intent_v2_to_v3(intent.intent),
1480
- }),
1481
- v2::Event::EventActorStateUpdate(state) => {
1482
- v3::Event::EventActorStateUpdate(v3::EventActorStateUpdate {
1483
- actor_id: state.actor_id,
1484
- generation: state.generation,
1485
- state: convert_actor_state_v2_to_v3(state.state),
1486
- })
1487
- }
1488
- v2::Event::EventActorSetAlarm(alarm) => {
1489
- v3::Event::EventActorSetAlarm(v3::EventActorSetAlarm {
1490
- actor_id: alarm.actor_id,
1491
- generation: alarm.generation,
1492
- alarm_ts: alarm.alarm_ts,
1493
- })
1494
- }
1495
- }
1496
- }
1497
-
1498
- fn convert_event_v3_to_v2(event: v3::Event) -> v2::Event {
1499
- match event {
1500
- v3::Event::EventActorIntent(intent) => v2::Event::EventActorIntent(v2::EventActorIntent {
1501
- actor_id: intent.actor_id,
1502
- generation: intent.generation,
1503
- intent: convert_actor_intent_v3_to_v2(intent.intent),
1504
- }),
1505
- v3::Event::EventActorStateUpdate(state) => {
1506
- v2::Event::EventActorStateUpdate(v2::EventActorStateUpdate {
1507
- actor_id: state.actor_id,
1508
- generation: state.generation,
1509
- state: convert_actor_state_v3_to_v2(state.state),
1510
- })
1511
- }
1512
- v3::Event::EventActorSetAlarm(alarm) => {
1513
- v2::Event::EventActorSetAlarm(v2::EventActorSetAlarm {
1514
- actor_id: alarm.actor_id,
1515
- generation: alarm.generation,
1516
- alarm_ts: alarm.alarm_ts,
1517
- })
1518
- }
1519
- }
1520
- }
1521
-
1522
- fn convert_actor_intent_v2_to_v3(intent: v2::ActorIntent) -> v3::ActorIntent {
1523
- match intent {
1524
- v2::ActorIntent::ActorIntentSleep => v3::ActorIntent::ActorIntentSleep,
1525
- v2::ActorIntent::ActorIntentStop => v3::ActorIntent::ActorIntentStop,
1526
- }
1527
- }
1528
-
1529
- fn convert_actor_intent_v3_to_v2(intent: v3::ActorIntent) -> v2::ActorIntent {
1530
- match intent {
1531
- v3::ActorIntent::ActorIntentSleep => v2::ActorIntent::ActorIntentSleep,
1532
- v3::ActorIntent::ActorIntentStop => v2::ActorIntent::ActorIntentStop,
1533
- }
1534
- }
1535
-
1536
- fn convert_actor_state_v2_to_v3(state: v2::ActorState) -> v3::ActorState {
1537
- match state {
1538
- v2::ActorState::ActorStateRunning => v3::ActorState::ActorStateRunning,
1539
- v2::ActorState::ActorStateStopped(stopped) => {
1540
- v3::ActorState::ActorStateStopped(v3::ActorStateStopped {
1541
- code: convert_stop_code_v2_to_v3(stopped.code),
1542
- message: stopped.message,
1543
- })
1544
- }
1545
- }
1546
- }
1547
-
1548
- fn convert_actor_state_v3_to_v2(state: v3::ActorState) -> v2::ActorState {
1549
- match state {
1550
- v3::ActorState::ActorStateRunning => v2::ActorState::ActorStateRunning,
1551
- v3::ActorState::ActorStateStopped(stopped) => {
1552
- v2::ActorState::ActorStateStopped(v2::ActorStateStopped {
1553
- code: convert_stop_code_v3_to_v2(stopped.code),
1554
- message: stopped.message,
1555
- })
1556
- }
1557
- }
1558
- }
1559
-
1560
- fn convert_stop_code_v2_to_v3(code: v2::StopCode) -> v3::StopCode {
1561
- match code {
1562
- v2::StopCode::Ok => v3::StopCode::Ok,
1563
- v2::StopCode::Error => v3::StopCode::Error,
1564
- }
1565
- }
1566
-
1567
- fn convert_stop_code_v3_to_v2(code: v3::StopCode) -> v2::StopCode {
1568
- match code {
1569
- v3::StopCode::Ok => v2::StopCode::Ok,
1570
- v3::StopCode::Error => v2::StopCode::Error,
1571
- }
1572
- }
1573
-
1574
- fn convert_kv_request_data_v2_to_v3(data: v2::KvRequestData) -> v3::KvRequestData {
1575
- match data {
1576
- v2::KvRequestData::KvGetRequest(req) => {
1577
- v3::KvRequestData::KvGetRequest(v3::KvGetRequest { keys: req.keys })
1578
- }
1579
- v2::KvRequestData::KvListRequest(req) => {
1580
- v3::KvRequestData::KvListRequest(v3::KvListRequest {
1581
- query: convert_kv_list_query_v2_to_v3(req.query),
1582
- reverse: req.reverse,
1583
- limit: req.limit,
1584
- })
1585
- }
1586
- v2::KvRequestData::KvPutRequest(req) => v3::KvRequestData::KvPutRequest(v3::KvPutRequest {
1587
- keys: req.keys,
1588
- values: req.values,
1589
- }),
1590
- v2::KvRequestData::KvDeleteRequest(req) => {
1591
- v3::KvRequestData::KvDeleteRequest(v3::KvDeleteRequest { keys: req.keys })
1592
- }
1593
- v2::KvRequestData::KvDropRequest => v3::KvRequestData::KvDropRequest,
1594
- }
1595
- }
1596
-
1597
- fn convert_kv_request_data_v3_to_v2(data: v3::KvRequestData) -> v2::KvRequestData {
1598
- match data {
1599
- v3::KvRequestData::KvGetRequest(req) => {
1600
- v2::KvRequestData::KvGetRequest(v2::KvGetRequest { keys: req.keys })
1601
- }
1602
- v3::KvRequestData::KvListRequest(req) => {
1603
- v2::KvRequestData::KvListRequest(v2::KvListRequest {
1604
- query: convert_kv_list_query_v3_to_v2(req.query),
1605
- reverse: req.reverse,
1606
- limit: req.limit,
1607
- })
1608
- }
1609
- v3::KvRequestData::KvPutRequest(req) => v2::KvRequestData::KvPutRequest(v2::KvPutRequest {
1610
- keys: req.keys,
1611
- values: req.values,
1612
- }),
1613
- v3::KvRequestData::KvDeleteRequest(req) => {
1614
- v2::KvRequestData::KvDeleteRequest(v2::KvDeleteRequest { keys: req.keys })
1615
- }
1616
- v3::KvRequestData::KvDropRequest => v2::KvRequestData::KvDropRequest,
1617
- }
1618
- }
1619
-
1620
- fn convert_kv_response_data_v2_to_v3(data: v2::KvResponseData) -> v3::KvResponseData {
1621
- match data {
1622
- v2::KvResponseData::KvErrorResponse(err) => {
1623
- v3::KvResponseData::KvErrorResponse(v3::KvErrorResponse {
1624
- message: err.message,
1625
- })
1626
- }
1627
- v2::KvResponseData::KvGetResponse(resp) => {
1628
- v3::KvResponseData::KvGetResponse(v3::KvGetResponse {
1629
- keys: resp.keys,
1630
- values: resp.values,
1631
- metadata: resp
1632
- .metadata
1633
- .into_iter()
1634
- .map(convert_kv_metadata_v2_to_v3)
1635
- .collect(),
1636
- })
1637
- }
1638
- v2::KvResponseData::KvListResponse(resp) => {
1639
- v3::KvResponseData::KvListResponse(v3::KvListResponse {
1640
- keys: resp.keys,
1641
- values: resp.values,
1642
- metadata: resp
1643
- .metadata
1644
- .into_iter()
1645
- .map(convert_kv_metadata_v2_to_v3)
1646
- .collect(),
1647
- })
1648
- }
1649
- v2::KvResponseData::KvPutResponse => v3::KvResponseData::KvPutResponse,
1650
- v2::KvResponseData::KvDeleteResponse => v3::KvResponseData::KvDeleteResponse,
1651
- v2::KvResponseData::KvDropResponse => v3::KvResponseData::KvDropResponse,
1652
- }
1653
- }
1654
-
1655
- fn convert_kv_response_data_v3_to_v2(data: v3::KvResponseData) -> v2::KvResponseData {
1656
- match data {
1657
- v3::KvResponseData::KvErrorResponse(err) => {
1658
- v2::KvResponseData::KvErrorResponse(v2::KvErrorResponse {
1659
- message: err.message,
1660
- })
1661
- }
1662
- v3::KvResponseData::KvGetResponse(resp) => {
1663
- v2::KvResponseData::KvGetResponse(v2::KvGetResponse {
1664
- keys: resp.keys,
1665
- values: resp.values,
1666
- metadata: resp
1667
- .metadata
1668
- .into_iter()
1669
- .map(convert_kv_metadata_v3_to_v2)
1670
- .collect(),
1671
- })
1672
- }
1673
- v3::KvResponseData::KvListResponse(resp) => {
1674
- v2::KvResponseData::KvListResponse(v2::KvListResponse {
1675
- keys: resp.keys,
1676
- values: resp.values,
1677
- metadata: resp
1678
- .metadata
1679
- .into_iter()
1680
- .map(convert_kv_metadata_v3_to_v2)
1681
- .collect(),
1682
- })
1683
- }
1684
- v3::KvResponseData::KvPutResponse => v2::KvResponseData::KvPutResponse,
1685
- v3::KvResponseData::KvDeleteResponse => v2::KvResponseData::KvDeleteResponse,
1686
- v3::KvResponseData::KvDropResponse => v2::KvResponseData::KvDropResponse,
1687
- }
1688
- }
1689
-
1690
- fn convert_kv_list_query_v2_to_v3(query: v2::KvListQuery) -> v3::KvListQuery {
1691
- match query {
1692
- v2::KvListQuery::KvListAllQuery => v3::KvListQuery::KvListAllQuery,
1693
- v2::KvListQuery::KvListRangeQuery(range) => {
1694
- v3::KvListQuery::KvListRangeQuery(v3::KvListRangeQuery {
1695
- start: range.start,
1696
- end: range.end,
1697
- exclusive: range.exclusive,
1698
- })
1699
- }
1700
- v2::KvListQuery::KvListPrefixQuery(prefix) => {
1701
- v3::KvListQuery::KvListPrefixQuery(v3::KvListPrefixQuery { key: prefix.key })
1702
- }
1703
- }
1704
- }
1705
-
1706
- fn convert_kv_list_query_v3_to_v2(query: v3::KvListQuery) -> v2::KvListQuery {
1707
- match query {
1708
- v3::KvListQuery::KvListAllQuery => v2::KvListQuery::KvListAllQuery,
1709
- v3::KvListQuery::KvListRangeQuery(range) => {
1710
- v2::KvListQuery::KvListRangeQuery(v2::KvListRangeQuery {
1711
- start: range.start,
1712
- end: range.end,
1713
- exclusive: range.exclusive,
1714
- })
1715
- }
1716
- v3::KvListQuery::KvListPrefixQuery(prefix) => {
1717
- v2::KvListQuery::KvListPrefixQuery(v2::KvListPrefixQuery { key: prefix.key })
1718
- }
1719
- }
1720
- }
1721
-
1722
- fn convert_kv_metadata_v2_to_v3(metadata: v2::KvMetadata) -> v3::KvMetadata {
1723
- v3::KvMetadata {
1724
- version: metadata.version,
1725
- create_ts: metadata.create_ts,
1726
- }
1727
- }
1728
-
1729
- fn convert_kv_metadata_v3_to_v2(metadata: v3::KvMetadata) -> v2::KvMetadata {
1730
- v2::KvMetadata {
1731
- version: metadata.version,
1732
- create_ts: metadata.create_ts,
1733
- }
1734
- }