@blaxel/core 0.2.43-dev.196 → 0.2.43-dev.199

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.
Files changed (194) hide show
  1. package/dist/cjs/.tsbuildinfo +1 -1
  2. package/dist/cjs/authentication/index.js +4 -30
  3. package/dist/cjs/cache/index.js +3 -16
  4. package/dist/cjs/common/browser.js +22 -0
  5. package/dist/cjs/common/env.js +12 -24
  6. package/dist/cjs/common/node.js +13 -25
  7. package/dist/cjs/common/settings.js +2 -2
  8. package/dist/cjs/sandbox/filesystem/filesystem.js +12 -13
  9. package/dist/cjs/sandbox/sandbox.js +2 -2
  10. package/dist/cjs/types/common/browser.d.ts +5 -0
  11. package/dist/cjs/types/common/node.d.ts +1 -2
  12. package/dist/cjs/types/sandbox/filesystem/filesystem.d.ts +6 -2
  13. package/dist/cjs-browser/.tsbuildinfo +1 -0
  14. package/dist/cjs-browser/agents/index.js +109 -0
  15. package/dist/cjs-browser/authentication/apikey.js +24 -0
  16. package/dist/cjs-browser/authentication/clientcredentials.js +85 -0
  17. package/dist/cjs-browser/authentication/credentials.js +17 -0
  18. package/dist/cjs-browser/authentication/deviceMode.js +70 -0
  19. package/dist/cjs-browser/authentication/index.js +62 -0
  20. package/dist/cjs-browser/authentication/types.js +2 -0
  21. package/dist/cjs-browser/cache/index.js +26 -0
  22. package/dist/cjs-browser/client/authentication.js +15 -0
  23. package/dist/cjs-browser/client/client.gen.js +8 -0
  24. package/dist/cjs-browser/client/client.js +17 -0
  25. package/dist/cjs-browser/client/index.js +19 -0
  26. package/dist/cjs-browser/client/interceptors.js +17 -0
  27. package/dist/cjs-browser/client/sdk.gen.js +1824 -0
  28. package/dist/cjs-browser/client/types.gen.js +4 -0
  29. package/dist/cjs-browser/common/autoload.js +27 -0
  30. package/dist/cjs-browser/common/env.js +57 -0
  31. package/dist/cjs-browser/common/errors.js +17 -0
  32. package/dist/cjs-browser/common/internal.js +228 -0
  33. package/dist/cjs-browser/common/internal.test.js +39 -0
  34. package/dist/cjs-browser/common/logger.js +69 -0
  35. package/dist/cjs-browser/common/node.js +22 -0
  36. package/dist/cjs-browser/common/settings.js +181 -0
  37. package/dist/cjs-browser/index.browser.test.js +45 -0
  38. package/dist/cjs-browser/index.js +34 -0
  39. package/dist/cjs-browser/jobs/index.js +19 -0
  40. package/dist/cjs-browser/jobs/jobs.js +90 -0
  41. package/dist/cjs-browser/jobs/start.js +66 -0
  42. package/dist/cjs-browser/jobs/types.js +2 -0
  43. package/dist/cjs-browser/mcp/client.js +235 -0
  44. package/dist/cjs-browser/mcp/index.js +18 -0
  45. package/dist/cjs-browser/mcp/server.js +213 -0
  46. package/dist/cjs-browser/models/index.js +31 -0
  47. package/dist/cjs-browser/sandbox/action.js +83 -0
  48. package/dist/cjs-browser/sandbox/client/client.gen.js +6 -0
  49. package/dist/cjs-browser/sandbox/client/index.js +19 -0
  50. package/dist/cjs-browser/sandbox/client/sdk.gen.js +289 -0
  51. package/dist/cjs-browser/sandbox/client/types.gen.js +3 -0
  52. package/dist/cjs-browser/sandbox/filesystem/filesystem.js +240 -0
  53. package/dist/cjs-browser/sandbox/filesystem/index.js +18 -0
  54. package/dist/cjs-browser/sandbox/filesystem/types.js +2 -0
  55. package/dist/cjs-browser/sandbox/index.js +36 -0
  56. package/dist/cjs-browser/sandbox/network/index.js +17 -0
  57. package/dist/cjs-browser/sandbox/network/network.js +10 -0
  58. package/dist/cjs-browser/sandbox/preview.js +148 -0
  59. package/dist/cjs-browser/sandbox/process/index.js +17 -0
  60. package/dist/cjs-browser/sandbox/process/process.js +189 -0
  61. package/dist/cjs-browser/sandbox/sandbox.js +180 -0
  62. package/dist/cjs-browser/sandbox/session.js +123 -0
  63. package/dist/cjs-browser/sandbox/types.js +81 -0
  64. package/dist/cjs-browser/telemetry/telemetry.js +80 -0
  65. package/dist/cjs-browser/tools/index.js +52 -0
  66. package/dist/cjs-browser/tools/mcpTool.js +254 -0
  67. package/dist/cjs-browser/tools/types.js +2 -0
  68. package/dist/cjs-browser/tools/zodSchema.js +50 -0
  69. package/dist/cjs-browser/types/agents/index.d.ts +15 -0
  70. package/dist/cjs-browser/types/authentication/apikey.d.ts +10 -0
  71. package/dist/cjs-browser/types/authentication/clientcredentials.d.ts +17 -0
  72. package/dist/cjs-browser/types/authentication/credentials.d.ts +6 -0
  73. package/dist/cjs-browser/types/authentication/deviceMode.d.ts +15 -0
  74. package/dist/cjs-browser/types/authentication/index.d.ts +3 -0
  75. package/dist/cjs-browser/types/authentication/types.d.ts +9 -0
  76. package/dist/cjs-browser/types/cache/index.d.ts +1 -0
  77. package/dist/cjs-browser/types/client/authentication.d.ts +25 -0
  78. package/dist/cjs-browser/types/client/client.d.ts +2 -0
  79. package/dist/cjs-browser/types/client/client.gen.d.ts +12 -0
  80. package/dist/cjs-browser/types/client/index.d.ts +2 -0
  81. package/dist/cjs-browser/types/client/interceptors.d.ts +3 -0
  82. package/dist/cjs-browser/types/client/sdk.gen.d.ts +519 -0
  83. package/dist/cjs-browser/types/client/types.gen.d.ts +4950 -0
  84. package/dist/cjs-browser/types/common/autoload.d.ts +3 -0
  85. package/dist/cjs-browser/types/common/browser.d.ts +5 -0
  86. package/dist/cjs-browser/types/common/env.d.ts +5 -0
  87. package/dist/cjs-browser/types/common/errors.d.ts +1 -0
  88. package/dist/cjs-browser/types/common/internal.d.ts +6 -0
  89. package/dist/cjs-browser/types/common/internal.test.d.ts +1 -0
  90. package/dist/cjs-browser/types/common/logger.d.ts +25 -0
  91. package/dist/cjs-browser/types/common/node.d.ts +6 -0
  92. package/dist/cjs-browser/types/common/settings.d.ts +32 -0
  93. package/dist/cjs-browser/types/index.browser.test.d.ts +1 -0
  94. package/dist/cjs-browser/types/index.d.ts +18 -0
  95. package/dist/cjs-browser/types/jobs/index.d.ts +3 -0
  96. package/dist/cjs-browser/types/jobs/jobs.d.ts +13 -0
  97. package/dist/cjs-browser/types/jobs/start.d.ts +1 -0
  98. package/dist/cjs-browser/types/jobs/types.d.ts +3 -0
  99. package/dist/cjs-browser/types/mcp/client.d.ts +28 -0
  100. package/dist/cjs-browser/types/mcp/index.d.ts +2 -0
  101. package/dist/cjs-browser/types/mcp/server.d.ts +24 -0
  102. package/dist/cjs-browser/types/models/index.d.ts +8 -0
  103. package/dist/cjs-browser/types/sandbox/action.d.ts +19 -0
  104. package/dist/cjs-browser/types/sandbox/client/client.gen.d.ts +12 -0
  105. package/dist/cjs-browser/types/sandbox/client/index.d.ts +2 -0
  106. package/dist/cjs-browser/types/sandbox/client/sdk.gen.d.ts +101 -0
  107. package/dist/cjs-browser/types/sandbox/client/types.gen.d.ts +578 -0
  108. package/dist/cjs-browser/types/sandbox/filesystem/filesystem.d.ts +27 -0
  109. package/dist/cjs-browser/types/sandbox/filesystem/index.d.ts +2 -0
  110. package/dist/cjs-browser/types/sandbox/filesystem/types.d.ts +15 -0
  111. package/dist/cjs-browser/types/sandbox/index.d.ts +4 -0
  112. package/dist/cjs-browser/types/sandbox/network/index.d.ts +1 -0
  113. package/dist/cjs-browser/types/sandbox/network/network.d.ts +5 -0
  114. package/dist/cjs-browser/types/sandbox/preview.d.ts +37 -0
  115. package/dist/cjs-browser/types/sandbox/process/index.d.ts +1 -0
  116. package/dist/cjs-browser/types/sandbox/process/process.d.ts +24 -0
  117. package/dist/cjs-browser/types/sandbox/sandbox.d.ts +33 -0
  118. package/dist/cjs-browser/types/sandbox/session.d.ts +27 -0
  119. package/dist/cjs-browser/types/sandbox/types.d.ts +52 -0
  120. package/dist/cjs-browser/types/telemetry/telemetry.d.ts +62 -0
  121. package/dist/cjs-browser/types/tools/index.d.ts +12 -0
  122. package/dist/cjs-browser/types/tools/mcpTool.d.ts +33 -0
  123. package/dist/cjs-browser/types/tools/types.d.ts +8 -0
  124. package/dist/cjs-browser/types/tools/zodSchema.d.ts +82 -0
  125. package/dist/cjs-browser/types/volume/index.d.ts +23 -0
  126. package/dist/cjs-browser/volume/index.js +113 -0
  127. package/dist/esm/.tsbuildinfo +1 -1
  128. package/dist/esm/authentication/index.js +1 -27
  129. package/dist/esm/cache/index.js +2 -15
  130. package/dist/esm/common/browser.js +18 -0
  131. package/dist/esm/common/env.js +7 -19
  132. package/dist/esm/common/node.js +10 -21
  133. package/dist/esm/common/settings.js +2 -2
  134. package/dist/esm/sandbox/filesystem/filesystem.js +13 -14
  135. package/dist/esm/sandbox/sandbox.js +2 -2
  136. package/dist/esm-browser/.tsbuildinfo +1 -0
  137. package/dist/esm-browser/agents/index.js +104 -0
  138. package/dist/esm-browser/authentication/apikey.js +20 -0
  139. package/dist/esm-browser/authentication/clientcredentials.js +81 -0
  140. package/dist/esm-browser/authentication/credentials.js +13 -0
  141. package/dist/esm-browser/authentication/deviceMode.js +66 -0
  142. package/dist/esm-browser/authentication/index.js +56 -0
  143. package/dist/esm-browser/authentication/types.js +1 -0
  144. package/dist/esm-browser/cache/index.js +20 -0
  145. package/dist/esm-browser/client/authentication.js +11 -0
  146. package/dist/esm-browser/client/client.gen.js +5 -0
  147. package/dist/esm-browser/client/client.js +1 -0
  148. package/dist/esm-browser/client/index.js +3 -0
  149. package/dist/esm-browser/client/interceptors.js +14 -0
  150. package/dist/esm-browser/client/sdk.gen.js +1717 -0
  151. package/dist/esm-browser/client/types.gen.js +3 -0
  152. package/dist/esm-browser/common/autoload.js +23 -0
  153. package/dist/esm-browser/common/env.js +51 -0
  154. package/dist/esm-browser/common/errors.js +14 -0
  155. package/dist/esm-browser/common/internal.js +220 -0
  156. package/dist/esm-browser/common/internal.test.js +37 -0
  157. package/dist/esm-browser/common/logger.js +65 -0
  158. package/dist/esm-browser/common/node.js +18 -0
  159. package/dist/esm-browser/common/settings.js +178 -0
  160. package/dist/esm-browser/index.browser.test.js +10 -0
  161. package/dist/esm-browser/index.js +18 -0
  162. package/dist/esm-browser/jobs/index.js +3 -0
  163. package/dist/esm-browser/jobs/jobs.js +86 -0
  164. package/dist/esm-browser/jobs/start.js +62 -0
  165. package/dist/esm-browser/jobs/types.js +1 -0
  166. package/dist/esm-browser/mcp/client.js +231 -0
  167. package/dist/esm-browser/mcp/index.js +2 -0
  168. package/dist/esm-browser/mcp/server.js +176 -0
  169. package/dist/esm-browser/models/index.js +25 -0
  170. package/dist/esm-browser/package.json +1 -0
  171. package/dist/esm-browser/sandbox/action.js +78 -0
  172. package/dist/esm-browser/sandbox/client/client.gen.js +3 -0
  173. package/dist/esm-browser/sandbox/client/index.js +3 -0
  174. package/dist/esm-browser/sandbox/client/sdk.gen.js +270 -0
  175. package/dist/esm-browser/sandbox/client/types.gen.js +2 -0
  176. package/dist/esm-browser/sandbox/filesystem/filesystem.js +236 -0
  177. package/dist/esm-browser/sandbox/filesystem/index.js +2 -0
  178. package/dist/esm-browser/sandbox/filesystem/types.js +1 -0
  179. package/dist/esm-browser/sandbox/index.js +7 -0
  180. package/dist/esm-browser/sandbox/network/index.js +1 -0
  181. package/dist/esm-browser/sandbox/network/network.js +6 -0
  182. package/dist/esm-browser/sandbox/preview.js +141 -0
  183. package/dist/esm-browser/sandbox/process/index.js +1 -0
  184. package/dist/esm-browser/sandbox/process/process.js +185 -0
  185. package/dist/esm-browser/sandbox/sandbox.js +176 -0
  186. package/dist/esm-browser/sandbox/session.js +119 -0
  187. package/dist/esm-browser/sandbox/types.js +76 -0
  188. package/dist/esm-browser/telemetry/telemetry.js +74 -0
  189. package/dist/esm-browser/tools/index.js +44 -0
  190. package/dist/esm-browser/tools/mcpTool.js +249 -0
  191. package/dist/esm-browser/tools/types.js +1 -0
  192. package/dist/esm-browser/tools/zodSchema.js +43 -0
  193. package/dist/esm-browser/volume/index.js +109 -0
  194. package/package.json +16 -4
