the universal sandbox runtime for agents and humans. pocketenv.io
sandbox openclaw agent claude-code vercel-sandbox deno-sandbox cloudflare-sandbox atproto sprites daytona
7
fork

Configure Feed

Select the types of activity you want to include in your feed.

at 1241cd4e999bb3f48dca4cab7bcff14fe6f5d6ad 85 lines 2.3 kB view raw
1import { env } from "lib/env"; 2import { getConnection } from "./drizzle"; 3import { createDb, migrateToLatest } from "db"; 4import { createStorage } from "unstorage"; 5import sqliteKv from "sqliteKv"; 6import { createBidirectionalResolver, createIdResolver } from "lib/idResolver"; 7import { createClient } from "auth/client"; 8import { consola } from "consola"; 9import authVerifier from "lib/authVerfifier"; 10import redis from "redis"; 11import type { RequestHandler } from "express"; 12import axios from "axios"; 13import { workers } from "cloudflare"; 14import { Providers } from "consts"; 15import type { Message } from "pty/pty-tunnel/messages"; 16import type { WebSocket } from "ws"; 17import type express from "express"; 18 19const { DB_PATH } = env; 20export const db = createDb(DB_PATH); 21await migrateToLatest(db); 22 23const kv = createStorage({ 24 driver: sqliteKv({ location: env.KV_DB_PATH, table: "kv" }), 25}); 26 27const baseIdResolver = createIdResolver(kv); 28 29export interface TerminalSocket { 30 sendMessage(message: Message): void; 31} 32 33export type Session = { 34 socket: TerminalSocket; 35 clients: Set<express.Response>; 36 wsClients: Set<WebSocket>; 37}; 38 39const sessions = new Map<string, Session>(); 40 41export const ctx = { 42 oauthClient: await createClient(db), 43 resolver: createBidirectionalResolver(baseIdResolver), 44 baseIdResolver, 45 db: getConnection(), 46 authVerifier, 47 sqliteDb: db, 48 sqliteKv: kv, 49 redis: await redis 50 .createClient({ url: env.REDIS_URL }) 51 .on("error", (err) => { 52 consola.error("Uncaught Redis Client Error", err); 53 process.exit(1); 54 }) 55 .connect(), 56 kv: new Map<string, string>(), 57 sandbox: (provider?: string) => 58 axios.create({ 59 baseURL: [ 60 Providers.MODAL, 61 Providers.E2B, 62 Providers.BLAXEL, 63 Providers.HOPX, 64 Providers.RUNLOOP, 65 ].includes(provider as Providers) 66 ? env.MODAL_SANDBOX_API_URL 67 : env.SANDBOX_API_URL, 68 }), 69 cfsandbox: (base: string) => 70 axios.create({ 71 baseURL: 72 base && !env.CF_LOCAL && workers[base] 73 ? workers[base] 74 : env.CF_SANDBOX_API_URL, 75 }), 76 sessions, 77}; 78 79export const contextMiddleware: RequestHandler = (req, _res, next) => { 80 req.ctx = ctx; 81 82 next(); 83}; 84 85export type Context = typeof ctx;