buildfunctions 0.0.7 → 0.0.9
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/README.md +2 -2
- package/dist/client.d.ts +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +23 -16
- package/dist/client.js.map +1 -1
- package/dist/function/cpu-function.d.ts +2 -2
- package/dist/function/cpu-function.d.ts.map +1 -1
- package/dist/function/cpu-function.js +21 -13
- package/dist/function/cpu-function.js.map +1 -1
- package/dist/function/gpu-function.d.ts +1 -1
- package/dist/function/gpu-function.d.ts.map +1 -1
- package/dist/function/gpu-function.js +31 -17
- package/dist/function/gpu-function.js.map +1 -1
- package/dist/function/index.d.ts +2 -2
- package/dist/function/index.d.ts.map +1 -1
- package/dist/function/index.js +2 -2
- package/dist/function/index.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -11
- package/dist/index.js.map +1 -1
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/framework.d.ts.map +1 -0
- package/dist/lib/framework.js.map +1 -0
- package/dist/{utils → lib}/http.d.ts +1 -1
- package/dist/lib/http.d.ts.map +1 -0
- package/dist/{utils → lib}/http.js +3 -3
- package/dist/lib/http.js.map +1 -0
- package/dist/{utils → lib}/index.d.ts +1 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/{utils → lib}/index.js +1 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/memory.d.ts.map +1 -0
- package/dist/lib/memory.js.map +1 -0
- package/dist/lib/resolve-code.d.ts +21 -0
- package/dist/lib/resolve-code.d.ts.map +1 -0
- package/dist/lib/resolve-code.js +111 -0
- package/dist/lib/resolve-code.js.map +1 -0
- package/dist/lib/uploader.d.ts.map +1 -0
- package/dist/lib/uploader.js.map +1 -0
- package/dist/sandbox/cpu-sandbox.d.ts +2 -2
- package/dist/sandbox/cpu-sandbox.d.ts.map +1 -1
- package/dist/sandbox/cpu-sandbox.js +31 -36
- package/dist/sandbox/cpu-sandbox.js.map +1 -1
- package/dist/sandbox/gpu-sandbox.d.ts +2 -2
- package/dist/sandbox/gpu-sandbox.d.ts.map +1 -1
- package/dist/sandbox/gpu-sandbox.js +43 -38
- package/dist/sandbox/gpu-sandbox.js.map +1 -1
- package/dist/sandbox/index.d.ts +2 -2
- package/dist/sandbox/index.d.ts.map +1 -1
- package/dist/sandbox/index.js +2 -2
- package/dist/sandbox/index.js.map +1 -1
- package/dist/types/index.d.ts +5 -7
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/utils/errors.d.ts.map +0 -1
- package/dist/utils/errors.js.map +0 -1
- package/dist/utils/framework.d.ts.map +0 -1
- package/dist/utils/framework.js.map +0 -1
- package/dist/utils/http.d.ts.map +0 -1
- package/dist/utils/http.js.map +0 -1
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/memory.d.ts.map +0 -1
- package/dist/utils/memory.js.map +0 -1
- package/dist/utils/uploader.d.ts.map +0 -1
- package/dist/utils/uploader.js.map +0 -1
- /package/dist/{utils → lib}/errors.d.ts +0 -0
- /package/dist/{utils → lib}/errors.js +0 -0
- /package/dist/{utils → lib}/framework.d.ts +0 -0
- /package/dist/{utils → lib}/framework.js +0 -0
- /package/dist/{utils → lib}/memory.d.ts +0 -0
- /package/dist/{utils → lib}/memory.js +0 -0
- /package/dist/{utils → lib}/uploader.d.ts +0 -0
- /package/dist/{utils → lib}/uploader.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/lib/memory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAmB3D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/lib/memory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,MAAuB;IACjD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAE7C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,2BAA2B,MAAM,2BAA2B,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;IAEvB,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO,KAAK,GAAG,IAAI,CAAC;IACtB,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,KAAK;AACrB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve code parameter - supports both inline code and file paths.
|
|
3
|
+
*
|
|
4
|
+
* If the code string has no newlines and the path exists on disk, reads the file.
|
|
5
|
+
* If the code string looks like a path but the file doesn't exist, throws an error.
|
|
6
|
+
* Otherwise treats it as inline code.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Get the file path of the caller (the file that called the SDK).
|
|
10
|
+
* Used to resolve relative paths against the caller's location.
|
|
11
|
+
* Skips frames that are inside the SDK itself.
|
|
12
|
+
*/
|
|
13
|
+
export declare function getCallerFile(): string | undefined;
|
|
14
|
+
/**
|
|
15
|
+
* Resolve code - supports inline code strings and file paths.
|
|
16
|
+
*
|
|
17
|
+
* @param code - Either inline code or a file path
|
|
18
|
+
* @param basePath - Base directory for resolving relative paths (e.g., caller's directory)
|
|
19
|
+
*/
|
|
20
|
+
export declare function resolveCode(code: string, basePath?: string): Promise<string>;
|
|
21
|
+
//# sourceMappingURL=resolve-code.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-code.d.ts","sourceRoot":"","sources":["../../src/lib/resolve-code.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAYH;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,MAAM,GAAG,SAAS,CA4BlD;AA0BD;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAsClF"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve code parameter - supports both inline code and file paths.
|
|
3
|
+
*
|
|
4
|
+
* If the code string has no newlines and the path exists on disk, reads the file.
|
|
5
|
+
* If the code string looks like a path but the file doesn't exist, throws an error.
|
|
6
|
+
* Otherwise treats it as inline code.
|
|
7
|
+
*/
|
|
8
|
+
import { readFile } from 'fs/promises';
|
|
9
|
+
import { existsSync } from 'fs';
|
|
10
|
+
import { resolve, isAbsolute, dirname } from 'path';
|
|
11
|
+
import { homedir } from 'os';
|
|
12
|
+
import { fileURLToPath } from 'url';
|
|
13
|
+
import { ValidationError } from './errors.js';
|
|
14
|
+
// Determine the SDK's root directory at module load time
|
|
15
|
+
const SDK_DIR = resolve(dirname(fileURLToPath(import.meta.url)), '..');
|
|
16
|
+
/**
|
|
17
|
+
* Get the file path of the caller (the file that called the SDK).
|
|
18
|
+
* Used to resolve relative paths against the caller's location.
|
|
19
|
+
* Skips frames that are inside the SDK itself.
|
|
20
|
+
*/
|
|
21
|
+
export function getCallerFile() {
|
|
22
|
+
const originalPrepareStackTrace = Error.prepareStackTrace;
|
|
23
|
+
try {
|
|
24
|
+
Error.prepareStackTrace = (_, stack) => stack;
|
|
25
|
+
const err = new Error();
|
|
26
|
+
const stack = err.stack;
|
|
27
|
+
for (const frame of stack) {
|
|
28
|
+
const fileName = frame.getFileName();
|
|
29
|
+
if (!fileName)
|
|
30
|
+
continue;
|
|
31
|
+
// Convert file:// URLs to paths
|
|
32
|
+
const filePath = fileName.startsWith('file://')
|
|
33
|
+
? fileURLToPath(fileName)
|
|
34
|
+
: fileName;
|
|
35
|
+
// Skip node internals
|
|
36
|
+
if (filePath.startsWith('node:'))
|
|
37
|
+
continue;
|
|
38
|
+
// Skip files inside the SDK directory
|
|
39
|
+
if (filePath.startsWith(SDK_DIR))
|
|
40
|
+
continue;
|
|
41
|
+
return filePath;
|
|
42
|
+
}
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
finally {
|
|
46
|
+
Error.prepareStackTrace = originalPrepareStackTrace;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const CODE_EXTENSIONS = new Set([
|
|
50
|
+
'.js', '.mjs', '.cjs', '.ts', '.tsx', '.jsx', // JavaScript & TypeScript
|
|
51
|
+
'.py', '.pyw', '.pyi', // Python
|
|
52
|
+
]);
|
|
53
|
+
function looksLikeFilePath(value) {
|
|
54
|
+
if (value.startsWith('/') || value.startsWith('./') || value.startsWith('../') || value.startsWith('~')) {
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
// Windows drive letter (e.g. C:\...)
|
|
58
|
+
if (/^[a-zA-Z]:[\\\/]/.test(value)) {
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
// Ends with a known code file extension
|
|
62
|
+
const dotIndex = value.lastIndexOf('.');
|
|
63
|
+
if (dotIndex > 0) {
|
|
64
|
+
const ext = value.slice(dotIndex).toLowerCase();
|
|
65
|
+
if (CODE_EXTENSIONS.has(ext)) {
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Resolve code - supports inline code strings and file paths.
|
|
73
|
+
*
|
|
74
|
+
* @param code - Either inline code or a file path
|
|
75
|
+
* @param basePath - Base directory for resolving relative paths (e.g., caller's directory)
|
|
76
|
+
*/
|
|
77
|
+
export async function resolveCode(code, basePath) {
|
|
78
|
+
// Inline code almost always contains newlines; file paths never do
|
|
79
|
+
if (code.includes('\n')) {
|
|
80
|
+
return code;
|
|
81
|
+
}
|
|
82
|
+
// Expand ~ to home directory
|
|
83
|
+
let pathToCheck = code;
|
|
84
|
+
if (pathToCheck.startsWith('~/')) {
|
|
85
|
+
pathToCheck = pathToCheck.replace('~', homedir());
|
|
86
|
+
}
|
|
87
|
+
// Resolve the path:
|
|
88
|
+
// - Absolute paths stay absolute
|
|
89
|
+
// - Relative paths (./foo, ../bar) resolve against basePath if provided
|
|
90
|
+
let resolvedPath;
|
|
91
|
+
if (isAbsolute(pathToCheck)) {
|
|
92
|
+
resolvedPath = pathToCheck;
|
|
93
|
+
}
|
|
94
|
+
else if (basePath) {
|
|
95
|
+
resolvedPath = resolve(basePath, pathToCheck);
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
resolvedPath = resolve(pathToCheck);
|
|
99
|
+
}
|
|
100
|
+
if (existsSync(resolvedPath)) {
|
|
101
|
+
return await readFile(resolvedPath, 'utf-8');
|
|
102
|
+
}
|
|
103
|
+
// If it looks like a path but doesn't exist, give a helpful error
|
|
104
|
+
if (looksLikeFilePath(code)) {
|
|
105
|
+
throw new ValidationError(`Code file not found: "${code}" (resolved to "${resolvedPath}"). ` +
|
|
106
|
+
`If this is meant to be inline code, ensure it is a valid code string.`);
|
|
107
|
+
}
|
|
108
|
+
// Single-line inline code (e.g. `print("hello")`)
|
|
109
|
+
return code;
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=resolve-code.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-code.js","sourceRoot":"","sources":["../../src/lib/resolve-code.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uploader.d.ts","sourceRoot":"","sources":["../../src/lib/uploader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,uBAAuB;IAC/B,eAAe,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,CAAC;IACrE,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,qBAAqB;IAC7B,6BAA6B,EAAE;QAC7B,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;KACtD,CAAC;IACF,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE;QACZ,SAAS,EAAE,MAAM,CAAC;QAClB,8BAA8B,EAAE,MAAM,CAAC;KACxC,CAAC;CACH;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYrF;AA4BD,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAAE,EACpB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CA6Cf;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,EAAE,CA6BnE;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,YAAY,EAAE,EACrB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAC/C,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CA+Bf;AAED,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,YAAY,EAAE,EACrB,kBAAkB,EAAE,MAAM,EAC1B,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAuCf;AAED,YAAY,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uploader.js","sourceRoot":"","sources":["../../src/lib/uploader.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import type { CPUSandboxConfig, CPUSandboxInstance } from '../types/index.js';
|
|
5
5
|
/**
|
|
6
|
-
* Set the API
|
|
6
|
+
* Set the API token for sandbox operations
|
|
7
7
|
*/
|
|
8
|
-
export declare function
|
|
8
|
+
export declare function setCpuSandboxApiToken(apiToken: string, baseUrl?: string): void;
|
|
9
9
|
/**
|
|
10
10
|
* CPU Sandbox factory
|
|
11
11
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cpu-sandbox.d.ts","sourceRoot":"","sources":["../../src/sandbox/cpu-sandbox.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAA4B,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"cpu-sandbox.d.ts","sourceRoot":"","sources":["../../src/sandbox/cpu-sandbox.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAA4B,MAAM,mBAAmB,CAAC;AA2GxG;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAG9E;AAiJD;;GAEG;AACH,eAAO,MAAM,UAAU;IACrB;;OAEG;qBACoB,gBAAgB,KAAG,OAAO,CAAC,kBAAkB,CAAC;CA8EtE,CAAC"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* CPU Sandbox - Hardware-isolated execution environment for untrusted AI actions
|
|
3
3
|
*/
|
|
4
|
-
import { ValidationError, BuildfunctionsError } from '../
|
|
5
|
-
import { parseMemory } from '../
|
|
4
|
+
import { ValidationError, BuildfunctionsError } from '../lib/errors.js';
|
|
5
|
+
import { parseMemory } from '../lib/memory.js';
|
|
6
|
+
import { resolveCode, getCallerFile } from '../lib/resolve-code.js';
|
|
7
|
+
import { dirname } from 'path';
|
|
6
8
|
import { readFile } from 'fs/promises';
|
|
7
9
|
import { existsSync } from 'fs';
|
|
8
10
|
import dns from 'dns';
|
|
@@ -73,10 +75,9 @@ async function waitForEndpoint(endpoint, maxAttempts = 60, delayMs = 500) {
|
|
|
73
75
|
if (res.status >= 200 && res.status < 500)
|
|
74
76
|
return;
|
|
75
77
|
}
|
|
76
|
-
catch
|
|
77
|
-
const error = err;
|
|
78
|
+
catch {
|
|
78
79
|
if (attempt === 1 || attempt % 10 === 0) {
|
|
79
|
-
console.log(` Waiting
|
|
80
|
+
console.log(` Waiting... (attempt ${attempt}/${maxAttempts})`);
|
|
80
81
|
}
|
|
81
82
|
}
|
|
82
83
|
await new Promise(r => setTimeout(r, delayMs));
|
|
@@ -94,13 +95,13 @@ async function fetchWithAuthDNS(endpoint) {
|
|
|
94
95
|
return httpsGetWithIP(ip, hostname, path);
|
|
95
96
|
}
|
|
96
97
|
// Global configuration
|
|
97
|
-
let
|
|
98
|
+
let globalApiToken = null;
|
|
98
99
|
let globalBaseUrl;
|
|
99
100
|
/**
|
|
100
|
-
* Set the API
|
|
101
|
+
* Set the API token for sandbox operations
|
|
101
102
|
*/
|
|
102
|
-
export function
|
|
103
|
-
|
|
103
|
+
export function setCpuSandboxApiToken(apiToken, baseUrl) {
|
|
104
|
+
globalApiToken = apiToken;
|
|
104
105
|
globalBaseUrl = baseUrl;
|
|
105
106
|
}
|
|
106
107
|
function formatRequirements(requirements) {
|
|
@@ -125,7 +126,7 @@ function validateConfig(config) {
|
|
|
125
126
|
/**
|
|
126
127
|
* Create a CPU sandbox instance
|
|
127
128
|
*/
|
|
128
|
-
function createCPUSandboxInstance(id, name, runtime, endpoint,
|
|
129
|
+
function createCPUSandboxInstance(id, name, runtime, endpoint, apiToken, baseUrl) {
|
|
129
130
|
let deleted = false;
|
|
130
131
|
const run = async () => {
|
|
131
132
|
if (deleted) {
|
|
@@ -139,31 +140,20 @@ function createCPUSandboxInstance(id, name, runtime, endpoint, apiKey, baseUrl)
|
|
|
139
140
|
if (!responseText) {
|
|
140
141
|
throw new BuildfunctionsError('Empty response from sandbox', 'UNKNOWN_ERROR', response.status);
|
|
141
142
|
}
|
|
143
|
+
if (response.status < 200 || response.status >= 300) {
|
|
144
|
+
throw new BuildfunctionsError(`Execution failed: ${responseText}`, 'UNKNOWN_ERROR', response.status);
|
|
145
|
+
}
|
|
146
|
+
// Try to parse as JSON, otherwise return raw text
|
|
142
147
|
let data;
|
|
143
148
|
try {
|
|
144
149
|
data = JSON.parse(responseText);
|
|
145
150
|
}
|
|
146
151
|
catch {
|
|
147
|
-
|
|
148
|
-
return {
|
|
149
|
-
stdout: responseText,
|
|
150
|
-
stderr: '',
|
|
151
|
-
text: responseText,
|
|
152
|
-
results: null,
|
|
153
|
-
exit_code: 0,
|
|
154
|
-
};
|
|
155
|
-
}
|
|
156
|
-
if (response.status < 200 || response.status >= 300) {
|
|
157
|
-
const errorData = data;
|
|
158
|
-
throw new BuildfunctionsError(`Execution failed: ${errorData.error || 'Unknown error'}`, 'UNKNOWN_ERROR', response.status);
|
|
152
|
+
data = responseText;
|
|
159
153
|
}
|
|
160
|
-
// Response is already the unwrapped result from the handler
|
|
161
154
|
return {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
text: responseText,
|
|
165
|
-
results: data,
|
|
166
|
-
exit_code: 0,
|
|
155
|
+
response: data,
|
|
156
|
+
status: response.status,
|
|
167
157
|
};
|
|
168
158
|
};
|
|
169
159
|
const upload = async (options) => {
|
|
@@ -185,7 +175,7 @@ function createCPUSandboxInstance(id, name, runtime, endpoint, apiKey, baseUrl)
|
|
|
185
175
|
method: 'POST',
|
|
186
176
|
headers: {
|
|
187
177
|
'Content-Type': 'application/json',
|
|
188
|
-
Authorization: `Bearer ${
|
|
178
|
+
Authorization: `Bearer ${apiToken}`,
|
|
189
179
|
},
|
|
190
180
|
body: JSON.stringify({
|
|
191
181
|
sandboxId: id,
|
|
@@ -206,7 +196,7 @@ function createCPUSandboxInstance(id, name, runtime, endpoint, apiKey, baseUrl)
|
|
|
206
196
|
method: 'DELETE',
|
|
207
197
|
headers: {
|
|
208
198
|
'Content-Type': 'application/json',
|
|
209
|
-
Authorization: `Bearer ${
|
|
199
|
+
Authorization: `Bearer ${apiToken}`,
|
|
210
200
|
},
|
|
211
201
|
body: JSON.stringify({
|
|
212
202
|
sandboxId: id,
|
|
@@ -237,7 +227,10 @@ export const CPUSandbox = {
|
|
|
237
227
|
* Create a new CPU sandbox
|
|
238
228
|
*/
|
|
239
229
|
create: async (config) => {
|
|
240
|
-
|
|
230
|
+
// Capture caller file FIRST before any async operations change the call stack
|
|
231
|
+
const callerFile = getCallerFile();
|
|
232
|
+
const callerDir = callerFile ? dirname(callerFile) : undefined;
|
|
233
|
+
if (!globalApiToken) {
|
|
241
234
|
throw new ValidationError('API key not set. Initialize Buildfunctions client first.');
|
|
242
235
|
}
|
|
243
236
|
validateConfig(config);
|
|
@@ -247,15 +240,17 @@ export const CPUSandbox = {
|
|
|
247
240
|
// Match CPU function body exactly (from client.ts create function)
|
|
248
241
|
const name = config.name.toLowerCase();
|
|
249
242
|
const fileExt = config.language === 'python' ? '.py' : config.language === 'javascript' ? '.js' : '.py';
|
|
243
|
+
// Resolve code (inline string or file path)
|
|
244
|
+
const resolvedCode = config.code ? await resolveCode(config.code, callerDir) : '';
|
|
250
245
|
const requestBody = {
|
|
251
246
|
// Required by sandbox/create endpoint
|
|
252
247
|
type: 'cpu',
|
|
253
248
|
// Same fields as CPU function
|
|
254
249
|
name,
|
|
255
250
|
fileExt,
|
|
256
|
-
code:
|
|
257
|
-
sourceWith:
|
|
258
|
-
sourceWithout:
|
|
251
|
+
code: resolvedCode,
|
|
252
|
+
sourceWith: resolvedCode,
|
|
253
|
+
sourceWithout: resolvedCode,
|
|
259
254
|
language: config.language,
|
|
260
255
|
runtime: config.runtime ?? config.language,
|
|
261
256
|
memoryAllocated: config.memory ? parseMemory(config.memory) : 128,
|
|
@@ -273,7 +268,7 @@ export const CPUSandbox = {
|
|
|
273
268
|
method: 'POST',
|
|
274
269
|
headers: {
|
|
275
270
|
'Content-Type': 'application/json',
|
|
276
|
-
Authorization: `Bearer ${
|
|
271
|
+
Authorization: `Bearer ${globalApiToken}`,
|
|
277
272
|
},
|
|
278
273
|
body: JSON.stringify(requestBody),
|
|
279
274
|
signal: controller.signal,
|
|
@@ -294,7 +289,7 @@ export const CPUSandbox = {
|
|
|
294
289
|
const sandboxId = data.siteId;
|
|
295
290
|
const sandboxEndpoint = data.endpoint || `https://${name}.buildfunctions.app`;
|
|
296
291
|
const sandboxRuntime = config.runtime ?? config.language;
|
|
297
|
-
return createCPUSandboxInstance(sandboxId, name, sandboxRuntime, sandboxEndpoint,
|
|
292
|
+
return createCPUSandboxInstance(sandboxId, name, sandboxRuntime, sandboxEndpoint, globalApiToken, baseUrl);
|
|
298
293
|
},
|
|
299
294
|
};
|
|
300
295
|
//# sourceMappingURL=cpu-sandbox.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cpu-sandbox.js","sourceRoot":"","sources":["../../src/sandbox/cpu-sandbox.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"cpu-sandbox.js","sourceRoot":"","sources":["../../src/sandbox/cpu-sandbox.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,gBAAgB,GAAG,gCAAgC,CAAC;AAE1D,+DAA+D;AAC/D,gEAAgE;AAChE,MAAM,cAAc,GAAG;IACrB,iBAAiB,EAAE,uBAAuB;IAC1C,iBAAiB,EAAE,wBAAwB;IAC3C,iBAAiB,EAAE,wBAAwB;IAC3C,gBAAgB,EAAG,0BAA0B;CAC9C,CAAC;AAEF,2DAA2D;AAC3D,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;AACvC,WAAW,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AAEvC;;GAEG;AACH,SAAS,cAAc,CAAC,QAAgB;IACtC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE;YAChD,IAAI,GAAG,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAChD,MAAM,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,CAAC;YACzB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,EAAU,EAAE,QAAgB,EAAE,IAAY;IAChE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC;YACxB,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;YAC7B,UAAU,EAAE,QAAQ,EAAE,cAAc;YACpC,OAAO,EAAE,KAAK;SACf,EAAE,CAAC,GAAG,EAAE,EAAE;YACT,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;YACvC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,UAAU,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACxB,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,GAAG,CAAC,GAAG,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe,CAAC,QAAgB,EAAE,WAAW,GAAG,EAAE,EAAE,OAAO,GAAG,GAAG;IAC9E,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;IAC9B,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC;IAE9C,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;QACxD,IAAI,CAAC;YACH,wFAAwF;YACxF,MAAM,EAAE,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;YAE1C,8DAA8D;YAC9D,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;YACrD,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG;gBAAE,OAAO;QACpD,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,OAAO,KAAK,CAAC,IAAI,OAAO,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;gBACxC,OAAO,CAAC,GAAG,CAAC,0BAA0B,OAAO,IAAI,WAAW,GAAG,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;QACD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IACjD,CAAC;IACD,MAAM,IAAI,mBAAmB,CAAC,4BAA4B,WAAW,WAAW,EAAE,eAAe,CAAC,CAAC;AACrG,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IAC9C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;IAC9B,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC;IAE9C,MAAM,EAAE,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC1C,OAAO,cAAc,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC5C,CAAC;AAGD,uBAAuB;AACvB,IAAI,cAAc,GAAkB,IAAI,CAAC;AACzC,IAAI,aAAiC,CAAC;AAEtC;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAgB,EAAE,OAAgB;IACtE,cAAc,GAAG,QAAQ,CAAC;IAC1B,aAAa,GAAG,OAAO,CAAC;AAC1B,CAAC;AAED,SAAS,kBAAkB,CAAC,YAA2C;IACrE,IAAI,CAAC,YAAY;QAAE,OAAO,EAAE,CAAC;IAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;QAAE,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChE,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,cAAc,CAAC,MAAwB;IAC9C,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACpD,MAAM,IAAI,eAAe,CAAC,0BAA0B,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC5D,MAAM,IAAI,eAAe,CAAC,sBAAsB,CAAC,CAAC;IACpD,CAAC;IAED,sDAAsD;IACtD,IAAI,MAAM,CAAC,QAAQ,KAAK,YAAY,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACxD,MAAM,IAAI,eAAe,CAAC,wDAAwD,CAAC,CAAC;IACtF,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,wBAAwB,CAC/B,EAAU,EACV,IAAY,EACZ,OAAe,EACf,QAAgB,EAChB,QAAgB,EAChB,OAAe;IAEf,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,MAAM,GAAG,GAAG,KAAK,IAAwB,EAAE;QACzC,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,IAAI,mBAAmB,CAAC,0BAA0B,EAAE,iBAAiB,CAAC,CAAC;QAC/E,CAAC;QAED,gCAAgC;QAChC,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;QAEhC,oDAAoD;QACpD,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAClD,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;QAEnC,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,mBAAmB,CAAC,6BAA6B,EAAE,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACjG,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;YACpD,MAAM,IAAI,mBAAmB,CAAC,qBAAqB,YAAY,EAAE,EAAE,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACvG,CAAC;QAED,kDAAkD;QAClD,IAAI,IAAa,CAAC;QAClB,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,GAAG,YAAY,CAAC;QACtB,CAAC;QAED,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,QAAQ,CAAC,MAAM;SACxB,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,KAAK,EAAE,OAAsB,EAAiB,EAAE;QAC7D,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,IAAI,mBAAmB,CAAC,0BAA0B,EAAE,iBAAiB,CAAC,CAAC;QAC/E,CAAC;QAED,6DAA6D;QAC7D,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC;QAC1D,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAC;QAEvD,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,eAAe,CAAC,4CAA4C,CAAC,CAAC;QAC1E,CAAC;QAED,oBAAoB;QACpB,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,eAAe,CAAC,yBAAyB,SAAS,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAEnD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,yBAAyB,EAAE;YAChE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,QAAQ,EAAE;aACpC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,SAAS,EAAE,EAAE;gBACb,QAAQ;gBACR,OAAO;gBACP,IAAI,EAAE,KAAK;aACZ,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,mBAAmB,CAAC,eAAe,EAAE,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnF,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,KAAK,IAAmB,EAAE;QACzC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,yBAAyB,EAAE;YAChE,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,QAAQ,EAAE;aACpC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,SAAS,EAAE,EAAE;gBACb,IAAI,EAAE,KAAK;aACZ,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,mBAAmB,CAAC,eAAe,EAAE,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnF,CAAC;QAED,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC,CAAC;IAEF,OAAO;QACL,EAAE;QACF,IAAI;QACJ,OAAO;QACP,QAAQ;QACR,IAAI,EAAE,KAAK;QACX,GAAG;QACH,MAAM;QACN,MAAM,EAAE,QAAQ;KACjB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB;;OAEG;IACH,MAAM,EAAE,KAAK,EAAE,MAAwB,EAA+B,EAAE;QACtE,8EAA8E;QAC9E,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE/D,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,eAAe,CAAC,0DAA0D,CAAC,CAAC;QACxF,CAAC;QAED,cAAc,CAAC,MAAM,CAAC,CAAC;QAEvB,MAAM,OAAO,GAAG,aAAa,IAAI,gBAAgB,CAAC;QAElD,uBAAuB;QACvB,MAAM,GAAG,GAAG,GAAG,OAAO,yBAAyB,CAAC;QAEhD,mEAAmE;QACnE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QAExG,4CAA4C;QAC5C,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAElF,MAAM,WAAW,GAAG;YAClB,sCAAsC;YACtC,IAAI,EAAE,KAAK;YACX,8BAA8B;YAC9B,IAAI;YACJ,OAAO;YACP,IAAI,EAAE,YAAY;YAClB,UAAU,EAAE,YAAY;YACxB,aAAa,EAAE,YAAY;YAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ;YAC1C,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG;YACjE,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;YAC7B,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC;YACvD,YAAY,EAAE,kBAAkB,CAAC,MAAM,CAAC,YAAY,CAAC;YACrD,cAAc,EAAE,EAAE;YAClB,SAAS,EAAE,IAAI;YACf,cAAc,EAAE,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,MAAM;YAClD,aAAa,EAAE,CAAC;SACjB,CAAC;QAEF,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,mBAAmB;QAE1F,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,cAAc,EAAE;aAC1C;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;YACjC,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QACH,YAAY,CAAC,SAAS,CAAC,CAAC;QAExB,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAE3C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,mBAAmB,CAAC,6BAA6B,YAAY,EAAE,EAAE,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/G,CAAC;QAED,IAAI,IAA0C,CAAC;QAC/C,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,mBAAmB,CAAC,0BAA0B,YAAY,EAAE,EAAE,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC5G,CAAC;QAED,mCAAmC;QACnC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;QAC9B,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,IAAI,WAAW,IAAI,qBAAqB,CAAC;QAC9E,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC;QAEzD,OAAO,wBAAwB,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;IAC7G,CAAC;CACF,CAAC"}
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import type { GPUSandboxConfig, GPUSandboxInstance } from '../types/index.js';
|
|
5
5
|
/**
|
|
6
|
-
* Set the API
|
|
6
|
+
* Set the API token for GPU Sandbox operations
|
|
7
7
|
*/
|
|
8
|
-
export declare function
|
|
8
|
+
export declare function setGpuSandboxApiToken(apiToken: string, gpuBuildUrl?: string, userId?: string, username?: string, computeTier?: string, baseUrl?: string): void;
|
|
9
9
|
/**
|
|
10
10
|
* GPU Sandbox factory
|
|
11
11
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gpu-sandbox.d.ts","sourceRoot":"","sources":["../../src/sandbox/gpu-sandbox.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAqC,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"gpu-sandbox.d.ts","sourceRoot":"","sources":["../../src/sandbox/gpu-sandbox.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAqC,MAAM,mBAAmB,CAAC;AAsBjH;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,MAAM,GACf,IAAI,CAON;AA6SD;;GAEG;AACH,eAAO,MAAM,UAAU;qBACE,gBAAgB,KAAG,OAAO,CAAC,kBAAkB,CAAC;CA2ItE,CAAC"}
|
|
@@ -2,27 +2,29 @@
|
|
|
2
2
|
* GPU Sandbox - Hardware-isolated execution environment for untrusted AI actions with GPU-acceleration
|
|
3
3
|
*/
|
|
4
4
|
import https from 'https';
|
|
5
|
-
import { ValidationError, BuildfunctionsError } from '../
|
|
6
|
-
import { parseMemory } from '../
|
|
7
|
-
import { detectFramework } from '../
|
|
5
|
+
import { ValidationError, BuildfunctionsError } from '../lib/errors.js';
|
|
6
|
+
import { parseMemory } from '../lib/memory.js';
|
|
7
|
+
import { detectFramework } from '../lib/framework.js';
|
|
8
|
+
import { resolveCode, getCallerFile } from '../lib/resolve-code.js';
|
|
9
|
+
import { dirname } from 'path';
|
|
8
10
|
import { readFile } from 'fs/promises';
|
|
9
11
|
import { existsSync, statSync } from 'fs';
|
|
10
12
|
import { basename } from 'path';
|
|
11
|
-
import { getFilesInDirectory, uploadModelFiles } from '../
|
|
13
|
+
import { getFilesInDirectory, uploadModelFiles } from '../lib/uploader.js';
|
|
12
14
|
const DEFAULT_GPU_BUILD_URL = 'https://prod-gpu-build.buildfunctions.link';
|
|
13
15
|
const DEFAULT_BASE_URL = 'https://www.buildfunctions.com';
|
|
14
16
|
// Global configuration
|
|
15
|
-
let
|
|
17
|
+
let globalApiToken = null;
|
|
16
18
|
let globalGpuBuildUrl;
|
|
17
19
|
let globalBaseUrl;
|
|
18
20
|
let globalUserId;
|
|
19
21
|
let globalUsername;
|
|
20
22
|
let globalComputeTier;
|
|
21
23
|
/**
|
|
22
|
-
* Set the API
|
|
24
|
+
* Set the API token for GPU Sandbox operations
|
|
23
25
|
*/
|
|
24
|
-
export function
|
|
25
|
-
|
|
26
|
+
export function setGpuSandboxApiToken(apiToken, gpuBuildUrl, userId, username, computeTier, baseUrl) {
|
|
27
|
+
globalApiToken = apiToken;
|
|
26
28
|
globalGpuBuildUrl = gpuBuildUrl;
|
|
27
29
|
globalUserId = userId;
|
|
28
30
|
globalUsername = username;
|
|
@@ -127,7 +129,7 @@ function buildRequestBody(config, localModelInfo) {
|
|
|
127
129
|
gpu,
|
|
128
130
|
memoryAllocated: config.memory ? parseMemory(config.memory) : 10000,
|
|
129
131
|
timeout: config.timeout ?? 300,
|
|
130
|
-
cpuCores:
|
|
132
|
+
cpuCores: config.cpuCores ?? 10, // vCPUs for the sandbox VM (hotplugged at runtime)
|
|
131
133
|
envVariables: JSON.stringify(config.envVariables ?? []),
|
|
132
134
|
requirements,
|
|
133
135
|
cronExpression: '',
|
|
@@ -162,7 +164,7 @@ function buildRequestBody(config, localModelInfo) {
|
|
|
162
164
|
modelName: modelName,
|
|
163
165
|
};
|
|
164
166
|
}
|
|
165
|
-
function createGPUSandboxInstance(id, name, runtime, gpu, endpoint,
|
|
167
|
+
function createGPUSandboxInstance(id, name, runtime, gpu, endpoint, apiToken, baseUrl) {
|
|
166
168
|
let deleted = false;
|
|
167
169
|
const run = async () => {
|
|
168
170
|
if (deleted) {
|
|
@@ -172,36 +174,27 @@ function createGPUSandboxInstance(id, name, runtime, gpu, endpoint, apiKey, gpuB
|
|
|
172
174
|
method: 'POST',
|
|
173
175
|
headers: {
|
|
174
176
|
'Content-Type': 'application/json',
|
|
175
|
-
Authorization: `Bearer ${
|
|
177
|
+
Authorization: `Bearer ${apiToken}`,
|
|
176
178
|
},
|
|
177
179
|
});
|
|
178
180
|
const responseText = await response.text();
|
|
179
181
|
if (!responseText) {
|
|
180
182
|
throw new BuildfunctionsError('Empty response from sandbox', 'UNKNOWN_ERROR', response.status);
|
|
181
183
|
}
|
|
184
|
+
if (!response.ok) {
|
|
185
|
+
throw new BuildfunctionsError(`Execution failed: ${responseText}`, 'UNKNOWN_ERROR', response.status);
|
|
186
|
+
}
|
|
187
|
+
// Try to parse as JSON, otherwise return raw text
|
|
182
188
|
let data;
|
|
183
189
|
try {
|
|
184
190
|
data = JSON.parse(responseText);
|
|
185
191
|
}
|
|
186
192
|
catch {
|
|
187
|
-
|
|
188
|
-
stdout: responseText,
|
|
189
|
-
stderr: '',
|
|
190
|
-
text: responseText,
|
|
191
|
-
results: null,
|
|
192
|
-
exit_code: 0,
|
|
193
|
-
};
|
|
194
|
-
}
|
|
195
|
-
if (!response.ok) {
|
|
196
|
-
const errorData = data;
|
|
197
|
-
throw new BuildfunctionsError(`Execution failed: ${errorData.error || 'Unknown error'}`, 'UNKNOWN_ERROR', response.status);
|
|
193
|
+
data = responseText;
|
|
198
194
|
}
|
|
199
195
|
return {
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
text: responseText,
|
|
203
|
-
results: data,
|
|
204
|
-
exit_code: 0,
|
|
196
|
+
response: data,
|
|
197
|
+
status: response.status,
|
|
205
198
|
};
|
|
206
199
|
};
|
|
207
200
|
const upload = async (options) => {
|
|
@@ -221,7 +214,7 @@ function createGPUSandboxInstance(id, name, runtime, gpu, endpoint, apiKey, gpuB
|
|
|
221
214
|
method: 'POST',
|
|
222
215
|
headers: {
|
|
223
216
|
'Content-Type': 'application/json',
|
|
224
|
-
Authorization: `Bearer ${
|
|
217
|
+
Authorization: `Bearer ${apiToken}`,
|
|
225
218
|
},
|
|
226
219
|
body: JSON.stringify({
|
|
227
220
|
sandboxId: id,
|
|
@@ -238,16 +231,22 @@ function createGPUSandboxInstance(id, name, runtime, gpu, endpoint, apiKey, gpuB
|
|
|
238
231
|
if (deleted) {
|
|
239
232
|
return;
|
|
240
233
|
}
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
234
|
+
// Use the same endpoint as CPU sandbox - buildfunctions web app handles the delete
|
|
235
|
+
// This ensures proper HOST cleanup for occupied VMs
|
|
236
|
+
const response = await fetch(`${baseUrl}/api/sdk/sandbox/delete`, {
|
|
237
|
+
method: 'DELETE',
|
|
238
|
+
headers: {
|
|
239
|
+
'Content-Type': 'application/json',
|
|
240
|
+
Authorization: `Bearer ${apiToken}`,
|
|
241
|
+
},
|
|
244
242
|
body: JSON.stringify({
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
userId: globalUserId,
|
|
248
|
-
username: globalUsername,
|
|
243
|
+
sandboxId: id,
|
|
244
|
+
type: 'gpu',
|
|
249
245
|
}),
|
|
250
246
|
});
|
|
247
|
+
if (!response.ok) {
|
|
248
|
+
throw new BuildfunctionsError('Delete failed', 'UNKNOWN_ERROR', response.status);
|
|
249
|
+
}
|
|
251
250
|
deleted = true;
|
|
252
251
|
};
|
|
253
252
|
return {
|
|
@@ -267,7 +266,10 @@ function createGPUSandboxInstance(id, name, runtime, gpu, endpoint, apiKey, gpuB
|
|
|
267
266
|
*/
|
|
268
267
|
export const GPUSandbox = {
|
|
269
268
|
create: async (config) => {
|
|
270
|
-
|
|
269
|
+
// Capture caller file FIRST before any async operations change the call stack
|
|
270
|
+
const callerFile = getCallerFile();
|
|
271
|
+
const callerDir = callerFile ? dirname(callerFile) : undefined;
|
|
272
|
+
if (!globalApiToken) {
|
|
271
273
|
throw new ValidationError('API key not set. Initialize Buildfunctions client first.');
|
|
272
274
|
}
|
|
273
275
|
validateConfig(config);
|
|
@@ -284,8 +286,11 @@ export const GPUSandbox = {
|
|
|
284
286
|
localModelInfo = getLocalModelInfo(modelPath, config.name);
|
|
285
287
|
console.log(' Found', localModelInfo.files.length, 'files to upload');
|
|
286
288
|
}
|
|
289
|
+
// Resolve code (inline string or file path)
|
|
290
|
+
const resolvedCode = config.code ? await resolveCode(config.code, callerDir) : '';
|
|
291
|
+
const resolvedConfig = { ...config, code: resolvedCode };
|
|
287
292
|
// Build request body (same structure as frontend ModelsList.jsx)
|
|
288
|
-
const requestBody = buildRequestBody(
|
|
293
|
+
const requestBody = buildRequestBody(resolvedConfig, localModelInfo);
|
|
289
294
|
const body = {
|
|
290
295
|
...requestBody,
|
|
291
296
|
userId: globalUserId,
|
|
@@ -341,7 +346,7 @@ export const GPUSandbox = {
|
|
|
341
346
|
const name = config.name.toLowerCase();
|
|
342
347
|
const sandboxRuntime = config.runtime ?? config.language;
|
|
343
348
|
const sandboxEndpoint = data.endpoint || data.data?.sslCertificateEndpoint || `https://${name}.buildfunctions.app`;
|
|
344
|
-
resolve(createGPUSandboxInstance(sandboxId || name, name, sandboxRuntime, config.gpu ?? 'T4', sandboxEndpoint,
|
|
349
|
+
resolve(createGPUSandboxInstance(sandboxId || name, name, sandboxRuntime, config.gpu ?? 'T4', sandboxEndpoint, globalApiToken, baseUrl));
|
|
345
350
|
});
|
|
346
351
|
res.on('error', (error) => {
|
|
347
352
|
reject(error);
|