From a2542705d32412faa700f6a62746a034ab18de11 Mon Sep 17 00:00:00 2001 From: Nathan Flurry Date: Sun, 30 Nov 2025 22:19:54 -0800 Subject: [PATCH 1/2] feat(examples): add user-generated-actors example --- .../README.md | 88 +++ .../package.json | 43 +- .../src/backend/deploy-with-rivet-cloud.ts | 109 ++++ .../backend/deploy-with-rivet-self-hosted.ts | 64 +++ .../src/backend/index.ts | 61 +++ .../src/backend/utils.ts | 142 +++++ .../src/frontend/App.css | 280 ++++++++++ .../src/frontend/App.tsx | 319 +++++++++++ .../src/frontend/index.html | 12 + .../src/frontend/main.tsx | 9 + .../template/package.json | 27 + .../template/src/backend/registry.ts | 27 + .../template/src/backend/server.ts | 33 ++ .../template/src/frontend/App.tsx | 71 +++ .../template/src/frontend/index.html | 95 ++++ .../template}/src/frontend/main.tsx | 0 .../template/tsconfig.json | 20 + .../template}/vite.config.ts | 3 +- .../tests/deploy.test.ts | 108 ++++ .../tsconfig.json | 23 + .../tsconfig.node.json | 10 + .../vite.config.ts | 20 + .../vitest.config.ts | 5 +- examples/freestyle/.env.sample | 14 - examples/freestyle/.gitignore | 2 - examples/freestyle/README.md | 65 --- examples/freestyle/deno.json | 11 - .../freestyle/scripts/freestyle-deploy.ts | 153 ------ examples/freestyle/src/backend/registry.ts | 29 - examples/freestyle/src/backend/server.ts | 24 - examples/freestyle/src/frontend/App.tsx | 103 ---- examples/freestyle/src/frontend/index.html | 113 ---- examples/freestyle/tsconfig.json | 43 -- examples/freestyle/tsup.config.js | 16 - examples/freestyle/turbo.json | 4 - pnpm-lock.yaml | 502 ++++++++++++++---- website/public/llms-full.txt | 256 +++++++++ website/public/llms.txt | 1 + .../actors/ai-and-user-generated-actors.mdx | 287 ++++++++++ website/src/sitemap/mod.ts | 4 + 40 files changed, 2491 insertions(+), 705 deletions(-) create mode 100644 examples/ai-and-user-generated-actors-freestyle/README.md rename examples/{freestyle => ai-and-user-generated-actors-freestyle}/package.json (51%) create mode 100644 examples/ai-and-user-generated-actors-freestyle/src/backend/deploy-with-rivet-cloud.ts create mode 100644 examples/ai-and-user-generated-actors-freestyle/src/backend/deploy-with-rivet-self-hosted.ts create mode 100644 examples/ai-and-user-generated-actors-freestyle/src/backend/index.ts create mode 100644 examples/ai-and-user-generated-actors-freestyle/src/backend/utils.ts create mode 100644 examples/ai-and-user-generated-actors-freestyle/src/frontend/App.css create mode 100644 examples/ai-and-user-generated-actors-freestyle/src/frontend/App.tsx create mode 100644 examples/ai-and-user-generated-actors-freestyle/src/frontend/index.html create mode 100644 examples/ai-and-user-generated-actors-freestyle/src/frontend/main.tsx create mode 100644 examples/ai-and-user-generated-actors-freestyle/template/package.json create mode 100644 examples/ai-and-user-generated-actors-freestyle/template/src/backend/registry.ts create mode 100644 examples/ai-and-user-generated-actors-freestyle/template/src/backend/server.ts create mode 100644 examples/ai-and-user-generated-actors-freestyle/template/src/frontend/App.tsx create mode 100644 examples/ai-and-user-generated-actors-freestyle/template/src/frontend/index.html rename examples/{freestyle => ai-and-user-generated-actors-freestyle/template}/src/frontend/main.tsx (100%) create mode 100644 examples/ai-and-user-generated-actors-freestyle/template/tsconfig.json rename examples/{freestyle => ai-and-user-generated-actors-freestyle/template}/vite.config.ts (83%) create mode 100644 examples/ai-and-user-generated-actors-freestyle/tests/deploy.test.ts create mode 100644 examples/ai-and-user-generated-actors-freestyle/tsconfig.json create mode 100644 examples/ai-and-user-generated-actors-freestyle/tsconfig.node.json create mode 100644 examples/ai-and-user-generated-actors-freestyle/vite.config.ts rename examples/{freestyle => ai-and-user-generated-actors-freestyle}/vitest.config.ts (52%) delete mode 100644 examples/freestyle/.env.sample delete mode 100644 examples/freestyle/.gitignore delete mode 100644 examples/freestyle/README.md delete mode 100644 examples/freestyle/deno.json delete mode 100644 examples/freestyle/scripts/freestyle-deploy.ts delete mode 100644 examples/freestyle/src/backend/registry.ts delete mode 100644 examples/freestyle/src/backend/server.ts delete mode 100644 examples/freestyle/src/frontend/App.tsx delete mode 100644 examples/freestyle/src/frontend/index.html delete mode 100644 examples/freestyle/tsconfig.json delete mode 100644 examples/freestyle/tsup.config.js delete mode 100644 examples/freestyle/turbo.json create mode 100644 website/src/content/docs/actors/ai-and-user-generated-actors.mdx diff --git a/examples/ai-and-user-generated-actors-freestyle/README.md b/examples/ai-and-user-generated-actors-freestyle/README.md new file mode 100644 index 0000000000..2ea03a4bb3 --- /dev/null +++ b/examples/ai-and-user-generated-actors-freestyle/README.md @@ -0,0 +1,88 @@ +# User and AI Generated Rivet Actors Freestyle Deployer + +Shows how to deploy user or AI-generated Rivet Actor code using a sandboxed namespace and Freestyle + +[View Full Documentation](https://rivet.dev/docs/actors/ai-and-user-generated-actors) + +## Features + +- **Sandboxed Rivet namespace**: Create isolated environments for testing and deploying actors +- **Deploy user or AI generated code**: Deploy custom actor and frontend code directly to Freestyle +- **Automatic configuration**: Configure Rivet & Freestyle together automatically without manual setup + +## How It Works + +The logic lives in `src/backend/`: + +1. **Receives user or AI-generated code**: The backend receives custom actor code (`registry.ts`) and frontend code (`App.tsx`) +2. **Creates a sandboxed Rivet namespace**: Either using Rivet Cloud or Rivet self-hosted API (see [`deploy-with-rivet-cloud.ts`](src/backend/deploy-with-rivet-cloud.ts) and [`deploy-with-rivet-self-hosted.ts`](src/backend/deploy-with-rivet-self-hosted.ts)) +3. **Deploys actor and frontend to Freestyle**: Builds the project and deploys to Freestyle (see [`src/backend/utils.ts`](src/backend/utils.ts)) +4. **Configures Rivet to connect to Freestyle**: Sets up the Rivet runner to point to the Rivet deployment for running the actors + +## Getting Started + +### Prerequisites + +- Node.js 18+ and pnpm +- A [Freestyle](https://freestyle.sh) account and API key +- Either: + - [Rivet Cloud](https://dashboard.rivet.dev/) account with API token, or + - [Self-hosted Rivet instance](https://www.rivet.dev/docs/self-hosting/) with endpoint and token + +### Installation + +```bash +pnpm install +``` + +### Running the Application + +Start both the frontend and backend servers: + +```bash +pnpm dev +``` + +Open http://localhost:5173 in your browser. + +## Usage + +### Rivet Cloud + +1. **Get Your Cloud API Token**: + - Go to or create your project on [Rivet Cloud](https://dashboard.rivet.dev/) + - Click on "Tokens" in the sidebar + - Under "Cloud API Tokens" click "Create Token" and copy the token +2. **Edit Code**: Modify the `registry.ts` and `App.tsx` code in the editors +3. **Configure Deploy Config**: Fill in all required fields: + - Rivet Cloud API token (from step 1) + - Freestyle domain (e.g., myapp.style.dev) + - Freestyle API key +4. **Deploy**: Click "Deploy to Freestyle" and watch the deployment logs + +### Rivet Self-Hosted + +1. **Edit Code**: Modify the `registry.ts` and `App.tsx` code in the editors +2. **Configure Deploy Config**: Fill in all required fields: + - Rivet endpoint (your self-hosted instance URL) + - Rivet API token + - Freestyle domain (e.g., myapp.style.dev) + - Freestyle API key +3. **Deploy**: Click "Deploy to Freestyle" and watch the deployment logs + +## Project Structure + +``` +src/ + backend/ # Backend used to deploy your sandboxed Rivet backend code + frontend/ # Frontend for the deploy UI you'll be using +template/ # The Rivet template code to deploy with Rivet + src/ + backend/ # Actor code to be deployed + frontend/ # Frontend to be deployed +tests/ # Vitest tests +``` + +## License + +MIT diff --git a/examples/freestyle/package.json b/examples/ai-and-user-generated-actors-freestyle/package.json similarity index 51% rename from examples/freestyle/package.json rename to examples/ai-and-user-generated-actors-freestyle/package.json index 2fc8bbb365..54ae8d2b57 100644 --- a/examples/freestyle/package.json +++ b/examples/ai-and-user-generated-actors-freestyle/package.json @@ -1,38 +1,39 @@ { - "name": "example-freestyle", - "version": "2.0.21", + "name": "example-ai-and-user-generated-actors-freestyle", + "version": "1.0.0", "private": true, "type": "module", "scripts": { "dev": "concurrently \"pnpm run dev:backend\" \"pnpm run dev:frontend\"", - "dev:backend": "deno run --watch --allow-all src/backend/server.ts", + "dev:backend": "tsx src/backend/index.ts", "dev:frontend": "vite", - "freestyle:deploy": "tsx scripts/freestyle-deploy.ts", - "check-types": "tsc --noEmit" + "build": "tsc && vite build", + "preview": "vite preview", + "check-types": "tsc --noEmit", + "test": "vitest", + "test:run": "vitest run" }, - "devDependencies": { + "dependencies": { + "@hono/node-server": "^1.13.8", + "@monaco-editor/react": "^4.7.0", + "@rivet-gg/cloud": "https://pkg.pr.new/rivet-dev/cloud/@rivet-gg/cloud@715f221", "@rivetkit/engine-api-full": "^25.7.2", - "@rivetkit/react": "workspace:*", + "dotenv": "^17.2.2", + "execa": "^9.5.2", + "freestyle-sandboxes": "^0.0.95", + "hono": "^4.6.0", + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { "@types/node": "^22.13.9", - "@types/prompts": "^2", "@types/react": "^18.2.0", "@types/react-dom": "^18.2.0", "@vitejs/plugin-react": "^4.2.0", "concurrently": "^8.2.2", - "dotenv": "^17.2.2", - "freestyle-sandboxes": "^0.0.95", - "prompts": "^2.4.2", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "tsup": "^8.5.0", "tsx": "^3.12.7", "typescript": "^5.5.2", "vite": "^5.0.0", - "vitest": "^3.1.1" - }, - "dependencies": { - "hono": "4.9.8", - "rivetkit": "workspace:*" - }, - "stableVersion": "0.8.0" + "vitest": "^2.1.8" + } } diff --git a/examples/ai-and-user-generated-actors-freestyle/src/backend/deploy-with-rivet-cloud.ts b/examples/ai-and-user-generated-actors-freestyle/src/backend/deploy-with-rivet-cloud.ts new file mode 100644 index 0000000000..2c81d58b53 --- /dev/null +++ b/examples/ai-and-user-generated-actors-freestyle/src/backend/deploy-with-rivet-cloud.ts @@ -0,0 +1,109 @@ +import { RivetClient as CloudClient } from "@rivet-gg/cloud"; +import { RivetClient } from "@rivetkit/engine-api-full"; +import { + deployToFreestyle, + configureRivetServerless, + generateNamespaceName, + type DeployRequest, + type LogCallback, +} from "./utils"; + +export async function deployWithRivetCloud(req: DeployRequest, log: LogCallback) { + if (!("cloud" in req.kind)) { + throw new Error("Expected cloud deployment request"); + } + + const { cloudEndpoint: apiUrl, cloudToken: apiToken, engineEndpoint: endpoint } = req.kind.cloud; + const { freestyleDomain, freestyleApiKey } = req; + + const cloudRivet = new CloudClient({ + baseUrl: apiUrl, + token: apiToken, + }); + + const { project, organization } = await cloudRivet.apiTokens.inspect(); + + const namespaceName = generateNamespaceName(); + + await log(`Creating namespace ${namespaceName}`); + const { namespace } = await cloudRivet.namespaces.create( + project, + { + name: namespaceName, + displayName: namespaceName.substring(0, 16), + org: organization, + }, + ); + + const { token: runnerToken } = await cloudRivet.namespaces.createSecretToken( + project, + namespace.name, + { + name: `${namespaceName}-runner-token`, + org: organization, + }, + ); + + const { token: publishableToken } = + await cloudRivet.namespaces.createPublishableToken( + project, + namespace.name, + { + org: organization, + }, + ); + + const { token: accessToken } = await cloudRivet.namespaces.createAccessToken( + project, + namespace.name, + { + org: organization, + }, + ); + + const datacenter = req.datacenter || "us-west-1"; + + // Deploy to Freestyle + const { deploymentId } = await deployToFreestyle({ + registryCode: req.registryCode, + appCode: req.appCode, + domain: freestyleDomain, + apiKey: freestyleApiKey, + envVars: { + VITE_RIVET_ENDPOINT: endpoint, + VITE_RIVET_NAMESPACE: namespace.access.engineNamespaceName, + VITE_RIVET_TOKEN: publishableToken, + VITE_RIVET_DATACENTER: datacenter, + RIVET_ENDPOINT: endpoint, + RIVET_NAMESPACE: namespace.access.engineNamespaceName, + RIVET_RUNNER_TOKEN: runnerToken, + RIVET_PUBLISHABLE_TOKEN: publishableToken, + }, + log, + }); + + // Update runner config + const engineRivet = new RivetClient({ + environment: endpoint, + token: accessToken, + }); + + await configureRivetServerless({ + rivet: engineRivet, + domain: freestyleDomain, + namespace: namespace.access.engineNamespaceName, + datacenter, + log, + }); + + return { + success: true, + dashboardUrl: `https://dashboard.rivet.dev/orgs/${organization}/projects/${project}/ns/${namespace.name}`, + freestyleUrl: `https://admin.freestyle.sh/dashboard/deployments/${deploymentId}`, + tokens: { + runnerToken, + publishableToken, + accessToken, + }, + }; +} diff --git a/examples/ai-and-user-generated-actors-freestyle/src/backend/deploy-with-rivet-self-hosted.ts b/examples/ai-and-user-generated-actors-freestyle/src/backend/deploy-with-rivet-self-hosted.ts new file mode 100644 index 0000000000..a9415816b2 --- /dev/null +++ b/examples/ai-and-user-generated-actors-freestyle/src/backend/deploy-with-rivet-self-hosted.ts @@ -0,0 +1,64 @@ +import { RivetClient } from "@rivetkit/engine-api-full"; +import { + deployToFreestyle, + configureRivetServerless, + generateNamespaceName, + type DeployRequest, + type LogCallback, +} from "./utils"; + +export async function deployWithRivetSelfHosted(req: DeployRequest, log: LogCallback) { + if (!("selfHosted" in req.kind)) { + throw new Error("Expected self-hosted deployment request"); + } + + const { endpoint, token } = req.kind.selfHosted; + const { freestyleDomain, freestyleApiKey } = req; + + const rivet = new RivetClient({ + environment: endpoint, + token: token, + }); + + const namespaceName = generateNamespaceName(); + + await log(`Creating namespace ${namespaceName}`); + const { namespace } = await rivet.namespaces.create({ + displayName: namespaceName, + name: namespaceName, + }); + + const datacenter = req.datacenter || "us-west-1"; + + // Deploy to Freestyle + const { deploymentId } = await deployToFreestyle({ + registryCode: req.registryCode, + appCode: req.appCode, + domain: freestyleDomain, + apiKey: freestyleApiKey, + envVars: { + VITE_RIVET_ENDPOINT: endpoint, + VITE_RIVET_NAMESPACE: namespace.name, + VITE_RIVET_TOKEN: token, + VITE_RIVET_DATACENTER: datacenter, + RIVET_ENDPOINT: endpoint, + RIVET_NAMESPACE: namespace.name, + RIVET_RUNNER_TOKEN: token, + RIVET_PUBLISHABLE_TOKEN: token, + }, + log, + }); + + await configureRivetServerless({ + rivet, + domain: freestyleDomain, + namespace: namespace.name, + datacenter, + log, + }); + + return { + success: true, + freestyleUrl: `https://admin.freestyle.sh/dashboard/deployments/${deploymentId}`, + }; +} diff --git a/examples/ai-and-user-generated-actors-freestyle/src/backend/index.ts b/examples/ai-and-user-generated-actors-freestyle/src/backend/index.ts new file mode 100644 index 0000000000..810bf98deb --- /dev/null +++ b/examples/ai-and-user-generated-actors-freestyle/src/backend/index.ts @@ -0,0 +1,61 @@ +import { Hono } from "hono"; +import { streamSSE } from "hono/streaming"; +import { logger } from "hono/logger"; +import { serve } from "@hono/node-server"; +import { deployWithRivetCloud } from "./deploy-with-rivet-cloud"; +import { deployWithRivetSelfHosted } from "./deploy-with-rivet-self-hosted"; +import type { DeployRequest, LogCallback } from "./utils"; + +const app = new Hono(); + +app.use(logger()); + +app.post("/api/deploy", async (c) => { + const body = await c.req.json(); + + return streamSSE(c, async (stream) => { + const log: LogCallback = async (message: string) => { + await stream.writeSSE({ data: message, event: "log" }); + }; + + try { + const isCloud = "cloud" in body.kind; + + let result; + if (isCloud) { + result = await deployWithRivetCloud(body, log); + } else { + result = await deployWithRivetSelfHosted(body, log); + } + + await stream.writeSSE({ + data: JSON.stringify(result), + event: "result", + }); + } catch (error) { + console.error("Deployment error:", error); + const errorMessage = error instanceof Error ? error.message : String(error); + + await stream.writeSSE({ + data: errorMessage, + event: "error", + }); + } + }); +}); + +// Global error handlers +process.on('unhandledRejection', (reason, promise) => { + console.error('Unhandled Rejection at:', promise, 'reason:', reason); +}); + +process.on('uncaughtException', (error) => { + console.error('Uncaught Exception:', error); + process.exit(1); +}); + +const PORT = Number(process.env.PORT) || 3001; +serve({ + fetch: app.fetch, + port: PORT, +}); diff --git a/examples/ai-and-user-generated-actors-freestyle/src/backend/utils.ts b/examples/ai-and-user-generated-actors-freestyle/src/backend/utils.ts new file mode 100644 index 0000000000..3c841b12c6 --- /dev/null +++ b/examples/ai-and-user-generated-actors-freestyle/src/backend/utils.ts @@ -0,0 +1,142 @@ +import { RivetClient } from "@rivetkit/engine-api-full"; +import { FreestyleSandboxes } from "freestyle-sandboxes"; +import { prepareDirForDeploymentSync } from "freestyle-sandboxes/utils"; +import { writeFile, cp } from "node:fs/promises"; +import { tmpdir } from "node:os"; +import { join } from "node:path"; +import { $ } from "execa"; + +export type LogCallback = (message: string) => Promise; + +export interface CloudDeployRequest { + cloudEndpoint: string; + cloudToken: string; + engineEndpoint: string; +} + +export interface SelfHostedDeployRequest { + endpoint: string; + token: string; +} + +export interface DeployRequest { + registryCode: string; + appCode: string; + datacenter?: string; + freestyleDomain: string; + freestyleApiKey: string; + kind: + | { cloud: CloudDeployRequest } + | { selfHosted: SelfHostedDeployRequest }; +} + +/** Assemble the repository that we're going to deploy to Freestyle. */ +export async function setupRepo(config: { + registryCode: string; + appCode: string; + log: LogCallback; +}): Promise { + await config.log("Preparing project files"); + const tmpDir = join(tmpdir(), `rivet-deploy-${Date.now()}`); + const templateDir = join(process.cwd(), "template"); + + await cp(templateDir, tmpDir, { recursive: true }); + + await writeFile(join(tmpDir, "src/backend/registry.ts"), config.registryCode); + await writeFile(join(tmpDir, "src/frontend/App.tsx"), config.appCode); + + return tmpDir; +} + +/** Build frontend with Vite. */ +export async function buildFrontend( + projectDir: string, + envVars: Record, + log: LogCallback, +) { + await log("Installing dependencies"); + await $({ cwd: projectDir })`pnpm install --no-frozen-lockfile`; + + await log("Building frontend"); + await $({ cwd: projectDir, env: { ...process.env, ...envVars } })`pnpm run build:frontend`; +} + +/** + * Deploy the application to Freestyle Sandboxes. + * + * Sets up the project directory and deploys the backend to Freestyle. + */ +export async function deployToFreestyle(config: { + registryCode: string; + appCode: string; + domain: string; + apiKey: string; + envVars: Record; + log: LogCallback; +}): Promise<{ deploymentId: string }> { + const projectDir = await setupRepo({ + registryCode: config.registryCode, + appCode: config.appCode, + log: config.log, + }); + + await buildFrontend(projectDir, config.envVars, config.log); + + await config.log("Deploying to Freestyle"); + + const freestyle = new FreestyleSandboxes({ + apiKey: config.apiKey, + }); + + const deploymentSource = prepareDirForDeploymentSync(projectDir); + + const result = await freestyle.deployWeb(deploymentSource, { + envVars: { + LOG_LEVEL: "debug", + FREESTYLE_ENDPOINT: `https://${config.domain}`, + RIVET_RUNNER_KIND: "serverless", + ...config.envVars, + }, + timeout: 60 * 5, + entrypoint: "src/backend/server.ts", + domains: [config.domain], + build: false, + }); + + return { deploymentId: result.deploymentId }; +} + +/** + * Configure a serverless runner in Rivet for a specific datacenter. + */ +export async function configureRivetServerless(config: { + rivet: RivetClient; + domain: string; + namespace: string; + datacenter?: string; + log: LogCallback; +}) { + const datacenter = config.datacenter || "us-west-1"; + await config.log(`Configuring runner in ${datacenter}`); + + await config.rivet.runnerConfigsUpsert("default", { + datacenters: { + [datacenter]: { + serverless: { + url: `https://${config.domain}/api/rivet`, + headers: {}, + runnersMargin: 0, + minRunners: 0, + maxRunners: 1_000, + slotsPerRunner: 1, + requestLifespan: 60 * 5, + }, + }, + }, + namespace: config.namespace, + }); +} + +export function generateNamespaceName(): string { + return `ns-${Date.now()}-${Math.random().toString(36).substring(2, 8)}`; +} diff --git a/examples/ai-and-user-generated-actors-freestyle/src/frontend/App.css b/examples/ai-and-user-generated-actors-freestyle/src/frontend/App.css new file mode 100644 index 0000000000..d8f382a497 --- /dev/null +++ b/examples/ai-and-user-generated-actors-freestyle/src/frontend/App.css @@ -0,0 +1,280 @@ +* { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +body { + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Inter', Roboto, sans-serif; + margin: 0; + padding: 0; + background-color: rgb(10, 10, 10); + overflow: hidden; +} + +.app { + height: 100vh; + display: flex; + flex-direction: column; + background: rgb(10, 10, 10); +} + +.ide-layout { + display: flex; + height: 100vh; + overflow: hidden; + background: rgb(10, 10, 10); +} + +.editors-row { + flex: 1; + display: flex; + overflow: hidden; +} + +.editor-section { + flex: 1; + display: flex; + flex-direction: column; + overflow: hidden; + border-right: 1px solid #2c2c2e; +} + +.editor-section:last-child { + border-right: none; +} + +.editor-header { + background: rgb(10, 10, 10); + color: #ffffff; + padding: 12px 20px; + font-weight: 500; + font-size: 0.95em; + border-bottom: 1px solid #2c2c2e; +} + +.editor-section textarea { + flex: 1; + overflow: auto !important; +} + +.deploy-panel { + width: 400px; + background: rgb(10, 10, 10); + border-left: 1px solid #2c2c2e; + display: flex; + flex-direction: column; + overflow: hidden; +} + +.panel-header { + background: rgb(10, 10, 10); + color: #ffffff; + padding: 12px 20px; + text-align: left; + border-bottom: 1px solid #2c2c2e; +} + +.panel-header h2 { + margin: 0; + font-size: 0.95em; + font-weight: 500; +} + +.tabs { + display: flex; + border-bottom: 1px solid #2c2c2e; + background: rgb(10, 10, 10); +} + +.tabs button { + flex: 1; + padding: 12px 16px; + background: rgb(10, 10, 10); + border: none; + color: #8e8e93; + cursor: pointer; + font-size: 0.9em; + border-bottom: 3px solid transparent; + transition: all 0.2s; +} + +.tabs button:hover { + background: #2c2c2e; + color: #ffffff; +} + +.tabs button.active { + color: rgb(255, 79, 0); + border-bottom-color: rgb(255, 79, 0); +} + +.panel-content { + flex: 1; + overflow-y: auto; + padding: 20px; + display: flex; + flex-direction: column; + gap: 20px; + background: rgb(10, 10, 10); +} + +.env-vars-section { + flex-shrink: 0; +} + +.env-vars-section h3 { + margin-bottom: 15px; + color: #ffffff; + font-size: 1em; + font-weight: 600; +} + +.env-vars { + display: flex; + flex-direction: column; + gap: 12px; +} + +.env-var { + display: flex; + flex-direction: column; + gap: 6px; +} + +.env-var label { + color: #8e8e93; + font-size: 0.85em; + font-weight: 500; +} + +.env-var input { + padding: 8px 12px; + border: 1px solid #3a3a3c; + border-radius: 8px; + font-size: 0.9em; + transition: all 0.2s; + background: #2c2c2e; + color: #ffffff; +} + +.env-var input::placeholder { + color: #8e8e93; +} + +.env-var input:focus { + outline: none; + border-color: rgb(255, 79, 0); + box-shadow: 0 0 0 3px rgba(255, 79, 0, 0.1); +} + +.deploy-section { + flex-shrink: 0; +} + +.deploy-button { + width: 100%; + padding: 12px 24px; + background: white; + color: black; + border: none; + border-radius: 8px; + cursor: pointer; + font-size: 1em; + font-weight: 500; + transition: all 0.2s; +} + +.deploy-button:hover:not(:disabled) { + background: #e0e0e0; +} + +.deploy-button:disabled { + background: #3a3a3c; + color: #8e8e93; + cursor: not-allowed; +} + +.log-section { + flex-shrink: 0; + background: transparent; + border: 1px solid #2c2c2e; + border-radius: 8px; + padding: 16px; + display: flex; + flex-direction: column; + gap: 8px; + max-height: 300px; + overflow-y: auto; +} + +.log-section h3 { + color: #ffffff; + font-size: 1em; + font-weight: 600; + margin: 0; +} + +.log-section > div { + font-family: ui-monospace, SFMono-Regular, SF Mono, Consolas, Liberation Mono, Menlo, monospace; + font-size: 0.8em; + color: #8e8e93; + line-height: 1.5; +} + +.log-section.deploying > div:last-child { + color: rgb(255, 79, 0); + font-weight: 500; +} + +.deployment-success { + background: transparent; + border: 1px solid #2c2c2e; + border-radius: 8px; + padding: 16px; + display: flex; + flex-direction: column; + gap: 8px; +} + +.deployment-success h3 { + color: #ffffff; + font-size: 1em; + font-weight: 600; + margin: 0; +} + +.deployment-success a { + color: rgb(255, 79, 0); + text-decoration: none; + font-size: 0.9em; +} + +.deployment-success a:hover { + text-decoration: underline; +} + +/* Code editor styling */ +textarea { + outline: none !important; + border: none !important; +} + +/* Scrollbar styling */ +::-webkit-scrollbar { + width: 10px; + height: 10px; +} + +::-webkit-scrollbar-track { + background: rgb(10, 10, 10); +} + +::-webkit-scrollbar-thumb { + background: #3a3a3c; + border-radius: 5px; +} + +::-webkit-scrollbar-thumb:hover { + background: #48484a; +} diff --git a/examples/ai-and-user-generated-actors-freestyle/src/frontend/App.tsx b/examples/ai-and-user-generated-actors-freestyle/src/frontend/App.tsx new file mode 100644 index 0000000000..84f3100de3 --- /dev/null +++ b/examples/ai-and-user-generated-actors-freestyle/src/frontend/App.tsx @@ -0,0 +1,319 @@ +import { useState } from "react"; +import Editor, { type OnMount } from "@monaco-editor/react"; +import "./App.css"; +import DEFAULT_REGISTRY from "../../template/src/backend/registry.ts?raw"; +import DEFAULT_APP from "../../template/src/frontend/App.tsx?raw"; +import { DeployRequest } from "../backend/utils"; + +type DeploymentTarget = "cloud" | "selfHosted"; + +interface DeployConfig { + target: DeploymentTarget; + freestyleDomain: string; + freestyleApiKey: string; + // Cloud-specific + cloudApiUrl: string; + cloudApiToken: string; + cloudEngineEndpoint: string; + // Self-hosted specific + selfHostedEndpoint: string; + selfHostedToken: string; +} + +export function App() { + const [registryCode, setRegistryCode] = useState(DEFAULT_REGISTRY); + const [appCode, setAppCode] = useState(DEFAULT_APP); + const [deploying, setDeploying] = useState(false); + const [deploymentLog, setDeploymentLog] = useState([]); + const [deploymentUrl, setDeploymentUrl] = useState(null); + const [dashboardUrl, setDashboardUrl] = useState(null); + const [freestyleUrl, setFreestyleUrl] = useState(null); + + const handleEditorMount: OnMount = (editor, monaco) => { + // Disable TypeScript diagnostics since template code isn't valid standalone + monaco.languages.typescript.typescriptDefaults.setDiagnosticsOptions({ + noSemanticValidation: true, + noSyntaxValidation: true, + }); + }; + + const [config, setConfig] = useState({ + target: "cloud", + freestyleDomain: "", + freestyleApiKey: "", + cloudApiUrl: import.meta.env.VITE_RIVET_CLOUD_ENDPOINT || "https://api-cloud.rivet.dev", + cloudApiToken: "", + cloudEngineEndpoint: import.meta.env.VITE_RIVET_ENGINE_ENDPOINT || "https://api.rivet.dev", + selfHostedEndpoint: "", + selfHostedToken: "", + }); + + const addLog = (message: string) => { + setDeploymentLog((prev) => [...prev, `[${new Date().toLocaleTimeString()}] ${message}`]); + }; + + const handleDeploy = async () => { + setDeploying(true); + setDeploymentLog([]); + setDeploymentUrl(null); + setDashboardUrl(null); + setFreestyleUrl(null); + + try { + const datacenter = import.meta.env.VITE_RIVET_DATACENTER || "us-west-1"; + + // Build request payload + const payload: DeployRequest = { + registryCode, + appCode, + datacenter, + freestyleDomain: config.freestyleDomain, + freestyleApiKey: config.freestyleApiKey, + kind: config.target === "cloud" + ? { + cloud: { + cloudEndpoint: config.cloudApiUrl, + cloudToken: config.cloudApiToken, + engineEndpoint: config.cloudEngineEndpoint, + } + } + : { + selfHosted: { + endpoint: config.selfHostedEndpoint, + token: config.selfHostedToken, + } + } + }; + + const response = await fetch("/api/deploy", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(payload), + }); + + if (!response.ok) { + throw new Error("Deployment request failed"); + } + + // Read SSE stream + const reader = response.body?.getReader(); + if (!reader) { + throw new Error("No response body"); + } + + const decoder = new TextDecoder(); + let buffer = ""; + + while (true) { + const { done, value } = await reader.read(); + if (done) break; + + buffer += decoder.decode(value, { stream: true }); + const lines = buffer.split("\n"); + buffer = lines.pop() || ""; + + let currentEvent = ""; + for (const line of lines) { + if (line.startsWith("event: ")) { + currentEvent = line.slice(7); + } else if (line.startsWith("data: ")) { + const data = line.slice(6); + if (currentEvent === "log") { + addLog(data); + } else if (currentEvent === "result") { + const result = JSON.parse(data); + setDeploymentUrl(`https://${config.freestyleDomain}/`); + if (result.dashboardUrl) { + setDashboardUrl(result.dashboardUrl); + } + if (result.freestyleUrl) { + setFreestyleUrl(result.freestyleUrl); + } + } else if (currentEvent === "error") { + addLog(`Error: ${data}`); + } + currentEvent = ""; + } + } + } + } catch (error) { + addLog(`Error: ${error instanceof Error ? error.message : String(error)}`); + } finally { + setDeploying(false); + } + }; + + return ( +
+
+
+
+
src/backend/registry.ts
+ setRegistryCode(value || "")} + onMount={handleEditorMount} + theme="vs-dark" + options={{ + minimap: { enabled: false }, + fontSize: 14, + scrollBeyondLastLine: false, + automaticLayout: true, + }} + /> +
+ +
+
src/frontend/App.tsx
+ setAppCode(value || "")} + onMount={handleEditorMount} + theme="vs-dark" + options={{ + minimap: { enabled: false }, + fontSize: 14, + scrollBeyondLastLine: false, + automaticLayout: true, + }} + /> +
+
+ +
+
+

