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.

Use modalToken fields for modal auth inserts

Import InsertModalAuth and assert the insert payload satisfies the
type to ensure inserted columns match the schema and avoid mismatched
field names.

+11 -11
+1 -1
apps/api/src/xrpc/io/pocketenv/sandbox/getPreferences.ts
··· 105 105 (modal && { 106 106 $type: "io.pocketenv.sandbox.defs#sandboxProviderPref" as const, 107 107 name: "modal" as const, 108 - redactedTokenId: modal.redactedTokenId, 108 + redactedModalTokenId: modal.redactedTokenId, 109 109 modalTokenId: modal.tokenId, 110 110 modalTokenSecret: modal.tokenSecret, 111 111 redactedModalTokenSecret: modal.redactedTokenSecret,
+10 -10
apps/api/src/xrpc/io/pocketenv/sandbox/putPreferences.ts
··· 19 19 import spriteAuth from "schema/sprite-auth"; 20 20 import type { PgTransaction } from "drizzle-orm/pg-core"; 21 21 import type { NodePgQueryResultHKT } from "drizzle-orm/node-postgres"; 22 - import modalAuth from "schema/modal-auth"; 22 + import modalAuth, { type InsertModalAuth } from "schema/modal-auth"; 23 23 24 24 export default function (server: Server, ctx: Context) { 25 25 const putPreferences = async (input: HandlerInput, auth: HandlerAuth) => { ··· 223 223 .values({ 224 224 userId: user.id, 225 225 sandboxId: input.body.sandboxId, 226 - tokenId: pref.tokenId!, 227 - redactedTokenId: pref.redactedTokenId!, 228 - tokenSecret: pref.tokenSecret!, 229 - redactedTokenSecret: pref.redactedTokenSecret!, 230 - }) 226 + tokenId: pref.modalTokenId!, 227 + redactedTokenId: pref.redactedModalTokenId!, 228 + tokenSecret: pref.modalTokenSecret!, 229 + redactedTokenSecret: pref.redactedModalTokenSecret!, 230 + } satisfies InsertModalAuth) 231 231 .onConflictDoUpdate({ 232 232 target: [modalAuth.sandboxId, modalAuth.userId], 233 233 set: { 234 - tokenId: pref.tokenId!, 235 - redactedTokenId: pref.redactedTokenId!, 236 - tokenSecret: pref.tokenSecret!, 237 - redactedTokenSecret: pref.redactedTokenSecret!, 234 + tokenId: pref.modalTokenId!, 235 + redactedTokenId: pref.redactedModalTokenId!, 236 + tokenSecret: pref.modalTokenSecret!, 237 + redactedTokenSecret: pref.redactedModalTokenSecret!, 238 238 }, 239 239 }) 240 240 .execute();