rivetkit 2.0.2 → 2.0.4-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (403) hide show
  1. package/README.md +3 -5
  2. package/dist/browser/client.d.ts +2485 -0
  3. package/dist/browser/client.js +5182 -0
  4. package/dist/browser/client.js.map +1 -0
  5. package/dist/browser/inspector/client.d.ts +130 -0
  6. package/dist/browser/inspector/client.js +2854 -0
  7. package/dist/browser/inspector/client.js.map +1 -0
  8. package/dist/browser/v3-DnYObHH3.d.ts +279 -0
  9. package/dist/inspector.tar.gz +0 -0
  10. package/dist/schemas/actor-inspector/v1.ts +784 -0
  11. package/dist/schemas/actor-inspector/v2.ts +796 -0
  12. package/dist/schemas/actor-inspector/v3.ts +899 -0
  13. package/dist/schemas/actor-persist/v1.ts +225 -0
  14. package/dist/schemas/actor-persist/v2.ts +268 -0
  15. package/dist/schemas/actor-persist/v3.ts +280 -0
  16. package/dist/schemas/actor-persist/v4.ts +406 -0
  17. package/dist/schemas/client-protocol/v1.ts +441 -0
  18. package/dist/schemas/client-protocol/v2.ts +438 -0
  19. package/dist/schemas/client-protocol/v3.ts +554 -0
  20. package/dist/schemas/file-system-driver/v1.ts +108 -0
  21. package/dist/schemas/file-system-driver/v2.ts +142 -0
  22. package/dist/schemas/file-system-driver/v3.ts +167 -0
  23. package/dist/schemas/persist/v1.ts +781 -0
  24. package/dist/schemas/transport/v1.ts +697 -0
  25. package/dist/tsup/actor/errors.cjs +106 -0
  26. package/dist/tsup/actor/errors.cjs.map +1 -0
  27. package/dist/tsup/actor/errors.d.cts +188 -0
  28. package/dist/tsup/actor/errors.d.ts +188 -0
  29. package/dist/tsup/actor/errors.js +106 -0
  30. package/dist/tsup/actor/errors.js.map +1 -0
  31. package/dist/tsup/actor-router-consts-D29T1Z-K.d.cts +24 -0
  32. package/dist/tsup/actor-router-consts-D29T1Z-K.d.ts +24 -0
  33. package/dist/tsup/chunk-325TLXJT.js +1060 -0
  34. package/dist/tsup/chunk-325TLXJT.js.map +1 -0
  35. package/dist/tsup/chunk-424PT5DM.js +23 -0
  36. package/dist/tsup/chunk-424PT5DM.js.map +1 -0
  37. package/dist/tsup/chunk-4JVIG3SS.cjs +6289 -0
  38. package/dist/tsup/chunk-4JVIG3SS.cjs.map +1 -0
  39. package/dist/tsup/chunk-6LJAZ5R4.cjs +96 -0
  40. package/dist/tsup/chunk-6LJAZ5R4.cjs.map +1 -0
  41. package/dist/tsup/chunk-6XU3FMCB.cjs +534 -0
  42. package/dist/tsup/chunk-6XU3FMCB.cjs.map +1 -0
  43. package/dist/tsup/chunk-7HTNH26M.js +509 -0
  44. package/dist/tsup/chunk-7HTNH26M.js.map +1 -0
  45. package/dist/tsup/chunk-AUVH72RE.cjs +5977 -0
  46. package/dist/tsup/chunk-AUVH72RE.cjs.map +1 -0
  47. package/dist/tsup/chunk-D4BYUPNQ.js +645 -0
  48. package/dist/tsup/chunk-D4BYUPNQ.js.map +1 -0
  49. package/dist/tsup/chunk-HDQ2JUQT.cjs +23 -0
  50. package/dist/tsup/chunk-HDQ2JUQT.cjs.map +1 -0
  51. package/dist/tsup/chunk-HHXX2VRM.js +6289 -0
  52. package/dist/tsup/chunk-HHXX2VRM.js.map +1 -0
  53. package/dist/tsup/chunk-JEAEA2PB.js +49 -0
  54. package/dist/tsup/chunk-JEAEA2PB.js.map +1 -0
  55. package/dist/tsup/chunk-JYSEG3VF.cjs +642 -0
  56. package/dist/tsup/chunk-JYSEG3VF.cjs.map +1 -0
  57. package/dist/tsup/chunk-K6DGYILQ.js +2657 -0
  58. package/dist/tsup/chunk-K6DGYILQ.js.map +1 -0
  59. package/dist/tsup/chunk-KJSYAUOM.js +96 -0
  60. package/dist/tsup/chunk-KJSYAUOM.js.map +1 -0
  61. package/dist/tsup/chunk-L47L3ZWJ.cjs +509 -0
  62. package/dist/tsup/chunk-L47L3ZWJ.cjs.map +1 -0
  63. package/dist/tsup/chunk-LXUQ667X.js +2006 -0
  64. package/dist/tsup/chunk-LXUQ667X.js.map +1 -0
  65. package/dist/tsup/chunk-MXNPAB5W.js +5977 -0
  66. package/dist/tsup/chunk-MXNPAB5W.js.map +1 -0
  67. package/dist/tsup/chunk-N4KRDJ56.js +72 -0
  68. package/dist/tsup/chunk-N4KRDJ56.js.map +1 -0
  69. package/dist/tsup/chunk-NIYZDWMW.cjs +2006 -0
  70. package/dist/tsup/chunk-NIYZDWMW.cjs.map +1 -0
  71. package/dist/tsup/chunk-PQZHDKRW.cjs +1060 -0
  72. package/dist/tsup/chunk-PQZHDKRW.cjs.map +1 -0
  73. package/dist/tsup/chunk-PVOE6BU7.cjs +1050 -0
  74. package/dist/tsup/chunk-PVOE6BU7.cjs.map +1 -0
  75. package/dist/tsup/chunk-Q4UD2GA4.cjs +1810 -0
  76. package/dist/tsup/chunk-Q4UD2GA4.cjs.map +1 -0
  77. package/dist/tsup/chunk-QUD664YZ.js +1810 -0
  78. package/dist/tsup/chunk-QUD664YZ.js.map +1 -0
  79. package/dist/tsup/chunk-RTOCTWME.js +1050 -0
  80. package/dist/tsup/chunk-RTOCTWME.js.map +1 -0
  81. package/dist/tsup/chunk-SAZZ4SB2.cjs +2657 -0
  82. package/dist/tsup/chunk-SAZZ4SB2.cjs.map +1 -0
  83. package/dist/tsup/chunk-SR3KQE7Q.cjs +72 -0
  84. package/dist/tsup/chunk-SR3KQE7Q.cjs.map +1 -0
  85. package/dist/tsup/chunk-V2GHLYC6.cjs +49 -0
  86. package/dist/tsup/chunk-V2GHLYC6.cjs.map +1 -0
  87. package/dist/tsup/chunk-V3WG7XTW.cjs +645 -0
  88. package/dist/tsup/chunk-V3WG7XTW.cjs.map +1 -0
  89. package/dist/tsup/chunk-VKVNIQRQ.js +257 -0
  90. package/dist/tsup/chunk-VKVNIQRQ.js.map +1 -0
  91. package/dist/tsup/chunk-WMPW7JYC.js +642 -0
  92. package/dist/tsup/chunk-WMPW7JYC.js.map +1 -0
  93. package/dist/tsup/chunk-Z7HNQ2WF.js +534 -0
  94. package/dist/tsup/chunk-Z7HNQ2WF.js.map +1 -0
  95. package/dist/tsup/chunk-ZFY5J2EP.cjs +257 -0
  96. package/dist/tsup/chunk-ZFY5J2EP.cjs.map +1 -0
  97. package/dist/tsup/client/mod.cjs +33 -0
  98. package/dist/tsup/client/mod.cjs.map +1 -0
  99. package/dist/tsup/client/mod.d.cts +64 -0
  100. package/dist/tsup/client/mod.d.ts +64 -0
  101. package/dist/tsup/client/mod.js +33 -0
  102. package/dist/tsup/client/mod.js.map +1 -0
  103. package/dist/tsup/common/log.cjs +21 -0
  104. package/dist/tsup/common/log.cjs.map +1 -0
  105. package/dist/tsup/common/log.d.cts +34 -0
  106. package/dist/tsup/common/log.d.ts +34 -0
  107. package/dist/tsup/common/log.js +21 -0
  108. package/dist/tsup/common/log.js.map +1 -0
  109. package/dist/tsup/common/websocket.cjs +10 -0
  110. package/dist/tsup/common/websocket.cjs.map +1 -0
  111. package/dist/tsup/common/websocket.d.cts +3 -0
  112. package/dist/tsup/common/websocket.d.ts +3 -0
  113. package/dist/tsup/common/websocket.js +10 -0
  114. package/dist/tsup/common/websocket.js.map +1 -0
  115. package/dist/tsup/config-BiNoIHRs.d.cts +80 -0
  116. package/dist/tsup/config-BiNoIHRs.d.ts +80 -0
  117. package/dist/tsup/config-P3XujgRr.d.ts +2594 -0
  118. package/dist/tsup/config-_gfywqqI.d.cts +2594 -0
  119. package/dist/tsup/context-Bxd8Cx4H.d.cts +75 -0
  120. package/dist/tsup/context-uNA4TRn3.d.ts +75 -0
  121. package/dist/tsup/db/drizzle/mod.cjs +49 -0
  122. package/dist/tsup/db/drizzle/mod.cjs.map +1 -0
  123. package/dist/tsup/db/drizzle/mod.d.cts +17 -0
  124. package/dist/tsup/db/drizzle/mod.d.ts +17 -0
  125. package/dist/tsup/db/drizzle/mod.js +49 -0
  126. package/dist/tsup/db/drizzle/mod.js.map +1 -0
  127. package/dist/tsup/db/mod.cjs +9 -0
  128. package/dist/tsup/db/mod.cjs.map +1 -0
  129. package/dist/tsup/db/mod.d.cts +9 -0
  130. package/dist/tsup/db/mod.d.ts +9 -0
  131. package/dist/tsup/db/mod.js +9 -0
  132. package/dist/tsup/db/mod.js.map +1 -0
  133. package/dist/tsup/driver-BcLvZcKl.d.cts +13 -0
  134. package/dist/tsup/driver-CPGHKXyh.d.ts +13 -0
  135. package/dist/tsup/driver-helpers/mod.cjs +53 -0
  136. package/dist/tsup/driver-helpers/mod.cjs.map +1 -0
  137. package/dist/tsup/driver-helpers/mod.d.cts +47 -0
  138. package/dist/tsup/driver-helpers/mod.d.ts +47 -0
  139. package/dist/tsup/driver-helpers/mod.js +53 -0
  140. package/dist/tsup/driver-helpers/mod.js.map +1 -0
  141. package/dist/tsup/driver-test-suite/mod.cjs +4974 -0
  142. package/dist/tsup/driver-test-suite/mod.cjs.map +1 -0
  143. package/dist/tsup/driver-test-suite/mod.d.cts +73 -0
  144. package/dist/tsup/driver-test-suite/mod.d.ts +73 -0
  145. package/dist/tsup/driver-test-suite/mod.js +4974 -0
  146. package/dist/tsup/driver-test-suite/mod.js.map +1 -0
  147. package/dist/tsup/inspector/mod.cjs +164 -0
  148. package/dist/tsup/inspector/mod.cjs.map +1 -0
  149. package/dist/tsup/inspector/mod.d.cts +130 -0
  150. package/dist/tsup/inspector/mod.d.ts +130 -0
  151. package/dist/tsup/inspector/mod.js +164 -0
  152. package/dist/tsup/inspector/mod.js.map +1 -0
  153. package/dist/tsup/keys-CydblqMh.d.cts +13 -0
  154. package/dist/tsup/keys-CydblqMh.d.ts +13 -0
  155. package/dist/tsup/mod.cjs +82 -0
  156. package/dist/tsup/mod.cjs.map +1 -0
  157. package/dist/tsup/mod.d.cts +126 -0
  158. package/dist/tsup/mod.d.ts +126 -0
  159. package/dist/tsup/mod.js +82 -0
  160. package/dist/tsup/mod.js.map +1 -0
  161. package/dist/tsup/serve-test-suite/mod.cjs +2601 -0
  162. package/dist/tsup/serve-test-suite/mod.cjs.map +1 -0
  163. package/dist/tsup/serve-test-suite/mod.d.cts +9 -0
  164. package/dist/tsup/serve-test-suite/mod.d.ts +9 -0
  165. package/dist/tsup/serve-test-suite/mod.js +2601 -0
  166. package/dist/tsup/serve-test-suite/mod.js.map +1 -0
  167. package/dist/tsup/test/mod.cjs +90 -0
  168. package/dist/tsup/test/mod.cjs.map +1 -0
  169. package/dist/tsup/test/mod.d.cts +26 -0
  170. package/dist/tsup/test/mod.d.ts +26 -0
  171. package/dist/tsup/test/mod.js +90 -0
  172. package/dist/tsup/test/mod.js.map +1 -0
  173. package/dist/tsup/utils-fwx3o3K9.d.cts +18 -0
  174. package/dist/tsup/utils-fwx3o3K9.d.ts +18 -0
  175. package/dist/tsup/utils.cjs +43 -0
  176. package/dist/tsup/utils.cjs.map +1 -0
  177. package/dist/tsup/utils.d.cts +148 -0
  178. package/dist/tsup/utils.d.ts +148 -0
  179. package/dist/tsup/utils.js +43 -0
  180. package/dist/tsup/utils.js.map +1 -0
  181. package/dist/tsup/v3-DnYObHH3.d.cts +279 -0
  182. package/dist/tsup/v3-DnYObHH3.d.ts +279 -0
  183. package/dist/tsup/workflow/mod.cjs +16 -0
  184. package/dist/tsup/workflow/mod.cjs.map +1 -0
  185. package/dist/tsup/workflow/mod.d.cts +25 -0
  186. package/dist/tsup/workflow/mod.d.ts +25 -0
  187. package/dist/tsup/workflow/mod.js +16 -0
  188. package/dist/tsup/workflow/mod.js.map +1 -0
  189. package/package.json +293 -5
  190. package/src/actor/config.ts +1221 -0
  191. package/src/actor/conn/driver.ts +61 -0
  192. package/src/actor/conn/drivers/http.ts +17 -0
  193. package/src/actor/conn/drivers/raw-request.ts +24 -0
  194. package/src/actor/conn/drivers/raw-websocket.ts +65 -0
  195. package/src/actor/conn/drivers/websocket.ts +144 -0
  196. package/src/actor/conn/mod.ts +288 -0
  197. package/src/actor/conn/persisted.ts +81 -0
  198. package/src/actor/conn/state-manager.ts +196 -0
  199. package/src/actor/contexts/action.ts +47 -0
  200. package/src/actor/contexts/base/actor.ts +347 -0
  201. package/src/actor/contexts/base/conn-init.ts +68 -0
  202. package/src/actor/contexts/base/conn.ts +73 -0
  203. package/src/actor/contexts/before-action-response.ts +42 -0
  204. package/src/actor/contexts/before-connect.ts +31 -0
  205. package/src/actor/contexts/connect.ts +42 -0
  206. package/src/actor/contexts/create-conn-state.ts +32 -0
  207. package/src/actor/contexts/create-vars.ts +39 -0
  208. package/src/actor/contexts/create.ts +39 -0
  209. package/src/actor/contexts/destroy.ts +42 -0
  210. package/src/actor/contexts/disconnect.ts +43 -0
  211. package/src/actor/contexts/index.ts +33 -0
  212. package/src/actor/contexts/request.ts +80 -0
  213. package/src/actor/contexts/run.ts +47 -0
  214. package/src/actor/contexts/sleep.ts +42 -0
  215. package/src/actor/contexts/state-change.ts +42 -0
  216. package/src/actor/contexts/wake.ts +42 -0
  217. package/src/actor/contexts/websocket.ts +80 -0
  218. package/src/actor/database.ts +13 -0
  219. package/src/actor/definition.ts +64 -0
  220. package/src/actor/driver.ts +114 -0
  221. package/src/actor/errors.ts +556 -0
  222. package/src/actor/instance/connection-manager.ts +574 -0
  223. package/src/actor/instance/event-manager.ts +314 -0
  224. package/src/actor/instance/keys.ts +146 -0
  225. package/src/actor/instance/kv.ts +241 -0
  226. package/src/actor/instance/mod.ts +1658 -0
  227. package/src/actor/instance/persisted.ts +67 -0
  228. package/src/actor/instance/queue-manager.ts +603 -0
  229. package/src/actor/instance/queue.ts +345 -0
  230. package/src/actor/instance/schedule-manager.ts +392 -0
  231. package/src/actor/instance/state-manager.ts +542 -0
  232. package/src/actor/instance/traces-driver.ts +128 -0
  233. package/src/actor/keys.test.ts +275 -0
  234. package/src/actor/keys.ts +89 -0
  235. package/src/actor/log.ts +6 -0
  236. package/src/actor/mod.ts +110 -0
  237. package/src/actor/protocol/old.ts +416 -0
  238. package/src/actor/protocol/serde.ts +222 -0
  239. package/src/actor/router-endpoints.ts +400 -0
  240. package/src/actor/router-websocket-endpoints.test.ts +54 -0
  241. package/src/actor/router-websocket-endpoints.ts +405 -0
  242. package/src/actor/router.ts +380 -0
  243. package/src/actor/schedule.ts +17 -0
  244. package/src/actor/schema.ts +291 -0
  245. package/src/actor/utils.test.ts +48 -0
  246. package/src/actor/utils.ts +158 -0
  247. package/src/client/actor-common.ts +32 -0
  248. package/src/client/actor-conn.ts +1262 -0
  249. package/src/client/actor-handle.ts +344 -0
  250. package/src/client/actor-query.ts +112 -0
  251. package/src/client/client.ts +558 -0
  252. package/src/client/config.ts +151 -0
  253. package/src/client/errors.ts +76 -0
  254. package/src/client/log.ts +5 -0
  255. package/src/client/mod.browser.ts +2 -0
  256. package/src/client/mod.ts +70 -0
  257. package/src/client/queue.ts +146 -0
  258. package/src/client/raw-utils.ts +149 -0
  259. package/src/client/test.ts +44 -0
  260. package/src/client/utils.ts +252 -0
  261. package/src/common/actor-router-consts.ts +59 -0
  262. package/src/common/cors.ts +57 -0
  263. package/src/common/eventsource-interface.ts +47 -0
  264. package/src/common/eventsource.ts +44 -0
  265. package/src/common/inline-websocket-adapter.ts +154 -0
  266. package/src/common/log-levels.ts +27 -0
  267. package/src/common/log.ts +229 -0
  268. package/src/common/logfmt.ts +221 -0
  269. package/src/common/network.ts +2 -0
  270. package/src/common/router.ts +174 -0
  271. package/src/common/utils.ts +339 -0
  272. package/src/common/websocket-interface.ts +7 -0
  273. package/src/common/websocket.ts +43 -0
  274. package/src/db/config.ts +100 -0
  275. package/src/db/drizzle/mod.ts +226 -0
  276. package/src/db/drizzle/sqlite-core.ts +22 -0
  277. package/src/db/mod.ts +125 -0
  278. package/src/db/shared.ts +92 -0
  279. package/src/db/sqlite-vfs.ts +12 -0
  280. package/src/devtools-loader/index.ts +33 -0
  281. package/src/devtools-loader/log.ts +5 -0
  282. package/src/driver-helpers/mod.ts +33 -0
  283. package/src/driver-helpers/utils.ts +54 -0
  284. package/src/driver-test-suite/log.ts +5 -0
  285. package/src/driver-test-suite/mod.ts +293 -0
  286. package/src/driver-test-suite/test-inline-client-driver.ts +307 -0
  287. package/src/driver-test-suite/tests/access-control.ts +218 -0
  288. package/src/driver-test-suite/tests/action-features.ts +203 -0
  289. package/src/driver-test-suite/tests/actor-conn-hibernation.ts +152 -0
  290. package/src/driver-test-suite/tests/actor-conn-state.ts +300 -0
  291. package/src/driver-test-suite/tests/actor-conn.ts +596 -0
  292. package/src/driver-test-suite/tests/actor-db-raw.ts +73 -0
  293. package/src/driver-test-suite/tests/actor-db.ts +477 -0
  294. package/src/driver-test-suite/tests/actor-destroy.ts +294 -0
  295. package/src/driver-test-suite/tests/actor-driver.ts +18 -0
  296. package/src/driver-test-suite/tests/actor-error-handling.ts +150 -0
  297. package/src/driver-test-suite/tests/actor-handle.ts +312 -0
  298. package/src/driver-test-suite/tests/actor-inline-client.ts +163 -0
  299. package/src/driver-test-suite/tests/actor-inspector.ts +264 -0
  300. package/src/driver-test-suite/tests/actor-kv.ts +65 -0
  301. package/src/driver-test-suite/tests/actor-metadata.ts +116 -0
  302. package/src/driver-test-suite/tests/actor-onstatechange.ts +95 -0
  303. package/src/driver-test-suite/tests/actor-queue.ts +325 -0
  304. package/src/driver-test-suite/tests/actor-run.ts +181 -0
  305. package/src/driver-test-suite/tests/actor-schedule.ts +97 -0
  306. package/src/driver-test-suite/tests/actor-sleep.ts +415 -0
  307. package/src/driver-test-suite/tests/actor-state.ts +54 -0
  308. package/src/driver-test-suite/tests/actor-stateless.ts +70 -0
  309. package/src/driver-test-suite/tests/actor-vars.ts +97 -0
  310. package/src/driver-test-suite/tests/actor-workflow.ts +118 -0
  311. package/src/driver-test-suite/tests/manager-driver.ts +388 -0
  312. package/src/driver-test-suite/tests/raw-http-direct-registry.ts +227 -0
  313. package/src/driver-test-suite/tests/raw-http-request-properties.ts +454 -0
  314. package/src/driver-test-suite/tests/raw-http.ts +359 -0
  315. package/src/driver-test-suite/tests/raw-websocket-direct-registry.ts +393 -0
  316. package/src/driver-test-suite/tests/raw-websocket.ts +513 -0
  317. package/src/driver-test-suite/tests/request-access.ts +240 -0
  318. package/src/driver-test-suite/utils.ts +80 -0
  319. package/src/drivers/default.ts +38 -0
  320. package/src/drivers/engine/actor-driver.ts +1027 -0
  321. package/src/drivers/engine/config.ts +43 -0
  322. package/src/drivers/engine/log.ts +5 -0
  323. package/src/drivers/engine/mod.ts +36 -0
  324. package/src/drivers/file-system/actor.ts +102 -0
  325. package/src/drivers/file-system/global-state.ts +1445 -0
  326. package/src/drivers/file-system/kv-limits.ts +70 -0
  327. package/src/drivers/file-system/log.ts +5 -0
  328. package/src/drivers/file-system/manager.ts +300 -0
  329. package/src/drivers/file-system/mod.ts +78 -0
  330. package/src/drivers/file-system/sqlite-runtime.ts +210 -0
  331. package/src/drivers/file-system/utils.ts +125 -0
  332. package/src/engine-process/constants.ts +2 -0
  333. package/src/engine-process/log.ts +5 -0
  334. package/src/engine-process/mod.ts +464 -0
  335. package/src/globals.d.ts +35 -0
  336. package/src/inspector/actor-inspector.ts +352 -0
  337. package/src/inspector/config.ts +49 -0
  338. package/src/inspector/handler.ts +273 -0
  339. package/src/inspector/log.ts +5 -0
  340. package/src/inspector/mod.browser.ts +8 -0
  341. package/src/inspector/mod.ts +4 -0
  342. package/src/inspector/serve-ui.ts +40 -0
  343. package/src/inspector/transport.ts +18 -0
  344. package/src/inspector/utils.ts +32 -0
  345. package/src/manager/driver.ts +106 -0
  346. package/src/manager/gateway.ts +668 -0
  347. package/src/manager/log.ts +5 -0
  348. package/src/manager/mod.ts +2 -0
  349. package/src/manager/protocol/mod.ts +22 -0
  350. package/src/manager/protocol/query.ts +85 -0
  351. package/src/manager/router-schema.ts +22 -0
  352. package/src/manager/router.ts +660 -0
  353. package/src/manager-api/actors.ts +83 -0
  354. package/src/manager-api/common.ts +4 -0
  355. package/src/mod.ts +24 -0
  356. package/src/registry/config/driver.ts +21 -0
  357. package/src/registry/config/index.ts +510 -0
  358. package/src/registry/config/legacy-runner.ts +157 -0
  359. package/src/registry/config/runner.ts +21 -0
  360. package/src/registry/config/serverless.ts +94 -0
  361. package/src/registry/index.ts +194 -0
  362. package/src/registry/log.ts +5 -0
  363. package/src/remote-manager-driver/actor-http-client.ts +84 -0
  364. package/src/remote-manager-driver/actor-websocket-client.ts +81 -0
  365. package/src/remote-manager-driver/api-endpoints.ts +159 -0
  366. package/src/remote-manager-driver/api-utils.ts +69 -0
  367. package/src/remote-manager-driver/log.ts +5 -0
  368. package/src/remote-manager-driver/metadata.ts +64 -0
  369. package/src/remote-manager-driver/mod.ts +414 -0
  370. package/src/remote-manager-driver/ws-proxy.ts +189 -0
  371. package/src/schemas/actor-inspector/mod.ts +1 -0
  372. package/src/schemas/actor-inspector/versioned.ts +233 -0
  373. package/src/schemas/actor-persist/mod.ts +1 -0
  374. package/src/schemas/actor-persist/versioned.ts +217 -0
  375. package/src/schemas/client-protocol/mod.ts +1 -0
  376. package/src/schemas/client-protocol/versioned.ts +330 -0
  377. package/src/schemas/client-protocol-zod/mod.ts +118 -0
  378. package/src/schemas/file-system-driver/mod.ts +1 -0
  379. package/src/schemas/file-system-driver/versioned.ts +135 -0
  380. package/src/schemas/persist/mod.ts +1 -0
  381. package/src/schemas/transport/mod.ts +1 -0
  382. package/src/serde.ts +138 -0
  383. package/src/serve-test-suite/mod.ts +148 -0
  384. package/src/serverless/configure.ts +82 -0
  385. package/src/serverless/log.ts +5 -0
  386. package/src/serverless/router.test.ts +299 -0
  387. package/src/serverless/router.ts +215 -0
  388. package/src/test/log.ts +5 -0
  389. package/src/test/mod.ts +99 -0
  390. package/src/utils/crypto.ts +24 -0
  391. package/src/utils/endpoint-parser.test.ts +202 -0
  392. package/src/utils/endpoint-parser.ts +124 -0
  393. package/src/utils/env-vars.ts +78 -0
  394. package/src/utils/node.ts +178 -0
  395. package/src/utils/router.ts +83 -0
  396. package/src/utils/serve.ts +212 -0
  397. package/src/utils.test.ts +34 -0
  398. package/src/utils.ts +437 -0
  399. package/src/workflow/constants.ts +2 -0
  400. package/src/workflow/context.ts +597 -0
  401. package/src/workflow/driver.ts +194 -0
  402. package/src/workflow/inspector.ts +268 -0
  403. package/src/workflow/mod.ts +128 -0