Deploy to Freestyle

+
+ +
+ + +
+ +
+
+

Configuration

+
+ {config.target === "cloud" && ( +
+ + + setConfig({ ...config, cloudApiToken: e.target.value }) + } + placeholder="Required" + /> +
+ )} + {config.target === "selfHosted" && ( + <> +
+ + + setConfig({ ...config, selfHostedEndpoint: e.target.value }) + } + placeholder="Required" + /> +
+
+ + + setConfig({ ...config, selfHostedToken: e.target.value }) + } + placeholder="Required" + /> +
+ + )} +
+ + + setConfig({ ...config, freestyleDomain: e.target.value }) + } + placeholder="myapp.style.dev" + /> +
+
+ + + setConfig({ ...config, freestyleApiKey: e.target.value }) + } + placeholder="Required" + /> +
+
+
+ +
+ +
+ + {deploymentLog.length > 0 && ( +
+

Deployment Log

+ {deploymentLog.map((log, i) => ( +
{log}
+ ))} +
+ )} + + {deploymentUrl && ( +
+

Deployment Complete

+ + Open App › + + {dashboardUrl && ( + + Rivet Namespace › + + )} + {freestyleUrl && ( + + Freestyle Deployment › + + )} +
+ )} +
+
+
+
+ ); +} diff --git a/examples/ai-and-user-generated-actors-freestyle/src/frontend/index.html b/examples/ai-and-user-generated-actors-freestyle/src/frontend/index.html new file mode 100644 index 0000000000..d1c42a1b9c --- /dev/null +++ b/examples/ai-and-user-generated-actors-freestyle/src/frontend/index.html @@ -0,0 +1,12 @@ + + + + + + User and AI Generated Rivet Backend + + +
+ + + diff --git a/examples/ai-and-user-generated-actors-freestyle/src/frontend/main.tsx b/examples/ai-and-user-generated-actors-freestyle/src/frontend/main.tsx new file mode 100644 index 0000000000..1961235a6b --- /dev/null +++ b/examples/ai-and-user-generated-actors-freestyle/src/frontend/main.tsx @@ -0,0 +1,9 @@ +import React from "react"; +import ReactDOM from "react-dom/client"; +import { App } from "./App"; + +ReactDOM.createRoot(document.getElementById("root")!).render( + + + , +); diff --git a/examples/ai-and-user-generated-actors-freestyle/template/package.json b/examples/ai-and-user-generated-actors-freestyle/template/package.json new file mode 100644 index 0000000000..4a40ca8515 --- /dev/null +++ b/examples/ai-and-user-generated-actors-freestyle/template/package.json @@ -0,0 +1,27 @@ +{ + "name": "deployed-freestyle-app", + "version": "1.0.0", + "private": true, + "type": "module", + "packageManager": "pnpm@10.15.0", + "scripts": { + "dev:backend": "deno run --watch --allow-all src/backend/server.ts", + "dev:frontend": "vite", + "build:frontend": "vite build" + }, + "dependencies": { + "@rivetkit/react": "^2.0.24", + "hono": "4.9.8", + "on-change": "^5.0.1", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "rivetkit": "2.0.24" + }, + "devDependencies": { + "@types/react": "^19.0.9", + "@types/react-dom": "^19.0.2", + "@vitejs/plugin-react": "^4.3.4", + "typescript": "^5.7.3", + "vite": "^6.0.11" + } +} diff --git a/examples/ai-and-user-generated-actors-freestyle/template/src/backend/registry.ts b/examples/ai-and-user-generated-actors-freestyle/template/src/backend/registry.ts new file mode 100644 index 0000000000..41dfcd357a --- /dev/null +++ b/examples/ai-and-user-generated-actors-freestyle/template/src/backend/registry.ts @@ -0,0 +1,27 @@ +import { actor, setup } from "rivetkit"; + +export const counter = actor({ + state: { + count: 0, + }, + + actions: { + increment: (c) => { + c.state.count++; + c.broadcast("countChanged", c.state.count); + return c.state.count; + }, + + decrement: (c) => { + c.state.count--; + c.broadcast("countChanged", c.state.count); + return c.state.count; + }, + + getCount: (c) => c.state.count, + }, +}); + +export const registry = setup({ + use: { counter }, +}); diff --git a/examples/ai-and-user-generated-actors-freestyle/template/src/backend/server.ts b/examples/ai-and-user-generated-actors-freestyle/template/src/backend/server.ts new file mode 100644 index 0000000000..7bb59c70b1 --- /dev/null +++ b/examples/ai-and-user-generated-actors-freestyle/template/src/backend/server.ts @@ -0,0 +1,33 @@ +import { Hono } from "hono"; +import { upgradeWebSocket } from "hono/deno"; +import { serveStatic } from "hono/deno"; +import { registry } from "./registry.ts"; + +globalThis.addEventListener("unhandledrejection", (event) => { + console.error("Unhandled promise rejection:", event.reason); + event.preventDefault(); +}); + +const serverOutput = registry.start({ + inspector: { + enabled: true, + }, + runnerKind: "serverless", + disableDefaultServer: true, + noWelcome: true, + runEngine: false, + autoConfigureServerless: false, + basePath: "/api/rivet", + getUpgradeWebSocket: () => upgradeWebSocket, +}); + +const app = new Hono(); + +app.use("/api/rivet/*", async (c) => { + return await serverOutput.fetch(c.req.raw); +}); + +app.use("*", serveStatic({ root: "./public" })); + +// @ts-expect-error +Deno.serve(app.fetch); diff --git a/examples/ai-and-user-generated-actors-freestyle/template/src/frontend/App.tsx b/examples/ai-and-user-generated-actors-freestyle/template/src/frontend/App.tsx new file mode 100644 index 0000000000..446cfeb559 --- /dev/null +++ b/examples/ai-and-user-generated-actors-freestyle/template/src/frontend/App.tsx @@ -0,0 +1,71 @@ +import { createRivetKit } from "@rivetkit/react"; +import { useEffect, useState } from "react"; +import type { registry } from "../backend/registry"; + +console.log("Environment variables:", { + VITE_RIVET_ENDPOINT: import.meta.env.VITE_RIVET_ENDPOINT, + VITE_RIVET_NAMESPACE: import.meta.env.VITE_RIVET_NAMESPACE, + VITE_RIVET_TOKEN: import.meta.env.VITE_RIVET_TOKEN, +}); + +const { useActor } = createRivetKit({ + endpoint: import.meta.env.VITE_RIVET_ENDPOINT, + namespace: import.meta.env.VITE_RIVET_NAMESPACE, + token: import.meta.env.VITE_RIVET_TOKEN, +}); + +export function App() { + const [count, setCount] = useState(0); + + const counter = useActor({ + name: "counter", + key: ["global"], + }); + + useEffect(() => { + if (counter.connection) { + counter.connection.getCount().then(setCount); + } + }, [counter.connection]); + + counter.useEvent("countChanged", (newCount: number) => { + setCount(newCount); + }); + + const increment = async () => { + if (counter.connection) { + const newCount = await counter.connection.increment(); + setCount(newCount); + } + }; + + const decrement = async () => { + if (counter.connection) { + const newCount = await counter.connection.decrement(); + setCount(newCount); + } + }; + + return ( +
+

