rivetkit 2.0.24-rc.1 → 2.0.24

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 (228) hide show
  1. package/dist/schemas/actor-persist/v2.ts +3 -3
  2. package/dist/schemas/actor-persist/v3.ts +274 -0
  3. package/dist/schemas/client-protocol/v2.ts +432 -0
  4. package/dist/schemas/file-system-driver/v2.ts +136 -0
  5. package/dist/tsup/actor/errors.cjs +2 -4
  6. package/dist/tsup/actor/errors.cjs.map +1 -1
  7. package/dist/tsup/actor/errors.d.cts +7 -10
  8. package/dist/tsup/actor/errors.d.ts +7 -10
  9. package/dist/tsup/actor/errors.js +9 -11
  10. package/dist/tsup/{actor-router-consts-B3Lu87yJ.d.cts → actor-router-consts-DzI2szci.d.cts} +5 -9
  11. package/dist/tsup/{actor-router-consts-B3Lu87yJ.d.ts → actor-router-consts-DzI2szci.d.ts} +5 -9
  12. package/dist/tsup/{chunk-HHFKKVLR.cjs → chunk-3543NCSN.cjs} +45 -57
  13. package/dist/tsup/chunk-3543NCSN.cjs.map +1 -0
  14. package/dist/tsup/chunk-4SHILYS5.cjs +5694 -0
  15. package/dist/tsup/chunk-4SHILYS5.cjs.map +1 -0
  16. package/dist/tsup/{chunk-ZTH3KYFH.cjs → chunk-5BZO5XPS.cjs} +3 -3
  17. package/dist/tsup/{chunk-ZTH3KYFH.cjs.map → chunk-5BZO5XPS.cjs.map} +1 -1
  18. package/dist/tsup/{chunk-PLUN2NQT.js → chunk-BAIGSF64.js} +189 -187
  19. package/dist/tsup/chunk-BAIGSF64.js.map +1 -0
  20. package/dist/tsup/{chunk-SHVX2QUR.cjs → chunk-CHLZBSI2.cjs} +17 -17
  21. package/dist/tsup/chunk-CHLZBSI2.cjs.map +1 -0
  22. package/dist/tsup/chunk-D3SLADUD.cjs +512 -0
  23. package/dist/tsup/chunk-D3SLADUD.cjs.map +1 -0
  24. package/dist/tsup/{chunk-KSRXX3Z4.cjs → chunk-D6762AOA.cjs} +20 -25
  25. package/dist/tsup/chunk-D6762AOA.cjs.map +1 -0
  26. package/dist/tsup/{chunk-7L65NNWP.cjs → chunk-DLK5YCTN.cjs} +187 -185
  27. package/dist/tsup/chunk-DLK5YCTN.cjs.map +1 -0
  28. package/dist/tsup/{chunk-YBG6R7LX.js → chunk-DUJQWGYD.js} +3 -7
  29. package/dist/tsup/chunk-DUJQWGYD.js.map +1 -0
  30. package/dist/tsup/{chunk-CD33GT6Z.js → chunk-EIPANQMF.js} +2 -2
  31. package/dist/tsup/{chunk-2JYPS5YM.cjs → chunk-ESMTDP7G.cjs} +6 -6
  32. package/dist/tsup/chunk-ESMTDP7G.cjs.map +1 -0
  33. package/dist/tsup/{chunk-VHGY7PU5.cjs → chunk-FVAKREFB.cjs} +1900 -1737
  34. package/dist/tsup/chunk-FVAKREFB.cjs.map +1 -0
  35. package/dist/tsup/{chunk-BLK27ES3.js → chunk-I3XT7WOF.js} +44 -56
  36. package/dist/tsup/chunk-I3XT7WOF.js.map +1 -0
  37. package/dist/tsup/{chunk-YBHYXIP6.js → chunk-IMDS5T42.js} +3 -3
  38. package/dist/tsup/chunk-IMDS5T42.js.map +1 -0
  39. package/dist/tsup/{chunk-INNFK746.cjs → chunk-J3HZJF2P.cjs} +10 -14
  40. package/dist/tsup/chunk-J3HZJF2P.cjs.map +1 -0
  41. package/dist/tsup/{chunk-BYMKMOBS.js → chunk-MBBJUHSP.js} +1844 -1681
  42. package/dist/tsup/chunk-MBBJUHSP.js.map +1 -0
  43. package/dist/tsup/{chunk-BOMZS2TJ.js → chunk-MO5CB6MD.js} +9 -9
  44. package/dist/tsup/chunk-MO5CB6MD.js.map +1 -0
  45. package/dist/tsup/chunk-OFOTPKAH.js +512 -0
  46. package/dist/tsup/chunk-OFOTPKAH.js.map +1 -0
  47. package/dist/tsup/{chunk-G64QUEDJ.js → chunk-W6RDS6NW.js} +23 -28
  48. package/dist/tsup/chunk-W6RDS6NW.js.map +1 -0
  49. package/dist/tsup/{chunk-36JJ4IQB.cjs → chunk-YC5DUHPM.cjs} +4 -8
  50. package/dist/tsup/chunk-YC5DUHPM.cjs.map +1 -0
  51. package/dist/tsup/{chunk-FX7TWFQR.js → chunk-YC7YPM2T.js} +2 -6
  52. package/dist/tsup/chunk-YC7YPM2T.js.map +1 -0
  53. package/dist/tsup/{chunk-227FEWMB.js → chunk-ZSPU5R4C.js} +3322 -2251
  54. package/dist/tsup/chunk-ZSPU5R4C.js.map +1 -0
  55. package/dist/tsup/client/mod.cjs +9 -9
  56. package/dist/tsup/client/mod.d.cts +5 -7
  57. package/dist/tsup/client/mod.d.ts +5 -7
  58. package/dist/tsup/client/mod.js +8 -8
  59. package/dist/tsup/common/log.cjs +3 -3
  60. package/dist/tsup/common/log.js +2 -2
  61. package/dist/tsup/common/websocket.cjs +4 -4
  62. package/dist/tsup/common/websocket.js +3 -3
  63. package/dist/tsup/{conn-B3Vhbgnd.d.ts → config-BRDYDraU.d.cts} +1119 -1047
  64. package/dist/tsup/{conn-DJWL3nGx.d.cts → config-Bo-blHpJ.d.ts} +1119 -1047
  65. package/dist/tsup/driver-helpers/mod.cjs +5 -13
  66. package/dist/tsup/driver-helpers/mod.cjs.map +1 -1
  67. package/dist/tsup/driver-helpers/mod.d.cts +11 -9
  68. package/dist/tsup/driver-helpers/mod.d.ts +11 -9
  69. package/dist/tsup/driver-helpers/mod.js +14 -22
  70. package/dist/tsup/driver-test-suite/mod.cjs +474 -303
  71. package/dist/tsup/driver-test-suite/mod.cjs.map +1 -1
  72. package/dist/tsup/driver-test-suite/mod.d.cts +6 -9
  73. package/dist/tsup/driver-test-suite/mod.d.ts +6 -9
  74. package/dist/tsup/driver-test-suite/mod.js +1085 -914
  75. package/dist/tsup/driver-test-suite/mod.js.map +1 -1
  76. package/dist/tsup/inspector/mod.cjs +6 -6
  77. package/dist/tsup/inspector/mod.d.cts +5 -7
  78. package/dist/tsup/inspector/mod.d.ts +5 -7
  79. package/dist/tsup/inspector/mod.js +5 -5
  80. package/dist/tsup/mod.cjs +10 -16
  81. package/dist/tsup/mod.cjs.map +1 -1
  82. package/dist/tsup/mod.d.cts +23 -25
  83. package/dist/tsup/mod.d.ts +23 -25
  84. package/dist/tsup/mod.js +17 -23
  85. package/dist/tsup/test/mod.cjs +11 -11
  86. package/dist/tsup/test/mod.d.cts +4 -6
  87. package/dist/tsup/test/mod.d.ts +4 -6
  88. package/dist/tsup/test/mod.js +10 -10
  89. package/dist/tsup/utils.cjs +3 -5
  90. package/dist/tsup/utils.cjs.map +1 -1
  91. package/dist/tsup/utils.d.cts +1 -2
  92. package/dist/tsup/utils.d.ts +1 -2
  93. package/dist/tsup/utils.js +2 -4
  94. package/package.json +13 -6
  95. package/src/actor/config.ts +56 -44
  96. package/src/actor/conn/driver.ts +61 -0
  97. package/src/actor/conn/drivers/http.ts +17 -0
  98. package/src/actor/conn/drivers/raw-request.ts +24 -0
  99. package/src/actor/conn/drivers/raw-websocket.ts +65 -0
  100. package/src/actor/conn/drivers/websocket.ts +129 -0
  101. package/src/actor/conn/mod.ts +232 -0
  102. package/src/actor/conn/persisted.ts +81 -0
  103. package/src/actor/conn/state-manager.ts +196 -0
  104. package/src/actor/contexts/action.ts +23 -0
  105. package/src/actor/{context.ts → contexts/actor.ts} +19 -8
  106. package/src/actor/contexts/conn-init.ts +31 -0
  107. package/src/actor/contexts/conn.ts +48 -0
  108. package/src/actor/contexts/create-conn-state.ts +13 -0
  109. package/src/actor/contexts/on-before-connect.ts +13 -0
  110. package/src/actor/contexts/on-connect.ts +22 -0
  111. package/src/actor/contexts/request.ts +48 -0
  112. package/src/actor/contexts/websocket.ts +48 -0
  113. package/src/actor/definition.ts +3 -3
  114. package/src/actor/driver.ts +36 -5
  115. package/src/actor/errors.ts +19 -24
  116. package/src/actor/instance/connection-manager.ts +465 -0
  117. package/src/actor/instance/event-manager.ts +292 -0
  118. package/src/actor/instance/kv.ts +15 -0
  119. package/src/actor/instance/mod.ts +1107 -0
  120. package/src/actor/instance/persisted.ts +67 -0
  121. package/src/actor/instance/schedule-manager.ts +349 -0
  122. package/src/actor/instance/state-manager.ts +502 -0
  123. package/src/actor/mod.ts +13 -16
  124. package/src/actor/protocol/old.ts +131 -43
  125. package/src/actor/protocol/serde.ts +19 -4
  126. package/src/actor/router-endpoints.ts +61 -586
  127. package/src/actor/router-websocket-endpoints.ts +408 -0
  128. package/src/actor/router.ts +63 -197
  129. package/src/actor/schedule.ts +1 -1
  130. package/src/client/actor-conn.ts +183 -249
  131. package/src/client/actor-handle.ts +29 -6
  132. package/src/client/client.ts +0 -4
  133. package/src/client/config.ts +1 -4
  134. package/src/client/mod.ts +0 -1
  135. package/src/client/raw-utils.ts +3 -3
  136. package/src/client/utils.ts +85 -39
  137. package/src/common/actor-router-consts.ts +5 -12
  138. package/src/common/{inline-websocket-adapter2.ts → inline-websocket-adapter.ts} +26 -48
  139. package/src/common/log.ts +1 -1
  140. package/src/common/router.ts +28 -17
  141. package/src/common/utils.ts +2 -0
  142. package/src/driver-helpers/mod.ts +7 -10
  143. package/src/driver-helpers/utils.ts +18 -9
  144. package/src/driver-test-suite/mod.ts +26 -50
  145. package/src/driver-test-suite/test-inline-client-driver.ts +27 -51
  146. package/src/driver-test-suite/tests/actor-conn-hibernation.ts +150 -0
  147. package/src/driver-test-suite/tests/actor-conn-state.ts +1 -4
  148. package/src/driver-test-suite/tests/actor-conn.ts +5 -9
  149. package/src/driver-test-suite/tests/actor-destroy.ts +294 -0
  150. package/src/driver-test-suite/tests/actor-driver.ts +0 -7
  151. package/src/driver-test-suite/tests/actor-handle.ts +12 -12
  152. package/src/driver-test-suite/tests/actor-metadata.ts +1 -1
  153. package/src/driver-test-suite/tests/manager-driver.ts +1 -1
  154. package/src/driver-test-suite/tests/raw-http-direct-registry.ts +8 -8
  155. package/src/driver-test-suite/tests/raw-http-request-properties.ts +6 -5
  156. package/src/driver-test-suite/tests/raw-http.ts +5 -5
  157. package/src/driver-test-suite/tests/raw-websocket-direct-registry.ts +7 -7
  158. package/src/driver-test-suite/tests/request-access.ts +4 -4
  159. package/src/driver-test-suite/utils.ts +6 -10
  160. package/src/drivers/engine/actor-driver.ts +614 -424
  161. package/src/drivers/engine/mod.ts +0 -1
  162. package/src/drivers/file-system/actor.ts +24 -12
  163. package/src/drivers/file-system/global-state.ts +427 -37
  164. package/src/drivers/file-system/manager.ts +71 -83
  165. package/src/drivers/file-system/mod.ts +3 -0
  166. package/src/drivers/file-system/utils.ts +18 -8
  167. package/src/engine-process/mod.ts +38 -38
  168. package/src/inspector/utils.ts +7 -5
  169. package/src/manager/driver.ts +11 -4
  170. package/src/manager/gateway.ts +4 -29
  171. package/src/manager/protocol/mod.ts +0 -2
  172. package/src/manager/protocol/query.ts +0 -4
  173. package/src/manager/router.ts +67 -64
  174. package/src/manager-api/actors.ts +13 -0
  175. package/src/mod.ts +1 -3
  176. package/src/registry/mod.ts +20 -20
  177. package/src/registry/serve.ts +9 -14
  178. package/src/remote-manager-driver/actor-websocket-client.ts +1 -16
  179. package/src/remote-manager-driver/api-endpoints.ts +13 -1
  180. package/src/remote-manager-driver/api-utils.ts +8 -0
  181. package/src/remote-manager-driver/metadata.ts +58 -0
  182. package/src/remote-manager-driver/mod.ts +47 -62
  183. package/src/remote-manager-driver/ws-proxy.ts +1 -1
  184. package/src/schemas/actor-persist/mod.ts +1 -1
  185. package/src/schemas/actor-persist/versioned.ts +56 -31
  186. package/src/schemas/client-protocol/mod.ts +1 -1
  187. package/src/schemas/client-protocol/versioned.ts +41 -21
  188. package/src/schemas/client-protocol-zod/mod.ts +103 -0
  189. package/src/schemas/file-system-driver/mod.ts +1 -1
  190. package/src/schemas/file-system-driver/versioned.ts +42 -19
  191. package/src/serde.ts +33 -11
  192. package/src/test/mod.ts +7 -3
  193. package/src/utils/node.ts +173 -0
  194. package/src/utils.ts +0 -4
  195. package/dist/tsup/chunk-227FEWMB.js.map +0 -1
  196. package/dist/tsup/chunk-2JYPS5YM.cjs.map +0 -1
  197. package/dist/tsup/chunk-36JJ4IQB.cjs.map +0 -1
  198. package/dist/tsup/chunk-7L65NNWP.cjs.map +0 -1
  199. package/dist/tsup/chunk-BLK27ES3.js.map +0 -1
  200. package/dist/tsup/chunk-BOMZS2TJ.js.map +0 -1
  201. package/dist/tsup/chunk-BYMKMOBS.js.map +0 -1
  202. package/dist/tsup/chunk-FX7TWFQR.js.map +0 -1
  203. package/dist/tsup/chunk-G64QUEDJ.js.map +0 -1
  204. package/dist/tsup/chunk-HHFKKVLR.cjs.map +0 -1
  205. package/dist/tsup/chunk-INNFK746.cjs.map +0 -1
  206. package/dist/tsup/chunk-KSRXX3Z4.cjs.map +0 -1
  207. package/dist/tsup/chunk-O44LFKSB.cjs +0 -4623
  208. package/dist/tsup/chunk-O44LFKSB.cjs.map +0 -1
  209. package/dist/tsup/chunk-PLUN2NQT.js.map +0 -1
  210. package/dist/tsup/chunk-S4UJG7ZE.js +0 -1119
  211. package/dist/tsup/chunk-S4UJG7ZE.js.map +0 -1
  212. package/dist/tsup/chunk-SHVX2QUR.cjs.map +0 -1
  213. package/dist/tsup/chunk-VFB23BYZ.cjs +0 -1119
  214. package/dist/tsup/chunk-VFB23BYZ.cjs.map +0 -1
  215. package/dist/tsup/chunk-VHGY7PU5.cjs.map +0 -1
  216. package/dist/tsup/chunk-YBG6R7LX.js.map +0 -1
  217. package/dist/tsup/chunk-YBHYXIP6.js.map +0 -1
  218. package/src/actor/action.ts +0 -178
  219. package/src/actor/conn-drivers.ts +0 -216
  220. package/src/actor/conn-socket.ts +0 -8
  221. package/src/actor/conn.ts +0 -272
  222. package/src/actor/instance.ts +0 -2336
  223. package/src/actor/persisted.ts +0 -49
  224. package/src/actor/unstable-react.ts +0 -110
  225. package/src/driver-test-suite/tests/actor-reconnect.ts +0 -170
  226. package/src/drivers/engine/kv.ts +0 -3
  227. package/src/manager/hono-websocket-adapter.ts +0 -393
  228. /package/dist/tsup/{chunk-CD33GT6Z.js.map → chunk-EIPANQMF.js.map} +0 -0
