├── .gitignore ├── packages ├── python │ ├── .python-version │ ├── e2b_mcp_server │ │ ├── __init__.py │ │ └── server.py │ ├── package.json │ ├── pyproject.toml │ ├── README.md │ ├── .gitignore │ └── poetry.lock └── js │ ├── .gitignore │ ├── tsconfig.json │ ├── package.json │ ├── README.md │ └── src │ └── index.ts ├── pnpm-workspace.yaml ├── readme-assets ├── mcp-server-dark.png └── mcp-server-light.png ├── CODEOWNERS ├── .npmrc ├── .changeset ├── README.md └── config.json ├── .github ├── scripts │ └── is_release.sh └── workflows │ ├── release.yml │ └── publish_packages.yml ├── Dockerfile ├── package.json ├── smithery.yaml ├── README.md ├── LICENSE └── pnpm-lock.yaml /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /packages/python/.python-version: -------------------------------------------------------------------------------- 1 | 3.12.3 2 | -------------------------------------------------------------------------------- /pnpm-workspace.yaml: -------------------------------------------------------------------------------- 1 | packages: 2 | - packages/* 3 | -------------------------------------------------------------------------------- /packages/js/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | build/ 3 | *.log 4 | .env* -------------------------------------------------------------------------------- /readme-assets/mcp-server-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/e2b-dev/mcp-server/HEAD/readme-assets/mcp-server-dark.png -------------------------------------------------------------------------------- /readme-assets/mcp-server-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/e2b-dev/mcp-server/HEAD/readme-assets/mcp-server-light.png -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | # These owners will be the default owners for everything in 2 | # the repo. Unless a later match takes precedence. 3 | * @mishushakov 4 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | enable-pre-post-scripts=true 2 | auto-install-peers=true 3 | exclude-links-from-lockfile=true 4 | prefer-workspace-packages=false 5 | link-workspace-packages=false 6 | engine-strict=true 7 | -------------------------------------------------------------------------------- /.changeset/README.md: -------------------------------------------------------------------------------- 1 | # Changesets 2 | 3 | To add changeset run: 4 | 5 | ```bash 6 | npx changeset 7 | ``` 8 | 9 | in the root of the project. This will create a new changeset in the `.changeset` folder. 10 | -------------------------------------------------------------------------------- /.github/scripts/is_release.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # This script checks if the current commit contains changesets. 4 | 5 | set -eu 6 | 7 | CHANGES=$(node -e "require('@changesets/read').default(process.cwd()).then(result => console.log(!!result.length))") 8 | 9 | echo "${CHANGES}" 10 | -------------------------------------------------------------------------------- /packages/python/e2b_mcp_server/__init__.py: -------------------------------------------------------------------------------- 1 | from . import server 2 | import asyncio 3 | 4 | def main(): 5 | """Main entry point for the package.""" 6 | asyncio.run(server.main()) 7 | 8 | # Optionally expose other important items at package level 9 | __all__ = ['main', 'server'] 10 | -------------------------------------------------------------------------------- /packages/python/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@e2b/python-mcp-server", 3 | "private": true, 4 | "version": "0.1.0", 5 | "scripts": { 6 | "postVersion": "poetry version $(pnpm pkg get version --workspaces=false | tr -d \\\")", 7 | "postPublish": "poetry build && poetry config pypi-token.pypi ${PYPI_TOKEN} && poetry publish --skip-existing" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | # Dockerfile for E2B MCP Server JavaScript Edition 2 | 3 | FROM node:22-alpine AS builder 4 | 5 | WORKDIR /app 6 | 7 | # Copy the application files 8 | COPY packages/js/ . 9 | 10 | # Install dependencies 11 | RUN npm install 12 | 13 | # Build the application 14 | RUN npm run build 15 | 16 | ENV NODE_ENV=production 17 | 18 | ENTRYPOINT ["node", "./build/index.js"] 19 | -------------------------------------------------------------------------------- /.changeset/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://unpkg.com/@changesets/config@2.3.1/schema.json", 3 | "changelog": "@changesets/cli/changelog", 4 | "commit": false, 5 | "fixed": [], 6 | "ignore": [], 7 | "linked": [], 8 | "access": "public", 9 | "baseBranch": "main", 10 | "updateInternalDependencies": "patch", 11 | "privatePackages": { 12 | "version": true, 13 | "tag": true 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/js/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2022", 4 | "module": "Node16", 5 | "moduleResolution": "Node16", 6 | "outDir": "./build", 7 | "rootDir": "./src", 8 | "strict": true, 9 | "esModuleInterop": true, 10 | "skipLibCheck": true, 11 | "forceConsistentCasingInFileNames": true 12 | }, 13 | "include": ["src/**/*"], 14 | "exclude": ["node_modules"] 15 | } 16 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "e2b-mcp-root", 3 | "private": true, 4 | "scripts": { 5 | "version": "pnpm changeset version && pnpm run -r postVersion", 6 | "publish": "pnpm changeset publish && pnpm run -r postPublish", 7 | "changeset": "pnpx @changesets/cli" 8 | }, 9 | "packageManager": "pnpm@9.15.5", 10 | "devDependencies": { 11 | "@changesets/read": "^0.6.2", 12 | "changeset": "^0.2.6" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /smithery.yaml: -------------------------------------------------------------------------------- 1 | # Smithery configuration file: https://smithery.ai/docs/deployments 2 | 3 | build: 4 | dockerBuildPath: . 5 | startCommand: 6 | type: stdio 7 | configSchema: 8 | # JSON Schema defining the configuration options for the MCP. 9 | type: object 10 | required: 11 | - e2bApiKey 12 | properties: 13 | e2bApiKey: 14 | type: string 15 | description: The API key for the E2B server. 16 | commandFunction: 17 | # A function that produces the CLI command to start the MCP on stdio. 18 | |- 19 | (config) => ({ command: 'node', args: ['./build/index.js'], env: { E2B_API_KEY: config.e2bApiKey } }) 20 | -------------------------------------------------------------------------------- /packages/python/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "e2b-mcp-server" 3 | version = "0.1.0" 4 | description = "E2B MCP Server" 5 | authors = ["e2b "] 6 | license = "Apache-2.0" 7 | readme = "README.md" 8 | homepage = "https://e2b.dev/" 9 | repository = "https://github.com/e2b-dev/mcp-server/tree/main/packages/python" 10 | packages = [{ include = "e2b_mcp_server" }] 11 | 12 | [tool.poetry.dependencies] 13 | python = ">=3.10,<4.0" 14 | 15 | e2b-code-interpreter = "^1.0.2" 16 | mcp = "^1.0.0" 17 | pydantic = "^2.10.2" 18 | python-dotenv = "1.0.1" 19 | 20 | [build-system] 21 | requires = ["poetry-core"] 22 | build-backend = "poetry.core.masonry.api" 23 | 24 | [tool.poetry.urls] 25 | "Bug Tracker" = "https://github.com/e2b-dev/mcp-server/issues" 26 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![E2B MCP Server Preview Light](/readme-assets/mcp-server-light.png#gh-light-mode-only) 2 | ![E2B MCP Server Preview Dark](/readme-assets/mcp-server-dark.png#gh-dark-mode-only) 3 | 4 | # E2B MCP Server 5 | 6 | [![smithery badge](https://smithery.ai/badge/e2b)](https://smithery.ai/server/e2b) 7 | 8 | This repository contains the source code for the [E2B](https://e2b.dev) MCP server. 9 | 10 | The E2B MCP server allows you to add [code interpreting capabilities](https://github.com/e2b-dev/code-interpreter) to your Claude Desktop app via the E2B Sandbox. See demo [here](https://x.com/mishushakov/status/1863286108433317958). 11 | 12 | 13 | Available in two editions: 14 | 15 | - [JavaScript](packages/js/README.md) 16 | 17 | - [Python](packages/python/README.md) 18 | 19 | 20 | ### Installing via Smithery 21 | 22 | You can also install E2B for Claude Desktop automatically via [Smithery](https://smithery.ai/server/e2b): 23 | 24 | ```bash 25 | npx @smithery/cli install e2b --client claude 26 | ``` 27 | -------------------------------------------------------------------------------- /packages/js/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@e2b/mcp-server", 3 | "version": "0.2.1", 4 | "description": "A Model Context Protocol server", 5 | "repository": { 6 | "type": "git", 7 | "url": "https://github.com/e2b-dev/mcp-server", 8 | "directory": "packages/js" 9 | }, 10 | "type": "module", 11 | "bin": { 12 | "@e2b/mcp-server": "./build/index.js" 13 | }, 14 | "files": [ 15 | "build" 16 | ], 17 | "scripts": { 18 | "build": "tsc && node -e \"require('fs').chmodSync('build/index.js', '755')\"", 19 | "prepare": "npm run build", 20 | "watch": "tsc --watch", 21 | "inspector": "npx @modelcontextprotocol/inspector build/index.js" 22 | }, 23 | "dependencies": { 24 | "@e2b/code-interpreter": "^1.0.4", 25 | "@modelcontextprotocol/sdk": "0.6.0", 26 | "dotenv": "^16.4.5", 27 | "zod": "^3.23.8", 28 | "zod-to-json-schema": "^3.23.5" 29 | }, 30 | "devDependencies": { 31 | "@types/node": "^20.11.24", 32 | "typescript": "^5.3.3" 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /packages/python/README.md: -------------------------------------------------------------------------------- 1 | # E2B MCP Server (Python) 2 | 3 | A Model Context Protocol server for running code in a secure sandbox by [E2B](https://e2b.dev). 4 | 5 | ## Development 6 | 7 | Install dependencies: 8 | ``` 9 | uv install 10 | ``` 11 | 12 | ## Installation 13 | 14 | To use with Claude Desktop, add the server config: 15 | 16 | On MacOS: `~/Library/Application Support/Claude/claude_desktop_config.json` 17 | On Windows: `%APPDATA%/Claude/claude_desktop_config.json` 18 | 19 | ```json 20 | { 21 | "mcpServers": { 22 | "e2b-mcp-server": { 23 | "command": "uvx", 24 | "args": ["e2b-mcp-server"], 25 | "env": { "E2B_API_KEY": "${e2bApiKey}" } 26 | } 27 | } 28 | } 29 | ``` 30 | 31 | ### Debugging 32 | 33 | Since MCP servers communicate over stdio, debugging can be challenging. We recommend using the [MCP Inspector](https://github.com/modelcontextprotocol/inspector), which is available as a package script: 34 | 35 | ``` 36 | npx @modelcontextprotocol/inspector \ 37 | uv \ 38 | --directory . \ 39 | run \ 40 | e2b-mcp-server \ 41 | ``` 42 | 43 | The Inspector will provide a URL to access debugging tools in your browser. 44 | -------------------------------------------------------------------------------- /packages/js/README.md: -------------------------------------------------------------------------------- 1 | # E2B MCP Server (JavaScript) 2 | 3 | A Model Context Protocol server for running code in a secure sandbox by [E2B](https://e2b.dev). 4 | 5 | ## Development 6 | 7 | Install dependencies: 8 | ``` 9 | pnpm install 10 | ``` 11 | 12 | Build the server: 13 | ``` 14 | pnpm build 15 | ``` 16 | 17 | For development with auto-rebuild: 18 | ``` 19 | pnpm watch 20 | ``` 21 | 22 | ## Installation 23 | 24 | To use with Claude Desktop, add the server config: 25 | 26 | On MacOS: `~/Library/Application Support/Claude/claude_desktop_config.json` 27 | On Windows: `%APPDATA%/Claude/claude_desktop_config.json` 28 | 29 | ```json 30 | { 31 | "mcpServers": { 32 | "e2b-server": { 33 | "command": "npx", 34 | "args": ["-y", "@e2b/mcp-server"], 35 | "env": { "E2B_API_KEY": "${e2bApiKey}" } 36 | } 37 | } 38 | } 39 | ``` 40 | 41 | ### Debugging 42 | 43 | Since MCP servers communicate over stdio, debugging can be challenging. We recommend using the [MCP Inspector](https://github.com/modelcontextprotocol/inspector), which is available as a package script: 44 | 45 | ``` 46 | pnpm inspector 47 | ``` 48 | 49 | The Inspector will provide a URL to access debugging tools in your browser. 50 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release MCP Packages 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | 8 | concurrency: ${{ github.workflow }}-${{ github.ref }} 9 | 10 | permissions: 11 | id-token: write 12 | contents: write 13 | 14 | jobs: 15 | is_release: 16 | name: Is release? 17 | runs-on: ubuntu-22.04 18 | outputs: 19 | release: ${{ steps.version.outputs.release }} 20 | steps: 21 | - name: Checkout Repo 22 | uses: actions/checkout@v3 23 | 24 | - name: Install pnpm 25 | uses: pnpm/action-setup@v3 26 | id: pnpm-install 27 | with: 28 | version: 9.5 29 | 30 | - name: Setup Node 31 | uses: actions/setup-node@v3 32 | with: 33 | node-version: "22.x" 34 | registry-url: "https://registry.npmjs.org" 35 | cache: pnpm 36 | cache-dependency-path: pnpm-lock.yaml 37 | 38 | - name: Configure pnpm 39 | run: | 40 | pnpm config set auto-install-peers true 41 | pnpm config set exclude-links-from-lockfile true 42 | 43 | - name: Install dependencies 44 | run: pnpm install --frozen-lockfile 45 | 46 | - name: Check if new version 47 | id: version 48 | run: | 49 | IS_RELEASE=$(./.github/scripts/is_release.sh) 50 | echo "release=$IS_RELEASE" >> "$GITHUB_OUTPUT" 51 | 52 | publish: 53 | name: Publish 54 | needs: [is_release] 55 | if: (!cancelled()) && !contains(needs.*.result, 'failure') && needs.is_release.outputs.release == 'true' 56 | uses: ./.github/workflows/publish_packages.yml 57 | secrets: inherit 58 | 59 | report-failure: 60 | needs: [publish] 61 | if: failure() 62 | name: Release Failed - Slack Notification 63 | runs-on: ubuntu-22.04 64 | steps: 65 | - name: Release Failed - Slack Notification 66 | uses: rtCamp/action-slack-notify@v2 67 | env: 68 | SLACK_COLOR: "#ff0000" 69 | SLACK_MESSAGE: ":here-we-go-again: :bob-the-destroyer: We need :fix-parrot: ASAP :pray:" 70 | SLACK_TITLE: Release Failed 71 | SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} 72 | -------------------------------------------------------------------------------- /packages/python/e2b_mcp_server/server.py: -------------------------------------------------------------------------------- 1 | import os 2 | import json 3 | import logging 4 | from collections.abc import Sequence 5 | from typing import Any 6 | 7 | from dotenv import load_dotenv 8 | from mcp.server import Server 9 | from mcp.types import ( 10 | Tool, 11 | TextContent, 12 | ImageContent, 13 | EmbeddedResource, 14 | ) 15 | 16 | from pydantic import BaseModel, ValidationError 17 | from e2b_code_interpreter import Sandbox 18 | 19 | 20 | # Load environment variables 21 | load_dotenv() 22 | 23 | # Configure logging 24 | logging.basicConfig(level=logging.INFO) 25 | logger = logging.getLogger("e2b-mcp-server") 26 | 27 | # Tool schema 28 | class ToolSchema(BaseModel): 29 | code: str 30 | 31 | app = Server("e2b-code-mcp-server") 32 | 33 | @app.list_tools() 34 | async def list_tools() -> list[Tool]: 35 | """List available tools.""" 36 | return [ 37 | Tool( 38 | name="run_code", 39 | description="Run python code in a secure sandbox by E2B. Using the Jupyter Notebook syntax.", 40 | inputSchema=ToolSchema.model_json_schema() 41 | ) 42 | ] 43 | 44 | @app.call_tool() 45 | async def call_tool(name: str, arguments: Any) -> Sequence[TextContent | ImageContent | EmbeddedResource]: 46 | """Handle tool calls.""" 47 | if name != "run_code": 48 | raise ValueError(f"Unknown tool: {name}") 49 | 50 | try: 51 | arguments = ToolSchema.model_validate(arguments) 52 | except ValidationError as e: 53 | raise ValueError(f"Invalid code arguments: {e}") from e 54 | 55 | sbx = Sandbox() 56 | execution = sbx.run_code(arguments.code) 57 | logger.info(f"Execution: {execution}") 58 | 59 | result = { 60 | "stdout": execution.logs.stdout, 61 | "stderr": execution.logs.stderr, 62 | } 63 | 64 | return [ 65 | TextContent( 66 | type="text", 67 | text=json.dumps(result, indent=2) 68 | ) 69 | ] 70 | 71 | async def main(): 72 | # Import here to avoid issues with event loops 73 | from mcp.server.stdio import stdio_server 74 | 75 | async with stdio_server() as (read_stream, write_stream): 76 | await app.run( 77 | read_stream, 78 | write_stream, 79 | app.create_initialization_options() 80 | ) 81 | -------------------------------------------------------------------------------- /.github/workflows/publish_packages.yml: -------------------------------------------------------------------------------- 1 | name: Publish MCP Packages 2 | 3 | on: 4 | workflow_call: 5 | secrets: 6 | PYPI_TOKEN: 7 | required: true 8 | 9 | permissions: 10 | id-token: write 11 | contents: write 12 | 13 | jobs: 14 | test: 15 | name: Publish MCP Server 16 | runs-on: ubuntu-22.04 17 | steps: 18 | - uses: actions/create-github-app-token@v1 19 | id: app-token 20 | with: 21 | app-id: ${{ vars.VERSION_BUMPER_APPID }} 22 | private-key: ${{ secrets.VERSION_BUMPER_SECRET }} 23 | 24 | - name: Checkout Repo 25 | uses: actions/checkout@v3 26 | with: 27 | token: ${{ steps.app-token.outputs.token }} 28 | 29 | - name: Set up Python 30 | uses: actions/setup-python@v4 31 | with: 32 | python-version: "3.10" 33 | 34 | - name: Install and configure Poetry 35 | uses: snok/install-poetry@v1 36 | with: 37 | version: 1.5.1 38 | virtualenvs-create: true 39 | virtualenvs-in-project: true 40 | installer-parallel: true 41 | 42 | - uses: pnpm/action-setup@v3 43 | with: 44 | version: 9.5 45 | 46 | - name: Setup Node.js 22 47 | uses: actions/setup-node@v6 48 | with: 49 | node-version: '22.x' 50 | cache: pnpm 51 | registry-url: 'https://registry.npmjs.org' 52 | 53 | - name: Configure pnpm 54 | run: | 55 | pnpm config set auto-install-peers true 56 | pnpm config set exclude-links-from-lockfile true 57 | 58 | - name: Update npm 59 | run: | 60 | npm install -g npm@^11.6 61 | npm --version 62 | 63 | - name: Install dependencies 64 | run: pnpm install --frozen-lockfile 65 | 66 | - name: Create new versions 67 | run: pnpm run version 68 | env: 69 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 70 | 71 | - name: Release new versions 72 | uses: changesets/action@v1 73 | with: 74 | publish: pnpm run publish 75 | createGithubReleases: true 76 | env: 77 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 78 | PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} 79 | NPM_TOKEN: "" # See https://github.com/changesets/changesets/issues/1152#issuecomment-3190884868 80 | 81 | - name: Update lock file 82 | run: pnpm i --no-link --no-frozen-lockfile 83 | 84 | - name: Commit new versions 85 | run: | 86 | git config user.name "github-actions[bot]" 87 | git config user.email "github-actions[bot]@users.noreply.github.com" 88 | git commit -am "[skip ci] Release new versions" || exit 0 89 | git push 90 | env: 91 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 92 | -------------------------------------------------------------------------------- /packages/js/src/index.ts: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | import { Sandbox } from "@e2b/code-interpreter"; 3 | import { Server } from "@modelcontextprotocol/sdk/server/index.js"; 4 | import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; 5 | import { 6 | ListToolsRequestSchema, 7 | CallToolRequestSchema, 8 | ErrorCode, 9 | McpError, 10 | } from "@modelcontextprotocol/sdk/types.js"; 11 | import { z } from "zod"; 12 | import { zodToJsonSchema } from "zod-to-json-schema"; 13 | import dotenv from "dotenv"; 14 | 15 | dotenv.config(); 16 | 17 | const toolSchema = z.object({ 18 | code: z.string(), 19 | }); 20 | 21 | class E2BServer { 22 | private server: Server; 23 | 24 | constructor() { 25 | this.server = new Server( 26 | { 27 | name: "e2b-mcp-server", 28 | version: "0.1.0", 29 | }, 30 | { 31 | capabilities: { 32 | resources: {}, 33 | tools: {}, 34 | }, 35 | } 36 | ); 37 | 38 | this.setupHandlers(); 39 | this.setupErrorHandling(); 40 | } 41 | 42 | private setupErrorHandling(): void { 43 | this.server.onerror = (error) => { 44 | console.error("[MCP Error]", error); 45 | }; 46 | 47 | process.on("SIGINT", async () => { 48 | await this.server.close(); 49 | process.exit(0); 50 | }); 51 | } 52 | 53 | private setupHandlers(): void { 54 | this.setupToolHandlers(); 55 | } 56 | 57 | private setupToolHandlers(): void { 58 | this.server.setRequestHandler(ListToolsRequestSchema, async () => ({ 59 | tools: [ 60 | { 61 | name: "run_code", 62 | description: 63 | "Run python code in a secure sandbox by E2B. Using the Jupyter Notebook syntax.", 64 | inputSchema: zodToJsonSchema(toolSchema), 65 | }, 66 | ], 67 | })); 68 | 69 | this.server.setRequestHandler(CallToolRequestSchema, async (request) => { 70 | if (request.params.name !== "run_code") { 71 | throw new McpError( 72 | ErrorCode.MethodNotFound, 73 | `Unknown tool: ${request.params.name}` 74 | ); 75 | } 76 | 77 | const parsed = toolSchema.safeParse(request.params.arguments); 78 | if (!parsed.success) { 79 | throw new McpError( 80 | ErrorCode.InvalidParams, 81 | "Invalid code interpreter arguments" 82 | ); 83 | } 84 | 85 | const { code } = parsed.data; 86 | 87 | const sandbox = await Sandbox.create(); 88 | const { results, logs } = await sandbox.runCode(code); 89 | 90 | return { 91 | content: [ 92 | { 93 | type: "text", 94 | text: JSON.stringify({ results, logs }, null, 2), 95 | }, 96 | ], 97 | }; 98 | }); 99 | } 100 | 101 | async run(): Promise { 102 | const transport = new StdioServerTransport(); 103 | await this.server.connect(transport); 104 | 105 | // Although this is just an informative message, we must log to stderr, 106 | // to avoid interfering with MCP communication that happens on stdout 107 | // console.error("E2B MCP server running on stdio"); 108 | } 109 | } 110 | 111 | const server = new E2BServer(); 112 | server.run().catch(console.error); 113 | -------------------------------------------------------------------------------- /packages/python/.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | share/python-wheels/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | MANIFEST 28 | 29 | # PyInstaller 30 | # Usually these files are written by a python script from a template 31 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 32 | *.manifest 33 | *.spec 34 | 35 | # Installer logs 36 | pip-log.txt 37 | pip-delete-this-directory.txt 38 | 39 | # Unit test / coverage reports 40 | htmlcov/ 41 | .tox/ 42 | .nox/ 43 | .coverage 44 | .coverage.* 45 | .cache 46 | nosetests.xml 47 | coverage.xml 48 | *.cover 49 | *.py,cover 50 | .hypothesis/ 51 | .pytest_cache/ 52 | cover/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | .pybuilder/ 76 | target/ 77 | 78 | # Jupyter Notebook 79 | .ipynb_checkpoints 80 | 81 | # IPython 82 | profile_default/ 83 | ipython_config.py 84 | 85 | # pyenv 86 | # For a library or package, you might want to ignore these files since the code is 87 | # intended to run in multiple environments; otherwise, check them in: 88 | # .python-version 89 | 90 | # pipenv 91 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 92 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 93 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 94 | # install all needed dependencies. 95 | #Pipfile.lock 96 | 97 | # poetry 98 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. 99 | # This is especially recommended for binary packages to ensure reproducibility, and is more 100 | # commonly ignored for libraries. 101 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control 102 | #poetry.lock 103 | 104 | # pdm 105 | # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. 106 | #pdm.lock 107 | # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it 108 | # in version control. 109 | # https://pdm.fming.dev/latest/usage/project/#working-with-version-control 110 | .pdm.toml 111 | .pdm-python 112 | .pdm-build/ 113 | 114 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm 115 | __pypackages__/ 116 | 117 | # Celery stuff 118 | celerybeat-schedule 119 | celerybeat.pid 120 | 121 | # SageMath parsed files 122 | *.sage.py 123 | 124 | # Environments 125 | .env 126 | .venv 127 | env/ 128 | venv/ 129 | ENV/ 130 | env.bak/ 131 | venv.bak/ 132 | 133 | # Spyder project settings 134 | .spyderproject 135 | .spyproject 136 | 137 | # Rope project settings 138 | .ropeproject 139 | 140 | # mkdocs documentation 141 | /site 142 | 143 | # mypy 144 | .mypy_cache/ 145 | .dmypy.json 146 | dmypy.json 147 | 148 | # Pyre type checker 149 | .pyre/ 150 | 151 | # pytype static type analyzer 152 | .pytype/ 153 | 154 | # Cython debug symbols 155 | cython_debug/ 156 | 157 | # PyCharm 158 | # JetBrains specific template is maintained in a separate JetBrains.gitignore that can 159 | # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore 160 | # and can be added to the global gitignore or merged into this file. For a more nuclear 161 | # option (not recommended) you can uncomment the following to ignore the entire idea folder. 162 | #.idea/ 163 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright 2023 FoundryLabs, Inc. 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: true 6 | 7 | importers: 8 | 9 | .: 10 | devDependencies: 11 | '@changesets/read': 12 | specifier: ^0.6.2 13 | version: 0.6.2 14 | changeset: 15 | specifier: ^0.2.6 16 | version: 0.2.6 17 | 18 | packages/js: 19 | dependencies: 20 | '@e2b/code-interpreter': 21 | specifier: ^1.0.4 22 | version: 1.0.4 23 | '@modelcontextprotocol/sdk': 24 | specifier: 0.6.0 25 | version: 0.6.0 26 | dotenv: 27 | specifier: ^16.4.5 28 | version: 16.4.7 29 | zod: 30 | specifier: ^3.23.8 31 | version: 3.24.1 32 | zod-to-json-schema: 33 | specifier: ^3.23.5 34 | version: 3.24.1(zod@3.24.1) 35 | devDependencies: 36 | '@types/node': 37 | specifier: ^20.11.24 38 | version: 20.17.10 39 | typescript: 40 | specifier: ^5.3.3 41 | version: 5.7.2 42 | 43 | packages/python: {} 44 | 45 | packages: 46 | 47 | '@babel/runtime@7.27.1': 48 | resolution: {integrity: sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==} 49 | engines: {node: '>=6.9.0'} 50 | 51 | '@bufbuild/protobuf@2.2.3': 52 | resolution: {integrity: sha512-tFQoXHJdkEOSwj5tRIZSPNUuXK3RaR7T1nUrPgbYX1pUbvqqaaZAsfo+NXBPsz5rZMSKVFrgK1WL8Q/MSLvprg==} 53 | 54 | '@changesets/errors@0.2.0': 55 | resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} 56 | 57 | '@changesets/git@3.0.2': 58 | resolution: {integrity: sha512-r1/Kju9Y8OxRRdvna+nxpQIsMsRQn9dhhAZt94FLDeu0Hij2hnOozW8iqnHBgvu+KdnJppCveQwK4odwfw/aWQ==} 59 | 60 | '@changesets/logger@0.1.1': 61 | resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} 62 | 63 | '@changesets/parse@0.4.0': 64 | resolution: {integrity: sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==} 65 | 66 | '@changesets/read@0.6.2': 67 | resolution: {integrity: sha512-wjfQpJvryY3zD61p8jR87mJdyx2FIhEcdXhKUqkja87toMrP/3jtg/Yg29upN+N4Ckf525/uvV7a4tzBlpk6gg==} 68 | 69 | '@changesets/types@4.1.0': 70 | resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} 71 | 72 | '@changesets/types@6.0.0': 73 | resolution: {integrity: sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==} 74 | 75 | '@connectrpc/connect-web@2.0.0-rc.3': 76 | resolution: {integrity: sha512-w88P8Lsn5CCsA7MFRl2e6oLY4J/5toiNtJns/YJrlyQaWOy3RO8pDgkz+iIkG98RPMhj2thuBvsd3Cn4DKKCkw==} 77 | peerDependencies: 78 | '@bufbuild/protobuf': ^2.2.0 79 | '@connectrpc/connect': 2.0.0-rc.3 80 | 81 | '@connectrpc/connect@2.0.0-rc.3': 82 | resolution: {integrity: sha512-ARBt64yEyKbanyRETTjcjJuHr2YXorzQo0etyS5+P6oSeW8xEuzajA9g+zDnMcj1hlX2dQE93foIWQGfpru7gQ==} 83 | peerDependencies: 84 | '@bufbuild/protobuf': ^2.2.0 85 | 86 | '@e2b/code-interpreter@1.0.4': 87 | resolution: {integrity: sha512-8y82UMXBdf/hye8bX2Fn04JlL72rvOenVgsvMZ+cAJqo6Ijdl4EmzzuFpM4mz9s+EJ29+34lGHBp277tiLWuiA==} 88 | engines: {node: '>=18'} 89 | 90 | '@manypkg/find-root@1.1.0': 91 | resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} 92 | 93 | '@manypkg/get-packages@1.1.3': 94 | resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} 95 | 96 | '@modelcontextprotocol/sdk@0.6.0': 97 | resolution: {integrity: sha512-9rsDudGhDtMbvxohPoMMyAUOmEzQsOK+XFchh6gZGqo8sx9sBuZQs+CUttXqa8RZXKDaJRCN2tUtgGof7jRkkw==} 98 | 99 | '@nodelib/fs.scandir@2.1.5': 100 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 101 | engines: {node: '>= 8'} 102 | 103 | '@nodelib/fs.stat@2.0.5': 104 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 105 | engines: {node: '>= 8'} 106 | 107 | '@nodelib/fs.walk@1.2.8': 108 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 109 | engines: {node: '>= 8'} 110 | 111 | '@types/node@12.20.55': 112 | resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} 113 | 114 | '@types/node@20.17.10': 115 | resolution: {integrity: sha512-/jrvh5h6NXhEauFFexRin69nA0uHJ5gwk4iDivp/DeoEua3uwCUto6PC86IpRITBOs4+6i2I56K5x5b6WYGXHA==} 116 | 117 | argparse@1.0.10: 118 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} 119 | 120 | array-union@2.1.0: 121 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 122 | engines: {node: '>=8'} 123 | 124 | better-path-resolve@1.0.0: 125 | resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} 126 | engines: {node: '>=4'} 127 | 128 | braces@3.0.3: 129 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 130 | engines: {node: '>=8'} 131 | 132 | bytes@3.1.2: 133 | resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} 134 | engines: {node: '>= 0.8'} 135 | 136 | changeset@0.2.6: 137 | resolution: {integrity: sha512-d21ym9zLPOKMVhIa8ulJo5IV3QR2NNdK6BWuwg48qJA0XSQaMeDjo1UGThcTn7YDmU08j3UpKyFNvb3zplk8mw==} 138 | 139 | compare-versions@6.1.1: 140 | resolution: {integrity: sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==} 141 | 142 | content-type@1.0.5: 143 | resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} 144 | engines: {node: '>= 0.6'} 145 | 146 | cross-spawn@7.0.6: 147 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 148 | engines: {node: '>= 8'} 149 | 150 | depd@2.0.0: 151 | resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} 152 | engines: {node: '>= 0.8'} 153 | 154 | dir-glob@3.0.1: 155 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 156 | engines: {node: '>=8'} 157 | 158 | dotenv@16.4.7: 159 | resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} 160 | engines: {node: '>=12'} 161 | 162 | e2b@1.0.5: 163 | resolution: {integrity: sha512-0c2xqNQfVcVBmETsd1bXWCYaN3iVl7m81dJVcjB7O2/c15A7t0s/FkydcZGzVvfZchj40/1f09AdjGX6nk1eNQ==} 164 | engines: {node: '>=18'} 165 | 166 | esprima@4.0.1: 167 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 168 | engines: {node: '>=4'} 169 | hasBin: true 170 | 171 | extendable-error@0.1.7: 172 | resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} 173 | 174 | fast-glob@3.3.2: 175 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 176 | engines: {node: '>=8.6.0'} 177 | 178 | fastq@1.17.1: 179 | resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} 180 | 181 | fill-range@7.1.1: 182 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 183 | engines: {node: '>=8'} 184 | 185 | find-up@4.1.0: 186 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} 187 | engines: {node: '>=8'} 188 | 189 | fs-extra@7.0.1: 190 | resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} 191 | engines: {node: '>=6 <7 || >=8'} 192 | 193 | fs-extra@8.1.0: 194 | resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} 195 | engines: {node: '>=6 <7 || >=8'} 196 | 197 | glob-parent@5.1.2: 198 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 199 | engines: {node: '>= 6'} 200 | 201 | globby@11.1.0: 202 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 203 | engines: {node: '>=10'} 204 | 205 | graceful-fs@4.2.11: 206 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 207 | 208 | http-errors@2.0.0: 209 | resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} 210 | engines: {node: '>= 0.8'} 211 | 212 | iconv-lite@0.6.3: 213 | resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} 214 | engines: {node: '>=0.10.0'} 215 | 216 | ignore@5.3.2: 217 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 218 | engines: {node: '>= 4'} 219 | 220 | inherits@2.0.4: 221 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 222 | 223 | is-extglob@2.1.1: 224 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 225 | engines: {node: '>=0.10.0'} 226 | 227 | is-glob@4.0.3: 228 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 229 | engines: {node: '>=0.10.0'} 230 | 231 | is-number@7.0.0: 232 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 233 | engines: {node: '>=0.12.0'} 234 | 235 | is-subdir@1.2.0: 236 | resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} 237 | engines: {node: '>=4'} 238 | 239 | is-windows@1.0.2: 240 | resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} 241 | engines: {node: '>=0.10.0'} 242 | 243 | isexe@2.0.0: 244 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 245 | 246 | js-yaml@3.14.1: 247 | resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} 248 | hasBin: true 249 | 250 | jsonfile@4.0.0: 251 | resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} 252 | 253 | locate-path@5.0.0: 254 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 255 | engines: {node: '>=8'} 256 | 257 | merge2@1.4.1: 258 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 259 | engines: {node: '>= 8'} 260 | 261 | micromatch@4.0.8: 262 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 263 | engines: {node: '>=8.6'} 264 | 265 | openapi-fetch@0.9.8: 266 | resolution: {integrity: sha512-zM6elH0EZStD/gSiNlcPrzXcVQ/pZo3BDvC6CDwRDUt1dDzxlshpmQnpD6cZaJ39THaSmwVCxxRrPKNM1hHrDg==} 267 | 268 | openapi-typescript-helpers@0.0.8: 269 | resolution: {integrity: sha512-1eNjQtbfNi5Z/kFhagDIaIRj6qqDzhjNJKz8cmMW0CVdGwT6e1GLbAfgI0d28VTJa1A8jz82jm/4dG8qNoNS8g==} 270 | 271 | p-filter@2.1.0: 272 | resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} 273 | engines: {node: '>=8'} 274 | 275 | p-limit@2.3.0: 276 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} 277 | engines: {node: '>=6'} 278 | 279 | p-locate@4.1.0: 280 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 281 | engines: {node: '>=8'} 282 | 283 | p-map@2.1.0: 284 | resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} 285 | engines: {node: '>=6'} 286 | 287 | p-try@2.2.0: 288 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 289 | engines: {node: '>=6'} 290 | 291 | path-exists@4.0.0: 292 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 293 | engines: {node: '>=8'} 294 | 295 | path-key@3.1.1: 296 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 297 | engines: {node: '>=8'} 298 | 299 | path-type@4.0.0: 300 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 301 | engines: {node: '>=8'} 302 | 303 | picocolors@1.1.1: 304 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 305 | 306 | picomatch@2.3.1: 307 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 308 | engines: {node: '>=8.6'} 309 | 310 | pify@4.0.1: 311 | resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} 312 | engines: {node: '>=6'} 313 | 314 | platform@1.3.6: 315 | resolution: {integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==} 316 | 317 | queue-microtask@1.2.3: 318 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 319 | 320 | raw-body@3.0.0: 321 | resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==} 322 | engines: {node: '>= 0.8'} 323 | 324 | read-yaml-file@1.1.0: 325 | resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} 326 | engines: {node: '>=6'} 327 | 328 | reusify@1.0.4: 329 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 330 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 331 | 332 | run-parallel@1.2.0: 333 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 334 | 335 | safer-buffer@2.1.2: 336 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 337 | 338 | setprototypeof@1.2.0: 339 | resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} 340 | 341 | shebang-command@2.0.0: 342 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 343 | engines: {node: '>=8'} 344 | 345 | shebang-regex@3.0.0: 346 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 347 | engines: {node: '>=8'} 348 | 349 | signal-exit@4.1.0: 350 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 351 | engines: {node: '>=14'} 352 | 353 | slash@3.0.0: 354 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 355 | engines: {node: '>=8'} 356 | 357 | spawndamnit@3.0.1: 358 | resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==} 359 | 360 | sprintf-js@1.0.3: 361 | resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} 362 | 363 | statuses@2.0.1: 364 | resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} 365 | engines: {node: '>= 0.8'} 366 | 367 | strip-bom@3.0.0: 368 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 369 | engines: {node: '>=4'} 370 | 371 | to-regex-range@5.0.1: 372 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 373 | engines: {node: '>=8.0'} 374 | 375 | toidentifier@1.0.1: 376 | resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} 377 | engines: {node: '>=0.6'} 378 | 379 | typescript@5.7.2: 380 | resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} 381 | engines: {node: '>=14.17'} 382 | hasBin: true 383 | 384 | udc@1.0.1: 385 | resolution: {integrity: sha512-jv+D9de1flsum5QkFtBdjyppCQAdz9kTck/0xST5Vx48T9LL2BYnw0Iw77dSKDQ9KZ/PS3qPO1vfXHDpLZlxcQ==} 386 | 387 | underscore@1.13.7: 388 | resolution: {integrity: sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==} 389 | 390 | undici-types@6.19.8: 391 | resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} 392 | 393 | universalify@0.1.2: 394 | resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} 395 | engines: {node: '>= 4.0.0'} 396 | 397 | unpipe@1.0.0: 398 | resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} 399 | engines: {node: '>= 0.8'} 400 | 401 | which@2.0.2: 402 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 403 | engines: {node: '>= 8'} 404 | hasBin: true 405 | 406 | zod-to-json-schema@3.24.1: 407 | resolution: {integrity: sha512-3h08nf3Vw3Wl3PK+q3ow/lIil81IT2Oa7YpQyUUDsEWbXveMesdfK1xBd2RhCkynwZndAxixji/7SYJJowr62w==} 408 | peerDependencies: 409 | zod: ^3.24.1 410 | 411 | zod@3.24.1: 412 | resolution: {integrity: sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==} 413 | 414 | snapshots: 415 | 416 | '@babel/runtime@7.27.1': {} 417 | 418 | '@bufbuild/protobuf@2.2.3': {} 419 | 420 | '@changesets/errors@0.2.0': 421 | dependencies: 422 | extendable-error: 0.1.7 423 | 424 | '@changesets/git@3.0.2': 425 | dependencies: 426 | '@changesets/errors': 0.2.0 427 | '@manypkg/get-packages': 1.1.3 428 | is-subdir: 1.2.0 429 | micromatch: 4.0.8 430 | spawndamnit: 3.0.1 431 | 432 | '@changesets/logger@0.1.1': 433 | dependencies: 434 | picocolors: 1.1.1 435 | 436 | '@changesets/parse@0.4.0': 437 | dependencies: 438 | '@changesets/types': 6.0.0 439 | js-yaml: 3.14.1 440 | 441 | '@changesets/read@0.6.2': 442 | dependencies: 443 | '@changesets/git': 3.0.2 444 | '@changesets/logger': 0.1.1 445 | '@changesets/parse': 0.4.0 446 | '@changesets/types': 6.0.0 447 | fs-extra: 7.0.1 448 | p-filter: 2.1.0 449 | picocolors: 1.1.1 450 | 451 | '@changesets/types@4.1.0': {} 452 | 453 | '@changesets/types@6.0.0': {} 454 | 455 | '@connectrpc/connect-web@2.0.0-rc.3(@bufbuild/protobuf@2.2.3)(@connectrpc/connect@2.0.0-rc.3(@bufbuild/protobuf@2.2.3))': 456 | dependencies: 457 | '@bufbuild/protobuf': 2.2.3 458 | '@connectrpc/connect': 2.0.0-rc.3(@bufbuild/protobuf@2.2.3) 459 | 460 | '@connectrpc/connect@2.0.0-rc.3(@bufbuild/protobuf@2.2.3)': 461 | dependencies: 462 | '@bufbuild/protobuf': 2.2.3 463 | 464 | '@e2b/code-interpreter@1.0.4': 465 | dependencies: 466 | e2b: 1.0.5 467 | 468 | '@manypkg/find-root@1.1.0': 469 | dependencies: 470 | '@babel/runtime': 7.27.1 471 | '@types/node': 12.20.55 472 | find-up: 4.1.0 473 | fs-extra: 8.1.0 474 | 475 | '@manypkg/get-packages@1.1.3': 476 | dependencies: 477 | '@babel/runtime': 7.27.1 478 | '@changesets/types': 4.1.0 479 | '@manypkg/find-root': 1.1.0 480 | fs-extra: 8.1.0 481 | globby: 11.1.0 482 | read-yaml-file: 1.1.0 483 | 484 | '@modelcontextprotocol/sdk@0.6.0': 485 | dependencies: 486 | content-type: 1.0.5 487 | raw-body: 3.0.0 488 | zod: 3.24.1 489 | 490 | '@nodelib/fs.scandir@2.1.5': 491 | dependencies: 492 | '@nodelib/fs.stat': 2.0.5 493 | run-parallel: 1.2.0 494 | 495 | '@nodelib/fs.stat@2.0.5': {} 496 | 497 | '@nodelib/fs.walk@1.2.8': 498 | dependencies: 499 | '@nodelib/fs.scandir': 2.1.5 500 | fastq: 1.17.1 501 | 502 | '@types/node@12.20.55': {} 503 | 504 | '@types/node@20.17.10': 505 | dependencies: 506 | undici-types: 6.19.8 507 | 508 | argparse@1.0.10: 509 | dependencies: 510 | sprintf-js: 1.0.3 511 | 512 | array-union@2.1.0: {} 513 | 514 | better-path-resolve@1.0.0: 515 | dependencies: 516 | is-windows: 1.0.2 517 | 518 | braces@3.0.3: 519 | dependencies: 520 | fill-range: 7.1.1 521 | 522 | bytes@3.1.2: {} 523 | 524 | changeset@0.2.6: 525 | dependencies: 526 | udc: 1.0.1 527 | underscore: 1.13.7 528 | 529 | compare-versions@6.1.1: {} 530 | 531 | content-type@1.0.5: {} 532 | 533 | cross-spawn@7.0.6: 534 | dependencies: 535 | path-key: 3.1.1 536 | shebang-command: 2.0.0 537 | which: 2.0.2 538 | 539 | depd@2.0.0: {} 540 | 541 | dir-glob@3.0.1: 542 | dependencies: 543 | path-type: 4.0.0 544 | 545 | dotenv@16.4.7: {} 546 | 547 | e2b@1.0.5: 548 | dependencies: 549 | '@bufbuild/protobuf': 2.2.3 550 | '@connectrpc/connect': 2.0.0-rc.3(@bufbuild/protobuf@2.2.3) 551 | '@connectrpc/connect-web': 2.0.0-rc.3(@bufbuild/protobuf@2.2.3)(@connectrpc/connect@2.0.0-rc.3(@bufbuild/protobuf@2.2.3)) 552 | compare-versions: 6.1.1 553 | openapi-fetch: 0.9.8 554 | platform: 1.3.6 555 | 556 | esprima@4.0.1: {} 557 | 558 | extendable-error@0.1.7: {} 559 | 560 | fast-glob@3.3.2: 561 | dependencies: 562 | '@nodelib/fs.stat': 2.0.5 563 | '@nodelib/fs.walk': 1.2.8 564 | glob-parent: 5.1.2 565 | merge2: 1.4.1 566 | micromatch: 4.0.8 567 | 568 | fastq@1.17.1: 569 | dependencies: 570 | reusify: 1.0.4 571 | 572 | fill-range@7.1.1: 573 | dependencies: 574 | to-regex-range: 5.0.1 575 | 576 | find-up@4.1.0: 577 | dependencies: 578 | locate-path: 5.0.0 579 | path-exists: 4.0.0 580 | 581 | fs-extra@7.0.1: 582 | dependencies: 583 | graceful-fs: 4.2.11 584 | jsonfile: 4.0.0 585 | universalify: 0.1.2 586 | 587 | fs-extra@8.1.0: 588 | dependencies: 589 | graceful-fs: 4.2.11 590 | jsonfile: 4.0.0 591 | universalify: 0.1.2 592 | 593 | glob-parent@5.1.2: 594 | dependencies: 595 | is-glob: 4.0.3 596 | 597 | globby@11.1.0: 598 | dependencies: 599 | array-union: 2.1.0 600 | dir-glob: 3.0.1 601 | fast-glob: 3.3.2 602 | ignore: 5.3.2 603 | merge2: 1.4.1 604 | slash: 3.0.0 605 | 606 | graceful-fs@4.2.11: {} 607 | 608 | http-errors@2.0.0: 609 | dependencies: 610 | depd: 2.0.0 611 | inherits: 2.0.4 612 | setprototypeof: 1.2.0 613 | statuses: 2.0.1 614 | toidentifier: 1.0.1 615 | 616 | iconv-lite@0.6.3: 617 | dependencies: 618 | safer-buffer: 2.1.2 619 | 620 | ignore@5.3.2: {} 621 | 622 | inherits@2.0.4: {} 623 | 624 | is-extglob@2.1.1: {} 625 | 626 | is-glob@4.0.3: 627 | dependencies: 628 | is-extglob: 2.1.1 629 | 630 | is-number@7.0.0: {} 631 | 632 | is-subdir@1.2.0: 633 | dependencies: 634 | better-path-resolve: 1.0.0 635 | 636 | is-windows@1.0.2: {} 637 | 638 | isexe@2.0.0: {} 639 | 640 | js-yaml@3.14.1: 641 | dependencies: 642 | argparse: 1.0.10 643 | esprima: 4.0.1 644 | 645 | jsonfile@4.0.0: 646 | optionalDependencies: 647 | graceful-fs: 4.2.11 648 | 649 | locate-path@5.0.0: 650 | dependencies: 651 | p-locate: 4.1.0 652 | 653 | merge2@1.4.1: {} 654 | 655 | micromatch@4.0.8: 656 | dependencies: 657 | braces: 3.0.3 658 | picomatch: 2.3.1 659 | 660 | openapi-fetch@0.9.8: 661 | dependencies: 662 | openapi-typescript-helpers: 0.0.8 663 | 664 | openapi-typescript-helpers@0.0.8: {} 665 | 666 | p-filter@2.1.0: 667 | dependencies: 668 | p-map: 2.1.0 669 | 670 | p-limit@2.3.0: 671 | dependencies: 672 | p-try: 2.2.0 673 | 674 | p-locate@4.1.0: 675 | dependencies: 676 | p-limit: 2.3.0 677 | 678 | p-map@2.1.0: {} 679 | 680 | p-try@2.2.0: {} 681 | 682 | path-exists@4.0.0: {} 683 | 684 | path-key@3.1.1: {} 685 | 686 | path-type@4.0.0: {} 687 | 688 | picocolors@1.1.1: {} 689 | 690 | picomatch@2.3.1: {} 691 | 692 | pify@4.0.1: {} 693 | 694 | platform@1.3.6: {} 695 | 696 | queue-microtask@1.2.3: {} 697 | 698 | raw-body@3.0.0: 699 | dependencies: 700 | bytes: 3.1.2 701 | http-errors: 2.0.0 702 | iconv-lite: 0.6.3 703 | unpipe: 1.0.0 704 | 705 | read-yaml-file@1.1.0: 706 | dependencies: 707 | graceful-fs: 4.2.11 708 | js-yaml: 3.14.1 709 | pify: 4.0.1 710 | strip-bom: 3.0.0 711 | 712 | reusify@1.0.4: {} 713 | 714 | run-parallel@1.2.0: 715 | dependencies: 716 | queue-microtask: 1.2.3 717 | 718 | safer-buffer@2.1.2: {} 719 | 720 | setprototypeof@1.2.0: {} 721 | 722 | shebang-command@2.0.0: 723 | dependencies: 724 | shebang-regex: 3.0.0 725 | 726 | shebang-regex@3.0.0: {} 727 | 728 | signal-exit@4.1.0: {} 729 | 730 | slash@3.0.0: {} 731 | 732 | spawndamnit@3.0.1: 733 | dependencies: 734 | cross-spawn: 7.0.6 735 | signal-exit: 4.1.0 736 | 737 | sprintf-js@1.0.3: {} 738 | 739 | statuses@2.0.1: {} 740 | 741 | strip-bom@3.0.0: {} 742 | 743 | to-regex-range@5.0.1: 744 | dependencies: 745 | is-number: 7.0.0 746 | 747 | toidentifier@1.0.1: {} 748 | 749 | typescript@5.7.2: {} 750 | 751 | udc@1.0.1: {} 752 | 753 | underscore@1.13.7: {} 754 | 755 | undici-types@6.19.8: {} 756 | 757 | universalify@0.1.2: {} 758 | 759 | unpipe@1.0.0: {} 760 | 761 | which@2.0.2: 762 | dependencies: 763 | isexe: 2.0.0 764 | 765 | zod-to-json-schema@3.24.1(zod@3.24.1): 766 | dependencies: 767 | zod: 3.24.1 768 | 769 | zod@3.24.1: {} 770 | -------------------------------------------------------------------------------- /packages/python/poetry.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Poetry 2.2.1 and should not be changed by hand. 2 | 3 | [[package]] 4 | name = "annotated-types" 5 | version = "0.7.0" 6 | description = "Reusable constraint types to use with typing.Annotated" 7 | optional = false 8 | python-versions = ">=3.8" 9 | groups = ["main"] 10 | files = [ 11 | {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, 12 | {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, 13 | ] 14 | 15 | [[package]] 16 | name = "anyio" 17 | version = "4.9.0" 18 | description = "High level compatibility layer for multiple asynchronous event loop implementations" 19 | optional = false 20 | python-versions = ">=3.9" 21 | groups = ["main"] 22 | files = [ 23 | {file = "anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c"}, 24 | {file = "anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028"}, 25 | ] 26 | 27 | [package.dependencies] 28 | exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} 29 | idna = ">=2.8" 30 | sniffio = ">=1.1" 31 | typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""} 32 | 33 | [package.extras] 34 | doc = ["Sphinx (>=8.2,<9.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"] 35 | test = ["anyio[trio]", "blockbuster (>=1.5.23)", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1) ; python_version >= \"3.10\"", "uvloop (>=0.21) ; platform_python_implementation == \"CPython\" and platform_system != \"Windows\" and python_version < \"3.14\""] 36 | trio = ["trio (>=0.26.1)"] 37 | 38 | [[package]] 39 | name = "attrs" 40 | version = "25.3.0" 41 | description = "Classes Without Boilerplate" 42 | optional = false 43 | python-versions = ">=3.8" 44 | groups = ["main"] 45 | files = [ 46 | {file = "attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3"}, 47 | {file = "attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b"}, 48 | ] 49 | 50 | [package.extras] 51 | benchmark = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] 52 | cov = ["cloudpickle ; platform_python_implementation == \"CPython\"", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] 53 | dev = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pre-commit-uv", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] 54 | docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier"] 55 | tests = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] 56 | tests-mypy = ["mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\""] 57 | 58 | [[package]] 59 | name = "certifi" 60 | version = "2025.1.31" 61 | description = "Python package for providing Mozilla's CA Bundle." 62 | optional = false 63 | python-versions = ">=3.6" 64 | groups = ["main"] 65 | files = [ 66 | {file = "certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe"}, 67 | {file = "certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651"}, 68 | ] 69 | 70 | [[package]] 71 | name = "click" 72 | version = "8.1.8" 73 | description = "Composable command line interface toolkit" 74 | optional = false 75 | python-versions = ">=3.7" 76 | groups = ["main"] 77 | markers = "sys_platform != \"emscripten\"" 78 | files = [ 79 | {file = "click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"}, 80 | {file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"}, 81 | ] 82 | 83 | [package.dependencies] 84 | colorama = {version = "*", markers = "platform_system == \"Windows\""} 85 | 86 | [[package]] 87 | name = "colorama" 88 | version = "0.4.6" 89 | description = "Cross-platform colored terminal text." 90 | optional = false 91 | python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" 92 | groups = ["main"] 93 | markers = "sys_platform != \"emscripten\" and platform_system == \"Windows\"" 94 | files = [ 95 | {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, 96 | {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, 97 | ] 98 | 99 | [[package]] 100 | name = "e2b" 101 | version = "1.3.2" 102 | description = "E2B SDK that give agents cloud environments" 103 | optional = false 104 | python-versions = "<4.0,>=3.9" 105 | groups = ["main"] 106 | files = [ 107 | {file = "e2b-1.3.2-py3-none-any.whl", hash = "sha256:fd4bf26b4ebcccbe7def81d08d130c5d23e1d065b3180cb39c19acd7909b9ed6"}, 108 | {file = "e2b-1.3.2.tar.gz", hash = "sha256:9663988589fad20ff552c73fac39329f80df4c07b6446769971a1defaad2bdd5"}, 109 | ] 110 | 111 | [package.dependencies] 112 | attrs = ">=23.2.0" 113 | httpcore = ">=1.0.5,<2.0.0" 114 | httpx = ">=0.27.0,<1.0.0" 115 | packaging = ">=24.1" 116 | protobuf = ">=3.20.0,<6.0.0" 117 | python-dateutil = ">=2.8.2" 118 | typing-extensions = ">=4.1.0" 119 | 120 | [[package]] 121 | name = "e2b-code-interpreter" 122 | version = "1.2.0" 123 | description = "E2B Code Interpreter - Stateful code execution" 124 | optional = false 125 | python-versions = "<4.0,>=3.9" 126 | groups = ["main"] 127 | files = [ 128 | {file = "e2b_code_interpreter-1.2.0-py3-none-any.whl", hash = "sha256:4f94ba29eceada30ec7d379f76b243d69b76da6b67324b986778743346446505"}, 129 | {file = "e2b_code_interpreter-1.2.0.tar.gz", hash = "sha256:9e02d043ab5986232a684018d718014bd5038b421b04a8726952094ef0387e78"}, 130 | ] 131 | 132 | [package.dependencies] 133 | attrs = ">=21.3.0" 134 | e2b = ">=1.3.1,<2.0.0" 135 | httpx = ">=0.20.0,<1.0.0" 136 | 137 | [[package]] 138 | name = "exceptiongroup" 139 | version = "1.2.2" 140 | description = "Backport of PEP 654 (exception groups)" 141 | optional = false 142 | python-versions = ">=3.7" 143 | groups = ["main"] 144 | markers = "python_version == \"3.10\"" 145 | files = [ 146 | {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, 147 | {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, 148 | ] 149 | 150 | [package.extras] 151 | test = ["pytest (>=6)"] 152 | 153 | [[package]] 154 | name = "h11" 155 | version = "0.16.0" 156 | description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" 157 | optional = false 158 | python-versions = ">=3.8" 159 | groups = ["main"] 160 | files = [ 161 | {file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86"}, 162 | {file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1"}, 163 | ] 164 | 165 | [[package]] 166 | name = "httpcore" 167 | version = "1.0.9" 168 | description = "A minimal low-level HTTP client." 169 | optional = false 170 | python-versions = ">=3.8" 171 | groups = ["main"] 172 | files = [ 173 | {file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55"}, 174 | {file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8"}, 175 | ] 176 | 177 | [package.dependencies] 178 | certifi = "*" 179 | h11 = ">=0.16" 180 | 181 | [package.extras] 182 | asyncio = ["anyio (>=4.0,<5.0)"] 183 | http2 = ["h2 (>=3,<5)"] 184 | socks = ["socksio (==1.*)"] 185 | trio = ["trio (>=0.22.0,<1.0)"] 186 | 187 | [[package]] 188 | name = "httpx" 189 | version = "0.28.1" 190 | description = "The next generation HTTP client." 191 | optional = false 192 | python-versions = ">=3.8" 193 | groups = ["main"] 194 | files = [ 195 | {file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"}, 196 | {file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"}, 197 | ] 198 | 199 | [package.dependencies] 200 | anyio = "*" 201 | certifi = "*" 202 | httpcore = "==1.*" 203 | idna = "*" 204 | 205 | [package.extras] 206 | brotli = ["brotli ; platform_python_implementation == \"CPython\"", "brotlicffi ; platform_python_implementation != \"CPython\""] 207 | cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] 208 | http2 = ["h2 (>=3,<5)"] 209 | socks = ["socksio (==1.*)"] 210 | zstd = ["zstandard (>=0.18.0)"] 211 | 212 | [[package]] 213 | name = "httpx-sse" 214 | version = "0.4.0" 215 | description = "Consume Server-Sent Event (SSE) messages with HTTPX." 216 | optional = false 217 | python-versions = ">=3.8" 218 | groups = ["main"] 219 | files = [ 220 | {file = "httpx-sse-0.4.0.tar.gz", hash = "sha256:1e81a3a3070ce322add1d3529ed42eb5f70817f45ed6ec915ab753f961139721"}, 221 | {file = "httpx_sse-0.4.0-py3-none-any.whl", hash = "sha256:f329af6eae57eaa2bdfd962b42524764af68075ea87370a2de920af5341e318f"}, 222 | ] 223 | 224 | [[package]] 225 | name = "idna" 226 | version = "3.10" 227 | description = "Internationalized Domain Names in Applications (IDNA)" 228 | optional = false 229 | python-versions = ">=3.6" 230 | groups = ["main"] 231 | files = [ 232 | {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, 233 | {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, 234 | ] 235 | 236 | [package.extras] 237 | all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] 238 | 239 | [[package]] 240 | name = "jsonschema" 241 | version = "4.24.0" 242 | description = "An implementation of JSON Schema validation for Python" 243 | optional = false 244 | python-versions = ">=3.9" 245 | groups = ["main"] 246 | files = [ 247 | {file = "jsonschema-4.24.0-py3-none-any.whl", hash = "sha256:a462455f19f5faf404a7902952b6f0e3ce868f3ee09a359b05eca6673bd8412d"}, 248 | {file = "jsonschema-4.24.0.tar.gz", hash = "sha256:0b4e8069eb12aedfa881333004bccaec24ecef5a8a6a4b6df142b2cc9599d196"}, 249 | ] 250 | 251 | [package.dependencies] 252 | attrs = ">=22.2.0" 253 | jsonschema-specifications = ">=2023.03.6" 254 | referencing = ">=0.28.4" 255 | rpds-py = ">=0.7.1" 256 | 257 | [package.extras] 258 | format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] 259 | format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=24.6.0)"] 260 | 261 | [[package]] 262 | name = "jsonschema-specifications" 263 | version = "2025.4.1" 264 | description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" 265 | optional = false 266 | python-versions = ">=3.9" 267 | groups = ["main"] 268 | files = [ 269 | {file = "jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af"}, 270 | {file = "jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608"}, 271 | ] 272 | 273 | [package.dependencies] 274 | referencing = ">=0.31.0" 275 | 276 | [[package]] 277 | name = "mcp" 278 | version = "1.10.0" 279 | description = "Model Context Protocol SDK" 280 | optional = false 281 | python-versions = ">=3.10" 282 | groups = ["main"] 283 | files = [ 284 | {file = "mcp-1.10.0-py3-none-any.whl", hash = "sha256:925c45482d75b1b6f11febddf9736d55edf7739c7ea39b583309f6651cbc9e5c"}, 285 | {file = "mcp-1.10.0.tar.gz", hash = "sha256:91fb1623c3faf14577623d14755d3213db837c5da5dae85069e1b59124cbe0e9"}, 286 | ] 287 | 288 | [package.dependencies] 289 | anyio = ">=4.5" 290 | httpx = ">=0.27" 291 | httpx-sse = ">=0.4" 292 | jsonschema = ">=4.20.0" 293 | pydantic = ">=2.7.2,<3.0.0" 294 | pydantic-settings = ">=2.5.2" 295 | python-multipart = ">=0.0.9" 296 | sse-starlette = ">=1.6.1" 297 | starlette = ">=0.27" 298 | uvicorn = {version = ">=0.23.1", markers = "sys_platform != \"emscripten\""} 299 | 300 | [package.extras] 301 | cli = ["python-dotenv (>=1.0.0)", "typer (>=0.12.4)"] 302 | rich = ["rich (>=13.9.4)"] 303 | ws = ["websockets (>=15.0.1)"] 304 | 305 | [[package]] 306 | name = "packaging" 307 | version = "24.2" 308 | description = "Core utilities for Python packages" 309 | optional = false 310 | python-versions = ">=3.8" 311 | groups = ["main"] 312 | files = [ 313 | {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, 314 | {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, 315 | ] 316 | 317 | [[package]] 318 | name = "protobuf" 319 | version = "5.29.5" 320 | description = "" 321 | optional = false 322 | python-versions = ">=3.8" 323 | groups = ["main"] 324 | files = [ 325 | {file = "protobuf-5.29.5-cp310-abi3-win32.whl", hash = "sha256:3f1c6468a2cfd102ff4703976138844f78ebd1fb45f49011afc5139e9e283079"}, 326 | {file = "protobuf-5.29.5-cp310-abi3-win_amd64.whl", hash = "sha256:3f76e3a3675b4a4d867b52e4a5f5b78a2ef9565549d4037e06cf7b0942b1d3fc"}, 327 | {file = "protobuf-5.29.5-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e38c5add5a311f2a6eb0340716ef9b039c1dfa428b28f25a7838ac329204a671"}, 328 | {file = "protobuf-5.29.5-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:fa18533a299d7ab6c55a238bf8629311439995f2e7eca5caaff08663606e9015"}, 329 | {file = "protobuf-5.29.5-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:63848923da3325e1bf7e9003d680ce6e14b07e55d0473253a690c3a8b8fd6e61"}, 330 | {file = "protobuf-5.29.5-cp38-cp38-win32.whl", hash = "sha256:ef91363ad4faba7b25d844ef1ada59ff1604184c0bcd8b39b8a6bef15e1af238"}, 331 | {file = "protobuf-5.29.5-cp38-cp38-win_amd64.whl", hash = "sha256:7318608d56b6402d2ea7704ff1e1e4597bee46d760e7e4dd42a3d45e24b87f2e"}, 332 | {file = "protobuf-5.29.5-cp39-cp39-win32.whl", hash = "sha256:6f642dc9a61782fa72b90878af134c5afe1917c89a568cd3476d758d3c3a0736"}, 333 | {file = "protobuf-5.29.5-cp39-cp39-win_amd64.whl", hash = "sha256:470f3af547ef17847a28e1f47200a1cbf0ba3ff57b7de50d22776607cd2ea353"}, 334 | {file = "protobuf-5.29.5-py3-none-any.whl", hash = "sha256:6cf42630262c59b2d8de33954443d94b746c952b01434fc58a417fdbd2e84bd5"}, 335 | {file = "protobuf-5.29.5.tar.gz", hash = "sha256:bc1463bafd4b0929216c35f437a8e28731a2b7fe3d98bb77a600efced5a15c84"}, 336 | ] 337 | 338 | [[package]] 339 | name = "pydantic" 340 | version = "2.10.6" 341 | description = "Data validation using Python type hints" 342 | optional = false 343 | python-versions = ">=3.8" 344 | groups = ["main"] 345 | files = [ 346 | {file = "pydantic-2.10.6-py3-none-any.whl", hash = "sha256:427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584"}, 347 | {file = "pydantic-2.10.6.tar.gz", hash = "sha256:ca5daa827cce33de7a42be142548b0096bf05a7e7b365aebfa5f8eeec7128236"}, 348 | ] 349 | 350 | [package.dependencies] 351 | annotated-types = ">=0.6.0" 352 | pydantic-core = "2.27.2" 353 | typing-extensions = ">=4.12.2" 354 | 355 | [package.extras] 356 | email = ["email-validator (>=2.0.0)"] 357 | timezone = ["tzdata ; python_version >= \"3.9\" and platform_system == \"Windows\""] 358 | 359 | [[package]] 360 | name = "pydantic-core" 361 | version = "2.27.2" 362 | description = "Core functionality for Pydantic validation and serialization" 363 | optional = false 364 | python-versions = ">=3.8" 365 | groups = ["main"] 366 | files = [ 367 | {file = "pydantic_core-2.27.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2d367ca20b2f14095a8f4fa1210f5a7b78b8a20009ecced6b12818f455b1e9fa"}, 368 | {file = "pydantic_core-2.27.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:491a2b73db93fab69731eaee494f320faa4e093dbed776be1a829c2eb222c34c"}, 369 | {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7969e133a6f183be60e9f6f56bfae753585680f3b7307a8e555a948d443cc05a"}, 370 | {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3de9961f2a346257caf0aa508a4da705467f53778e9ef6fe744c038119737ef5"}, 371 | {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2bb4d3e5873c37bb3dd58714d4cd0b0e6238cebc4177ac8fe878f8b3aa8e74c"}, 372 | {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:280d219beebb0752699480fe8f1dc61ab6615c2046d76b7ab7ee38858de0a4e7"}, 373 | {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47956ae78b6422cbd46f772f1746799cbb862de838fd8d1fbd34a82e05b0983a"}, 374 | {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:14d4a5c49d2f009d62a2a7140d3064f686d17a5d1a268bc641954ba181880236"}, 375 | {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:337b443af21d488716f8d0b6164de833e788aa6bd7e3a39c005febc1284f4962"}, 376 | {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:03d0f86ea3184a12f41a2d23f7ccb79cdb5a18e06993f8a45baa8dfec746f0e9"}, 377 | {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7041c36f5680c6e0f08d922aed302e98b3745d97fe1589db0a3eebf6624523af"}, 378 | {file = "pydantic_core-2.27.2-cp310-cp310-win32.whl", hash = "sha256:50a68f3e3819077be2c98110c1f9dcb3817e93f267ba80a2c05bb4f8799e2ff4"}, 379 | {file = "pydantic_core-2.27.2-cp310-cp310-win_amd64.whl", hash = "sha256:e0fd26b16394ead34a424eecf8a31a1f5137094cabe84a1bcb10fa6ba39d3d31"}, 380 | {file = "pydantic_core-2.27.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8e10c99ef58cfdf2a66fc15d66b16c4a04f62bca39db589ae8cba08bc55331bc"}, 381 | {file = "pydantic_core-2.27.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:26f32e0adf166a84d0cb63be85c562ca8a6fa8de28e5f0d92250c6b7e9e2aff7"}, 382 | {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c19d1ea0673cd13cc2f872f6c9ab42acc4e4f492a7ca9d3795ce2b112dd7e15"}, 383 | {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e68c4446fe0810e959cdff46ab0a41ce2f2c86d227d96dc3847af0ba7def306"}, 384 | {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9640b0059ff4f14d1f37321b94061c6db164fbe49b334b31643e0528d100d99"}, 385 | {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:40d02e7d45c9f8af700f3452f329ead92da4c5f4317ca9b896de7ce7199ea459"}, 386 | {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c1fd185014191700554795c99b347d64f2bb637966c4cfc16998a0ca700d048"}, 387 | {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d81d2068e1c1228a565af076598f9e7451712700b673de8f502f0334f281387d"}, 388 | {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1a4207639fb02ec2dbb76227d7c751a20b1a6b4bc52850568e52260cae64ca3b"}, 389 | {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:3de3ce3c9ddc8bbd88f6e0e304dea0e66d843ec9de1b0042b0911c1663ffd474"}, 390 | {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:30c5f68ded0c36466acede341551106821043e9afaad516adfb6e8fa80a4e6a6"}, 391 | {file = "pydantic_core-2.27.2-cp311-cp311-win32.whl", hash = "sha256:c70c26d2c99f78b125a3459f8afe1aed4d9687c24fd677c6a4436bc042e50d6c"}, 392 | {file = "pydantic_core-2.27.2-cp311-cp311-win_amd64.whl", hash = "sha256:08e125dbdc505fa69ca7d9c499639ab6407cfa909214d500897d02afb816e7cc"}, 393 | {file = "pydantic_core-2.27.2-cp311-cp311-win_arm64.whl", hash = "sha256:26f0d68d4b235a2bae0c3fc585c585b4ecc51382db0e3ba402a22cbc440915e4"}, 394 | {file = "pydantic_core-2.27.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9e0c8cfefa0ef83b4da9588448b6d8d2a2bf1a53c3f1ae5fca39eb3061e2f0b0"}, 395 | {file = "pydantic_core-2.27.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:83097677b8e3bd7eaa6775720ec8e0405f1575015a463285a92bfdfe254529ef"}, 396 | {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:172fce187655fece0c90d90a678424b013f8fbb0ca8b036ac266749c09438cb7"}, 397 | {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:519f29f5213271eeeeb3093f662ba2fd512b91c5f188f3bb7b27bc5973816934"}, 398 | {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05e3a55d124407fffba0dd6b0c0cd056d10e983ceb4e5dbd10dda135c31071d6"}, 399 | {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c3ed807c7b91de05e63930188f19e921d1fe90de6b4f5cd43ee7fcc3525cb8c"}, 400 | {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fb4aadc0b9a0c063206846d603b92030eb6f03069151a625667f982887153e2"}, 401 | {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28ccb213807e037460326424ceb8b5245acb88f32f3d2777427476e1b32c48c4"}, 402 | {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:de3cd1899e2c279b140adde9357c4495ed9d47131b4a4eaff9052f23398076b3"}, 403 | {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:220f892729375e2d736b97d0e51466252ad84c51857d4d15f5e9692f9ef12be4"}, 404 | {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a0fcd29cd6b4e74fe8ddd2c90330fd8edf2e30cb52acda47f06dd615ae72da57"}, 405 | {file = "pydantic_core-2.27.2-cp312-cp312-win32.whl", hash = "sha256:1e2cb691ed9834cd6a8be61228471d0a503731abfb42f82458ff27be7b2186fc"}, 406 | {file = "pydantic_core-2.27.2-cp312-cp312-win_amd64.whl", hash = "sha256:cc3f1a99a4f4f9dd1de4fe0312c114e740b5ddead65bb4102884b384c15d8bc9"}, 407 | {file = "pydantic_core-2.27.2-cp312-cp312-win_arm64.whl", hash = "sha256:3911ac9284cd8a1792d3cb26a2da18f3ca26c6908cc434a18f730dc0db7bfa3b"}, 408 | {file = "pydantic_core-2.27.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7d14bd329640e63852364c306f4d23eb744e0f8193148d4044dd3dacdaacbd8b"}, 409 | {file = "pydantic_core-2.27.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82f91663004eb8ed30ff478d77c4d1179b3563df6cdb15c0817cd1cdaf34d154"}, 410 | {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71b24c7d61131bb83df10cc7e687433609963a944ccf45190cfc21e0887b08c9"}, 411 | {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa8e459d4954f608fa26116118bb67f56b93b209c39b008277ace29937453dc9"}, 412 | {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce8918cbebc8da707ba805b7fd0b382816858728ae7fe19a942080c24e5b7cd1"}, 413 | {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eda3f5c2a021bbc5d976107bb302e0131351c2ba54343f8a496dc8783d3d3a6a"}, 414 | {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8086fa684c4775c27f03f062cbb9eaa6e17f064307e86b21b9e0abc9c0f02e"}, 415 | {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8d9b3388db186ba0c099a6d20f0604a44eabdeef1777ddd94786cdae158729e4"}, 416 | {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7a66efda2387de898c8f38c0cf7f14fca0b51a8ef0b24bfea5849f1b3c95af27"}, 417 | {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:18a101c168e4e092ab40dbc2503bdc0f62010e95d292b27827871dc85450d7ee"}, 418 | {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ba5dd002f88b78a4215ed2f8ddbdf85e8513382820ba15ad5ad8955ce0ca19a1"}, 419 | {file = "pydantic_core-2.27.2-cp313-cp313-win32.whl", hash = "sha256:1ebaf1d0481914d004a573394f4be3a7616334be70261007e47c2a6fe7e50130"}, 420 | {file = "pydantic_core-2.27.2-cp313-cp313-win_amd64.whl", hash = "sha256:953101387ecf2f5652883208769a79e48db18c6df442568a0b5ccd8c2723abee"}, 421 | {file = "pydantic_core-2.27.2-cp313-cp313-win_arm64.whl", hash = "sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b"}, 422 | {file = "pydantic_core-2.27.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d3e8d504bdd3f10835468f29008d72fc8359d95c9c415ce6e767203db6127506"}, 423 | {file = "pydantic_core-2.27.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:521eb9b7f036c9b6187f0b47318ab0d7ca14bd87f776240b90b21c1f4f149320"}, 424 | {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85210c4d99a0114f5a9481b44560d7d1e35e32cc5634c656bc48e590b669b145"}, 425 | {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d716e2e30c6f140d7560ef1538953a5cd1a87264c737643d481f2779fc247fe1"}, 426 | {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f66d89ba397d92f840f8654756196d93804278457b5fbede59598a1f9f90b228"}, 427 | {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:669e193c1c576a58f132e3158f9dfa9662969edb1a250c54d8fa52590045f046"}, 428 | {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdbe7629b996647b99c01b37f11170a57ae675375b14b8c13b8518b8320ced5"}, 429 | {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d262606bf386a5ba0b0af3b97f37c83d7011439e3dc1a9298f21efb292e42f1a"}, 430 | {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:cabb9bcb7e0d97f74df8646f34fc76fbf793b7f6dc2438517d7a9e50eee4f14d"}, 431 | {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_armv7l.whl", hash = "sha256:d2d63f1215638d28221f664596b1ccb3944f6e25dd18cd3b86b0a4c408d5ebb9"}, 432 | {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bca101c00bff0adb45a833f8451b9105d9df18accb8743b08107d7ada14bd7da"}, 433 | {file = "pydantic_core-2.27.2-cp38-cp38-win32.whl", hash = "sha256:f6f8e111843bbb0dee4cb6594cdc73e79b3329b526037ec242a3e49012495b3b"}, 434 | {file = "pydantic_core-2.27.2-cp38-cp38-win_amd64.whl", hash = "sha256:fd1aea04935a508f62e0d0ef1f5ae968774a32afc306fb8545e06f5ff5cdf3ad"}, 435 | {file = "pydantic_core-2.27.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c10eb4f1659290b523af58fa7cffb452a61ad6ae5613404519aee4bfbf1df993"}, 436 | {file = "pydantic_core-2.27.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ef592d4bad47296fb11f96cd7dc898b92e795032b4894dfb4076cfccd43a9308"}, 437 | {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c61709a844acc6bf0b7dce7daae75195a10aac96a596ea1b776996414791ede4"}, 438 | {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c5f762659e47fdb7b16956c71598292f60a03aa92f8b6351504359dbdba6cf"}, 439 | {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c9775e339e42e79ec99c441d9730fccf07414af63eac2f0e48e08fd38a64d76"}, 440 | {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57762139821c31847cfb2df63c12f725788bd9f04bc2fb392790959b8f70f118"}, 441 | {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d1e85068e818c73e048fe28cfc769040bb1f475524f4745a5dc621f75ac7630"}, 442 | {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:097830ed52fd9e427942ff3b9bc17fab52913b2f50f2880dc4a5611446606a54"}, 443 | {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:044a50963a614ecfae59bb1eaf7ea7efc4bc62f49ed594e18fa1e5d953c40e9f"}, 444 | {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:4e0b4220ba5b40d727c7f879eac379b822eee5d8fff418e9d3381ee45b3b0362"}, 445 | {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e4f4bb20d75e9325cc9696c6802657b58bc1dbbe3022f32cc2b2b632c3fbb96"}, 446 | {file = "pydantic_core-2.27.2-cp39-cp39-win32.whl", hash = "sha256:cca63613e90d001b9f2f9a9ceb276c308bfa2a43fafb75c8031c4f66039e8c6e"}, 447 | {file = "pydantic_core-2.27.2-cp39-cp39-win_amd64.whl", hash = "sha256:77d1bca19b0f7021b3a982e6f903dcd5b2b06076def36a652e3907f596e29f67"}, 448 | {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2bf14caea37e91198329b828eae1618c068dfb8ef17bb33287a7ad4b61ac314e"}, 449 | {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b0cb791f5b45307caae8810c2023a184c74605ec3bcbb67d13846c28ff731ff8"}, 450 | {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:688d3fd9fcb71f41c4c015c023d12a79d1c4c0732ec9eb35d96e3388a120dcf3"}, 451 | {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d591580c34f4d731592f0e9fe40f9cc1b430d297eecc70b962e93c5c668f15f"}, 452 | {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:82f986faf4e644ffc189a7f1aafc86e46ef70372bb153e7001e8afccc6e54133"}, 453 | {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:bec317a27290e2537f922639cafd54990551725fc844249e64c523301d0822fc"}, 454 | {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:0296abcb83a797db256b773f45773da397da75a08f5fcaef41f2044adec05f50"}, 455 | {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0d75070718e369e452075a6017fbf187f788e17ed67a3abd47fa934d001863d9"}, 456 | {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7e17b560be3c98a8e3aa66ce828bdebb9e9ac6ad5466fba92eb74c4c95cb1151"}, 457 | {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c33939a82924da9ed65dab5a65d427205a73181d8098e79b6b426bdf8ad4e656"}, 458 | {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:00bad2484fa6bda1e216e7345a798bd37c68fb2d97558edd584942aa41b7d278"}, 459 | {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c817e2b40aba42bac6f457498dacabc568c3b7a986fc9ba7c8d9d260b71485fb"}, 460 | {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:251136cdad0cb722e93732cb45ca5299fb56e1344a833640bf93b2803f8d1bfd"}, 461 | {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d2088237af596f0a524d3afc39ab3b036e8adb054ee57cbb1dcf8e09da5b29cc"}, 462 | {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d4041c0b966a84b4ae7a09832eb691a35aec90910cd2dbe7a208de59be77965b"}, 463 | {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:8083d4e875ebe0b864ffef72a4304827015cff328a1be6e22cc850753bfb122b"}, 464 | {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f141ee28a0ad2123b6611b6ceff018039df17f32ada8b534e6aa039545a3efb2"}, 465 | {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7d0c8399fcc1848491f00e0314bd59fb34a9c008761bcb422a057670c3f65e35"}, 466 | {file = "pydantic_core-2.27.2.tar.gz", hash = "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39"}, 467 | ] 468 | 469 | [package.dependencies] 470 | typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" 471 | 472 | [[package]] 473 | name = "pydantic-settings" 474 | version = "2.8.1" 475 | description = "Settings management using Pydantic" 476 | optional = false 477 | python-versions = ">=3.8" 478 | groups = ["main"] 479 | files = [ 480 | {file = "pydantic_settings-2.8.1-py3-none-any.whl", hash = "sha256:81942d5ac3d905f7f3ee1a70df5dfb62d5569c12f51a5a647defc1c3d9ee2e9c"}, 481 | {file = "pydantic_settings-2.8.1.tar.gz", hash = "sha256:d5c663dfbe9db9d5e1c646b2e161da12f0d734d422ee56f567d0ea2cee4e8585"}, 482 | ] 483 | 484 | [package.dependencies] 485 | pydantic = ">=2.7.0" 486 | python-dotenv = ">=0.21.0" 487 | 488 | [package.extras] 489 | azure-key-vault = ["azure-identity (>=1.16.0)", "azure-keyvault-secrets (>=4.8.0)"] 490 | toml = ["tomli (>=2.0.1)"] 491 | yaml = ["pyyaml (>=6.0.1)"] 492 | 493 | [[package]] 494 | name = "python-dateutil" 495 | version = "2.9.0.post0" 496 | description = "Extensions to the standard Python datetime module" 497 | optional = false 498 | python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" 499 | groups = ["main"] 500 | files = [ 501 | {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, 502 | {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, 503 | ] 504 | 505 | [package.dependencies] 506 | six = ">=1.5" 507 | 508 | [[package]] 509 | name = "python-dotenv" 510 | version = "1.0.1" 511 | description = "Read key-value pairs from a .env file and set them as environment variables" 512 | optional = false 513 | python-versions = ">=3.8" 514 | groups = ["main"] 515 | files = [ 516 | {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, 517 | {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, 518 | ] 519 | 520 | [package.extras] 521 | cli = ["click (>=5.0)"] 522 | 523 | [[package]] 524 | name = "python-multipart" 525 | version = "0.0.20" 526 | description = "A streaming multipart parser for Python" 527 | optional = false 528 | python-versions = ">=3.8" 529 | groups = ["main"] 530 | files = [ 531 | {file = "python_multipart-0.0.20-py3-none-any.whl", hash = "sha256:8a62d3a8335e06589fe01f2a3e178cdcc632f3fbe0d492ad9ee0ec35aab1f104"}, 532 | {file = "python_multipart-0.0.20.tar.gz", hash = "sha256:8dd0cab45b8e23064ae09147625994d090fa46f5b0d1e13af944c331a7fa9d13"}, 533 | ] 534 | 535 | [[package]] 536 | name = "referencing" 537 | version = "0.36.2" 538 | description = "JSON Referencing + Python" 539 | optional = false 540 | python-versions = ">=3.9" 541 | groups = ["main"] 542 | files = [ 543 | {file = "referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0"}, 544 | {file = "referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa"}, 545 | ] 546 | 547 | [package.dependencies] 548 | attrs = ">=22.2.0" 549 | rpds-py = ">=0.7.0" 550 | typing-extensions = {version = ">=4.4.0", markers = "python_version < \"3.13\""} 551 | 552 | [[package]] 553 | name = "rpds-py" 554 | version = "0.26.0" 555 | description = "Python bindings to Rust's persistent data structures (rpds)" 556 | optional = false 557 | python-versions = ">=3.9" 558 | groups = ["main"] 559 | files = [ 560 | {file = "rpds_py-0.26.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:4c70c70f9169692b36307a95f3d8c0a9fcd79f7b4a383aad5eaa0e9718b79b37"}, 561 | {file = "rpds_py-0.26.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:777c62479d12395bfb932944e61e915741e364c843afc3196b694db3d669fcd0"}, 562 | {file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec671691e72dff75817386aa02d81e708b5a7ec0dec6669ec05213ff6b77e1bd"}, 563 | {file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6a1cb5d6ce81379401bbb7f6dbe3d56de537fb8235979843f0d53bc2e9815a79"}, 564 | {file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4f789e32fa1fb6a7bf890e0124e7b42d1e60d28ebff57fe806719abb75f0e9a3"}, 565 | {file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c55b0a669976cf258afd718de3d9ad1b7d1fe0a91cd1ab36f38b03d4d4aeaaf"}, 566 | {file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c70d9ec912802ecfd6cd390dadb34a9578b04f9bcb8e863d0a7598ba5e9e7ccc"}, 567 | {file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3021933c2cb7def39d927b9862292e0f4c75a13d7de70eb0ab06efed4c508c19"}, 568 | {file = "rpds_py-0.26.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8a7898b6ca3b7d6659e55cdac825a2e58c638cbf335cde41f4619e290dd0ad11"}, 569 | {file = "rpds_py-0.26.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:12bff2ad9447188377f1b2794772f91fe68bb4bbfa5a39d7941fbebdbf8c500f"}, 570 | {file = "rpds_py-0.26.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:191aa858f7d4902e975d4cf2f2d9243816c91e9605070aeb09c0a800d187e323"}, 571 | {file = "rpds_py-0.26.0-cp310-cp310-win32.whl", hash = "sha256:b37a04d9f52cb76b6b78f35109b513f6519efb481d8ca4c321f6a3b9580b3f45"}, 572 | {file = "rpds_py-0.26.0-cp310-cp310-win_amd64.whl", hash = "sha256:38721d4c9edd3eb6670437d8d5e2070063f305bfa2d5aa4278c51cedcd508a84"}, 573 | {file = "rpds_py-0.26.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:9e8cb77286025bdb21be2941d64ac6ca016130bfdcd228739e8ab137eb4406ed"}, 574 | {file = "rpds_py-0.26.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5e09330b21d98adc8ccb2dbb9fc6cb434e8908d4c119aeaa772cb1caab5440a0"}, 575 | {file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c9c1b92b774b2e68d11193dc39620d62fd8ab33f0a3c77ecdabe19c179cdbc1"}, 576 | {file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:824e6d3503ab990d7090768e4dfd9e840837bae057f212ff9f4f05ec6d1975e7"}, 577 | {file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ad7fd2258228bf288f2331f0a6148ad0186b2e3643055ed0db30990e59817a6"}, 578 | {file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0dc23bbb3e06ec1ea72d515fb572c1fea59695aefbffb106501138762e1e915e"}, 579 | {file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d80bf832ac7b1920ee29a426cdca335f96a2b5caa839811803e999b41ba9030d"}, 580 | {file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0919f38f5542c0a87e7b4afcafab6fd2c15386632d249e9a087498571250abe3"}, 581 | {file = "rpds_py-0.26.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d422b945683e409000c888e384546dbab9009bb92f7c0b456e217988cf316107"}, 582 | {file = "rpds_py-0.26.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:77a7711fa562ba2da1aa757e11024ad6d93bad6ad7ede5afb9af144623e5f76a"}, 583 | {file = "rpds_py-0.26.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:238e8c8610cb7c29460e37184f6799547f7e09e6a9bdbdab4e8edb90986a2318"}, 584 | {file = "rpds_py-0.26.0-cp311-cp311-win32.whl", hash = "sha256:893b022bfbdf26d7bedb083efeea624e8550ca6eb98bf7fea30211ce95b9201a"}, 585 | {file = "rpds_py-0.26.0-cp311-cp311-win_amd64.whl", hash = "sha256:87a5531de9f71aceb8af041d72fc4cab4943648d91875ed56d2e629bef6d4c03"}, 586 | {file = "rpds_py-0.26.0-cp311-cp311-win_arm64.whl", hash = "sha256:de2713f48c1ad57f89ac25b3cb7daed2156d8e822cf0eca9b96a6f990718cc41"}, 587 | {file = "rpds_py-0.26.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:894514d47e012e794f1350f076c427d2347ebf82f9b958d554d12819849a369d"}, 588 | {file = "rpds_py-0.26.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc921b96fa95a097add244da36a1d9e4f3039160d1d30f1b35837bf108c21136"}, 589 | {file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e1157659470aa42a75448b6e943c895be8c70531c43cb78b9ba990778955582"}, 590 | {file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:521ccf56f45bb3a791182dc6b88ae5f8fa079dd705ee42138c76deb1238e554e"}, 591 | {file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9def736773fd56b305c0eef698be5192c77bfa30d55a0e5885f80126c4831a15"}, 592 | {file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cdad4ea3b4513b475e027be79e5a0ceac8ee1c113a1a11e5edc3c30c29f964d8"}, 593 | {file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82b165b07f416bdccf5c84546a484cc8f15137ca38325403864bfdf2b5b72f6a"}, 594 | {file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d04cab0a54b9dba4d278fe955a1390da3cf71f57feb78ddc7cb67cbe0bd30323"}, 595 | {file = "rpds_py-0.26.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:79061ba1a11b6a12743a2b0f72a46aa2758613d454aa6ba4f5a265cc48850158"}, 596 | {file = "rpds_py-0.26.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f405c93675d8d4c5ac87364bb38d06c988e11028a64b52a47158a355079661f3"}, 597 | {file = "rpds_py-0.26.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dafd4c44b74aa4bed4b250f1aed165b8ef5de743bcca3b88fc9619b6087093d2"}, 598 | {file = "rpds_py-0.26.0-cp312-cp312-win32.whl", hash = "sha256:3da5852aad63fa0c6f836f3359647870e21ea96cf433eb393ffa45263a170d44"}, 599 | {file = "rpds_py-0.26.0-cp312-cp312-win_amd64.whl", hash = "sha256:cf47cfdabc2194a669dcf7a8dbba62e37a04c5041d2125fae0233b720da6f05c"}, 600 | {file = "rpds_py-0.26.0-cp312-cp312-win_arm64.whl", hash = "sha256:20ab1ae4fa534f73647aad289003f1104092890849e0266271351922ed5574f8"}, 601 | {file = "rpds_py-0.26.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:696764a5be111b036256c0b18cd29783fab22154690fc698062fc1b0084b511d"}, 602 | {file = "rpds_py-0.26.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1e6c15d2080a63aaed876e228efe4f814bc7889c63b1e112ad46fdc8b368b9e1"}, 603 | {file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:390e3170babf42462739a93321e657444f0862c6d722a291accc46f9d21ed04e"}, 604 | {file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7da84c2c74c0f5bc97d853d9e17bb83e2dcafcff0dc48286916001cc114379a1"}, 605 | {file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c5fe114a6dd480a510b6d3661d09d67d1622c4bf20660a474507aaee7eeeee9"}, 606 | {file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3100b3090269f3a7ea727b06a6080d4eb7439dca4c0e91a07c5d133bb1727ea7"}, 607 | {file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c03c9b0c64afd0320ae57de4c982801271c0c211aa2d37f3003ff5feb75bb04"}, 608 | {file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5963b72ccd199ade6ee493723d18a3f21ba7d5b957017607f815788cef50eaf1"}, 609 | {file = "rpds_py-0.26.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9da4e873860ad5bab3291438525cae80169daecbfafe5657f7f5fb4d6b3f96b9"}, 610 | {file = "rpds_py-0.26.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5afaddaa8e8c7f1f7b4c5c725c0070b6eed0228f705b90a1732a48e84350f4e9"}, 611 | {file = "rpds_py-0.26.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4916dc96489616a6f9667e7526af8fa693c0fdb4f3acb0e5d9f4400eb06a47ba"}, 612 | {file = "rpds_py-0.26.0-cp313-cp313-win32.whl", hash = "sha256:2a343f91b17097c546b93f7999976fd6c9d5900617aa848c81d794e062ab302b"}, 613 | {file = "rpds_py-0.26.0-cp313-cp313-win_amd64.whl", hash = "sha256:0a0b60701f2300c81b2ac88a5fb893ccfa408e1c4a555a77f908a2596eb875a5"}, 614 | {file = "rpds_py-0.26.0-cp313-cp313-win_arm64.whl", hash = "sha256:257d011919f133a4746958257f2c75238e3ff54255acd5e3e11f3ff41fd14256"}, 615 | {file = "rpds_py-0.26.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:529c8156d7506fba5740e05da8795688f87119cce330c244519cf706a4a3d618"}, 616 | {file = "rpds_py-0.26.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f53ec51f9d24e9638a40cabb95078ade8c99251945dad8d57bf4aabe86ecee35"}, 617 | {file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab504c4d654e4a29558eaa5bb8cea5fdc1703ea60a8099ffd9c758472cf913f"}, 618 | {file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fd0641abca296bc1a00183fe44f7fced8807ed49d501f188faa642d0e4975b83"}, 619 | {file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b312fecc1d017b5327afa81d4da1480f51c68810963a7336d92203dbb3d4f1"}, 620 | {file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c741107203954f6fc34d3066d213d0a0c40f7bb5aafd698fb39888af277c70d8"}, 621 | {file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc3e55a7db08dc9a6ed5fb7103019d2c1a38a349ac41901f9f66d7f95750942f"}, 622 | {file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9e851920caab2dbcae311fd28f4313c6953993893eb5c1bb367ec69d9a39e7ed"}, 623 | {file = "rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:dfbf280da5f876d0b00c81f26bedce274e72a678c28845453885a9b3c22ae632"}, 624 | {file = "rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:1cc81d14ddfa53d7f3906694d35d54d9d3f850ef8e4e99ee68bc0d1e5fed9a9c"}, 625 | {file = "rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dca83c498b4650a91efcf7b88d669b170256bf8017a5db6f3e06c2bf031f57e0"}, 626 | {file = "rpds_py-0.26.0-cp313-cp313t-win32.whl", hash = "sha256:4d11382bcaf12f80b51d790dee295c56a159633a8e81e6323b16e55d81ae37e9"}, 627 | {file = "rpds_py-0.26.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ff110acded3c22c033e637dd8896e411c7d3a11289b2edf041f86663dbc791e9"}, 628 | {file = "rpds_py-0.26.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:da619979df60a940cd434084355c514c25cf8eb4cf9a508510682f6c851a4f7a"}, 629 | {file = "rpds_py-0.26.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ea89a2458a1a75f87caabefe789c87539ea4e43b40f18cff526052e35bbb4fdf"}, 630 | {file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feac1045b3327a45944e7dcbeb57530339f6b17baff154df51ef8b0da34c8c12"}, 631 | {file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b818a592bd69bfe437ee8368603d4a2d928c34cffcdf77c2e761a759ffd17d20"}, 632 | {file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a8b0dd8648709b62d9372fc00a57466f5fdeefed666afe3fea5a6c9539a0331"}, 633 | {file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6d3498ad0df07d81112aa6ec6c95a7e7b1ae00929fb73e7ebee0f3faaeabad2f"}, 634 | {file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24a4146ccb15be237fdef10f331c568e1b0e505f8c8c9ed5d67759dac58ac246"}, 635 | {file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a9a63785467b2d73635957d32a4f6e73d5e4df497a16a6392fa066b753e87387"}, 636 | {file = "rpds_py-0.26.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:de4ed93a8c91debfd5a047be327b7cc8b0cc6afe32a716bbbc4aedca9e2a83af"}, 637 | {file = "rpds_py-0.26.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:caf51943715b12af827696ec395bfa68f090a4c1a1d2509eb4e2cb69abbbdb33"}, 638 | {file = "rpds_py-0.26.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:4a59e5bc386de021f56337f757301b337d7ab58baa40174fb150accd480bc953"}, 639 | {file = "rpds_py-0.26.0-cp314-cp314-win32.whl", hash = "sha256:92c8db839367ef16a662478f0a2fe13e15f2227da3c1430a782ad0f6ee009ec9"}, 640 | {file = "rpds_py-0.26.0-cp314-cp314-win_amd64.whl", hash = "sha256:b0afb8cdd034150d4d9f53926226ed27ad15b7f465e93d7468caaf5eafae0d37"}, 641 | {file = "rpds_py-0.26.0-cp314-cp314-win_arm64.whl", hash = "sha256:ca3f059f4ba485d90c8dc75cb5ca897e15325e4e609812ce57f896607c1c0867"}, 642 | {file = "rpds_py-0.26.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:5afea17ab3a126006dc2f293b14ffc7ef3c85336cf451564a0515ed7648033da"}, 643 | {file = "rpds_py-0.26.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:69f0c0a3df7fd3a7eec50a00396104bb9a843ea6d45fcc31c2d5243446ffd7a7"}, 644 | {file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:801a71f70f9813e82d2513c9a96532551fce1e278ec0c64610992c49c04c2dad"}, 645 | {file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:df52098cde6d5e02fa75c1f6244f07971773adb4a26625edd5c18fee906fa84d"}, 646 | {file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9bc596b30f86dc6f0929499c9e574601679d0341a0108c25b9b358a042f51bca"}, 647 | {file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9dfbe56b299cf5875b68eb6f0ebaadc9cac520a1989cac0db0765abfb3709c19"}, 648 | {file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac64f4b2bdb4ea622175c9ab7cf09444e412e22c0e02e906978b3b488af5fde8"}, 649 | {file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:181ef9b6bbf9845a264f9aa45c31836e9f3c1f13be565d0d010e964c661d1e2b"}, 650 | {file = "rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:49028aa684c144ea502a8e847d23aed5e4c2ef7cadfa7d5eaafcb40864844b7a"}, 651 | {file = "rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:e5d524d68a474a9688336045bbf76cb0def88549c1b2ad9dbfec1fb7cfbe9170"}, 652 | {file = "rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c1851f429b822831bd2edcbe0cfd12ee9ea77868f8d3daf267b189371671c80e"}, 653 | {file = "rpds_py-0.26.0-cp314-cp314t-win32.whl", hash = "sha256:7bdb17009696214c3b66bb3590c6d62e14ac5935e53e929bcdbc5a495987a84f"}, 654 | {file = "rpds_py-0.26.0-cp314-cp314t-win_amd64.whl", hash = "sha256:f14440b9573a6f76b4ee4770c13f0b5921f71dde3b6fcb8dabbefd13b7fe05d7"}, 655 | {file = "rpds_py-0.26.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:7a48af25d9b3c15684059d0d1fc0bc30e8eee5ca521030e2bffddcab5be40226"}, 656 | {file = "rpds_py-0.26.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0c71c2f6bf36e61ee5c47b2b9b5d47e4d1baad6426bfed9eea3e858fc6ee8806"}, 657 | {file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d815d48b1804ed7867b539236b6dd62997850ca1c91cad187f2ddb1b7bbef19"}, 658 | {file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:84cfbd4d4d2cdeb2be61a057a258d26b22877266dd905809e94172dff01a42ae"}, 659 | {file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fbaa70553ca116c77717f513e08815aec458e6b69a028d4028d403b3bc84ff37"}, 660 | {file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:39bfea47c375f379d8e87ab4bb9eb2c836e4f2069f0f65731d85e55d74666387"}, 661 | {file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1533b7eb683fb5f38c1d68a3c78f5fdd8f1412fa6b9bf03b40f450785a0ab915"}, 662 | {file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c5ab0ee51f560d179b057555b4f601b7df909ed31312d301b99f8b9fc6028284"}, 663 | {file = "rpds_py-0.26.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e5162afc9e0d1f9cae3b577d9c29ddbab3505ab39012cb794d94a005825bde21"}, 664 | {file = "rpds_py-0.26.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:43f10b007033f359bc3fa9cd5e6c1e76723f056ffa9a6b5c117cc35720a80292"}, 665 | {file = "rpds_py-0.26.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e3730a48e5622e598293eee0762b09cff34dd3f271530f47b0894891281f051d"}, 666 | {file = "rpds_py-0.26.0-cp39-cp39-win32.whl", hash = "sha256:4b1f66eb81eab2e0ff5775a3a312e5e2e16bf758f7b06be82fb0d04078c7ac51"}, 667 | {file = "rpds_py-0.26.0-cp39-cp39-win_amd64.whl", hash = "sha256:519067e29f67b5c90e64fb1a6b6e9d2ec0ba28705c51956637bac23a2f4ddae1"}, 668 | {file = "rpds_py-0.26.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3c0909c5234543ada2515c05dc08595b08d621ba919629e94427e8e03539c958"}, 669 | {file = "rpds_py-0.26.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:c1fb0cda2abcc0ac62f64e2ea4b4e64c57dfd6b885e693095460c61bde7bb18e"}, 670 | {file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84d142d2d6cf9b31c12aa4878d82ed3b2324226270b89b676ac62ccd7df52d08"}, 671 | {file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a547e21c5610b7e9093d870be50682a6a6cf180d6da0f42c47c306073bfdbbf6"}, 672 | {file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:35e9a70a0f335371275cdcd08bc5b8051ac494dd58bff3bbfb421038220dc871"}, 673 | {file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0dfa6115c6def37905344d56fb54c03afc49104e2ca473d5dedec0f6606913b4"}, 674 | {file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:313cfcd6af1a55a286a3c9a25f64af6d0e46cf60bc5798f1db152d97a216ff6f"}, 675 | {file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f7bf2496fa563c046d05e4d232d7b7fd61346e2402052064b773e5c378bf6f73"}, 676 | {file = "rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:aa81873e2c8c5aa616ab8e017a481a96742fdf9313c40f14338ca7dbf50cb55f"}, 677 | {file = "rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:68ffcf982715f5b5b7686bdd349ff75d422e8f22551000c24b30eaa1b7f7ae84"}, 678 | {file = "rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:6188de70e190847bb6db3dc3981cbadff87d27d6fe9b4f0e18726d55795cee9b"}, 679 | {file = "rpds_py-0.26.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1c962145c7473723df9722ba4c058de12eb5ebedcb4e27e7d902920aa3831ee8"}, 680 | {file = "rpds_py-0.26.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f61a9326f80ca59214d1cceb0a09bb2ece5b2563d4e0cd37bfd5515c28510674"}, 681 | {file = "rpds_py-0.26.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:183f857a53bcf4b1b42ef0f57ca553ab56bdd170e49d8091e96c51c3d69ca696"}, 682 | {file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:941c1cfdf4799d623cf3aa1d326a6b4fdb7a5799ee2687f3516738216d2262fb"}, 683 | {file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72a8d9564a717ee291f554eeb4bfeafe2309d5ec0aa6c475170bdab0f9ee8e88"}, 684 | {file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:511d15193cbe013619dd05414c35a7dedf2088fcee93c6bbb7c77859765bd4e8"}, 685 | {file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aea1f9741b603a8d8fedb0ed5502c2bc0accbc51f43e2ad1337fe7259c2b77a5"}, 686 | {file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4019a9d473c708cf2f16415688ef0b4639e07abaa569d72f74745bbeffafa2c7"}, 687 | {file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:093d63b4b0f52d98ebae33b8c50900d3d67e0666094b1be7a12fffd7f65de74b"}, 688 | {file = "rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:2abe21d8ba64cded53a2a677e149ceb76dcf44284202d737178afe7ba540c1eb"}, 689 | {file = "rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:4feb7511c29f8442cbbc28149a92093d32e815a28aa2c50d333826ad2a20fdf0"}, 690 | {file = "rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e99685fc95d386da368013e7fb4269dd39c30d99f812a8372d62f244f662709c"}, 691 | {file = "rpds_py-0.26.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a90a13408a7a856b87be8a9f008fff53c5080eea4e4180f6c2e546e4a972fb5d"}, 692 | {file = "rpds_py-0.26.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:3ac51b65e8dc76cf4949419c54c5528adb24fc721df722fd452e5fbc236f5c40"}, 693 | {file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59b2093224a18c6508d95cfdeba8db9cbfd6f3494e94793b58972933fcee4c6d"}, 694 | {file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4f01a5d6444a3258b00dc07b6ea4733e26f8072b788bef750baa37b370266137"}, 695 | {file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b6e2c12160c72aeda9d1283e612f68804621f448145a210f1bf1d79151c47090"}, 696 | {file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cb28c1f569f8d33b2b5dcd05d0e6ef7005d8639c54c2f0be824f05aedf715255"}, 697 | {file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1766b5724c3f779317d5321664a343c07773c8c5fd1532e4039e6cc7d1a815be"}, 698 | {file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b6d9e5a2ed9c4988c8f9b28b3bc0e3e5b1aaa10c28d210a594ff3a8c02742daf"}, 699 | {file = "rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:b5f7a446ddaf6ca0fad9a5535b56fbfc29998bf0e0b450d174bbec0d600e1d72"}, 700 | {file = "rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:eed5ac260dd545fbc20da5f4f15e7efe36a55e0e7cf706e4ec005b491a9546a0"}, 701 | {file = "rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:582462833ba7cee52e968b0341b85e392ae53d44c0f9af6a5927c80e539a8b67"}, 702 | {file = "rpds_py-0.26.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:69a607203441e07e9a8a529cff1d5b73f6a160f22db1097211e6212a68567d11"}, 703 | {file = "rpds_py-0.26.0.tar.gz", hash = "sha256:20dae58a859b0906f0685642e591056f1e787f3a8b39c8e8749a45dc7d26bdb0"}, 704 | ] 705 | 706 | [[package]] 707 | name = "six" 708 | version = "1.17.0" 709 | description = "Python 2 and 3 compatibility utilities" 710 | optional = false 711 | python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" 712 | groups = ["main"] 713 | files = [ 714 | {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, 715 | {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, 716 | ] 717 | 718 | [[package]] 719 | name = "sniffio" 720 | version = "1.3.1" 721 | description = "Sniff out which async library your code is running under" 722 | optional = false 723 | python-versions = ">=3.7" 724 | groups = ["main"] 725 | files = [ 726 | {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, 727 | {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, 728 | ] 729 | 730 | [[package]] 731 | name = "sse-starlette" 732 | version = "2.2.1" 733 | description = "SSE plugin for Starlette" 734 | optional = false 735 | python-versions = ">=3.9" 736 | groups = ["main"] 737 | files = [ 738 | {file = "sse_starlette-2.2.1-py3-none-any.whl", hash = "sha256:6410a3d3ba0c89e7675d4c273a301d64649c03a5ef1ca101f10b47f895fd0e99"}, 739 | {file = "sse_starlette-2.2.1.tar.gz", hash = "sha256:54470d5f19274aeed6b2d473430b08b4b379ea851d953b11d7f1c4a2c118b419"}, 740 | ] 741 | 742 | [package.dependencies] 743 | anyio = ">=4.7.0" 744 | starlette = ">=0.41.3" 745 | 746 | [package.extras] 747 | examples = ["fastapi"] 748 | uvicorn = ["uvicorn (>=0.34.0)"] 749 | 750 | [[package]] 751 | name = "starlette" 752 | version = "0.49.1" 753 | description = "The little ASGI library that shines." 754 | optional = false 755 | python-versions = ">=3.9" 756 | groups = ["main"] 757 | files = [ 758 | {file = "starlette-0.49.1-py3-none-any.whl", hash = "sha256:d92ce9f07e4a3caa3ac13a79523bd18e3bc0042bb8ff2d759a8e7dd0e1859875"}, 759 | {file = "starlette-0.49.1.tar.gz", hash = "sha256:481a43b71e24ed8c43b11ea02f5353d77840e01480881b8cb5a26b8cae64a8cb"}, 760 | ] 761 | 762 | [package.dependencies] 763 | anyio = ">=3.6.2,<5" 764 | typing-extensions = {version = ">=4.10.0", markers = "python_version < \"3.13\""} 765 | 766 | [package.extras] 767 | full = ["httpx (>=0.27.0,<0.29.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.18)", "pyyaml"] 768 | 769 | [[package]] 770 | name = "typing-extensions" 771 | version = "4.13.0" 772 | description = "Backported and Experimental Type Hints for Python 3.8+" 773 | optional = false 774 | python-versions = ">=3.8" 775 | groups = ["main"] 776 | files = [ 777 | {file = "typing_extensions-4.13.0-py3-none-any.whl", hash = "sha256:c8dd92cc0d6425a97c18fbb9d1954e5ff92c1ca881a309c45f06ebc0b79058e5"}, 778 | {file = "typing_extensions-4.13.0.tar.gz", hash = "sha256:0a4ac55a5820789d87e297727d229866c9650f6521b64206413c4fbada24d95b"}, 779 | ] 780 | 781 | [[package]] 782 | name = "uvicorn" 783 | version = "0.34.0" 784 | description = "The lightning-fast ASGI server." 785 | optional = false 786 | python-versions = ">=3.9" 787 | groups = ["main"] 788 | markers = "sys_platform != \"emscripten\"" 789 | files = [ 790 | {file = "uvicorn-0.34.0-py3-none-any.whl", hash = "sha256:023dc038422502fa28a09c7a30bf2b6991512da7dcdb8fd35fe57cfc154126f4"}, 791 | {file = "uvicorn-0.34.0.tar.gz", hash = "sha256:404051050cd7e905de2c9a7e61790943440b3416f49cb409f965d9dcd0fa73e9"}, 792 | ] 793 | 794 | [package.dependencies] 795 | click = ">=7.0" 796 | h11 = ">=0.8" 797 | typing-extensions = {version = ">=4.0", markers = "python_version < \"3.11\""} 798 | 799 | [package.extras] 800 | standard = ["colorama (>=0.4) ; sys_platform == \"win32\"", "httptools (>=0.6.3)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1) ; sys_platform != \"win32\" and sys_platform != \"cygwin\" and platform_python_implementation != \"PyPy\"", "watchfiles (>=0.13)", "websockets (>=10.4)"] 801 | 802 | [metadata] 803 | lock-version = "2.1" 804 | python-versions = ">=3.10,<4.0" 805 | content-hash = "1af44ec467b8f9254483b7046a5fd70aee889b96bca338ea65e8fe82b77bd3e1" 806 | --------------------------------------------------------------------------------