diff --git a/clients/openapi/openapi.json b/clients/openapi/openapi.json index 8ad9b7b0b..b900d5a82 100644 --- a/clients/openapi/openapi.json +++ b/clients/openapi/openapi.json @@ -24,7 +24,15 @@ "schema": { "type": "string" }, - "required": true, + "required": false, + "name": "actor_ids", + "in": "query" + }, + { + "schema": { + "type": "string" + }, + "required": false, "name": "key", "in": "query" } diff --git a/packages/cloudflare-workers/src/actor-handler-do.ts b/packages/cloudflare-workers/src/actor-handler-do.ts index 72e650a4a..46ebadcf8 100644 --- a/packages/cloudflare-workers/src/actor-handler-do.ts +++ b/packages/cloudflare-workers/src/actor-handler-do.ts @@ -63,7 +63,8 @@ export function createActorDurableObject( */ return class ActorHandler extends DurableObject - implements ActorHandlerInterface { + implements ActorHandlerInterface + { #initialized?: InitializedData; #initializedPromise?: ReturnType>; diff --git a/packages/rivetkit/package.json b/packages/rivetkit/package.json index 306062ce1..f1141bbe1 100644 --- a/packages/rivetkit/package.json +++ b/packages/rivetkit/package.json @@ -163,7 +163,7 @@ "@bare-ts/lib": "~0.3.0", "@hono/standard-validator": "^0.1.3", "@hono/zod-openapi": "^0.19.10", - "@rivetkit/engine-runner": "https://pkg.pr.new/rivet-dev/engine/@rivetkit/engine-runner@b72b232", + "@rivetkit/engine-runner": "https://pkg.pr.new/rivet-dev/engine/@rivetkit/engine-runner@9676fe4", "@rivetkit/fast-json-patch": "^3.1.2", "cbor-x": "^1.6.0", "hono": "^4.9.8", diff --git a/packages/rivetkit/src/drivers/engine/actor-driver.ts b/packages/rivetkit/src/drivers/engine/actor-driver.ts index 44c6b0950..1f5d2b0da 100644 --- a/packages/rivetkit/src/drivers/engine/actor-driver.ts +++ b/packages/rivetkit/src/drivers/engine/actor-driver.ts @@ -22,6 +22,8 @@ import type { Client } from "@/client/client"; import { PATH_CONNECT_WEBSOCKET, PATH_RAW_WEBSOCKET_PREFIX, + WS_PROTOCOL_CONN_PARAMS, + WS_PROTOCOL_ENCODING, } from "@/common/actor-router-consts"; import type { UpgradeWebSocketArgs } from "@/common/inline-websocket-adapter2"; import { getLogger } from "@/common/log"; @@ -85,6 +87,7 @@ export class EngineActorDriver implements ActorDriver { totalSlots: config.totalSlots, runnerName: config.runnerName, runnerKey: config.runnerKey, + token: config.token, metadata: { inspectorToken: this.#runConfig.inspector.token(), }, @@ -293,9 +296,24 @@ export class EngineActorDriver implements ActorDriver { const url = new URL(request.url); - // Parse headers - const encodingRaw = request.headers.get(HEADER_ENCODING); - const connParamsRaw = request.headers.get(HEADER_CONN_PARAMS); + const protocols = request.headers.get("sec-websocket-protocol"); + if (protocols === null) + throw new Error(`Missing sec-websocket-protocol header`); + + let encodingRaw: string | undefined; + let connParamsRaw: string | undefined; + + // Parse protocols + const protocolList = protocols.split(",").map((p) => p.trim()); + for (const protocol of protocolList) { + if (protocol.startsWith(WS_PROTOCOL_ENCODING)) { + encodingRaw = protocol.substring(WS_PROTOCOL_ENCODING.length); + } else if (protocol.startsWith(WS_PROTOCOL_CONN_PARAMS)) { + connParamsRaw = decodeURIComponent( + protocol.substring(WS_PROTOCOL_CONN_PARAMS.length), + ); + } + } const encoding = EncodingSchema.parse(encodingRaw); const connParams = connParamsRaw ? JSON.parse(connParamsRaw) : undefined; diff --git a/packages/rivetkit/src/drivers/engine/config.ts b/packages/rivetkit/src/drivers/engine/config.ts index 4bdc80c22..5ff51fe66 100644 --- a/packages/rivetkit/src/drivers/engine/config.ts +++ b/packages/rivetkit/src/drivers/engine/config.ts @@ -23,6 +23,10 @@ export const ConfigSchema = z .default( () => getEnvUniversal("RIVET_RUNNER_KEY") ?? crypto.randomUUID(), ), + token: z + .string() + .optional() + .transform((val) => val ?? getEnvUniversal("RIVET_TOKEN")), totalSlots: z.number().default(100_000), }) .default({}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3024c6fa0..675d09355 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1131,8 +1131,8 @@ importers: specifier: ^0.19.10 version: 0.19.10(hono@4.9.8)(zod@3.25.76) '@rivetkit/engine-runner': - specifier: https://pkg.pr.new/rivet-dev/engine/@rivetkit/engine-runner@b72b232 - version: https://pkg.pr.new/rivet-dev/engine/@rivetkit/engine-runner@b72b232 + specifier: https://pkg.pr.new/rivet-dev/engine/@rivetkit/engine-runner@9676fe4 + version: https://pkg.pr.new/rivet-dev/engine/@rivetkit/engine-runner@9676fe4 '@rivetkit/fast-json-patch': specifier: ^3.1.2 version: 3.1.2 @@ -2496,17 +2496,13 @@ packages: '@polka/url@1.0.0-next.29': resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} - '@rivetkit/engine-runner-protocol@https://pkg.pr.new/rivet-dev/engine/@rivetkit/engine-runner-protocol@b72b2324c50c5449ed1844a060928d80d1151839': - resolution: {tarball: https://pkg.pr.new/rivet-dev/engine/@rivetkit/engine-runner-protocol@b72b2324c50c5449ed1844a060928d80d1151839} - version: 25.6.1 + '@rivetkit/engine-runner-protocol@https://pkg.pr.new/rivet-dev/engine/@rivetkit/engine-runner-protocol@9676fe417c861c0570d6188c631dfc2aa848a61c': + resolution: {tarball: https://pkg.pr.new/rivet-dev/engine/@rivetkit/engine-runner-protocol@9676fe417c861c0570d6188c631dfc2aa848a61c} + version: 25.7.1 - '@rivetkit/engine-runner@https://pkg.pr.new/rivet-dev/engine/@rivetkit/engine-runner@b72b232': - resolution: {tarball: https://pkg.pr.new/rivet-dev/engine/@rivetkit/engine-runner@b72b232} - version: 25.6.1 - - '@rivetkit/engine-tunnel-protocol@https://pkg.pr.new/rivet-dev/engine/@rivetkit/engine-tunnel-protocol@b72b2324c50c5449ed1844a060928d80d1151839': - resolution: {tarball: https://pkg.pr.new/rivet-dev/engine/@rivetkit/engine-tunnel-protocol@b72b2324c50c5449ed1844a060928d80d1151839} - version: 25.6.1 + '@rivetkit/engine-runner@https://pkg.pr.new/rivet-dev/engine/@rivetkit/engine-runner@9676fe4': + resolution: {tarball: https://pkg.pr.new/rivet-dev/engine/@rivetkit/engine-runner@9676fe4} + version: 25.7.1 '@rivetkit/fast-json-patch@3.1.2': resolution: {integrity: sha512-CtA50xgsSSzICQduF/NDShPRzvucnNvsW/lQO0WgMTT1XAj9Lfae4pm7r3llFwilgG+9iq76Hv1LUqNy72v6yw==} @@ -5773,14 +5769,13 @@ snapshots: '@polka/url@1.0.0-next.29': {} - '@rivetkit/engine-runner-protocol@https://pkg.pr.new/rivet-dev/engine/@rivetkit/engine-runner-protocol@b72b2324c50c5449ed1844a060928d80d1151839': + '@rivetkit/engine-runner-protocol@https://pkg.pr.new/rivet-dev/engine/@rivetkit/engine-runner-protocol@9676fe417c861c0570d6188c631dfc2aa848a61c': dependencies: '@bare-ts/lib': 0.4.0 - '@rivetkit/engine-runner@https://pkg.pr.new/rivet-dev/engine/@rivetkit/engine-runner@b72b232': + '@rivetkit/engine-runner@https://pkg.pr.new/rivet-dev/engine/@rivetkit/engine-runner@9676fe4': dependencies: - '@rivetkit/engine-runner-protocol': https://pkg.pr.new/rivet-dev/engine/@rivetkit/engine-runner-protocol@b72b2324c50c5449ed1844a060928d80d1151839 - '@rivetkit/engine-tunnel-protocol': https://pkg.pr.new/rivet-dev/engine/@rivetkit/engine-tunnel-protocol@b72b2324c50c5449ed1844a060928d80d1151839 + '@rivetkit/engine-runner-protocol': https://pkg.pr.new/rivet-dev/engine/@rivetkit/engine-runner-protocol@9676fe417c861c0570d6188c631dfc2aa848a61c pino: 9.9.5 uuid: 12.0.0 ws: 8.18.3 @@ -5788,10 +5783,6 @@ snapshots: - bufferutil - utf-8-validate - '@rivetkit/engine-tunnel-protocol@https://pkg.pr.new/rivet-dev/engine/@rivetkit/engine-tunnel-protocol@b72b2324c50c5449ed1844a060928d80d1151839': - dependencies: - '@bare-ts/lib': 0.4.0 - '@rivetkit/fast-json-patch@3.1.2': {} '@rolldown/pluginutils@1.0.0-beta.11': {}