UNPKG

langsmith

Version:

Client library to connect to the LangSmith Observability and Evaluation Platform.

324 lines (323 loc) 10.3 kB
/** * Custom error classes for the sandbox module. * * All sandbox errors extend LangSmithSandboxError for unified error handling. * The errors are organized by type rather than resource type, with additional * properties for specific handling when needed. */ /** * Base exception for sandbox client errors. */ export class LangSmithSandboxError extends Error { constructor(message) { super(message); this.name = "LangSmithSandboxError"; } } // ============================================================================= // Connection and Authentication Errors // ============================================================================= /** * Raised when the API endpoint returns an unexpected error. * * For example, this is raised for wrong URL or path. */ export class LangSmithSandboxAPIError extends LangSmithSandboxError { constructor(message) { super(message); this.name = "LangSmithSandboxAPIError"; } } /** * Raised when authentication fails (invalid or missing API key). */ export class LangSmithSandboxAuthenticationError extends LangSmithSandboxError { constructor(message) { super(message); this.name = "LangSmithSandboxAuthenticationError"; } } /** * Raised when connection to the sandbox server fails. */ export class LangSmithSandboxConnectionError extends LangSmithSandboxError { constructor(message) { super(message); this.name = "LangSmithSandboxConnectionError"; } } // ============================================================================= // Resource Errors (type-based, with resourceType property) // ============================================================================= /** * Raised when a resource is not found. */ export class LangSmithResourceNotFoundError extends LangSmithSandboxError { constructor(message, resourceType) { super(message); Object.defineProperty(this, "resourceType", { enumerable: true, configurable: true, writable: true, value: void 0 }); this.name = "LangSmithResourceNotFoundError"; this.resourceType = resourceType; } } /** * Raised when an operation times out. */ export class LangSmithResourceTimeoutError extends LangSmithSandboxError { constructor(message, resourceType, lastStatus) { super(message); Object.defineProperty(this, "resourceType", { enumerable: true, configurable: true, writable: true, value: void 0 }); Object.defineProperty(this, "lastStatus", { enumerable: true, configurable: true, writable: true, value: void 0 }); this.name = "LangSmithResourceTimeoutError"; this.resourceType = resourceType; this.lastStatus = lastStatus; } toString() { const base = super.toString(); if (this.lastStatus) { return `${base} (last_status: ${this.lastStatus})`; } return base; } } /** * Raised when deleting a resource that is still in use. */ export class LangSmithResourceInUseError extends LangSmithSandboxError { constructor(message, resourceType) { super(message); Object.defineProperty(this, "resourceType", { enumerable: true, configurable: true, writable: true, value: void 0 }); this.name = "LangSmithResourceInUseError"; this.resourceType = resourceType; } } /** * Raised when creating a resource that already exists. */ export class LangSmithResourceAlreadyExistsError extends LangSmithSandboxError { constructor(message, resourceType) { super(message); Object.defineProperty(this, "resourceType", { enumerable: true, configurable: true, writable: true, value: void 0 }); this.name = "LangSmithResourceAlreadyExistsError"; this.resourceType = resourceType; } } /** * Raised when updating a resource name to one that already exists. */ export class LangSmithResourceNameConflictError extends LangSmithSandboxError { constructor(message, resourceType) { super(message); Object.defineProperty(this, "resourceType", { enumerable: true, configurable: true, writable: true, value: void 0 }); this.name = "LangSmithResourceNameConflictError"; this.resourceType = resourceType; } } // ============================================================================= // Validation and Quota Errors // ============================================================================= /** * Raised when request validation fails. * * This includes: * - Resource values exceeding server-defined limits (CPU, memory, storage) * - Invalid resource units * - Invalid name formats * - Pool validation failures (e.g., template has volumes) */ export class LangSmithValidationError extends LangSmithSandboxError { constructor(message, field, details, errorType) { super(message); Object.defineProperty(this, "field", { enumerable: true, configurable: true, writable: true, value: void 0 }); Object.defineProperty(this, "details", { enumerable: true, configurable: true, writable: true, value: void 0 }); Object.defineProperty(this, "errorType", { enumerable: true, configurable: true, writable: true, value: void 0 }); this.name = "LangSmithValidationError"; this.field = field; this.details = details; this.errorType = errorType; } } /** * Raised when organization quota limits are exceeded. * * Users should contact support@langchain.dev to increase quotas. */ export class LangSmithQuotaExceededError extends LangSmithSandboxError { constructor(message, quotaType) { super(message); Object.defineProperty(this, "quotaType", { enumerable: true, configurable: true, writable: true, value: void 0 }); this.name = "LangSmithQuotaExceededError"; this.quotaType = quotaType; } } // ============================================================================= // Resource Creation Errors // ============================================================================= /** * Raised when resource provisioning fails (general-purpose). */ export class LangSmithResourceCreationError extends LangSmithSandboxError { constructor(message, resourceType, errorType) { super(message); /** * Type of resource that failed (e.g., "sandbox", "volume"). */ Object.defineProperty(this, "resourceType", { enumerable: true, configurable: true, writable: true, value: void 0 }); /** * Machine-readable error type (ImagePull, CrashLoop, SandboxConfig, Unschedulable). */ Object.defineProperty(this, "errorType", { enumerable: true, configurable: true, writable: true, value: void 0 }); this.name = "LangSmithResourceCreationError"; this.resourceType = resourceType; this.errorType = errorType; } toString() { if (this.errorType) { return `${super.toString()} [${this.errorType}]`; } return super.toString(); } } /** * Raised when sandbox creation fails. */ export class LangSmithSandboxCreationError extends LangSmithSandboxError { constructor(message, errorType) { super(message); /** * Machine-readable error type (ImagePull, CrashLoop, SandboxConfig, Unschedulable). */ Object.defineProperty(this, "errorType", { enumerable: true, configurable: true, writable: true, value: void 0 }); this.name = "LangSmithSandboxCreationError"; this.errorType = errorType; } toString() { if (this.errorType) { return `${super.toString()} [${this.errorType}]`; } return super.toString(); } } // ============================================================================= // Sandbox Operation Errors (runtime errors during sandbox interaction) // ============================================================================= /** * Raised when dataplane_url is not available for the sandbox. * * This occurs when the sandbox-router URL is not configured for the cluster. */ export class LangSmithDataplaneNotConfiguredError extends LangSmithSandboxError { constructor(message) { super(message); this.name = "LangSmithDataplaneNotConfiguredError"; } } /** * Raised when attempting to interact with a sandbox that is not ready. */ export class LangSmithSandboxNotReadyError extends LangSmithSandboxError { constructor(message) { super(message); this.name = "LangSmithSandboxNotReadyError"; } } /** * Raised when a sandbox operation fails (run, read, write). */ export class LangSmithSandboxOperationError extends LangSmithSandboxError { constructor(message, operation, errorType) { super(message); /** * The operation that failed (command, read, write). */ Object.defineProperty(this, "operation", { enumerable: true, configurable: true, writable: true, value: void 0 }); /** * Machine-readable error type from the API. */ Object.defineProperty(this, "errorType", { enumerable: true, configurable: true, writable: true, value: void 0 }); this.name = "LangSmithSandboxOperationError"; this.operation = operation; this.errorType = errorType; } toString() { if (this.errorType) { return `${super.toString()} [${this.errorType}]`; } return super.toString(); } }