diff --git a/.github/workflows/fe-pull-request.yml b/.github/workflows/fe-pull-request.yml
deleted file mode 100644
index f5c324d6ae..0000000000
--- a/.github/workflows/fe-pull-request.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-name: javascript
-
-on:
- pull_request:
- paths:
- - frontend/**
- - engine/sdks/typescript/**
- - rivetkit-typescript/**
-
-jobs:
- quality:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- - uses: biomejs/setup-biome@v2
- with:
- version: latest
- - name: Run Biome
- run: biome check . --reporter=github
- tsc:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- - uses: pnpm/action-setup@v4
- - run: pnpm install
- - run: pnpm turbo build:engine
- - name: Run TypeScript Compiler
- run: pnpm ts-check
- working-directory: ./frontend
\ No newline at end of file
diff --git a/.github/workflows/frontend.yml b/.github/workflows/frontend.yml
new file mode 100644
index 0000000000..787c165ae3
--- /dev/null
+++ b/.github/workflows/frontend.yml
@@ -0,0 +1,94 @@
+name: frontend
+
+on:
+ pull_request:
+ paths:
+ - frontend/**
+ - engine/sdks/typescript/**
+ - rivetkit-typescript/**
+ - website/**
+
+jobs:
+ dashboard-quality-check:
+ name: Dashboard / Quality Check
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - uses: biomejs/setup-biome@v2
+ with:
+ version: latest
+ - run: biome check ./frontend --reporter=github
+ rivetkit-quality-check:
+ name: RivetKit / Quality Check
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - uses: biomejs/setup-biome@v2
+ with:
+ version: latest
+ - run: biome check ./rivetkit-typescript --reporter=github
+ # website-quality-check:
+ # name: Website / Quality Check
+ # runs-on: ubuntu-latest
+ # steps:
+ # - uses: actions/checkout@v4
+ # - uses: biomejs/setup-biome@v2
+ # with:
+ # version: latest
+ # - run: biome check ./website --reporter=github
+ dashboard-type-check:
+ name: Dashboard / Type Check
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ lfs: 'true'
+ - uses: actions/cache@v4
+ with:
+ path: .turbo
+ key: ${{ runner.os }}-turbo-${{ github.sha }}
+ restore-keys: |
+ ${{ runner.os }}-turbo-
+ - uses: pnpm/action-setup@v4
+ - run: pnpm install
+ - run: pnpm build --filter='./frontend'
+ - run: pnpm check-types
+ working-directory: ./frontend
+ rivetkit-type-check:
+ name: RivetKit / Type Check
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ lfs: 'true'
+ - uses: actions/cache@v4
+ with:
+ path: .turbo
+ key: ${{ runner.os }}-turbo-${{ github.sha }}
+ restore-keys: |
+ ${{ runner.os }}-turbo-
+ - uses: pnpm/action-setup@v4
+ - run: pnpm install
+ - run: pnpm build --filter='./rivetkit-typescript'
+ - run: pnpm check-types
+ working-directory: ./rivetkit-typescript
+ # website-type-check:
+ # name: Website / Type Check
+ # runs-on: ubuntu-latest
+ # steps:
+ # - uses: actions/checkout@v4
+ # with:
+ # lfs: 'true'
+ # - uses: actions/cache@v4
+ # with:
+ # path: .turbo
+ # key: ${{ runner.os }}-turbo-${{ github.sha }}
+ # restore-keys: |
+ # ${{ runner.os }}-turbo-
+ # - uses: pnpm/action-setup@v4
+ # - run: pnpm install
+ # - run: pnpm build
+ # - run: pnpm check-types
+ # working-directory: ./website
+
+
\ No newline at end of file
diff --git a/engine/sdks/typescript/api-full/build.js b/engine/sdks/typescript/api-full/build.js
index 008ce81dfc..acf9327079 100644
--- a/engine/sdks/typescript/api-full/build.js
+++ b/engine/sdks/typescript/api-full/build.js
@@ -7,7 +7,13 @@ async function main() {
platform: "node",
target: "node14",
format: "cjs",
- outdir: "node",
+ outdir: "node/cjs",
+ });
+ await bundle({
+ platform: "node",
+ target: "node14",
+ format: "esm",
+ outdir: "node/esm",
});
await bundle({
platform: "browser",
diff --git a/engine/sdks/typescript/api-full/package.json b/engine/sdks/typescript/api-full/package.json
index 54c9676ba8..d92bdeb9a0 100644
--- a/engine/sdks/typescript/api-full/package.json
+++ b/engine/sdks/typescript/api-full/package.json
@@ -10,21 +10,30 @@
],
"exports": {
".": {
- "node": "./dist/node/index.js",
+ "node": {
+ "import": "./dist/node/esm/index.js",
+ "require": "./dist/node/cjs/index.js"
+ },
"import": "./dist/browser/esm/index.js",
"require": "./dist/browser/cjs/index.js",
"default": "./dist/browser/cjs/index.js",
"types": "./types/index.d.ts"
},
"./core": {
- "node": "./dist/node/core.js",
+ "node": {
+ "import": "./dist/node/esm/core.js",
+ "require": "./dist/node/cjs/core.js"
+ },
"import": "./dist/browser/esm/core.js",
"require": "./dist/browser/cjs/core.js",
"default": "./dist/browser/cjs/core.js",
"types": "./types/core/index.d.ts"
},
"./serialization": {
- "node": "./dist/node/serialization.js",
+ "node": {
+ "import": "./dist/node/esm/serialization.js",
+ "require": "./dist/node/cjs/serialization.js"
+ },
"import": "./dist/browser/esm/serialization.js",
"require": "./dist/browser/cjs/serialization.js",
"default": "./dist/browser/cjs/serialization.js",
diff --git a/engine/sdks/typescript/runner-protocol/package.json b/engine/sdks/typescript/runner-protocol/package.json
index e4615c31c6..29a1f327b0 100644
--- a/engine/sdks/typescript/runner-protocol/package.json
+++ b/engine/sdks/typescript/runner-protocol/package.json
@@ -4,13 +4,15 @@
"license": "Apache-2.0",
"type": "module",
"exports": {
- "import": {
- "types": "./dist/index.d.ts",
- "default": "./dist/index.js"
- },
- "require": {
- "types": "./dist/index.d.cts",
- "default": "./dist/index.cjs"
+ ".": {
+ "import": {
+ "types": "./dist/index.d.ts",
+ "default": "./dist/index.js"
+ },
+ "require": {
+ "types": "./dist/index.d.cts",
+ "default": "./dist/index.cjs"
+ }
}
},
"files": [
diff --git a/examples/actor-actions/package.json b/examples/actor-actions/package.json
index 096f20d60d..71c93b8d4e 100644
--- a/examples/actor-actions/package.json
+++ b/examples/actor-actions/package.json
@@ -24,11 +24,11 @@
"dependencies": {
"@hono/node-server": "^1.19.7",
"@hono/node-ws": "^1.2.0",
- "@rivetkit/react": "*",
+ "@rivetkit/react": "^2.0.38",
"hono": "^4.11.3",
"react": "^18.2.0",
"react-dom": "^18.2.0",
- "rivetkit": "*",
+ "rivetkit": "^2.0.38",
"srvx": "^0.10.0"
},
"template": {
diff --git a/examples/actor-actions/turbo.json b/examples/actor-actions/turbo.json
index 29d4cb2625..c5e71016d3 100644
--- a/examples/actor-actions/turbo.json
+++ b/examples/actor-actions/turbo.json
@@ -1,4 +1,9 @@
{
"$schema": "https://turbo.build/schema.json",
- "extends": ["//"]
+ "extends": ["//"],
+ "tasks": {
+ "build": {
+ "dependsOn": ["@rivetkit/react#build", "rivetkit#build"]
+ }
+ }
}
diff --git a/examples/ai-agent/package.json b/examples/ai-agent/package.json
index 47aea3eb84..de0443f84c 100644
--- a/examples/ai-agent/package.json
+++ b/examples/ai-agent/package.json
@@ -25,12 +25,12 @@
"@ai-sdk/openai": "^0.0.66",
"@hono/node-server": "^1.19.7",
"@hono/node-ws": "^1.3.0",
- "@rivetkit/react": "*",
+ "@rivetkit/react": "^2.0.38",
"ai": "^4.0.38",
"hono": "^4.0.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
- "rivetkit": "*",
+ "rivetkit": "^2.0.38",
"srvx": "^0.10.0",
"zod": "^3.25.69"
},
diff --git a/examples/ai-agent/turbo.json b/examples/ai-agent/turbo.json
index 29d4cb2625..c5e71016d3 100644
--- a/examples/ai-agent/turbo.json
+++ b/examples/ai-agent/turbo.json
@@ -1,4 +1,9 @@
{
"$schema": "https://turbo.build/schema.json",
- "extends": ["//"]
+ "extends": ["//"],
+ "tasks": {
+ "build": {
+ "dependsOn": ["@rivetkit/react#build", "rivetkit#build"]
+ }
+ }
}
diff --git a/examples/ai-and-user-generated-actors-freestyle/package.json b/examples/ai-and-user-generated-actors-freestyle/package.json
index 99a541de60..1011e46f9f 100644
--- a/examples/ai-and-user-generated-actors-freestyle/package.json
+++ b/examples/ai-and-user-generated-actors-freestyle/package.json
@@ -15,7 +15,7 @@
"@hono/node-ws": "^1.3.0",
"@monaco-editor/react": "^4.7.0",
"@rivet-gg/cloud": "https://pkg.pr.new/rivet-dev/cloud/@rivet-gg/cloud@715f221",
- "@rivetkit/engine-api-full": "*",
+ "@rivetkit/engine-api-full": "^2.0.38",
"dotenv": "^17.2.2",
"execa": "^9.5.2",
"freestyle-sandboxes": "^0.0.95",
diff --git a/examples/ai-and-user-generated-actors-freestyle/src/index.ts b/examples/ai-and-user-generated-actors-freestyle/src/index.ts
index aa7044ceb8..5a7340a0f4 100644
--- a/examples/ai-and-user-generated-actors-freestyle/src/index.ts
+++ b/examples/ai-and-user-generated-actors-freestyle/src/index.ts
@@ -55,8 +55,4 @@ process.on("uncaughtException", (error) => {
process.exit(1);
});
-const PORT = Number(process.env.PORT) || 3001;
-serve({
- fetch: app.fetch,
- port: PORT,
-});
+export default app;
diff --git a/examples/ai-and-user-generated-actors-freestyle/turbo.json b/examples/ai-and-user-generated-actors-freestyle/turbo.json
index 29d4cb2625..83d90f8ae1 100644
--- a/examples/ai-and-user-generated-actors-freestyle/turbo.json
+++ b/examples/ai-and-user-generated-actors-freestyle/turbo.json
@@ -1,4 +1,9 @@
{
"$schema": "https://turbo.build/schema.json",
- "extends": ["//"]
+ "extends": ["//"],
+ "tasks": {
+ "build": {
+ "dependsOn": ["@rivetkit/engine-api-full#build"]
+ }
+ }
}
diff --git a/examples/ai-and-user-generated-actors-freestyle/vite.config.ts b/examples/ai-and-user-generated-actors-freestyle/vite.config.ts
index 06dae893f5..2e8db1d005 100644
--- a/examples/ai-and-user-generated-actors-freestyle/vite.config.ts
+++ b/examples/ai-and-user-generated-actors-freestyle/vite.config.ts
@@ -3,5 +3,5 @@ import react from "@vitejs/plugin-react";
import srvx from "vite-plugin-srvx";
export default defineConfig({
- plugins: [react(), ...srvx({ entry: "src/server.ts" })],
+ plugins: [react(), ...srvx({ entry: "src/index.ts" })],
});
diff --git a/examples/chat-room/package.json b/examples/chat-room/package.json
index 67ca80e091..40cda910d6 100644
--- a/examples/chat-room/package.json
+++ b/examples/chat-room/package.json
@@ -24,11 +24,11 @@
"dependencies": {
"@hono/node-server": "^1.19.7",
"@hono/node-ws": "^1.3.0",
- "@rivetkit/react": "*",
+ "@rivetkit/react": "^2.0.38",
"hono": "^4.11.3",
"react": "^18.2.0",
"react-dom": "^18.2.0",
- "rivetkit": "*",
+ "rivetkit": "^2.0.38",
"srvx": "^0.10.0"
},
"stableVersion": "0.8.0",
diff --git a/examples/chat-room/turbo.json b/examples/chat-room/turbo.json
index 29d4cb2625..c5e71016d3 100644
--- a/examples/chat-room/turbo.json
+++ b/examples/chat-room/turbo.json
@@ -1,4 +1,9 @@
{
"$schema": "https://turbo.build/schema.json",
- "extends": ["//"]
+ "extends": ["//"],
+ "tasks": {
+ "build": {
+ "dependsOn": ["@rivetkit/react#build", "rivetkit#build"]
+ }
+ }
}
diff --git a/examples/cloudflare-workers-hono/package.json b/examples/cloudflare-workers-hono/package.json
index 71e3c275b4..a1b4c81c8e 100644
--- a/examples/cloudflare-workers-hono/package.json
+++ b/examples/cloudflare-workers-hono/package.json
@@ -12,14 +12,14 @@
},
"devDependencies": {
"@cloudflare/workers-types": "^4.20250129.0",
- "rivetkit": "*",
+ "rivetkit": "^2.0.38",
"@types/node": "^22.13.9",
"tsx": "^3.12.7",
"typescript": "^5.5.2",
"wrangler": "^4.22.0"
},
"dependencies": {
- "@rivetkit/cloudflare-workers": "*",
+ "@rivetkit/cloudflare-workers": "^2.0.38",
"hono": "^4.8.0"
},
"stableVersion": "0.8.0",
diff --git a/examples/cloudflare-workers-hono/src/index.ts b/examples/cloudflare-workers-hono/src/index.ts
index 1860cb083f..c19d76fc32 100644
--- a/examples/cloudflare-workers-hono/src/index.ts
+++ b/examples/cloudflare-workers-hono/src/index.ts
@@ -1,14 +1,15 @@
-import { type Client, createHandler } from "@rivetkit/cloudflare-workers";
+import { createHandler } from "@rivetkit/cloudflare-workers";
import { Hono } from "hono";
+import { createClient } from "rivetkit/client";
import { registry } from "./registry";
+const client = createClient();
+
// Setup router
-const app = new Hono<{ Bindings: { RIVET: Client } }>();
+const app = new Hono();
// Example HTTP endpoint
app.post("/increment/:name", async (c) => {
- const client = c.env.RIVET;
-
const name = c.req.param("name");
const counter = client.counter.getOrCreate(name);
diff --git a/examples/cloudflare-workers-hono/turbo.json b/examples/cloudflare-workers-hono/turbo.json
index 29d4cb2625..125ee72dd9 100644
--- a/examples/cloudflare-workers-hono/turbo.json
+++ b/examples/cloudflare-workers-hono/turbo.json
@@ -1,4 +1,9 @@
{
"$schema": "https://turbo.build/schema.json",
- "extends": ["//"]
+ "extends": ["//"],
+ "tasks": {
+ "build": {
+ "dependsOn": ["@rivetkit/cloudflare-workers#build", "rivetkit#build"]
+ }
+ }
}
diff --git a/examples/cloudflare-workers-inline-client/package.json b/examples/cloudflare-workers-inline-client/package.json
deleted file mode 100644
index 6bec8cd467..0000000000
--- a/examples/cloudflare-workers-inline-client/package.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- "name": "example-cloudflare-workers-inline-client",
- "version": "2.0.21",
- "private": true,
- "type": "module",
- "scripts": {
- "dev": "wrangler dev",
- "deploy": "wrangler deploy",
- "check-types": "tsc --noEmit",
- "client-http": "tsx scripts/client-http.ts",
- "client-rivetkit": "tsx scripts/client-rivetkit.ts",
- "build": "tsc"
- },
- "devDependencies": {
- "@cloudflare/workers-types": "^4.20250129.0",
- "@types/node": "^22.13.9",
- "tsx": "^3.12.7",
- "typescript": "^5.5.2",
- "wrangler": "^4.22.0"
- },
- "dependencies": {
- "rivetkit": "*",
- "@rivetkit/cloudflare-workers": "*"
- },
- "stableVersion": "0.8.0",
- "template": {
- "technologies": [
- "cloudflare-workers",
- "typescript"
- ],
- "tags": [],
- "noFrontend": true
- },
- "license": "MIT"
-}
diff --git a/examples/cloudflare-workers-inline-client/src/index.ts b/examples/cloudflare-workers-inline-client/src/index.ts
index 0c7db7d9fc..08332edf98 100644
--- a/examples/cloudflare-workers-inline-client/src/index.ts
+++ b/examples/cloudflare-workers-inline-client/src/index.ts
@@ -1,43 +1,44 @@
-import { createInlineClient } from "@rivetkit/cloudflare-workers";
-import { registry } from "./registry";
-
-const {
- client,
- fetch: rivetFetch,
- ActorHandler,
-} = createInlineClient(registry);
-
-// IMPORTANT: Your Durable Object must be exported here
-export { ActorHandler };
-
-export default {
- fetch: async (request, env, ctx) => {
- const url = new URL(request.url);
-
- // Custom request handler
- if (
- request.method === "POST" &&
- url.pathname.startsWith("/increment/")
- ) {
- const name = url.pathname.slice("/increment/".length);
-
- const counter = client.counter.getOrCreate(name);
- const newCount = await counter.increment(1);
-
- return new Response(`New Count: ${newCount}`, {
- headers: { "Content-Type": "text/plain" },
- });
- }
-
- // Optional: If you want to access Rivet Actors publicly, mount the path
- if (url.pathname.startsWith("/rivet")) {
- const strippedPath = url.pathname.substring("/rivet".length);
- url.pathname = strippedPath;
- console.log("URL", url.toString());
- const modifiedRequest = new Request(url.toString(), request);
- return rivetFetch(modifiedRequest, env, ctx);
- }
-
- return new Response("Not Found", { status: 404 });
- },
-} satisfies ExportedHandler;
+// FIXME: Re-enable once inline client is fixed
+// import { createInlineClient } from "@rivetkit/cloudflare-workers";
+// import { registry } from "./registry";
+
+// const {
+// client,
+// fetch: rivetFetch,
+// ActorHandler,
+// } = createInlineClient(registry);
+
+// // IMPORTANT: Your Durable Object must be exported here
+// export { ActorHandler };
+
+// export default {
+// fetch: async (request, env, ctx) => {
+// const url = new URL(request.url);
+
+// // Custom request handler
+// if (
+// request.method === "POST" &&
+// url.pathname.startsWith("/increment/")
+// ) {
+// const name = url.pathname.slice("/increment/".length);
+
+// const counter = client.counter.getOrCreate(name);
+// const newCount = await counter.increment(1);
+
+// return new Response(`New Count: ${newCount}`, {
+// headers: { "Content-Type": "text/plain" },
+// });
+// }
+
+// // Optional: If you want to access Rivet Actors publicly, mount the path
+// if (url.pathname.startsWith("/rivet")) {
+// const strippedPath = url.pathname.substring("/rivet".length);
+// url.pathname = strippedPath;
+// console.log("URL", url.toString());
+// const modifiedRequest = new Request(url.toString(), request);
+// return rivetFetch(modifiedRequest, env, ctx);
+// }
+
+// return new Response("Not Found", { status: 404 });
+// },
+// } satisfies ExportedHandler;
diff --git a/examples/cloudflare-workers/package.json b/examples/cloudflare-workers/package.json
index dee066e6ca..3b6d8b8bdf 100644
--- a/examples/cloudflare-workers/package.json
+++ b/examples/cloudflare-workers/package.json
@@ -18,8 +18,8 @@
"wrangler": "^4.22.0"
},
"dependencies": {
- "rivetkit": "*",
- "@rivetkit/cloudflare-workers": "*"
+ "rivetkit": "^2.0.38",
+ "@rivetkit/cloudflare-workers": "^2.0.38"
},
"stableVersion": "0.8.0",
"template": {
diff --git a/examples/cloudflare-workers/turbo.json b/examples/cloudflare-workers/turbo.json
index 29d4cb2625..125ee72dd9 100644
--- a/examples/cloudflare-workers/turbo.json
+++ b/examples/cloudflare-workers/turbo.json
@@ -1,4 +1,9 @@
{
"$schema": "https://turbo.build/schema.json",
- "extends": ["//"]
+ "extends": ["//"],
+ "tasks": {
+ "build": {
+ "dependsOn": ["@rivetkit/cloudflare-workers#build", "rivetkit#build"]
+ }
+ }
}
diff --git a/examples/cross-actor-actions/package.json b/examples/cross-actor-actions/package.json
index 648a645176..44e1763984 100644
--- a/examples/cross-actor-actions/package.json
+++ b/examples/cross-actor-actions/package.json
@@ -24,11 +24,11 @@
"dependencies": {
"@hono/node-server": "^1.19.7",
"@hono/node-ws": "^1.3.0",
- "@rivetkit/react": "*",
+ "@rivetkit/react": "^2.0.38",
"hono": "^4.0.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
- "rivetkit": "*",
+ "rivetkit": "^2.0.38",
"srvx": "^0.10.0"
},
"template": {
diff --git a/examples/cross-actor-actions/turbo.json b/examples/cross-actor-actions/turbo.json
index 29d4cb2625..c5e71016d3 100644
--- a/examples/cross-actor-actions/turbo.json
+++ b/examples/cross-actor-actions/turbo.json
@@ -1,4 +1,9 @@
{
"$schema": "https://turbo.build/schema.json",
- "extends": ["//"]
+ "extends": ["//"],
+ "tasks": {
+ "build": {
+ "dependsOn": ["@rivetkit/react#build", "rivetkit#build"]
+ }
+ }
}
diff --git a/examples/cursors-raw-websocket/package.json b/examples/cursors-raw-websocket/package.json
index c9c15bf663..3f7dd8f908 100644
--- a/examples/cursors-raw-websocket/package.json
+++ b/examples/cursors-raw-websocket/package.json
@@ -24,11 +24,11 @@
"dependencies": {
"@hono/node-server": "^1.19.7",
"@hono/node-ws": "^1.3.0",
- "@rivetkit/react": "*",
+ "@rivetkit/react": "^2.0.38",
"hono": "^4.0.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
- "rivetkit": "*",
+ "rivetkit": "^2.0.38",
"srvx": "^0.10.0"
},
"stableVersion": "0.8.0",
diff --git a/examples/cursors-raw-websocket/turbo.json b/examples/cursors-raw-websocket/turbo.json
index 29d4cb2625..c5e71016d3 100644
--- a/examples/cursors-raw-websocket/turbo.json
+++ b/examples/cursors-raw-websocket/turbo.json
@@ -1,4 +1,9 @@
{
"$schema": "https://turbo.build/schema.json",
- "extends": ["//"]
+ "extends": ["//"],
+ "tasks": {
+ "build": {
+ "dependsOn": ["@rivetkit/react#build", "rivetkit#build"]
+ }
+ }
}
diff --git a/examples/cursors/package.json b/examples/cursors/package.json
index b92475c801..bb591dbeb8 100644
--- a/examples/cursors/package.json
+++ b/examples/cursors/package.json
@@ -24,11 +24,11 @@
"dependencies": {
"@hono/node-server": "^1.19.7",
"@hono/node-ws": "^1.3.0",
- "@rivetkit/react": "*",
+ "@rivetkit/react": "^2.0.38",
"hono": "^4",
"react": "^18.2.0",
"react-dom": "^18.2.0",
- "rivetkit": "*",
+ "rivetkit": "^2.0.38",
"srvx": "^0.10.0"
},
"stableVersion": "0.8.0",
diff --git a/examples/cursors/turbo.json b/examples/cursors/turbo.json
index 29d4cb2625..c5e71016d3 100644
--- a/examples/cursors/turbo.json
+++ b/examples/cursors/turbo.json
@@ -1,4 +1,9 @@
{
"$schema": "https://turbo.build/schema.json",
- "extends": ["//"]
+ "extends": ["//"],
+ "tasks": {
+ "build": {
+ "dependsOn": ["@rivetkit/react#build", "rivetkit#build"]
+ }
+ }
}
diff --git a/examples/custom-serverless/package.json b/examples/custom-serverless/package.json
index 4fc4882e34..54401944fb 100644
--- a/examples/custom-serverless/package.json
+++ b/examples/custom-serverless/package.json
@@ -21,7 +21,7 @@
"@hono/node-server": "^1.19.7",
"@hono/node-ws": "^1.3.0",
"hono": "^4.0.0",
- "rivetkit": "*",
+ "rivetkit": "^2.0.38",
"srvx": "^0.10.0"
},
"stableVersion": "0.8.0",
diff --git a/examples/custom-serverless/turbo.json b/examples/custom-serverless/turbo.json
index 29d4cb2625..8d06db6c15 100644
--- a/examples/custom-serverless/turbo.json
+++ b/examples/custom-serverless/turbo.json
@@ -1,4 +1,9 @@
{
"$schema": "https://turbo.build/schema.json",
- "extends": ["//"]
+ "extends": ["//"],
+ "tasks": {
+ "build": {
+ "dependsOn": ["rivetkit#build"]
+ }
+ }
}
diff --git a/examples/drizzle/package.json b/examples/drizzle/package.json
index 3f276675f0..e8b2a19aa7 100644
--- a/examples/drizzle/package.json
+++ b/examples/drizzle/package.json
@@ -11,7 +11,7 @@
},
"devDependencies": {
"@types/node": "^22.13.9",
- "rivetkit": "*",
+ "rivetkit": "^2.0.38",
"tsup": "^8.0.0",
"tsx": "^3.12.7",
"typescript": "^5.5.2"
@@ -19,7 +19,7 @@
"dependencies": {
"@hono/node-server": "^1.19.7",
"@hono/node-ws": "^1.3.0",
- "@rivetkit/db": "*",
+ "@rivetkit/db": "^2.0.38",
"drizzle-kit": "^0.31.2",
"drizzle-orm": "^0.44.2",
"hono": "^4.0.0",
diff --git a/examples/drizzle/turbo.json b/examples/drizzle/turbo.json
index 29d4cb2625..fcfcadfaf3 100644
--- a/examples/drizzle/turbo.json
+++ b/examples/drizzle/turbo.json
@@ -1,4 +1,9 @@
{
"$schema": "https://turbo.build/schema.json",
- "extends": ["//"]
+ "extends": ["//"],
+ "tasks": {
+ "build": {
+ "dependsOn": ["@rivetkit/db#build", "rivetkit#build"]
+ }
+ }
}
diff --git a/examples/elysia/package.json b/examples/elysia/package.json
index 443fd6311b..02aff66562 100644
--- a/examples/elysia/package.json
+++ b/examples/elysia/package.json
@@ -18,7 +18,7 @@
"@hono/node-server": "^1.19.7",
"@hono/node-ws": "^1.3.0",
"elysia": "^1.4.0",
- "rivetkit": "*",
+ "rivetkit": "^2.0.38",
"srvx": "^0.10.0"
},
"stableVersion": "0.8.0",
diff --git a/examples/elysia/turbo.json b/examples/elysia/turbo.json
index 29d4cb2625..8d06db6c15 100644
--- a/examples/elysia/turbo.json
+++ b/examples/elysia/turbo.json
@@ -1,4 +1,9 @@
{
"$schema": "https://turbo.build/schema.json",
- "extends": ["//"]
+ "extends": ["//"],
+ "tasks": {
+ "build": {
+ "dependsOn": ["rivetkit#build"]
+ }
+ }
}
diff --git a/examples/experimental-durable-streams-ai-agent/package.json b/examples/experimental-durable-streams-ai-agent/package.json
index bb8359be5f..2804449bde 100644
--- a/examples/experimental-durable-streams-ai-agent/package.json
+++ b/examples/experimental-durable-streams-ai-agent/package.json
@@ -28,12 +28,12 @@
"@durable-streams/writer": "https://pkg.pr.new/rivet-dev/durable-streams/@durable-streams/writer@0323b8b",
"@hono/node-server": "^1.19.7",
"@hono/node-ws": "^1.3.0",
- "@rivetkit/react": "*",
+ "@rivetkit/react": "^2.0.38",
"ai": "^4.0.38",
"hono": "^4.11.3",
"react": "^18.2.0",
"react-dom": "^18.2.0",
- "rivetkit": "*",
+ "rivetkit": "^2.0.38",
"srvx": "^0.10.0",
"zod": "^4.1.0"
},
diff --git a/examples/experimental-durable-streams-ai-agent/turbo.json b/examples/experimental-durable-streams-ai-agent/turbo.json
index 29d4cb2625..c5e71016d3 100644
--- a/examples/experimental-durable-streams-ai-agent/turbo.json
+++ b/examples/experimental-durable-streams-ai-agent/turbo.json
@@ -1,4 +1,9 @@
{
"$schema": "https://turbo.build/schema.json",
- "extends": ["//"]
+ "extends": ["//"],
+ "tasks": {
+ "build": {
+ "dependsOn": ["@rivetkit/react#build", "rivetkit#build"]
+ }
+ }
}
diff --git a/examples/hello-world/package.json b/examples/hello-world/package.json
index 06c85a0353..d1509e277c 100644
--- a/examples/hello-world/package.json
+++ b/examples/hello-world/package.json
@@ -24,11 +24,11 @@
"dependencies": {
"@hono/node-server": "^1.19.7",
"@hono/node-ws": "^1.3.0",
- "@rivetkit/react": "*",
+ "@rivetkit/react": "^2.0.38",
"hono": "^4.11.3",
"react": "^18.2.0",
"react-dom": "^18.2.0",
- "rivetkit": "*",
+ "rivetkit": "^2.0.38",
"srvx": "^0.10.0"
},
"stableVersion": "0.8.0",
diff --git a/examples/hello-world/turbo.json b/examples/hello-world/turbo.json
index 29d4cb2625..c5e71016d3 100644
--- a/examples/hello-world/turbo.json
+++ b/examples/hello-world/turbo.json
@@ -1,4 +1,9 @@
{
"$schema": "https://turbo.build/schema.json",
- "extends": ["//"]
+ "extends": ["//"],
+ "tasks": {
+ "build": {
+ "dependsOn": ["@rivetkit/react#build", "rivetkit#build"]
+ }
+ }
}
diff --git a/examples/hono-react/package.json b/examples/hono-react/package.json
index 78436d7fa0..085bf96f18 100644
--- a/examples/hono-react/package.json
+++ b/examples/hono-react/package.json
@@ -24,11 +24,11 @@
"dependencies": {
"@hono/node-server": "^1.19.1",
"@hono/node-ws": "^1.3.0",
- "@rivetkit/react": "*",
+ "@rivetkit/react": "^2.0.38",
"hono": "^4.7.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
- "rivetkit": "*",
+ "rivetkit": "^2.0.38",
"srvx": "^0.10.0"
},
"stableVersion": "0.8.0",
diff --git a/examples/hono-react/turbo.json b/examples/hono-react/turbo.json
index 29d4cb2625..c5e71016d3 100644
--- a/examples/hono-react/turbo.json
+++ b/examples/hono-react/turbo.json
@@ -1,4 +1,9 @@
{
"$schema": "https://turbo.build/schema.json",
- "extends": ["//"]
+ "extends": ["//"],
+ "tasks": {
+ "build": {
+ "dependsOn": ["@rivetkit/react#build", "rivetkit#build"]
+ }
+ }
}
diff --git a/examples/hono/package.json b/examples/hono/package.json
index 237a7d5982..7d8434247b 100644
--- a/examples/hono/package.json
+++ b/examples/hono/package.json
@@ -18,7 +18,7 @@
"@hono/node-server": "^1.19.1",
"@hono/node-ws": "^1.3.0",
"hono": "^4.7.0",
- "rivetkit": "*",
+ "rivetkit": "^2.0.38",
"srvx": "^0.10.0"
},
"stableVersion": "0.8.0",
diff --git a/examples/hono/turbo.json b/examples/hono/turbo.json
index 29d4cb2625..8d06db6c15 100644
--- a/examples/hono/turbo.json
+++ b/examples/hono/turbo.json
@@ -1,4 +1,9 @@
{
"$schema": "https://turbo.build/schema.json",
- "extends": ["//"]
+ "extends": ["//"],
+ "tasks": {
+ "build": {
+ "dependsOn": ["rivetkit#build"]
+ }
+ }
}
diff --git a/examples/kitchen-sink/package.json b/examples/kitchen-sink/package.json
index c30e473e01..86403f2be4 100644
--- a/examples/kitchen-sink/package.json
+++ b/examples/kitchen-sink/package.json
@@ -13,11 +13,11 @@
"dependencies": {
"@hono/node-server": "^1.19.7",
"@hono/node-ws": "^1.3.0",
- "@rivetkit/react": "*",
+ "@rivetkit/react": "^2.0.38",
"hono": "^4.7.4",
"react": "^18.2.0",
"react-dom": "^18.2.0",
- "rivetkit": "*",
+ "rivetkit": "^2.0.38",
"srvx": "^0.10.0"
},
"devDependencies": {
diff --git a/examples/kitchen-sink/turbo.json b/examples/kitchen-sink/turbo.json
index 29d4cb2625..c5e71016d3 100644
--- a/examples/kitchen-sink/turbo.json
+++ b/examples/kitchen-sink/turbo.json
@@ -1,4 +1,9 @@
{
"$schema": "https://turbo.build/schema.json",
- "extends": ["//"]
+ "extends": ["//"],
+ "tasks": {
+ "build": {
+ "dependsOn": ["@rivetkit/react#build", "rivetkit#build"]
+ }
+ }
}
diff --git a/examples/multi-region/package.json b/examples/multi-region/package.json
index 4a31d331e5..9bd5a32ae9 100644
--- a/examples/multi-region/package.json
+++ b/examples/multi-region/package.json
@@ -24,11 +24,11 @@
"dependencies": {
"@hono/node-server": "^1.19.7",
"@hono/node-ws": "^1.3.0",
- "@rivetkit/react": "*",
+ "@rivetkit/react": "^2.0.38",
"hono": "^4.7.4",
"react": "^18.2.0",
"react-dom": "^18.2.0",
- "rivetkit": "*",
+ "rivetkit": "^2.0.38",
"srvx": "^0.10.0"
},
"template": {
diff --git a/examples/multi-region/turbo.json b/examples/multi-region/turbo.json
index 29d4cb2625..c5e71016d3 100644
--- a/examples/multi-region/turbo.json
+++ b/examples/multi-region/turbo.json
@@ -1,4 +1,9 @@
{
"$schema": "https://turbo.build/schema.json",
- "extends": ["//"]
+ "extends": ["//"],
+ "tasks": {
+ "build": {
+ "dependsOn": ["@rivetkit/react#build", "rivetkit#build"]
+ }
+ }
}
diff --git a/examples/native-websockets/package.json b/examples/native-websockets/package.json
index fab689bb89..feaee73d4d 100644
--- a/examples/native-websockets/package.json
+++ b/examples/native-websockets/package.json
@@ -26,11 +26,11 @@
"dependencies": {
"@hono/node-server": "^1.19.7",
"@hono/node-ws": "^1.3.0",
- "@rivetkit/react": "*",
+ "@rivetkit/react": "^2.0.38",
"hono": "^4.0.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
- "rivetkit": "*",
+ "rivetkit": "^2.0.38",
"srvx": "^0.10.0"
},
"template": {
diff --git a/examples/native-websockets/turbo.json b/examples/native-websockets/turbo.json
index 29d4cb2625..c5e71016d3 100644
--- a/examples/native-websockets/turbo.json
+++ b/examples/native-websockets/turbo.json
@@ -1,4 +1,9 @@
{
"$schema": "https://turbo.build/schema.json",
- "extends": ["//"]
+ "extends": ["//"],
+ "tasks": {
+ "build": {
+ "dependsOn": ["@rivetkit/react#build", "rivetkit#build"]
+ }
+ }
}
diff --git a/examples/next-js/package.json b/examples/next-js/package.json
index f62dbd6066..e5fdab39a9 100644
--- a/examples/next-js/package.json
+++ b/examples/next-js/package.json
@@ -14,10 +14,10 @@
"react": "19.1.0",
"react-dom": "19.1.0",
"next": "16.1.1",
- "@rivetkit/next-js": "*",
+ "@rivetkit/next-js": "^2.0.38",
"@hono/node-server": "1.14.2",
"@hono/node-ws": "1.3.0",
- "rivetkit": "*"
+ "rivetkit": "^2.0.38"
},
"devDependencies": {
"typescript": "^5",
diff --git a/examples/next-js/turbo.json b/examples/next-js/turbo.json
index 29d4cb2625..48dd6c950e 100644
--- a/examples/next-js/turbo.json
+++ b/examples/next-js/turbo.json
@@ -1,4 +1,9 @@
{
"$schema": "https://turbo.build/schema.json",
- "extends": ["//"]
+ "extends": ["//"],
+ "tasks": {
+ "build": {
+ "dependsOn": ["@rivetkit/next-js#build", "rivetkit#build"]
+ }
+ }
}
diff --git a/examples/raw-fetch-handler/package.json b/examples/raw-fetch-handler/package.json
index f2aeebfe6f..bc06c6f63c 100644
--- a/examples/raw-fetch-handler/package.json
+++ b/examples/raw-fetch-handler/package.json
@@ -24,11 +24,11 @@
"dependencies": {
"@hono/node-server": "^1.19.1",
"@hono/node-ws": "^1.3.0",
- "@rivetkit/react": "*",
+ "@rivetkit/react": "^2.0.38",
"hono": "^4.6.18",
"react": "^18.3.1",
"react-dom": "^18.3.1",
- "rivetkit": "*",
+ "rivetkit": "^2.0.38",
"srvx": "^0.10.0"
},
"template": {
diff --git a/examples/raw-fetch-handler/turbo.json b/examples/raw-fetch-handler/turbo.json
index 29d4cb2625..c5e71016d3 100644
--- a/examples/raw-fetch-handler/turbo.json
+++ b/examples/raw-fetch-handler/turbo.json
@@ -1,4 +1,9 @@
{
"$schema": "https://turbo.build/schema.json",
- "extends": ["//"]
+ "extends": ["//"],
+ "tasks": {
+ "build": {
+ "dependsOn": ["@rivetkit/react#build", "rivetkit#build"]
+ }
+ }
}
diff --git a/examples/raw-websocket-handler-proxy/package.json b/examples/raw-websocket-handler-proxy/package.json
index 9a473da2b8..05d5669ac2 100644
--- a/examples/raw-websocket-handler-proxy/package.json
+++ b/examples/raw-websocket-handler-proxy/package.json
@@ -33,11 +33,11 @@
"dependencies": {
"@hono/node-server": "^1.19.1",
"@hono/node-ws": "^1.2.0",
- "@rivetkit/react": "*",
+ "@rivetkit/react": "^2.0.38",
"hono": "^4.7.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
- "rivetkit": "*",
+ "rivetkit": "^2.0.38",
"srvx": "^0.10.0",
"ws": "^8.18.0"
},
diff --git a/examples/raw-websocket-handler-proxy/turbo.json b/examples/raw-websocket-handler-proxy/turbo.json
index 29d4cb2625..c5e71016d3 100644
--- a/examples/raw-websocket-handler-proxy/turbo.json
+++ b/examples/raw-websocket-handler-proxy/turbo.json
@@ -1,4 +1,9 @@
{
"$schema": "https://turbo.build/schema.json",
- "extends": ["//"]
+ "extends": ["//"],
+ "tasks": {
+ "build": {
+ "dependsOn": ["@rivetkit/react#build", "rivetkit#build"]
+ }
+ }
}
diff --git a/examples/raw-websocket-handler/package.json b/examples/raw-websocket-handler/package.json
index 6d0b2a2e6e..6435516cc0 100644
--- a/examples/raw-websocket-handler/package.json
+++ b/examples/raw-websocket-handler/package.json
@@ -32,12 +32,12 @@
"dependencies": {
"@hono/node-server": "^1.19.7",
"@hono/node-ws": "^1.3.0",
- "@rivetkit/react": "*",
+ "@rivetkit/react": "^2.0.38",
"hono": "^4.7.0",
"srvx": "^0.10.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
- "rivetkit": "*"
+ "rivetkit": "^2.0.38"
},
"template": {
"technologies": [
diff --git a/examples/raw-websocket-handler/turbo.json b/examples/raw-websocket-handler/turbo.json
index 29d4cb2625..c5e71016d3 100644
--- a/examples/raw-websocket-handler/turbo.json
+++ b/examples/raw-websocket-handler/turbo.json
@@ -1,4 +1,9 @@
{
"$schema": "https://turbo.build/schema.json",
- "extends": ["//"]
+ "extends": ["//"],
+ "tasks": {
+ "build": {
+ "dependsOn": ["@rivetkit/react#build", "rivetkit#build"]
+ }
+ }
}
diff --git a/examples/react/package.json b/examples/react/package.json
index 3f775b9956..b3383ef432 100644
--- a/examples/react/package.json
+++ b/examples/react/package.json
@@ -24,11 +24,11 @@
"dependencies": {
"@hono/node-server": "^1.19.7",
"@hono/node-ws": "^1.3.0",
- "@rivetkit/react": "*",
+ "@rivetkit/react": "^2.0.38",
"hono": "^4.7.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
- "rivetkit": "*",
+ "rivetkit": "^2.0.38",
"srvx": "^0.10.0"
},
"stableVersion": "0.8.0",
diff --git a/examples/react/turbo.json b/examples/react/turbo.json
index 29d4cb2625..c5e71016d3 100644
--- a/examples/react/turbo.json
+++ b/examples/react/turbo.json
@@ -1,4 +1,9 @@
{
"$schema": "https://turbo.build/schema.json",
- "extends": ["//"]
+ "extends": ["//"],
+ "tasks": {
+ "build": {
+ "dependsOn": ["@rivetkit/react#build", "rivetkit#build"]
+ }
+ }
}
diff --git a/examples/scheduling/package.json b/examples/scheduling/package.json
index a5737a1c2d..eb4475f69a 100644
--- a/examples/scheduling/package.json
+++ b/examples/scheduling/package.json
@@ -24,11 +24,11 @@
"dependencies": {
"@hono/node-server": "^1.19.7",
"@hono/node-ws": "^1.3.0",
- "@rivetkit/react": "*",
+ "@rivetkit/react": "^2.0.38",
"hono": "^4.0.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
- "rivetkit": "*",
+ "rivetkit": "^2.0.38",
"srvx": "^0.10.0"
},
"template": {
diff --git a/examples/scheduling/turbo.json b/examples/scheduling/turbo.json
index 29d4cb2625..c5e71016d3 100644
--- a/examples/scheduling/turbo.json
+++ b/examples/scheduling/turbo.json
@@ -1,4 +1,9 @@
{
"$schema": "https://turbo.build/schema.json",
- "extends": ["//"]
+ "extends": ["//"],
+ "tasks": {
+ "build": {
+ "dependsOn": ["@rivetkit/react#build", "rivetkit#build"]
+ }
+ }
}
diff --git a/examples/state/package.json b/examples/state/package.json
index f23432b4ce..c17e6378ba 100644
--- a/examples/state/package.json
+++ b/examples/state/package.json
@@ -24,11 +24,11 @@
"dependencies": {
"@hono/node-server": "^1.19.7",
"@hono/node-ws": "^1.3.0",
- "@rivetkit/react": "*",
+ "@rivetkit/react": "^2.0.38",
"hono": "^4.0.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
- "rivetkit": "*",
+ "rivetkit": "^2.0.38",
"srvx": "^0.10.0"
},
"template": {
diff --git a/examples/state/turbo.json b/examples/state/turbo.json
index 29d4cb2625..c5e71016d3 100644
--- a/examples/state/turbo.json
+++ b/examples/state/turbo.json
@@ -1,4 +1,9 @@
{
"$schema": "https://turbo.build/schema.json",
- "extends": ["//"]
+ "extends": ["//"],
+ "tasks": {
+ "build": {
+ "dependsOn": ["@rivetkit/react#build", "rivetkit#build"]
+ }
+ }
}
diff --git a/examples/stream/package.json b/examples/stream/package.json
index 91d851a95d..95eddd6033 100644
--- a/examples/stream/package.json
+++ b/examples/stream/package.json
@@ -23,11 +23,11 @@
"dependencies": {
"@hono/node-server": "^1.19.7",
"@hono/node-ws": "^1.3.0",
- "@rivetkit/react": "*",
+ "@rivetkit/react": "^2.0.38",
"hono": "^4.11.3",
"react": "^18.2.0",
"react-dom": "^18.2.0",
- "rivetkit": "*",
+ "rivetkit": "^2.0.38",
"srvx": "^0.10.0"
},
"template": {
diff --git a/examples/stream/turbo.json b/examples/stream/turbo.json
index 29d4cb2625..c5e71016d3 100644
--- a/examples/stream/turbo.json
+++ b/examples/stream/turbo.json
@@ -1,4 +1,9 @@
{
"$schema": "https://turbo.build/schema.json",
- "extends": ["//"]
+ "extends": ["//"],
+ "tasks": {
+ "build": {
+ "dependsOn": ["@rivetkit/react#build", "rivetkit#build"]
+ }
+ }
}
diff --git a/examples/trpc/package.json b/examples/trpc/package.json
index 6962c22a37..1b2e179275 100644
--- a/examples/trpc/package.json
+++ b/examples/trpc/package.json
@@ -22,7 +22,7 @@
"@trpc/client": "^11.3.1",
"@trpc/server": "^11.4.2",
"hono": "^4.7.11",
- "rivetkit": "*",
+ "rivetkit": "^2.0.38",
"srvx": "^0.10.0",
"zod": "^3.25.76"
},
diff --git a/examples/trpc/turbo.json b/examples/trpc/turbo.json
index 29d4cb2625..8d06db6c15 100644
--- a/examples/trpc/turbo.json
+++ b/examples/trpc/turbo.json
@@ -1,4 +1,9 @@
{
"$schema": "https://turbo.build/schema.json",
- "extends": ["//"]
+ "extends": ["//"],
+ "tasks": {
+ "build": {
+ "dependsOn": ["rivetkit#build"]
+ }
+ }
}
diff --git a/frontend/package.json b/frontend/package.json
index d63638a304..9aa783f1e8 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -8,7 +8,7 @@
"dev:inspector": "vite --config vite.inspector.config.ts",
"dev:engine": "vite --config vite.engine.config.ts",
"dev:cloud": "vite --config vite.cloud.config.ts",
- "ts-check": "tsc --noEmit",
+ "check-types": "tsc --noEmit",
"build:inspector": "vite build --mode=production --config vite.inspector.config.ts",
"build:engine": "vite build --mode=production --config vite.engine.config.ts",
"build:cloud": "vite build --mode=production --config vite.cloud.config.ts",
@@ -57,7 +57,7 @@
"@radix-ui/react-toggle-group": "^1.1.11",
"@radix-ui/react-tooltip": "^1.2.8",
"@radix-ui/react-visually-hidden": "^1.2.3",
- "@rivet-gg/cloud": "https://pkg.pr.new/rivet-dev/cloud/@rivet-gg/cloud@9c2916b",
+ "@rivet-gg/cloud": "https://pkg.pr.new/rivet-dev/cloud/@rivet-gg/cloud@f01ac23",
"@rivet-gg/icons": "workspace:*",
"@rivetkit/engine-api-full": "workspace:*",
"@rivetkit/example-registry": "workspace:^",
diff --git a/frontend/packages/example-registry/scripts/build/validate.ts b/frontend/packages/example-registry/scripts/build/validate.ts
index ff955c6707..17306c6f21 100644
--- a/frontend/packages/example-registry/scripts/build/validate.ts
+++ b/frontend/packages/example-registry/scripts/build/validate.ts
@@ -92,9 +92,10 @@ export function validateRivetKitVersions(
for (const [pkgName, version] of Object.entries(allDeps)) {
// Check if it's a rivetkit or @rivetkit/* package
if (pkgName === "rivetkit" || pkgName.startsWith("@rivetkit/")) {
- if (version !== "*") {
+ // Allow "*" or semver versions (^x.y.z, ~x.y.z, x.y.z, etc.)
+ if (version !== "*" && !/^[\^~]?\d+\.\d+\.\d+/.test(version)) {
throw new Error(
- `Package version validation failed for ${exampleName}: Package "${pkgName}" version must be "*" (found "${version}")`,
+ `Package version validation failed for ${exampleName}: Package "${pkgName}" version must be "*" or a valid semver (found "${version}")`,
);
}
}
diff --git a/frontend/packages/example-registry/src/_gen.ts b/frontend/packages/example-registry/src/_gen.ts
index 27553ec1e4..8b48e6041d 100644
--- a/frontend/packages/example-registry/src/_gen.ts
+++ b/frontend/packages/example-registry/src/_gen.ts
@@ -200,18 +200,6 @@ export const templates: Template[] = [
"tags": [],
"noFrontend": true
},
- {
- "name": "cloudflare-workers-inline-client",
- "displayName": "Cloudflare Workers Inline Client Example",
- "description": "Simple example demonstrating accessing Rivet Actors via Cloudflare Workers without exposing a public API. This uses the `createInlineClient` function to connect directly to your Durable Object.",
- "technologies": [
- "rivet",
- "cloudflare-workers",
- "typescript"
- ],
- "tags": [],
- "noFrontend": true
- },
{
"name": "cursors-raw-websocket",
"displayName": "Real-time Collaborative Cursors (Raw WebSocket)",
diff --git a/frontend/packages/icons/scripts/vendor-icons.js b/frontend/packages/icons/scripts/vendor-icons.js
index 7562d44295..3d1cb2d45f 100755
--- a/frontend/packages/icons/scripts/vendor-icons.js
+++ b/frontend/packages/icons/scripts/vendor-icons.js
@@ -31,6 +31,7 @@ import {
// ============================================================================
const LEGAL_BANNER = dedent`
+ // @ts-nocheck
// This file is generated by scripts/vendor-icons.js
// Do not modify this file directly
// This file includes Font Awesome Pro icons
diff --git a/frontend/packages/icons/src/index.gen.ts b/frontend/packages/icons/src/index.gen.ts
index a2c1f2eb74..efc17390d5 100644
--- a/frontend/packages/icons/src/index.gen.ts
+++ b/frontend/packages/icons/src/index.gen.ts
@@ -1,3 +1,4 @@
+// @ts-nocheck
// This file is generated by scripts/vendor-icons.js
// Do not modify this file directly
// This file includes Font Awesome Pro icons
diff --git a/frontend/src/app.tsx b/frontend/src/app.tsx
index 5a4bd6a698..0b0377d7a9 100644
--- a/frontend/src/app.tsx
+++ b/frontend/src/app.tsx
@@ -24,14 +24,6 @@ declare module "@tanstack/react-router" {
}
}
-declare module "@tanstack/history" {
- interface HistoryState {
- // inspector specific
- // indicates that the inspector was already connected as the result of submission of connection form
- connectedInForm?: boolean;
- }
-}
-
declare module "@tanstack/react-query" {
interface Register {
queryMeta: {
diff --git a/frontend/src/app/context-switcher.tsx b/frontend/src/app/context-switcher.tsx
index 8775486a2f..1286ee941b 100644
--- a/frontend/src/app/context-switcher.tsx
+++ b/frontend/src/app/context-switcher.tsx
@@ -1,9 +1,8 @@
import { useClerk } from "@clerk/clerk-react";
-import type { Project } from "@rivet-gg/cloud";
+import type { Rivet } from "@rivet-gg/cloud";
import {
faChevronDown,
faPlusCircle,
- faSlash,
faSlashForward,
Icon,
} from "@rivet-gg/icons";
@@ -374,7 +373,7 @@ function PrefetchedProjectListItem({
name,
displayName,
...props
-}: Project) {
+}: Rivet.Project) {
usePrefetchInfiniteQuery({
...useCloudDataProvider().currentOrgProjectNamespacesQueryOptions({
project: name,
@@ -397,7 +396,7 @@ function ProjectListItem({
displayName,
onHover,
onSelect,
-}: Project & {
+}: Rivet.Project & {
onHover?: () => void;
onSelect?: () => void;
}) {
diff --git a/frontend/src/app/dialogs/api-tokens-frame.tsx b/frontend/src/app/dialogs/api-tokens-frame.tsx
index aef1e09388..5b5713c131 100644
--- a/frontend/src/app/dialogs/api-tokens-frame.tsx
+++ b/frontend/src/app/dialogs/api-tokens-frame.tsx
@@ -1,6 +1,5 @@
import { faPlus, faQuestionCircle, faTrash, Icon } from "@rivet-gg/icons";
import { useMutation, useQuery } from "@tanstack/react-query";
-import { useRouteContext } from "@tanstack/react-router";
import { HelpDropdown } from "@/app/help-dropdown";
import { useDialog } from "@/app/use-dialog";
import {
@@ -15,6 +14,7 @@ import {
TableHeader,
TableRow,
} from "@/components";
+import { useCloudNamespaceDataProvider } from "@/components/actors";
import { queryClient } from "@/queries/global";
interface ApiTokensFrameContentProps extends DialogContentProps {}
@@ -22,9 +22,7 @@ interface ApiTokensFrameContentProps extends DialogContentProps {}
export default function ApiTokensFrameContent({
onClose,
}: ApiTokensFrameContentProps) {
- const { dataProvider } = useRouteContext({
- from: "/_context/_cloud/orgs/$organization/projects/$project",
- });
+ const dataProvider = useCloudNamespaceDataProvider();
const { data, isLoading } = useQuery(dataProvider.apiTokensQueryOptions());
@@ -62,7 +60,7 @@ export default function ApiTokensFrameContent({
Token
Created
Expires
-
+
@@ -81,7 +79,6 @@ export default function ApiTokensFrameContent({
))
)}
@@ -120,12 +117,10 @@ interface ApiTokenRowProps {
revoked: boolean;
lastFourChars: string;
};
- dataProvider: ReturnType<
- typeof useRouteContext<"/_context/_cloud/orgs/$organization/projects/$project">
- >["dataProvider"];
}
-function ApiTokenRow({ apiToken, dataProvider }: ApiTokenRowProps) {
+function ApiTokenRow({ apiToken }: ApiTokenRowProps) {
+ const dataProvider = useCloudNamespaceDataProvider();
const { mutate: revoke, isPending } = useMutation(
dataProvider.revokeApiTokenMutationOptions({
onSuccess: async () => {
diff --git a/frontend/src/app/dialogs/tokens-frame.tsx b/frontend/src/app/dialogs/tokens-frame.tsx
index 9c3fe81b4f..8689a2c974 100644
--- a/frontend/src/app/dialogs/tokens-frame.tsx
+++ b/frontend/src/app/dialogs/tokens-frame.tsx
@@ -161,13 +161,7 @@ function PublishableToken() {
your frontend to interact with Rivet services.
- {token && (
-
- )}
+ {token && }
);
}
diff --git a/frontend/src/app/env-variables.tsx b/frontend/src/app/env-variables.tsx
index cc335b8855..2830bc6732 100644
--- a/frontend/src/app/env-variables.tsx
+++ b/frontend/src/app/env-variables.tsx
@@ -89,7 +89,7 @@ export const useRivetDsn = ({
endpoint,
kind,
}: {
- endpoint: string;
+ endpoint?: string;
kind: "publishable" | "secret";
}) => {
const globalEndpoint = match(__APP_TYPE__)
@@ -119,7 +119,7 @@ export function RivetPublicEndpointEnv({
endpoint,
}: {
prefix?: string;
- endpoint: string;
+ endpoint?: string;
}) {
const dsn = useRivetDsn({ endpoint, kind: "publishable" });
return (
@@ -143,7 +143,7 @@ export function RivetRunnerEndpointEnv({
endpoint,
}: {
prefix?: string;
- endpoint: string;
+ endpoint?: string;
}) {
const dsn = useRivetDsn({ endpoint, kind: "secret" });
return (
diff --git a/frontend/src/app/getting-started.tsx b/frontend/src/app/getting-started.tsx
index fb6cc8536e..52d5d854e6 100644
--- a/frontend/src/app/getting-started.tsx
+++ b/frontend/src/app/getting-started.tsx
@@ -31,7 +31,10 @@ import {
Ping,
Skeleton,
} from "@/components";
-import { useDataProvider } from "@/components/actors";
+import {
+ useDataProvider,
+ useEngineCompatDataProvider,
+} from "@/components/actors";
import { TemplatesList } from "@/components/templates-list";
import { defineStepper } from "@/components/ui/stepper";
import { successfulBackendSetupEffect } from "@/lib/effects";
@@ -84,7 +87,7 @@ export function GettingStarted({
template?: string;
noTemplate?: boolean;
}) {
- const dataProvider = useDataProvider();
+ const dataProvider = useEngineCompatDataProvider();
const { data: datacenters } = useSuspenseInfiniteQuery(
dataProvider.datacentersQueryOptions(),
);
diff --git a/frontend/src/app/login.tsx b/frontend/src/app/login.tsx
index 47d2aaef6e..4fbd32fb70 100644
--- a/frontend/src/app/login.tsx
+++ b/frontend/src/app/login.tsx
@@ -23,13 +23,15 @@ export function Login() {
const clerk = useClerk();
const { user } = useUser();
const navigate = useNavigate();
- const from = useSearch({ from: "__root__", select: (s) => s.from });
+ const from = useSearch({ strict: false, select: (s) => s?.from as string });
// HACK: redirect if user is already logged in, race condition with clerk
// biome-ignore lint/correctness/useExhaustiveDependencies: from is stable
useEffect(() => {
if (user) {
- return navigate({ to: from ?? "/", search: true });
+ // biome-ignore lint/nursery/noFloatingPromises: ignore
+ navigate({ to: from ?? "/", search: true });
+ return;
}
}, [user, navigate]);
diff --git a/frontend/src/app/namespaces-page.tsx b/frontend/src/app/namespaces-page.tsx
deleted file mode 100644
index 44e1a15548..0000000000
--- a/frontend/src/app/namespaces-page.tsx
+++ /dev/null
@@ -1,188 +0,0 @@
-import { faExternalLink, faPlus, faRefresh, Icon } from "@rivet-gg/icons";
-import { useInfiniteQuery } from "@tanstack/react-query";
-import { Link, type LinkComponentProps } from "@tanstack/react-router";
-import { match } from "ts-pattern";
-import {
- Button,
- DiscreteCopyButton,
- H1,
- Skeleton,
- Table,
- TableBody,
- TableCell,
- TableHead,
- TableHeader,
- TableRow,
- Text,
- WithTooltip,
-} from "@/components";
-import { useEngineCompatDataProvider } from "@/components/actors";
-
-export function NamespacesPage({ from }: { from: LinkComponentProps["from"] }) {
- const {
- data: namespaces,
- isRefetching,
- hasNextPage,
- fetchNextPage,
- isLoading,
- refetch,
- } = useInfiniteQuery(
- useEngineCompatDataProvider().namespacesQueryOptions(),
- );
-
- return (
-
-
-
Namespaces
-
-
- ({
- ...old,
- modal: "create-ns",
- })}
- >
-
-
-
- }
- />
- refetch()}
- >
-
-
- }
- />
-
-
-
-
-
-
-
-
-
-
-
- ID
- Name
- Created
-
-
-
-
- {!isLoading && namespaces?.length === 0 ? (
-
-
-
- There's no namespaces matching
- criteria.
-
-
-
- ) : null}
- {isLoading ? (
- <>
-
-
-
-
-
-
-
-
- >
- ) : null}
- {namespaces?.map((namespace) => (
-
-
-
- {namespace.name}
-
-
-
-
- {namespace.displayName}
-
-
-
- {new Date(
- namespace.createdAt,
- ).toLocaleString()}
-
-
-
-
-
- ))}
-
- {!isLoading && hasNextPage ? (
-
-
-
-
-
- ) : null}
-
-
-
-
-
-
- );
-}
-
-function RowSkeleton() {
- return (
-
-
-
-
-
-
-
-
-
-
-
- );
-}
diff --git a/frontend/src/app/publishable-token-code-group.tsx b/frontend/src/app/publishable-token-code-group.tsx
index 5a071a1bf4..aedd85b15d 100644
--- a/frontend/src/app/publishable-token-code-group.tsx
+++ b/frontend/src/app/publishable-token-code-group.tsx
@@ -21,7 +21,7 @@ export function PublishableTokenCodeGroup() {
// Check if Vercel is connected
const hasVercel = hasProvider(configs, ["vercel", "next-js"]);
- const endpoint = useRivetDsn({ endpoint: "", kind: "publishable" });
+ const endpoint = useRivetDsn({ kind: "publishable" });
const nextJsTab = (
;
}) {
const errors = useMemo(() => {
- const errorMap: Record = {};
+ const errorMap: Record = {};
let hasErrors = false;
for (const [dc, config] of Object.entries(datacenters)) {
if (config.runnerPoolError) {
diff --git a/frontend/src/app/templates.tsx b/frontend/src/app/templates.tsx
index 32c62e4ce9..f604c5a855 100644
--- a/frontend/src/app/templates.tsx
+++ b/frontend/src/app/templates.tsx
@@ -23,7 +23,7 @@ export function Templates({
getTemplateLink?: (template: string) => LinkOptions;
startFromScratchLink?: LinkOptions;
}) {
- const showAll = useSearch({ from: "__root__", select: (s) => s.showAll });
+ const showAll = useSearch({ strict: false, select: (s) => s?.showAll });
return (
<>
diff --git a/frontend/src/components/actors/actor-database.tsx b/frontend/src/components/actors/actor-database.tsx
index 47953e36ef..821b16aeda 100644
--- a/frontend/src/components/actors/actor-database.tsx
+++ b/frontend/src/components/actors/actor-database.tsx
@@ -1,161 +1,9 @@
-import { faRefresh, faTable, faTableCells, Icon } from "@rivet-gg/icons";
-import { useQuery } from "@tanstack/react-query";
-import { useState } from "react";
-import { ShimmerLine } from "../shimmer-line";
-import { Button } from "../ui/button";
-import { Flex } from "../ui/flex";
-import { ScrollArea } from "../ui/scroll-area";
-import {
- Select,
- SelectContent,
- SelectItem,
- SelectTrigger,
- SelectValue,
-} from "../ui/select";
-import { WithTooltip } from "../ui/tooltip";
-import { useActorInspector } from "./actor-inspector-context";
-import { DatabaseTable } from "./database/database-table";
import type { ActorId } from "./queries";
interface ActorDatabaseProps {
actorId: ActorId;
}
-export function ActorDatabase({ actorId }: ActorDatabaseProps) {
- const actorInspector = useActorInspector();
- const { data, refetch } = useQuery(
- actorInspector.actorDatabaseQueryOptions(actorId),
- );
- const [table, setTable] = useState
(
- () => data?.db?.[0]?.table.name,
- );
-
- const selectedTable = table || data?.db?.[0]?.table.name;
-
- const {
- data: rows,
- refetch: refetchData,
- isLoading,
- } = useQuery({
- ...actorInspector.actorDatabaseRowsQueryOptions(
- actorId,
- selectedTable!,
- ),
- enabled: !!selectedTable,
- });
-
- const currentTable = data?.db?.find(
- (db) => db.table.name === selectedTable,
- );
-
- return (
- <>
-
-
-
-
-
- {currentTable ? (
- <>
- {currentTable.table.schema}.
- {currentTable.table.name}
-
- ({currentTable.columns.length} columns,{" "}
- {currentTable.records} rows)
-
- >
- ) : (
-
- No table selected
-
- )}
-
-
-
- {
- refetch();
- refetchData();
- }}
- >
-
-
- }
- />
-
-
-
- {isLoading ? : null}
-
- {currentTable ? (
-
- ) : null}
-
-
- >
- );
-}
-
-function TableSelect({
- actorId,
- value,
- onSelect,
-}: {
- actorId: ActorId;
- onSelect: (table: string) => void;
- value: string | undefined;
-}) {
- const actorQueries = useActorInspector();
- const { data: tables } = useQuery(
- actorQueries.actorDatabaseTablesQueryOptions(actorId),
- );
-
- return (
-
- );
+export function ActorDatabase(_props: ActorDatabaseProps) {
+ return null;
}
diff --git a/frontend/src/components/actors/actor-runner.tsx b/frontend/src/components/actors/actor-runner.tsx
index f986cca120..56adddafe8 100644
--- a/frontend/src/components/actors/actor-runner.tsx
+++ b/frontend/src/components/actors/actor-runner.tsx
@@ -13,9 +13,9 @@ export function ActorRunner({ actorId }: ActorRunnerProps) {
);
const { data: runner } = useQuery({
- ...useDataProvider().runnerByNameQueryOptions(
- actor?.runnerNameSelector!,
- ),
+ ...useDataProvider().runnerByNameQueryOptions({
+ runnerName: actor?.runnerNameSelector || "",
+ }),
enabled: !!actor?.runnerNameSelector,
});
diff --git a/frontend/src/components/actors/data-provider.tsx b/frontend/src/components/actors/data-provider.tsx
index bcfaa051f8..8e971e0c70 100644
--- a/frontend/src/components/actors/data-provider.tsx
+++ b/frontend/src/components/actors/data-provider.tsx
@@ -5,9 +5,16 @@ import {
useRouteContext,
} from "@tanstack/react-router";
import { match } from "ts-pattern";
-import type { createNamespaceContext } from "@/app/data-providers/cloud-data-provider";
-import type { createNamespaceContext as createNamespaceEngineContext } from "@/app/data-providers/engine-data-provider";
-import type { createGlobalContext } from "@/app/data-providers/inspector-data-provider";
+import type {
+ createNamespaceContext as createNamespaceCloudContext,
+ createOrganizationContext as createOrganizationCloudContext,
+ createProjectContext as createProjectCloudContext,
+} from "@/app/data-providers/cloud-data-provider";
+import type {
+ createGlobalContext as createGlobalEngineContext,
+ createNamespaceContext as createNamespaceEngineContext,
+} from "@/app/data-providers/engine-data-provider";
+import type { createGlobalContext as createGlobalInspectorContext } from "@/app/data-providers/inspector-data-provider";
export const useDataProvider = () => {
return match(__APP_TYPE__)
@@ -124,7 +131,17 @@ export const useEngineCompatDataProvider = () => {
return useRouteContext({
from: routePath,
}).dataProvider as
- | ReturnType
- | ReturnType
- | ReturnType;
+ | EngineDataProvider
+ | CloudDataProvider
+ | InspectorDataProvider;
};
+
+type EngineDataProvider = ReturnType &
+ ReturnType;
+
+type CloudDataProvider = ReturnType &
+ ReturnType &
+ ReturnType &
+ ReturnType;
+
+type InspectorDataProvider = ReturnType;
diff --git a/frontend/src/components/actors/database/database-table.tsx b/frontend/src/components/actors/database/database-table.tsx
index d42007cd01..9ec0713035 100644
--- a/frontend/src/components/actors/database/database-table.tsx
+++ b/frontend/src/components/actors/database/database-table.tsx
@@ -1,332 +1,3 @@
-import {
- faAnglesUpDown,
- faArrowDownWideShort,
- faArrowUpWideShort,
- faLink,
- Icon,
-} from "@rivet-gg/icons";
-import {
- createColumnHelper,
- // SortingState,
- type ExpandedState,
- flexRender,
- getCoreRowModel,
- getExpandedRowModel,
- getSortedRowModel,
- type RowSelectionState,
- type SortingState,
- useReactTable as useTable,
-} from "@tanstack/react-table";
-import { Fragment, useCallback, useMemo, useState } from "react";
-import type { Column, Columns, ForeignKeys } from "rivetkit/inspector";
-import {
- Badge,
- Button,
- Checkbox,
- cn,
- Table,
- TableBody,
- TableCell,
- TableHead,
- TableHeader,
- TableRow,
-} from "@/components";
-
-declare module "@tanstack/react-table" {
- interface ColumnMeta {
- type: string;
- notNull: boolean;
- default: any;
- }
-}
-
-interface DatabaseTableProps {
- columns: any[];
- data: any[];
- references?: ForeignKeys;
- className?: string;
-
- enableRowSelection?: boolean;
- enableSorting?: boolean;
- enableCellExpanding?: boolean;
- enableColumnResizing?: boolean;
-}
-
-export function DatabaseTable({
- columns: dbCols,
- data,
- references,
- className,
-
- enableRowSelection = true,
- enableSorting = true,
- enableColumnResizing = true,
-}: DatabaseTableProps) {
- const columns = useMemo(() => {
- return createColumns(dbCols, references, { enableRowSelection });
- }, [dbCols, references, enableRowSelection]);
-
- const [rowSelection, setRowSelection] = useState({});
- const [sorting, setSorting] = useState([]);
-
- const table = useTable({
- columns,
- data,
- enableRowSelection,
- enableSorting,
- enableColumnResizing,
- getCoreRowModel: getCoreRowModel(),
- getExpandedRowModel: getExpandedRowModel(),
- getSortedRowModel: getSortedRowModel(),
- defaultColumn: {},
- columnResizeMode: "onChange",
- onSortingChange: setSorting,
- onRowSelectionChange: setRowSelection,
- paginateExpandedRows: false,
- state: {
- sorting,
- rowSelection,
- },
- });
-
- const calculateColumnSizes = useCallback(() => {
- const headers = table.getFlatHeaders();
- const colSizes: { [key: string]: number } = {};
- for (let i = 0; i < headers.length; i++) {
- const header = headers[i]!;
- colSizes[`--header-${header.id}-size`] = header.getSize();
- colSizes[`--col-${header.column.id}-size`] =
- header.column.getSize();
- }
- return colSizes;
- }, [table]);
-
- const columnSizeVars = useMemo(() => {
- return calculateColumnSizes();
- }, [calculateColumnSizes]);
-
- return (
-
-
- {table.getHeaderGroups().map((headerGroup) => (
-
- {headerGroup.headers.map((header) => {
- return (
-
- {header.isPlaceholder ? null : header.column.getCanSort() ? (
-
- ) : (
-
- {flexRender(
- header.column.columnDef.header,
- header.getContext(),
- )}
-
- )}
- {header.column.getCanResize() ? (
-
- ) : null}
-
- );
- })}
-
- ))}
-
-
- {table.getRowModel().rows.map((row) => (
-
-
- {row.getVisibleCells().map((cell) => (
-
-
-
- {flexRender(
- cell.column.columnDef.cell,
- cell.getContext(),
- )}
-
-
-
- ))}
-
-
- ))}
-
-
- );
-}
-
-const ch = createColumnHelper>();
-
-function createColumns(
- columns: Columns,
- references?: ForeignKeys,
- { enableRowSelection }: { enableRowSelection?: boolean } = {},
-) {
- return [
- ...[
- enableRowSelection
- ? ch.display({
- id: "select",
- enableResizing: false,
- header: ({ table }) => (
- {
- if (value === "indeterminate") {
- table.toggleAllRowsSelected(true);
- return;
- }
- table.toggleAllRowsSelected(value);
- }}
- aria-label="Select all"
- />
- ),
- cell: ({ row }) => (
- {
- if (value === "indeterminate") {
- row.toggleSelected(true);
- return;
- }
- row.toggleSelected();
- }}
- />
- ),
- })
- : null,
- ].filter((v): v is NonNullable => v !== null),
- ...columns.map((col) =>
- ch.accessor(col.name, {
- header: (info) => (
-
- {col.name}{" "}
-
- {col.type}
-
-
-
- ),
- cell: (info) => {
- if (col.type === "blob") {
- return (
-
- BINARY{" "}
-
- );
- }
- const value = info.getValue();
- if (value === null) {
- return (
-
- NULL
-
- );
- }
-
- if (col) return <>{info.getValue()}>;
- },
- meta: {
- type: col.type,
- notNull: col.notnull,
- default: col.dflt_value,
- },
- }),
- ),
- ];
-}
-
-function ForeignKey({
- references,
- column,
-}: {
- references?: ForeignKeys;
- column: Column;
-}) {
- const ref = references?.find((ref) => ref.from === column.name);
- if (!ref) return null;
- return (
-
-
- {ref.table}.{ref.to}
-
- );
+export function DatabaseTable(_props: any) {
+ return null;
}
diff --git a/frontend/src/components/lib/create-schema-form.tsx b/frontend/src/components/lib/create-schema-form.tsx
index f67527d2c8..f3916c12c3 100644
--- a/frontend/src/components/lib/create-schema-form.tsx
+++ b/frontend/src/components/lib/create-schema-form.tsx
@@ -31,7 +31,7 @@ type SubmitHandler = (
form: UseFormReturn,
) => Promise | void;
-export const createSchemaForm = (
+export const createSchemaForm = >(
schema: Schema,
) => {
return {
@@ -46,7 +46,10 @@ export const createSchemaForm = (
...props
}: FormProps>) => {
const form = useForm>({
- resolver: zodResolver(schema),
+ resolver: zodResolver(
+ // @ts-expect-error zodResolver types are broken for zod v4
+ schema,
+ ),
mode,
reValidateMode: revalidateMode,
defaultValues,
diff --git a/frontend/src/queries/accessors.ts b/frontend/src/queries/accessors.ts
index 50c73edbe6..2d23381c0a 100644
--- a/frontend/src/queries/accessors.ts
+++ b/frontend/src/queries/accessors.ts
@@ -1,4 +1,5 @@
import { useSuspenseQuery } from "@tanstack/react-query";
+import type { UseSuspenseQueryOptions } from "@tanstack/react-query";
import { match } from "ts-pattern";
import { getConfig } from "@/components";
import {
@@ -14,14 +15,14 @@ export function usePublishableToken() {
// biome-ignore lint/correctness/useHookAtTopLevel: it's okay, its guarded by build constant
return useSuspenseQuery(
// biome-ignore lint/correctness/useHookAtTopLevel: it's okay, its guarded by build constant
- useCloudNamespaceDataProvider().publishableTokenQueryOptions(),
+ useCloudNamespaceDataProvider().publishableTokenQueryOptions() as UseSuspenseQueryOptions,
).data;
})
.with("engine", () => {
// biome-ignore lint/correctness/useHookAtTopLevel: it's okay, its guarded by build constant
return useSuspenseQuery(
// biome-ignore lint/correctness/useHookAtTopLevel: it's okay, its guarded by build constant
- useEngineNamespaceDataProvider().engineAdminTokenQueryOptions(),
+ useEngineNamespaceDataProvider().engineAdminTokenQueryOptions() as UseSuspenseQueryOptions,
).data;
})
.otherwise(() => {
@@ -31,7 +32,7 @@ export function usePublishableToken() {
export function useAdminToken() {
return useSuspenseQuery(
- useEngineCompatDataProvider().engineAdminTokenQueryOptions(),
+ useEngineCompatDataProvider().engineAdminTokenQueryOptions() as UseSuspenseQueryOptions,
).data;
}
diff --git a/frontend/src/routes/_context/_cloud/orgs.$organization/projects.$project/ns.$namespace/tokens.tsx b/frontend/src/routes/_context/_cloud/orgs.$organization/projects.$project/ns.$namespace/tokens.tsx
index 9755a2b3ec..9ad4a284ad 100644
--- a/frontend/src/routes/_context/_cloud/orgs.$organization/projects.$project/ns.$namespace/tokens.tsx
+++ b/frontend/src/routes/_context/_cloud/orgs.$organization/projects.$project/ns.$namespace/tokens.tsx
@@ -22,7 +22,6 @@ import {
} from "@tanstack/react-router";
import { useState } from "react";
import { match } from "ts-pattern";
-import { useEndpoint } from "@/app/dialogs/connect-manual-serverfull-frame";
import { EnvVariables, useRivetDsn } from "@/app/env-variables";
import { HelpDropdown } from "@/app/help-dropdown";
import { PublishableTokenCodeGroup } from "@/app/publishable-token-code-group";
@@ -56,6 +55,7 @@ import {
TabsTrigger,
} from "@/components";
import {
+ useCloudNamespaceDataProvider,
useDataProvider,
useEngineCompatDataProvider,
} from "@/components/actors";
@@ -127,7 +127,7 @@ function RouteComponent() {
}
export function PublishableToken() {
- const dsn = useRivetDsn({ endpoint: "", kind: "publishable" });
+ const dsn = useRivetDsn({ kind: "publishable" });
return (
@@ -420,7 +420,7 @@ export function CloudApiTokens() {
Token
Created
Expires
-
+
@@ -439,7 +439,6 @@ export function CloudApiTokens() {
))
)}
@@ -608,12 +607,10 @@ interface ApiTokenRowProps {
revoked: boolean;
lastFourChars: string;
};
- dataProvider: ReturnType<
- typeof useRouteContext<"/_context/_cloud/orgs/$organization/projects/$project">
- >["dataProvider"];
}
-function ApiTokenRow({ apiToken, dataProvider }: ApiTokenRowProps) {
+function ApiTokenRow({ apiToken }: ApiTokenRowProps) {
+ const dataProvider = useCloudNamespaceDataProvider();
const { mutate: revoke, isPending } = useMutation(
dataProvider.revokeApiTokenMutationOptions({
onSuccess: async () => {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 30e0aa705a..eacbdd3637 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -543,31 +543,6 @@ importers:
specifier: ^4.22.0
version: 4.44.0(@cloudflare/workers-types@4.20251014.0)
- examples/cloudflare-workers-inline-client:
- dependencies:
- '@rivetkit/cloudflare-workers':
- specifier: workspace:*
- version: link:../../rivetkit-typescript/packages/cloudflare-workers
- rivetkit:
- specifier: workspace:*
- version: link:../../rivetkit-typescript/packages/rivetkit
- devDependencies:
- '@cloudflare/workers-types':
- specifier: ^4.20250129.0
- version: 4.20251014.0
- '@types/node':
- specifier: ^22.13.9
- version: 22.19.1
- tsx:
- specifier: ^3.12.7
- version: 3.14.0
- typescript:
- specifier: ^5.5.2
- version: 5.9.3
- wrangler:
- specifier: ^4.22.0
- version: 4.44.0(@cloudflare/workers-types@4.20251014.0)
-
examples/cross-actor-actions:
dependencies:
'@hono/node-server':
@@ -1811,8 +1786,8 @@ importers:
specifier: ^1.2.3
version: 1.2.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@rivet-gg/cloud':
- specifier: https://pkg.pr.new/rivet-dev/cloud/@rivet-gg/cloud@9c2916b
- version: https://pkg.pr.new/rivet-dev/cloud/@rivet-gg/cloud@9c2916b
+ specifier: https://pkg.pr.new/rivet-dev/cloud/@rivet-gg/cloud@f01ac23
+ version: https://pkg.pr.new/rivet-dev/cloud/@rivet-gg/cloud@f01ac23
'@rivet-gg/icons':
specifier: workspace:*
version: link:packages/icons
@@ -2722,8 +2697,8 @@ importers:
specifier: 25.5.3
version: 25.5.3
'@rivet-gg/cloud':
- specifier: https://pkg.pr.new/rivet-dev/cloud/@rivet-gg/cloud@bf2ebb2
- version: https://pkg.pr.new/rivet-dev/cloud/@rivet-gg/cloud@bf2ebb2
+ specifier: https://pkg.pr.new/rivet-dev/cloud/@rivet-gg/cloud@f01ac23
+ version: https://pkg.pr.new/rivet-dev/cloud/@rivet-gg/cloud@f01ac23
'@rivet-gg/components':
specifier: workspace:*
version: link:../frontend/packages/components
@@ -6952,12 +6927,8 @@ packages:
resolution: {tarball: https://pkg.pr.new/rivet-dev/cloud/@rivet-gg/cloud@715f221}
version: 0.0.0
- '@rivet-gg/cloud@https://pkg.pr.new/rivet-dev/cloud/@rivet-gg/cloud@9c2916b':
- resolution: {tarball: https://pkg.pr.new/rivet-dev/cloud/@rivet-gg/cloud@9c2916b}
- version: 0.0.0
-
- '@rivet-gg/cloud@https://pkg.pr.new/rivet-dev/cloud/@rivet-gg/cloud@bf2ebb2':
- resolution: {tarball: https://pkg.pr.new/rivet-dev/cloud/@rivet-gg/cloud@bf2ebb2}
+ '@rivet-gg/cloud@https://pkg.pr.new/rivet-dev/cloud/@rivet-gg/cloud@f01ac23':
+ resolution: {tarball: https://pkg.pr.new/rivet-dev/cloud/@rivet-gg/cloud@f01ac23}
version: 0.0.0
'@rivetkit/bare-ts@0.6.2':
@@ -13732,6 +13703,7 @@ packages:
tar@7.5.2:
resolution: {integrity: sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==}
engines: {node: '>=18'}
+ deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exhorbitant rates) by contacting i@izs.me
temp-dir@2.0.0:
resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==}
@@ -19395,20 +19367,7 @@ snapshots:
transitivePeerDependencies:
- encoding
- '@rivet-gg/cloud@https://pkg.pr.new/rivet-dev/cloud/@rivet-gg/cloud@9c2916b':
- dependencies:
- cross-fetch: 4.1.0
- form-data: 4.0.5
- js-base64: 3.7.8
- node-fetch: 2.7.0
- pino-pretty: 13.1.2
- qs: 6.14.0
- readable-stream: 4.7.0
- url-join: 5.0.0
- transitivePeerDependencies:
- - encoding
-
- '@rivet-gg/cloud@https://pkg.pr.new/rivet-dev/cloud/@rivet-gg/cloud@bf2ebb2':
+ '@rivet-gg/cloud@https://pkg.pr.new/rivet-dev/cloud/@rivet-gg/cloud@f01ac23':
dependencies:
cross-fetch: 4.1.0
form-data: 4.0.5
diff --git a/website/package.json b/website/package.json
index ae9cf38e3f..7abca26e6f 100644
--- a/website/package.json
+++ b/website/package.json
@@ -25,7 +25,7 @@
"@headlessui/react": "^2.2.9",
"@heroicons/react": "^2.2.0",
"@rivet-gg/api": "25.5.3",
- "@rivet-gg/cloud": "https://pkg.pr.new/rivet-dev/cloud/@rivet-gg/cloud@bf2ebb2",
+ "@rivet-gg/cloud": "https://pkg.pr.new/rivet-dev/cloud/@rivet-gg/cloud@f01ac23",
"@rivet-gg/components": "workspace:*",
"@rivet-gg/icons": "workspace:^",
"@rivetkit/example-registry": "workspace:*",