@@ -0,0 +1,180 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SandboxInstance = void 0;
4
+ const uuid_1 = require("uuid");
5
+ const index_js_1 = require("../client/index.js");
6
+ const logger_js_1 = require("../common/logger.js");
7
+ const settings_js_1 = require("../common/settings.js");
8
+ const index_js_2 = require("./filesystem/index.js");
9
+ const index_js_3 = require("./network/index.js");
10
+ const preview_js_1 = require("./preview.js");
11
+ const index_js_4 = require("./process/index.js");
12
+ const session_js_1 = require("./session.js");
13
+ const types_js_1 = require("./types.js");
14
+ class SandboxInstance {
15
+ sandbox;
16
+ fs;
17
+ network;
18
+ process;
19
+ previews;
20
+ sessions;
21
+ constructor(sandbox) {
22
+ this.sandbox = sandbox;
23
+ this.process = new index_js_4.SandboxProcess(sandbox);
24
+ this.fs = new index_js_2.SandboxFileSystem(sandbox, this.process);
25
+ this.network = new index_js_3.SandboxNetwork(sandbox);
26
+ this.previews = new preview_js_1.SandboxPreviews(sandbox);
27
+ this.sessions = new session_js_1.SandboxSessions(sandbox);
28
+ }
29
+ get metadata() {
30
+ return this.sandbox.metadata;
31
+ }
32
+ get status() {
33
+ return this.sandbox.status;
34
+ }
35
+ get events() {
36
+ return this.sandbox.events;
37
+ }
38
+ get spec() {
39
+ return this.sandbox.spec;
40
+ }
41
+ /* eslint-disable */
42
+ async wait({ maxWait = 60000, interval = 1000 } = {}) {
43
+ logger_js_1.logger.warn("⚠️ Warning: sandbox.wait() is deprecated. You don't need to wait for the sandbox to be deployed anymore.");
44
+ return this;
45
+ }
46
+ static async create(sandbox, { safe = true } = {}) {
47
+ const env = settings_js_1.settings.env;
48
+ const defaultName = `sandbox-${(0, uuid_1.v4)().replace(/-/g, '').substring(0, 8)}`;
49
+ const defaultImage = `blaxel/${env}-base:latest`;
50
+ const defaultMemory = 4096;
51
+ // Handle SandboxCreateConfiguration or simple dict with name/image/memory/ports/envs/volumes keys
52
+ if (!sandbox || 'name' in sandbox || 'image' in sandbox || 'memory' in sandbox || 'ports' in sandbox || 'envs' in sandbox || 'volumes' in sandbox || 'lifecycle' in sandbox) {
53
+ if (!sandbox)
54
+ sandbox = {};
55
+ if (!sandbox.name)
56
+ sandbox.name = defaultName;
57
+ if (!sandbox.image)
58
+ sandbox.image = defaultImage;
59
+ if (!sandbox.memory)
60
+ sandbox.memory = defaultMemory;
61
+ const ports = (0, types_js_1.normalizePorts)(sandbox.ports);
62
+ const envs = (0, types_js_1.normalizeEnvs)(sandbox.envs);
63
+ const volumes = (0, types_js_1.normalizeVolumes)(sandbox.volumes);
64
+ const ttl = sandbox.ttl;
65
+ const expires = sandbox.expires;
66
+ const region = sandbox.region;
67
+ const lifecycle = sandbox.lifecycle;
68
+ sandbox = {
69
+ metadata: { name: sandbox.name },
70
+ spec: {
71
+ region: region,
72
+ runtime: {
73
+ image: sandbox.image,
74
+ memory: sandbox.memory,
75
+ ports: ports,
76
+ envs: envs,
77
+ generation: "mk3",
78
+ },
79
+ volumes: volumes,
80
+ lifecycle: lifecycle
81
+ }
82
+ };
83
+ if (ttl) {
84
+ sandbox.spec.runtime.ttl = ttl;
85
+ }
86
+ if (expires) {
87
+ sandbox.spec.runtime.expires = expires.toISOString();
88
+ }
89
+ }
90
+ sandbox = sandbox;
91
+ if (!sandbox.metadata) {
92
+ sandbox.metadata = { name: defaultName };
93
+ }
94
+ if (!sandbox.spec) {
95
+ sandbox.spec = { runtime: { image: defaultImage, memory: defaultMemory } };
96
+ }
97
+ if (!sandbox.spec.runtime) {
98
+ sandbox.spec.runtime = { image: defaultImage, memory: defaultMemory };
99
+ }
100
+ sandbox.spec.runtime.image = sandbox.spec.runtime.image || defaultImage;
101
+ sandbox.spec.runtime.memory = sandbox.spec.runtime.memory || defaultMemory;
102
+ sandbox.spec.runtime.generation = sandbox.spec.runtime.generation || "mk3";
103
+ const { data } = await (0, index_js_1.createSandbox)({
104
+ body: sandbox,
105
+ throwOnError: true,
106
+ });
107
+ const instance = new SandboxInstance(data);
108
+ // TODO remove this part once we have a better way to handle this
109
+ if (safe) {
110
+ try {
111
+ await instance.fs.ls('/');
112
+ }
113
+ catch { }
114
+ }
115
+ return instance;
116
+ }
117
+ static async get(sandboxName) {
118
+ const { data } = await (0, index_js_1.getSandbox)({
119
+ path: {
120
+ sandboxName,
121
+ },
122
+ throwOnError: true,
123
+ });
124
+ return new SandboxInstance(data);
125
+ }
126
+ static async list() {
127
+ const { data } = await (0, index_js_1.listSandboxes)({ throwOnError: true });
128
+ return data.map((sandbox) => new SandboxInstance(sandbox));
129
+ }
130
+ static async delete(sandboxName) {
131
+ const { data } = await (0, index_js_1.deleteSandbox)({
132
+ path: {
133
+ sandboxName,
134
+ },
135
+ throwOnError: true,
136
+ });
137
+ return data;
138
+ }
139
+ static async updateMetadata(sandboxName, metadata) {
140
+ const sandbox = await SandboxInstance.get(sandboxName);
141
+ const body = { ...sandbox.sandbox, metadata: { ...sandbox.metadata, ...metadata } };
142
+ const { data } = await (0, index_js_1.updateSandbox)({
143
+ path: { sandboxName },
144
+ body,
145
+ throwOnError: true,
146
+ });
147
+ const instance = new SandboxInstance(data);
148
+ return instance;
149
+ }
150
+ static async createIfNotExists(sandbox) {
151
+ try {
152
+ return await SandboxInstance.create(sandbox);
153
+ }
154
+ catch (e) {
155
+ if (typeof e === "object" && e !== null && "code" in e && (e.code === 409 || e.code === 'SANDBOX_ALREADY_EXISTS')) {
156
+ const name = 'name' in sandbox ? sandbox.name : sandbox.metadata?.name;
157
+ if (!name) {
158
+ throw new Error("Sandbox name is required");
159
+ }
160
+ const sandboxInstance = await SandboxInstance.get(name);
161
+ return sandboxInstance;
162
+ }
163
+ throw e;
164
+ }
165
+ }
166
+ /* eslint-disable */
167
+ static async fromSession(session) {
168
+ // Create a minimal sandbox configuration for session-based access
169
+ const sandboxName = session.name.includes("-") ? session.name.split("-")[0] : session.name;
170
+ const sandbox = {
171
+ metadata: { name: sandboxName },
172
+ forceUrl: session.url,
173
+ headers: { "X-Blaxel-Preview-Token": session.token },
174
+ params: { bl_preview_token: session.token }
175
+ };
176
+ // Create instance using constructor instead of direct property assignment
177
+ return new SandboxInstance(sandbox);
178
+ }
179
+ }
180
+ exports.SandboxInstance = SandboxInstance;
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SandboxSessions = void 0;
4
+ const index_js_1 = require("../client/index.js");
5
+ const preview_js_1 = require("./preview.js");
6
+ class SandboxSessions {
7
+ sandbox;
8
+ constructor(sandbox) {
9
+ this.sandbox = sandbox;
10
+ }
11
+ get sandboxName() {
12
+ return this.sandbox.metadata?.name ?? "";
13
+ }
14
+ async create(options = {}) {
15
+ const expiresAt = options.expiresAt ?? new Date(Date.now() + 24 * 60 * 60 * 1000); // 1 day from now
16
+ const body = {
17
+ metadata: {
18
+ name: "session-" + Date.now(),
19
+ },
20
+ spec: {
21
+ port: 443,
22
+ public: false,
23
+ expires: expiresAt.toISOString(),
24
+ requestHeaders: options.requestHeaders,
25
+ responseHeaders: options.responseHeaders,
26
+ },
27
+ };
28
+ const { data } = await (0, index_js_1.createSandboxPreview)({
29
+ path: {
30
+ sandboxName: this.sandboxName,
31
+ },
32
+ body,
33
+ throwOnError: true,
34
+ });
35
+ const preview = new preview_js_1.SandboxPreview(data);
36
+ // Create a token for the preview with the given expiresAt
37
+ const tokenObj = await preview.tokens.create(expiresAt);
38
+ return {
39
+ name: body.metadata.name,
40
+ url: preview.spec?.url ?? "",
41
+ token: tokenObj.value,
42
+ expiresAt: typeof tokenObj.expiresAt === 'string' ? new Date(tokenObj.expiresAt) : tokenObj.expiresAt,
43
+ };
44
+ }
45
+ async createIfExpired(options = {}, delta = 1000 * 60 * 60) {
46
+ // First, list all sessions
47
+ const allSessions = await this.list();
48
+ // Variable to hold our final session
49
+ let sessionData;
50
+ const now = new Date();
51
+ const threshold = new Date(now.getTime() + delta);
52
+ // If no valid session exists, create a new one
53
+ if (allSessions.length > 0) {
54
+ sessionData = allSessions[0];
55
+ if (new Date(sessionData.expiresAt) < threshold) {
56
+ await this.delete(sessionData.name);
57
+ sessionData = await this.create(options);
58
+ }
59
+ }
60
+ else {
61
+ // Create a new session
62
+ sessionData = await this.create(options);
63
+ }
64
+ return sessionData;
65
+ }
66
+ async list() {
67
+ const { data } = await (0, index_js_1.listSandboxPreviews)({
68
+ path: {
69
+ sandboxName: this.sandboxName,
70
+ },
71
+ throwOnError: true,
72
+ });
73
+ if (data === null)
74
+ return [];
75
+ return await Promise.all(data.filter((preview) => preview.metadata?.name?.includes("session-")).map(async (preview) => {
76
+ const token = await this.getToken(preview.metadata?.name ?? "");
77
+ return {
78
+ name: preview.metadata?.name ?? "",
79
+ url: preview.spec?.url ?? "",
80
+ token: token?.spec?.token ?? "",
81
+ expiresAt: token?.spec?.expiresAt ?? new Date(),
82
+ };
83
+ }));
84
+ }
85
+ async get(name) {
86
+ const { data } = await (0, index_js_1.getSandboxPreview)({
87
+ path: {
88
+ sandboxName: this.sandboxName,
89
+ previewName: name,
90
+ },
91
+ throwOnError: true,
92
+ });
93
+ const token = await this.getToken(name);
94
+ return {
95
+ url: data.spec?.url ?? "",
96
+ token: token?.spec?.token ?? "",
97
+ expiresAt: token?.spec?.expiresAt ?? new Date(),
98
+ };
99
+ }
100
+ async delete(name) {
101
+ const { data } = await (0, index_js_1.deleteSandboxPreview)({
102
+ path: {
103
+ sandboxName: this.sandboxName,
104
+ previewName: name,
105
+ },
106
+ throwOnError: true,
107
+ });
108
+ return data;
109
+ }
110
+ async getToken(previewName) {
111
+ const { data } = await (0, index_js_1.listSandboxPreviewTokens)({
112
+ path: {
113
+ sandboxName: this.sandboxName,
114
+ previewName,
115
+ },
116
+ throwOnError: true,
117
+ });
118
+ if (data.length === 0)
119
+ return null;
120
+ return data[0];
121
+ }
122
+ }
123
+ exports.SandboxSessions = SandboxSessions;
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizePorts = normalizePorts;
4
+ exports.normalizeEnvs = normalizeEnvs;
5
+ exports.normalizeVolumes = normalizeVolumes;
6
+ function normalizePorts(ports) {
7
+ if (!ports || ports.length === 0) {
8
+ return undefined;
9
+ }
10
+ const portObjects = [];
11
+ for (const port of ports) {
12
+ if (typeof port === 'object' && port !== null) {
13
+ if ('name' in port || 'target' in port || 'protocol' in port) {
14
+ // It's a Port-like object, ensure protocol defaults to HTTP
15
+ const normalizedPort = {
16
+ name: typeof port.name === 'string' ? port.name : undefined,
17
+ target: typeof port.target === 'number' ? port.target : undefined,
18
+ protocol: typeof port.protocol === 'string' ? port.protocol : "HTTP"
19
+ };
20
+ portObjects.push(normalizedPort);
21
+ }
22
+ else {
23
+ throw new Error(`Invalid port type: ${typeof port}. Expected Port object or object with port properties.`);
24
+ }
25
+ }
26
+ else {
27
+ throw new Error(`Invalid port type: ${typeof port}. Expected Port object or object with port properties.`);
28
+ }
29
+ }
30
+ return portObjects;
31
+ }
32
+ function normalizeEnvs(envs) {
33
+ if (!envs || envs.length === 0) {
34
+ return undefined;
35
+ }
36
+ const envObjects = [];
37
+ for (const env of envs) {
38
+ if (typeof env === 'object' && env !== null) {
39
+ // Validate that the object has the required keys
40
+ if (!('name' in env) || !('value' in env)) {
41
+ throw new Error(`Environment variable object must have 'name' and 'value' keys: ${JSON.stringify(env)}`);
42
+ }
43
+ if (typeof env.name !== 'string' || typeof env.value !== 'string') {
44
+ throw new Error(`Environment variable 'name' and 'value' must be strings: ${JSON.stringify(env)}`);
45
+ }
46
+ envObjects.push({ name: env.name, value: env.value });
47
+ }
48
+ else {
49
+ throw new Error(`Invalid env type: ${typeof env}. Expected object with 'name' and 'value' keys.`);
50
+ }
51
+ }
52
+ return envObjects;
53
+ }
54
+ function normalizeVolumes(volumes) {
55
+ if (!volumes || volumes.length === 0) {
56
+ return undefined;
57
+ }
58
+ const volumeObjects = [];
59
+ for (const volume of volumes) {
60
+ if (typeof volume === 'object' && volume !== null) {
61
+ // Validate that the object has the required keys
62
+ if (!('name' in volume) || !('mountPath' in volume)) {
63
+ throw new Error(`Volume binding object must have 'name' and 'mountPath' keys: ${JSON.stringify(volume)}`);
64
+ }
65
+ if (typeof volume.name !== 'string' || typeof volume.mountPath !== 'string') {
66
+ throw new Error(`Volume binding 'name' and 'mountPath' must be strings: ${JSON.stringify(volume)}`);
67
+ }
68
+ // Convert VolumeBinding to VolumeAttachment format
69
+ const volumeAttachment = {
70
+ name: volume.name,
71
+ mountPath: volume.mountPath,
72
+ readOnly: 'readOnly' in volume ? volume.readOnly : false
73
+ };
74
+ volumeObjects.push(volumeAttachment);
75
+ }
76
+ else {
77
+ throw new Error(`Invalid volume type: ${typeof volume}. Expected object with 'name' and 'mountPath' keys.`);
78
+ }
79
+ }
80
+ return volumeObjects;
81
+ }
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ // @blaxel/core/src/telemetry/interface.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.telemetryRegistry = void 0;
5
+ exports.startSpan = startSpan;
6
+ exports.withSpan = withSpan;
7
+ exports.flush = flush;
8
+ /**
9
+ * No-operation implementation of Span
10
+ */
11
+ class NoopSpan {
12
+ setAttribute() { }
13
+ setAttributes() { }
14
+ recordException() { }
15
+ setStatus() { }
16
+ end() { }
17
+ getContext() { return null; }
18
+ }
19
+ /**
20
+ * No-operation implementation of TelemetryProvider
21
+ */
22
+ class NoopTelemetryProvider {
23
+ startSpan() {
24
+ return new NoopSpan();
25
+ }
26
+ flush() {
27
+ return Promise.resolve();
28
+ }
29
+ }
30
+ /**
31
+ * Registry for managing the global telemetry provider
32
+ */
33
+ class TelemetryRegistry {
34
+ static instance;
35
+ provider = new NoopTelemetryProvider();
36
+ constructor() { }
37
+ static getInstance() {
38
+ if (!TelemetryRegistry.instance) {
39
+ TelemetryRegistry.instance = new TelemetryRegistry();
40
+ }
41
+ return TelemetryRegistry.instance;
42
+ }
43
+ /**
44
+ * Register a telemetry provider implementation
45
+ */
46
+ registerProvider(provider) {
47
+ this.provider = provider;
48
+ }
49
+ /**
50
+ * Get the current telemetry provider
51
+ */
52
+ getProvider() {
53
+ return this.provider;
54
+ }
55
+ }
56
+ // Export singleton instance
57
+ exports.telemetryRegistry = TelemetryRegistry.getInstance();
58
+ // Convenience functions that delegate to the provider
59
+ /**
60
+ * Create a span with the registered provider
61
+ */
62
+ function startSpan(name, options) {
63
+ return exports.telemetryRegistry.getProvider().startSpan(name, options);
64
+ }
65
+ async function withSpan(name, fn, options) {
66
+ const span = startSpan(name, options);
67
+ try {
68
+ const result = await fn();
69
+ span.end();
70
+ return result;
71
+ }
72
+ catch (error) {
73
+ span.recordException(error);
74
+ span.end();
75
+ throw error;
76
+ }
77
+ }
78
+ async function flush() {
79
+ await exports.telemetryRegistry.getProvider().flush();
80
+ }
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getToolMetadata = exports.blTool = exports.blTools = exports.BLTools = exports.getTool = void 0;
4
+ const index_js_1 = require("../cache/index.js");
5
+ const client_js_1 = require("../client/client.js");
6
+ const internal_js_1 = require("../common/internal.js");
7
+ const mcpTool_js_1 = require("./mcpTool.js");
8
+ const getTool = async (name, options) => {
9
+ return await (0, mcpTool_js_1.getMcpTool)(name, options);
10
+ };
11
+ exports.getTool = getTool;
12
+ class BLTools {
13
+ toolNames;
14
+ constructor(toolNames) {
15
+ this.toolNames = toolNames;
16
+ }
17
+ }
18
+ exports.BLTools = BLTools;
19
+ const blTools = (names) => {
20
+ return new BLTools(names);
21
+ };
22
+ exports.blTools = blTools;
23
+ const blTool = (name) => {
24
+ return new BLTools([name]);
25
+ };
26
+ exports.blTool = blTool;
27
+ const getToolMetadata = async (tool) => {
28
+ const forcedUrl = (0, internal_js_1.getForcedUrl)('function', tool);
29
+ if (forcedUrl) {
30
+ return {
31
+ metadata: {
32
+ name: tool,
33
+ },
34
+ spec: {
35
+ runtime: {
36
+ type: "mcp",
37
+ },
38
+ },
39
+ };
40
+ }
41
+ const cacheData = await (0, index_js_1.findFromCache)("Function", tool);
42
+ if (cacheData) {
43
+ return cacheData;
44
+ }
45
+ const { data } = await (0, client_js_1.getFunction)({
46
+ path: {
47
+ functionName: tool,
48
+ },
49
+ });
50
+ return data || null;
51
+ };
52
+ exports.getToolMetadata = getToolMetadata;