@@ -0,0 +1,264 @@
1
+ import { describe, expect, test } from "vitest";
2
+ import type { DriverTestConfig } from "../mod";
3
+ import { setupDriverTest } from "../utils";
4
+
5
+ export function runActorInspectorTests(driverTestConfig: DriverTestConfig) {
6
+ describe("Actor Inspector HTTP API", () => {
7
+ test("GET /inspector/state returns actor state", async (c) => {
8
+ const { client } = await setupDriverTest(c, driverTestConfig);
9
+ const handle = client.counter.getOrCreate(["inspector-state"]);
10
+
11
+ // Set some state first
12
+ await handle.increment(5);
13
+
14
+ const gatewayUrl = await handle.getGatewayUrl();
15
+ const response = await fetch(`${gatewayUrl}/inspector/state`, {
16
+ headers: { Authorization: "Bearer token" },
17
+ });
18
+ expect(response.status).toBe(200);
19
+ const data = await response.json();
20
+ expect(data).toEqual({ state: { count: 5 } });
21
+ });
22
+
23
+ test("PATCH /inspector/state updates actor state", async (c) => {
24
+ const { client } = await setupDriverTest(c, driverTestConfig);
25
+ const handle = client.counter.getOrCreate([
26
+ "inspector-set-state",
27
+ ]);
28
+
29
+ await handle.increment(5);
30
+
31
+ const gatewayUrl = await handle.getGatewayUrl();
32
+
33
+ // Replace state
34
+ const patchResponse = await fetch(
35
+ `${gatewayUrl}/inspector/state`,
36
+ {
37
+ method: "PATCH",
38
+ headers: {
39
+ "Content-Type": "application/json",
40
+ Authorization: "Bearer token",
41
+ },
42
+ body: JSON.stringify({ state: { count: 42 } }),
43
+ },
44
+ );
45
+ expect(patchResponse.status).toBe(200);
46
+ const patchData = await patchResponse.json();
47
+ expect(patchData).toEqual({ ok: true });
48
+
49
+ // Verify via action
50
+ const count = await handle.getCount();
51
+ expect(count).toBe(42);
52
+ });
53
+
54
+ test("GET /inspector/connections returns connections list", async (c) => {
55
+ const { client } = await setupDriverTest(c, driverTestConfig);
56
+ const handle = client.counter.getOrCreate([
57
+ "inspector-connections",
58
+ ]);
59
+
60
+ // Ensure actor exists
61
+ await handle.increment(0);
62
+
63
+ const gatewayUrl = await handle.getGatewayUrl();
64
+ const response = await fetch(
65
+ `${gatewayUrl}/inspector/connections`,
66
+ {
67
+ headers: { Authorization: "Bearer token" },
68
+ },
69
+ );
70
+ expect(response.status).toBe(200);
71
+ const data = (await response.json()) as {
72
+ connections: unknown[];
73
+ };
74
+ expect(data).toHaveProperty("connections");
75
+ expect(Array.isArray(data.connections)).toBe(true);
76
+ });
77
+
78
+ test("GET /inspector/rpcs returns available actions", async (c) => {
79
+ const { client } = await setupDriverTest(c, driverTestConfig);
80
+ const handle = client.counter.getOrCreate(["inspector-rpcs"]);
81
+
82
+ // Ensure actor exists
83
+ await handle.increment(0);
84
+
85
+ const gatewayUrl = await handle.getGatewayUrl();
86
+ const response = await fetch(`${gatewayUrl}/inspector/rpcs`, {
87
+ headers: { Authorization: "Bearer token" },
88
+ });
89
+ expect(response.status).toBe(200);
90
+ const data = (await response.json()) as { rpcs: string[] };
91
+ expect(data).toHaveProperty("rpcs");
92
+ expect(data.rpcs).toContain("increment");
93
+ expect(data.rpcs).toContain("getCount");
94
+ expect(data.rpcs).toContain("setCount");
95
+ });
96
+
97
+ test("POST /inspector/action/:name executes an action", async (c) => {
98
+ const { client } = await setupDriverTest(c, driverTestConfig);
99
+ const handle = client.counter.getOrCreate([
100
+ "inspector-action",
101
+ ]);
102
+
103
+ await handle.increment(10);
104
+
105
+ const gatewayUrl = await handle.getGatewayUrl();
106
+ const response = await fetch(
107
+ `${gatewayUrl}/inspector/action/increment`,
108
+ {
109
+ method: "POST",
110
+ headers: {
111
+ "Content-Type": "application/json",
112
+ Authorization: "Bearer token",
113
+ },
114
+ body: JSON.stringify({ args: [5] }),
115
+ },
116
+ );
117
+ expect(response.status).toBe(200);
118
+ const data = (await response.json()) as { output: number };
119
+ expect(data.output).toBe(15);
120
+
121
+ // Verify via normal action
122
+ const count = await handle.getCount();
123
+ expect(count).toBe(15);
124
+ });
125
+
126
+ test("GET /inspector/queue returns queue status", async (c) => {
127
+ const { client } = await setupDriverTest(c, driverTestConfig);
128
+ const handle = client.counter.getOrCreate(["inspector-queue"]);
129
+
130
+ // Ensure actor exists
131
+ await handle.increment(0);
132
+
133
+ const gatewayUrl = await handle.getGatewayUrl();
134
+ const response = await fetch(
135
+ `${gatewayUrl}/inspector/queue?limit=10`,
136
+ {
137
+ headers: { Authorization: "Bearer token" },
138
+ },
139
+ );
140
+ expect(response.status).toBe(200);
141
+ const data = (await response.json()) as {
142
+ size: number;
143
+ maxSize: number;
144
+ truncated: boolean;
145
+ messages: unknown[];
146
+ };
147
+ expect(data).toHaveProperty("size");
148
+ expect(data).toHaveProperty("maxSize");
149
+ expect(data).toHaveProperty("truncated");
150
+ expect(data).toHaveProperty("messages");
151
+ expect(typeof data.size).toBe("number");
152
+ expect(typeof data.maxSize).toBe("number");
153
+ expect(typeof data.truncated).toBe("boolean");
154
+ expect(Array.isArray(data.messages)).toBe(true);
155
+ });
156
+
157
+ test("GET /inspector/traces returns trace data", async (c) => {
158
+ const { client } = await setupDriverTest(c, driverTestConfig);
159
+ const handle = client.counter.getOrCreate([
160
+ "inspector-traces",
161
+ ]);
162
+
163
+ // Perform an action to generate traces
164
+ await handle.increment(1);
165
+
166
+ const gatewayUrl = await handle.getGatewayUrl();
167
+ const response = await fetch(
168
+ `${gatewayUrl}/inspector/traces?startMs=0&endMs=${Date.now() + 60000}&limit=100`,
169
+ {
170
+ headers: { Authorization: "Bearer token" },
171
+ },
172
+ );
173
+ expect(response.status).toBe(200);
174
+ const data = (await response.json()) as {
175
+ otlp: unknown;
176
+ clamped: boolean;
177
+ };
178
+ expect(data).toHaveProperty("otlp");
179
+ expect(data).toHaveProperty("clamped");
180
+ expect(typeof data.clamped).toBe("boolean");
181
+ });
182
+
183
+ test("GET /inspector/workflow-history returns workflow status", async (c) => {
184
+ const { client } = await setupDriverTest(c, driverTestConfig);
185
+ const handle = client.counter.getOrCreate([
186
+ "inspector-workflow",
187
+ ]);
188
+
189
+ // Ensure actor exists
190
+ await handle.increment(0);
191
+
192
+ const gatewayUrl = await handle.getGatewayUrl();
193
+ const response = await fetch(
194
+ `${gatewayUrl}/inspector/workflow-history`,
195
+ {
196
+ headers: { Authorization: "Bearer token" },
197
+ },
198
+ );
199
+ expect(response.status).toBe(200);
200
+ const data = (await response.json()) as {
201
+ history: unknown;
202
+ isWorkflowEnabled: boolean;
203
+ };
204
+ expect(data).toHaveProperty("history");
205
+ expect(data).toHaveProperty("isWorkflowEnabled");
206
+ // Counter actor has no workflow, so it should be disabled
207
+ expect(data.isWorkflowEnabled).toBe(false);
208
+ expect(data.history).toBeNull();
209
+ });
210
+
211
+ test("GET /inspector/summary returns full actor snapshot", async (c) => {
212
+ const { client } = await setupDriverTest(c, driverTestConfig);
213
+ const handle = client.counter.getOrCreate([
214
+ "inspector-summary",
215
+ ]);
216
+
217
+ await handle.increment(7);
218
+
219
+ const gatewayUrl = await handle.getGatewayUrl();
220
+ const response = await fetch(
221
+ `${gatewayUrl}/inspector/summary`,
222
+ {
223
+ headers: { Authorization: "Bearer token" },
224
+ },
225
+ );
226
+ expect(response.status).toBe(200);
227
+ const data = (await response.json()) as {
228
+ state: { count: number };
229
+ connections: unknown[];
230
+ rpcs: string[];
231
+ queueSize: number;
232
+ isStateEnabled: boolean;
233
+ isDatabaseEnabled: boolean;
234
+ isWorkflowEnabled: boolean;
235
+ workflowHistory: unknown;
236
+ };
237
+ expect(data.state).toEqual({ count: 7 });
238
+ expect(Array.isArray(data.connections)).toBe(true);
239
+ expect(data.rpcs).toContain("increment");
240
+ expect(typeof data.queueSize).toBe("number");
241
+ expect(data.isStateEnabled).toBe(true);
242
+ expect(typeof data.isDatabaseEnabled).toBe("boolean");
243
+ expect(data.isWorkflowEnabled).toBe(false);
244
+ expect(data.workflowHistory).toBeNull();
245
+ });
246
+
247
+ test("inspector endpoints require auth in non-dev mode", async (c) => {
248
+ const { client } = await setupDriverTest(c, driverTestConfig);
249
+ const handle = client.counter.getOrCreate([
250
+ "inspector-auth",
251
+ ]);
252
+
253
+ await handle.increment(0);
254
+
255
+ const gatewayUrl = await handle.getGatewayUrl();
256
+
257
+ // Request with wrong token should fail
258
+ const response = await fetch(`${gatewayUrl}/inspector/state`, {
259
+ headers: { Authorization: "Bearer wrong-token" },
260
+ });
261
+ expect(response.status).toBe(401);
262
+ });
263
+ });
264
+ }
@@ -0,0 +1,65 @@
1
+ import type { DriverTestConfig } from "../mod";
2
+ import { setupDriverTest } from "../utils";
3
+ import { describe, expect, test, type TestContext } from "vitest";
4
+
5
+ export function runActorKvTests(driverTestConfig: DriverTestConfig) {
6
+ type KvTextHandle = {
7
+ putText: (key: string, value: string) => Promise<unknown>;
8
+ getText: (key: string) => Promise<string | null>;
9
+ listText: (prefix: string) => Promise<Array<{ key: string; value: string }>>;
10
+ };
11
+
12
+ type KvArrayBufferHandle = {
13
+ roundtripArrayBuffer: (key: string, bytes: number[]) => Promise<number[]>;
14
+ };
15
+
16
+ describe("Actor KV Tests", () => {
17
+ test("supports text encoding and decoding", async (c: TestContext) => {
18
+ const { client: rawClient } = await setupDriverTest(
19
+ c,
20
+ driverTestConfig,
21
+ );
22
+ const client = rawClient as any;
23
+ const kvHandle =
24
+ client.kvActor.getOrCreate(["kv-text"]) as unknown as KvTextHandle;
25
+
26
+ await kvHandle.putText("greeting", "hello");
27
+ const value = await kvHandle.getText("greeting");
28
+ expect(value).toBe("hello");
29
+
30
+ await kvHandle.putText("prefix-a", "alpha");
31
+ await kvHandle.putText("prefix-b", "beta");
32
+
33
+ const results = await kvHandle.listText("prefix-");
34
+ const sorted = results.sort((a, b) => a.key.localeCompare(b.key));
35
+ expect(sorted).toEqual([
36
+ { key: "prefix-a", value: "alpha" },
37
+ { key: "prefix-b", value: "beta" },
38
+ ]);
39
+ });
40
+
41
+ test(
42
+ "supports arrayBuffer encoding and decoding",
43
+ async (c: TestContext) => {
44
+ const { client: rawClient } = await setupDriverTest(
45
+ c,
46
+ driverTestConfig,
47
+ );
48
+ const client = rawClient as any;
49
+ const kvHandle = client.kvActor.getOrCreate([
50
+ "kv-array-buffer",
51
+ ]) as unknown as KvArrayBufferHandle;
52
+
53
+ const values = await kvHandle.roundtripArrayBuffer("bytes", [
54
+ 4,
55
+ 8,
56
+ 15,
57
+ 16,
58
+ 23,
59
+ 42,
60
+ ]);
61
+ expect(values).toEqual([4, 8, 15, 16, 23, 42]);
62
+ },
63
+ );
64
+ });
65
+ }
@@ -0,0 +1,116 @@
1
+ import { describe, expect, test } from "vitest";
2
+ import type { DriverTestConfig } from "../mod";
3
+ import { setupDriverTest } from "../utils";
4
+
5
+ export function runActorMetadataTests(driverTestConfig: DriverTestConfig) {
6
+ describe("Actor Metadata Tests", () => {
7
+ describe("Actor Name", () => {
8
+ test("should provide access to actor name", async (c) => {
9
+ const { client } = await setupDriverTest(c, driverTestConfig);
10
+
11
+ // Get the actor name
12
+ const handle = client.metadataActor.getOrCreate();
13
+ const actorName = await handle.getActorName();
14
+
15
+ // Verify it matches the expected name
16
+ expect(actorName).toBe("metadataActor");
17
+ });
18
+
19
+ test("should preserve actor name in state during onWake", async (c) => {
20
+ const { client } = await setupDriverTest(c, driverTestConfig);
21
+
22
+ // Get the stored actor name
23
+ const handle = client.metadataActor.getOrCreate();
24
+ const storedName = await handle.getStoredActorName();
25
+
26
+ // Verify it was stored correctly
27
+ expect(storedName).toBe("metadataActor");
28
+ });
29
+ });
30
+
31
+ describe("Actor Tags", () => {
32
+ test("should provide access to tags", async (c) => {
33
+ const { client } = await setupDriverTest(c, driverTestConfig);
34
+
35
+ // Create actor and set up test tags
36
+ const handle = client.metadataActor.getOrCreate();
37
+ await handle.setupTestTags({
38
+ env: "test",
39
+ purpose: "metadata-test",
40
+ });
41
+
42
+ // Get the tags
43
+ const tags = await handle.getTags();
44
+
45
+ // Verify the tags are accessible
46
+ expect(tags).toHaveProperty("env");
47
+ expect(tags.env).toBe("test");
48
+ expect(tags).toHaveProperty("purpose");
49
+ expect(tags.purpose).toBe("metadata-test");
50
+ });
51
+
52
+ test("should allow accessing individual tags", async (c) => {
53
+ const { client } = await setupDriverTest(c, driverTestConfig);
54
+
55
+ // Create actor and set up test tags
56
+ const handle = client.metadataActor.getOrCreate();
57
+ await handle.setupTestTags({
58
+ category: "test-actor",
59
+ version: "1.0",
60
+ });
61
+
62
+ // Get individual tags
63
+ const category = await handle.getTag("category");
64
+ const version = await handle.getTag("version");
65
+ const nonexistent = await handle.getTag("nonexistent");
66
+
67
+ // Verify the tag values
68
+ expect(category).toBe("test-actor");
69
+ expect(version).toBe("1.0");
70
+ expect(nonexistent).toBeNull();
71
+ });
72
+ });
73
+
74
+ describe("Metadata Structure", () => {
75
+ test("should provide complete metadata object", async (c) => {
76
+ const { client } = await setupDriverTest(c, driverTestConfig);
77
+
78
+ // Create actor and set up test metadata
79
+ const handle = client.metadataActor.getOrCreate();
80
+ await handle.setupTestTags({ type: "metadata-test" });
81
+ await handle.setupTestRegion("us-west-1");
82
+
83
+ // Get all metadata
84
+ const metadata = await handle.getMetadata();
85
+
86
+ // Verify structure of metadata
87
+ expect(metadata).toHaveProperty("name");
88
+ expect(metadata.name).toBe("metadataActor");
89
+
90
+ expect(metadata).toHaveProperty("tags");
91
+ expect(metadata.tags).toHaveProperty("type");
92
+ expect(metadata.tags.type).toBe("metadata-test");
93
+
94
+ // Region should be set to our test value
95
+ expect(metadata).toHaveProperty("region");
96
+ expect(metadata.region).toBe("us-west-1");
97
+ });
98
+ });
99
+
100
+ describe("Region Information", () => {
101
+ test("should retrieve region information", async (c) => {
102
+ const { client } = await setupDriverTest(c, driverTestConfig);
103
+
104
+ // Create actor and set up test region
105
+ const handle = client.metadataActor.getOrCreate();
106
+ await handle.setupTestRegion("eu-central-1");
107
+
108
+ // Get the region
109
+ const region = await handle.getRegion();
110
+
111
+ // Verify the region is set correctly
112
+ expect(region).toBe("eu-central-1");
113
+ });
114
+ });
115
+ });
116
+ }
@@ -0,0 +1,95 @@
1
+ import { describe, expect, test } from "vitest";
2
+ import type { DriverTestConfig } from "@/driver-test-suite/mod";
3
+ import { setupDriverTest } from "@/driver-test-suite/utils";
4
+
5
+ export function runActorOnStateChangeTests(driverTestConfig: DriverTestConfig) {
6
+ describe("Actor onStateChange Tests", () => {
7
+ test("triggers onStateChange when state is modified", async (c) => {
8
+ const { client } = await setupDriverTest(c, driverTestConfig);
9
+
10
+ const actor = client.onStateChangeActor.getOrCreate();
11
+
12
+ // Modify state - should trigger onChange
13
+ await actor.setValue(10);
14
+
15
+ // Check that onChange was called
16
+ const changeCount = await actor.getChangeCount();
17
+ expect(changeCount).toBe(1);
18
+ });
19
+
20
+ test("triggers onChange multiple times for multiple state changes", async (c) => {
21
+ const { client } = await setupDriverTest(c, driverTestConfig);
22
+
23
+ const actor = client.onStateChangeActor.getOrCreate();
24
+
25
+ // Modify state multiple times
26
+ await actor.incrementMultiple(3);
27
+
28
+ // Check that onChange was called for each modification
29
+ const changeCount = await actor.getChangeCount();
30
+ expect(changeCount).toBe(3);
31
+ });
32
+
33
+ test("does NOT trigger onChange for read-only actions", async (c) => {
34
+ const { client } = await setupDriverTest(c, driverTestConfig);
35
+
36
+ const actor = client.onStateChangeActor.getOrCreate();
37
+
38
+ // Set initial value
39
+ await actor.setValue(5);
40
+
41
+ // Read value without modifying - should NOT trigger onChange
42
+ const value = await actor.getValue();
43
+ expect(value).toBe(5);
44
+
45
+ // Check that onChange was NOT called
46
+ const changeCount = await actor.getChangeCount();
47
+ expect(changeCount).toBe(1);
48
+ });
49
+
50
+ test("does NOT trigger onChange for computed values", async (c) => {
51
+ const { client } = await setupDriverTest(c, driverTestConfig);
52
+
53
+ const actor = client.onStateChangeActor.getOrCreate();
54
+
55
+ // Set initial value
56
+ await actor.setValue(3);
57
+
58
+ // Check that onChange was called
59
+ {
60
+ const changeCount = await actor.getChangeCount();
61
+ expect(changeCount).toBe(1);
62
+ }
63
+
64
+ // Compute value without modifying state - should NOT trigger onChange
65
+ const doubled = await actor.getDoubled();
66
+ expect(doubled).toBe(6);
67
+
68
+ // Check that onChange was NOT called
69
+ {
70
+ const changeCount = await actor.getChangeCount();
71
+ expect(changeCount).toBe(1);
72
+ }
73
+ });
74
+
75
+ test("simple: connect, call action, dispose does NOT trigger onChange", async (c) => {
76
+ const { client } = await setupDriverTest(c, driverTestConfig);
77
+
78
+ const actor = client.onStateChangeActor.getOrCreate();
79
+
80
+ // Connect to the actor
81
+ const connection = await actor.connect();
82
+
83
+ // Call an action that doesn't modify state
84
+ const value = await connection.getValue();
85
+ expect(value).toBe(0);
86
+
87
+ // Dispose the connection
88
+ await connection.dispose();
89
+
90
+ // Verify that onChange was NOT triggered
91
+ const changeCount = await actor.getChangeCount();
92
+ expect(changeCount).toBe(0);
93
+ });
94
+ });
95
+ }