Skip to content

Commit f87e8aa

Browse files
jog1tNathanFlurry
authored andcommitted
fix(inspector): allow connection to inspector when using engine driver
1 parent adcd24f commit f87e8aa

File tree

14 files changed

+89
-21
lines changed

14 files changed

+89
-21
lines changed

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

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,11 @@ import invariant from "invariant";
44
import type { ActorKey, ActorRouter, Registry, RunConfig } from "rivetkit";
55
import { createActorRouter, createClientWithDriver } from "rivetkit";
66
import type { ActorDriver } from "rivetkit/driver-helpers";
7-
import { serializeEmptyPersistData } from "rivetkit/driver-helpers";
87
import { promiseWithResolvers } from "rivetkit/utils";
8+
import {
9+
type ManagerDriver,
10+
serializeEmptyPersistData,
11+
} from "rivetkit/driver-helpers";
912
import {
1013
CloudflareDurableObjectGlobalState,
1114
createCloudflareActorsActorDriverBuilder,
@@ -121,6 +124,8 @@ export function createActorDurableObject(
121124
runConfig,
122125
);
123126

127+
configureInspectorAccessToken(registry.config, managerDriver);
128+
124129
// Create inline client
125130
const inlineClient = createClientWithDriver(managerDriver);
126131

@@ -187,3 +192,9 @@ export function createActorDurableObject(
187192
}
188193
};
189194
}
195+
function configureInspectorAccessToken(
196+
config: any,
197+
managerDriver: ManagerDriver,
198+
) {
199+
throw new Error("Function not implemented.");
200+
}

packages/rivetkit/scripts/dump-openapi.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ function main() {
3131
proxyRequest: unimplemented,
3232
proxyWebSocket: unimplemented,
3333
displayInformation: unimplemented,
34+
getOrCreateInspectorAccessToken: unimplemented,
3435
};
3536

3637
const { openapi } = createManagerRouter(

packages/rivetkit/src/actor/router.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ import {
3737
type ActorInspectorRouterEnv,
3838
createActorInspectorRouter,
3939
} from "@/inspector/actor";
40-
import { secureInspector } from "@/inspector/utils";
40+
import { isInspectorEnabled, secureInspector } from "@/inspector/utils";
4141
import type { RunConfig } from "@/registry/run-config";
4242
import type { ActorDriver } from "./driver";
4343
import { InternalError } from "./errors";
@@ -242,7 +242,7 @@ export function createActorRouter(
242242
}
243243
});
244244

