Skip to content
This repository was archived by the owner on Oct 22, 2025. It is now read-only.

Commit bfd8180

Browse files
committed
chore(core): update keys -> key
1 parent 7ff83e6 commit bfd8180

File tree

9 files changed

+38
-37
lines changed

9 files changed

+38
-37
lines changed

packages/core/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,13 +166,13 @@
166166
"nanoevents": "^9.1.0",
167167
"on-change": "^5.0.1",
168168
"p-retry": "^6.2.1",
169-
"zod": "^3.25.76"
169+
"zod": "^3.25.76",
170+
"@rivetkit/engine-runner": "https://pkg.pr.new/rivet-gg/engine/@rivetkit/engine-runner@f8860f3"
170171
},
171172
"devDependencies": {
172173
"@hono/node-server": "^1.18.2",
173174
"@hono/node-ws": "^1.1.1",
174175
"@rivet-gg/actor-core": "^25.1.0",
175-
"@rivetkit/engine-runner": "https://pkg.pr.new/rivet-gg/engine/@rivetkit/engine-runner@7f23f3a",
176176
"@types/invariant": "^2",
177177
"@types/node": "^22.13.1",
178178
"@types/ws": "^8",

packages/core/src/drivers/engine/actor-driver.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,10 @@ export class EngineActorDriver implements ActorDriver {
178178
// TODO: Use alarm on sleep
179179
// TODO: Send alarm to runner
180180

181-
throw new Error("Alarms not implemented for engine driver");
181+
const delay = Math.max(timestamp - Date.now(), 0);
182+
setTimeout(() => {
183+
actor.onAlarm();
184+
}, delay);
182185
}
183186

184187
async getDatabase(_actorId: string): Promise<unknown | undefined> {

packages/core/src/drivers/engine/api-endpoints.ts

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,16 @@
1-
import { CreateRequest } from "@/client/mod";
21
import { apiCall } from "./api-utils";
32
import type { Config } from "./config";
43
import { serializeActorKey } from "./keys";
54

65
// MARK: Common types
76
export type RivetId = string;
87

9-
export interface ActorLifecycle {
10-
kill_timeout_ms: number;
11-
durable: boolean;
12-
}
13-
148
export interface Actor {
159
actor_id: RivetId;
1610
name: string;
17-
keys: string[];
11+
key: string;
1812
namespace_id: RivetId;
1913
runner_name_selector: string;
20-
lifecycle: ActorLifecycle;
2114
create_ts: number;
2215
connectable_ts?: number | null;
2316
destroy_ts?: number | null;
@@ -46,9 +39,9 @@ export interface ActorsGetOrCreateByIdResponse {
4639
export interface ActorsCreateRequest {
4740
name: string;
4841
runner_name_selector: string;
49-
keys?: string[] | null;
42+
crash_policy: string;
43+
key?: string | null;
5044
input?: string | null;
51-
durable?: boolean | null;
5245
}
5346

5447
export interface ActorsCreateResponse {
@@ -86,10 +79,10 @@ export async function getActorById(
8679
// MARK: Get or create actor by id
8780
export interface ActorsGetOrCreateByIdRequest {
8881
name: string;
89-
keys: string[];
82+
key: string;
9083
runner_name_selector: string;
84+
crash_policy: "restart";
9185
input?: string | null;
92-
durable?: boolean | null;
9386
}
9487

9588
export async function getOrCreateActorById(

packages/core/src/drivers/engine/config.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,22 @@ export const ConfigSchema = z
77
app: z.custom<Hono>().optional(),
88
endpoint: z
99
.string()
10-
.default(getEnvUniversal("RIVET_ENGINE") ?? "http://localhost:7080"),
10+
.default(
11+
() => getEnvUniversal("RIVET_ENGINE") ?? "http://localhost:7080",
12+
),
1113
pegboardEndpoint: z.string().optional(),
1214
namespace: z
1315
.string()
14-
.default(getEnvUniversal("RIVET_NAMESPACE") ?? "default"),
16+
.default(() => getEnvUniversal("RIVET_NAMESPACE") ?? "default"),
1517
runnerName: z
1618
.string()
17-
.default(getEnvUniversal("RIVET_RUNNER") ?? "rivetkit"),
19+
.default(() => getEnvUniversal("RIVET_RUNNER") ?? "rivetkit"),
1820
// TODO: Automatically attempt ot determine key by common env vars (e.g. k8s pod name)
1921
runnerKey: z
2022
.string()
21-
.default(getEnvUniversal("RIVET_RUNNER_KEY") ?? crypto.randomUUID()),
23+
.default(
24+
() => getEnvUniversal("RIVET_RUNNER_KEY") ?? crypto.randomUUID(),
25+
),
2226
totalSlots: z.number().default(100_000),
2327
addresses: z
2428
.record(

packages/core/src/drivers/engine/manager-driver.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ export class EngineManagerDriver implements ManagerDriver {
157157
return undefined;
158158
}
159159

160-
const keyRaw = response.actor.keys[0];
160+
const keyRaw = response.actor.key;
161161
invariant(keyRaw, `actor ${actorId} should have key`);
162162
const key = deserializeActorKey(keyRaw);
163163

@@ -233,10 +233,10 @@ export class EngineManagerDriver implements ManagerDriver {
233233

234234
const response = await getOrCreateActorById(this.#config, {
235235
name,
236-
keys: [serializeActorKey(key)],
236+
key: serializeActorKey(key),
237237
runner_name_selector: this.#config.runnerName,
238238
input: input ? cbor.encode(actorInput).toString("base64") : undefined,
239-
durable: true,
239+
crash_policy: "restart",
240240
});
241241

242242
const actorId = response.actor_id;
@@ -273,9 +273,9 @@ export class EngineManagerDriver implements ManagerDriver {
273273
const result = await createActor(this.#config, {
274274
name,
275275
runner_name_selector: this.#config.runnerName,
276-
keys: [serializeActorKey(key)],
276+
key: serializeActorKey(key),
277277
input: input ? cbor.encode(input).toString("base64") : null,
278-
durable: true,
278+
crash_policy: "restart",
279279
});
280280
const actorId = result.actor.actor_id;
281281

packages/core/tsup.config.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
import { defineConfig } from "tsup";
22
import defaultConfig from "../../tsup.base.ts";
33

4-
export default defineConfig({
5-
...defaultConfig,
6-
});
4+
export default defineConfig(defaultConfig);

packages/drivers/cloudflare-workers/src/actor-handler-do.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {
1212
} from "@rivetkit/core";
1313
import { serializeEmptyPersistData } from "@rivetkit/core/driver-helpers";
1414
import type { ExecutionContext } from "hono";
15+
import invariant from "invariant";
1516
import {
1617
CloudflareDurableObjectGlobalState,
1718
createCloudflareActorsActorDriverBuilder,
@@ -113,6 +114,7 @@ export function createActorDurableObject(
113114
globalState.setDOState(actorId, { ctx: this.ctx, env: env });
114115

115116
// Configure actor driver
117+
invariant(runConfig.driver, "runConfig.driver");
116118
runConfig.driver.actor =
117119
createCloudflareActorsActorDriverBuilder(globalState);
118120

@@ -184,6 +186,7 @@ export function createActorDurableObject(
184186
const actorId = this.ctx.id.toString();
185187

186188
// Get the actor driver
189+
invariant(runConfig.driver, "runConfig.driver");
187190
const managerDriver = runConfig.driver.manager(
188191
registry.config,
189192
runConfig,

packages/drivers/redis/src/manager.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ export class RedisManagerDriver implements ManagerDriver {
9292
return undefined;
9393
}
9494

95-
return this.getForId({ actorId });
95+
return this.getForId({ name, actorId });
9696
}
9797

9898
async getOrCreateWithKey(

pnpm-lock.yaml

Lines changed: 9 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)