@cloudflare/sandbox 0.6.3 → 0.6.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Dockerfile +43 -24
- package/README.md +6 -2
- package/dist/contexts-CdrlvHWK.d.ts +162 -0
- package/dist/contexts-CdrlvHWK.d.ts.map +1 -0
- package/dist/{dist-D0sZt0AD.js → dist-2SF6oOaz.js} +1 -1
- package/dist/{dist-D0sZt0AD.js.map → dist-2SF6oOaz.js.map} +1 -1
- package/dist/errors-BCXUmJUn.js +126 -0
- package/dist/errors-BCXUmJUn.js.map +1 -0
- package/dist/index.d.ts +2 -150
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +35 -140
- package/dist/index.js.map +1 -1
- package/dist/openai/index.d.ts +1 -1
- package/dist/openai/index.js +1 -1
- package/dist/opencode/index.d.ts +149 -0
- package/dist/opencode/index.d.ts.map +1 -0
- package/dist/opencode/index.js +297 -0
- package/dist/opencode/index.js.map +1 -0
- package/dist/{sandbox-bAj-cB2H.d.ts → sandbox-C9WRqWBO.d.ts} +2 -2
- package/dist/{sandbox-bAj-cB2H.d.ts.map → sandbox-C9WRqWBO.d.ts.map} +1 -1
- package/package.json +14 -4
- package/startup.sh +0 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors-BCXUmJUn.js","names":[],"sources":["../../shared/dist/errors/codes.js","../../shared/dist/errors/status-map.js"],"sourcesContent":["/**\n * Centralized error code registry\n * Each code maps to a specific error type with consistent semantics\n */\nexport const ErrorCode = {\n // File System Errors (404)\n FILE_NOT_FOUND: 'FILE_NOT_FOUND',\n // Permission Errors (403)\n PERMISSION_DENIED: 'PERMISSION_DENIED',\n // File System Errors (409)\n FILE_EXISTS: 'FILE_EXISTS',\n // File System Errors (400)\n IS_DIRECTORY: 'IS_DIRECTORY',\n NOT_DIRECTORY: 'NOT_DIRECTORY',\n // File System Errors (500)\n NO_SPACE: 'NO_SPACE',\n TOO_MANY_FILES: 'TOO_MANY_FILES',\n RESOURCE_BUSY: 'RESOURCE_BUSY',\n READ_ONLY: 'READ_ONLY',\n NAME_TOO_LONG: 'NAME_TOO_LONG',\n TOO_MANY_LINKS: 'TOO_MANY_LINKS',\n FILESYSTEM_ERROR: 'FILESYSTEM_ERROR',\n // Command Errors (404)\n COMMAND_NOT_FOUND: 'COMMAND_NOT_FOUND',\n // Command Errors (403/400)\n COMMAND_PERMISSION_DENIED: 'COMMAND_PERMISSION_DENIED',\n INVALID_COMMAND: 'INVALID_COMMAND',\n // Command Errors (500)\n COMMAND_EXECUTION_ERROR: 'COMMAND_EXECUTION_ERROR',\n STREAM_START_ERROR: 'STREAM_START_ERROR',\n // Process Errors (404)\n PROCESS_NOT_FOUND: 'PROCESS_NOT_FOUND',\n // Process Errors (403/500)\n PROCESS_PERMISSION_DENIED: 'PROCESS_PERMISSION_DENIED',\n PROCESS_ERROR: 'PROCESS_ERROR',\n // Session Errors (409)\n SESSION_ALREADY_EXISTS: 'SESSION_ALREADY_EXISTS',\n // Port Errors (409)\n PORT_ALREADY_EXPOSED: 'PORT_ALREADY_EXPOSED',\n PORT_IN_USE: 'PORT_IN_USE',\n // Port Errors (404)\n PORT_NOT_EXPOSED: 'PORT_NOT_EXPOSED',\n // Port Errors (400)\n INVALID_PORT_NUMBER: 'INVALID_PORT_NUMBER',\n INVALID_PORT: 'INVALID_PORT',\n // Port Errors (502/500)\n SERVICE_NOT_RESPONDING: 'SERVICE_NOT_RESPONDING',\n PORT_OPERATION_ERROR: 'PORT_OPERATION_ERROR',\n // Port Errors (400)\n CUSTOM_DOMAIN_REQUIRED: 'CUSTOM_DOMAIN_REQUIRED',\n // Git Errors (404)\n GIT_REPOSITORY_NOT_FOUND: 'GIT_REPOSITORY_NOT_FOUND',\n GIT_BRANCH_NOT_FOUND: 'GIT_BRANCH_NOT_FOUND',\n // Git Errors (401)\n GIT_AUTH_FAILED: 'GIT_AUTH_FAILED',\n // Git Errors (502)\n GIT_NETWORK_ERROR: 'GIT_NETWORK_ERROR',\n // Git Errors (400)\n INVALID_GIT_URL: 'INVALID_GIT_URL',\n // Git Errors (500)\n GIT_CLONE_FAILED: 'GIT_CLONE_FAILED',\n GIT_CHECKOUT_FAILED: 'GIT_CHECKOUT_FAILED',\n GIT_OPERATION_FAILED: 'GIT_OPERATION_FAILED',\n // Bucket mounting errors\n BUCKET_MOUNT_ERROR: 'BUCKET_MOUNT_ERROR',\n S3FS_MOUNT_ERROR: 'S3FS_MOUNT_ERROR',\n MISSING_CREDENTIALS: 'MISSING_CREDENTIALS',\n INVALID_MOUNT_CONFIG: 'INVALID_MOUNT_CONFIG',\n // Code Interpreter Errors (503)\n INTERPRETER_NOT_READY: 'INTERPRETER_NOT_READY',\n // Code Interpreter Errors (404)\n CONTEXT_NOT_FOUND: 'CONTEXT_NOT_FOUND',\n // Code Interpreter Errors (500)\n CODE_EXECUTION_ERROR: 'CODE_EXECUTION_ERROR',\n // Code Interpreter Errors (501) - Feature not available in image variant\n PYTHON_NOT_AVAILABLE: 'PYTHON_NOT_AVAILABLE',\n JAVASCRIPT_NOT_AVAILABLE: 'JAVASCRIPT_NOT_AVAILABLE',\n // OpenCode Errors (503)\n OPENCODE_STARTUP_FAILED: 'OPENCODE_STARTUP_FAILED',\n // Process Readiness Errors (408/500)\n PROCESS_READY_TIMEOUT: 'PROCESS_READY_TIMEOUT',\n PROCESS_EXITED_BEFORE_READY: 'PROCESS_EXITED_BEFORE_READY',\n // Validation Errors (400)\n VALIDATION_FAILED: 'VALIDATION_FAILED',\n // Generic Errors (400/500)\n INVALID_JSON_RESPONSE: 'INVALID_JSON_RESPONSE',\n UNKNOWN_ERROR: 'UNKNOWN_ERROR',\n INTERNAL_ERROR: 'INTERNAL_ERROR'\n};\n","import { ErrorCode } from './codes';\n/**\n * Maps error codes to HTTP status codes\n * Centralized mapping ensures consistency across SDK\n */\nexport const ERROR_STATUS_MAP = {\n // 404 Not Found\n [ErrorCode.FILE_NOT_FOUND]: 404,\n [ErrorCode.COMMAND_NOT_FOUND]: 404,\n [ErrorCode.PROCESS_NOT_FOUND]: 404,\n [ErrorCode.PORT_NOT_EXPOSED]: 404,\n [ErrorCode.GIT_REPOSITORY_NOT_FOUND]: 404,\n [ErrorCode.GIT_BRANCH_NOT_FOUND]: 404,\n [ErrorCode.CONTEXT_NOT_FOUND]: 404,\n // 400 Bad Request\n [ErrorCode.IS_DIRECTORY]: 400,\n [ErrorCode.NOT_DIRECTORY]: 400,\n [ErrorCode.INVALID_COMMAND]: 400,\n [ErrorCode.INVALID_PORT_NUMBER]: 400,\n [ErrorCode.INVALID_PORT]: 400,\n [ErrorCode.INVALID_GIT_URL]: 400,\n [ErrorCode.CUSTOM_DOMAIN_REQUIRED]: 400,\n [ErrorCode.INVALID_JSON_RESPONSE]: 400,\n [ErrorCode.NAME_TOO_LONG]: 400,\n [ErrorCode.VALIDATION_FAILED]: 400,\n [ErrorCode.MISSING_CREDENTIALS]: 400,\n [ErrorCode.INVALID_MOUNT_CONFIG]: 400,\n // 401 Unauthorized\n [ErrorCode.GIT_AUTH_FAILED]: 401,\n // 403 Forbidden\n [ErrorCode.PERMISSION_DENIED]: 403,\n [ErrorCode.COMMAND_PERMISSION_DENIED]: 403,\n [ErrorCode.PROCESS_PERMISSION_DENIED]: 403,\n [ErrorCode.READ_ONLY]: 403,\n // 409 Conflict\n [ErrorCode.FILE_EXISTS]: 409,\n [ErrorCode.PORT_ALREADY_EXPOSED]: 409,\n [ErrorCode.PORT_IN_USE]: 409,\n [ErrorCode.RESOURCE_BUSY]: 409,\n [ErrorCode.SESSION_ALREADY_EXISTS]: 409,\n // 502 Bad Gateway\n [ErrorCode.SERVICE_NOT_RESPONDING]: 502,\n [ErrorCode.GIT_NETWORK_ERROR]: 502,\n // 501 Not Implemented (feature not available in image variant)\n [ErrorCode.PYTHON_NOT_AVAILABLE]: 501,\n [ErrorCode.JAVASCRIPT_NOT_AVAILABLE]: 501,\n // 503 Service Unavailable\n [ErrorCode.INTERPRETER_NOT_READY]: 503,\n [ErrorCode.OPENCODE_STARTUP_FAILED]: 503,\n // 408 Request Timeout\n [ErrorCode.PROCESS_READY_TIMEOUT]: 408,\n // 500 Internal Server Error\n [ErrorCode.PROCESS_EXITED_BEFORE_READY]: 500,\n [ErrorCode.NO_SPACE]: 500,\n [ErrorCode.TOO_MANY_FILES]: 500,\n [ErrorCode.TOO_MANY_LINKS]: 500,\n [ErrorCode.FILESYSTEM_ERROR]: 500,\n [ErrorCode.COMMAND_EXECUTION_ERROR]: 500,\n [ErrorCode.STREAM_START_ERROR]: 500,\n [ErrorCode.PROCESS_ERROR]: 500,\n [ErrorCode.PORT_OPERATION_ERROR]: 500,\n [ErrorCode.GIT_CLONE_FAILED]: 500,\n [ErrorCode.GIT_CHECKOUT_FAILED]: 500,\n [ErrorCode.GIT_OPERATION_FAILED]: 500,\n [ErrorCode.CODE_EXECUTION_ERROR]: 500,\n [ErrorCode.BUCKET_MOUNT_ERROR]: 500,\n [ErrorCode.S3FS_MOUNT_ERROR]: 500,\n [ErrorCode.UNKNOWN_ERROR]: 500,\n [ErrorCode.INTERNAL_ERROR]: 500\n};\n/**\n * Get HTTP status code for an error code\n * Falls back to 500 for unknown errors\n */\nexport function getHttpStatus(code) {\n return ERROR_STATUS_MAP[code] || 500;\n}\n"],"mappings":";;;;;AAIA,MAAa,YAAY;CAErB,gBAAgB;CAEhB,mBAAmB;CAEnB,aAAa;CAEb,cAAc;CACd,eAAe;CAEf,UAAU;CACV,gBAAgB;CAChB,eAAe;CACf,WAAW;CACX,eAAe;CACf,gBAAgB;CAChB,kBAAkB;CAElB,mBAAmB;CAEnB,2BAA2B;CAC3B,iBAAiB;CAEjB,yBAAyB;CACzB,oBAAoB;CAEpB,mBAAmB;CAEnB,2BAA2B;CAC3B,eAAe;CAEf,wBAAwB;CAExB,sBAAsB;CACtB,aAAa;CAEb,kBAAkB;CAElB,qBAAqB;CACrB,cAAc;CAEd,wBAAwB;CACxB,sBAAsB;CAEtB,wBAAwB;CAExB,0BAA0B;CAC1B,sBAAsB;CAEtB,iBAAiB;CAEjB,mBAAmB;CAEnB,iBAAiB;CAEjB,kBAAkB;CAClB,qBAAqB;CACrB,sBAAsB;CAEtB,oBAAoB;CACpB,kBAAkB;CAClB,qBAAqB;CACrB,sBAAsB;CAEtB,uBAAuB;CAEvB,mBAAmB;CAEnB,sBAAsB;CAEtB,sBAAsB;CACtB,0BAA0B;CAE1B,yBAAyB;CAEzB,uBAAuB;CACvB,6BAA6B;CAE7B,mBAAmB;CAEnB,uBAAuB;CACvB,eAAe;CACf,gBAAgB;CACnB;;;;;;;;ACnFD,MAAa,mBAAmB;EAE3B,UAAU,iBAAiB;EAC3B,UAAU,oBAAoB;EAC9B,UAAU,oBAAoB;EAC9B,UAAU,mBAAmB;EAC7B,UAAU,2BAA2B;EACrC,UAAU,uBAAuB;EACjC,UAAU,oBAAoB;EAE9B,UAAU,eAAe;EACzB,UAAU,gBAAgB;EAC1B,UAAU,kBAAkB;EAC5B,UAAU,sBAAsB;EAChC,UAAU,eAAe;EACzB,UAAU,kBAAkB;EAC5B,UAAU,yBAAyB;EACnC,UAAU,wBAAwB;EAClC,UAAU,gBAAgB;EAC1B,UAAU,oBAAoB;EAC9B,UAAU,sBAAsB;EAChC,UAAU,uBAAuB;EAEjC,UAAU,kBAAkB;EAE5B,UAAU,oBAAoB;EAC9B,UAAU,4BAA4B;EACtC,UAAU,4BAA4B;EACtC,UAAU,YAAY;EAEtB,UAAU,cAAc;EACxB,UAAU,uBAAuB;EACjC,UAAU,cAAc;EACxB,UAAU,gBAAgB;EAC1B,UAAU,yBAAyB;EAEnC,UAAU,yBAAyB;EACnC,UAAU,oBAAoB;EAE9B,UAAU,uBAAuB;EACjC,UAAU,2BAA2B;EAErC,UAAU,wBAAwB;EAClC,UAAU,0BAA0B;EAEpC,UAAU,wBAAwB;EAElC,UAAU,8BAA8B;EACxC,UAAU,WAAW;EACrB,UAAU,iBAAiB;EAC3B,UAAU,iBAAiB;EAC3B,UAAU,mBAAmB;EAC7B,UAAU,0BAA0B;EACpC,UAAU,qBAAqB;EAC/B,UAAU,gBAAgB;EAC1B,UAAU,uBAAuB;EACjC,UAAU,mBAAmB;EAC7B,UAAU,sBAAsB;EAChC,UAAU,uBAAuB;EACjC,UAAU,uBAAuB;EACjC,UAAU,qBAAqB;EAC/B,UAAU,mBAAmB;EAC7B,UAAU,gBAAgB;EAC1B,UAAU,iBAAiB;CAC/B"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { $ as ProcessInfoResult, A as RequestConfig, B as FileChunk, C as WriteFileRequest, D as ContainerStub, E as BaseApiResponse, F as BucketProvider, G as ListFilesOptions, H as FileStreamEvent, I as ExecEvent, J as PortCloseResult, K as LogEvent, L as ExecOptions, M as SessionRequest, N as BaseExecOptions, O as ErrorResponse, P as BucketCredentials, Q as ProcessCleanupResult, R as ExecResult, S as ReadFileRequest, T as ExecuteResponse, U as GitCheckoutResult, V as FileMetadata, W as ISandbox, X as PortListResult, Y as PortExposeResult, Z as Process, _ as GitCheckoutRequest, _t as ExecutionResult, a as CreateSessionRequest, at as ProcessStatus, b as FileOperationRequest, c as DeleteSessionResponse, ct as StreamOptions, d as ProcessClient, dt as isExecResult, et as ProcessKillResult, f as ExposePortRequest, ft as isProcess, g as InterpreterClient, gt as Execution, h as ExecutionCallbacks, ht as CreateContextOptions, i as CommandsResponse, it as ProcessStartResult, j as ResponseHandler, k as HttpClientOptions, l as PingResponse, lt as WaitForLogResult, m as UnexposePortRequest, mt as CodeContext, n as getSandbox, nt as ProcessLogsResult, o as CreateSessionResponse, ot as SandboxOptions, p as PortClient, pt as isProcessStatus, q as MountBucketOptions, r as SandboxClient, rt as ProcessOptions, s as DeleteSessionRequest, st as SessionOptions, t as Sandbox, tt as ProcessListResult, u as UtilityClient, ut as WaitForPortOptions, v as GitClient, vt as RunCodeOptions, w as CommandClient, x as MkdirRequest, y as FileClient, z as ExecutionSession } from "./sandbox-
|
|
1
|
+
import { $ as ProcessInfoResult, A as RequestConfig, B as FileChunk, C as WriteFileRequest, D as ContainerStub, E as BaseApiResponse, F as BucketProvider, G as ListFilesOptions, H as FileStreamEvent, I as ExecEvent, J as PortCloseResult, K as LogEvent, L as ExecOptions, M as SessionRequest, N as BaseExecOptions, O as ErrorResponse, P as BucketCredentials, Q as ProcessCleanupResult, R as ExecResult, S as ReadFileRequest, T as ExecuteResponse, U as GitCheckoutResult, V as FileMetadata, W as ISandbox, X as PortListResult, Y as PortExposeResult, Z as Process, _ as GitCheckoutRequest, _t as ExecutionResult, a as CreateSessionRequest, at as ProcessStatus, b as FileOperationRequest, c as DeleteSessionResponse, ct as StreamOptions, d as ProcessClient, dt as isExecResult, et as ProcessKillResult, f as ExposePortRequest, ft as isProcess, g as InterpreterClient, gt as Execution, h as ExecutionCallbacks, ht as CreateContextOptions, i as CommandsResponse, it as ProcessStartResult, j as ResponseHandler, k as HttpClientOptions, l as PingResponse, lt as WaitForLogResult, m as UnexposePortRequest, mt as CodeContext, n as getSandbox, nt as ProcessLogsResult, o as CreateSessionResponse, ot as SandboxOptions, p as PortClient, pt as isProcessStatus, q as MountBucketOptions, r as SandboxClient, rt as ProcessOptions, s as DeleteSessionRequest, st as SessionOptions, t as Sandbox, tt as ProcessListResult, u as UtilityClient, ut as WaitForPortOptions, v as GitClient, vt as RunCodeOptions, w as CommandClient, x as MkdirRequest, y as FileClient, z as ExecutionSession } from "./sandbox-C9WRqWBO.js";
|
|
2
|
+
import { a as OperationType, i as ErrorResponse$1, n as ProcessExitedBeforeReadyContext, o as ErrorCode, r as ProcessReadyTimeoutContext } from "./contexts-CdrlvHWK.js";
|
|
2
3
|
|
|
3
4
|
//#region ../shared/dist/request-types.d.ts
|
|
4
5
|
|
|
@@ -35,155 +36,6 @@ interface StartProcessRequest {
|
|
|
35
36
|
autoCleanup?: boolean;
|
|
36
37
|
}
|
|
37
38
|
//#endregion
|
|
38
|
-
//#region ../shared/dist/errors/codes.d.ts
|
|
39
|
-
/**
|
|
40
|
-
* Centralized error code registry
|
|
41
|
-
* Each code maps to a specific error type with consistent semantics
|
|
42
|
-
*/
|
|
43
|
-
declare const ErrorCode: {
|
|
44
|
-
readonly FILE_NOT_FOUND: "FILE_NOT_FOUND";
|
|
45
|
-
readonly PERMISSION_DENIED: "PERMISSION_DENIED";
|
|
46
|
-
readonly FILE_EXISTS: "FILE_EXISTS";
|
|
47
|
-
readonly IS_DIRECTORY: "IS_DIRECTORY";
|
|
48
|
-
readonly NOT_DIRECTORY: "NOT_DIRECTORY";
|
|
49
|
-
readonly NO_SPACE: "NO_SPACE";
|
|
50
|
-
readonly TOO_MANY_FILES: "TOO_MANY_FILES";
|
|
51
|
-
readonly RESOURCE_BUSY: "RESOURCE_BUSY";
|
|
52
|
-
readonly READ_ONLY: "READ_ONLY";
|
|
53
|
-
readonly NAME_TOO_LONG: "NAME_TOO_LONG";
|
|
54
|
-
readonly TOO_MANY_LINKS: "TOO_MANY_LINKS";
|
|
55
|
-
readonly FILESYSTEM_ERROR: "FILESYSTEM_ERROR";
|
|
56
|
-
readonly COMMAND_NOT_FOUND: "COMMAND_NOT_FOUND";
|
|
57
|
-
readonly COMMAND_PERMISSION_DENIED: "COMMAND_PERMISSION_DENIED";
|
|
58
|
-
readonly INVALID_COMMAND: "INVALID_COMMAND";
|
|
59
|
-
readonly COMMAND_EXECUTION_ERROR: "COMMAND_EXECUTION_ERROR";
|
|
60
|
-
readonly STREAM_START_ERROR: "STREAM_START_ERROR";
|
|
61
|
-
readonly PROCESS_NOT_FOUND: "PROCESS_NOT_FOUND";
|
|
62
|
-
readonly PROCESS_PERMISSION_DENIED: "PROCESS_PERMISSION_DENIED";
|
|
63
|
-
readonly PROCESS_ERROR: "PROCESS_ERROR";
|
|
64
|
-
readonly PORT_ALREADY_EXPOSED: "PORT_ALREADY_EXPOSED";
|
|
65
|
-
readonly PORT_IN_USE: "PORT_IN_USE";
|
|
66
|
-
readonly PORT_NOT_EXPOSED: "PORT_NOT_EXPOSED";
|
|
67
|
-
readonly INVALID_PORT_NUMBER: "INVALID_PORT_NUMBER";
|
|
68
|
-
readonly INVALID_PORT: "INVALID_PORT";
|
|
69
|
-
readonly SERVICE_NOT_RESPONDING: "SERVICE_NOT_RESPONDING";
|
|
70
|
-
readonly PORT_OPERATION_ERROR: "PORT_OPERATION_ERROR";
|
|
71
|
-
readonly CUSTOM_DOMAIN_REQUIRED: "CUSTOM_DOMAIN_REQUIRED";
|
|
72
|
-
readonly GIT_REPOSITORY_NOT_FOUND: "GIT_REPOSITORY_NOT_FOUND";
|
|
73
|
-
readonly GIT_BRANCH_NOT_FOUND: "GIT_BRANCH_NOT_FOUND";
|
|
74
|
-
readonly GIT_AUTH_FAILED: "GIT_AUTH_FAILED";
|
|
75
|
-
readonly GIT_NETWORK_ERROR: "GIT_NETWORK_ERROR";
|
|
76
|
-
readonly INVALID_GIT_URL: "INVALID_GIT_URL";
|
|
77
|
-
readonly GIT_CLONE_FAILED: "GIT_CLONE_FAILED";
|
|
78
|
-
readonly GIT_CHECKOUT_FAILED: "GIT_CHECKOUT_FAILED";
|
|
79
|
-
readonly GIT_OPERATION_FAILED: "GIT_OPERATION_FAILED";
|
|
80
|
-
readonly BUCKET_MOUNT_ERROR: "BUCKET_MOUNT_ERROR";
|
|
81
|
-
readonly S3FS_MOUNT_ERROR: "S3FS_MOUNT_ERROR";
|
|
82
|
-
readonly MISSING_CREDENTIALS: "MISSING_CREDENTIALS";
|
|
83
|
-
readonly INVALID_MOUNT_CONFIG: "INVALID_MOUNT_CONFIG";
|
|
84
|
-
readonly INTERPRETER_NOT_READY: "INTERPRETER_NOT_READY";
|
|
85
|
-
readonly CONTEXT_NOT_FOUND: "CONTEXT_NOT_FOUND";
|
|
86
|
-
readonly CODE_EXECUTION_ERROR: "CODE_EXECUTION_ERROR";
|
|
87
|
-
readonly PYTHON_NOT_AVAILABLE: "PYTHON_NOT_AVAILABLE";
|
|
88
|
-
readonly PROCESS_READY_TIMEOUT: "PROCESS_READY_TIMEOUT";
|
|
89
|
-
readonly PROCESS_EXITED_BEFORE_READY: "PROCESS_EXITED_BEFORE_READY";
|
|
90
|
-
readonly VALIDATION_FAILED: "VALIDATION_FAILED";
|
|
91
|
-
readonly INVALID_JSON_RESPONSE: "INVALID_JSON_RESPONSE";
|
|
92
|
-
readonly UNKNOWN_ERROR: "UNKNOWN_ERROR";
|
|
93
|
-
readonly INTERNAL_ERROR: "INTERNAL_ERROR";
|
|
94
|
-
};
|
|
95
|
-
type ErrorCode = (typeof ErrorCode)[keyof typeof ErrorCode];
|
|
96
|
-
//#endregion
|
|
97
|
-
//#region ../shared/dist/errors/types.d.ts
|
|
98
|
-
/**
|
|
99
|
-
* Standard operation types
|
|
100
|
-
*/
|
|
101
|
-
declare const Operation: {
|
|
102
|
-
readonly FILE_READ: "file.read";
|
|
103
|
-
readonly FILE_WRITE: "file.write";
|
|
104
|
-
readonly FILE_DELETE: "file.delete";
|
|
105
|
-
readonly FILE_MOVE: "file.move";
|
|
106
|
-
readonly FILE_RENAME: "file.rename";
|
|
107
|
-
readonly FILE_STAT: "file.stat";
|
|
108
|
-
readonly DIRECTORY_CREATE: "directory.create";
|
|
109
|
-
readonly DIRECTORY_LIST: "directory.list";
|
|
110
|
-
readonly COMMAND_EXECUTE: "command.execute";
|
|
111
|
-
readonly COMMAND_STREAM: "command.stream";
|
|
112
|
-
readonly PROCESS_START: "process.start";
|
|
113
|
-
readonly PROCESS_KILL: "process.kill";
|
|
114
|
-
readonly PROCESS_LIST: "process.list";
|
|
115
|
-
readonly PROCESS_GET: "process.get";
|
|
116
|
-
readonly PROCESS_LOGS: "process.logs";
|
|
117
|
-
readonly PORT_EXPOSE: "port.expose";
|
|
118
|
-
readonly PORT_UNEXPOSE: "port.unexpose";
|
|
119
|
-
readonly PORT_LIST: "port.list";
|
|
120
|
-
readonly PORT_PROXY: "port.proxy";
|
|
121
|
-
readonly GIT_CLONE: "git.clone";
|
|
122
|
-
readonly GIT_CHECKOUT: "git.checkout";
|
|
123
|
-
readonly GIT_OPERATION: "git.operation";
|
|
124
|
-
readonly CODE_EXECUTE: "code.execute";
|
|
125
|
-
readonly CODE_CONTEXT_CREATE: "code.context.create";
|
|
126
|
-
readonly CODE_CONTEXT_DELETE: "code.context.delete";
|
|
127
|
-
};
|
|
128
|
-
type OperationType = (typeof Operation)[keyof typeof Operation];
|
|
129
|
-
/**
|
|
130
|
-
* Standard error response format with generic context type
|
|
131
|
-
* TContext allows type-safe access to error-specific context
|
|
132
|
-
*/
|
|
133
|
-
interface ErrorResponse$1<TContext = Record<string, unknown>> {
|
|
134
|
-
/**
|
|
135
|
-
* Error type code (machine-readable)
|
|
136
|
-
*/
|
|
137
|
-
code: ErrorCode;
|
|
138
|
-
/**
|
|
139
|
-
* Human-readable error message
|
|
140
|
-
*/
|
|
141
|
-
message: string;
|
|
142
|
-
/**
|
|
143
|
-
* Operation that was attempted (useful for debugging and logging)
|
|
144
|
-
*/
|
|
145
|
-
operation?: OperationType;
|
|
146
|
-
/**
|
|
147
|
-
* Structured error context with relevant details
|
|
148
|
-
* Type varies based on error code
|
|
149
|
-
*/
|
|
150
|
-
context: TContext;
|
|
151
|
-
/**
|
|
152
|
-
* HTTP status code (for client SDK)
|
|
153
|
-
*/
|
|
154
|
-
httpStatus: number;
|
|
155
|
-
/**
|
|
156
|
-
* Timestamp when error occurred
|
|
157
|
-
*/
|
|
158
|
-
timestamp: string;
|
|
159
|
-
/**
|
|
160
|
-
* Actionable suggestion for fixing the error
|
|
161
|
-
*/
|
|
162
|
-
suggestion?: string;
|
|
163
|
-
/**
|
|
164
|
-
* Link to documentation
|
|
165
|
-
*/
|
|
166
|
-
documentation?: string;
|
|
167
|
-
}
|
|
168
|
-
//#endregion
|
|
169
|
-
//#region ../shared/dist/errors/contexts.d.ts
|
|
170
|
-
|
|
171
|
-
/**
|
|
172
|
-
* Process readiness error contexts
|
|
173
|
-
*/
|
|
174
|
-
interface ProcessReadyTimeoutContext {
|
|
175
|
-
processId: string;
|
|
176
|
-
command: string;
|
|
177
|
-
condition: string;
|
|
178
|
-
timeout: number;
|
|
179
|
-
}
|
|
180
|
-
interface ProcessExitedBeforeReadyContext {
|
|
181
|
-
processId: string;
|
|
182
|
-
command: string;
|
|
183
|
-
condition: string;
|
|
184
|
-
exitCode: number;
|
|
185
|
-
}
|
|
186
|
-
//#endregion
|
|
187
39
|
//#region src/errors/classes.d.ts
|
|
188
40
|
/**
|
|
189
41
|
* Base SDK error that wraps ErrorResponse
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":["ExecuteRequest","Record","StartProcessRequest","ReadFileRequest","WriteFileRequest","DeleteFileRequest","RenameFileRequest","MoveFileRequest","MkdirRequest","FileExistsRequest","ExposePortRequest","GitCheckoutRequest","SessionCreateRequest","SessionDeleteRequest","ErrorCode","ErrorCode","Operation","OperationType","ErrorResponse","TContext","Record","ServiceError","ServiceResult","T","OperationType","FileNotFoundContext","FileExistsContext","FileSystemContext","CommandNotFoundContext","CommandErrorContext","ProcessNotFoundContext","ProcessErrorContext","ProcessReadyTimeoutContext","ProcessExitedBeforeReadyContext","PortAlreadyExposedContext","PortNotExposedContext","InvalidPortContext","PortErrorContext","GitRepositoryNotFoundContext","GitAuthFailedContext","GitBranchNotFoundContext","GitErrorContext","InterpreterNotReadyContext","ContextNotFoundContext","CodeExecutionContext","ValidationFailedContext","Array","BucketMountContext","MissingCredentialsContext","InvalidMountConfigContext","InternalErrorContext"],"sources":["../../shared/dist/request-types.d.ts","../../shared/dist/errors/codes.d.ts","../../shared/dist/errors/types.d.ts","../../shared/dist/errors/contexts.d.ts","../src/errors/classes.ts","../src/file-stream.ts","../src/interpreter.ts","../src/request-handler.ts","../src/sse-parser.ts","../src/storage-mount/errors.ts"],"sourcesContent":["/**\n * Request types for API calls to the container\n * These types enforce the contract between the Durable Object client and container handlers\n *\n * IMPORTANT: These types must match the Zod schemas in:\n * @repo/sandbox-container/src/validation/schemas.ts\n */\n/**\n * Request to execute a command\n */\nexport interface ExecuteRequest {\n command: string;\n sessionId?: string;\n background?: boolean;\n timeoutMs?: number;\n env?: Record<string, string>;\n cwd?: string;\n}\n/**\n * Request to start a background process\n * Uses flat structure consistent with other endpoints\n */\nexport interface StartProcessRequest {\n command: string;\n sessionId?: string;\n processId?: string;\n timeoutMs?: number;\n env?: Record<string, string>;\n cwd?: string;\n encoding?: string;\n autoCleanup?: boolean;\n}\n/**\n * Request to read a file\n */\nexport interface ReadFileRequest {\n path: string;\n encoding?: string;\n sessionId?: string;\n}\n/**\n * Request to write a file\n */\nexport interface WriteFileRequest {\n path: string;\n content: string;\n encoding?: string;\n sessionId?: string;\n}\n/**\n * Request to delete a file\n */\nexport interface DeleteFileRequest {\n path: string;\n sessionId?: string;\n}\n/**\n * Request to rename a file\n */\nexport interface RenameFileRequest {\n oldPath: string;\n newPath: string;\n sessionId?: string;\n}\n/**\n * Request to move a file\n */\nexport interface MoveFileRequest {\n sourcePath: string;\n destinationPath: string;\n sessionId?: string;\n}\n/**\n * Request to create a directory\n */\nexport interface MkdirRequest {\n path: string;\n recursive?: boolean;\n sessionId?: string;\n}\n/**\n * Request to check if a file or directory exists\n */\nexport interface FileExistsRequest {\n path: string;\n sessionId?: string;\n}\n/**\n * Request to expose a port\n */\nexport interface ExposePortRequest {\n port: number;\n name?: string;\n}\n/**\n * Request to clone a Git repository\n */\nexport interface GitCheckoutRequest {\n repoUrl: string;\n branch?: string;\n targetDir?: string;\n sessionId?: string;\n}\n/**\n * Request to create a session\n */\nexport interface SessionCreateRequest {\n id?: string;\n name?: string;\n env?: Record<string, string>;\n cwd?: string;\n}\n/**\n * Request to delete a session\n */\nexport interface SessionDeleteRequest {\n sessionId: string;\n}\n//# sourceMappingURL=request-types.d.ts.map","/**\n * Centralized error code registry\n * Each code maps to a specific error type with consistent semantics\n */\nexport declare const ErrorCode: {\n readonly FILE_NOT_FOUND: \"FILE_NOT_FOUND\";\n readonly PERMISSION_DENIED: \"PERMISSION_DENIED\";\n readonly FILE_EXISTS: \"FILE_EXISTS\";\n readonly IS_DIRECTORY: \"IS_DIRECTORY\";\n readonly NOT_DIRECTORY: \"NOT_DIRECTORY\";\n readonly NO_SPACE: \"NO_SPACE\";\n readonly TOO_MANY_FILES: \"TOO_MANY_FILES\";\n readonly RESOURCE_BUSY: \"RESOURCE_BUSY\";\n readonly READ_ONLY: \"READ_ONLY\";\n readonly NAME_TOO_LONG: \"NAME_TOO_LONG\";\n readonly TOO_MANY_LINKS: \"TOO_MANY_LINKS\";\n readonly FILESYSTEM_ERROR: \"FILESYSTEM_ERROR\";\n readonly COMMAND_NOT_FOUND: \"COMMAND_NOT_FOUND\";\n readonly COMMAND_PERMISSION_DENIED: \"COMMAND_PERMISSION_DENIED\";\n readonly INVALID_COMMAND: \"INVALID_COMMAND\";\n readonly COMMAND_EXECUTION_ERROR: \"COMMAND_EXECUTION_ERROR\";\n readonly STREAM_START_ERROR: \"STREAM_START_ERROR\";\n readonly PROCESS_NOT_FOUND: \"PROCESS_NOT_FOUND\";\n readonly PROCESS_PERMISSION_DENIED: \"PROCESS_PERMISSION_DENIED\";\n readonly PROCESS_ERROR: \"PROCESS_ERROR\";\n readonly PORT_ALREADY_EXPOSED: \"PORT_ALREADY_EXPOSED\";\n readonly PORT_IN_USE: \"PORT_IN_USE\";\n readonly PORT_NOT_EXPOSED: \"PORT_NOT_EXPOSED\";\n readonly INVALID_PORT_NUMBER: \"INVALID_PORT_NUMBER\";\n readonly INVALID_PORT: \"INVALID_PORT\";\n readonly SERVICE_NOT_RESPONDING: \"SERVICE_NOT_RESPONDING\";\n readonly PORT_OPERATION_ERROR: \"PORT_OPERATION_ERROR\";\n readonly CUSTOM_DOMAIN_REQUIRED: \"CUSTOM_DOMAIN_REQUIRED\";\n readonly GIT_REPOSITORY_NOT_FOUND: \"GIT_REPOSITORY_NOT_FOUND\";\n readonly GIT_BRANCH_NOT_FOUND: \"GIT_BRANCH_NOT_FOUND\";\n readonly GIT_AUTH_FAILED: \"GIT_AUTH_FAILED\";\n readonly GIT_NETWORK_ERROR: \"GIT_NETWORK_ERROR\";\n readonly INVALID_GIT_URL: \"INVALID_GIT_URL\";\n readonly GIT_CLONE_FAILED: \"GIT_CLONE_FAILED\";\n readonly GIT_CHECKOUT_FAILED: \"GIT_CHECKOUT_FAILED\";\n readonly GIT_OPERATION_FAILED: \"GIT_OPERATION_FAILED\";\n readonly BUCKET_MOUNT_ERROR: \"BUCKET_MOUNT_ERROR\";\n readonly S3FS_MOUNT_ERROR: \"S3FS_MOUNT_ERROR\";\n readonly MISSING_CREDENTIALS: \"MISSING_CREDENTIALS\";\n readonly INVALID_MOUNT_CONFIG: \"INVALID_MOUNT_CONFIG\";\n readonly INTERPRETER_NOT_READY: \"INTERPRETER_NOT_READY\";\n readonly CONTEXT_NOT_FOUND: \"CONTEXT_NOT_FOUND\";\n readonly CODE_EXECUTION_ERROR: \"CODE_EXECUTION_ERROR\";\n readonly PYTHON_NOT_AVAILABLE: \"PYTHON_NOT_AVAILABLE\";\n readonly PROCESS_READY_TIMEOUT: \"PROCESS_READY_TIMEOUT\";\n readonly PROCESS_EXITED_BEFORE_READY: \"PROCESS_EXITED_BEFORE_READY\";\n readonly VALIDATION_FAILED: \"VALIDATION_FAILED\";\n readonly INVALID_JSON_RESPONSE: \"INVALID_JSON_RESPONSE\";\n readonly UNKNOWN_ERROR: \"UNKNOWN_ERROR\";\n readonly INTERNAL_ERROR: \"INTERNAL_ERROR\";\n};\nexport type ErrorCode = (typeof ErrorCode)[keyof typeof ErrorCode];\n//# sourceMappingURL=codes.d.ts.map","import type { ErrorCode } from './codes';\n/**\n * Standard operation types\n */\nexport declare const Operation: {\n readonly FILE_READ: \"file.read\";\n readonly FILE_WRITE: \"file.write\";\n readonly FILE_DELETE: \"file.delete\";\n readonly FILE_MOVE: \"file.move\";\n readonly FILE_RENAME: \"file.rename\";\n readonly FILE_STAT: \"file.stat\";\n readonly DIRECTORY_CREATE: \"directory.create\";\n readonly DIRECTORY_LIST: \"directory.list\";\n readonly COMMAND_EXECUTE: \"command.execute\";\n readonly COMMAND_STREAM: \"command.stream\";\n readonly PROCESS_START: \"process.start\";\n readonly PROCESS_KILL: \"process.kill\";\n readonly PROCESS_LIST: \"process.list\";\n readonly PROCESS_GET: \"process.get\";\n readonly PROCESS_LOGS: \"process.logs\";\n readonly PORT_EXPOSE: \"port.expose\";\n readonly PORT_UNEXPOSE: \"port.unexpose\";\n readonly PORT_LIST: \"port.list\";\n readonly PORT_PROXY: \"port.proxy\";\n readonly GIT_CLONE: \"git.clone\";\n readonly GIT_CHECKOUT: \"git.checkout\";\n readonly GIT_OPERATION: \"git.operation\";\n readonly CODE_EXECUTE: \"code.execute\";\n readonly CODE_CONTEXT_CREATE: \"code.context.create\";\n readonly CODE_CONTEXT_DELETE: \"code.context.delete\";\n};\nexport type OperationType = (typeof Operation)[keyof typeof Operation];\n/**\n * Standard error response format with generic context type\n * TContext allows type-safe access to error-specific context\n */\nexport interface ErrorResponse<TContext = Record<string, unknown>> {\n /**\n * Error type code (machine-readable)\n */\n code: ErrorCode;\n /**\n * Human-readable error message\n */\n message: string;\n /**\n * Operation that was attempted (useful for debugging and logging)\n */\n operation?: OperationType;\n /**\n * Structured error context with relevant details\n * Type varies based on error code\n */\n context: TContext;\n /**\n * HTTP status code (for client SDK)\n */\n httpStatus: number;\n /**\n * Timestamp when error occurred\n */\n timestamp: string;\n /**\n * Actionable suggestion for fixing the error\n */\n suggestion?: string;\n /**\n * Link to documentation\n */\n documentation?: string;\n}\n/**\n * Container ServiceError (lightweight, enriched by handlers)\n */\nexport interface ServiceError {\n message: string;\n code: ErrorCode;\n details?: Record<string, unknown>;\n}\n/**\n * ServiceResult type for container services\n */\nexport type ServiceResult<T> = {\n success: true;\n data: T;\n} | {\n success: false;\n error: ServiceError;\n};\n//# sourceMappingURL=types.d.ts.map","import type { OperationType } from './types';\n/**\n * File system error contexts\n */\nexport interface FileNotFoundContext {\n path: string;\n operation: OperationType;\n}\nexport interface FileExistsContext {\n path: string;\n operation: OperationType;\n}\nexport interface FileSystemContext {\n path: string;\n operation: OperationType;\n stderr?: string;\n exitCode?: number;\n}\n/**\n * Command error contexts\n */\nexport interface CommandNotFoundContext {\n command: string;\n}\nexport interface CommandErrorContext {\n command: string;\n exitCode?: number;\n stdout?: string;\n stderr?: string;\n}\n/**\n * Process error contexts\n */\nexport interface ProcessNotFoundContext {\n processId: string;\n}\nexport interface ProcessErrorContext {\n processId: string;\n pid?: number;\n exitCode?: number;\n stderr?: string;\n}\n/**\n * Process readiness error contexts\n */\nexport interface ProcessReadyTimeoutContext {\n processId: string;\n command: string;\n condition: string;\n timeout: number;\n}\nexport interface ProcessExitedBeforeReadyContext {\n processId: string;\n command: string;\n condition: string;\n exitCode: number;\n}\n/**\n * Port error contexts\n */\nexport interface PortAlreadyExposedContext {\n port: number;\n portName?: string;\n}\nexport interface PortNotExposedContext {\n port: number;\n}\nexport interface InvalidPortContext {\n port: number;\n reason: string;\n}\nexport interface PortErrorContext {\n port: number;\n portName?: string;\n stderr?: string;\n}\n/**\n * Git error contexts\n */\nexport interface GitRepositoryNotFoundContext {\n repository: string;\n}\nexport interface GitAuthFailedContext {\n repository: string;\n}\nexport interface GitBranchNotFoundContext {\n branch: string;\n repository?: string;\n}\nexport interface GitErrorContext {\n repository?: string;\n branch?: string;\n targetDir?: string;\n stderr?: string;\n exitCode?: number;\n}\n/**\n * Code interpreter error contexts\n */\nexport interface InterpreterNotReadyContext {\n retryAfter?: number;\n progress?: number;\n}\nexport interface ContextNotFoundContext {\n contextId: string;\n}\nexport interface CodeExecutionContext {\n contextId?: string;\n ename?: string;\n evalue?: string;\n traceback?: string[];\n}\n/**\n * Validation error contexts\n */\nexport interface ValidationFailedContext {\n validationErrors: Array<{\n field: string;\n message: string;\n code?: string;\n }>;\n}\n/**\n * Bucket mounting error contexts\n */\nexport interface BucketMountContext {\n bucket: string;\n mountPath: string;\n endpoint: string;\n stderr?: string;\n exitCode?: number;\n}\nexport interface MissingCredentialsContext {\n bucket: string;\n endpoint: string;\n}\nexport interface InvalidMountConfigContext {\n bucket?: string;\n mountPath?: string;\n endpoint?: string;\n reason?: string;\n}\n/**\n * Generic error contexts\n */\nexport interface InternalErrorContext {\n originalError?: string;\n stack?: string;\n [key: string]: unknown;\n}\n//# sourceMappingURL=contexts.d.ts.map"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":["ExecuteRequest","Record","StartProcessRequest","ReadFileRequest","WriteFileRequest","DeleteFileRequest","RenameFileRequest","MoveFileRequest","MkdirRequest","FileExistsRequest","ExposePortRequest","GitCheckoutRequest","SessionCreateRequest","SessionDeleteRequest"],"sources":["../../shared/dist/request-types.d.ts","../src/errors/classes.ts","../src/file-stream.ts","../src/interpreter.ts","../src/request-handler.ts","../src/sse-parser.ts","../src/storage-mount/errors.ts"],"sourcesContent":["/**\n * Request types for API calls to the container\n * These types enforce the contract between the Durable Object client and container handlers\n *\n * IMPORTANT: These types must match the Zod schemas in:\n * @repo/sandbox-container/src/validation/schemas.ts\n */\n/**\n * Request to execute a command\n */\nexport interface ExecuteRequest {\n command: string;\n sessionId?: string;\n background?: boolean;\n timeoutMs?: number;\n env?: Record<string, string>;\n cwd?: string;\n}\n/**\n * Request to start a background process\n * Uses flat structure consistent with other endpoints\n */\nexport interface StartProcessRequest {\n command: string;\n sessionId?: string;\n processId?: string;\n timeoutMs?: number;\n env?: Record<string, string>;\n cwd?: string;\n encoding?: string;\n autoCleanup?: boolean;\n}\n/**\n * Request to read a file\n */\nexport interface ReadFileRequest {\n path: string;\n encoding?: string;\n sessionId?: string;\n}\n/**\n * Request to write a file\n */\nexport interface WriteFileRequest {\n path: string;\n content: string;\n encoding?: string;\n sessionId?: string;\n}\n/**\n * Request to delete a file\n */\nexport interface DeleteFileRequest {\n path: string;\n sessionId?: string;\n}\n/**\n * Request to rename a file\n */\nexport interface RenameFileRequest {\n oldPath: string;\n newPath: string;\n sessionId?: string;\n}\n/**\n * Request to move a file\n */\nexport interface MoveFileRequest {\n sourcePath: string;\n destinationPath: string;\n sessionId?: string;\n}\n/**\n * Request to create a directory\n */\nexport interface MkdirRequest {\n path: string;\n recursive?: boolean;\n sessionId?: string;\n}\n/**\n * Request to check if a file or directory exists\n */\nexport interface FileExistsRequest {\n path: string;\n sessionId?: string;\n}\n/**\n * Request to expose a port\n */\nexport interface ExposePortRequest {\n port: number;\n name?: string;\n}\n/**\n * Request to clone a Git repository\n */\nexport interface GitCheckoutRequest {\n repoUrl: string;\n branch?: string;\n targetDir?: string;\n sessionId?: string;\n}\n/**\n * Request to create a session\n */\nexport interface SessionCreateRequest {\n id?: string;\n name?: string;\n env?: Record<string, string>;\n cwd?: string;\n}\n/**\n * Request to delete a session\n */\nexport interface SessionDeleteRequest {\n sessionId: string;\n}\n//# sourceMappingURL=request-types.d.ts.map"],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,124 +1,7 @@
|
|
|
1
|
-
import { a as shellEscape, c as TraceContext, d as GitLogger, f as getEnvString, i as isTerminalStatus, l as Execution, n as isProcess, o as createLogger, r as isProcessStatus, s as createNoOpLogger, t as isExecResult, u as ResultImpl } from "./dist-
|
|
1
|
+
import { a as shellEscape, c as TraceContext, d as GitLogger, f as getEnvString, i as isTerminalStatus, l as Execution, n as isProcess, o as createLogger, r as isProcessStatus, s as createNoOpLogger, t as isExecResult, u as ResultImpl } from "./dist-2SF6oOaz.js";
|
|
2
|
+
import { t as ErrorCode } from "./errors-BCXUmJUn.js";
|
|
2
3
|
import { Container, getContainer, switchPort } from "@cloudflare/containers";
|
|
3
4
|
|
|
4
|
-
//#region ../shared/dist/errors/codes.js
|
|
5
|
-
/**
|
|
6
|
-
* Centralized error code registry
|
|
7
|
-
* Each code maps to a specific error type with consistent semantics
|
|
8
|
-
*/
|
|
9
|
-
const ErrorCode = {
|
|
10
|
-
FILE_NOT_FOUND: "FILE_NOT_FOUND",
|
|
11
|
-
PERMISSION_DENIED: "PERMISSION_DENIED",
|
|
12
|
-
FILE_EXISTS: "FILE_EXISTS",
|
|
13
|
-
IS_DIRECTORY: "IS_DIRECTORY",
|
|
14
|
-
NOT_DIRECTORY: "NOT_DIRECTORY",
|
|
15
|
-
NO_SPACE: "NO_SPACE",
|
|
16
|
-
TOO_MANY_FILES: "TOO_MANY_FILES",
|
|
17
|
-
RESOURCE_BUSY: "RESOURCE_BUSY",
|
|
18
|
-
READ_ONLY: "READ_ONLY",
|
|
19
|
-
NAME_TOO_LONG: "NAME_TOO_LONG",
|
|
20
|
-
TOO_MANY_LINKS: "TOO_MANY_LINKS",
|
|
21
|
-
FILESYSTEM_ERROR: "FILESYSTEM_ERROR",
|
|
22
|
-
COMMAND_NOT_FOUND: "COMMAND_NOT_FOUND",
|
|
23
|
-
COMMAND_PERMISSION_DENIED: "COMMAND_PERMISSION_DENIED",
|
|
24
|
-
INVALID_COMMAND: "INVALID_COMMAND",
|
|
25
|
-
COMMAND_EXECUTION_ERROR: "COMMAND_EXECUTION_ERROR",
|
|
26
|
-
STREAM_START_ERROR: "STREAM_START_ERROR",
|
|
27
|
-
PROCESS_NOT_FOUND: "PROCESS_NOT_FOUND",
|
|
28
|
-
PROCESS_PERMISSION_DENIED: "PROCESS_PERMISSION_DENIED",
|
|
29
|
-
PROCESS_ERROR: "PROCESS_ERROR",
|
|
30
|
-
PORT_ALREADY_EXPOSED: "PORT_ALREADY_EXPOSED",
|
|
31
|
-
PORT_IN_USE: "PORT_IN_USE",
|
|
32
|
-
PORT_NOT_EXPOSED: "PORT_NOT_EXPOSED",
|
|
33
|
-
INVALID_PORT_NUMBER: "INVALID_PORT_NUMBER",
|
|
34
|
-
INVALID_PORT: "INVALID_PORT",
|
|
35
|
-
SERVICE_NOT_RESPONDING: "SERVICE_NOT_RESPONDING",
|
|
36
|
-
PORT_OPERATION_ERROR: "PORT_OPERATION_ERROR",
|
|
37
|
-
CUSTOM_DOMAIN_REQUIRED: "CUSTOM_DOMAIN_REQUIRED",
|
|
38
|
-
GIT_REPOSITORY_NOT_FOUND: "GIT_REPOSITORY_NOT_FOUND",
|
|
39
|
-
GIT_BRANCH_NOT_FOUND: "GIT_BRANCH_NOT_FOUND",
|
|
40
|
-
GIT_AUTH_FAILED: "GIT_AUTH_FAILED",
|
|
41
|
-
GIT_NETWORK_ERROR: "GIT_NETWORK_ERROR",
|
|
42
|
-
INVALID_GIT_URL: "INVALID_GIT_URL",
|
|
43
|
-
GIT_CLONE_FAILED: "GIT_CLONE_FAILED",
|
|
44
|
-
GIT_CHECKOUT_FAILED: "GIT_CHECKOUT_FAILED",
|
|
45
|
-
GIT_OPERATION_FAILED: "GIT_OPERATION_FAILED",
|
|
46
|
-
BUCKET_MOUNT_ERROR: "BUCKET_MOUNT_ERROR",
|
|
47
|
-
S3FS_MOUNT_ERROR: "S3FS_MOUNT_ERROR",
|
|
48
|
-
MISSING_CREDENTIALS: "MISSING_CREDENTIALS",
|
|
49
|
-
INVALID_MOUNT_CONFIG: "INVALID_MOUNT_CONFIG",
|
|
50
|
-
INTERPRETER_NOT_READY: "INTERPRETER_NOT_READY",
|
|
51
|
-
CONTEXT_NOT_FOUND: "CONTEXT_NOT_FOUND",
|
|
52
|
-
CODE_EXECUTION_ERROR: "CODE_EXECUTION_ERROR",
|
|
53
|
-
PYTHON_NOT_AVAILABLE: "PYTHON_NOT_AVAILABLE",
|
|
54
|
-
PROCESS_READY_TIMEOUT: "PROCESS_READY_TIMEOUT",
|
|
55
|
-
PROCESS_EXITED_BEFORE_READY: "PROCESS_EXITED_BEFORE_READY",
|
|
56
|
-
VALIDATION_FAILED: "VALIDATION_FAILED",
|
|
57
|
-
INVALID_JSON_RESPONSE: "INVALID_JSON_RESPONSE",
|
|
58
|
-
UNKNOWN_ERROR: "UNKNOWN_ERROR",
|
|
59
|
-
INTERNAL_ERROR: "INTERNAL_ERROR"
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
//#endregion
|
|
63
|
-
//#region ../shared/dist/errors/status-map.js
|
|
64
|
-
/**
|
|
65
|
-
* Maps error codes to HTTP status codes
|
|
66
|
-
* Centralized mapping ensures consistency across SDK
|
|
67
|
-
*/
|
|
68
|
-
const ERROR_STATUS_MAP = {
|
|
69
|
-
[ErrorCode.FILE_NOT_FOUND]: 404,
|
|
70
|
-
[ErrorCode.COMMAND_NOT_FOUND]: 404,
|
|
71
|
-
[ErrorCode.PROCESS_NOT_FOUND]: 404,
|
|
72
|
-
[ErrorCode.PORT_NOT_EXPOSED]: 404,
|
|
73
|
-
[ErrorCode.GIT_REPOSITORY_NOT_FOUND]: 404,
|
|
74
|
-
[ErrorCode.GIT_BRANCH_NOT_FOUND]: 404,
|
|
75
|
-
[ErrorCode.CONTEXT_NOT_FOUND]: 404,
|
|
76
|
-
[ErrorCode.IS_DIRECTORY]: 400,
|
|
77
|
-
[ErrorCode.NOT_DIRECTORY]: 400,
|
|
78
|
-
[ErrorCode.INVALID_COMMAND]: 400,
|
|
79
|
-
[ErrorCode.INVALID_PORT_NUMBER]: 400,
|
|
80
|
-
[ErrorCode.INVALID_PORT]: 400,
|
|
81
|
-
[ErrorCode.INVALID_GIT_URL]: 400,
|
|
82
|
-
[ErrorCode.CUSTOM_DOMAIN_REQUIRED]: 400,
|
|
83
|
-
[ErrorCode.INVALID_JSON_RESPONSE]: 400,
|
|
84
|
-
[ErrorCode.NAME_TOO_LONG]: 400,
|
|
85
|
-
[ErrorCode.VALIDATION_FAILED]: 400,
|
|
86
|
-
[ErrorCode.MISSING_CREDENTIALS]: 400,
|
|
87
|
-
[ErrorCode.INVALID_MOUNT_CONFIG]: 400,
|
|
88
|
-
[ErrorCode.GIT_AUTH_FAILED]: 401,
|
|
89
|
-
[ErrorCode.PERMISSION_DENIED]: 403,
|
|
90
|
-
[ErrorCode.COMMAND_PERMISSION_DENIED]: 403,
|
|
91
|
-
[ErrorCode.PROCESS_PERMISSION_DENIED]: 403,
|
|
92
|
-
[ErrorCode.READ_ONLY]: 403,
|
|
93
|
-
[ErrorCode.FILE_EXISTS]: 409,
|
|
94
|
-
[ErrorCode.PORT_ALREADY_EXPOSED]: 409,
|
|
95
|
-
[ErrorCode.PORT_IN_USE]: 409,
|
|
96
|
-
[ErrorCode.RESOURCE_BUSY]: 409,
|
|
97
|
-
[ErrorCode.SERVICE_NOT_RESPONDING]: 502,
|
|
98
|
-
[ErrorCode.GIT_NETWORK_ERROR]: 502,
|
|
99
|
-
[ErrorCode.PYTHON_NOT_AVAILABLE]: 501,
|
|
100
|
-
[ErrorCode.INTERPRETER_NOT_READY]: 503,
|
|
101
|
-
[ErrorCode.PROCESS_READY_TIMEOUT]: 408,
|
|
102
|
-
[ErrorCode.PROCESS_EXITED_BEFORE_READY]: 500,
|
|
103
|
-
[ErrorCode.NO_SPACE]: 500,
|
|
104
|
-
[ErrorCode.TOO_MANY_FILES]: 500,
|
|
105
|
-
[ErrorCode.TOO_MANY_LINKS]: 500,
|
|
106
|
-
[ErrorCode.FILESYSTEM_ERROR]: 500,
|
|
107
|
-
[ErrorCode.COMMAND_EXECUTION_ERROR]: 500,
|
|
108
|
-
[ErrorCode.STREAM_START_ERROR]: 500,
|
|
109
|
-
[ErrorCode.PROCESS_ERROR]: 500,
|
|
110
|
-
[ErrorCode.PORT_OPERATION_ERROR]: 500,
|
|
111
|
-
[ErrorCode.GIT_CLONE_FAILED]: 500,
|
|
112
|
-
[ErrorCode.GIT_CHECKOUT_FAILED]: 500,
|
|
113
|
-
[ErrorCode.GIT_OPERATION_FAILED]: 500,
|
|
114
|
-
[ErrorCode.CODE_EXECUTION_ERROR]: 500,
|
|
115
|
-
[ErrorCode.BUCKET_MOUNT_ERROR]: 500,
|
|
116
|
-
[ErrorCode.S3FS_MOUNT_ERROR]: 500,
|
|
117
|
-
[ErrorCode.UNKNOWN_ERROR]: 500,
|
|
118
|
-
[ErrorCode.INTERNAL_ERROR]: 500
|
|
119
|
-
};
|
|
120
|
-
|
|
121
|
-
//#endregion
|
|
122
5
|
//#region src/errors/classes.ts
|
|
123
6
|
/**
|
|
124
7
|
* Base SDK error that wraps ErrorResponse
|
|
@@ -287,6 +170,18 @@ var ProcessError = class extends SandboxError {
|
|
|
287
170
|
}
|
|
288
171
|
};
|
|
289
172
|
/**
|
|
173
|
+
* Error thrown when a session already exists
|
|
174
|
+
*/
|
|
175
|
+
var SessionAlreadyExistsError = class extends SandboxError {
|
|
176
|
+
constructor(errorResponse) {
|
|
177
|
+
super(errorResponse);
|
|
178
|
+
this.name = "SessionAlreadyExistsError";
|
|
179
|
+
}
|
|
180
|
+
get sessionId() {
|
|
181
|
+
return this.context.sessionId;
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
/**
|
|
290
185
|
* Error thrown when a port is already exposed
|
|
291
186
|
*/
|
|
292
187
|
var PortAlreadyExposedError = class extends SandboxError {
|
|
@@ -645,6 +540,7 @@ function createErrorFromResponse(errorResponse) {
|
|
|
645
540
|
case ErrorCode.PROCESS_NOT_FOUND: return new ProcessNotFoundError(errorResponse);
|
|
646
541
|
case ErrorCode.PROCESS_PERMISSION_DENIED:
|
|
647
542
|
case ErrorCode.PROCESS_ERROR: return new ProcessError(errorResponse);
|
|
543
|
+
case ErrorCode.SESSION_ALREADY_EXISTS: return new SessionAlreadyExistsError(errorResponse);
|
|
648
544
|
case ErrorCode.PORT_ALREADY_EXPOSED: return new PortAlreadyExposedError(errorResponse);
|
|
649
545
|
case ErrorCode.PORT_NOT_EXPOSED: return new PortNotExposedError(errorResponse);
|
|
650
546
|
case ErrorCode.INVALID_PORT_NUMBER:
|
|
@@ -793,7 +689,7 @@ var BaseHttpClient = class {
|
|
|
793
689
|
* Utility method to log successful operations
|
|
794
690
|
*/
|
|
795
691
|
logSuccess(operation, details) {
|
|
796
|
-
this.logger.info(
|
|
692
|
+
this.logger.info(operation, details ? { details } : void 0);
|
|
797
693
|
}
|
|
798
694
|
/**
|
|
799
695
|
* Utility method to log errors intelligently
|
|
@@ -2123,7 +2019,7 @@ function resolveS3fsOptions(provider, userOptions) {
|
|
|
2123
2019
|
* This file is auto-updated by .github/changeset-version.ts during releases
|
|
2124
2020
|
* DO NOT EDIT MANUALLY - Changes will be overwritten on the next version bump
|
|
2125
2021
|
*/
|
|
2126
|
-
const SDK_VERSION = "0.6.
|
|
2022
|
+
const SDK_VERSION = "0.6.5";
|
|
2127
2023
|
|
|
2128
2024
|
//#endregion
|
|
2129
2025
|
//#region src/sandbox.ts
|
|
@@ -2571,24 +2467,23 @@ var Sandbox = class extends Container {
|
|
|
2571
2467
|
* we reuse it instead of trying to create a new one.
|
|
2572
2468
|
*/
|
|
2573
2469
|
async ensureDefaultSession() {
|
|
2574
|
-
|
|
2575
|
-
|
|
2576
|
-
|
|
2577
|
-
|
|
2578
|
-
|
|
2579
|
-
|
|
2580
|
-
|
|
2581
|
-
|
|
2470
|
+
const sessionId = `sandbox-${this.sandboxName || "default"}`;
|
|
2471
|
+
if (this.defaultSession === sessionId) return this.defaultSession;
|
|
2472
|
+
try {
|
|
2473
|
+
await this.client.utils.createSession({
|
|
2474
|
+
id: sessionId,
|
|
2475
|
+
env: this.envVars || {},
|
|
2476
|
+
cwd: "/workspace"
|
|
2477
|
+
});
|
|
2478
|
+
this.defaultSession = sessionId;
|
|
2479
|
+
await this.ctx.storage.put("defaultSession", sessionId);
|
|
2480
|
+
this.logger.debug("Default session initialized", { sessionId });
|
|
2481
|
+
} catch (error) {
|
|
2482
|
+
if (error instanceof SessionAlreadyExistsError) {
|
|
2483
|
+
this.logger.debug("Session exists in container but not in DO state, syncing", { sessionId });
|
|
2582
2484
|
this.defaultSession = sessionId;
|
|
2583
2485
|
await this.ctx.storage.put("defaultSession", sessionId);
|
|
2584
|
-
|
|
2585
|
-
} catch (error) {
|
|
2586
|
-
if (error instanceof Error && error.message.includes("already exists")) {
|
|
2587
|
-
this.logger.debug("Reusing existing session after reload", { sessionId });
|
|
2588
|
-
this.defaultSession = sessionId;
|
|
2589
|
-
await this.ctx.storage.put("defaultSession", sessionId);
|
|
2590
|
-
} else throw error;
|
|
2591
|
-
}
|
|
2486
|
+
} else throw error;
|
|
2592
2487
|
}
|
|
2593
2488
|
return this.defaultSession;
|
|
2594
2489
|
}
|
|
@@ -3033,10 +2928,10 @@ var Sandbox = class extends Container {
|
|
|
3033
2928
|
return this.client.processes.streamProcessLogs(processId);
|
|
3034
2929
|
}
|
|
3035
2930
|
async gitCheckout(repoUrl, options) {
|
|
3036
|
-
const session = options
|
|
2931
|
+
const session = options?.sessionId ?? await this.ensureDefaultSession();
|
|
3037
2932
|
return this.client.git.checkout(repoUrl, session, {
|
|
3038
|
-
branch: options
|
|
3039
|
-
targetDir: options
|
|
2933
|
+
branch: options?.branch,
|
|
2934
|
+
targetDir: options?.targetDir
|
|
3040
2935
|
});
|
|
3041
2936
|
}
|
|
3042
2937
|
async mkdir(path, options = {}) {
|