Realtime Counter

+
+ Try opening another tab +
+
+

{count}

+
+
+ + +
+
+ {counter.connection ? "Connected" : "Connecting..."} +
+
+ ); +} diff --git a/examples/ai-and-user-generated-actors-freestyle/template/src/frontend/index.html b/examples/ai-and-user-generated-actors-freestyle/template/src/frontend/index.html new file mode 100644 index 0000000000..03772d4191 --- /dev/null +++ b/examples/ai-and-user-generated-actors-freestyle/template/src/frontend/index.html @@ -0,0 +1,95 @@ + + + + + + Rivet Counter + + + +
+ + + diff --git a/examples/freestyle/src/frontend/main.tsx b/examples/ai-and-user-generated-actors-freestyle/template/src/frontend/main.tsx similarity index 100% rename from examples/freestyle/src/frontend/main.tsx rename to examples/ai-and-user-generated-actors-freestyle/template/src/frontend/main.tsx diff --git a/examples/ai-and-user-generated-actors-freestyle/template/tsconfig.json b/examples/ai-and-user-generated-actors-freestyle/template/tsconfig.json new file mode 100644 index 0000000000..bf825cc1b4 --- /dev/null +++ b/examples/ai-and-user-generated-actors-freestyle/template/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "target": "esnext", + "lib": ["esnext", "dom"], + "jsx": "react-jsx", + "module": "esnext", + "moduleResolution": "bundler", + "types": ["node", "vite/client"], + "resolveJsonModule": true, + "allowJs": true, + "checkJs": false, + "noEmit": true, + "isolatedModules": true, + "allowSyntheticDefaultImports": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "skipLibCheck": true + }, + "include": ["src/**/*"] +} diff --git a/examples/freestyle/vite.config.ts b/examples/ai-and-user-generated-actors-freestyle/template/vite.config.ts similarity index 83% rename from examples/freestyle/vite.config.ts rename to examples/ai-and-user-generated-actors-freestyle/template/vite.config.ts index 6495f1f870..ac1e033460 100644 --- a/examples/freestyle/vite.config.ts +++ b/examples/ai-and-user-generated-actors-freestyle/template/vite.config.ts @@ -5,9 +5,8 @@ export default defineConfig({ plugins: [react()], root: "src/frontend", build: { - outDir: "../../dist/public", + outDir: "../../public", }, - envDir: ".", server: { host: "0.0.0.0", port: 5173, diff --git a/examples/ai-and-user-generated-actors-freestyle/tests/deploy.test.ts b/examples/ai-and-user-generated-actors-freestyle/tests/deploy.test.ts new file mode 100644 index 0000000000..8758ed4d11 --- /dev/null +++ b/examples/ai-and-user-generated-actors-freestyle/tests/deploy.test.ts @@ -0,0 +1,108 @@ +import { describe, it, expect, beforeAll } from "vitest"; +import { deployWithRivetCloud } from "../src/backend/deploy-with-rivet-cloud"; +import { deployWithRivetSelfHosted } from "../src/backend/deploy-with-rivet-self-hosted"; +import type { DeployRequest, LogCallback } from "../src/backend/utils"; +import { readFileSync } from "node:fs"; +import { join } from "node:path"; + +// Simple log callback for tests +const testLog: LogCallback = async (message: string) => { + console.log(message); +}; + +// Load sample code from template files +const SAMPLE_REGISTRY_CODE = readFileSync( + join(process.cwd(), "template/src/backend/registry.ts"), + "utf-8", +); + +const SAMPLE_APP_CODE = readFileSync( + join(process.cwd(), "template/src/frontend/App.tsx"), + "utf-8", +); + +describe("Deploy Functions", () => { + // Load environment variables + beforeAll(() => { + // Check if required environment variables are set + const requiredEnvVars = ["FREESTYLE_DOMAIN", "FREESTYLE_API_KEY"]; + + for (const envVar of requiredEnvVars) { + if (!process.env[envVar]) { + throw new Error( + `Missing required environment variable: ${envVar}`, + ); + } + } + }); + + describe("deployWithRivetCloud", () => { + it.skip("should deploy successfully with Rivet Cloud", async () => { + // Skip this test if cloud credentials are not provided + if ( + !process.env.RIVET_CLOUD_ENDPOINT || + !process.env.RIVET_CLOUD_TOKEN || + !process.env.RIVET_ENGINE_ENDPOINT + ) { + console.log( + "Skipping cloud deployment test - missing credentials", + ); + return; + } + + const request: DeployRequest = { + registryCode: SAMPLE_REGISTRY_CODE, + appCode: SAMPLE_APP_CODE, + datacenter: process.env.RIVET_DATACENTER, + freestyleDomain: process.env.FREESTYLE_DOMAIN!, + freestyleApiKey: process.env.FREESTYLE_API_KEY!, + kind: { + cloud: { + cloudEndpoint: process.env.RIVET_CLOUD_ENDPOINT, + cloudToken: process.env.RIVET_CLOUD_TOKEN, + engineEndpoint: process.env.RIVET_ENGINE_ENDPOINT, + }, + }, + }; + + const result = await deployWithRivetCloud(request, testLog); + + expect(result).toBeDefined(); + expect(result.success).toBe(true); + expect(result.tokens).toBeDefined(); + expect(result.tokens.runnerToken).toBeDefined(); + expect(result.tokens.publishableToken).toBeDefined(); + }, 300000); // 5 minute timeout for deployment + }); + + describe("deployWithRivetSelfHosted", () => { + it.skip("should deploy successfully with Rivet Self-Hosted", async () => { + // Skip this test if self-hosted credentials are not provided + if (!process.env.RIVET_ENDPOINT || !process.env.RIVET_TOKEN) { + console.log( + "Skipping self-hosted deployment test - missing credentials", + ); + return; + } + + const request: DeployRequest = { + registryCode: SAMPLE_REGISTRY_CODE, + appCode: SAMPLE_APP_CODE, + datacenter: process.env.RIVET_DATACENTER, + freestyleDomain: process.env.FREESTYLE_DOMAIN!, + freestyleApiKey: process.env.FREESTYLE_API_KEY!, + kind: { + selfHosted: { + endpoint: process.env.RIVET_ENDPOINT, + token: process.env.RIVET_TOKEN, + }, + }, + }; + + const result = await deployWithRivetSelfHosted(request, testLog); + + expect(result).toBeDefined(); + expect(result.success).toBe(true); + }, 300000); // 5 minute timeout for deployment + }); +}); diff --git a/examples/ai-and-user-generated-actors-freestyle/tsconfig.json b/examples/ai-and-user-generated-actors-freestyle/tsconfig.json new file mode 100644 index 0000000000..b7e2f539fc --- /dev/null +++ b/examples/ai-and-user-generated-actors-freestyle/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/examples/ai-and-user-generated-actors-freestyle/tsconfig.node.json b/examples/ai-and-user-generated-actors-freestyle/tsconfig.node.json new file mode 100644 index 0000000000..f4e3be23a5 --- /dev/null +++ b/examples/ai-and-user-generated-actors-freestyle/tsconfig.node.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts", "server"] +} diff --git a/examples/ai-and-user-generated-actors-freestyle/vite.config.ts b/examples/ai-and-user-generated-actors-freestyle/vite.config.ts new file mode 100644 index 0000000000..75cbbebbaa --- /dev/null +++ b/examples/ai-and-user-generated-actors-freestyle/vite.config.ts @@ -0,0 +1,20 @@ +import react from "@vitejs/plugin-react"; +import { defineConfig } from "vite"; + +export default defineConfig({ + plugins: [react()], + root: "src/frontend", + build: { + emptyOutDir: true, + }, + server: { + host: "0.0.0.0", + port: 5173, + proxy: { + "/api": { + target: "http://localhost:3001", + changeOrigin: true, + }, + }, + }, +}); diff --git a/examples/freestyle/vitest.config.ts b/examples/ai-and-user-generated-actors-freestyle/vitest.config.ts similarity index 52% rename from examples/freestyle/vitest.config.ts rename to examples/ai-and-user-generated-actors-freestyle/vitest.config.ts index 5bdee00206..e4f8a9c641 100644 --- a/examples/freestyle/vitest.config.ts +++ b/examples/ai-and-user-generated-actors-freestyle/vitest.config.ts @@ -2,6 +2,9 @@ import { defineConfig } from "vitest/config"; export default defineConfig({ test: { - include: ["tests/**/*.test.ts"], + globals: true, + environment: "node", + testTimeout: 120000, + hookTimeout: 120000, }, }); diff --git a/examples/freestyle/.env.sample b/examples/freestyle/.env.sample deleted file mode 100644 index 16f9f1cfe1..0000000000 --- a/examples/freestyle/.env.sample +++ /dev/null @@ -1,14 +0,0 @@ -FREESTYLE_API_KEY="" -FREESTYLE_DOMAIN="example.style.dev" -RIVET_TOKEN="" - -# To enable serverless -RIVET_ENDPOINT="" -RIVET_RUNNER_KIND="serverless" - -# For accessing actor (not relevant if using self-hosted Rivet Engine) -RIVET_PUBLISHABLE_TOKEN="" # default: "" - -# Optional variables with defaults: -RIVET_NAMESPACE="default" # default: "default" -RIVET_RUNNER_NAME="freestyle-runner" # default: "freestyle-runner" \ No newline at end of file diff --git a/examples/freestyle/.gitignore b/examples/freestyle/.gitignore deleted file mode 100644 index 79b7a1192f..0000000000 --- a/examples/freestyle/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -.actorcore -node_modules \ No newline at end of file diff --git a/examples/freestyle/README.md b/examples/freestyle/README.md deleted file mode 100644 index 83e9a2b4ce..0000000000 --- a/examples/freestyle/README.md +++ /dev/null @@ -1,65 +0,0 @@ -# Freestyle Deployment for RivetKit - -Example project demonstrating serverless deployment of RivetKit actors to [Freestyle](https://freestyle.sh) with [RivetKit](https://rivetkit.org). - -[Learn More →](https://github.com/rivet-dev/rivetkit) - -[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues) - - -## What is this? - -Freestyle is unique from other providers since it is built to deploy untrusted AI-generated or user-generated code. This enables your application to deploy vibe-coded or user-provided backends on Rivet and Freestyle. This example showcases a real-time stateful chat app that can be deployed to FreeStyle's [Web Deployment](https://docs.freestyle.sh/web/overview) platform. - -## Getting Started - -### Prerequisites - -- Node.js 18+ -- Deno (for development) - -**Note**: Deno is required since Freestyle uses Deno for their Web Deployments under the hood - -### Installation - -```sh -git clone https://github.com/rivet-dev/rivetkit -cd rivetkit/examples/freestyle -pnpm install -``` - -### Development - -```sh -pnpm run dev -``` - -Open your browser to `http://localhost:5173` to see the application. - -```sh -RIVET_RUNNER_KIND=serverless VITE_RIVET_ENDPOINT="$RIVET_ENDPOINT" pnpm run dev -``` - -### Deploy to Freestyle - -```sh -# Set env vars -export FREESTYLE_DOMAIN="my-domain.style.dev" # Set this to any unique *.style.dev domain -export FREESTYLE_API_KEY="XXXX" # See https://admin.freestyle.sh/dashboard/api-tokens -export RIVET_ENDPOINT="http://api.rivet.gg" -export RIVET_NAMESPACE="XXXX" # Creates new namespace if does not exist -export RIVET_TOKEN="XXXX" # Rivet Service token -export RIVET_PUBLISHABLE_TOKEN="XXXX" # For connecting to Rivet Actors - -pnpm run freestyle:deploy -``` - -Open your browser to your Freestyle domain to see your application connect to Rivet deployed on Freestyle. - -If self-hosting Rivet: -1. **Important**: `RIVET_ENDPOINT` must be public to the internet. -2. `RIVET_PUBLISHABLE_TOKEN` can be kept empty. - -## License - -Apache 2.0 diff --git a/examples/freestyle/deno.json b/examples/freestyle/deno.json deleted file mode 100644 index 514de9dd79..0000000000 --- a/examples/freestyle/deno.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "imports": { - "os": "node:os", - "path": "node:path", - "fs": "node:fs", - "fs/promises": "node:fs/promises", - "crypto": "node:crypto", - "rivetkit": "npm:rivetkit", - "hono": "npm:hono" - } -} diff --git a/examples/freestyle/scripts/freestyle-deploy.ts b/examples/freestyle/scripts/freestyle-deploy.ts deleted file mode 100644 index 5aa230cb15..0000000000 --- a/examples/freestyle/scripts/freestyle-deploy.ts +++ /dev/null @@ -1,153 +0,0 @@ -import { execSync } from "node:child_process"; -import { readFileSync } from "node:fs"; -import { type Rivet, RivetClient } from "@rivetkit/engine-api-full"; -import dotenv from "dotenv"; -import { FreestyleSandboxes } from "freestyle-sandboxes"; -import { prepareDirForDeploymentSync } from "freestyle-sandboxes/utils"; - -dotenv.config({ path: new URL("../.env", import.meta.url).pathname }); - -const FREESTYLE_DOMAIN = getEnv("FREESTYLE_DOMAIN"); -const FREESTYLE_API_KEY = getEnv("FREESTYLE_API_KEY"); -const RIVET_ENDPOINT = getEnv("RIVET_ENDPOINT"); -const RIVET_TOKEN = getEnv("RIVET_TOKEN"); -const RIVET_NAMESPACE_NAME = getEnv("RIVET_NAMESPACE"); -const RIVET_RUNNER_NAME = "freestyle"; - -function getEnv(key: string): string { - const value = process.env[key]; - if (typeof value === "undefined") { - throw new Error(`Missing env var: ${key}`); - } - return value; -} - -const rivet = new RivetClient({ - environment: RIVET_ENDPOINT, - token: RIVET_TOKEN, -}); - -const freestyle = new FreestyleSandboxes({ - apiKey: FREESTYLE_API_KEY, -}); - -async function main() { - const namespace = await getOrCreateNamespace({ - displayName: RIVET_NAMESPACE_NAME, - name: RIVET_NAMESPACE_NAME, - }); - console.log("Got namespace " + namespace.name); - - runBuildSteps(); - - await deployToFreestyle(); - console.log("Deployed to freestyle"); - - await updateRunnerConfig(namespace); - console.log("Updated runner config"); - - console.log("🎉 Deployment complete! 🎉"); - console.log( - "Visit https://" + - FREESTYLE_DOMAIN + - "/ to see your frontend, which is connected to Rivet", - ); -} - -function runBuildSteps() { - console.log("Running build steps..."); - - console.log("- Running vite build"); - execSync("vite build", { - stdio: "inherit", - env: { - ...process.env, - VITE_RIVET_ENDPOINT: RIVET_ENDPOINT, - VITE_RIVET_NAMESPACE: RIVET_NAMESPACE_NAME, - VITE_RIVET_RUNNER_NAME: RIVET_RUNNER_NAME, - }, - }); - - console.log("- Running tsup"); - execSync("tsup", { - stdio: "inherit", - }); - - console.log("Build complete!"); -} - -async function getOrCreateNamespace({ - name, - displayName, -}: { - name: string; - displayName: string; -}): Promise { - console.log("- Checking for existing " + name + " namespace"); - const { namespaces } = await rivet.namespaces.list({ - limit: 32, - }); - const existing = namespaces.find((ns) => ns.name === name); - if (existing) { - console.log("- Found existing namespace " + name); - return existing; - } - console.log("- Creating namespace " + name); - const { namespace } = await rivet.namespaces.create({ - displayName, - name, - }); - return namespace; -} - -async function updateRunnerConfig(namespace: Rivet.Namespace) { - console.log("- Updating runner config for " + RIVET_RUNNER_NAME); - await rivet.runnerConfigs.upsert(RIVET_RUNNER_NAME, { - serverless: { - url: "https://" + FREESTYLE_DOMAIN + "/api/start", - headers: {}, - runnersMargin: 1, - minRunners: 1, - maxRunners: 1, - slotsPerRunner: 1, - requestLifespan: 60 * 4 + 30, - }, - namespace: namespace.name, - }); -} - -async function deployToFreestyle() { - console.log("- Deploying to freestyle at https://" + FREESTYLE_DOMAIN); - - const buildDir = prepareDirForDeploymentSync( - new URL("../dist", import.meta.url).pathname, - ); - if (buildDir.kind === "files") { - buildDir.files["deno.json"] = { - // Fix imports for Deno - content: readFileSync( - new URL("../deno.json", import.meta.url).pathname, - "utf-8", - ), - encoding: "utf-8", - }; - } else { - throw new Error("Expected buildDir to be files"); - } - const res = await freestyle.deployWeb(buildDir, { - envVars: { - LOG_LEVEL: "debug", - FREESTYLE_ENDPOINT: `https://${FREESTYLE_DOMAIN}`, - RIVET_ENDPOINT, - RIVET_RUNNER_KIND: "serverless", - }, - timeout: 60 * 5, - entrypoint: "server.cjs", - domains: [FREESTYLE_DOMAIN], - build: false, - }); - - console.log("Deployment id=" + res.deploymentId); -} - -main(); diff --git a/examples/freestyle/src/backend/registry.ts b/examples/freestyle/src/backend/registry.ts deleted file mode 100644 index 34e333eb1a..0000000000 --- a/examples/freestyle/src/backend/registry.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { actor, setup } from "rivetkit"; - -export type Message = { sender: string; text: string; timestamp: number }; - -export const chatRoom = actor({ - // Persistent state that survives restarts: https://rivet.dev/docs/actors/state - state: { - messages: [] as Message[], - }, - - actions: { - // Callable functions from clients: https://rivet.dev/docs/actors/actions - sendMessage: (c, sender: string, text: string) => { - const message = { sender, text, timestamp: Date.now() }; - // State changes are automatically persisted - c.state.messages.push(message); - // Send events to all connected clients: https://rivet.dev/docs/actors/events - c.broadcast("newMessage", message); - return message; - }, - - getHistory: (c) => c.state.messages, - }, -}); - -// Register actors for use: https://rivet.dev/docs/setup -export const registry = setup({ - use: { chatRoom }, -}); diff --git a/examples/freestyle/src/backend/server.ts b/examples/freestyle/src/backend/server.ts deleted file mode 100644 index 65940e5ec7..0000000000 --- a/examples/freestyle/src/backend/server.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { Hono } from "hono"; -import { serveStatic, upgradeWebSocket } from "hono/deno"; -import { registry } from "./registry"; - -const serverOutput = registry.start({ - inspector: { - enabled: true, - }, - disableDefaultServer: true, - basePath: "/api", - getUpgradeWebSocket: () => upgradeWebSocket, - overrideServerAddress: `${process.env.FREESTYLE_ENDPOINT ?? "http://localhost:8080"}/api`, -}); - -const app = new Hono(); -app.use("/api/*", async (c) => { - return await serverOutput.fetch(c.req.raw); -}); -app.use("*", serveStatic({ root: "./public" })); - -// Under the hood, Freestyle uses Deno -// for their Web Deploy instances -// @ts-expect-error -Deno.serve({ port: 8080 }, app.fetch); diff --git a/examples/freestyle/src/frontend/App.tsx b/examples/freestyle/src/frontend/App.tsx deleted file mode 100644 index f8d8e17b6a..0000000000 --- a/examples/freestyle/src/frontend/App.tsx +++ /dev/null @@ -1,103 +0,0 @@ -import { createRivetKit } from "@rivetkit/react"; -import { useEffect, useState } from "react"; -import type { Message, registry } from "../backend/registry"; - -const { useActor } = createRivetKit({ - endpoint: import.meta.env.VITE_RIVET_ENDPOINT ?? "http://localhost:8080/api", - namespace: import.meta.env.VITE_RIVET_NAMESPACE, - runnerName: import.meta.env.VITE_RIVET_RUNNER_NAME ?? "freestyle-runner", -}); - -export function App() { - const [roomId, setRoomId] = useState("general"); - const [username, setUsername] = useState("User"); - const [input, setInput] = useState(""); - const [messages, setMessages] = useState([]); - - const chatRoom = useActor({ - name: "chatRoom", - key: [roomId], - }); - - useEffect(() => { - if (chatRoom.connection) { - chatRoom.connection.getHistory().then(setMessages); - } - }, [chatRoom.connection]); - - chatRoom.useEvent("newMessage", (message: Message) => { - setMessages((prev) => [...prev, message]); - }); - - const sendMessage = async () => { - if (chatRoom.connection && input.trim()) { - await chatRoom.connection.sendMessage(username, input); - setInput(""); - } - }; - - const handleKeyPress = (e: React.KeyboardEvent) => { - if (e.key === "Enter") { - sendMessage(); - } - }; - - return ( -
-
-

Chat Room: {roomId}

-
- -
- - setRoomId(e.target.value)} - placeholder="Enter room name" - /> - - setUsername(e.target.value)} - placeholder="Enter your username" - /> -
- -
- {messages.length === 0 ? ( -
- No messages yet. Start the conversation! -
- ) : ( - messages.map((msg, i) => ( -
-
{msg.sender}
-
{msg.text}
-
- {new Date(msg.timestamp).toLocaleTimeString()} -
-
- )) - )} -
- -
- setInput(e.target.value)} - onKeyPress={handleKeyPress} - placeholder="Type a message..." - disabled={!chatRoom.connection} - /> - -
-
- ); -} diff --git a/examples/freestyle/src/frontend/index.html b/examples/freestyle/src/frontend/index.html deleted file mode 100644 index 91526270f9..0000000000 --- a/examples/freestyle/src/frontend/index.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - Chat Room Example - - - -
- - - \ No newline at end of file diff --git a/examples/freestyle/tsconfig.json b/examples/freestyle/tsconfig.json deleted file mode 100644 index d4efe57114..0000000000 --- a/examples/freestyle/tsconfig.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "compilerOptions": { - /* Visit https://aka.ms/tsconfig.json to read more about this file */ - - /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ - "target": "esnext", - /* Specify a set of bundled library declaration files that describe the target runtime environment. */ - "lib": ["esnext", "dom"], - /* Specify what JSX code is generated. */ - "jsx": "react-jsx", - - /* Specify what module code is generated. */ - "module": "esnext", - /* Specify how TypeScript looks up a file from a given module specifier. */ - "moduleResolution": "bundler", - /* Specify type package names to be included without being referenced in a source file. */ - "types": ["node", "vite/client"], - /* Enable importing .json files */ - "resolveJsonModule": true, - - /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */ - "allowJs": true, - /* Enable error reporting in type-checked JavaScript files. */ - "checkJs": false, - - /* Disable emitting files from a compilation. */ - "noEmit": true, - - /* Ensure that each file can be safely transpiled without relying on other imports. */ - "isolatedModules": true, - /* Allow 'import x from y' when a module doesn't have a default export. */ - "allowSyntheticDefaultImports": true, - /* Ensure that casing is correct in imports. */ - "forceConsistentCasingInFileNames": true, - - /* Enable all strict type-checking options. */ - "strict": true, - - /* Skip type checking all .d.ts files. */ - "skipLibCheck": true - }, - "include": ["src/**/*", "actors/**/*", "tests/**/*"] -} diff --git a/examples/freestyle/tsup.config.js b/examples/freestyle/tsup.config.js deleted file mode 100644 index 1b218cf463..0000000000 --- a/examples/freestyle/tsup.config.js +++ /dev/null @@ -1,16 +0,0 @@ -import { defineConfig } from "tsup"; - -export default defineConfig({ - entry: ["src/backend/server.ts"], - outDir: "dist", - // Vite build is in dist/public/* so we don't want to clean it - clean: false, - bundle: true, - platform: "node", - target: "deno2.5", - external: [], - // Include rivetkit in the bundle since it's local - // Note: this makes bundle much larger and can be - // removed if using a version of rivetkit from npm - noExternal: ["rivetkit", "hono"], -}); diff --git a/examples/freestyle/turbo.json b/examples/freestyle/turbo.json deleted file mode 100644 index 29d4cb2625..0000000000 --- a/examples/freestyle/turbo.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "$schema": "https://turbo.build/schema.json", - "extends": ["//"] -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b1a43c6f47..099dc54305 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -292,6 +292,67 @@ importers: specifier: ^3.1.1 version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.1)(@vitest/ui@3.1.1)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0) + examples/ai-and-user-generated-actors-freestyle: + dependencies: + '@hono/node-server': + specifier: ^1.13.8 + version: 1.19.1(hono@4.9.8) + '@monaco-editor/react': + specifier: ^4.7.0 + version: 4.7.0(monaco-editor@0.55.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rivet-gg/cloud': + specifier: https://pkg.pr.new/rivet-dev/cloud/@rivet-gg/cloud@715f221 + version: https://pkg.pr.new/rivet-dev/cloud/@rivet-gg/cloud@715f221 + '@rivetkit/engine-api-full': + specifier: ^25.7.2 + version: 25.8.1 + dotenv: + specifier: ^17.2.2 + version: 17.2.3 + execa: + specifier: ^9.5.2 + version: 9.6.1 + freestyle-sandboxes: + specifier: ^0.0.95 + version: 0.0.95(expo-constants@18.0.10)(expo-linking@7.0.5)(expo@54.0.18)(react-dom@18.3.1(react@18.3.1))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(ws@8.18.3) + hono: + specifier: ^4.6.0 + version: 4.9.8 + react: + specifier: ^18.2.0 + version: 18.3.1 + react-dom: + specifier: ^18.2.0 + version: 18.3.1(react@18.3.1) + devDependencies: + '@types/node': + specifier: ^22.13.9 + version: 22.19.1 + '@types/react': + specifier: ^19 + version: 19.2.2 + '@types/react-dom': + specifier: ^19 + version: 19.2.2(@types/react@19.2.2) + '@vitejs/plugin-react': + specifier: ^4.2.0 + version: 4.7.0(vite@5.4.20(@types/node@22.19.1)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0)) + concurrently: + specifier: ^8.2.2 + version: 8.2.2 + tsx: + specifier: ^3.12.7 + version: 3.14.0 + typescript: + specifier: ^5.5.2 + version: 5.9.3 + vite: + specifier: ^5.0.0 + version: 5.4.20(@types/node@22.19.1)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0) + vitest: + specifier: ^2.1.8 + version: 2.1.9(@types/node@22.19.1)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0) + examples/chat-room: dependencies: rivetkit: @@ -684,70 +745,6 @@ importers: specifier: ^5.5.2 version: 5.9.2 - examples/freestyle: - dependencies: - hono: - specifier: 4.9.8 - version: 4.9.8 - rivetkit: - specifier: workspace:* - version: link:../../rivetkit-typescript/packages/rivetkit - devDependencies: - '@rivetkit/engine-api-full': - specifier: ^25.7.2 - version: 25.8.1 - '@rivetkit/react': - specifier: workspace:* - version: link:../../rivetkit-typescript/packages/react - '@types/node': - specifier: ^22.13.9 - version: 22.18.1 - '@types/prompts': - specifier: ^2 - version: 2.4.9 - '@types/react': - specifier: ^19 - version: 19.2.2 - '@types/react-dom': - specifier: ^19 - version: 19.2.2(@types/react@19.2.2) - '@vitejs/plugin-react': - specifier: ^4.2.0 - version: 4.7.0(vite@5.4.20(@types/node@22.18.1)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0)) - concurrently: - specifier: ^8.2.2 - version: 8.2.2 - dotenv: - specifier: ^17.2.2 - version: 17.2.3 - freestyle-sandboxes: - specifier: ^0.0.95 - version: 0.0.95(expo-constants@18.0.10)(expo-linking@7.0.5)(expo@54.0.18)(react-dom@18.3.1(react@18.3.1))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(ws@8.18.3) - prompts: - specifier: ^2.4.2 - version: 2.4.2 - react: - specifier: ^18.2.0 - version: 18.3.1 - react-dom: - specifier: ^18.2.0 - version: 18.3.1(react@18.3.1) - tsup: - specifier: ^8.5.0 - version: 8.5.0(@microsoft/api-extractor@7.53.2(@types/node@22.18.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(typescript@5.9.2)(yaml@2.8.1) - tsx: - specifier: ^3.12.7 - version: 3.14.0 - typescript: - specifier: ^5.5.2 - version: 5.9.2 - vite: - specifier: ^5.0.0 - version: 5.4.20(@types/node@22.18.1)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0) - vitest: - specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.1)(@vitest/ui@3.1.1)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0) - examples/hono: dependencies: '@hono/node-server': @@ -5408,6 +5405,16 @@ packages: '@microsoft/tsdoc@0.15.1': resolution: {integrity: sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw==} + '@monaco-editor/loader@1.7.0': + resolution: {integrity: sha512-gIwR1HrJrrx+vfyOhYmCZ0/JcWqG5kbfG7+d3f/C1LXk2EvzAbHSg3MQ5lO2sMlo9izoAZ04shohfKLVT6crVA==} + + '@monaco-editor/react@4.7.0': + resolution: {integrity: sha512-cyzXQCtO47ydzxpQtCGSQGOC8Gk3ZUeBXFAxD+CWXYFo5OqZyZUonFl0DwUlTyAfRHntBfw2p3w4s9R6oe1eCA==} + peerDependencies: + monaco-editor: '>= 0.25.0 < 1' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + '@napi-rs/wasm-runtime@0.2.12': resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} @@ -6421,6 +6428,10 @@ packages: resolution: {tarball: https://pkg.pr.new/rivet-dev/cloud/@rivet-gg/cloud@11dea2c} version: 0.0.0 + '@rivet-gg/cloud@https://pkg.pr.new/rivet-dev/cloud/@rivet-gg/cloud@715f221': + 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@bf2ebb2': resolution: {tarball: https://pkg.pr.new/rivet-dev/cloud/@rivet-gg/cloud@bf2ebb2} version: 0.0.0 @@ -6726,6 +6737,9 @@ packages: '@scure/bip39@1.6.0': resolution: {integrity: sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==} + '@sec-ant/readable-stream@0.4.1': + resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} + '@sentry-internal/browser-utils@8.55.0': resolution: {integrity: sha512-ROgqtQfpH/82AQIpESPqPQe0UyWywKJsmVIqi3c5Fh+zkds5LUxnssTj3yNd1x+kxaPDVB023jAP+3ibNgeNDw==} engines: {node: '>=14.18'} @@ -6866,6 +6880,10 @@ packages: resolution: {integrity: sha512-7F/yz2IphV39hiS2zB4QYVkivrptHHh0K8qJJd9HhuWSdvf8AN7NpebW3CcDZDBQsUPMoDKWsY2WWgW7bqOcfA==} engines: {node: '>=18'} + '@sindresorhus/merge-streams@4.0.0': + resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} + engines: {node: '>=18'} + '@sindresorhus/slugify@3.0.0': resolution: {integrity: sha512-SCrKh1zS96q+CuH5GumHcyQEVPsM4Ve8oE0E6tw7AAhGq50K8ojbTUOQnX/j9Mhcv/AXiIsbCfquovyGOo5fGw==} engines: {node: '>=20'} @@ -7549,9 +7567,23 @@ packages: '@vitest/expect@1.6.1': resolution: {integrity: sha512-jXL+9+ZNIJKruofqXuuTClf44eSpcHlgj3CiuNihUF3Ioujtmc0zIa3UJOW5RjDK1YLBJZnWBlPuqhYycLioog==} + '@vitest/expect@2.1.9': + resolution: {integrity: sha512-UJCIkTBenHeKT1TTlKMJWy1laZewsRIzYighyYiJKZreqtdxSos/S1t+ktRMQWu2CKqaarrkeszJx1cgC5tGZw==} + '@vitest/expect@3.2.4': resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} + '@vitest/mocker@2.1.9': + resolution: {integrity: sha512-tVL6uJgoUdi6icpxmdrn5YNo3g3Dxv+IHJBr0GXHaEdTcw3F+cPKnsXFhli6nO+f/6SDKPHEK1UN+k+TQv0Ehg==} + peerDependencies: + msw: ^2.4.9 + vite: ^5.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + '@vitest/mocker@3.2.4': resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==} peerDependencies: @@ -7563,6 +7595,9 @@ packages: vite: optional: true + '@vitest/pretty-format@2.1.9': + resolution: {integrity: sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==} + '@vitest/pretty-format@3.1.1': resolution: {integrity: sha512-dg0CIzNx+hMMYfNmSqJlLSXEmnNhMswcn3sXO7Tpldr0LiGmg3eXdLLhwkv2ZqgHb/d5xg5F7ezNFRA1fA13yA==} @@ -7572,18 +7607,27 @@ packages: '@vitest/runner@1.6.1': resolution: {integrity: sha512-3nSnYXkVkf3mXFfE7vVyPmi3Sazhb/2cfZGGs0JRzFsPFvAMBEcrweV1V1GsrstdXeKCTXlJbvnQwGWgEIHmOA==} + '@vitest/runner@2.1.9': + resolution: {integrity: sha512-ZXSSqTFIrzduD63btIfEyOmNcBmQvgOVsPNPe0jYtESiXkhd8u2erDLnMxmGrDCwHCCHE7hxwRDCT3pt0esT4g==} + '@vitest/runner@3.2.4': resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==} '@vitest/snapshot@1.6.1': resolution: {integrity: sha512-WvidQuWAzU2p95u8GAKlRMqMyN1yOJkGHnx3M1PL9Raf7AQ1kwLKg04ADlCa3+OXUZE7BceOhVZiuWAbzCKcUQ==} + '@vitest/snapshot@2.1.9': + resolution: {integrity: sha512-oBO82rEjsxLNJincVhLhaxxZdEtV0EFHMK5Kmx5sJ6H9L183dHECjiefOAdnqpIgT5eZwT04PoggUnW88vOBNQ==} + '@vitest/snapshot@3.2.4': resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==} '@vitest/spy@1.6.1': resolution: {integrity: sha512-MGcMmpGkZebsMZhbQKkAf9CX5zGvjkBTqf8Zx3ApYWXr3wG+QvEu2eXWfnIIWYSJExIp4V9FCKDEeygzkYrXMw==} + '@vitest/spy@2.1.9': + resolution: {integrity: sha512-E1B35FwzXXTs9FHNK6bDszs7mtydNi5MIfUWpceJ8Xbfb1gBMscAnwLbEu+B44ed6W3XjL9/ehLPHR1fkf1KLQ==} + '@vitest/spy@3.2.4': resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} @@ -7595,6 +7639,9 @@ packages: '@vitest/utils@1.6.1': resolution: {integrity: sha512-jOrrUvXM4Av9ZWiG1EajNto0u96kWAhJ1LmPmJhXXQx/32MecEKd10pOLYgS2BQx1TgkGhloPU1ArDW2vvaY6g==} + '@vitest/utils@2.1.9': + resolution: {integrity: sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==} + '@vitest/utils@3.1.1': resolution: {integrity: sha512-1XIjflyaU2k3HMArJ50bwSh3wKWPD6Q47wz/NUSmRV0zNywPc4w79ARjg/i/aNINHwA+mIALhUVqD9/aUvZNgg==} @@ -8838,6 +8885,9 @@ packages: dom-helpers@5.2.1: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + dompurify@3.2.7: + resolution: {integrity: sha512-WhL/YuveyGXJaerVlMYGWhvQswa7myDG17P7Vu65EWC05o8vfeNbvNf4d/BOvH99+ZW+LlQsc1GDKMa1vNK6dw==} + dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} @@ -9345,6 +9395,10 @@ packages: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} + execa@9.6.1: + resolution: {integrity: sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==} + engines: {node: ^18.19.0 || >=20.5.0} + exit-hook@2.2.1: resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==} engines: {node: '>=6'} @@ -9559,6 +9613,10 @@ packages: fflate@0.8.2: resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} + figures@6.1.0: + resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} + engines: {node: '>=18'} + file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -9785,6 +9843,10 @@ packages: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} + get-stream@9.0.1: + resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} + engines: {node: '>=18'} + get-symbol-description@1.1.0: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} @@ -10030,6 +10092,10 @@ packages: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} + human-signals@8.0.1: + resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} + engines: {node: '>=18.18.0'} + humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} @@ -10248,6 +10314,10 @@ packages: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + is-stream@4.0.1: + resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} + engines: {node: '>=18'} + is-string@1.1.1: resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} engines: {node: '>= 0.4'} @@ -10260,6 +10330,10 @@ packages: resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} + is-unicode-supported@2.1.0: + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} + engines: {node: '>=18'} + is-url@1.2.4: resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==} @@ -10809,6 +10883,11 @@ packages: markdown-table@3.0.4: resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + marked@14.0.0: + resolution: {integrity: sha512-uIj4+faQ+MgHgwUW1l2PsPglZLOLOT1uErt06dAPtx2kjteLAkbsd/0FiYg/MGS+i7ZKLb7w2WClxHkzOOuryQ==} + engines: {node: '>= 18'} + hasBin: true + marky@1.3.0: resolution: {integrity: sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==} @@ -11216,6 +11295,9 @@ packages: mlly@1.8.0: resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} + monaco-editor@0.55.1: + resolution: {integrity: sha512-jz4x+TJNFHwHtwuV9vA9rMujcZRb0CEilTEwG2rRSpe/A7Jdkuj8xPKttCgOh+v/lkHy7HsZ64oj+q3xoAFl9A==} + motion-dom@11.18.1: resolution: {integrity: sha512-g76KvA001z+atjfxczdRtw/RXOM3OMSdd1f4DL77qCTF/+avrRJiawSG4yDibEQ215sr9kpinSlX2pCTJ9zbhw==} @@ -11411,6 +11493,10 @@ packages: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + npm-run-path@6.0.0: + resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} + engines: {node: '>=18'} + nullthrows@1.1.1: resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} @@ -11617,6 +11703,10 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} + parse-ms@4.0.0: + resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} + engines: {node: '>=18'} + parse-node-version@1.0.1: resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} engines: {node: '>= 0.10'} @@ -11976,6 +12066,10 @@ packages: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + pretty-ms@9.3.0: + resolution: {integrity: sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==} + engines: {node: '>=18'} + proc-log@4.2.0: resolution: {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -12816,6 +12910,9 @@ packages: resolution: {integrity: sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==} engines: {node: '>=6'} + state-local@1.0.7: + resolution: {integrity: sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==} + statuses@1.5.0: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} @@ -12915,6 +13012,10 @@ packages: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} + strip-final-newline@4.0.0: + resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} + engines: {node: '>=18'} + strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} @@ -13131,6 +13232,10 @@ packages: resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} engines: {node: ^18.0.0 || >=20.0.0} + tinyrainbow@1.2.0: + resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} + engines: {node: '>=14.0.0'} + tinyrainbow@2.0.0: resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} engines: {node: '>=14.0.0'} @@ -13139,6 +13244,10 @@ packages: resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} engines: {node: '>=14.0.0'} + tinyspy@3.0.2: + resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} + engines: {node: '>=14.0.0'} + tinyspy@4.0.4: resolution: {integrity: sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==} engines: {node: '>=14.0.0'} @@ -13434,6 +13543,10 @@ packages: resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==} engines: {node: '>=4'} + unicorn-magic@0.3.0: + resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} + engines: {node: '>=18'} + unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} @@ -13633,6 +13746,11 @@ packages: engines: {node: ^18.0.0 || >=20.0.0} hasBin: true + vite-node@2.1.9: + resolution: {integrity: sha512-AM9aQ/IPrW/6ENLQg3AGY4K1N2TGZdR5e4gu/MmmR2xR3Ll1+dib+nook92g4TV3PXVyeyxdWwtaCAiUL0hMxA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + vite-node@3.2.4: resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -13809,6 +13927,31 @@ packages: jsdom: optional: true + vitest@2.1.9: + resolution: {integrity: sha512-MSmPM9REYqDGBI8439mA4mWhV5sKmDlBKWIYbA3lRb2PTHACE0mgKwA8yQ2xq9vxDTuk4iPrECBAEW2aoFXY0Q==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 2.1.9 + '@vitest/ui': 2.1.9 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + vitest@3.2.4: resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -14124,6 +14267,10 @@ packages: resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} engines: {node: '>=12.20'} + yoctocolors@2.1.2: + resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} + engines: {node: '>=18'} + youch-core@0.3.3: resolution: {integrity: sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==} @@ -17147,6 +17294,17 @@ snapshots: '@microsoft/tsdoc@0.15.1': {} + '@monaco-editor/loader@1.7.0': + dependencies: + state-local: 1.0.7 + + '@monaco-editor/react@4.7.0(monaco-editor@0.55.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@monaco-editor/loader': 1.7.0 + monaco-editor: 0.55.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + '@napi-rs/wasm-runtime@0.2.12': dependencies: '@emnapi/core': 1.7.1 @@ -18276,6 +18434,19 @@ snapshots: transitivePeerDependencies: - encoding + '@rivet-gg/cloud@https://pkg.pr.new/rivet-dev/cloud/@rivet-gg/cloud@715f221': + 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': dependencies: cross-fetch: 4.1.0 @@ -18291,7 +18462,7 @@ snapshots: '@rivetkit/engine-api-full@25.8.1': dependencies: - form-data: 4.0.4 + form-data: 4.0.5 js-base64: 3.7.8 node-fetch: 2.7.0 qs: 6.14.0 @@ -18643,6 +18814,8 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/base': 1.2.6 + '@sec-ant/readable-stream@0.4.1': {} + '@sentry-internal/browser-utils@8.55.0': dependencies: '@sentry/core': 8.55.0 @@ -18820,6 +18993,8 @@ snapshots: '@sindresorhus/is@7.1.0': {} + '@sindresorhus/merge-streams@4.0.0': {} + '@sindresorhus/slugify@3.0.0': dependencies: '@sindresorhus/transliterate': 2.2.0 @@ -19302,7 +19477,7 @@ snapshots: '@types/prompts@2.4.9': dependencies: - '@types/node': 22.18.1 + '@types/node': 22.19.1 kleur: 3.0.3 '@types/qs@6.9.8': {} @@ -19681,6 +19856,13 @@ snapshots: '@vitest/utils': 1.6.1 chai: 4.5.0 + '@vitest/expect@2.1.9': + dependencies: + '@vitest/spy': 2.1.9 + '@vitest/utils': 2.1.9 + chai: 5.3.3 + tinyrainbow: 1.2.0 + '@vitest/expect@3.2.4': dependencies: '@types/chai': 5.2.3 @@ -19689,6 +19871,14 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 + '@vitest/mocker@2.1.9(vite@5.4.20(@types/node@22.19.1)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0))': + dependencies: + '@vitest/spy': 2.1.9 + estree-walker: 3.0.3 + magic-string: 0.30.19 + optionalDependencies: + vite: 5.4.20(@types/node@22.19.1)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0) + '@vitest/mocker@3.2.4(vite@5.4.20(@types/node@20.19.13)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0))': dependencies: '@vitest/spy': 3.2.4 @@ -19729,6 +19919,10 @@ snapshots: optionalDependencies: vite: 5.4.20(@types/node@24.7.1)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0) + '@vitest/pretty-format@2.1.9': + dependencies: + tinyrainbow: 1.2.0 + '@vitest/pretty-format@3.1.1': dependencies: tinyrainbow: 2.0.0 @@ -19743,6 +19937,11 @@ snapshots: p-limit: 5.0.0 pathe: 1.1.2 + '@vitest/runner@2.1.9': + dependencies: + '@vitest/utils': 2.1.9 + pathe: 1.1.2 + '@vitest/runner@3.2.4': dependencies: '@vitest/utils': 3.2.4 @@ -19755,6 +19954,12 @@ snapshots: pathe: 1.1.2 pretty-format: 29.7.0 + '@vitest/snapshot@2.1.9': + dependencies: + '@vitest/pretty-format': 2.1.9 + magic-string: 0.30.19 + pathe: 1.1.2 + '@vitest/snapshot@3.2.4': dependencies: '@vitest/pretty-format': 3.2.4 @@ -19765,6 +19970,10 @@ snapshots: dependencies: tinyspy: 2.2.1 + '@vitest/spy@2.1.9': + dependencies: + tinyspy: 3.0.2 + '@vitest/spy@3.2.4': dependencies: tinyspy: 4.0.4 @@ -19787,6 +19996,12 @@ snapshots: loupe: 2.3.7 pretty-format: 29.7.0 + '@vitest/utils@2.1.9': + dependencies: + '@vitest/pretty-format': 2.1.9 + loupe: 3.2.1 + tinyrainbow: 1.2.0 + '@vitest/utils@3.1.1': dependencies: '@vitest/pretty-format': 3.1.1 @@ -21142,6 +21357,10 @@ snapshots: '@babel/runtime': 7.28.4 csstype: 3.1.3 + dompurify@3.2.7: + optionalDependencies: + '@types/trusted-types': 2.0.7 + dot-case@3.0.4: dependencies: no-case: 3.0.4 @@ -21859,6 +22078,21 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 + execa@9.6.1: + dependencies: + '@sindresorhus/merge-streams': 4.0.0 + cross-spawn: 7.0.6 + figures: 6.1.0 + get-stream: 9.0.1 + human-signals: 8.0.1 + is-plain-obj: 4.1.0 + is-stream: 4.0.1 + npm-run-path: 6.0.0 + pretty-ms: 9.3.0 + signal-exit: 4.1.0 + strip-final-newline: 4.0.0 + yoctocolors: 2.1.2 + exit-hook@2.2.1: {} expand-template@2.0.3: {} @@ -22143,6 +22377,10 @@ snapshots: fflate@0.8.2: {} + figures@6.1.0: + dependencies: + is-unicode-supported: 2.1.0 + file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -22414,6 +22652,11 @@ snapshots: get-stream@8.0.1: {} + get-stream@9.0.1: + dependencies: + '@sec-ant/readable-stream': 0.4.1 + is-stream: 4.0.1 + get-symbol-description@1.1.0: dependencies: call-bound: 1.0.4 @@ -22767,6 +23010,8 @@ snapshots: human-signals@5.0.0: {} + human-signals@8.0.1: {} + humanize-ms@1.2.1: dependencies: ms: 2.1.3 @@ -22958,6 +23203,8 @@ snapshots: is-stream@3.0.0: {} + is-stream@4.0.1: {} + is-string@1.1.1: dependencies: call-bound: 1.0.4 @@ -22973,6 +23220,8 @@ snapshots: dependencies: which-typed-array: 1.1.19 + is-unicode-supported@2.1.0: {} + is-url@1.2.4: {} is-weakmap@2.0.2: {} @@ -23505,6 +23754,8 @@ snapshots: markdown-table@3.0.4: {} + marked@14.0.0: {} + marky@1.3.0: {} math-intrinsics@1.1.0: {} @@ -24400,6 +24651,11 @@ snapshots: pkg-types: 1.3.1 ufo: 1.6.1 + monaco-editor@0.55.1: + dependencies: + dompurify: 3.2.7 + marked: 14.0.0 + motion-dom@11.18.1: dependencies: motion-utils: 11.18.1 @@ -24596,6 +24852,11 @@ snapshots: dependencies: path-key: 4.0.0 + npm-run-path@6.0.0: + dependencies: + path-key: 4.0.0 + unicorn-magic: 0.3.0 + nullthrows@1.1.1: {} ob1@0.83.2: @@ -24849,6 +25110,8 @@ snapshots: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 + parse-ms@4.0.0: {} + parse-node-version@1.0.1: {} parse-png@2.1.0: @@ -25016,15 +25279,6 @@ snapshots: optionalDependencies: postcss: 8.5.6 - postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(yaml@2.8.1): - dependencies: - lilconfig: 3.1.3 - optionalDependencies: - jiti: 1.21.7 - postcss: 8.5.6 - tsx: 3.14.0 - yaml: 2.8.1 - postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.5)(yaml@2.8.1): dependencies: lilconfig: 3.1.3 @@ -25161,6 +25415,10 @@ snapshots: ansi-styles: 5.2.0 react-is: 18.3.1 + pretty-ms@9.3.0: + dependencies: + parse-ms: 4.0.0 + proc-log@4.2.0: {} process-nextick-args@2.0.1: {} @@ -26347,6 +26605,8 @@ snapshots: dependencies: type-fest: 0.7.1 + state-local@1.0.7: {} + statuses@1.5.0: {} statuses@2.0.1: {} @@ -26465,6 +26725,8 @@ snapshots: strip-final-newline@3.0.0: {} + strip-final-newline@4.0.0: {} + strip-json-comments@2.0.1: {} strip-json-comments@3.1.1: {} @@ -26754,10 +27016,14 @@ snapshots: tinypool@1.1.1: {} + tinyrainbow@1.2.0: {} + tinyrainbow@2.0.0: {} tinyspy@2.2.1: {} + tinyspy@3.0.2: {} + tinyspy@4.0.4: {} tm-themes@1.10.12: {} @@ -26850,35 +27116,6 @@ snapshots: - tsx - yaml - tsup@8.5.0(@microsoft/api-extractor@7.53.2(@types/node@22.18.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(typescript@5.9.2)(yaml@2.8.1): - dependencies: - bundle-require: 5.1.0(esbuild@0.25.9) - cac: 6.7.14 - chokidar: 4.0.3 - consola: 3.4.2 - debug: 4.4.1 - esbuild: 0.25.9 - fix-dts-default-cjs-exports: 1.0.1 - joycon: 3.1.1 - picocolors: 1.1.1 - postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(yaml@2.8.1) - resolve-from: 5.0.0 - rollup: 4.50.1 - source-map: 0.8.0-beta.0 - sucrase: 3.35.0 - tinyexec: 0.3.2 - tinyglobby: 0.2.15 - tree-kill: 1.2.2 - optionalDependencies: - '@microsoft/api-extractor': 7.53.2(@types/node@22.18.1) - postcss: 8.5.6 - typescript: 5.9.2 - transitivePeerDependencies: - - jiti - - supports-color - - tsx - - yaml - tsup@8.5.0(@microsoft/api-extractor@7.53.2(@types/node@22.18.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1): dependencies: bundle-require: 5.1.0(esbuild@0.25.9) @@ -27209,6 +27446,8 @@ snapshots: unicode-property-aliases-ecmascript@2.2.0: {} + unicorn-magic@0.3.0: {} + unified@11.0.5: dependencies: '@types/unist': 3.0.3 @@ -27502,6 +27741,24 @@ snapshots: - supports-color - terser + vite-node@2.1.9(@types/node@22.19.1)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0): + dependencies: + cac: 6.7.14 + debug: 4.4.3 + es-module-lexer: 1.7.0 + pathe: 1.1.2 + vite: 5.4.20(@types/node@22.19.1)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + vite-node@3.2.4(@types/node@20.19.13)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0): dependencies: cac: 6.7.14 @@ -27860,6 +28117,41 @@ snapshots: - supports-color - terser + vitest@2.1.9(@types/node@22.19.1)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0): + dependencies: + '@vitest/expect': 2.1.9 + '@vitest/mocker': 2.1.9(vite@5.4.20(@types/node@22.19.1)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0)) + '@vitest/pretty-format': 2.1.9 + '@vitest/runner': 2.1.9 + '@vitest/snapshot': 2.1.9 + '@vitest/spy': 2.1.9 + '@vitest/utils': 2.1.9 + chai: 5.3.3 + debug: 4.4.3 + expect-type: 1.2.2 + magic-string: 0.30.19 + pathe: 1.1.2 + std-env: 3.9.0 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinypool: 1.1.1 + tinyrainbow: 1.2.0 + vite: 5.4.20(@types/node@22.19.1)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0) + vite-node: 2.1.9(@types/node@22.19.1)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 22.19.1 + transitivePeerDependencies: + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + vitest@3.2.4(@types/debug@4.1.12)(@types/node@20.19.13)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0): dependencies: '@types/chai': 5.2.3 @@ -28370,6 +28662,8 @@ snapshots: yocto-queue@1.2.1: {} + yoctocolors@2.1.2: {} + youch-core@0.3.3: dependencies: '@poppinss/exception': 1.2.2 diff --git a/website/public/llms-full.txt b/website/public/llms-full.txt index af3dfd6eda..6744fdbd6a 100644 --- a/website/public/llms-full.txt +++ b/website/public/llms-full.txt @@ -182,6 +182,262 @@ See [helper types](/docs/actors/helper-types) for more details on using `ActionC - [`ActorDefinition`](/typedoc/interfaces/rivetkit.mod.ActorDefinition.html) - Interface for defining actors with actions - [`ActorHandle`](/typedoc/types/rivetkit.client_mod.ActorHandle.html) - Handle for calling actions from client - [`ActorActionFunction`](/typedoc/types/rivetkit.client_mod.ActorActionFunction.html) - Type for action functions +## AI and User-Generated Rivet Actors + +# AI and User-Generated Rivet Actors + +Deploy AI or user-generated Rivet Actor code with sandboxed namespaces and serverless infrastructure. + +Complete example showing how to deploy user-generated Rivet Actor code. + +## Overview + +This guide shows you how to programmatically create isolated Rivet environments and deploy custom actor code to them. This pattern is useful for: + +- **AI-generated code deployments** - Deploy code generated by LLMs in isolated environments +- **User sandbox environments** - Give users their own isolated Rivet namespace to experiment +- **Preview deployments** - Create ephemeral environments for testing pull requests +- **Multi-tenant applications** - Isolate each customer in their own namespace + +## How It Works + +The deployment process involves four key steps: + +1. **Create sandboxed Rivet namespace** - Programmatically create an isolated Rivet namespace using the Cloud API or self-hosted Rivet API +2. **Generate tokens** - Create the necessary tokens for authentication (runner, publishable, and access tokens) +3. **Deploy to Freestyle** - Deploy the actor code and frontend to Freestyle's serverless platform +4. **Configure runner** - Connect Rivet to the Freestyle deployment so actors can be executed + +## Sandboxed Rivet Namespaces + +Rivet provides the ability to create sandboxed namespaces programmatically. Each namespace is completely isolated with its own: + +- Actor instances and state +- Authentication tokens +- Configuration settings +- Resource limits + +Namespaces can be created on-demand through the Rivet API, making them perfect for scenarios where you need to quickly spin up isolated environments. + +## Deploying Code to Freestyle + +[Freestyle](https://docs.freestyle.sh/web/overview) is a serverless platform optimized for deploying JavaScript/TypeScript code, particularly code written by users or AI systems. It provides: + +- Fast cold starts (around 5ms) +- Automatic TLS certificates +- Built-in security for untrusted code +- Easy deployment API + +We use Freestyle to host the backend logic for your Rivet Actors, making it easy to deploy custom code without managing infrastructure. + +## Setup + + 1. Visit your project on [Rivet Cloud](https://dashboard.rivet.dev/) + 2. Click on "Tokens" in the sidebar + 3. Under "Cloud API Tokens" click "Create Token" + 4. Copy the token for use in your deployment script + + Create a deployment script that handles namespace creation, token generation, Freestyle deployment, and runner configuration. + + This code demonstrates the complete flow for deploying user-generated Rivet Actor code to Freestyle with Rivet Cloud: + + ```typescript + // Configuration + const CLOUD_API_URL = "https://api.rivet.dev/cloud"; + const CLOUD_API_TOKEN = "your-cloud-api-token"; + const ENGINE_ENDPOINT = "https://api.rivet.dev"; + const FREESTYLE_DOMAIN = "your-app.style.dev"; + const FREESTYLE_API_KEY = "your-freestyle-api-key"; + const DATACENTER = "us-west-1"; + + async function deploy(registryCode: string, appCode: string) ); + + const = await cloudRivet.apiTokens.inspect(); + const namespaceName = `ns-$-$`; + + const = await cloudRivet.namespaces.create(project, ); + + // Step 2: Generate tokens + const = await cloudRivet.namespaces.createSecretToken( + project, + namespace.name, + -runner-token`, + org: organization, + }, + ); + + const = await cloudRivet.namespaces.createPublishableToken( + project, + namespace.name, + , + ); + + const = await cloudRivet.namespaces.createAccessToken( + project, + namespace.name, + , + ); + + // Step 3: Deploy to Freestyle + // Build your project directory with the custom registry and app code + // See the example repository for the complete template structure + const freestyle = new FreestyleSandboxes(); + const deploymentSource = prepareDirForDeploymentSync(projectDir); + + const = await freestyle.deployWeb(deploymentSource, `, + RIVET_RUNNER_KIND: "serverless", + VITE_RIVET_ENDPOINT: ENGINE_ENDPOINT, + VITE_RIVET_NAMESPACE: namespace.access.engineNamespaceName, + VITE_RIVET_TOKEN: publishableToken, + VITE_RIVET_DATACENTER: DATACENTER, + RIVET_ENDPOINT: ENGINE_ENDPOINT, + RIVET_NAMESPACE: namespace.access.engineNamespaceName, + RIVET_RUNNER_TOKEN: runnerToken, + RIVET_PUBLISHABLE_TOKEN: publishableToken, + }, + timeout: 60 * 5, + entrypoint: "src/backend/server.ts", + domains: [FREESTYLE_DOMAIN], + build: false, + }); + + // Step 4: Configure Rivet runner + const engineRivet = new RivetClient(); + + await engineRivet.runnerConfigsUpsert("default", /api/rivet`, + headers: , + runnersMargin: 1, + minRunners: 1, + maxRunners: 1, + slotsPerRunner: 1, + requestLifespan: 60 * 4 + 30, + }, + }, + }, + namespace: namespace.access.engineNamespaceName, + }); + + return /projects/$/ns/$`, + freestyleUrl: `https://admin.freestyle.sh/dashboard/deployments/$`, + }; + } + ``` + + **Step 1: Create sandboxed namespace** - Uses the Cloud API to create a new isolated namespace with a unique name. + + **Step 2: Generate tokens** - Creates three types of tokens: runner token (for executing actors), publishable token (for frontend clients), and access token (for API access). + + **Step 3: Deploy to Freestyle** - Deploys the actor code and frontend to Freestyle with all necessary environment variables configured. The deployment uses a 5-minute timeout to handle long-running operations. + + **Step 4: Configure runner** - Configures Rivet to route actor execution requests to the Freestyle deployment. The runner config specifies scaling limits and request lifespans. + + See the [example repository](https://github.com/rivet-dev/rivet/tree/main/examples/ai-and-user-generated-actors-freestyle) for the complete project structure including the template directory and build process. + + For self-hosted Rivet, you'll need: + - Your Rivet Engine endpoint (e.g., `http://your-rivet-instance:6420`) + - An API token with permissions to create namespaces + + See the [self-hosting documentation](/docs/self-hosting) for details on setting up authentication. + + Create a deployment script for self-hosted Rivet. + + This code demonstrates the complete flow for deploying user-generated Rivet Actor code to Freestyle with self-hosted Rivet: + + ```typescript + // Configuration + const RIVET_ENDPOINT = "http://your-rivet-instance:6420"; + const RIVET_TOKEN = "your-rivet-token"; + const FREESTYLE_DOMAIN = "your-app.style.dev"; + const FREESTYLE_API_KEY = "your-freestyle-api-key"; + const DATACENTER = "us-west-1"; + + async function deploy(registryCode: string, appCode: string) ); + + const namespaceName = `ns-$-$`; + + const = await rivet.namespaces.create(); + + // Step 2: Generate tokens (use the same token for self-hosted) + // For self-hosted, you typically use the same token for all operations + const token = RIVET_TOKEN; + + // Step 3: Deploy to Freestyle + // Build your project directory with the custom registry and app code + // See the example repository for the complete template structure + const freestyle = new FreestyleSandboxes(); + const deploymentSource = prepareDirForDeploymentSync(projectDir); + + const = await freestyle.deployWeb(deploymentSource, `, + RIVET_RUNNER_KIND: "serverless", + VITE_RIVET_ENDPOINT: RIVET_ENDPOINT, + VITE_RIVET_NAMESPACE: namespace.name, + VITE_RIVET_TOKEN: token, + VITE_RIVET_DATACENTER: DATACENTER, + RIVET_ENDPOINT: RIVET_ENDPOINT, + RIVET_NAMESPACE: namespace.name, + RIVET_RUNNER_TOKEN: token, + RIVET_PUBLISHABLE_TOKEN: token, + }, + timeout: 60 * 5, + entrypoint: "src/backend/server.ts", + domains: [FREESTYLE_DOMAIN], + build: false, + }); + + // Step 4: Configure Rivet runner + await rivet.runnerConfigsUpsert("default", /api/rivet`, + headers: , + runnersMargin: 1, + minRunners: 1, + maxRunners: 1, + slotsPerRunner: 1, + requestLifespan: 60 * 4 + 30, + }, + }, + }, + namespace: namespace.name, + }); + + return `, + }; + } + ``` + + **Step 1: Create sandboxed namespace** - Creates a new isolated namespace using the self-hosted Rivet API. + + **Step 2: Generate tokens** - For self-hosted Rivet, you typically use the same token for all operations. The token system is simpler than Rivet Cloud. + + **Step 3: Deploy to Freestyle** - Deploys the actor code and frontend to Freestyle with environment variables pointing to your self-hosted Rivet instance. + + **Step 4: Configure runner** - Configures your self-hosted Rivet to route actor execution requests to the Freestyle deployment. + + See the [example repository](https://github.com/rivet-dev/rivet/tree/main/examples/ai-and-user-generated-actors-freestyle) for the complete project structure including the template directory and build process. + +## Project Structure + +The example uses this structure: + +``` +src/ + backend/ # Backend used to deploy sandboxed Rivet code + frontend/ # Frontend for the deploy UI +template/ # Template Rivet project to deploy + src/ + backend/ # Actor code (registry.ts gets replaced with user code) + frontend/ # Frontend code (App.tsx gets replaced with user code) +``` + +The deployment script: +1. Copies the template directory +2. Replaces `registry.ts` and `App.tsx` with user-provided code +3. Builds and deploys to Freestyle +4. Configures Rivet to connect to the deployment + +## Next Steps + +- Explore the [complete example](https://github.com/rivet-dev/rivet/tree/main/examples/ai-and-user-generated-actors-freestyle) +- Learn more about [Freestyle deployment](https://docs.freestyle.sh/web/overview) +- Read about [Rivet namespaces and tokens](/docs/actors/authentication) ## Authentication # Authentication diff --git a/website/public/llms.txt b/website/public/llms.txt index 226f7ec025..174fb1da1b 100644 --- a/website/public/llms.txt +++ b/website/public/llms.txt @@ -66,6 +66,7 @@ https://rivet.dev/changelog/godot-multiplayer-compared-to-unity https://rivet.dev/cloud https://rivet.dev/docs/actors https://rivet.dev/docs/actors/actions +https://rivet.dev/docs/actors/ai-and-user-generated-actors https://rivet.dev/docs/actors/authentication https://rivet.dev/docs/actors/clients https://rivet.dev/docs/actors/communicating-between-actors diff --git a/website/src/content/docs/actors/ai-and-user-generated-actors.mdx b/website/src/content/docs/actors/ai-and-user-generated-actors.mdx new file mode 100644 index 0000000000..1b042e5f5a --- /dev/null +++ b/website/src/content/docs/actors/ai-and-user-generated-actors.mdx @@ -0,0 +1,287 @@ +import { faGithub } from "@rivet-gg/icons"; + +# AI and User-Generated Rivet Actors + +This guide shows you how to programmatically create sandboxed Rivet environments and deploy custom actor code to them. + + + +Complete example showing how to deploy user-generated Rivet Actor code. + + + +## Use Cases + +Deploying AI and user-generated Rivet Actors to sandboxed namespaces is useful for: + +- **AI-generated code deployments**: Deploy code generated by LLMs in sandboxed environments +- **User sandbox environments**: Give users their own sandboxed Rivet namespace to experiment +- **Preview deployments**: Create ephemeral environments for testing pull requests +- **Multi-tenant applications**: Isolate each customer in their own sandboxed namespace + +## How It Works + +The deployment process involves four key steps: + +1. **Create sandboxed Rivet namespace**: Programmatically create a sandboxed Rivet namespace using the Cloud API or self-hosted Rivet API +2. **Generate tokens**: Create the necessary tokens for authentication: + - **Runner token**: Authenticates the serverless runner to execute actors + - **Publishable token**: Used by frontend clients to connect to actors + - **Access token**: Provides API access for configuring the namespace +3. **Deploy AI or user-generated code**: Deploy the actor code and frontend programmatically to your serverless platform of choice (such as Vercel, Netlify, AWS Lambda, or any other provider). We'll be using [Freestyle](https://freestyle.sh) for this example since it's built for this use case. +4. **Connect Rivet to your deployed code**: Configure Rivet to run actors on your deployment in your sandboxed namespace + +## Setup + + + + + + Before you begin, ensure you have: + - Node.js 18+ installed + - A [Freestyle](https://freestyle.sh) account and API key + - A [Rivet Cloud](https://dashboard.rivet.dev/) account + + + + 1. Visit your project on [Rivet Cloud](https://dashboard.rivet.dev/) + 2. Click on "Tokens" in the sidebar + 3. Under "Cloud API Tokens" click "Create Token" + 4. Copy the token for use in your deployment script + + + + Install the required dependencies: + + ```bash + npm install @rivetkit/engine-api-full@^25.7.2 freestyle-sandboxes@^0.0.95 + ``` + + + + Write deployment code that handles namespace creation, token generation, Freestyle deployment, and runner configuration. This can be called from your backend to deploy actor and frontend code to an isolated Rivet namespace. + + ```typescript + import { execSync } from "child_process"; + import { RivetClient } from "@rivetkit/engine-api-full"; + import { FreestyleSandboxes } from "freestyle-sandboxes"; + import { prepareDirForDeploymentSync } from "freestyle-sandboxes/utils"; + + const CLOUD_API_TOKEN = "your-cloud-api-token"; + const FREESTYLE_DOMAIN = "your-app.style.dev"; + const FREESTYLE_API_KEY = "your-freestyle-api-key"; + + async function deploy(projectDir: string) { + // Step 1: Inspect API token to get project and organization + const { project, organization } = await cloudRequest("GET", "/tokens/api/inspect"); + + // Step 2: Create sandboxed namespace with a unique name + const namespaceName = `ns-${Date.now()}-${Math.random().toString(36).substring(2, 8)}`; + + const { namespace } = await cloudRequest( + "POST", + `/projects/${project}/namespaces?org=${organization}`, + { displayName: namespaceName.substring(0, 16) }, + ); + const engineNamespaceName = namespace.access.engineNamespaceName; // NOTE: Intentionally different than namespace.name + + // Step 3: Generate tokens + // - Runner token: authenticates the serverless runner to execute actors + // - Publishable token: used by frontend clients to connect to actors + // - Access token: provides API access for configuring the namespace + const { token: runnerToken } = await cloudRequest( + "POST", + `/projects/${project}/namespaces/${namespace.name}/tokens/secret?org=${organization}`, + ); + + const { token: publishableToken } = await cloudRequest( + "POST", + `/projects/${project}/namespaces/${namespace.name}/tokens/publishable?org=${organization}`, + ); + + const { token: accessToken } = await cloudRequest( + "POST", + `/projects/${project}/namespaces/${namespace.name}/tokens/access?org=${organization}`, + ); + + // Step 4: Build the frontend with public environment variables. + execSync("npm run build", { + cwd: projectDir, + env: { + ...process.env, + VITE_RIVET_ENDPOINT: "https://api.rivet.dev", + VITE_RIVET_NAMESPACE: engineNamespaceName, + VITE_RIVET_TOKEN: publishableToken, + }, + stdio: "inherit", + }); + + // Step 5: Deploy actor code and frontend to Freestyle with backend + // environment variables. + const freestyle = new FreestyleSandboxes({ apiKey: FREESTYLE_API_KEY }); + const deploymentSource = prepareDirForDeploymentSync(projectDir); + + const { deploymentId } = await freestyle.deployWeb(deploymentSource, { + envVars: { + RIVET_ENDPOINT: "https://api.rivet.dev", + RIVET_NAMESPACE: engineNamespaceName, + RIVET_TOKEN: runnerToken, + }, + entrypoint: "src/backend/server.ts", + domains: [FREESTYLE_DOMAIN], + build: false, + }); + + // Step 6: Configure Rivet to run actors on the Freestyle deployment. + const rivet = new RivetClient({ + environment: "https://api.rivet.dev", + token: accessToken, + }); + + await rivet.runnerConfigsUpsert("default", { + datacenters: { + "us-west-1": { // Freestyle datacenter is on west coast + serverless: { + url: `https://${FREESTYLE_DOMAIN}/api/rivet`, + headers: {}, + runnersMargin: 0, + minRunners: 0, + maxRunners: 1000, + slotsPerRunner: 1, + requestLifespan: 60 * 5, + }, + }, + }, + namespace: engineNamespaceName, + }); + + console.log("Deployment complete!"); + console.log("Frontend:", `https://${FREESTYLE_DOMAIN}`); + console.log("Rivet Dashboard:", `https://dashboard.rivet.dev/orgs/${organization}/projects/${project}/ns/${namespace.name}`); + console.log("Freestyle Dashboard:", `https://admin.freestyle.sh/dashboard/deployments/${deploymentId}`); + } + + async function cloudRequest(method: string, path: string, body?: any) { + const res = await fetch(`https://api-cloud.rivet.dev${path}`, { + method, + headers: { + Authorization: `Bearer ${CLOUD_API_TOKEN}`, + ...(body && { "Content-Type": "application/json" }), + }, + ...(body && { body: JSON.stringify(body) }), + }); + return res.json(); + } + ``` + + See the [example repository](https://github.com/rivet-dev/rivet/tree/main/examples/ai-and-user-generated-actors-freestyle) for the complete project structure including the template directory and build process. + + For more information on Freestyle deployment, see the [Freestyle documentation](https://docs.freestyle.sh/web/overview). + + + + + + + + Before you begin, ensure you have: + - Node.js 18+ installed + - A [Freestyle](https://freestyle.sh) account and API key + - A [self-hosted Rivet instance](/docs/self-hosting) with endpoint and API token + + + + Install the required dependencies: + + ```bash + npm install @rivetkit/engine-api-full@^25.7.2 freestyle-sandboxes@^0.0.95 + ``` + + + + Write deployment code that handles namespace creation, Freestyle deployment, and runner configuration. This can be called from your backend to deploy actor and frontend code to an isolated Rivet namespace. + + ```typescript + import { execSync } from "child_process"; + import { RivetClient } from "@rivetkit/engine-api-full"; + import { FreestyleSandboxes } from "freestyle-sandboxes"; + import { prepareDirForDeploymentSync } from "freestyle-sandboxes/utils"; + + // Configuration + const RIVET_ENDPOINT = "http://your-rivet-instance:6420"; + const RIVET_TOKEN = "your-rivet-token"; + const FREESTYLE_DOMAIN = "your-app.style.dev"; + const FREESTYLE_API_KEY = "your-freestyle-api-key"; + + async function deploy(projectDir: string) { + // Step 1: Create sandboxed namespace using the self-hosted Rivet API + const rivet = new RivetClient({ + environment: RIVET_ENDPOINT, + token: RIVET_TOKEN, + }); + + const namespaceName = `ns-${Date.now()}-${Math.random().toString(36).substring(2, 8)}`; + + const { namespace } = await rivet.namespaces.create({ + displayName: namespaceName, + name: namespaceName, + }); + + // Step 2: Build the frontend with public environment variables. + execSync("npm run build", { + cwd: projectDir, + env: { + ...process.env, + VITE_RIVET_ENDPOINT: RIVET_ENDPOINT, + VITE_RIVET_NAMESPACE: namespace.name, + VITE_RIVET_TOKEN: RIVET_TOKEN, + }, + stdio: "inherit", + }); + + // Step 3: Deploy actor and frontend to Freestyle with backend + // environment variables. + const freestyle = new FreestyleSandboxes({ apiKey: FREESTYLE_API_KEY }); + const deploymentSource = prepareDirForDeploymentSync(projectDir); + + const { deploymentId } = await freestyle.deployWeb(deploymentSource, { + envVars: { + RIVET_ENDPOINT, + RIVET_NAMESPACE: namespace.name, + RIVET_TOKEN, + }, + entrypoint: "src/backend/server.ts", + domains: [FREESTYLE_DOMAIN], + build: false, + }); + + // Step 4: Configure your self-hosted Rivet to run actors on the Freestyle + // deployment + await rivet.runnerConfigsUpsert("default", { + datacenters: { + "us-west-1": { // Freestyle datacenter is on west coast + serverless: { + url: `https://${FREESTYLE_DOMAIN}/api/rivet`, + headers: {}, + runnersMargin: 0, + minRunners: 0, + maxRunners: 1000, + slotsPerRunner: 1, + requestLifespan: 60 * 5, + }, + }, + }, + namespace: namespace.name, + }); + + console.log("Deployment complete!"); + console.log("Frontend:", `https://${FREESTYLE_DOMAIN}`); + console.log("Freestyle Dashboard:", `https://admin.freestyle.sh/dashboard/deployments/${deploymentId}`); + } + ``` + + See the [example repository](https://github.com/rivet-dev/rivet/tree/main/examples/ai-and-user-generated-actors-freestyle) for the complete project structure including the template directory and build process. + + + + diff --git a/website/src/sitemap/mod.ts b/website/src/sitemap/mod.ts index 898712de61..00870410f6 100644 --- a/website/src/sitemap/mod.ts +++ b/website/src/sitemap/mod.ts @@ -250,6 +250,10 @@ export const sitemap = [ href: "/docs/actors/testing", // icon: faVialCircleCheck, }, + { + title: "AI & User-Generated Actors", + href: "/docs/actors/ai-and-user-generated-actors", + }, { title: "Helper Types", href: "/docs/actors/helper-types", From c8b26756521d42116f6b6251a0b217ef6a0a15a0 Mon Sep 17 00:00:00 2001 From: Nicholas Kissel Date: Wed, 3 Dec 2025 01:00:36 -0800 Subject: [PATCH 2/2] chore(site):ai generated backend launch --- website/src/components/CodeBlock.tsx | 1 + website/src/components/v2/Code.tsx | 1 + .../actors/ai-and-user-generated-actors.mdx | 14 +- .../image.png | Bin 0 -> 318332 bytes .../2025-12-03-ai-generated-backends/page.mdx | 206 ++++++++++++++++++ 5 files changed, 220 insertions(+), 2 deletions(-) create mode 100644 website/src/posts/2025-12-03-ai-generated-backends/image.png create mode 100644 website/src/posts/2025-12-03-ai-generated-backends/page.mdx diff --git a/website/src/components/CodeBlock.tsx b/website/src/components/CodeBlock.tsx index 24f262b8f1..f8cdbf55b2 100644 --- a/website/src/components/CodeBlock.tsx +++ b/website/src/components/CodeBlock.tsx @@ -17,6 +17,7 @@ const LANGS: shiki.BundledLanguage[] = [ "powershell", "ts", "typescript", + "sql", "yaml", "http", "prisma", diff --git a/website/src/components/v2/Code.tsx b/website/src/components/v2/Code.tsx index 0595774f6e..8466f7a014 100644 --- a/website/src/components/v2/Code.tsx +++ b/website/src/components/v2/Code.tsx @@ -32,6 +32,7 @@ const languageNames = { ruby: "Ruby", ts: "TypeScript", typescript: "TypeScript", + sql: "SQL", yaml: "YAML", gdscript: "GDScript", powershell: "Command Line", diff --git a/website/src/content/docs/actors/ai-and-user-generated-actors.mdx b/website/src/content/docs/actors/ai-and-user-generated-actors.mdx index 1b042e5f5a..a1fade23bf 100644 --- a/website/src/content/docs/actors/ai-and-user-generated-actors.mdx +++ b/website/src/content/docs/actors/ai-and-user-generated-actors.mdx @@ -19,6 +19,16 @@ Deploying AI and user-generated Rivet Actors to sandboxed namespaces is useful f - **Preview deployments**: Create ephemeral environments for testing pull requests - **Multi-tenant applications**: Isolate each customer in their own sandboxed namespace +## Rivet Actors For AI-Generated Backends + +Traditional architectures require AI agents to coordinate across multiple disconnected systems: a database schemas, API logic, and synchronizing schemas & APIs. + +With Rivet Actors, **state and logic live together in a single actor definition**. This consolidation means: + +- **Less LLM context required**: No need to understand multiple systems or keep them in sync +- **Fewer errors**: State and behavior can't drift apart when they're defined together +- **More powerful generation**: AI agents can focus on business logic instead of infrastructure plumbing + ## How It Works The deployment process involves four key steps: @@ -39,11 +49,11 @@ The deployment process involves four key steps: Before you begin, ensure you have: - Node.js 18+ installed - - A [Freestyle](https://freestyle.sh) account and API key + - A [Freestyle](https://freestyle.sh) account and API token - A [Rivet Cloud](https://dashboard.rivet.dev/) account - + 1. Visit your project on [Rivet Cloud](https://dashboard.rivet.dev/) 2. Click on "Tokens" in the sidebar 3. Under "Cloud API Tokens" click "Create Token" diff --git a/website/src/posts/2025-12-03-ai-generated-backends/image.png b/website/src/posts/2025-12-03-ai-generated-backends/image.png new file mode 100644 index 0000000000000000000000000000000000000000..4aa3532400406d9ef1ddd1c6570e94d39cf94526 GIT binary patch literal 318332 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 z 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

bZb~INWm3kPN|@aYm1X?{^~@2HYl{P@Q` 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 djqv&XnA1 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 + + +```typescript {{"title":"registry.ts"}} +export const user = actor({ + // State is defined alongside behavior + createState: (c, input) => ({ + name: input.name, + email: input.email, + createdAt: Date.now(), + }), + + // Actions can read and mutate state + actions: { + updateEmail: (c, email: string) => { + c.state.email = email; + }, + getProfile: (c) => c.state, + }, +}); +``` + + + + +```sql {{"title":"migrations/001_create_users.sql"}} +CREATE TABLE users ( + id UUID PRIMARY KEY, + name TEXT NOT NULL, + created_at BIGINT NOT NULL +); +``` + +```sql {{"title":"migrations/002_add_email.sql"}} +ALTER TABLE users ADD COLUMN email TEXT NOT NULL DEFAULT ''; +CREATE INDEX idx_users_email ON users(email); +``` + +```typescript {{"title":"api/users.ts"}} +import { Hono } from "hono"; +import { db } from "./db"; + +const app = new Hono(); + +app.post("/users/:id", async (c) => { + const { id } = c.req.param(); + const { name, email } = await c.req.json(); + + await db.query( + "INSERT INTO users (id, name, email, created_at) VALUES ($1, $2, $3, $4)", + [id, name, email, Date.now()] + ); + + return c.json({ success: true }); +}); + +app.patch("/users/:id/email", async (c) => { + const { id } = c.req.param(); + const { email } = await c.req.json(); + + await db.query( + "UPDATE users SET email = $1 WHERE id = $2", + [email, id] + ); + + return c.json({ success: true }); +}); + +app.get("/users/:id", async (c) => { + const { id } = c.req.param(); + const result = await db.query( + "SELECT name, email, created_at FROM users WHERE id = $1", + [id] + ); + + return c.json(result.rows[0]); +}); +``` + + + + +This consolidation eliminates fragmentation: + +- **Single source of truth**: No need to keep migrations, schemas, and APIs in sync +- **Less LLM context required**: Generate one file instead of coordinating multiple systems +- **Fewer errors**: State and behavior can't drift apart when they're defined together +- **More powerful generation**: AI agents can focus on business logic instead of infrastructure plumbing + +### Rivet Namespaces: Fully Sandboxed Environments + +Sandboxed namespaces provide isolated environments where **each AI-generated or user-generated deployment runs independently** with its own resources, tokens, and configuration. This enables safe multi-tenant deployments and user-generated code execution. + +## Use Cases + +Sandboxed namespaces enable a variety of isolated deployment scenarios: + +- **AI-generated code**: Deploy LLM-generated backends safely in isolated environments +- **User sandbox environments**: Give users their own sandboxed Rivet namespace to experiment +- **Preview deployments**: Create ephemeral environments for testing pull requests +- **Multi-tenant applications**: Isolate each customer in their own sandboxed namespace + +## How It Works + +The deployment process involves four key steps: + +1. **Create sandboxed namespace**: Programmatically create an isolated Rivet namespace using the Cloud API or self-hosted Rivet API + +2. **Generate tokens**: Create the necessary authentication tokens: + - **Runner token**: Authenticates the serverless runner to execute actors + - **Publishable token**: Used by frontend clients to connect to actors + - **Access token**: Provides API access for configuring the namespace + +3. **Deploy code**: Deploy the actor code and frontend programmatically to your serverless platform of choice (Vercel, Netlify, AWS Lambda, Freestyle, etc.) + +4. **Connect Rivet**: Configure Rivet to run actors on your deployment in your sandboxed namespace + +## Show Me The Code + +Here's a simplified example of the deployment flow using [Freestyle](https://freestyle.sh) (built specifically for this use case): + +```typescript +import { RivetClient } from "@rivetkit/engine-api-full"; +import { FreestyleSandboxes } from "freestyle-sandboxes"; + +async function deploy(projectDir: string) { + // Step 1: Create sandboxed namespace + const { project, organization } = await cloudRequest("GET", "/tokens/api/inspect"); + const { namespace } = await cloudRequest( + "POST", + `/projects/${project}/namespaces?org=${organization}`, + { displayName: `ns-${Date.now()}` } + ); + + // Step 2: Generate tokens + // ...omitted... + + // Step 3: Deploy to Freestyle + const freestyle = new FreestyleSandboxes({ apiKey: FREESTYLE_API_KEY }); + const deploymentSource = prepareDirForDeploymentSync(projectDir); + await freestyle.deployWeb(deploymentSource, { + envVars: { + RIVET_ENDPOINT: "https://api.rivet.dev", + RIVET_NAMESPACE: namespace.access.engineNamespaceName, + RIVET_TOKEN: runnerToken, + }, + entrypoint: "src/backend/server.ts", + domains: [FREESTYLE_DOMAIN], + }); + + // Step 4: Configure Rivet to run actors on the deployment + const rivet = new RivetClient({ + environment: "https://api.rivet.dev", + token: accessToken, + }); + await rivet.runnerConfigsUpsert("default", { + datacenters: { + "us-west-1": { + serverless: { + url: `https://${FREESTYLE_DOMAIN}/api/rivet`, + headers: {}, + maxRunners: 1000, + }, + }, + }, + namespace: namespace.access.engineNamespaceName, + }); +} +``` + +Call this deployment function whenever your AI agent generates new actor code or a user requests their own sandbox environment. The entire process takes seconds and creates a fully isolated, production-ready deployment. + +## Getting Started + +To try deploying AI-generated or user-generated Rivet Actors: + +- Check out the [complete example on GitHub](https://github.com/rivet-dev/rivet/tree/main/examples/ai-and-user-generated-actors-freestyle) +- Read the [full documentation guide](/docs/actors/ai-and-user-generated-actors) +- Sign up for [Rivet Cloud](https://dashboard.rivet.dev) or [self-host Rivet](/docs/self-hosting) + +