{
  "name": "@tpmjs/unsandbox",
  "version": "0.0.2",
  "description": "AI SDK tools for secure code execution in 42+ programming languages via unsandbox.com",
  "main": "dist/index.js",
  "types": "dist/index.d.ts",
  "scripts": {
    "build": "tsc",
    "dev": "tsc --watch",
    "type-check": "tsc --noEmit"
  },
  "keywords": [
    "tpmjs",
    "ai-sdk",
    "code-execution",
    "sandbox",
    "unsandbox"
  ],
  "dependencies": {
    "@thomasdavis/unsandbox": "^0.0.3"
  },
  "devDependencies": {
    "@tpmjs/tsconfig": "workspace:*",
    "typescript": "^5.9.3"
  },
  "files": [
    "dist",
    "README.md"
  ],
  "publishConfig": {
    "access": "public"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/ajaxdavis/tpmjs.git",
    "directory": "packages/tools/unsandbox"
  },
  "homepage": "https://tpmjs.com",
  "license": "MIT",
  "tpmjs": {
    "category": "ai-ml",
    "frameworks": [
      "vercel-ai"
    ],
    "env": [
      {
        "name": "UNSANDBOX_API_KEY",
        "description": "API key for the Unsandbox code execution service (get one at https://unsandbox.com/api-keys)",
        "required": true
      }
    ],
    "tools": [
      {
        "name": "executeCode",
        "description": "Execute code synchronously in a secure sandbox. Supports 42+ languages including Python, JavaScript, TypeScript, Go, Rust, and more.",
        "parameters": [
          {
            "name": "language",
            "type": "string",
            "description": "Programming language to execute (python, javascript, typescript, go, rust, c, cpp, java, ruby, etc.)",
            "required": true
          },
          {
            "name": "code",
            "type": "string",
            "description": "The source code to execute",
            "required": true
          },
          {
            "name": "input_files",
            "type": "array",
            "description": "Optional array of input files to make available in /tmp/input/",
            "required": false
          },
          {
            "name": "network_mode",
            "type": "string",
            "description": "Network isolation mode: 'zerotrust' (default, blocks all) or 'semitrusted' (allows outbound)",
            "required": false
          },
          {
            "name": "ttl",
            "type": "number",
            "description": "Execution timeout in seconds (1-900, default 60)",
            "required": false
          }
        ],
        "returns": {
          "type": "object",
          "description": "Execution result with stdout, stderr, and exit code"
        },
        "aiAgent": {
          "useCase": "Use when you need to execute code in a secure sandbox environment. Great for running untrusted code, testing snippets, or executing code in languages not available locally.",
          "examples": [
            "Execute Python code to analyze data",
            "Run JavaScript to test a function",
            "Compile and run Rust code"
          ]
        }
      },
      {
        "name": "executeCodeAsync",
        "description": "Execute code asynchronously in a secure sandbox. Returns a job_id immediately for tracking.",
        "parameters": [
          {
            "name": "language",
            "type": "string",
            "description": "Programming language to execute",
            "required": true
          },
          {
            "name": "code",
            "type": "string",
            "description": "The source code to execute",
            "required": true
          }
        ],
        "returns": {
          "type": "object",
          "description": "Job info with job_id for tracking"
        },
        "aiAgent": {
          "useCase": "Use for long-running code that may take time to complete. Check status with getJob.",
          "examples": [
            "Run a long computation asynchronously",
            "Execute code that may take several minutes"
          ]
        }
      },
      {
        "name": "runCode",
        "description": "Execute code with automatic language detection from shebang line (e.g., #!/usr/bin/env python3).",
        "parameters": [
          {
            "name": "code",
            "type": "string",
            "description": "Source code with shebang line for language detection",
            "required": true
          }
        ],
        "returns": {
          "type": "object",
          "description": "Execution result with stdout, stderr, and detected language"
        },
        "aiAgent": {
          "useCase": "Simpler alternative to executeCode when your code has a shebang line.",
          "examples": [
            "Run a script with #!/usr/bin/env python3",
            "Execute bash script with #!/bin/bash"
          ]
        }
      },
      {
        "name": "runCodeAsync",
        "description": "Execute code asynchronously with automatic language detection from shebang.",
        "parameters": [
          {
            "name": "code",
            "type": "string",
            "description": "Source code with shebang line",
            "required": true
          }
        ],
        "returns": {
          "type": "object",
          "description": "Job info with job_id"
        },
        "aiAgent": {
          "useCase": "Async version of runCode for long-running scripts.",
          "examples": [
            "Run a long Python script asynchronously"
          ]
        }
      },
      {
        "name": "listJobs",
        "description": "List all active jobs for your API key. Jobs are retained for 3 minutes after completion.",
        "parameters": [],
        "returns": {
          "type": "object",
          "description": "List of jobs with IDs, statuses, and timestamps"
        },
        "aiAgent": {
          "useCase": "Check what async jobs are currently running or recently completed.",
          "examples": [
            "List all my running code executions"
          ]
        }
      },
      {
        "name": "getJob",
        "description": "Get status and results of a specific async job.",
        "parameters": [
          {
            "name": "job_id",
            "type": "string",
            "description": "The job ID from executeCodeAsync or runCodeAsync",
            "required": true
          }
        ],
        "returns": {
          "type": "object",
          "description": "Job status (pending, running, completed, cancelled, timeout) with stdout/stderr"
        },
        "aiAgent": {
          "useCase": "Check if an async job has completed and get its output.",
          "examples": [
            "Get results of job abc123"
          ]
        }
      },
      {
        "name": "cancelJob",
        "description": "Cancel a running or pending async job.",
        "parameters": [
          {
            "name": "job_id",
            "type": "string",
            "description": "The job ID to cancel",
            "required": true
          }
        ],
        "returns": {
          "type": "object",
          "description": "Cancellation confirmation with partial output collected"
        },
        "aiAgent": {
          "useCase": "Stop a long-running job that's no longer needed.",
          "examples": [
            "Cancel job abc123"
          ]
        }
      },
      {
        "name": "listLanguages",
        "description": "List all 42+ supported programming languages and their aliases.",
        "parameters": [],
        "returns": {
          "type": "object",
          "description": "List of supported languages with aliases"
        },
        "aiAgent": {
          "useCase": "Discover what languages are available before executing code.",
          "examples": [
            "What languages can I execute?"
          ]
        }
      }
    ]
  }
}