@@ -1,33 +1,16 @@
1
- import { Hono, type Context as HonoContext } from "hono";
1
+ import { Hono } from "hono";
2
2
  import invariant from "invariant";
3
- import { EncodingSchema } from "@/actor/protocol/serde";
4
3
  import {
5
4
  type ActionOpts,
6
5
  type ActionOutput,
7
- type ConnectSseOpts,
8
- type ConnectSseOutput,
9
- type ConnectWebSocketOpts,
10
- type ConnectWebSocketOutput,
11
6
  type ConnsMessageOpts,
12
7
  handleAction,
13
- handleConnectionClose,
14
- handleConnectionMessage,
15
- handleRawWebSocketHandler,
16
- handleSseConnect,
17
- handleWebSocketConnect,
8
+ handleRawRequest,
18
9
  } from "@/actor/router-endpoints";
19
10
  import {
20
- HEADER_CONN_ID,
21
- HEADER_CONN_PARAMS,
22
- HEADER_CONN_TOKEN,
23
- HEADER_ENCODING,
24
- PATH_CONNECT_WEBSOCKET,
25
- PATH_RAW_WEBSOCKET_PREFIX,
26
- WS_PROTOCOL_CONN_ID,
27
- WS_PROTOCOL_CONN_PARAMS,
28
- WS_PROTOCOL_CONN_TOKEN,
29
- WS_PROTOCOL_ENCODING,
30
- WS_PROTOCOL_TOKEN,
11
+ PATH_CONNECT,
12
+ PATH_INSPECTOR_CONNECT,
13
+ PATH_WEBSOCKET_PREFIX,
31
14
  } from "@/common/actor-router-consts";
