buildfunctions 0.0.3 → 0.0.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/README.md +87 -1
- package/dist/client.d.ts +34 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +198 -0
- package/dist/client.js.map +1 -0
- package/dist/function/cpu-function.d.ts +19 -0
- package/dist/function/cpu-function.d.ts.map +1 -0
- package/dist/function/cpu-function.js +103 -0
- package/dist/function/cpu-function.js.map +1 -0
- package/dist/function/gpu-function.d.ts +13 -0
- package/dist/function/gpu-function.d.ts.map +1 -0
- package/dist/function/gpu-function.js +202 -0
- package/dist/function/gpu-function.js.map +1 -0
- package/dist/function/index.d.ts +8 -0
- package/dist/function/index.d.ts.map +1 -0
- package/dist/function/index.js +6 -0
- package/dist/function/index.js.map +1 -0
- package/dist/index.d.ts +45 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +55 -0
- package/dist/index.js.map +1 -0
- package/dist/sandbox/cpu-sandbox.d.ts +18 -0
- package/dist/sandbox/cpu-sandbox.d.ts.map +1 -0
- package/dist/sandbox/cpu-sandbox.js +293 -0
- package/dist/sandbox/cpu-sandbox.js.map +1 -0
- package/dist/sandbox/gpu-sandbox.d.ts +15 -0
- package/dist/sandbox/gpu-sandbox.d.ts.map +1 -0
- package/dist/sandbox/gpu-sandbox.js +359 -0
- package/dist/sandbox/gpu-sandbox.js.map +1 -0
- package/dist/sandbox/index.d.ts +6 -0
- package/dist/sandbox/index.d.ts.map +1 -0
- package/dist/sandbox/index.js +6 -0
- package/dist/sandbox/index.js.map +1 -0
- package/dist/types/index.d.ts +153 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/errors.d.ts +27 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +79 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/framework.d.ts +6 -0
- package/dist/utils/framework.d.ts.map +1 -0
- package/dist/utils/framework.js +17 -0
- package/dist/utils/framework.js.map +1 -0
- package/dist/utils/http.d.ts +24 -0
- package/dist/utils/http.d.ts.map +1 -0
- package/dist/utils/http.js +75 -0
- package/dist/utils/http.js.map +1 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +8 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/memory.d.ts +6 -0
- package/dist/utils/memory.d.ts.map +1 -0
- package/dist/utils/memory.js +21 -0
- package/dist/utils/memory.js.map +1 -0
- package/dist/utils/uploader.d.ts +41 -0
- package/dist/utils/uploader.d.ts.map +1 -0
- package/dist/utils/uploader.js +157 -0
- package/dist/utils/uploader.js.map +1 -0
- package/package.json +27 -17
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -18
- package/dist/cli.js.map +0 -1
- package/dist/test.d.ts +0 -10
- package/dist/test.d.ts.map +0 -1
- package/dist/test.js +0 -7
- package/dist/test.js.map +0 -1
package/README.md
CHANGED
|
@@ -1 +1,87 @@
|
|
|
1
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<h1 align="center">
|
|
3
|
+
<a href="https://www.buildfunctions.com" target="_blank">
|
|
4
|
+
<img src="./public/readme/buildfunctions-header.svg" alt="logo" width="900">
|
|
5
|
+
</a>
|
|
6
|
+
</h1>
|
|
7
|
+
</p>
|
|
8
|
+
|
|
9
|
+
<h1 align="center">The Buildfunctions SDK for Agents</h1>
|
|
10
|
+
|
|
11
|
+
<p align="center">
|
|
12
|
+
<!-- <a href="https://discord.com/users/buildfunctions" target="_blank">
|
|
13
|
+
<img src="./public/readme/discord-button.png" height="32" />
|
|
14
|
+
</a> -->
|
|
15
|
+
<a href="https://www.buildfunctions.com/docs/sdk/quickstart" target="_blank">
|
|
16
|
+
<img src="./public/readme/read-the-docs-button.png" height="32" />
|
|
17
|
+
</a>
|
|
18
|
+
</p>
|
|
19
|
+
|
|
20
|
+
<p align="center">
|
|
21
|
+
<a href="https://www.npmjs.com/package/buildfunctions" target="_blank">
|
|
22
|
+
<img src="https://img.shields.io/badge/npm-@buildfunctions-green">
|
|
23
|
+
</a>
|
|
24
|
+
</p>
|
|
25
|
+
|
|
26
|
+
<p align="center">
|
|
27
|
+
<h1 align="center">
|
|
28
|
+
<a href="https://www.buildfunctions.com" target="_blank">
|
|
29
|
+
<img src="./public/readme/buildfunctions-logo-and-servers-dark.svg" alt="logo" width="900">
|
|
30
|
+
</a>
|
|
31
|
+
</h1>
|
|
32
|
+
</p>
|
|
33
|
+
|
|
34
|
+
> Hardware-isolated execution environments for AI agents
|
|
35
|
+
|
|
36
|
+
## Installation
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
npm install buildfunctions
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Quick Start
|
|
43
|
+
|
|
44
|
+
### 1. Create an API Token
|
|
45
|
+
|
|
46
|
+
Get your API token at [buildfunctions.com/settings](https://www.buildfunctions.com/settings)
|
|
47
|
+
|
|
48
|
+
### 2. Authenticate
|
|
49
|
+
|
|
50
|
+
```javascript
|
|
51
|
+
import { Buildfunctions, GPUSandbox } from 'buildfunctions'
|
|
52
|
+
|
|
53
|
+
const apiKey = process.env.BUILDFUNCTIONS_API_KEY
|
|
54
|
+
|
|
55
|
+
// Initialize
|
|
56
|
+
const buildfunctions = new Buildfunctions({ apiKey })
|
|
57
|
+
if (!buildfunctions) {
|
|
58
|
+
throw new Error('Failed to initialize Buildfunctions SDK')
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### 3. Create a GPU Sandbox
|
|
63
|
+
|
|
64
|
+
```javascript
|
|
65
|
+
...
|
|
66
|
+
// Create a GPU Sandbox with Python and PyTorch
|
|
67
|
+
const sandbox = await GPUSandbox.create({
|
|
68
|
+
name: 'secure-agent-action',
|
|
69
|
+
memory: "64GB",
|
|
70
|
+
vcpu: 32,
|
|
71
|
+
timeout: 1200,
|
|
72
|
+
language: 'python',
|
|
73
|
+
requirements: ['transformers', 'torch', 'accelerate'],
|
|
74
|
+
model: './Qwen/Qwen3-8B', // model path (local or remote)
|
|
75
|
+
})
|
|
76
|
+
|
|
77
|
+
// Upload inference script from path (or just inline code)
|
|
78
|
+
await sandbox.upload({ filePath: 'inference_script.py' })
|
|
79
|
+
|
|
80
|
+
// Run script in a hardware-isolated virtual machine with full GPU access
|
|
81
|
+
const result = await sandbox.run(
|
|
82
|
+
`python inference_script.py "${prompt}"`
|
|
83
|
+
)
|
|
84
|
+
...
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
The SDK is currently in beta.
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Buildfunctions SDK Client
|
|
3
|
+
*/
|
|
4
|
+
import { HttpClient } from './utils/http.js';
|
|
5
|
+
import type { BuildfunctionsConfig, DeployedFunction, FindUniqueOptions, ListOptions, AuthenticatedUser, CreateFunctionOptions } from './types/index.js';
|
|
6
|
+
/**
|
|
7
|
+
* Functions management interface
|
|
8
|
+
*/
|
|
9
|
+
export interface FunctionsManager {
|
|
10
|
+
list: (options?: ListOptions) => Promise<DeployedFunction[]>;
|
|
11
|
+
findUnique: (options: FindUniqueOptions) => Promise<DeployedFunction | null>;
|
|
12
|
+
get: (siteId: string) => Promise<DeployedFunction>;
|
|
13
|
+
create: (options: CreateFunctionOptions) => Promise<DeployedFunction>;
|
|
14
|
+
delete: (siteId: string) => Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Buildfunctions client interface
|
|
18
|
+
*/
|
|
19
|
+
export interface BuildfunctionsClient {
|
|
20
|
+
functions: FunctionsManager;
|
|
21
|
+
user: AuthenticatedUser | null;
|
|
22
|
+
sessionExpiresAt: string | null;
|
|
23
|
+
authenticatedAt: string | null;
|
|
24
|
+
getHttpClient: () => HttpClient;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Create a Buildfunctions SDK client
|
|
28
|
+
*/
|
|
29
|
+
export declare function Buildfunctions(config: BuildfunctionsConfig): Promise<BuildfunctionsClient>;
|
|
30
|
+
/**
|
|
31
|
+
* Create a Buildfunctions client instance
|
|
32
|
+
*/
|
|
33
|
+
export declare function createClient(config: BuildfunctionsConfig): Promise<BuildfunctionsClient | null>;
|
|
34
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAoB,MAAM,iBAAiB,CAAC;AAO/D,OAAO,KAAK,EACV,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EAEX,iBAAiB,EAEjB,qBAAqB,EACtB,MAAM,kBAAkB,CAAC;AAK1B;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC7D,UAAU,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;IAC7E,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACnD,MAAM,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACtE,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C;AAgKD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,gBAAgB,CAAC;IAC5B,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC/B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,aAAa,EAAE,MAAM,UAAU,CAAC;CACjC;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAsChG;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAMrG"}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Buildfunctions SDK Client
|
|
3
|
+
*/
|
|
4
|
+
import { createHttpClient } from './utils/http.js';
|
|
5
|
+
import { NotFoundError } from './utils/errors.js';
|
|
6
|
+
import { parseMemory } from './utils/memory.js';
|
|
7
|
+
import { detectFramework } from './utils/framework.js';
|
|
8
|
+
import { setCpuSandboxApiKey } from './sandbox/cpu-sandbox.js';
|
|
9
|
+
import { setGpuSandboxApiKey } from './sandbox/gpu-sandbox.js';
|
|
10
|
+
import { setGpuApiKey, GPUFunction } from './function/gpu-function.js';
|
|
11
|
+
const DEFAULT_BASE_URL = 'https://www.buildfunctions.com';
|
|
12
|
+
const DEFAULT_GPU_BUILD_URL = 'https://prod-gpu-build.buildfunctions.link';
|
|
13
|
+
function getDefaultRuntime(language) {
|
|
14
|
+
// JavaScript requires explicit runtime (node.js or deno)
|
|
15
|
+
if (language === 'javascript') {
|
|
16
|
+
throw new Error('JavaScript requires explicit runtime: "nodejs" or "deno"');
|
|
17
|
+
}
|
|
18
|
+
// All other languages have single runtime = language name
|
|
19
|
+
return language;
|
|
20
|
+
}
|
|
21
|
+
function getFileExtension(language) {
|
|
22
|
+
switch (language) {
|
|
23
|
+
case 'javascript':
|
|
24
|
+
return '.js';
|
|
25
|
+
case 'typescript':
|
|
26
|
+
return '.ts';
|
|
27
|
+
case 'python':
|
|
28
|
+
return '.py';
|
|
29
|
+
case 'go':
|
|
30
|
+
return '.go';
|
|
31
|
+
case 'shell':
|
|
32
|
+
return '.sh';
|
|
33
|
+
default:
|
|
34
|
+
return '.js';
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function createFunctionsManager(http) {
|
|
38
|
+
const wrapFunction = (fn) => {
|
|
39
|
+
return {
|
|
40
|
+
...fn,
|
|
41
|
+
delete: async () => {
|
|
42
|
+
await http.delete('/api/sdk/functions/build', { siteId: fn.id });
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
const list = async (options = {}) => {
|
|
47
|
+
const page = options.page ?? 1;
|
|
48
|
+
const response = await http.get('/api/sdk/functions', { page });
|
|
49
|
+
return response.stringifiedQueryResults.map((fn) => wrapFunction(fn));
|
|
50
|
+
};
|
|
51
|
+
const findUnique = async (options) => {
|
|
52
|
+
const { where } = options;
|
|
53
|
+
if (where.id) {
|
|
54
|
+
try {
|
|
55
|
+
const fn = await http.get('/api/sdk/functions/build', { siteId: where.id });
|
|
56
|
+
return wrapFunction(fn);
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
if (error instanceof NotFoundError) {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
throw error;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (where.name) {
|
|
66
|
+
const functions = await list();
|
|
67
|
+
const found = functions.find((fn) => fn.name === where.name);
|
|
68
|
+
return found ?? null;
|
|
69
|
+
}
|
|
70
|
+
return null;
|
|
71
|
+
};
|
|
72
|
+
const get = async (siteId) => {
|
|
73
|
+
const fn = await http.get('/api/sdk/functions/build', { siteId });
|
|
74
|
+
return wrapFunction(fn);
|
|
75
|
+
};
|
|
76
|
+
const create = async (options) => {
|
|
77
|
+
const fileExt = getFileExtension(options.language);
|
|
78
|
+
const name = options.name.toLowerCase();
|
|
79
|
+
// Detect Function by explicit processorType OR by presence of gpu option
|
|
80
|
+
const isGpu = options.processorType === 'GPU' || !!options.gpu;
|
|
81
|
+
const runtime = (options.runtime ?? getDefaultRuntime(options.language));
|
|
82
|
+
if (isGpu) {
|
|
83
|
+
const gpuBuilder = GPUFunction({
|
|
84
|
+
name: options.name,
|
|
85
|
+
code: options.code,
|
|
86
|
+
language: options.language,
|
|
87
|
+
runtime,
|
|
88
|
+
gpu: options.gpu ?? 'T4G',
|
|
89
|
+
config: {
|
|
90
|
+
memory: options.memory ? parseMemory(options.memory) : 1024,
|
|
91
|
+
timeout: options.timeout ?? 60,
|
|
92
|
+
},
|
|
93
|
+
dependencies: options.requirements,
|
|
94
|
+
envVariables: options.envVariables ? Object.fromEntries(options.envVariables.map(v => [v.key, v.value])) : undefined,
|
|
95
|
+
cronSchedule: options.cronSchedule,
|
|
96
|
+
framework: options.framework ?? detectFramework(options.requirements),
|
|
97
|
+
modelName: options.modelName,
|
|
98
|
+
modelPath: options.modelPath,
|
|
99
|
+
});
|
|
100
|
+
const deployed = await gpuBuilder.deploy();
|
|
101
|
+
if (!deployed) {
|
|
102
|
+
throw new Error('GPU Function deployment failed');
|
|
103
|
+
}
|
|
104
|
+
return deployed;
|
|
105
|
+
}
|
|
106
|
+
// CPU builds go to a different API than GPU
|
|
107
|
+
const body = {
|
|
108
|
+
name,
|
|
109
|
+
fileExt,
|
|
110
|
+
sourceWith: options.code,
|
|
111
|
+
sourceWithout: options.code,
|
|
112
|
+
language: options.language,
|
|
113
|
+
runtime,
|
|
114
|
+
memoryAllocated: options.memory ? parseMemory(options.memory) : 128,
|
|
115
|
+
timeout: options.timeout ?? 10,
|
|
116
|
+
envVariables: JSON.stringify(options.envVariables ?? []),
|
|
117
|
+
requirements: options.requirements ?? '',
|
|
118
|
+
cronExpression: options.cronSchedule ?? '',
|
|
119
|
+
processorType: 'CPU',
|
|
120
|
+
selectedFramework: options.framework ?? detectFramework(options.requirements),
|
|
121
|
+
subdomain: name,
|
|
122
|
+
totalVariables: (options.envVariables ?? []).length,
|
|
123
|
+
functionCount: 0,
|
|
124
|
+
};
|
|
125
|
+
const response = await http.post('/api/sdk/functions/build', body);
|
|
126
|
+
return wrapFunction({
|
|
127
|
+
id: response.siteId,
|
|
128
|
+
name,
|
|
129
|
+
subdomain: name,
|
|
130
|
+
endpoint: response.endpoint,
|
|
131
|
+
lambdaUrl: response.sslCertificateEndpoint || '',
|
|
132
|
+
language: options.language,
|
|
133
|
+
runtime: runtime,
|
|
134
|
+
lambdaMemoryAllocated: options.memory ? parseMemory(options.memory) : 128,
|
|
135
|
+
timeoutSeconds: options.timeout ?? 10,
|
|
136
|
+
isGPUF: false,
|
|
137
|
+
framework: options.framework,
|
|
138
|
+
createdAt: new Date().toISOString(),
|
|
139
|
+
updatedAt: new Date().toISOString(),
|
|
140
|
+
});
|
|
141
|
+
};
|
|
142
|
+
const deleteFn = async (siteId) => {
|
|
143
|
+
await http.delete('/api/sdk/functions/build', { siteId });
|
|
144
|
+
};
|
|
145
|
+
return {
|
|
146
|
+
list,
|
|
147
|
+
findUnique,
|
|
148
|
+
get,
|
|
149
|
+
create,
|
|
150
|
+
delete: deleteFn,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Create a Buildfunctions SDK client
|
|
155
|
+
*/
|
|
156
|
+
export async function Buildfunctions(config) {
|
|
157
|
+
if (!config.apiKey) {
|
|
158
|
+
throw new Error('API key is required');
|
|
159
|
+
}
|
|
160
|
+
const http = createHttpClient({
|
|
161
|
+
baseUrl: config.baseUrl ?? DEFAULT_BASE_URL,
|
|
162
|
+
apiKey: config.apiKey,
|
|
163
|
+
});
|
|
164
|
+
// Authenticate with the API (uses API key from https://www.buildfunctions.com/settings)
|
|
165
|
+
const authResponse = await http.post('/api/sdk/auth');
|
|
166
|
+
if (!authResponse.authenticated) {
|
|
167
|
+
throw new Error('Authentication failed');
|
|
168
|
+
}
|
|
169
|
+
http.setToken(authResponse.sessionToken);
|
|
170
|
+
const baseUrl = config.baseUrl ?? DEFAULT_BASE_URL;
|
|
171
|
+
const gpuBuildUrl = config.gpuBuildUrl ?? DEFAULT_GPU_BUILD_URL;
|
|
172
|
+
const userId = authResponse.user.id;
|
|
173
|
+
const username = authResponse.user.username || undefined;
|
|
174
|
+
const computeTier = authResponse.user.computeTier || undefined;
|
|
175
|
+
setCpuSandboxApiKey(authResponse.sessionToken, baseUrl);
|
|
176
|
+
setGpuSandboxApiKey(authResponse.sessionToken, gpuBuildUrl, userId, username, computeTier, baseUrl);
|
|
177
|
+
setGpuApiKey(authResponse.sessionToken, gpuBuildUrl, userId, username, computeTier);
|
|
178
|
+
const functions = createFunctionsManager(http);
|
|
179
|
+
return {
|
|
180
|
+
functions,
|
|
181
|
+
user: authResponse.user,
|
|
182
|
+
sessionExpiresAt: authResponse.expiresAt,
|
|
183
|
+
authenticatedAt: authResponse.authenticatedAt,
|
|
184
|
+
getHttpClient: () => http,
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Create a Buildfunctions client instance
|
|
189
|
+
*/
|
|
190
|
+
export async function createClient(config) {
|
|
191
|
+
try {
|
|
192
|
+
return await Buildfunctions(config);
|
|
193
|
+
}
|
|
194
|
+
catch {
|
|
195
|
+
return null;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CPU Function - Deploy serverless functions to Buildfunctions
|
|
3
|
+
*/
|
|
4
|
+
import type { CPUFunctionOptions, DeployedFunction } from '../types/index.js';
|
|
5
|
+
/**
|
|
6
|
+
* CPU Function builder interface
|
|
7
|
+
*/
|
|
8
|
+
export interface CPUFunctionBuilder {
|
|
9
|
+
deploy: () => Promise<DeployedFunction | null>;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Set the API key for function deployment
|
|
13
|
+
*/
|
|
14
|
+
export declare function setApiKey(apiKey: string, baseUrl?: string): void;
|
|
15
|
+
/**
|
|
16
|
+
* Factory function to create a CPU Function builder
|
|
17
|
+
*/
|
|
18
|
+
export declare function CPUFunction(options: CPUFunctionOptions): CPUFunctionBuilder;
|
|
19
|
+
//# sourceMappingURL=cpu-function.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cpu-function.d.ts","sourceRoot":"","sources":["../../src/function/cpu-function.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAa9E;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;CAChD;AAoGD;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAGhE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,kBAAkB,CAK3E"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CPU Function - Deploy serverless functions to Buildfunctions
|
|
3
|
+
*/
|
|
4
|
+
import { ValidationError } from '../utils/errors.js';
|
|
5
|
+
import { parseMemory } from '../utils/memory.js';
|
|
6
|
+
const DEFAULT_BASE_URL = 'https://www.buildfunctions.com';
|
|
7
|
+
function getFileExtension(language) {
|
|
8
|
+
const extensions = {
|
|
9
|
+
javascript: '.js',
|
|
10
|
+
typescript: '.ts',
|
|
11
|
+
python: '.py',
|
|
12
|
+
go: '.go',
|
|
13
|
+
shell: '.sh',
|
|
14
|
+
};
|
|
15
|
+
return extensions[language] ?? '.js';
|
|
16
|
+
}
|
|
17
|
+
function getDefaultRuntime(language) {
|
|
18
|
+
// JavaScript requires explicit runtime (node.js or deno)
|
|
19
|
+
if (language === 'javascript') {
|
|
20
|
+
throw new ValidationError('JavaScript requires explicit runtime: "nodejs" or "deno"');
|
|
21
|
+
}
|
|
22
|
+
// All other languages have single runtime = language name
|
|
23
|
+
return language;
|
|
24
|
+
}
|
|
25
|
+
function validateOptions(options) {
|
|
26
|
+
if (!options.name || typeof options.name !== 'string') {
|
|
27
|
+
throw new ValidationError('Function name is required');
|
|
28
|
+
}
|
|
29
|
+
if (!/^[a-z0-9-]+$/.test(options.name.toLowerCase())) {
|
|
30
|
+
throw new ValidationError('Function name can only contain lowercase letters, numbers, and hyphens');
|
|
31
|
+
}
|
|
32
|
+
if (!options.code || typeof options.code !== 'string') {
|
|
33
|
+
throw new ValidationError('Function code is required');
|
|
34
|
+
}
|
|
35
|
+
if (!options.language) {
|
|
36
|
+
throw new ValidationError('Language is required');
|
|
37
|
+
}
|
|
38
|
+
// Runtime defaults to language (except JavaScript which requires explicit runtime)
|
|
39
|
+
}
|
|
40
|
+
function buildRequestBody(options) {
|
|
41
|
+
const { name, language, code, config, envVariables, dependencies, cronSchedule } = options;
|
|
42
|
+
// Auto-infer runtime from language (server handles runtimeVersion)
|
|
43
|
+
const runtime = options.runtime ?? getDefaultRuntime(language);
|
|
44
|
+
const fileExt = getFileExtension(language);
|
|
45
|
+
return {
|
|
46
|
+
name: name.toLowerCase(),
|
|
47
|
+
language,
|
|
48
|
+
runtime,
|
|
49
|
+
sourceWith: code, // source with env vars
|
|
50
|
+
fileExt,
|
|
51
|
+
processorType: 'CPU only',
|
|
52
|
+
memoryAllocated: config?.memory ? parseMemory(config.memory) : 1024,
|
|
53
|
+
timeout: config?.timeout ?? 10,
|
|
54
|
+
envVariables: envVariables ? JSON.stringify(Object.entries(envVariables).map(([key, value]) => ({ key, value }))) : '[]',
|
|
55
|
+
requirements: dependencies ?? '',
|
|
56
|
+
cronExpression: cronSchedule ?? '',
|
|
57
|
+
totalVariables: envVariables ? Object.keys(envVariables).length : 0,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Create a CPU Function builder
|
|
62
|
+
*/
|
|
63
|
+
function createCPUFunctionBuilder(options, apiKey, baseUrl) {
|
|
64
|
+
validateOptions(options);
|
|
65
|
+
const resolvedBaseUrl = baseUrl ?? DEFAULT_BASE_URL;
|
|
66
|
+
const deploy = async () => {
|
|
67
|
+
const body = buildRequestBody(options);
|
|
68
|
+
const response = await fetch(`${resolvedBaseUrl}/api/functions/build`, {
|
|
69
|
+
method: 'POST',
|
|
70
|
+
headers: {
|
|
71
|
+
'Content-Type': 'application/json',
|
|
72
|
+
Authorization: `Bearer ${apiKey}`,
|
|
73
|
+
},
|
|
74
|
+
body: JSON.stringify(body),
|
|
75
|
+
});
|
|
76
|
+
const data = (await response.json());
|
|
77
|
+
if (!response.ok || !data.success) {
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
return data.site ?? null;
|
|
81
|
+
};
|
|
82
|
+
return { deploy };
|
|
83
|
+
}
|
|
84
|
+
// Store API key globally for the factory function pattern
|
|
85
|
+
let globalApiKey = null;
|
|
86
|
+
let globalBaseUrl;
|
|
87
|
+
/**
|
|
88
|
+
* Set the API key for function deployment
|
|
89
|
+
*/
|
|
90
|
+
export function setApiKey(apiKey, baseUrl) {
|
|
91
|
+
globalApiKey = apiKey;
|
|
92
|
+
globalBaseUrl = baseUrl;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Factory function to create a CPU Function builder
|
|
96
|
+
*/
|
|
97
|
+
export function CPUFunction(options) {
|
|
98
|
+
if (!globalApiKey) {
|
|
99
|
+
throw new ValidationError('API key not set. Initialize Buildfunctions client first or call setApiKey()');
|
|
100
|
+
}
|
|
101
|
+
return createCPUFunctionBuilder(options, globalApiKey, globalBaseUrl);
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=cpu-function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cpu-function.js","sourceRoot":"","sources":["../../src/function/cpu-function.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,gBAAgB,GAAG,gCAAgC,CAAC;AAgB1D,SAAS,gBAAgB,CAAC,QAAgB;IACxC,MAAM,UAAU,GAA2B;QACzC,UAAU,EAAE,KAAK;QACjB,UAAU,EAAE,KAAK;QACjB,MAAM,EAAE,KAAK;QACb,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,KAAK;KACb,CAAC;IACF,OAAO,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;AACvC,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAgB;IACzC,yDAAyD;IACzD,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;QAC9B,MAAM,IAAI,eAAe,CAAC,0DAA0D,CAAC,CAAC;IACxF,CAAC;IACD,0DAA0D;IAC1D,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,eAAe,CAAC,OAA2B;IAClD,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtD,MAAM,IAAI,eAAe,CAAC,2BAA2B,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,eAAe,CAAC,wEAAwE,CAAC,CAAC;IACtG,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtD,MAAM,IAAI,eAAe,CAAC,2BAA2B,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtB,MAAM,IAAI,eAAe,CAAC,sBAAsB,CAAC,CAAC;IACpD,CAAC;IAED,mFAAmF;AACrF,CAAC;AAED,SAAS,gBAAgB,CAAC,OAA2B;IACnD,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;IAE3F,mEAAmE;IACnE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAE3C,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;QACxB,QAAQ;QACR,OAAO;QACP,UAAU,EAAE,IAAI,EAAE,uBAAuB;QACzC,OAAO;QACP,aAAa,EAAE,UAAU;QACzB,eAAe,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;QACnE,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,EAAE;QAC9B,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;QACxH,YAAY,EAAE,YAAY,IAAI,EAAE;QAChC,cAAc,EAAE,YAAY,IAAI,EAAE;QAClC,cAAc,EAAE,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KACpE,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,wBAAwB,CAAC,OAA2B,EAAE,MAAc,EAAE,OAAgB;IAC7F,eAAe,CAAC,OAAO,CAAC,CAAC;IACzB,MAAM,eAAe,GAAG,OAAO,IAAI,gBAAgB,CAAC;IAEpD,MAAM,MAAM,GAAG,KAAK,IAAsC,EAAE;QAC1D,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAEvC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,eAAe,sBAAsB,EAAE;YACrE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,MAAM,EAAE;aAClC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAmB,CAAC;QAEvD,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;IAC3B,CAAC,CAAC;IAEF,OAAO,EAAE,MAAM,EAAE,CAAC;AACpB,CAAC;AAED,0DAA0D;AAC1D,IAAI,YAAY,GAAkB,IAAI,CAAC;AACvC,IAAI,aAAiC,CAAC;AAEtC;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,MAAc,EAAE,OAAgB;IACxD,YAAY,GAAG,MAAM,CAAC;IACtB,aAAa,GAAG,OAAO,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,OAA2B;IACrD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,eAAe,CAAC,6EAA6E,CAAC,CAAC;IAC3G,CAAC;IACD,OAAO,wBAAwB,CAAC,OAAO,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;AACxE,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GPU Function - Deploy GPU-accelerated serverless functions to Buildfunctions
|
|
3
|
+
*/
|
|
4
|
+
import type { GPUFunctionOptions, DeployedFunction } from '../types/index.js';
|
|
5
|
+
/**
|
|
6
|
+
* GPU Function builder interface
|
|
7
|
+
*/
|
|
8
|
+
export interface GPUFunctionBuilder {
|
|
9
|
+
deploy: () => Promise<DeployedFunction | null>;
|
|
10
|
+
}
|
|
11
|
+
export declare function setGpuApiKey(apiKey: string, gpuBuildUrl?: string, userId?: string, username?: string, computeTier?: string): void;
|
|
12
|
+
export declare function GPUFunction(options: GPUFunctionOptions): GPUFunctionBuilder;
|
|
13
|
+
//# sourceMappingURL=gpu-function.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gpu-function.d.ts","sourceRoot":"","sources":["../../src/function/gpu-function.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAwB9E;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;CAChD;AAqOD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAMjI;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,kBAAkB,CAK3E"}
|