@mastra/deployer 1.2.1-alpha.0 → 1.3.0-alpha.2
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/CHANGELOG.md +40 -0
- package/dist/build/analyze/bundleExternals.d.ts.map +1 -1
- package/dist/build/analyze.cjs +2 -2
- package/dist/build/analyze.js +1 -1
- package/dist/build/bundler.cjs +3 -3
- package/dist/build/bundler.js +1 -1
- package/dist/build/index.cjs +11 -11
- package/dist/build/index.js +4 -4
- package/dist/build/plugins/tsconfig-paths.d.ts.map +1 -1
- package/dist/bundler/index.cjs +3 -3
- package/dist/bundler/index.js +1 -1
- package/dist/{chunk-5QWVKP4X.js → chunk-3WL6HPU3.js} +3 -3
- package/dist/{chunk-5QWVKP4X.js.map → chunk-3WL6HPU3.js.map} +1 -1
- package/dist/{chunk-CWEG55RE.js → chunk-AMZJCH64.js} +48 -44
- package/dist/chunk-AMZJCH64.js.map +1 -0
- package/dist/{chunk-VA557HZB.js → chunk-BZLFGOSU.js} +6 -6
- package/dist/{chunk-VA557HZB.js.map → chunk-BZLFGOSU.js.map} +1 -1
- package/dist/{chunk-Q6OWS3YN.cjs → chunk-E4SQOERA.cjs} +48 -44
- package/dist/chunk-E4SQOERA.cjs.map +1 -0
- package/dist/{chunk-NL26KCV6.cjs → chunk-IZHNO3GK.cjs} +13 -13
- package/dist/{chunk-NL26KCV6.cjs.map → chunk-IZHNO3GK.cjs.map} +1 -1
- package/dist/{chunk-4CCXXH5X.cjs → chunk-K7J2W7DJ.cjs} +7 -7
- package/dist/{chunk-4CCXXH5X.cjs.map → chunk-K7J2W7DJ.cjs.map} +1 -1
- package/dist/{chunk-HFQIQVVL.js → chunk-KNINPAM6.js} +6 -6
- package/dist/{chunk-HFQIQVVL.js.map → chunk-KNINPAM6.js.map} +1 -1
- package/dist/{chunk-GRQR3MP7.js → chunk-KRRQVSI7.js} +3 -3
- package/dist/{chunk-GRQR3MP7.js.map → chunk-KRRQVSI7.js.map} +1 -1
- package/dist/{chunk-ETMR2WW4.cjs → chunk-P3YQIQSD.cjs} +15 -14
- package/dist/chunk-P3YQIQSD.cjs.map +1 -0
- package/dist/{chunk-T3HNSYJE.cjs → chunk-R2SIOO54.cjs} +11 -11
- package/dist/{chunk-T3HNSYJE.cjs.map → chunk-R2SIOO54.cjs.map} +1 -1
- package/dist/{chunk-JLBXF6EN.js → chunk-T3QYAGU3.js} +4 -3
- package/dist/chunk-T3QYAGU3.js.map +1 -0
- package/dist/{chunk-BTBP6HRB.cjs → chunk-YA6TH3CS.cjs} +14 -14
- package/dist/{chunk-BTBP6HRB.cjs.map → chunk-YA6TH3CS.cjs.map} +1 -1
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/docs/references/docs-deployment-cloud-providers.md +2 -2
- package/dist/docs/references/docs-deployment-overview.md +2 -2
- package/dist/docs/references/reference-deployer.md +2 -2
- package/dist/index.cjs +4 -4
- package/dist/index.js +2 -2
- package/dist/server/index.cjs +73 -41
- package/dist/server/index.cjs.map +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +74 -42
- package/dist/server/index.js.map +1 -1
- package/package.json +8 -9
- package/dist/chunk-CWEG55RE.js.map +0 -1
- package/dist/chunk-ETMR2WW4.cjs.map +0 -1
- package/dist/chunk-JLBXF6EN.js.map +0 -1
- package/dist/chunk-Q6OWS3YN.cjs.map +0 -1
package/dist/server/index.cjs
CHANGED
|
@@ -11,6 +11,7 @@ var stream$1 = require('stream');
|
|
|
11
11
|
var crypto = require('crypto');
|
|
12
12
|
var mime = require('hono/utils/mime');
|
|
13
13
|
var fs = require('fs');
|
|
14
|
+
var process$1 = require('process');
|
|
14
15
|
var html = require('hono/html');
|
|
15
16
|
var tools = require('@mastra/core/tools');
|
|
16
17
|
var error = require('@mastra/server/handlers/error');
|
|
@@ -362,19 +363,9 @@ var buildOutgoingHttpHeaders = (headers) => {
|
|
|
362
363
|
return res;
|
|
363
364
|
};
|
|
364
365
|
var X_ALREADY_SENT = "x-hono-already-sent";
|
|
365
|
-
var webFetch = global.fetch;
|
|
366
366
|
if (typeof global.crypto === "undefined") {
|
|
367
367
|
global.crypto = crypto__default.default;
|
|
368
368
|
}
|
|
369
|
-
global.fetch = (info, init) => {
|
|
370
|
-
init = {
|
|
371
|
-
// Disable compression handling so people can return the result of a fetch
|
|
372
|
-
// directly in the loader without messing with the Content-Encoding header.
|
|
373
|
-
compress: false,
|
|
374
|
-
...init
|
|
375
|
-
};
|
|
376
|
-
return webFetch(info, init);
|
|
377
|
-
};
|
|
378
369
|
var outgoingEnded = /* @__PURE__ */ Symbol("outgoingEnded");
|
|
379
370
|
var handleRequestError = () => new Response(null, {
|
|
380
371
|
status: 400
|
|
@@ -605,7 +596,15 @@ var ENCODINGS = {
|
|
|
605
596
|
gzip: ".gz"
|
|
606
597
|
};
|
|
607
598
|
var ENCODINGS_ORDERED_KEYS = Object.keys(ENCODINGS);
|
|
599
|
+
var pr54206Applied = () => {
|
|
600
|
+
const [major, minor] = process$1.versions.node.split(".").map((component) => parseInt(component));
|
|
601
|
+
return major >= 23 || major === 22 && minor >= 7 || major === 20 && minor >= 18;
|
|
602
|
+
};
|
|
603
|
+
var useReadableToWeb = pr54206Applied();
|
|
608
604
|
var createStreamBody = (stream2) => {
|
|
605
|
+
if (useReadableToWeb) {
|
|
606
|
+
return stream$1.Readable.toWeb(stream2);
|
|
607
|
+
}
|
|
609
608
|
const body = new ReadableStream({
|
|
610
609
|
start(controller) {
|
|
611
610
|
stream2.on("data", (chunk) => {
|
|
@@ -627,7 +626,7 @@ var createStreamBody = (stream2) => {
|
|
|
627
626
|
var getStats = (path) => {
|
|
628
627
|
let stats;
|
|
629
628
|
try {
|
|
630
|
-
stats = fs.
|
|
629
|
+
stats = fs.statSync(path);
|
|
631
630
|
} catch {
|
|
632
631
|
}
|
|
633
632
|
return stats;
|
|
@@ -765,18 +764,14 @@ var RENDER_TYPE_MAP = {
|
|
|
765
764
|
parameterMacro: RENDER_TYPE.RAW
|
|
766
765
|
};
|
|
767
766
|
var renderSwaggerUIOptions = (options) => {
|
|
768
|
-
|
|
767
|
+
return Object.entries(options).map(([k, v]) => {
|
|
769
768
|
const key = k;
|
|
770
|
-
if (!RENDER_TYPE_MAP[key] || v === void 0)
|
|
771
|
-
return "";
|
|
772
|
-
}
|
|
769
|
+
if (!RENDER_TYPE_MAP[key] || v === void 0) return "";
|
|
773
770
|
switch (RENDER_TYPE_MAP[key]) {
|
|
774
771
|
case RENDER_TYPE.STRING:
|
|
775
772
|
return `${key}: '${v}'`;
|
|
776
773
|
case RENDER_TYPE.STRING_ARRAY:
|
|
777
|
-
if (!Array.isArray(v))
|
|
778
|
-
return "";
|
|
779
|
-
}
|
|
774
|
+
if (!Array.isArray(v)) return "";
|
|
780
775
|
return `${key}: [${v.map((ve) => `${ve}`).join(",")}]`;
|
|
781
776
|
case RENDER_TYPE.JSON_STRING:
|
|
782
777
|
return `${key}: ${JSON.stringify(v)}`;
|
|
@@ -786,7 +781,6 @@ var renderSwaggerUIOptions = (options) => {
|
|
|
786
781
|
return "";
|
|
787
782
|
}
|
|
788
783
|
}).filter((item) => item !== "").join(",");
|
|
789
|
-
return optionsStrings;
|
|
790
784
|
};
|
|
791
785
|
var remoteAssets = ({ version }) => {
|
|
792
786
|
const url = `https://cdn.jsdelivr.net/npm/swagger-ui-dist${version !== void 0 ? `@${version}` : ""}`;
|
|
@@ -798,15 +792,13 @@ var remoteAssets = ({ version }) => {
|
|
|
798
792
|
var SwaggerUI = (options) => {
|
|
799
793
|
const asset = remoteAssets({ version: options?.version });
|
|
800
794
|
delete options.version;
|
|
801
|
-
if (options.manuallySwaggerUIHtml)
|
|
802
|
-
return options.manuallySwaggerUIHtml(asset);
|
|
803
|
-
}
|
|
795
|
+
if (options.manuallySwaggerUIHtml) return options.manuallySwaggerUIHtml(asset);
|
|
804
796
|
const optionsStrings = renderSwaggerUIOptions(options);
|
|
805
797
|
return `
|
|
806
798
|
<div>
|
|
807
799
|
<div id="swagger-ui"></div>
|
|
808
800
|
${asset.css.map((url) => html.html`<link rel="stylesheet" href="${url}" />`)}
|
|
809
|
-
${asset.js.map((url) => html.html`<script src="${url}" crossorigin="anonymous"
|
|
801
|
+
${asset.js.map((url) => html.html`<script src="${url}" crossorigin="anonymous"><\/script>`)}
|
|
810
802
|
<script>
|
|
811
803
|
window.onload = () => {
|
|
812
804
|
window.ui = SwaggerUIBundle({
|
|
@@ -819,9 +811,8 @@ var SwaggerUI = (options) => {
|
|
|
819
811
|
};
|
|
820
812
|
var middleware = (options) => async (c) => {
|
|
821
813
|
const title = options?.title ?? "SwaggerUI";
|
|
822
|
-
return c.html(
|
|
823
|
-
|
|
824
|
-
`
|
|
814
|
+
return c.html(`
|
|
815
|
+
<!doctype html>
|
|
825
816
|
<html lang="en">
|
|
826
817
|
<head>
|
|
827
818
|
<meta charset="utf-8" />
|
|
@@ -833,8 +824,7 @@ var middleware = (options) => async (c) => {
|
|
|
833
824
|
${SwaggerUI(options)}
|
|
834
825
|
</body>
|
|
835
826
|
</html>
|
|
836
|
-
`
|
|
837
|
-
);
|
|
827
|
+
`);
|
|
838
828
|
};
|
|
839
829
|
var classRegExp = /^([A-Z][a-z0-9]*)+$/;
|
|
840
830
|
var kTypes = [
|
|
@@ -3133,7 +3123,9 @@ var authenticationMiddleware = async (c, next) => {
|
|
|
3133
3123
|
c.get("requestContext").set("user", user);
|
|
3134
3124
|
return next();
|
|
3135
3125
|
} catch (err) {
|
|
3136
|
-
|
|
3126
|
+
mastra.getLogger()?.error("Authentication error", {
|
|
3127
|
+
error: err instanceof Error ? { message: err.message, stack: err.stack } : err
|
|
3128
|
+
});
|
|
3137
3129
|
return c.json({ error: "Invalid or expired token" }, 401);
|
|
3138
3130
|
}
|
|
3139
3131
|
};
|
|
@@ -3165,7 +3157,9 @@ var authorizationMiddleware = async (c, next) => {
|
|
|
3165
3157
|
}
|
|
3166
3158
|
return c.json({ error: "Access denied" }, 403);
|
|
3167
3159
|
} catch (err) {
|
|
3168
|
-
|
|
3160
|
+
mastra.getLogger()?.error("Authorization error in authorizeUser", {
|
|
3161
|
+
error: err instanceof Error ? { message: err.message, stack: err.stack } : err
|
|
3162
|
+
});
|
|
3169
3163
|
return c.json({ error: "Authorization error" }, 500);
|
|
3170
3164
|
}
|
|
3171
3165
|
}
|
|
@@ -3177,7 +3171,11 @@ var authorizationMiddleware = async (c, next) => {
|
|
|
3177
3171
|
}
|
|
3178
3172
|
return c.json({ error: "Access denied" }, 403);
|
|
3179
3173
|
} catch (err) {
|
|
3180
|
-
|
|
3174
|
+
mastra.getLogger()?.error("Authorization error in authorize", {
|
|
3175
|
+
error: err instanceof Error ? { message: err.message, stack: err.stack } : err,
|
|
3176
|
+
path,
|
|
3177
|
+
method
|
|
3178
|
+
});
|
|
3181
3179
|
return c.json({ error: "Authorization error" }, 500);
|
|
3182
3180
|
}
|
|
3183
3181
|
}
|
|
@@ -3199,14 +3197,24 @@ var authorizationMiddleware = async (c, next) => {
|
|
|
3199
3197
|
var MastraServer = class extends serverAdapter.MastraServer {
|
|
3200
3198
|
createContextMiddleware() {
|
|
3201
3199
|
return async (c, next) => {
|
|
3200
|
+
const originalJson = c.req.json.bind(c.req);
|
|
3201
|
+
let jsonPromise;
|
|
3202
|
+
c.req.json = () => {
|
|
3203
|
+
if (!jsonPromise) {
|
|
3204
|
+
jsonPromise = originalJson().then((body) => {
|
|
3205
|
+
c.set("cachedBody", body);
|
|
3206
|
+
return body;
|
|
3207
|
+
});
|
|
3208
|
+
}
|
|
3209
|
+
return jsonPromise;
|
|
3210
|
+
};
|
|
3202
3211
|
let bodyRequestContext;
|
|
3203
3212
|
let paramsRequestContext;
|
|
3204
3213
|
if (c.req.method === "POST" || c.req.method === "PUT") {
|
|
3205
3214
|
const contentType = c.req.header("content-type");
|
|
3206
3215
|
if (contentType?.includes("application/json")) {
|
|
3207
3216
|
try {
|
|
3208
|
-
const
|
|
3209
|
-
const body = await clonedReq.json();
|
|
3217
|
+
const body = await c.req.raw.clone().json();
|
|
3210
3218
|
if (body.requestContext) {
|
|
3211
3219
|
bodyRequestContext = body.requestContext;
|
|
3212
3220
|
}
|
|
@@ -3271,13 +3279,17 @@ var MastraServer = class extends serverAdapter.MastraServer {
|
|
|
3271
3279
|
}
|
|
3272
3280
|
await stream2.write("data: [DONE]\n\n");
|
|
3273
3281
|
} catch (error) {
|
|
3274
|
-
|
|
3282
|
+
this.mastra.getLogger()?.error("Error in stream processing", {
|
|
3283
|
+
error: error instanceof Error ? { message: error.message, stack: error.stack } : error
|
|
3284
|
+
});
|
|
3275
3285
|
} finally {
|
|
3276
3286
|
await stream2.close();
|
|
3277
3287
|
}
|
|
3278
3288
|
},
|
|
3279
3289
|
async (err) => {
|
|
3280
|
-
|
|
3290
|
+
this.mastra.getLogger()?.error("Stream error callback", {
|
|
3291
|
+
error: err instanceof Error ? { message: err.message, stack: err.stack } : err
|
|
3292
|
+
});
|
|
3281
3293
|
}
|
|
3282
3294
|
);
|
|
3283
3295
|
}
|
|
@@ -3293,7 +3305,9 @@ var MastraServer = class extends serverAdapter.MastraServer {
|
|
|
3293
3305
|
const formData = await request.formData();
|
|
3294
3306
|
body = await this.parseFormData(formData);
|
|
3295
3307
|
} catch (error) {
|
|
3296
|
-
|
|
3308
|
+
this.mastra.getLogger()?.error("Failed to parse multipart form data", {
|
|
3309
|
+
error: error instanceof Error ? { message: error.message, stack: error.stack } : error
|
|
3310
|
+
});
|
|
3297
3311
|
if (error instanceof Error && error.message.toLowerCase().includes("size")) {
|
|
3298
3312
|
throw error;
|
|
3299
3313
|
}
|
|
@@ -3308,7 +3322,9 @@ var MastraServer = class extends serverAdapter.MastraServer {
|
|
|
3308
3322
|
try {
|
|
3309
3323
|
body = JSON.parse(bodyText);
|
|
3310
3324
|
} catch (error) {
|
|
3311
|
-
|
|
3325
|
+
this.mastra.getLogger()?.error("Failed to parse JSON body", {
|
|
3326
|
+
error: error instanceof Error ? { message: error.message, stack: error.stack } : error
|
|
3327
|
+
});
|
|
3312
3328
|
bodyParseError = {
|
|
3313
3329
|
message: error instanceof Error ? error.message : "Invalid JSON in request body"
|
|
3314
3330
|
};
|
|
@@ -3432,7 +3448,9 @@ var MastraServer = class extends serverAdapter.MastraServer {
|
|
|
3432
3448
|
try {
|
|
3433
3449
|
params.queryParams = await this.parseQueryParams(route, params.queryParams);
|
|
3434
3450
|
} catch (error$1) {
|
|
3435
|
-
|
|
3451
|
+
this.mastra.getLogger()?.error("Error parsing query params", {
|
|
3452
|
+
error: error$1 instanceof Error ? { message: error$1.message, stack: error$1.stack } : error$1
|
|
3453
|
+
});
|
|
3436
3454
|
if (error$1 instanceof ZodError) {
|
|
3437
3455
|
return c.json(error.formatZodError(error$1, "query parameters"), 400);
|
|
3438
3456
|
}
|
|
@@ -3449,7 +3467,9 @@ var MastraServer = class extends serverAdapter.MastraServer {
|
|
|
3449
3467
|
try {
|
|
3450
3468
|
params.body = await this.parseBody(route, params.body);
|
|
3451
3469
|
} catch (error$1) {
|
|
3452
|
-
|
|
3470
|
+
this.mastra.getLogger()?.error("Error parsing body", {
|
|
3471
|
+
error: error$1 instanceof Error ? { message: error$1.message, stack: error$1.stack } : error$1
|
|
3472
|
+
});
|
|
3453
3473
|
if (error$1 instanceof ZodError) {
|
|
3454
3474
|
return c.json(error.formatZodError(error$1, "request body"), 400);
|
|
3455
3475
|
}
|
|
@@ -3477,7 +3497,11 @@ var MastraServer = class extends serverAdapter.MastraServer {
|
|
|
3477
3497
|
const result = await route.handler(handlerParams);
|
|
3478
3498
|
return this.sendResponse(route, c, result, prefix);
|
|
3479
3499
|
} catch (error) {
|
|
3480
|
-
|
|
3500
|
+
this.mastra.getLogger()?.error("Error calling handler", {
|
|
3501
|
+
error: error instanceof Error ? { message: error.message, stack: error.stack } : error,
|
|
3502
|
+
path: route.path,
|
|
3503
|
+
method: route.method
|
|
3504
|
+
});
|
|
3481
3505
|
if (error && typeof error === "object") {
|
|
3482
3506
|
if ("status" in error) {
|
|
3483
3507
|
const status = error.status;
|
|
@@ -3506,7 +3530,7 @@ var MastraServer = class extends serverAdapter.MastraServer {
|
|
|
3506
3530
|
}
|
|
3507
3531
|
};
|
|
3508
3532
|
|
|
3509
|
-
// ../../node_modules/.pnpm/hono-openapi@1.1.1_@hono+standard-validator@0.2.
|
|
3533
|
+
// ../../node_modules/.pnpm/hono-openapi@1.1.1_@hono+standard-validator@0.2.2_@standard-schema+spec@1.1.0_hono@4.11_3e74ff9abd3c579ae061185f8bb0e452/node_modules/hono-openapi/dist/index.js
|
|
3510
3534
|
var uniqueSymbol = /* @__PURE__ */ Symbol("openapi");
|
|
3511
3535
|
function describeRoute(spec) {
|
|
3512
3536
|
const middleware2 = async (_c, next) => {
|
|
@@ -4071,6 +4095,10 @@ async function createHonoServer(mastra, options = {
|
|
|
4071
4095
|
const protocol = key && cert ? "https" : "http";
|
|
4072
4096
|
const cloudApiEndpoint = process.env.MASTRA_CLOUD_API_ENDPOINT || "";
|
|
4073
4097
|
const experimentalFeatures = process.env.EXPERIMENTAL_FEATURES === "true" ? "true" : "false";
|
|
4098
|
+
const requestContextPresets = process.env.MASTRA_REQUEST_CONTEXT_PRESETS || "";
|
|
4099
|
+
const escapeForHtml = (json) => {
|
|
4100
|
+
return json.replace(/\\/g, "\\\\").replace(/'/g, "\\'").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/</g, "\\u003c").replace(/>/g, "\\u003e").replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029");
|
|
4101
|
+
};
|
|
4074
4102
|
indexHtml = indexHtml.replace(`'%%MASTRA_SERVER_HOST%%'`, `'${host}'`);
|
|
4075
4103
|
indexHtml = indexHtml.replace(`'%%MASTRA_SERVER_PORT%%'`, `'${port}'`);
|
|
4076
4104
|
indexHtml = indexHtml.replace(`'%%MASTRA_API_PREFIX%%'`, `'${serverOptions?.apiPrefix ?? "/api"}'`);
|
|
@@ -4078,6 +4106,10 @@ async function createHonoServer(mastra, options = {
|
|
|
4078
4106
|
indexHtml = indexHtml.replace(`'%%MASTRA_SERVER_PROTOCOL%%'`, `'${protocol}'`);
|
|
4079
4107
|
indexHtml = indexHtml.replace(`'%%MASTRA_CLOUD_API_ENDPOINT%%'`, `'${cloudApiEndpoint}'`);
|
|
4080
4108
|
indexHtml = indexHtml.replace(`'%%MASTRA_EXPERIMENTAL_FEATURES%%'`, `'${experimentalFeatures}'`);
|
|
4109
|
+
indexHtml = indexHtml.replace(
|
|
4110
|
+
`'%%MASTRA_REQUEST_CONTEXT_PRESETS%%'`,
|
|
4111
|
+
`'${escapeForHtml(requestContextPresets)}'`
|
|
4112
|
+
);
|
|
4081
4113
|
indexHtml = indexHtml.replaceAll("%%MASTRA_STUDIO_BASE_PATH%%", studioBasePath);
|
|
4082
4114
|
return c.newResponse(indexHtml, 200, { "Content-Type": "text/html" });
|
|
4083
4115
|
}
|