32
15
  import {
33
16
  handleRouteError,
@@ -41,21 +24,15 @@ import {
41
24
  } from "@/inspector/actor";
42
25
  import { isInspectorEnabled, secureInspector } from "@/inspector/utils";
43
26
  import type { RunnerConfig } from "@/registry/run-config";
44
- import { generateConnRequestId } from "./conn";
45
- import { ConnDriverKind } from "./conn-drivers";
27
+ import { CONN_DRIVER_SYMBOL } from "./conn/mod";
46
28
  import type { ActorDriver } from "./driver";
47
- import { InternalError } from "./errors";
48
29
  import { loggerWithoutContext } from "./log";
30
+ import {
31
+ parseWebSocketProtocols,
32
+ routeWebSocket,
33
+ } from "./router-websocket-endpoints";
49
34
 
50
- export type {
51
- ConnectWebSocketOpts,
52
- ConnectWebSocketOutput,
53
- ConnectSseOpts,
54
- ConnectSseOutput,
55
- ActionOpts,
56
- ActionOutput,
57
- ConnsMessageOpts,
58
- };
35
+ export type { ActionOpts, ActionOutput, ConnsMessageOpts };
59
36
 
60
37
  interface ActorRouterBindings {
61
38
  actorId: string;
@@ -80,11 +57,11 @@ export function createActorRouter(
80
57
  // Track all HTTP requests to prevent actor from sleeping during active requests
81
58
  router.use("*", async (c, next) => {
82
59
  const actor = await actorDriver.loadActor(c.env.actorId);
83
- actor.__beginHonoHttpRequest();
60
+ actor.beginHonoHttpRequest();
84
61
  try {
85
62
  await next();
86
63
  } finally {
87
- actor.__endHonoHttpRequest();
64
+ actor.endHonoHttpRequest();
88
65
  }
89
66
  });
90
67
 
@@ -108,101 +85,60 @@ export function createActorRouter(
108
85
  }
109
86
 
110
87
  const actor = await actorDriver.loadActor(c.env.actorId);
111
- const conn = actor.__getConnForId(connId);
88
+ const conn = actor.connectionManager.getConnForId(connId);
112
89
 
113
90
  if (!conn) {
114
91
  return c.text(`Connection not found: ${connId}`, 404);
115
92
  }
116
93
 
117
- // Force close the websocket/SSE connection without clean shutdown
118
- const driverState = conn.__driverState;
119
- if (driverState && ConnDriverKind.WEBSOCKET in driverState) {
120
- const ws = driverState[ConnDriverKind.WEBSOCKET].websocket;
121
-
122
- // Force close without sending close frame
123
- (ws.raw as any).terminate();
124
- } else if (driverState && ConnDriverKind.SSE in driverState) {
125
- const stream = driverState[ConnDriverKind.SSE].stream;
126
-
127
- // Force close the SSE stream
128
- stream.abort();
94
+ // Force close the connection without clean shutdown
95
+ if (conn[CONN_DRIVER_SYMBOL]?.terminate) {
96
+ conn[CONN_DRIVER_SYMBOL].terminate(actor, conn);
129
97
  }
130
98
 
131
99
  return c.json({ success: true });
132
100
  });
133
101
  }
134
102
 
135
- router.get(PATH_CONNECT_WEBSOCKET, async (c) => {
136
- const upgradeWebSocket = runConfig.getUpgradeWebSocket?.();
137
- if (upgradeWebSocket) {
138
- return upgradeWebSocket(async (c) => {
139
- // Parse configuration from Sec-WebSocket-Protocol header
140
- const protocols = c.req.header("sec-websocket-protocol");
141
- let encodingRaw: string | undefined;
142
- let connParamsRaw: string | undefined;
143
- let connIdRaw: string | undefined;
144
- let connTokenRaw: string | undefined;
145
-
146
- if (protocols) {
147
- const protocolList = protocols
148
- .split(",")
149
- .map((p) => p.trim());
150
- for (const protocol of protocolList) {
151
- if (protocol.startsWith(WS_PROTOCOL_ENCODING)) {
152
- encodingRaw = protocol.substring(
153
- WS_PROTOCOL_ENCODING.length,
154
- );
155
- } else if (
156
- protocol.startsWith(WS_PROTOCOL_CONN_PARAMS)
157
- ) {
158
- connParamsRaw = decodeURIComponent(
159
- protocol.substring(
160
- WS_PROTOCOL_CONN_PARAMS.length,
161
- ),
162
- );
163
- } else if (protocol.startsWith(WS_PROTOCOL_CONN_ID)) {
164
- connIdRaw = protocol.substring(
165
- WS_PROTOCOL_CONN_ID.length,
166
- );
167
- } else if (
168
- protocol.startsWith(WS_PROTOCOL_CONN_TOKEN)
169
- ) {
170
- connTokenRaw = protocol.substring(
171
- WS_PROTOCOL_CONN_TOKEN.length,
172
- );
173
- }
174
- }
175
- }
176
-
177
- const encoding = EncodingSchema.parse(encodingRaw);
178
- const connParams = connParamsRaw
179
- ? JSON.parse(connParamsRaw)
180
- : undefined;
181
-
182
- return await handleWebSocketConnect(
183
- c.req.raw,
184
- runConfig,
185
- actorDriver,
186
- c.env.actorId,
187
- encoding,
188
- connParams,
189
- generateConnRequestId(),
190
- undefined,
191
- connIdRaw,
192
- connTokenRaw,
103
+ // Route all WebSocket paths using the same handler
104
+ //
105
+ // All WebSockets use a separate underlying router in routeWebSocket since
106
+ // WebSockets also need to be routed from ManagerDriver.proxyWebSocket and
107
+ // ManagerDriver.openWebSocket.
108
+ router.on(
109
+ "GET",
110
+ [PATH_CONNECT, `${PATH_WEBSOCKET_PREFIX}*`, PATH_INSPECTOR_CONNECT],
111
+ async (c) => {
112
+ const upgradeWebSocket = runConfig.getUpgradeWebSocket?.();
113
+ if (upgradeWebSocket) {
114
+ return upgradeWebSocket(async (c) => {
115
+ const protocols = c.req.header("sec-websocket-protocol");
116
+ const { encoding, connParams } =
117
+ parseWebSocketProtocols(protocols);
118
+
119
+ return await routeWebSocket(
120
+ c.req.raw,
121
+ c.req.path,
122
+ c.req.header(),
123
+ runConfig,
124
+ actorDriver,
125
+ c.env.actorId,
126
+ encoding,
127
+ connParams,
128
+ undefined,
129
+ undefined,
130
+ false,
131
+ false,
132
+ );
133
+ })(c, noopNext());
134
+ } else {
135
+ return c.text(
136
+ "WebSockets are not enabled for this driver.",
137
+ 400,
193
138
  );
194
- })(c, noopNext());
195
- } else {
196
- return c.text(
197
- "WebSockets are not enabled for this driver. Use SSE instead.",
198
- 400,
199
- );
200
- }
201
- });
202
-
203
- router.get("/connect/sse", async (c) => {
204
- return handleSseConnect(c, runConfig, actorDriver, c.env.actorId);
205
- });
139
+ }
140
+ },
141
+ );
206
142
 
207
143
  router.post("/action/:action", async (c) => {
208
144
  const actionName = c.req.param("action");
@@ -216,46 +152,11 @@ export function createActorRouter(
216
152
  );
217
153
  });
218
154
 
219
- router.post("/connections/message", async (c) => {
220
- const connId = c.req.header(HEADER_CONN_ID);
221
- const connToken = c.req.header(HEADER_CONN_TOKEN);
222
- if (!connId || !connToken) {
223
- throw new Error("Missing required parameters");
224
- }
225
- return handleConnectionMessage(
226
- c,
227
- runConfig,
228
- actorDriver,
229
- connId,
230
- connToken,
231
- c.env.actorId,
232
- );
233
- });
234
-
235
- router.post("/connections/close", async (c) => {
236
- const connId = c.req.header(HEADER_CONN_ID);
237
- const connToken = c.req.header(HEADER_CONN_TOKEN);
238
- if (!connId || !connToken) {
239
- throw new Error("Missing required parameters");
240
- }
241
- return handleConnectionClose(
242
- c,
243
- runConfig,
244
- actorDriver,
245
- connId,
246
- connToken,
247
- c.env.actorId,
248
- );
249
- });
250
-
251
- // Raw HTTP endpoints - /http/*
252
- router.all("/raw/http/*", async (c) => {
253
- const actor = await actorDriver.loadActor(c.env.actorId);
254
-
155
+ router.all("/request/*", async (c) => {
255
156
  // TODO: This is not a clean way of doing this since `/http/` might exist mid-path
256
157
  // Strip the /http prefix from the URL to get the original path
257
158
  const url = new URL(c.req.url);
258
- const originalPath = url.pathname.replace(/^\/raw\/http/, "") || "/";
159
+ const originalPath = url.pathname.replace(/^\/request/, "") || "/";
259
160
 
260
161
  // Create a new request with the corrected URL
261
162
  const correctedUrl = new URL(originalPath + url.search, url.origin);
@@ -272,47 +173,12 @@ export function createActorRouter(
272
173
  to: correctedRequest.url,
273
174
  });
274
175
 
275
- // Call the actor's onFetch handler - it will throw appropriate errors
276
- const response = await actor.handleFetch(correctedRequest, {});
277
-
278
- // This should never happen now since handleFetch throws errors
279
- if (!response) {
280
- throw new InternalError("handleFetch returned void unexpectedly");
281
- }
282
-
283
- return response;
284
- });
285
-
286
- // Raw WebSocket endpoint - /websocket/*
287
- router.get(`${PATH_RAW_WEBSOCKET_PREFIX}*`, async (c) => {
288
- const upgradeWebSocket = runConfig.getUpgradeWebSocket?.();
289
- if (upgradeWebSocket) {
290
- return upgradeWebSocket(async (c) => {
291
- const url = new URL(c.req.url);
292
- const pathWithQuery = c.req.path + url.search;
293
-
294
- loggerWithoutContext().debug({
295
- msg: "actor router raw websocket",
296
- path: c.req.path,
297
- url: c.req.url,
298
- search: url.search,
299
- pathWithQuery,
300
- });
301
-
302
- return await handleRawWebSocketHandler(
303
- c.req.raw,
304
- pathWithQuery,
305
- actorDriver,
306
- c.env.actorId,
307
- undefined,
308
- );
309
- })(c, noopNext());
310
- } else {
311
- return c.text(
312
- "WebSockets are not enabled for this driver. Use SSE instead.",
313
- 400,
314
- );
315
- }
176
+ return await handleRawRequest(
177
+ c,
178
+ correctedRequest,
179
+ actorDriver,
180
+ c.env.actorId,
181
+ );
316
182
  });
317
183
 
318
184
  if (isInspectorEnabled(runConfig, "actor")) {
@@ -1,4 +1,4 @@
1
- import type { AnyActorInstance } from "./instance";
1
+ import type { AnyActorInstance } from "./instance/mod";
2
2
 
3
3
  export class Schedule {
4
4
  #actor: AnyActorInstance;