@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.
Files changed (52) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/dist/build/analyze/bundleExternals.d.ts.map +1 -1
  3. package/dist/build/analyze.cjs +2 -2
  4. package/dist/build/analyze.js +1 -1
  5. package/dist/build/bundler.cjs +3 -3
  6. package/dist/build/bundler.js +1 -1
  7. package/dist/build/index.cjs +11 -11
  8. package/dist/build/index.js +4 -4
  9. package/dist/build/plugins/tsconfig-paths.d.ts.map +1 -1
  10. package/dist/bundler/index.cjs +3 -3
  11. package/dist/bundler/index.js +1 -1
  12. package/dist/{chunk-5QWVKP4X.js → chunk-3WL6HPU3.js} +3 -3
  13. package/dist/{chunk-5QWVKP4X.js.map → chunk-3WL6HPU3.js.map} +1 -1
  14. package/dist/{chunk-CWEG55RE.js → chunk-AMZJCH64.js} +48 -44
  15. package/dist/chunk-AMZJCH64.js.map +1 -0
  16. package/dist/{chunk-VA557HZB.js → chunk-BZLFGOSU.js} +6 -6
  17. package/dist/{chunk-VA557HZB.js.map → chunk-BZLFGOSU.js.map} +1 -1
  18. package/dist/{chunk-Q6OWS3YN.cjs → chunk-E4SQOERA.cjs} +48 -44
  19. package/dist/chunk-E4SQOERA.cjs.map +1 -0
  20. package/dist/{chunk-NL26KCV6.cjs → chunk-IZHNO3GK.cjs} +13 -13
  21. package/dist/{chunk-NL26KCV6.cjs.map → chunk-IZHNO3GK.cjs.map} +1 -1
  22. package/dist/{chunk-4CCXXH5X.cjs → chunk-K7J2W7DJ.cjs} +7 -7
  23. package/dist/{chunk-4CCXXH5X.cjs.map → chunk-K7J2W7DJ.cjs.map} +1 -1
  24. package/dist/{chunk-HFQIQVVL.js → chunk-KNINPAM6.js} +6 -6
  25. package/dist/{chunk-HFQIQVVL.js.map → chunk-KNINPAM6.js.map} +1 -1
  26. package/dist/{chunk-GRQR3MP7.js → chunk-KRRQVSI7.js} +3 -3
  27. package/dist/{chunk-GRQR3MP7.js.map → chunk-KRRQVSI7.js.map} +1 -1
  28. package/dist/{chunk-ETMR2WW4.cjs → chunk-P3YQIQSD.cjs} +15 -14
  29. package/dist/chunk-P3YQIQSD.cjs.map +1 -0
  30. package/dist/{chunk-T3HNSYJE.cjs → chunk-R2SIOO54.cjs} +11 -11
  31. package/dist/{chunk-T3HNSYJE.cjs.map → chunk-R2SIOO54.cjs.map} +1 -1
  32. package/dist/{chunk-JLBXF6EN.js → chunk-T3QYAGU3.js} +4 -3
  33. package/dist/chunk-T3QYAGU3.js.map +1 -0
  34. package/dist/{chunk-BTBP6HRB.cjs → chunk-YA6TH3CS.cjs} +14 -14
  35. package/dist/{chunk-BTBP6HRB.cjs.map → chunk-YA6TH3CS.cjs.map} +1 -1
  36. package/dist/docs/SKILL.md +1 -1
  37. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  38. package/dist/docs/references/docs-deployment-cloud-providers.md +2 -2
  39. package/dist/docs/references/docs-deployment-overview.md +2 -2
  40. package/dist/docs/references/reference-deployer.md +2 -2
  41. package/dist/index.cjs +4 -4
  42. package/dist/index.js +2 -2
  43. package/dist/server/index.cjs +73 -41
  44. package/dist/server/index.cjs.map +1 -1
  45. package/dist/server/index.d.ts.map +1 -1
  46. package/dist/server/index.js +74 -42
  47. package/dist/server/index.js.map +1 -1
  48. package/package.json +8 -9
  49. package/dist/chunk-CWEG55RE.js.map +0 -1
  50. package/dist/chunk-ETMR2WW4.cjs.map +0 -1
  51. package/dist/chunk-JLBXF6EN.js.map +0 -1
  52. package/dist/chunk-Q6OWS3YN.cjs.map +0 -1
@@ -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.lstatSync(path);
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
- const optionsStrings = Object.entries(options).map(([k, v]) => {
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"></script>`)}
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
- /* html */
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
- console.error(err);
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
- console.error(err);
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
- console.error(err);
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 clonedReq = c.req.raw.clone();
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
- console.error(error);
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
- console.error(err);
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
- console.error("Failed to parse multipart form data:", error);
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
- console.error("Failed to parse JSON body:", error);
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
- console.error("Error parsing query params", error$1);
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
- console.error("Error parsing body:", error$1 instanceof Error ? error$1.message : String(error$1));
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
- console.error("Error calling handler", error);
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.1_@standard-schema+spec@1.1.0_hono@4.11_9c901a2fdd35ee099fb7c574c1f9a8a1/node_modules/hono-openapi/dist/index.js
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
  }