@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.
- package/dist/cjs/.tsbuildinfo +1 -1
- package/dist/cjs/authentication/index.js +4 -30
- package/dist/cjs/cache/index.js +3 -16
- package/dist/cjs/common/browser.js +22 -0
- package/dist/cjs/common/env.js +12 -24
- package/dist/cjs/common/node.js +13 -25
- package/dist/cjs/common/settings.js +2 -2
- package/dist/cjs/sandbox/filesystem/filesystem.js +12 -13
- package/dist/cjs/sandbox/sandbox.js +2 -2
- package/dist/cjs/types/common/browser.d.ts +5 -0
- package/dist/cjs/types/common/node.d.ts +1 -2
- package/dist/cjs/types/sandbox/filesystem/filesystem.d.ts +6 -2
- package/dist/cjs-browser/.tsbuildinfo +1 -0
- package/dist/cjs-browser/agents/index.js +109 -0
- package/dist/cjs-browser/authentication/apikey.js +24 -0
- package/dist/cjs-browser/authentication/clientcredentials.js +85 -0
- package/dist/cjs-browser/authentication/credentials.js +17 -0
- package/dist/cjs-browser/authentication/deviceMode.js +70 -0
- package/dist/cjs-browser/authentication/index.js +62 -0
- package/dist/cjs-browser/authentication/types.js +2 -0
- package/dist/cjs-browser/cache/index.js +26 -0
- package/dist/cjs-browser/client/authentication.js +15 -0
- package/dist/cjs-browser/client/client.gen.js +8 -0
- package/dist/cjs-browser/client/client.js +17 -0
- package/dist/cjs-browser/client/index.js +19 -0
- package/dist/cjs-browser/client/interceptors.js +17 -0
- package/dist/cjs-browser/client/sdk.gen.js +1824 -0
- package/dist/cjs-browser/client/types.gen.js +4 -0
- package/dist/cjs-browser/common/autoload.js +27 -0
- package/dist/cjs-browser/common/env.js +57 -0
- package/dist/cjs-browser/common/errors.js +17 -0
- package/dist/cjs-browser/common/internal.js +228 -0
- package/dist/cjs-browser/common/internal.test.js +39 -0
- package/dist/cjs-browser/common/logger.js +69 -0
- package/dist/cjs-browser/common/node.js +22 -0
- package/dist/cjs-browser/common/settings.js +181 -0
- package/dist/cjs-browser/index.browser.test.js +45 -0
- package/dist/cjs-browser/index.js +34 -0
- package/dist/cjs-browser/jobs/index.js +19 -0
- package/dist/cjs-browser/jobs/jobs.js +90 -0
- package/dist/cjs-browser/jobs/start.js +66 -0
- package/dist/cjs-browser/jobs/types.js +2 -0
- package/dist/cjs-browser/mcp/client.js +235 -0
- package/dist/cjs-browser/mcp/index.js +18 -0
- package/dist/cjs-browser/mcp/server.js +213 -0
- package/dist/cjs-browser/models/index.js +31 -0
- package/dist/cjs-browser/sandbox/action.js +83 -0
- package/dist/cjs-browser/sandbox/client/client.gen.js +6 -0
- package/dist/cjs-browser/sandbox/client/index.js +19 -0
- package/dist/cjs-browser/sandbox/client/sdk.gen.js +289 -0
- package/dist/cjs-browser/sandbox/client/types.gen.js +3 -0
- package/dist/cjs-browser/sandbox/filesystem/filesystem.js +240 -0
- package/dist/cjs-browser/sandbox/filesystem/index.js +18 -0
- package/dist/cjs-browser/sandbox/filesystem/types.js +2 -0
- package/dist/cjs-browser/sandbox/index.js +36 -0
- package/dist/cjs-browser/sandbox/network/index.js +17 -0
- package/dist/cjs-browser/sandbox/network/network.js +10 -0
- package/dist/cjs-browser/sandbox/preview.js +148 -0
- package/dist/cjs-browser/sandbox/process/index.js +17 -0
- package/dist/cjs-browser/sandbox/process/process.js +189 -0
- package/dist/cjs-browser/sandbox/sandbox.js +180 -0
- package/dist/cjs-browser/sandbox/session.js +123 -0
- package/dist/cjs-browser/sandbox/types.js +81 -0
- package/dist/cjs-browser/telemetry/telemetry.js +80 -0
- package/dist/cjs-browser/tools/index.js +52 -0
- package/dist/cjs-browser/tools/mcpTool.js +254 -0
- package/dist/cjs-browser/tools/types.js +2 -0
- package/dist/cjs-browser/tools/zodSchema.js +50 -0
- package/dist/cjs-browser/types/agents/index.d.ts +15 -0
- package/dist/cjs-browser/types/authentication/apikey.d.ts +10 -0
- package/dist/cjs-browser/types/authentication/clientcredentials.d.ts +17 -0
- package/dist/cjs-browser/types/authentication/credentials.d.ts +6 -0
- package/dist/cjs-browser/types/authentication/deviceMode.d.ts +15 -0
- package/dist/cjs-browser/types/authentication/index.d.ts +3 -0
- package/dist/cjs-browser/types/authentication/types.d.ts +9 -0
- package/dist/cjs-browser/types/cache/index.d.ts +1 -0
- package/dist/cjs-browser/types/client/authentication.d.ts +25 -0
- package/dist/cjs-browser/types/client/client.d.ts +2 -0
- package/dist/cjs-browser/types/client/client.gen.d.ts +12 -0
- package/dist/cjs-browser/types/client/index.d.ts +2 -0
- package/dist/cjs-browser/types/client/interceptors.d.ts +3 -0
- package/dist/cjs-browser/types/client/sdk.gen.d.ts +519 -0
- package/dist/cjs-browser/types/client/types.gen.d.ts +4950 -0
- package/dist/cjs-browser/types/common/autoload.d.ts +3 -0
- package/dist/cjs-browser/types/common/browser.d.ts +5 -0
- package/dist/cjs-browser/types/common/env.d.ts +5 -0
- package/dist/cjs-browser/types/common/errors.d.ts +1 -0
- package/dist/cjs-browser/types/common/internal.d.ts +6 -0
- package/dist/cjs-browser/types/common/internal.test.d.ts +1 -0
- package/dist/cjs-browser/types/common/logger.d.ts +25 -0
- package/dist/cjs-browser/types/common/node.d.ts +6 -0
- package/dist/cjs-browser/types/common/settings.d.ts +32 -0
- package/dist/cjs-browser/types/index.browser.test.d.ts +1 -0
- package/dist/cjs-browser/types/index.d.ts +18 -0
- package/dist/cjs-browser/types/jobs/index.d.ts +3 -0
- package/dist/cjs-browser/types/jobs/jobs.d.ts +13 -0
- package/dist/cjs-browser/types/jobs/start.d.ts +1 -0
- package/dist/cjs-browser/types/jobs/types.d.ts +3 -0
- package/dist/cjs-browser/types/mcp/client.d.ts +28 -0
- package/dist/cjs-browser/types/mcp/index.d.ts +2 -0
- package/dist/cjs-browser/types/mcp/server.d.ts +24 -0
- package/dist/cjs-browser/types/models/index.d.ts +8 -0
- package/dist/cjs-browser/types/sandbox/action.d.ts +19 -0
- package/dist/cjs-browser/types/sandbox/client/client.gen.d.ts +12 -0
- package/dist/cjs-browser/types/sandbox/client/index.d.ts +2 -0
- package/dist/cjs-browser/types/sandbox/client/sdk.gen.d.ts +101 -0
- package/dist/cjs-browser/types/sandbox/client/types.gen.d.ts +578 -0
- package/dist/cjs-browser/types/sandbox/filesystem/filesystem.d.ts +27 -0
- package/dist/cjs-browser/types/sandbox/filesystem/index.d.ts +2 -0
- package/dist/cjs-browser/types/sandbox/filesystem/types.d.ts +15 -0
- package/dist/cjs-browser/types/sandbox/index.d.ts +4 -0
- package/dist/cjs-browser/types/sandbox/network/index.d.ts +1 -0
- package/dist/cjs-browser/types/sandbox/network/network.d.ts +5 -0
- package/dist/cjs-browser/types/sandbox/preview.d.ts +37 -0
- package/dist/cjs-browser/types/sandbox/process/index.d.ts +1 -0
- package/dist/cjs-browser/types/sandbox/process/process.d.ts +24 -0
- package/dist/cjs-browser/types/sandbox/sandbox.d.ts +33 -0
- package/dist/cjs-browser/types/sandbox/session.d.ts +27 -0
- package/dist/cjs-browser/types/sandbox/types.d.ts +52 -0
- package/dist/cjs-browser/types/telemetry/telemetry.d.ts +62 -0
- package/dist/cjs-browser/types/tools/index.d.ts +12 -0
- package/dist/cjs-browser/types/tools/mcpTool.d.ts +33 -0
- package/dist/cjs-browser/types/tools/types.d.ts +8 -0
- package/dist/cjs-browser/types/tools/zodSchema.d.ts +82 -0
- package/dist/cjs-browser/types/volume/index.d.ts +23 -0
- package/dist/cjs-browser/volume/index.js +113 -0
- package/dist/esm/.tsbuildinfo +1 -1
- package/dist/esm/authentication/index.js +1 -27
- package/dist/esm/cache/index.js +2 -15
- package/dist/esm/common/browser.js +18 -0
- package/dist/esm/common/env.js +7 -19
- package/dist/esm/common/node.js +10 -21
- package/dist/esm/common/settings.js +2 -2
- package/dist/esm/sandbox/filesystem/filesystem.js +13 -14
- package/dist/esm/sandbox/sandbox.js +2 -2
- package/dist/esm-browser/.tsbuildinfo +1 -0
- package/dist/esm-browser/agents/index.js +104 -0
- package/dist/esm-browser/authentication/apikey.js +20 -0
- package/dist/esm-browser/authentication/clientcredentials.js +81 -0
- package/dist/esm-browser/authentication/credentials.js +13 -0
- package/dist/esm-browser/authentication/deviceMode.js +66 -0
- package/dist/esm-browser/authentication/index.js +56 -0
- package/dist/esm-browser/authentication/types.js +1 -0
- package/dist/esm-browser/cache/index.js +20 -0
- package/dist/esm-browser/client/authentication.js +11 -0
- package/dist/esm-browser/client/client.gen.js +5 -0
- package/dist/esm-browser/client/client.js +1 -0
- package/dist/esm-browser/client/index.js +3 -0
- package/dist/esm-browser/client/interceptors.js +14 -0
- package/dist/esm-browser/client/sdk.gen.js +1717 -0
- package/dist/esm-browser/client/types.gen.js +3 -0
- package/dist/esm-browser/common/autoload.js +23 -0
- package/dist/esm-browser/common/env.js +51 -0
- package/dist/esm-browser/common/errors.js +14 -0
- package/dist/esm-browser/common/internal.js +220 -0
- package/dist/esm-browser/common/internal.test.js +37 -0
- package/dist/esm-browser/common/logger.js +65 -0
- package/dist/esm-browser/common/node.js +18 -0
- package/dist/esm-browser/common/settings.js +178 -0
- package/dist/esm-browser/index.browser.test.js +10 -0
- package/dist/esm-browser/index.js +18 -0
- package/dist/esm-browser/jobs/index.js +3 -0
- package/dist/esm-browser/jobs/jobs.js +86 -0
- package/dist/esm-browser/jobs/start.js +62 -0
- package/dist/esm-browser/jobs/types.js +1 -0
- package/dist/esm-browser/mcp/client.js +231 -0
- package/dist/esm-browser/mcp/index.js +2 -0
- package/dist/esm-browser/mcp/server.js +176 -0
- package/dist/esm-browser/models/index.js +25 -0
- package/dist/esm-browser/package.json +1 -0
- package/dist/esm-browser/sandbox/action.js +78 -0
- package/dist/esm-browser/sandbox/client/client.gen.js +3 -0
- package/dist/esm-browser/sandbox/client/index.js +3 -0
- package/dist/esm-browser/sandbox/client/sdk.gen.js +270 -0
- package/dist/esm-browser/sandbox/client/types.gen.js +2 -0
- package/dist/esm-browser/sandbox/filesystem/filesystem.js +236 -0
- package/dist/esm-browser/sandbox/filesystem/index.js +2 -0
- package/dist/esm-browser/sandbox/filesystem/types.js +1 -0
- package/dist/esm-browser/sandbox/index.js +7 -0
- package/dist/esm-browser/sandbox/network/index.js +1 -0
- package/dist/esm-browser/sandbox/network/network.js +6 -0
- package/dist/esm-browser/sandbox/preview.js +141 -0
- package/dist/esm-browser/sandbox/process/index.js +1 -0
- package/dist/esm-browser/sandbox/process/process.js +185 -0
- package/dist/esm-browser/sandbox/sandbox.js +176 -0
- package/dist/esm-browser/sandbox/session.js +119 -0
- package/dist/esm-browser/sandbox/types.js +76 -0
- package/dist/esm-browser/telemetry/telemetry.js +74 -0
- package/dist/esm-browser/tools/index.js +44 -0
- package/dist/esm-browser/tools/mcpTool.js +249 -0
- package/dist/esm-browser/tools/types.js +1 -0
- package/dist/esm-browser/tools/zodSchema.js +43 -0
- package/dist/esm-browser/volume/index.js +109 -0
- package/package.json +16 -4
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
const vitest_1 = require("vitest");
|
|
37
|
+
// Import your SDK entry point or a function to test
|
|
38
|
+
const sdk = __importStar(require("./index"));
|
|
39
|
+
(0, vitest_1.describe)('SDK Browser Integration', () => {
|
|
40
|
+
(0, vitest_1.it)('should load the SDK without Node.js-only modules', () => {
|
|
41
|
+
// Example: check that SDK loads and a function exists
|
|
42
|
+
(0, vitest_1.expect)(typeof sdk).toBe('object');
|
|
43
|
+
// Add more specific tests for your SDK as needed
|
|
44
|
+
});
|
|
45
|
+
});
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
require("./common/autoload");
|
|
18
|
+
__exportStar(require("./agents/index.js"), exports);
|
|
19
|
+
__exportStar(require("./client/client.js"), exports);
|
|
20
|
+
__exportStar(require("./common/autoload.js"), exports);
|
|
21
|
+
__exportStar(require("./common/env.js"), exports);
|
|
22
|
+
__exportStar(require("./common/node.js"), exports);
|
|
23
|
+
__exportStar(require("./common/errors.js"), exports);
|
|
24
|
+
__exportStar(require("./common/internal.js"), exports);
|
|
25
|
+
__exportStar(require("./common/logger.js"), exports);
|
|
26
|
+
__exportStar(require("./common/settings.js"), exports);
|
|
27
|
+
__exportStar(require("./jobs/index.js"), exports);
|
|
28
|
+
__exportStar(require("./mcp/index.js"), exports);
|
|
29
|
+
__exportStar(require("./models/index.js"), exports);
|
|
30
|
+
__exportStar(require("./sandbox/index.js"), exports);
|
|
31
|
+
__exportStar(require("./telemetry/telemetry.js"), exports);
|
|
32
|
+
__exportStar(require("./tools/index.js"), exports);
|
|
33
|
+
__exportStar(require("./tools/types.js"), exports);
|
|
34
|
+
__exportStar(require("./volume/index.js"), exports);
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./jobs.js"), exports);
|
|
18
|
+
__exportStar(require("./start.js"), exports);
|
|
19
|
+
__exportStar(require("./types.js"), exports);
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.blJob = void 0;
|
|
4
|
+
const internal_js_1 = require("../common/internal.js");
|
|
5
|
+
const logger_js_1 = require("../common/logger.js");
|
|
6
|
+
const settings_js_1 = require("../common/settings.js");
|
|
7
|
+
const telemetry_js_1 = require("../telemetry/telemetry.js");
|
|
8
|
+
class BlJob {
|
|
9
|
+
jobName;
|
|
10
|
+
constructor(jobName) {
|
|
11
|
+
this.jobName = jobName;
|
|
12
|
+
}
|
|
13
|
+
get fallbackUrl() {
|
|
14
|
+
if (this.externalUrl != this.url) {
|
|
15
|
+
return this.externalUrl;
|
|
16
|
+
}
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
get externalUrl() {
|
|
20
|
+
return new URL(`${settings_js_1.settings.runUrl}/${settings_js_1.settings.workspace}/jobs/${this.jobName}`);
|
|
21
|
+
}
|
|
22
|
+
get internalUrl() {
|
|
23
|
+
const url = (0, internal_js_1.generateInternalUrl)(settings_js_1.settings.workspace, "job", this.jobName, settings_js_1.settings.env, settings_js_1.settings.runInternalProtocol, settings_js_1.settings.runInternalHostname, settings_js_1.settings.blCloud, settings_js_1.settings.workspaceId);
|
|
24
|
+
return new URL(url);
|
|
25
|
+
}
|
|
26
|
+
get forcedUrl() {
|
|
27
|
+
return (0, internal_js_1.getForcedUrl)('job', this.jobName);
|
|
28
|
+
}
|
|
29
|
+
get url() {
|
|
30
|
+
if (this.forcedUrl)
|
|
31
|
+
return this.forcedUrl;
|
|
32
|
+
if (settings_js_1.settings.runInternalHostname)
|
|
33
|
+
return this.internalUrl;
|
|
34
|
+
return this.externalUrl;
|
|
35
|
+
}
|
|
36
|
+
async call(url, tasks) {
|
|
37
|
+
const body = {
|
|
38
|
+
tasks: tasks
|
|
39
|
+
};
|
|
40
|
+
const response = await fetch(url.toString() + "/executions", {
|
|
41
|
+
method: "POST",
|
|
42
|
+
headers: {
|
|
43
|
+
...settings_js_1.settings.headers,
|
|
44
|
+
"Content-Type": "application/json",
|
|
45
|
+
},
|
|
46
|
+
body: JSON.stringify(body),
|
|
47
|
+
});
|
|
48
|
+
return response;
|
|
49
|
+
}
|
|
50
|
+
async run(tasks) {
|
|
51
|
+
logger_js_1.logger.debug(`Job Calling: ${this.jobName}`);
|
|
52
|
+
const span = (0, telemetry_js_1.startSpan)(this.jobName, {
|
|
53
|
+
attributes: {
|
|
54
|
+
"job.name": this.jobName,
|
|
55
|
+
"span.type": "job.run",
|
|
56
|
+
},
|
|
57
|
+
isRoot: false,
|
|
58
|
+
});
|
|
59
|
+
try {
|
|
60
|
+
const response = await this.call(this.url, tasks);
|
|
61
|
+
return await response.text();
|
|
62
|
+
}
|
|
63
|
+
catch (err) {
|
|
64
|
+
if (err instanceof Error) {
|
|
65
|
+
if (!this.fallbackUrl) {
|
|
66
|
+
span.setAttribute("job.run.error", err.stack);
|
|
67
|
+
throw err;
|
|
68
|
+
}
|
|
69
|
+
try {
|
|
70
|
+
const response = await this.call(this.fallbackUrl, tasks);
|
|
71
|
+
return await response.text();
|
|
72
|
+
}
|
|
73
|
+
catch (err) {
|
|
74
|
+
if (err instanceof Error) {
|
|
75
|
+
span.setAttribute("job.run.error", err.stack);
|
|
76
|
+
}
|
|
77
|
+
throw err;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
throw err;
|
|
81
|
+
}
|
|
82
|
+
finally {
|
|
83
|
+
span.end();
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
const blJob = (jobName) => {
|
|
88
|
+
return new BlJob(jobName);
|
|
89
|
+
};
|
|
90
|
+
exports.blJob = blJob;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.blStartJob = void 0;
|
|
4
|
+
const autoload_js_1 = require("../common/autoload.js");
|
|
5
|
+
const env_js_1 = require("../common/env.js");
|
|
6
|
+
const telemetry_js_1 = require("../telemetry/telemetry.js");
|
|
7
|
+
class BlJobWrapper {
|
|
8
|
+
async getArguments() {
|
|
9
|
+
if (!env_js_1.env.BL_EXECUTION_DATA_URL) {
|
|
10
|
+
const args = this.parseCommandLineArgs();
|
|
11
|
+
return args;
|
|
12
|
+
}
|
|
13
|
+
const response = await fetch(env_js_1.env.BL_EXECUTION_DATA_URL);
|
|
14
|
+
const data = await response.json();
|
|
15
|
+
return data.tasks[this.index] ?? {};
|
|
16
|
+
}
|
|
17
|
+
parseCommandLineArgs() {
|
|
18
|
+
const args = process.argv.slice(2);
|
|
19
|
+
const result = {};
|
|
20
|
+
for (let i = 0; i < args.length; i++) {
|
|
21
|
+
const arg = args[i];
|
|
22
|
+
if (arg.startsWith('--')) {
|
|
23
|
+
const key = arg.slice(2);
|
|
24
|
+
const value = args[i + 1];
|
|
25
|
+
if (value && !value.startsWith('--')) {
|
|
26
|
+
result[key] = value;
|
|
27
|
+
i++;
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
result[key] = 'true';
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return result;
|
|
35
|
+
}
|
|
36
|
+
get indexKey() {
|
|
37
|
+
return env_js_1.env.BL_TASK_KEY ?? "TASK_INDEX";
|
|
38
|
+
}
|
|
39
|
+
get index() {
|
|
40
|
+
return env_js_1.env[this.indexKey] ? Number(env_js_1.env[this.indexKey]) : 0;
|
|
41
|
+
}
|
|
42
|
+
/*
|
|
43
|
+
Run a job defined in a function, it's run in the current process
|
|
44
|
+
*/
|
|
45
|
+
async start(func) {
|
|
46
|
+
await (0, autoload_js_1.authenticate)();
|
|
47
|
+
const parsedArgs = await this.getArguments();
|
|
48
|
+
await func(parsedArgs);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
const blStartJob = (func) => {
|
|
52
|
+
const job = new BlJobWrapper();
|
|
53
|
+
job.start(func).then(async () => {
|
|
54
|
+
try {
|
|
55
|
+
await (0, telemetry_js_1.flush)();
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
console.error('Error flushing telemetry:', error);
|
|
59
|
+
}
|
|
60
|
+
process.exit(0);
|
|
61
|
+
}).catch((error) => {
|
|
62
|
+
console.error('Job execution failed:', error);
|
|
63
|
+
process.exit(1);
|
|
64
|
+
});
|
|
65
|
+
};
|
|
66
|
+
exports.blStartJob = blStartJob;
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BlaxelMcpClientTransport = void 0;
|
|
4
|
+
const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
5
|
+
const logger_js_1 = require("../common/logger.js");
|
|
6
|
+
const node_js_1 = require("../common/node.js");
|
|
7
|
+
const settings_js_1 = require("../common/settings.js");
|
|
8
|
+
// WebSocket will be loaded dynamically via getWebSocket() function
|
|
9
|
+
//const SUBPROTOCOL = "mcp";
|
|
10
|
+
// Helper function to wait
|
|
11
|
+
const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
12
|
+
/**
|
|
13
|
+
* Client transport for WebSocket: this will connect to a server over the WebSocket protocol.
|
|
14
|
+
* Works in both browser and Node.js environments.
|
|
15
|
+
*/
|
|
16
|
+
class BlaxelMcpClientTransport {
|
|
17
|
+
_socket;
|
|
18
|
+
_url;
|
|
19
|
+
_headers;
|
|
20
|
+
_isBrowser;
|
|
21
|
+
_retry_max;
|
|
22
|
+
_retry_delay;
|
|
23
|
+
onclose;
|
|
24
|
+
onerror;
|
|
25
|
+
onmessage;
|
|
26
|
+
constructor(url, headers, options) {
|
|
27
|
+
this._url = new URL(url.replace("http", "ws"));
|
|
28
|
+
this._retry_max = options?.retry?.max ?? 3;
|
|
29
|
+
this._retry_delay = options?.retry?.delay ?? 1000;
|
|
30
|
+
this._headers = headers ?? {};
|
|
31
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
32
|
+
this._isBrowser = typeof globalThis !== "undefined" && (globalThis)?.window !== undefined;
|
|
33
|
+
}
|
|
34
|
+
async start() {
|
|
35
|
+
if (this._socket) {
|
|
36
|
+
throw new Error("Blaxel already started! If using Client class, note that connect() calls start() automatically.");
|
|
37
|
+
}
|
|
38
|
+
let attempts = 0;
|
|
39
|
+
const maxAttempts = Math.max(1, this._retry_max + 1); // Ensure at least 1 attempt
|
|
40
|
+
while (attempts < maxAttempts) {
|
|
41
|
+
try {
|
|
42
|
+
await this._connect();
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
attempts++;
|
|
47
|
+
if (error instanceof Error) {
|
|
48
|
+
logger_js_1.logger.warn(error.stack ?? error.message);
|
|
49
|
+
}
|
|
50
|
+
if (attempts >= maxAttempts) {
|
|
51
|
+
throw error;
|
|
52
|
+
}
|
|
53
|
+
logger_js_1.logger.debug(`WebSocket connection attempt ${attempts} failed, retrying in ${this._retry_delay}ms...`);
|
|
54
|
+
await delay(this._retry_delay);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
async _connect() {
|
|
59
|
+
return new Promise((resolve, reject) => {
|
|
60
|
+
const setupConnection = async () => {
|
|
61
|
+
try {
|
|
62
|
+
if (this._isBrowser) {
|
|
63
|
+
// Use native browser WebSocket
|
|
64
|
+
const url = `${this._url.toString()}?token=${settings_js_1.settings.token}`;
|
|
65
|
+
this._socket = new WebSocket(url);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
// Use Node.js WebSocket - get it via the centralized async function
|
|
69
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
70
|
+
const NodeWebSocket = await (0, node_js_1.getWebSocket)();
|
|
71
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
72
|
+
this._socket = new NodeWebSocket(this._url, {
|
|
73
|
+
//protocols: SUBPROTOCOL,
|
|
74
|
+
headers: this._headers,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
this._socket.onerror = (event) => {
|
|
78
|
+
// Log websocket error with meaningful information instead of raw event
|
|
79
|
+
const errorInfo = {
|
|
80
|
+
type: 'WebSocket Error',
|
|
81
|
+
url: this._url.toString(),
|
|
82
|
+
readyState: this._socket?.readyState,
|
|
83
|
+
browser: this._isBrowser,
|
|
84
|
+
// Extract any available error details from the event
|
|
85
|
+
eventType: event && typeof event === 'object' && 'type' in event
|
|
86
|
+
? String(event.type)
|
|
87
|
+
: 'unknown',
|
|
88
|
+
// Browser events might have different properties than Node.js
|
|
89
|
+
message: this._isBrowser && event && typeof event === 'object' && 'message' in event
|
|
90
|
+
? String(event.message)
|
|
91
|
+
: undefined,
|
|
92
|
+
error: !this._isBrowser && event && typeof event === 'object' && 'error' in event
|
|
93
|
+
? String(event.error)
|
|
94
|
+
: undefined
|
|
95
|
+
};
|
|
96
|
+
logger_js_1.logger.error('WebSocket connection error', errorInfo);
|
|
97
|
+
const error = this._isBrowser
|
|
98
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
99
|
+
? new Error(`WebSocket error: ${event.message}`)
|
|
100
|
+
: "error" in event
|
|
101
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
102
|
+
? event.error
|
|
103
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
104
|
+
: new Error(`WebSocket error: ${event.message}`);
|
|
105
|
+
reject(error);
|
|
106
|
+
this.onerror?.(error);
|
|
107
|
+
};
|
|
108
|
+
this._socket.onopen = () => {
|
|
109
|
+
resolve();
|
|
110
|
+
};
|
|
111
|
+
this._socket.onclose = () => {
|
|
112
|
+
this.onclose?.();
|
|
113
|
+
this._socket = undefined;
|
|
114
|
+
};
|
|
115
|
+
this._socket.onmessage = (event) => {
|
|
116
|
+
let message;
|
|
117
|
+
try {
|
|
118
|
+
let dataString;
|
|
119
|
+
if (this._isBrowser) {
|
|
120
|
+
// Browser WebSocket MessageEvent
|
|
121
|
+
const browserEvent = event;
|
|
122
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
123
|
+
dataString = typeof browserEvent.data === "string"
|
|
124
|
+
? browserEvent.data
|
|
125
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
|
|
126
|
+
: browserEvent.data.toString();
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
// Node.js WebSocket MessageEvent
|
|
130
|
+
const nodeEvent = event;
|
|
131
|
+
if (typeof nodeEvent.data === "string") {
|
|
132
|
+
dataString = nodeEvent.data;
|
|
133
|
+
}
|
|
134
|
+
else if (nodeEvent.data instanceof Buffer) {
|
|
135
|
+
dataString = nodeEvent.data.toString("utf-8");
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
throw new Error("Unsupported data type for event.data");
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
message = types_js_1.JSONRPCMessageSchema.parse(JSON.parse(dataString));
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
logger_js_1.logger.error(`Error parsing message: ${
|
|
145
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
146
|
+
typeof event.data === "object"
|
|
147
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
148
|
+
? JSON.stringify(event.data)
|
|
149
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
150
|
+
: event.data}`);
|
|
151
|
+
this.onerror?.(error);
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
this.onmessage?.(message);
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
if (error instanceof Error && error.message.includes("ws does not work in the browser")) {
|
|
159
|
+
this._isBrowser = true;
|
|
160
|
+
return this._connect().then(resolve).catch(reject);
|
|
161
|
+
}
|
|
162
|
+
reject(error);
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
setupConnection().catch(reject);
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
get isConnected() {
|
|
169
|
+
if (!this._socket)
|
|
170
|
+
return false;
|
|
171
|
+
if (this._isBrowser) {
|
|
172
|
+
return this._socket.readyState === 1; // WebSocket.OPEN = 1
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
return this._socket.readyState === 1; // WebSocket.OPEN = 1
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
async close() {
|
|
179
|
+
this._socket?.close();
|
|
180
|
+
this._socket = undefined;
|
|
181
|
+
this.onclose?.();
|
|
182
|
+
return Promise.resolve();
|
|
183
|
+
}
|
|
184
|
+
async send(message) {
|
|
185
|
+
let attempts = 0;
|
|
186
|
+
const maxAttempts = Math.max(1, this._retry_max + 1); // Ensure at least 1 attempt
|
|
187
|
+
while (attempts < maxAttempts) {
|
|
188
|
+
try {
|
|
189
|
+
if (!this._socket || !this.isConnected) {
|
|
190
|
+
if (!this._socket) {
|
|
191
|
+
// Only try to start if socket doesn't exist
|
|
192
|
+
await this.start();
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
throw new Error("WebSocket is not in OPEN state");
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
await new Promise((resolve, reject) => {
|
|
199
|
+
try {
|
|
200
|
+
const messageStr = JSON.stringify(message);
|
|
201
|
+
if (this._isBrowser) {
|
|
202
|
+
// Browser WebSocket
|
|
203
|
+
this._socket?.send(messageStr);
|
|
204
|
+
resolve();
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
// Node.js WebSocket
|
|
208
|
+
this._socket?.send(messageStr, (error) => {
|
|
209
|
+
if (error) {
|
|
210
|
+
reject(error);
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
resolve();
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
catch (error) {
|
|
219
|
+
reject(error);
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
224
|
+
catch (error) {
|
|
225
|
+
attempts++;
|
|
226
|
+
if (attempts >= maxAttempts) {
|
|
227
|
+
throw error;
|
|
228
|
+
}
|
|
229
|
+
logger_js_1.logger.warn(`WebSocket send attempt ${attempts} failed, retrying in ${this._retry_delay}ms...`);
|
|
230
|
+
await delay(this._retry_delay);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
exports.BlaxelMcpClientTransport = BlaxelMcpClientTransport;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./client.js"), exports);
|
|
18
|
+
__exportStar(require("./server.js"), exports);
|