@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,3 @@
1
+ /* eslint-disable */
2
+ // This file is auto-generated by @hey-api/openapi-ts
3
+ export {};
@@ -0,0 +1,23 @@
1
+ import { client } from "../client/client.gen.js";
2
+ import { interceptors } from "../client/interceptors.js";
3
+ import { client as clientSandbox } from "../sandbox/client/client.gen.js";
4
+ import { settings } from "./settings.js";
5
+ client.setConfig({
6
+ baseUrl: settings.baseUrl,
7
+ });
8
+ for (const interceptor of interceptors) {
9
+ // @ts-expect-error - Interceptor is not typed
10
+ client.interceptors.request.use(interceptor);
11
+ // @ts-expect-error - Interceptor is not typed
12
+ clientSandbox.interceptors.request.use(interceptor);
13
+ }
14
+ // Allow to set custom configuration for browser environment
15
+ export function initialize(config) {
16
+ settings.setConfig(config);
17
+ client.setConfig({
18
+ baseUrl: settings.baseUrl,
19
+ });
20
+ }
21
+ export function authenticate() {
22
+ return settings.authenticate();
23
+ }
@@ -0,0 +1,51 @@
1
+ import toml from "toml";
2
+ import { dotenv, fs } from "./node.js";
3
+ const secretEnv = {};
4
+ const configEnv = {};
5
+ if (fs !== null) {
6
+ try {
7
+ const configFile = fs.readFileSync("blaxel.toml", "utf8");
8
+ const configInfos = toml.parse(configFile);
9
+ for (const key in configInfos.env) {
10
+ configEnv[key] = configInfos.env[key];
11
+ }
12
+ }
13
+ catch {
14
+ // ignore
15
+ }
16
+ try {
17
+ const secretFile = fs.readFileSync(".env", "utf8");
18
+ if (dotenv) {
19
+ const parsed = dotenv.parse(secretFile);
20
+ Object.assign(secretEnv, parsed);
21
+ }
22
+ else {
23
+ // Simple .env parsing fallback when dotenv is not available
24
+ const lines = secretFile.split('\n');
25
+ for (const line of lines) {
26
+ const match = line.match(/^([^=]+)=(.*)$/);
27
+ if (match) {
28
+ secretEnv[match[1].trim()] = match[2].trim();
29
+ }
30
+ }
31
+ }
32
+ }
33
+ catch {
34
+ // ignore
35
+ }
36
+ }
37
+ const env = new Proxy({}, {
38
+ get: (target, prop) => {
39
+ if (secretEnv[prop]) {
40
+ return secretEnv[prop];
41
+ }
42
+ if (configEnv[prop]) {
43
+ return configEnv[prop];
44
+ }
45
+ if (typeof process !== "undefined" && process.env) {
46
+ return process.env[prop];
47
+ }
48
+ return undefined;
49
+ },
50
+ });
51
+ export { env };
@@ -0,0 +1,14 @@
1
+ export function handleDynamicImportError(err) {
2
+ if (err instanceof Error) {
3
+ // We check if it's module import error and retrieve package name from the error message with a regex
4
+ if (err.message.includes("Cannot find module")) {
5
+ const packageName = err.message.match(/Cannot find module '([^']+)'/)?.[1];
6
+ if (packageName) {
7
+ err.message = `Dependency not found. Please run one of the following commands to install it:
8
+ - npm: 'npm install ${packageName}'
9
+ - yarn: 'yarn add ${packageName}'
10
+ - pnpm: 'pnpm add ${packageName}'`;
11
+ }
12
+ }
13
+ }
14
+ }
@@ -0,0 +1,220 @@
1
+ /* eslint-disable */
2
+ import { env } from './env.js';
3
+ // Pure JS MD5 implementation that matches standard crypto MD5
4
+ function md5(input) {
5
+ function cmn(q, a, b, x, s, t) {
6
+ a = (((a + q) | 0) + ((x + t) | 0)) | 0;
7
+ return (((a << s) | (a >>> (32 - s))) + b) | 0;
8
+ }
9
+ function ff(a, b, c, d, x, s, t) {
10
+ return cmn((b & c) | (~b & d), a, b, x, s, t);
11
+ }
12
+ function gg(a, b, c, d, x, s, t) {
13
+ return cmn((b & d) | (c & ~d), a, b, x, s, t);
14
+ }
15
+ function hh(a, b, c, d, x, s, t) {
16
+ return cmn(b ^ c ^ d, a, b, x, s, t);
17
+ }
18
+ function ii(a, b, c, d, x, s, t) {
19
+ return cmn(c ^ (b | ~d), a, b, x, s, t);
20
+ }
21
+ function md5cycle(x, k) {
22
+ let [a, b, c, d] = x;
23
+ a = ff(a, b, c, d, k[0], 7, -680876936);
24
+ d = ff(d, a, b, c, k[1], 12, -389564586);
25
+ c = ff(c, d, a, b, k[2], 17, 606105819);
26
+ b = ff(b, c, d, a, k[3], 22, -1044525330);
27
+ a = ff(a, b, c, d, k[4], 7, -176418897);
28
+ d = ff(d, a, b, c, k[5], 12, 1200080426);
29
+ c = ff(c, d, a, b, k[6], 17, -1473231341);
30
+ b = ff(b, c, d, a, k[7], 22, -45705983);
31
+ a = ff(a, b, c, d, k[8], 7, 1770035416);
32
+ d = ff(d, a, b, c, k[9], 12, -1958414417);
33
+ c = ff(c, d, a, b, k[10], 17, -42063);
34
+ b = ff(b, c, d, a, k[11], 22, -1990404162);
35
+ a = ff(a, b, c, d, k[12], 7, 1804603682);
36
+ d = ff(d, a, b, c, k[13], 12, -40341101);
37
+ c = ff(c, d, a, b, k[14], 17, -1502002290);
38
+ b = ff(b, c, d, a, k[15], 22, 1236535329);
39
+ a = gg(a, b, c, d, k[1], 5, -165796510);
40
+ d = gg(d, a, b, c, k[6], 9, -1069501632);
41
+ c = gg(c, d, a, b, k[11], 14, 643717713);
42
+ b = gg(b, c, d, a, k[0], 20, -373897302);
43
+ a = gg(a, b, c, d, k[5], 5, -701558691);
44
+ d = gg(d, a, b, c, k[10], 9, 38016083);
45
+ c = gg(c, d, a, b, k[15], 14, -660478335);
46
+ b = gg(b, c, d, a, k[4], 20, -405537848);
47
+ a = gg(a, b, c, d, k[9], 5, 568446438);
48
+ d = gg(d, a, b, c, k[14], 9, -1019803690);
49
+ c = gg(c, d, a, b, k[3], 14, -187363961);
50
+ b = gg(b, c, d, a, k[8], 20, 1163531501);
51
+ a = gg(a, b, c, d, k[13], 5, -1444681467);
52
+ d = gg(d, a, b, c, k[2], 9, -51403784);
53
+ c = gg(c, d, a, b, k[7], 14, 1735328473);
54
+ b = gg(b, c, d, a, k[12], 20, -1926607734);
55
+ a = hh(a, b, c, d, k[5], 4, -378558);
56
+ d = hh(d, a, b, c, k[8], 11, -2022574463);
57
+ c = hh(c, d, a, b, k[11], 16, 1839030562);
58
+ b = hh(b, c, d, a, k[14], 23, -35309556);
59
+ a = hh(a, b, c, d, k[1], 4, -1530992060);
60
+ d = hh(d, a, b, c, k[4], 11, 1272893353);
61
+ c = hh(c, d, a, b, k[7], 16, -155497632);
62
+ b = hh(b, c, d, a, k[10], 23, -1094730640);
63
+ a = hh(a, b, c, d, k[13], 4, 681279174);
64
+ d = hh(d, a, b, c, k[0], 11, -358537222);
65
+ c = hh(c, d, a, b, k[3], 16, -722521979);
66
+ b = hh(b, c, d, a, k[6], 23, 76029189);
67
+ a = hh(a, b, c, d, k[9], 4, -640364487);
68
+ d = hh(d, a, b, c, k[12], 11, -421815835);
69
+ c = hh(c, d, a, b, k[15], 16, 530742520);
70
+ b = hh(b, c, d, a, k[2], 23, -995338651);
71
+ a = ii(a, b, c, d, k[0], 6, -198630844);
72
+ d = ii(d, a, b, c, k[7], 10, 1126891415);
73
+ c = ii(c, d, a, b, k[14], 15, -1416354905);
74
+ b = ii(b, c, d, a, k[5], 21, -57434055);
75
+ a = ii(a, b, c, d, k[12], 6, 1700485571);
76
+ d = ii(d, a, b, c, k[3], 10, -1894986606);
77
+ c = ii(c, d, a, b, k[10], 15, -1051523);
78
+ b = ii(b, c, d, a, k[1], 21, -2054922799);
79
+ a = ii(a, b, c, d, k[8], 6, 1873313359);
80
+ d = ii(d, a, b, c, k[15], 10, -30611744);
81
+ c = ii(c, d, a, b, k[6], 15, -1560198380);
82
+ b = ii(b, c, d, a, k[13], 21, 1309151649);
83
+ a = ii(a, b, c, d, k[4], 6, -145523070);
84
+ d = ii(d, a, b, c, k[11], 10, -1120210379);
85
+ c = ii(c, d, a, b, k[2], 15, 718787259);
86
+ b = ii(b, c, d, a, k[9], 21, -343485551);
87
+ x[0] = (a + x[0]) | 0;
88
+ x[1] = (b + x[1]) | 0;
89
+ x[2] = (c + x[2]) | 0;
90
+ x[3] = (d + x[3]) | 0;
91
+ }
92
+ function md5blk(s) {
93
+ const md5blks = [];
94
+ for (let i = 0; i < 64; i += 4) {
95
+ md5blks[i >> 2] =
96
+ s.charCodeAt(i) +
97
+ (s.charCodeAt(i + 1) << 8) +
98
+ (s.charCodeAt(i + 2) << 16) +
99
+ (s.charCodeAt(i + 3) << 24);
100
+ }
101
+ return md5blks;
102
+ }
103
+ function md51(s) {
104
+ let n = s.length, state = [1732584193, -271733879, -1732584194, 271733878], i;
105
+ for (i = 64; i <= n; i += 64) {
106
+ md5cycle(state, md5blk(s.substring(i - 64, i)));
107
+ }
108
+ s = s.substring(i - 64);
109
+ const tail = Array(16).fill(0);
110
+ for (i = 0; i < s.length; i++)
111
+ tail[i >> 2] |= s.charCodeAt(i) << ((i % 4) << 3);
112
+ tail[i >> 2] |= 0x80 << ((i % 4) << 3);
113
+ if (i > 55) {
114
+ md5cycle(state, tail);
115
+ tail.fill(0);
116
+ }
117
+ tail[14] = n * 8;
118
+ md5cycle(state, tail);
119
+ return state;
120
+ }
121
+ // Fixed hex conversion function
122
+ function rhex(n) {
123
+ let s = '';
124
+ for (let j = 0; j < 4; j++) {
125
+ s += ((n >> (j * 8)) & 0xFF).toString(16).padStart(2, '0');
126
+ }
127
+ return s;
128
+ }
129
+ return md51(input).map(rhex).join('');
130
+ }
131
+ export function getAlphanumericLimitedHash(input, maxSize = 48) {
132
+ const hash = md5(input);
133
+ return hash.length > maxSize ? hash.substring(0, maxSize) : hash;
134
+ }
135
+ export function getGlobalUniqueHash(workspace, type, name) {
136
+ const globalUniqueName = `${workspace}-${type}-${name}`;
137
+ return getAlphanumericLimitedHash(globalUniqueName, 48);
138
+ }
139
+ export function pluralize(type) {
140
+ const word = type.toLowerCase();
141
+ // Words ending in s, ss, sh, ch, x, z - add 'es'
142
+ if (word.endsWith('s') || word.endsWith('ss') || word.endsWith('sh') ||
143
+ word.endsWith('ch') || word.endsWith('x') || word.endsWith('z')) {
144
+ return type + 'es';
145
+ }
146
+ // Words ending in consonant + y - change y to ies
147
+ if (word.endsWith('y') && word.length > 1) {
148
+ const beforeY = word[word.length - 2];
149
+ if (!'aeiou'.includes(beforeY)) {
150
+ return type.slice(0, -1) + 'ies';
151
+ }
152
+ }
153
+ // Words ending in f or fe - change to ves
154
+ if (word.endsWith('f')) {
155
+ return type.slice(0, -1) + 'ves';
156
+ }
157
+ if (word.endsWith('fe')) {
158
+ return type.slice(0, -2) + 'ves';
159
+ }
160
+ // Words ending in consonant + o - add 'es'
161
+ if (word.endsWith('o') && word.length > 1) {
162
+ const beforeO = word[word.length - 2];
163
+ if (!'aeiou'.includes(beforeO)) {
164
+ return type + 'es';
165
+ }
166
+ }
167
+ // Default case - just add 's'
168
+ return type + 's';
169
+ }
170
+ export function getForcedUrl(type, name) {
171
+ const pluralType = pluralize(type);
172
+ const envVar = name.replace(/-/g, "_").toUpperCase();
173
+ // BL_FUNCTIONS_NAME_URL
174
+ if (env[`BL_${pluralType.toUpperCase()}_${envVar}_URL`]) {
175
+ return new URL(env[`BL_${pluralType.toUpperCase()}_${envVar}_URL`]);
176
+ }
177
+ // BL_FUNCTION_NAME_URL
178
+ if (env[`BL_${type.toUpperCase()}_${envVar}_URL`]) {
179
+ return new URL(env[`BL_${type.toUpperCase()}_${envVar}_URL`]);
180
+ }
181
+ return null;
182
+ }
183
+ export function getWorkloadTypeShort(type) {
184
+ const lowerType = type.toLowerCase();
185
+ switch (lowerType) {
186
+ case 'agent':
187
+ case 'agents':
188
+ return 'agt';
189
+ case 'mcp':
190
+ case 'mcps':
191
+ case 'function':
192
+ case 'functions':
193
+ return 'mcp';
194
+ case 'sandbox':
195
+ case 'sandboxes':
196
+ return 'sbx';
197
+ case 'job':
198
+ case 'jobs':
199
+ return 'job';
200
+ case 'model':
201
+ case 'models':
202
+ return 'mdl';
203
+ default:
204
+ // fallback to first 3 letters of type
205
+ return lowerType.substring(0, 3);
206
+ }
207
+ }
208
+ export function generateInternalUrl(workspace, type, name, env, protocol, hostname, blCloud, workspaceId) {
209
+ if (blCloud && workspaceId) {
210
+ // New cloud format: bl-ENV-WORKLOAD_CALLED_NAME-WORKLOAD_TYPE_SHORT-WORKSPACE_ID
211
+ const workloadTypeShort = getWorkloadTypeShort(type);
212
+ const subdomain = `bl-${env}-${name}-${workloadTypeShort}-${workspaceId}`;
213
+ return `${protocol}://${subdomain}.${hostname}`;
214
+ }
215
+ else {
216
+ // Legacy format: bl-ENV-HASH.internalhostname
217
+ const hash = getGlobalUniqueHash(workspace, type, name);
218
+ return `${protocol}://bl-${env}-${hash}.${hostname}`;
219
+ }
220
+ }
@@ -0,0 +1,37 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { getAlphanumericLimitedHash, getGlobalUniqueHash } from "./internal.js";
3
+ describe('getAlphanumericLimitedHash', () => {
4
+ it('returns correct MD5 hash for a known string', () => {
5
+ // MD5 of 'hello' is 5d41402abc4b2a76b9719d911017c592
6
+ expect(getAlphanumericLimitedHash('hello')).toBe('5d41402abc4b2a76b9719d911017c592');
7
+ });
8
+ it('respects the maxSize parameter', () => {
9
+ const hash = getAlphanumericLimitedHash('hello', 8);
10
+ expect(hash.length).toBe(8);
11
+ expect(hash).toBe('5d41402a');
12
+ });
13
+ it('returns full hash if maxSize is larger than hash', () => {
14
+ const hash = getAlphanumericLimitedHash('hello', 64);
15
+ expect(hash).toBe('5d41402abc4b2a76b9719d911017c592');
16
+ });
17
+ });
18
+ const testCases = [
19
+ {
20
+ workspace: 'charlou-dev',
21
+ type: 'function',
22
+ name: 'blaxel-search',
23
+ expected: '594d9322779f4a07a55a7bf1050360c6'
24
+ }, {
25
+ workspace: 'charlou-dev',
26
+ type: 'agent',
27
+ name: 'toto',
28
+ expected: '1bb3a151bda194751b062df8edb59eaf',
29
+ }
30
+ ];
31
+ describe('getGlobalUniqueHash', () => {
32
+ testCases.forEach(({ workspace, type, name, expected }) => {
33
+ it(`returns ${expected} for ${workspace}-${type}-${name}`, () => {
34
+ expect(getGlobalUniqueHash(workspace, type, name)).toBe(expected);
35
+ });
36
+ });
37
+ });
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Stringify an object with a limited depth
3
+ * @param obj The object to stringify
4
+ * @param maxDepth Maximum depth (default: 1)
5
+ * @param depth Current depth (internal use)
6
+ */
7
+ export function stringify(obj, maxDepth = 1, depth = 0) {
8
+ if (obj instanceof Error)
9
+ return obj.stack || obj.message;
10
+ if (obj === null)
11
+ return 'null';
12
+ if (obj === undefined)
13
+ return 'undefined';
14
+ // If we've reached max depth or it's not an object
15
+ if (depth >= maxDepth || typeof obj !== 'object') {
16
+ return typeof obj === 'object' ? `[${Array.isArray(obj) ? 'Array' : 'object'}]` :
17
+ typeof obj === 'string' ? `"${obj}"` : String(obj);
18
+ }
19
+ // Handle arrays
20
+ if (Array.isArray(obj)) {
21
+ return `[${obj.map(item => stringify(item, maxDepth, depth + 1)).join(', ')}]`;
22
+ }
23
+ // Handle objects
24
+ const pairs = Object.entries(obj).map(([key, val]) => `"${key}": ${stringify(val, maxDepth, depth + 1)}`);
25
+ return `{${pairs.join(', ')}}`;
26
+ }
27
+ class Logger {
28
+ logger;
29
+ constructor() {
30
+ this.logger = null;
31
+ }
32
+ setLogger(logger) {
33
+ this.logger = logger;
34
+ }
35
+ parseArgs(args) {
36
+ return args.map((arg) => {
37
+ if (arg instanceof Error) {
38
+ return arg.stack ?? arg.message;
39
+ }
40
+ return arg;
41
+ }).join(" ");
42
+ }
43
+ info(...message) {
44
+ if (this.logger) {
45
+ this.logger.info(this.parseArgs(message));
46
+ }
47
+ }
48
+ debug(...message) {
49
+ if (this.logger) {
50
+ this.logger.debug(this.parseArgs(message));
51
+ }
52
+ }
53
+ warn(...message) {
54
+ if (this.logger) {
55
+ this.logger.warn(this.parseArgs(message));
56
+ }
57
+ }
58
+ error(...message) {
59
+ if (this.logger) {
60
+ this.logger.error(this.parseArgs(message));
61
+ }
62
+ }
63
+ }
64
+ const logger = new Logger();
65
+ export { logger };
@@ -0,0 +1,18 @@
1
+ /* eslint-disable */
2
+ // Browser-compatible exports for Node.js modules
3
+ // In browser environments, Node.js built-in modules are not available
4
+ // All Node.js modules are null in browser
5
+ export const fs = null;
6
+ export const os = null;
7
+ export const path = null;
8
+ export const dotenv = null;
9
+ // Async function to get WebSocket in browser environment
10
+ export async function getWebSocket() {
11
+ // In browser, use native WebSocket
12
+ if (typeof WebSocket !== 'undefined') {
13
+ return WebSocket;
14
+ }
15
+ else {
16
+ throw new Error("Native WebSocket not available in browser environment");
17
+ }
18
+ }
@@ -0,0 +1,178 @@
1
+ import { authentication } from "../authentication/index.js";
2
+ import { env } from "../common/env.js";
3
+ // Function to get package version
4
+ function getPackageVersion() {
5
+ try {
6
+ // Check if require is available (CommonJS environment)
7
+ if (typeof require !== "undefined") {
8
+ // Try to require package.json (Node.js only, gracefully fails in browser)
9
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
10
+ const packageJson = {"version":"0.2.43-dev.199","commit":"f0e8fd40aacd9997e2a873e83577658212c0134f"};
11
+ return packageJson.version || "unknown";
12
+ }
13
+ else {
14
+ // ESM environment - return unknown
15
+ return "unknown";
16
+ }
17
+ }
18
+ catch {
19
+ // Fallback for browser environments or if require fails
20
+ return "unknown";
21
+ }
22
+ }
23
+ // Function to get OS and architecture
24
+ function getOsArch() {
25
+ try {
26
+ // Node.js environment
27
+ if (typeof process !== 'undefined' && process.platform && process.arch) {
28
+ const platform = process.platform === 'win32' ? 'windows' :
29
+ process.platform === 'darwin' ? 'darwin' :
30
+ process.platform === 'linux' ? 'linux' : process.platform;
31
+ return `${platform}/${process.arch}`;
32
+ }
33
+ }
34
+ catch {
35
+ // Fall through to browser detection
36
+ }
37
+ // Browser environment - use fixed detection
38
+ try {
39
+ const g = globalThis;
40
+ const platformValue = g.navigator?.platform;
41
+ if (typeof platformValue === 'string') {
42
+ const navPlatform = platformValue.toLowerCase();
43
+ const platform = navPlatform.includes('win') ? 'windows' :
44
+ navPlatform.includes('mac') ? 'darwin' :
45
+ navPlatform.includes('linux') ? 'linux' : 'browser';
46
+ const arch = navPlatform.includes('64') ? 'amd64' : 'unknown';
47
+ return `${platform}/${arch}`;
48
+ }
49
+ }
50
+ catch {
51
+ // Ignore errors
52
+ }
53
+ return "browser/unknown";
54
+ }
55
+ // Function to get commit hash
56
+ function getCommitHash() {
57
+ try {
58
+ // Check if require is available (CommonJS environment)
59
+ if (typeof require !== "undefined") {
60
+ // Try to require package.json and look for commit field (set during build)
61
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
62
+ const packageJson = {"version":"0.2.43-dev.199","commit":"f0e8fd40aacd9997e2a873e83577658212c0134f"};
63
+ // Check for commit in various possible locations
64
+ const commit = packageJson.commit || packageJson.buildInfo?.commit;
65
+ if (commit) {
66
+ return commit.length > 7 ? commit.substring(0, 7) : commit;
67
+ }
68
+ }
69
+ }
70
+ catch {
71
+ // Fallback for browser environments or if require fails
72
+ }
73
+ return "unknown";
74
+ }
75
+ class Settings {
76
+ credentials;
77
+ config;
78
+ _version = null;
79
+ constructor() {
80
+ this.credentials = authentication();
81
+ this.config = {
82
+ proxy: "",
83
+ apikey: "",
84
+ workspace: "",
85
+ };
86
+ }
87
+ setConfig(config) {
88
+ this.config = config;
89
+ }
90
+ get env() {
91
+ return env.BL_ENV || "prod";
92
+ }
93
+ get baseUrl() {
94
+ if (this.config.proxy) {
95
+ return this.config.proxy + "/api";
96
+ }
97
+ if (env.BL_API_URL) {
98
+ return env.BL_API_URL;
99
+ }
100
+ if (this.env === "prod") {
101
+ return "https://api.blaxel.ai/v0";
102
+ }
103
+ return "https://api.blaxel.dev/v0";
104
+ }
105
+ get runUrl() {
106
+ if (this.config.proxy) {
107
+ return this.config.proxy + "/run";
108
+ }
109
+ if (env.BL_RUN_URL) {
110
+ return env.BL_RUN_URL;
111
+ }
112
+ if (this.env === "prod") {
113
+ return "https://run.blaxel.ai";
114
+ }
115
+ return "https://run.blaxel.dev";
116
+ }
117
+ get workspace() {
118
+ return this.config.workspace || this.credentials.workspace || "";
119
+ }
120
+ get authorization() {
121
+ if (this.config.apikey) {
122
+ return 'Bearer ' + this.token;
123
+ }
124
+ return this.credentials.authorization;
125
+ }
126
+ get token() {
127
+ if (this.config.apikey) {
128
+ return this.config.apikey;
129
+ }
130
+ return this.credentials.token;
131
+ }
132
+ get version() {
133
+ if (this._version === null) {
134
+ this._version = getPackageVersion();
135
+ }
136
+ return this._version;
137
+ }
138
+ get headers() {
139
+ const osArch = getOsArch();
140
+ const commitHash = getCommitHash();
141
+ return {
142
+ "x-blaxel-authorization": this.authorization,
143
+ "x-blaxel-workspace": this.workspace || "",
144
+ "User-Agent": `blaxel/sdk/typescript/${this.version} (${osArch}) blaxel/${commitHash}`,
145
+ };
146
+ }
147
+ get name() {
148
+ return env.BL_NAME || "";
149
+ }
150
+ get type() {
151
+ return env.BL_TYPE || "agents";
152
+ }
153
+ get runInternalHostname() {
154
+ if (!this.generation) {
155
+ return "";
156
+ }
157
+ return env.BL_RUN_INTERNAL_HOST || "";
158
+ }
159
+ get runInternalProtocol() {
160
+ return env.BL_RUN_INTERNAL_PROTOCOL || "https";
161
+ }
162
+ get blCloud() {
163
+ return env.BL_CLOUD === "true";
164
+ }
165
+ get workspaceId() {
166
+ return env.BL_WORKSPACE_ID || "";
167
+ }
168
+ get generation() {
169
+ return env.BL_GENERATION || "";
170
+ }
171
+ get loggerType() {
172
+ return env.BL_LOGGER || "http";
173
+ }
174
+ async authenticate() {
175
+ await this.credentials.authenticate();
176
+ }
177
+ }
178
+ export const settings = new Settings();
@@ -0,0 +1,10 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ // Import your SDK entry point or a function to test
3
+ import * as sdk from "./index.js";
4
+ describe('SDK Browser Integration', () => {
5
+ it('should load the SDK without Node.js-only modules', () => {
6
+ // Example: check that SDK loads and a function exists
7
+ expect(typeof sdk).toBe('object');
8
+ // Add more specific tests for your SDK as needed
9
+ });
10
+ });
@@ -0,0 +1,18 @@
1
+ import "./common/autoload.js";
2
+ export * from "./agents/index.js";
3
+ export * from "./client/client.js";
4
+ export * from "./common/autoload.js";
5
+ export * from "./common/env.js";
6
+ export * from "./common/node.js";
7
+ export * from "./common/errors.js";
8
+ export * from "./common/internal.js";
9
+ export * from "./common/logger.js";
10
+ export * from "./common/settings.js";
11
+ export * from "./jobs/index.js";
12
+ export * from "./mcp/index.js";
13
+ export * from "./models/index.js";
14
+ export * from "./sandbox/index.js";
15
+ export * from "./telemetry/telemetry.js";
16
+ export * from "./tools/index.js";
17
+ export * from "./tools/types.js";
18
+ export * from "./volume/index.js";
@@ -0,0 +1,3 @@
1
+ export * from "./jobs.js";
2
+ export * from "./start.js";
3
+ export * from "./types.js";