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.

Add sandboxViewDetailed and use in getSandbox

+336 -4
+94
apps/api/lexicons/sandbox/defs.json
··· 80 80 } 81 81 } 82 82 }, 83 + "sandboxViewDetailed": { 84 + "type": "object", 85 + "properties": { 86 + "name": { 87 + "type": "string", 88 + "description": "Name of the sandbox", 89 + "maxLength": 50 90 + }, 91 + "provider": { 92 + "type": "string", 93 + "description": "The provider of the sandbox, e.g. 'daytona', 'vercel', 'cloudflare', etc.", 94 + "maxLength": 50 95 + }, 96 + "description": { 97 + "type": "string", 98 + "maxGraphemes": 300, 99 + "maxLength": 3000 100 + }, 101 + "status": { 102 + "type": "string", 103 + "description": "The current status of the sandbox, e.g. 'STARTED', 'STOPPED', etc." 104 + }, 105 + "startedAt": { 106 + "type": "string", 107 + "format": "datetime" 108 + }, 109 + "timeout": { 110 + "type": "integer", 111 + "description": "The sandbox timeout in seconds" 112 + }, 113 + "baseSandbox": { 114 + "type": "ref", 115 + "ref": "io.pocketenv.sandbox.defs#sandboxViewBasic" 116 + }, 117 + "website": { 118 + "type": "string", 119 + "description": "Any URI related to the sandbox", 120 + "format": "uri" 121 + }, 122 + "logo": { 123 + "type": "string", 124 + "description": "URI to an image logo for the sandbox", 125 + "format": "uri" 126 + }, 127 + "topics": { 128 + "type": "array", 129 + "items": { 130 + "type": "string", 131 + "minLength": 1, 132 + "maxLength": 50 133 + }, 134 + "maxLength": 50 135 + }, 136 + "repo": { 137 + "type": "string", 138 + "description": "A git repository URL to clone into the sandbox, e.g. a GitHub/Tangled repo.", 139 + "format": "uri" 140 + }, 141 + "readme": { 142 + "type": "string", 143 + "description": "A URI to a README for the sandbox.", 144 + "format": "uri" 145 + }, 146 + "vcpus": { 147 + "type": "integer", 148 + "description": "Number of virtual CPUs allocated to the sandbox" 149 + }, 150 + "memory": { 151 + "type": "integer", 152 + "description": "Amount of memory in GB allocated to the sandbox" 153 + }, 154 + "disk": { 155 + "type": "integer", 156 + "description": "Amount of disk space in GB allocated to the sandbox" 157 + }, 158 + "ports": { 159 + "type": "array", 160 + "items": { 161 + "type": "integer", 162 + "maximum": 65535, 163 + "minimum": 1 164 + }, 165 + "maxLength": 100 166 + }, 167 + "installs": { 168 + "type": "integer", 169 + "description": "Number of times the sandbox has been installed by users." 170 + }, 171 + "createdAt": { 172 + "type": "string", 173 + "format": "datetime" 174 + } 175 + } 176 + }, 83 177 "secret": { 84 178 "type": "object", 85 179 "required": [
+1 -1
apps/api/lexicons/sandbox/getSandbox.json
··· 21 21 "encoding": "application/json", 22 22 "schema": { 23 23 "type": "ref", 24 - "ref": "io.pocketenv.sandbox.defs#sandboxViewBasic" 24 + "ref": "io.pocketenv.sandbox.defs#sandboxViewDetailed" 25 25 } 26 26 } 27 27 }
+94
apps/api/pkl/defs/sandbox/defs.pkl
··· 81 81 } 82 82 } 83 83 } 84 + ["sandboxViewDetailed"] = new ObjectType { 85 + type = "object" 86 + properties { 87 + ["name"] = new StringType { 88 + type = "string" 89 + maxLength = 50 90 + description = "Name of the sandbox" 91 + } 92 + ["provider"] = new StringType { 93 + type = "string" 94 + maxLength = 50 95 + description = "The provider of the sandbox, e.g. 'daytona', 'vercel', 'cloudflare', etc." 96 + } 97 + ["description"] = new StringType { 98 + type = "string" 99 + maxLength = 3000 100 + maxGraphemes = 300 101 + } 102 + ["status"] = new StringType { 103 + type = "string" 104 + description = "The current status of the sandbox, e.g. 'STARTED', 'STOPPED', etc." 105 + } 106 + ["startedAt"] = new StringType { 107 + type = "string" 108 + format = "datetime" 109 + } 110 + ["timeout"] = new IntegerType { 111 + type = "integer" 112 + description = "The sandbox timeout in seconds" 113 + } 114 + ["baseSandbox"] = new Ref { 115 + type = "ref" 116 + ref = "io.pocketenv.sandbox.defs#sandboxViewBasic" 117 + } 118 + ["website"] = new StringType { 119 + type = "string" 120 + format = "uri" 121 + description = "Any URI related to the sandbox" 122 + } 123 + ["logo"] = new StringType { 124 + type = "string" 125 + format = "uri" 126 + description = "URI to an image logo for the sandbox" 127 + } 128 + ["topics"] = new Array { 129 + type = "array" 130 + items = new StringType { 131 + type = "string" 132 + minLength = 1 133 + maxLength = 50 134 + } 135 + maxLength = 50 136 + } 137 + ["repo"] = new StringType { 138 + type = "string" 139 + description = "A git repository URL to clone into the sandbox, e.g. a GitHub/Tangled repo." 140 + format = "uri" 141 + } 142 + ["readme"] = new StringType { 143 + type = "string" 144 + description = "A URI to a README for the sandbox." 145 + format = "uri" 146 + } 147 + ["vcpus"] = new IntegerType { 148 + type = "integer" 149 + description = "Number of virtual CPUs allocated to the sandbox" 150 + } 151 + ["memory"] = new IntegerType { 152 + type = "integer" 153 + description = "Amount of memory in GB allocated to the sandbox" 154 + } 155 + ["disk"] = new IntegerType { 156 + type = "integer" 157 + description = "Amount of disk space in GB allocated to the sandbox" 158 + } 159 + ["ports"] = new Array { 160 + type = "array" 161 + items = new IntegerType { 162 + type = "integer" 163 + minimum = 1 164 + maximum = 65535 165 + } 166 + maxLength = 100 167 + } 168 + ["installs"] = new IntegerType { 169 + type = "integer" 170 + description = "Number of times the sandbox has been installed by users." 171 + } 172 + ["createdAt"] = new StringType { 173 + type = "string" 174 + format = "datetime" 175 + } 176 + } 177 + } 84 178 ["secret"] = new ObjectType { 85 179 type = "object" 86 180 required = List("name", "value")
+1 -1
apps/api/pkl/defs/sandbox/getSandbox.pkl
··· 20 20 encoding = "application/json" 21 21 schema = new Ref { 22 22 type = "ref" 23 - ref = "io.pocketenv.sandbox.defs#sandboxViewBasic" 23 + ref = "io.pocketenv.sandbox.defs#sandboxViewDetailed" 24 24 } 25 25 } 26 26 }
+99 -1
apps/api/src/lexicon/lexicons.ts
··· 329 329 }, 330 330 }, 331 331 }, 332 + sandboxViewDetailed: { 333 + type: "object", 334 + properties: { 335 + name: { 336 + type: "string", 337 + description: "Name of the sandbox", 338 + maxLength: 50, 339 + }, 340 + provider: { 341 + type: "string", 342 + description: 343 + "The provider of the sandbox, e.g. 'daytona', 'vercel', 'cloudflare', etc.", 344 + maxLength: 50, 345 + }, 346 + description: { 347 + type: "string", 348 + maxGraphemes: 300, 349 + maxLength: 3000, 350 + }, 351 + status: { 352 + type: "string", 353 + description: 354 + "The current status of the sandbox, e.g. 'STARTED', 'STOPPED', etc.", 355 + }, 356 + startedAt: { 357 + type: "string", 358 + format: "datetime", 359 + }, 360 + timeout: { 361 + type: "integer", 362 + description: "The sandbox timeout in seconds", 363 + }, 364 + baseSandbox: { 365 + type: "ref", 366 + ref: "lex:io.pocketenv.sandbox.defs#sandboxViewBasic", 367 + }, 368 + website: { 369 + type: "string", 370 + description: "Any URI related to the sandbox", 371 + format: "uri", 372 + }, 373 + logo: { 374 + type: "string", 375 + description: "URI to an image logo for the sandbox", 376 + format: "uri", 377 + }, 378 + topics: { 379 + type: "array", 380 + items: { 381 + type: "string", 382 + minLength: 1, 383 + maxLength: 50, 384 + }, 385 + maxLength: 50, 386 + }, 387 + repo: { 388 + type: "string", 389 + description: 390 + "A git repository URL to clone into the sandbox, e.g. a GitHub/Tangled repo.", 391 + format: "uri", 392 + }, 393 + readme: { 394 + type: "string", 395 + description: "A URI to a README for the sandbox.", 396 + format: "uri", 397 + }, 398 + vcpus: { 399 + type: "integer", 400 + description: "Number of virtual CPUs allocated to the sandbox", 401 + }, 402 + memory: { 403 + type: "integer", 404 + description: "Amount of memory in GB allocated to the sandbox", 405 + }, 406 + disk: { 407 + type: "integer", 408 + description: "Amount of disk space in GB allocated to the sandbox", 409 + }, 410 + ports: { 411 + type: "array", 412 + items: { 413 + type: "integer", 414 + maximum: 65535, 415 + minimum: 1, 416 + }, 417 + maxLength: 100, 418 + }, 419 + installs: { 420 + type: "integer", 421 + description: 422 + "Number of times the sandbox has been installed by users.", 423 + }, 424 + createdAt: { 425 + type: "string", 426 + format: "datetime", 427 + }, 428 + }, 429 + }, 332 430 secret: { 333 431 type: "object", 334 432 required: ["name", "value"], ··· 427 525 encoding: "application/json", 428 526 schema: { 429 527 type: "ref", 430 - ref: "lex:io.pocketenv.sandbox.defs#sandboxViewBasic", 528 + ref: "lex:io.pocketenv.sandbox.defs#sandboxViewDetailed", 431 529 }, 432 530 }, 433 531 },
+46
apps/api/src/lexicon/types/io/pocketenv/sandbox/defs.ts
··· 46 46 return lexicons.validate("io.pocketenv.sandbox.defs#sandboxViewBasic", v); 47 47 } 48 48 49 + export interface SandboxViewDetailed { 50 + /** Name of the sandbox */ 51 + name?: string; 52 + /** The provider of the sandbox, e.g. 'daytona', 'vercel', 'cloudflare', etc. */ 53 + provider?: string; 54 + description?: string; 55 + /** The current status of the sandbox, e.g. 'STARTED', 'STOPPED', etc. */ 56 + status?: string; 57 + startedAt?: string; 58 + /** The sandbox timeout in seconds */ 59 + timeout?: number; 60 + baseSandbox?: SandboxViewBasic; 61 + /** Any URI related to the sandbox */ 62 + website?: string; 63 + /** URI to an image logo for the sandbox */ 64 + logo?: string; 65 + topics?: string[]; 66 + /** A git repository URL to clone into the sandbox, e.g. a GitHub/Tangled repo. */ 67 + repo?: string; 68 + /** A URI to a README for the sandbox. */ 69 + readme?: string; 70 + /** Number of virtual CPUs allocated to the sandbox */ 71 + vcpus?: number; 72 + /** Amount of memory in GB allocated to the sandbox */ 73 + memory?: number; 74 + /** Amount of disk space in GB allocated to the sandbox */ 75 + disk?: number; 76 + ports?: number[]; 77 + /** Number of times the sandbox has been installed by users. */ 78 + installs?: number; 79 + createdAt?: string; 80 + [k: string]: unknown; 81 + } 82 + 83 + export function isSandboxViewDetailed(v: unknown): v is SandboxViewDetailed { 84 + return ( 85 + isObj(v) && 86 + hasProp(v, "$type") && 87 + v.$type === "io.pocketenv.sandbox.defs#sandboxViewDetailed" 88 + ); 89 + } 90 + 91 + export function validateSandboxViewDetailed(v: unknown): ValidationResult { 92 + return lexicons.validate("io.pocketenv.sandbox.defs#sandboxViewDetailed", v); 93 + } 94 + 49 95 export interface Secret { 50 96 /** Name of the secret, e.g. 'DATABASE_URL', 'SSH_KEY', etc. */ 51 97 name: string;
+1 -1
apps/api/src/lexicon/types/io/pocketenv/sandbox/getSandbox.ts
··· 15 15 } 16 16 17 17 export type InputSchema = undefined; 18 - export type OutputSchema = IoPocketenvSandboxDefs.SandboxViewBasic; 18 + export type OutputSchema = IoPocketenvSandboxDefs.SandboxViewDetailed; 19 19 export type HandlerInput = undefined; 20 20 21 21 export interface HandlerSuccess {