245-
if (runConfig.inspector.enabled) {
245+
if (isInspectorEnabled(runConfig, "actor")) {
246246
router.route(
247247
"/inspect",
248248
new Hono<ActorInspectorRouterEnv & { Bindings: ActorRouterBindings }>()

packages/rivetkit/src/driver-test-suite/mod.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { bundleRequire } from "bundle-require";
44
import invariant from "invariant";
55
import { describe } from "vitest";
66
import type { Transport } from "@/client/mod";
7+
import { configureInspectorAccessToken } from "@/inspector/utils";
78
import { createManagerRouter } from "@/manager/router";
89
import type { DriverConfig, Registry, RunConfig } from "@/mod";
910
import { RunConfigSchema } from "@/registry/run-config";
@@ -197,6 +198,7 @@ export async function createTestRuntime(
197198

198199
// Create router
199200
const managerDriver = driver.manager(registry.config, config);
201+
configureInspectorAccessToken(config, managerDriver);
200202
const { router } = createManagerRouter(
201203
registry.config,
202204
config,

packages/rivetkit/src/driver-test-suite/test-inline-client-driver.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,10 @@ export function createTestInlineClientDriver(
227227
displayInformation(): ManagerDisplayInformation {
228228
return { name: "Test Inline", properties: {} };
229229
},
230+
getOrCreateInspectorAccessToken() {
231+
// TODO:
232+
return "";
233+
},
230234

231235
// action: async <Args extends Array<unknown> = unknown[], Response = unknown>(
232236
// _c: HonoContext | undefined,

packages/rivetkit/src/drivers/file-system/manager.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,6 @@ export class FileSystemManagerDriver implements ManagerDriver {
5757
this.#driverConfig = driverConfig;
5858

5959
if (runConfig.inspector.enabled) {
60-
if (!this.#runConfig.inspector.token()) {
61-
this.#runConfig.inspector.token = () =>
62-
this.#state.getOrCreateInspectorAccessToken();
63-
}
6460
const startedAt = new Date().toISOString();
6561
function transformActor(actorState: schema.ActorState): Actor {
6662
return {
@@ -317,4 +313,8 @@ export class FileSystemManagerDriver implements ManagerDriver {
317313
data: this.#state.storagePath,
318314
};
319315
}
316+
317+
getOrCreateInspectorAccessToken() {
318+
return this.#state.getOrCreateInspectorAccessToken();
319+
}
320320
}

packages/rivetkit/src/inspector/config.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,16 @@ const defaultCors: CorsOptions = {
5656

5757
export const InspectorConfigSchema = z
5858
.object({
59-
enabled: z.boolean().optional().default(defaultEnabled),
59+
enabled: z
60+
.boolean()
61+
.or(
62+
z.object({
63+
actor: z.boolean().optional().default(true),
64+
manager: z.boolean().optional().default(true),
65+
}),
66+
)
67+
.optional()
68+
.default(defaultEnabled),
6069
/** CORS configuration for the router. Uses Hono's CORS middleware options. */
6170
cors: z
6271
.custom<CorsOptions>()
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
export * from "./protocol/common";
22
export * from "./protocol/mod";
3+
export * from "./utils";

packages/rivetkit/src/inspector/utils.ts

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import crypto from "node:crypto";
22
import { createMiddleware } from "hono/factory";
3+
import type { ManagerDriver } from "@/driver-helpers/mod";
34
import type { RunConfig } from "@/mod";
45
import type { RunConfigInput } from "@/registry/run-config";
56
import { inspectorLogger } from "./log";
@@ -28,10 +29,6 @@ export function compareSecrets(providedSecret: string, validSecret: string) {
2829

2930
export const secureInspector = (runConfig: RunConfig) =>
3031
createMiddleware(async (c, next) => {
31-
if (!runConfig.inspector.enabled) {
32-
return c.text("Inspector is not enabled", 503);
33-
}
34-
3532
const userToken = c.req.header("Authorization")?.replace("Bearer ", "");
3633
if (!userToken) {
3734
return c.text("Unauthorized", 401);
@@ -74,3 +71,25 @@ export function getInspectorUrl(runConfig: RunConfigInput | undefined) {
7471

7572
return url.href;
7673
}
74+
75+
export const isInspectorEnabled = (
76+
runConfig: RunConfig,
77+
context: "actor" | "manager",
78+
) => {
79+
if (typeof runConfig.inspector?.enabled === "boolean") {
80+
return runConfig.inspector.enabled;
81+
} else if (typeof runConfig.inspector?.enabled === "object") {
82+
return runConfig.inspector.enabled[context];
83+
}
84+
return false;
85+
};
86+
87+
export const configureInspectorAccessToken = (
88+
runConfig: RunConfig,
89+
managerDriver: ManagerDriver,
90+
) => {
91+
if (!runConfig.inspector?.token()) {
92+
const token = managerDriver.getOrCreateInspectorAccessToken();
93+
runConfig.inspector.token = () => token;
94+
}
95+
};

packages/rivetkit/src/manager/driver.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,13 @@ export interface ManagerDriver {
4545
* @internal
4646
*/
4747
readonly inspector?: ManagerInspector;
48+
49+
/**
50+
* Get or create the inspector access token.
51+
* @internal
52+
* @returns creates or returns existing inspector access token
53+
*/
54+
getOrCreateInspectorAccessToken: () => string;
4855
}
4956

5057
export interface ManagerDisplayInformation {

0 commit comments

Comments
 (0)