@mastra/deployer 1.2.0 → 1.3.0-alpha.1
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 +51 -0
- package/dist/build/analyze/analyzeEntry.d.ts.map +1 -1
- package/dist/build/analyze/bundleExternals.d.ts.map +1 -1
- package/dist/build/analyze.cjs +2 -2
- package/dist/build/analyze.d.ts.map +1 -1
- 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/build/watcher.d.ts +3 -1
- package/dist/build/watcher.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-DIQKRYF4.js → chunk-BZLFGOSU.js} +17 -9
- package/dist/chunk-BZLFGOSU.js.map +1 -0
- package/dist/{chunk-Q6OWS3YN.cjs → chunk-E4SQOERA.cjs} +48 -44
- package/dist/chunk-E4SQOERA.cjs.map +1 -0
- package/dist/{chunk-MOCLE4XM.cjs → chunk-IZHNO3GK.cjs} +24 -16
- package/dist/chunk-IZHNO3GK.cjs.map +1 -0
- 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-O45P6AJF.js → chunk-KNINPAM6.js} +6 -6
- package/dist/{chunk-O45P6AJF.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-5KBGEH2B.cjs → chunk-P3YQIQSD.cjs} +43 -23
- 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-UA7HQFWN.js → chunk-T3QYAGU3.js} +32 -12
- package/dist/chunk-T3QYAGU3.js.map +1 -0
- package/dist/{chunk-MYKZPGDB.cjs → chunk-YA6TH3CS.cjs} +14 -14
- package/dist/{chunk-MYKZPGDB.cjs.map → chunk-YA6TH3CS.cjs.map} +1 -1
- package/dist/docs/SKILL.md +19 -24
- package/dist/docs/{SOURCE_MAP.json → assets/SOURCE_MAP.json} +1 -1
- package/dist/docs/{deployment/04-cloud-providers.md → references/docs-deployment-cloud-providers.md} +2 -4
- package/dist/docs/{deployment/02-mastra-server.md → references/docs-deployment-mastra-server.md} +16 -23
- package/dist/docs/{deployment/03-monorepo.md → references/docs-deployment-monorepo.md} +12 -12
- package/dist/docs/{deployment/01-overview.md → references/docs-deployment-overview.md} +5 -7
- package/dist/docs/{deployment/05-web-framework.md → references/docs-deployment-web-framework.md} +4 -7
- package/dist/docs/{deployment/06-workflow-runners.md → references/docs-deployment-workflow-runners.md} +1 -3
- package/dist/docs/{deployer/01-reference.md → references/reference-deployer.md} +19 -12
- 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 +9 -10
- package/dist/chunk-5KBGEH2B.cjs.map +0 -1
- package/dist/chunk-CWEG55RE.js.map +0 -1
- package/dist/chunk-DIQKRYF4.js.map +0 -1
- package/dist/chunk-MOCLE4XM.cjs.map +0 -1
- package/dist/chunk-Q6OWS3YN.cjs.map +0 -1
- package/dist/chunk-UA7HQFWN.js.map +0 -1
- package/dist/docs/README.md +0 -32
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGlD,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGhE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAW5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAoBnD,KAAK,QAAQ,GAAG,YAAY,CAAC;AAE7B,KAAK,SAAS,GAAG,aAAa,GAAG;IAC/B,OAAO,EAAE,GAAG,CAAC;QAAE,UAAU,EAAE,+BAA+B,CAAA;KAAE,CAAC,CAAC;CAC/D,CAAC;AAEF,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,wCAmB/D;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,mBAER;cAegC,QAAQ;eAAa,SAAS;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGlD,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGhE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAW5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAoBnD,KAAK,QAAQ,GAAG,YAAY,CAAC;AAE7B,KAAK,SAAS,GAAG,aAAa,GAAG;IAC/B,OAAO,EAAE,GAAG,CAAC;QAAE,UAAU,EAAE,+BAA+B,CAAA;KAAE,CAAC,CAAC;CAC/D,CAAC;AAEF,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,wCAmB/D;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,mBAER;cAegC,QAAQ;eAAa,SAAS;2CA8VhE;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAmC,mDAqDlG"}
|
package/dist/server/index.js
CHANGED
|
@@ -8,7 +8,8 @@ import { Http2ServerRequest } from 'http2';
|
|
|
8
8
|
import { Writable, Readable } from 'stream';
|
|
9
9
|
import crypto from 'crypto';
|
|
10
10
|
import { getMimeType } from 'hono/utils/mime';
|
|
11
|
-
import { existsSync, createReadStream,
|
|
11
|
+
import { existsSync, createReadStream, statSync } from 'fs';
|
|
12
|
+
import { versions } from 'process';
|
|
12
13
|
import { html } from 'hono/html';
|
|
13
14
|
import { Tool } from '@mastra/core/tools';
|
|
14
15
|
import { formatZodError } from '@mastra/server/handlers/error';
|
|
@@ -335,19 +336,9 @@ var buildOutgoingHttpHeaders = (headers) => {
|
|
|
335
336
|
return res;
|
|
336
337
|
};
|
|
337
338
|
var X_ALREADY_SENT = "x-hono-already-sent";
|
|
338
|
-
var webFetch = global.fetch;
|
|
339
339
|
if (typeof global.crypto === "undefined") {
|
|
340
340
|
global.crypto = crypto;
|
|
341
341
|
}
|
|
342
|
-
global.fetch = (info, init) => {
|
|
343
|
-
init = {
|
|
344
|
-
// Disable compression handling so people can return the result of a fetch
|
|
345
|
-
// directly in the loader without messing with the Content-Encoding header.
|
|
346
|
-
compress: false,
|
|
347
|
-
...init
|
|
348
|
-
};
|
|
349
|
-
return webFetch(info, init);
|
|
350
|
-
};
|
|
351
342
|
var outgoingEnded = /* @__PURE__ */ Symbol("outgoingEnded");
|
|
352
343
|
var handleRequestError = () => new Response(null, {
|
|
353
344
|
status: 400
|
|
@@ -578,7 +569,15 @@ var ENCODINGS = {
|
|
|
578
569
|
gzip: ".gz"
|
|
579
570
|
};
|
|
580
571
|
var ENCODINGS_ORDERED_KEYS = Object.keys(ENCODINGS);
|
|
572
|
+
var pr54206Applied = () => {
|
|
573
|
+
const [major, minor] = versions.node.split(".").map((component) => parseInt(component));
|
|
574
|
+
return major >= 23 || major === 22 && minor >= 7 || major === 20 && minor >= 18;
|
|
575
|
+
};
|
|
576
|
+
var useReadableToWeb = pr54206Applied();
|
|
581
577
|
var createStreamBody = (stream2) => {
|
|
578
|
+
if (useReadableToWeb) {
|
|
579
|
+
return Readable.toWeb(stream2);
|
|
580
|
+
}
|
|
582
581
|
const body = new ReadableStream({
|
|
583
582
|
start(controller) {
|
|
584
583
|
stream2.on("data", (chunk) => {
|
|
@@ -600,7 +599,7 @@ var createStreamBody = (stream2) => {
|
|
|
600
599
|
var getStats = (path) => {
|
|
601
600
|
let stats;
|
|
602
601
|
try {
|
|
603
|
-
stats =
|
|
602
|
+
stats = statSync(path);
|
|
604
603
|
} catch {
|
|
605
604
|
}
|
|
606
605
|
return stats;
|
|
@@ -738,18 +737,14 @@ var RENDER_TYPE_MAP = {
|
|
|
738
737
|
parameterMacro: RENDER_TYPE.RAW
|
|
739
738
|
};
|
|
740
739
|
var renderSwaggerUIOptions = (options) => {
|
|
741
|
-
|
|
740
|
+
return Object.entries(options).map(([k, v]) => {
|
|
742
741
|
const key = k;
|
|
743
|
-
if (!RENDER_TYPE_MAP[key] || v === void 0)
|
|
744
|
-
return "";
|
|
745
|
-
}
|
|
742
|
+
if (!RENDER_TYPE_MAP[key] || v === void 0) return "";
|
|
746
743
|
switch (RENDER_TYPE_MAP[key]) {
|
|
747
744
|
case RENDER_TYPE.STRING:
|
|
748
745
|
return `${key}: '${v}'`;
|
|
749
746
|
case RENDER_TYPE.STRING_ARRAY:
|
|
750
|
-
if (!Array.isArray(v))
|
|
751
|
-
return "";
|
|
752
|
-
}
|
|
747
|
+
if (!Array.isArray(v)) return "";
|
|
753
748
|
return `${key}: [${v.map((ve) => `${ve}`).join(",")}]`;
|
|
754
749
|
case RENDER_TYPE.JSON_STRING:
|
|
755
750
|
return `${key}: ${JSON.stringify(v)}`;
|
|
@@ -759,7 +754,6 @@ var renderSwaggerUIOptions = (options) => {
|
|
|
759
754
|
return "";
|
|
760
755
|
}
|
|
761
756
|
}).filter((item) => item !== "").join(",");
|
|
762
|
-
return optionsStrings;
|
|
763
757
|
};
|
|
764
758
|
var remoteAssets = ({ version }) => {
|
|
765
759
|
const url = `https://cdn.jsdelivr.net/npm/swagger-ui-dist${version !== void 0 ? `@${version}` : ""}`;
|
|
@@ -771,15 +765,13 @@ var remoteAssets = ({ version }) => {
|
|
|
771
765
|
var SwaggerUI = (options) => {
|
|
772
766
|
const asset = remoteAssets({ version: options?.version });
|
|
773
767
|
delete options.version;
|
|
774
|
-
if (options.manuallySwaggerUIHtml)
|
|
775
|
-
return options.manuallySwaggerUIHtml(asset);
|
|
776
|
-
}
|
|
768
|
+
if (options.manuallySwaggerUIHtml) return options.manuallySwaggerUIHtml(asset);
|
|
777
769
|
const optionsStrings = renderSwaggerUIOptions(options);
|
|
778
770
|
return `
|
|
779
771
|
<div>
|
|
780
772
|
<div id="swagger-ui"></div>
|
|
781
773
|
${asset.css.map((url) => html`<link rel="stylesheet" href="${url}" />`)}
|
|
782
|
-
${asset.js.map((url) => html`<script src="${url}" crossorigin="anonymous"
|
|
774
|
+
${asset.js.map((url) => html`<script src="${url}" crossorigin="anonymous"><\/script>`)}
|
|
783
775
|
<script>
|
|
784
776
|
window.onload = () => {
|
|
785
777
|
window.ui = SwaggerUIBundle({
|
|
@@ -792,9 +784,8 @@ var SwaggerUI = (options) => {
|
|
|
792
784
|
};
|
|
793
785
|
var middleware = (options) => async (c) => {
|
|
794
786
|
const title = options?.title ?? "SwaggerUI";
|
|
795
|
-
return c.html(
|
|
796
|
-
|
|
797
|
-
`
|
|
787
|
+
return c.html(`
|
|
788
|
+
<!doctype html>
|
|
798
789
|
<html lang="en">
|
|
799
790
|
<head>
|
|
800
791
|
<meta charset="utf-8" />
|
|
@@ -806,8 +797,7 @@ var middleware = (options) => async (c) => {
|
|
|
806
797
|
${SwaggerUI(options)}
|
|
807
798
|
</body>
|
|
808
799
|
</html>
|
|
809
|
-
`
|
|
810
|
-
);
|
|
800
|
+
`);
|
|
811
801
|
};
|
|
812
802
|
var classRegExp = /^([A-Z][a-z0-9]*)+$/;
|
|
813
803
|
var kTypes = [
|
|
@@ -3106,7 +3096,9 @@ var authenticationMiddleware = async (c, next) => {
|
|
|
3106
3096
|
c.get("requestContext").set("user", user);
|
|
3107
3097
|
return next();
|
|
3108
3098
|
} catch (err) {
|
|
3109
|
-
|
|
3099
|
+
mastra.getLogger()?.error("Authentication error", {
|
|
3100
|
+
error: err instanceof Error ? { message: err.message, stack: err.stack } : err
|
|
3101
|
+
});
|
|
3110
3102
|
return c.json({ error: "Invalid or expired token" }, 401);
|
|
3111
3103
|
}
|
|
3112
3104
|
};
|
|
@@ -3138,7 +3130,9 @@ var authorizationMiddleware = async (c, next) => {
|
|
|
3138
3130
|
}
|
|
3139
3131
|
return c.json({ error: "Access denied" }, 403);
|
|
3140
3132
|
} catch (err) {
|
|
3141
|
-
|
|
3133
|
+
mastra.getLogger()?.error("Authorization error in authorizeUser", {
|
|
3134
|
+
error: err instanceof Error ? { message: err.message, stack: err.stack } : err
|
|
3135
|
+
});
|
|
3142
3136
|
return c.json({ error: "Authorization error" }, 500);
|
|
3143
3137
|
}
|
|
3144
3138
|
}
|
|
@@ -3150,7 +3144,11 @@ var authorizationMiddleware = async (c, next) => {
|
|
|
3150
3144
|
}
|
|
3151
3145
|
return c.json({ error: "Access denied" }, 403);
|
|
3152
3146
|
} catch (err) {
|
|
3153
|
-
|
|
3147
|
+
mastra.getLogger()?.error("Authorization error in authorize", {
|
|
3148
|
+
error: err instanceof Error ? { message: err.message, stack: err.stack } : err,
|
|
3149
|
+
path,
|
|
3150
|
+
method
|
|
3151
|
+
});
|
|
3154
3152
|
return c.json({ error: "Authorization error" }, 500);
|
|
3155
3153
|
}
|
|
3156
3154
|
}
|
|
@@ -3172,14 +3170,24 @@ var authorizationMiddleware = async (c, next) => {
|
|
|
3172
3170
|
var MastraServer = class extends MastraServer$1 {
|
|
3173
3171
|
createContextMiddleware() {
|
|
3174
3172
|
return async (c, next) => {
|
|
3173
|
+
const originalJson = c.req.json.bind(c.req);
|
|
3174
|
+
let jsonPromise;
|
|
3175
|
+
c.req.json = () => {
|
|
3176
|
+
if (!jsonPromise) {
|
|
3177
|
+
jsonPromise = originalJson().then((body) => {
|
|
3178
|
+
c.set("cachedBody", body);
|
|
3179
|
+
return body;
|
|
3180
|
+
});
|
|
3181
|
+
}
|
|
3182
|
+
return jsonPromise;
|
|
3183
|
+
};
|
|
3175
3184
|
let bodyRequestContext;
|
|
3176
3185
|
let paramsRequestContext;
|
|
3177
3186
|
if (c.req.method === "POST" || c.req.method === "PUT") {
|
|
3178
3187
|
const contentType = c.req.header("content-type");
|
|
3179
3188
|
if (contentType?.includes("application/json")) {
|
|
3180
3189
|
try {
|
|
3181
|
-
const
|
|
3182
|
-
const body = await clonedReq.json();
|
|
3190
|
+
const body = await c.req.raw.clone().json();
|
|
3183
3191
|
if (body.requestContext) {
|
|
3184
3192
|
bodyRequestContext = body.requestContext;
|
|
3185
3193
|
}
|
|
@@ -3244,13 +3252,17 @@ var MastraServer = class extends MastraServer$1 {
|
|
|
3244
3252
|
}
|
|
3245
3253
|
await stream2.write("data: [DONE]\n\n");
|
|
3246
3254
|
} catch (error) {
|
|
3247
|
-
|
|
3255
|
+
this.mastra.getLogger()?.error("Error in stream processing", {
|
|
3256
|
+
error: error instanceof Error ? { message: error.message, stack: error.stack } : error
|
|
3257
|
+
});
|
|
3248
3258
|
} finally {
|
|
3249
3259
|
await stream2.close();
|
|
3250
3260
|
}
|
|
3251
3261
|
},
|
|
3252
3262
|
async (err) => {
|
|
3253
|
-
|
|
3263
|
+
this.mastra.getLogger()?.error("Stream error callback", {
|
|
3264
|
+
error: err instanceof Error ? { message: err.message, stack: err.stack } : err
|
|
3265
|
+
});
|
|
3254
3266
|
}
|
|
3255
3267
|
);
|
|
3256
3268
|
}
|
|
@@ -3266,7 +3278,9 @@ var MastraServer = class extends MastraServer$1 {
|
|
|
3266
3278
|
const formData = await request.formData();
|
|
3267
3279
|
body = await this.parseFormData(formData);
|
|
3268
3280
|
} catch (error) {
|
|
3269
|
-
|
|
3281
|
+
this.mastra.getLogger()?.error("Failed to parse multipart form data", {
|
|
3282
|
+
error: error instanceof Error ? { message: error.message, stack: error.stack } : error
|
|
3283
|
+
});
|
|
3270
3284
|
if (error instanceof Error && error.message.toLowerCase().includes("size")) {
|
|
3271
3285
|
throw error;
|
|
3272
3286
|
}
|
|
@@ -3281,7 +3295,9 @@ var MastraServer = class extends MastraServer$1 {
|
|
|
3281
3295
|
try {
|
|
3282
3296
|
body = JSON.parse(bodyText);
|
|
3283
3297
|
} catch (error) {
|
|
3284
|
-
|
|
3298
|
+
this.mastra.getLogger()?.error("Failed to parse JSON body", {
|
|
3299
|
+
error: error instanceof Error ? { message: error.message, stack: error.stack } : error
|
|
3300
|
+
});
|
|
3285
3301
|
bodyParseError = {
|
|
3286
3302
|
message: error instanceof Error ? error.message : "Invalid JSON in request body"
|
|
3287
3303
|
};
|
|
@@ -3405,7 +3421,9 @@ var MastraServer = class extends MastraServer$1 {
|
|
|
3405
3421
|
try {
|
|
3406
3422
|
params.queryParams = await this.parseQueryParams(route, params.queryParams);
|
|
3407
3423
|
} catch (error) {
|
|
3408
|
-
|
|
3424
|
+
this.mastra.getLogger()?.error("Error parsing query params", {
|
|
3425
|
+
error: error instanceof Error ? { message: error.message, stack: error.stack } : error
|
|
3426
|
+
});
|
|
3409
3427
|
if (error instanceof ZodError) {
|
|
3410
3428
|
return c.json(formatZodError(error, "query parameters"), 400);
|
|
3411
3429
|
}
|
|
@@ -3422,7 +3440,9 @@ var MastraServer = class extends MastraServer$1 {
|
|
|
3422
3440
|
try {
|
|
3423
3441
|
params.body = await this.parseBody(route, params.body);
|
|
3424
3442
|
} catch (error) {
|
|
3425
|
-
|
|
3443
|
+
this.mastra.getLogger()?.error("Error parsing body", {
|
|
3444
|
+
error: error instanceof Error ? { message: error.message, stack: error.stack } : error
|
|
3445
|
+
});
|
|
3426
3446
|
if (error instanceof ZodError) {
|
|
3427
3447
|
return c.json(formatZodError(error, "request body"), 400);
|
|
3428
3448
|
}
|
|
@@ -3450,7 +3470,11 @@ var MastraServer = class extends MastraServer$1 {
|
|
|
3450
3470
|
const result = await route.handler(handlerParams);
|
|
3451
3471
|
return this.sendResponse(route, c, result, prefix);
|
|
3452
3472
|
} catch (error) {
|
|
3453
|
-
|
|
3473
|
+
this.mastra.getLogger()?.error("Error calling handler", {
|
|
3474
|
+
error: error instanceof Error ? { message: error.message, stack: error.stack } : error,
|
|
3475
|
+
path: route.path,
|
|
3476
|
+
method: route.method
|
|
3477
|
+
});
|
|
3454
3478
|
if (error && typeof error === "object") {
|
|
3455
3479
|
if ("status" in error) {
|
|
3456
3480
|
const status = error.status;
|
|
@@ -3479,7 +3503,7 @@ var MastraServer = class extends MastraServer$1 {
|
|
|
3479
3503
|
}
|
|
3480
3504
|
};
|
|
3481
3505
|
|
|
3482
|
-
// ../../node_modules/.pnpm/hono-openapi@1.1.1_@hono+standard-validator@0.2.
|
|
3506
|
+
// ../../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
|
|
3483
3507
|
var uniqueSymbol = /* @__PURE__ */ Symbol("openapi");
|
|
3484
3508
|
function describeRoute(spec) {
|
|
3485
3509
|
const middleware2 = async (_c, next) => {
|
|
@@ -4044,6 +4068,10 @@ async function createHonoServer(mastra, options = {
|
|
|
4044
4068
|
const protocol = key && cert ? "https" : "http";
|
|
4045
4069
|
const cloudApiEndpoint = process.env.MASTRA_CLOUD_API_ENDPOINT || "";
|
|
4046
4070
|
const experimentalFeatures = process.env.EXPERIMENTAL_FEATURES === "true" ? "true" : "false";
|
|
4071
|
+
const requestContextPresets = process.env.MASTRA_REQUEST_CONTEXT_PRESETS || "";
|
|
4072
|
+
const escapeForHtml = (json) => {
|
|
4073
|
+
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");
|
|
4074
|
+
};
|
|
4047
4075
|
indexHtml = indexHtml.replace(`'%%MASTRA_SERVER_HOST%%'`, `'${host}'`);
|
|
4048
4076
|
indexHtml = indexHtml.replace(`'%%MASTRA_SERVER_PORT%%'`, `'${port}'`);
|
|
4049
4077
|
indexHtml = indexHtml.replace(`'%%MASTRA_API_PREFIX%%'`, `'${serverOptions?.apiPrefix ?? "/api"}'`);
|
|
@@ -4051,6 +4079,10 @@ async function createHonoServer(mastra, options = {
|
|
|
4051
4079
|
indexHtml = indexHtml.replace(`'%%MASTRA_SERVER_PROTOCOL%%'`, `'${protocol}'`);
|
|
4052
4080
|
indexHtml = indexHtml.replace(`'%%MASTRA_CLOUD_API_ENDPOINT%%'`, `'${cloudApiEndpoint}'`);
|
|
4053
4081
|
indexHtml = indexHtml.replace(`'%%MASTRA_EXPERIMENTAL_FEATURES%%'`, `'${experimentalFeatures}'`);
|
|
4082
|
+
indexHtml = indexHtml.replace(
|
|
4083
|
+
`'%%MASTRA_REQUEST_CONTEXT_PRESETS%%'`,
|
|
4084
|
+
`'${escapeForHtml(requestContextPresets)}'`
|
|
4085
|
+
);
|
|
4054
4086
|
indexHtml = indexHtml.replaceAll("%%MASTRA_STUDIO_BASE_PATH%%", studioBasePath);
|
|
4055
4087
|
return c.newResponse(indexHtml, 200, { "Content-Type": "text/html" });
|
|
4056
4088
|
}
|