diff --git a/.changeset/plenty-foxes-press.md b/.changeset/plenty-foxes-press.md new file mode 100644 index 0000000000..88f9998845 --- /dev/null +++ b/.changeset/plenty-foxes-press.md @@ -0,0 +1,6 @@ +--- +'e2b': patch +'@e2b/python-sdk': patch +--- + +Update connect header diff --git a/packages/js-sdk/src/api/metadata.ts b/packages/js-sdk/src/api/metadata.ts index 5a1af62c8a..b60b563675 100644 --- a/packages/js-sdk/src/api/metadata.ts +++ b/packages/js-sdk/src/api/metadata.ts @@ -2,6 +2,8 @@ import platform from 'platform' import { version } from '../../package.json' +export { version } + declare let window: any type Runtime = 'node' | 'browser' | 'deno' | 'bun' | 'vercel-edge' | 'cloudflare-worker' | 'unknown' diff --git a/packages/js-sdk/src/connectionConfig.ts b/packages/js-sdk/src/connectionConfig.ts index a02c27e4fb..2b975681e1 100644 --- a/packages/js-sdk/src/connectionConfig.ts +++ b/packages/js-sdk/src/connectionConfig.ts @@ -1,5 +1,5 @@ import { Logger } from './logs' -import { getEnvVar } from './api/metadata' +import {getEnvVar, version} from './api/metadata' const REQUEST_TIMEOUT_MS = 30_000 // 30 seconds export const KEEPALIVE_PING_INTERVAL_SEC = 50 // 50 seconds @@ -74,7 +74,8 @@ export class ConnectionConfig { this.accessToken = opts?.accessToken || ConnectionConfig.accessToken this.requestTimeoutMs = opts?.requestTimeoutMs ?? REQUEST_TIMEOUT_MS this.logger = opts?.logger - this.headers = opts?.headers + this.headers = opts?.headers || {} + this.headers['User-Agent'] = `e2b-js-sdk/${version}` this.apiUrl = this.debug ? 'http://localhost:3000' diff --git a/packages/js-sdk/src/sandbox/index.ts b/packages/js-sdk/src/sandbox/index.ts index 8dca724847..9d9502fdf6 100644 --- a/packages/js-sdk/src/sandbox/index.ts +++ b/packages/js-sdk/src/sandbox/index.ts @@ -167,7 +167,11 @@ export class Sandbox extends SandboxApi { // connect-web package uses redirect: "error" which is not supported in edge runtimes // E2B endpoints should be safe to use with redirect: "follow" https://github.com/e2b-dev/E2B/issues/531#issuecomment-2779492867 - const headers = new Headers(options?.headers) + const headers = new Headers(this.connectionConfig.headers) + new Headers(options?.headers).forEach( + (value, key) => headers.append(key, value) + ) + if (this.envdAccessToken) { headers.append('X-Access-Token', this.envdAccessToken) } diff --git a/packages/python-sdk/e2b/api/metadata.py b/packages/python-sdk/e2b/api/metadata.py index b389100776..1824370610 100644 --- a/packages/python-sdk/e2b/api/metadata.py +++ b/packages/python-sdk/e2b/api/metadata.py @@ -2,6 +2,8 @@ from importlib import metadata +package_version = metadata.version("e2b") + default_headers = { "lang": "python", "lang_version": platform.python_version(), diff --git a/packages/python-sdk/e2b/connection_config.py b/packages/python-sdk/e2b/connection_config.py index 232860f43f..3e7183abc6 100644 --- a/packages/python-sdk/e2b/connection_config.py +++ b/packages/python-sdk/e2b/connection_config.py @@ -3,6 +3,8 @@ from typing import Literal, Optional, Dict from httpx._types import ProxyTypes +from e2b.api.metadata import package_version + REQUEST_TIMEOUT: float = 30.0 # 30 seconds KEEPALIVE_PING_INTERVAL_SEC = 50 # 50 seconds @@ -45,6 +47,8 @@ def __init__( self.api_key = api_key or ConnectionConfig._api_key() self.access_token = access_token or ConnectionConfig._access_token() self.headers = headers or {} + self.headers["User-Agent"] = f"e2b-python-sdk/{package_version}" + self.proxy = proxy self.request_timeout = ConnectionConfig._get_request_timeout( diff --git a/packages/python-sdk/e2b_connect/client.py b/packages/python-sdk/e2b_connect/client.py index 0029a973bb..863ddf3d61 100644 --- a/packages/python-sdk/e2b_connect/client.py +++ b/packages/python-sdk/e2b_connect/client.py @@ -161,7 +161,7 @@ def __init__( self._codec = JSONCodec if json else ProtobufCodec self._response_type = response_type self._compressor = compressor - self._headers = {**{"user-agent": "connect-python"}, **headers} + self._headers = headers self._connection_retries = 3 def _prepare_unary_request(