veryfront 0.1.79 → 0.1.81

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 (37) hide show
  1. package/esm/cli/commands/knowledge/command.d.ts.map +1 -1
  2. package/esm/cli/commands/knowledge/command.js +2 -0
  3. package/esm/cli/commands/task/command.d.ts.map +1 -1
  4. package/esm/cli/commands/task/command.js +2 -0
  5. package/esm/cli/commands/workflow/command.d.ts.map +1 -1
  6. package/esm/cli/commands/workflow/command.js +2 -0
  7. package/esm/cli/utils/write-job-result.d.ts +2 -0
  8. package/esm/cli/utils/write-job-result.d.ts.map +1 -0
  9. package/esm/cli/utils/write-job-result.js +16 -0
  10. package/esm/deno.d.ts +3 -0
  11. package/esm/deno.js +5 -2
  12. package/esm/src/jobs/schemas.d.ts +45 -0
  13. package/esm/src/jobs/schemas.d.ts.map +1 -1
  14. package/esm/src/jobs/schemas.js +4 -0
  15. package/esm/src/mcp/server.d.ts.map +1 -1
  16. package/esm/src/mcp/server.js +45 -9
  17. package/esm/src/proxy/handler.d.ts.map +1 -1
  18. package/esm/src/proxy/handler.js +54 -3
  19. package/esm/src/rendering/script-page-handling.d.ts.map +1 -1
  20. package/esm/src/rendering/script-page-handling.js +1 -14
  21. package/esm/src/routing/api/module-loader/loader.d.ts.map +1 -1
  22. package/esm/src/routing/api/module-loader/loader.js +2 -57
  23. package/esm/src/transforms/npm-import-rewrites.d.ts +26 -0
  24. package/esm/src/transforms/npm-import-rewrites.d.ts.map +1 -0
  25. package/esm/src/transforms/npm-import-rewrites.js +97 -0
  26. package/package.json +1 -1
  27. package/src/cli/commands/knowledge/command.ts +3 -0
  28. package/src/cli/commands/task/command.ts +2 -0
  29. package/src/cli/commands/workflow/command.ts +2 -0
  30. package/src/cli/utils/write-job-result.ts +23 -0
  31. package/src/deno.js +5 -2
  32. package/src/src/jobs/schemas.ts +4 -0
  33. package/src/src/mcp/server.ts +57 -9
  34. package/src/src/proxy/handler.ts +63 -2
  35. package/src/src/rendering/script-page-handling.ts +1 -16
  36. package/src/src/routing/api/module-loader/loader.ts +2 -58
  37. package/src/src/transforms/npm-import-rewrites.ts +115 -0
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/knowledge/command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/knowledge/command.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ import { downloadUploadToFile, listAllUploads } from "../uploads/command.js";
9
9
  import { putRemoteFileFromLocal } from "../files/command.js";
10
10
  import { knowledgeIngestPythonSource } from "./parser-source.js";
11
11
  import { createJobUserLogger, serverLogger } from "../../../src/utils/index.js";
12
+ import { writeJobResultIfConfigured } from "../../utils/write-job-result.js";
12
13
  const SUPPORTED_EXTENSIONS = new Set([
13
14
  ".pdf",
14
15
  ".csv",
@@ -477,6 +478,7 @@ export async function knowledgeCommand(args) {
477
478
  progress_current: results.length,
478
479
  progress_total: results.length,
479
480
  });
481
+ await writeJobResultIfConfigured(results);
480
482
  if (options.json) {
481
483
  printJson(results);
482
484
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/task/command.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,WAAW,WAAY,SAAQ,QAAQ;CAAG;AAEhD,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA4FrE"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/task/command.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,WAAW,WAAY,SAAQ,QAAQ;CAAG;AAEhD,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA6FrE"}
@@ -9,6 +9,7 @@ import { cliLogger } from "../../utils/index.js";
9
9
  import { exitProcess } from "../../utils/index.js";
10
10
  import { withProjectSourceContext } from "../../shared/project-source-context.js";
11
11
  import { sanitizeJobOutputForLogging } from "../../utils/sanitize-job-output.js";
12
+ import { writeJobResultIfConfigured } from "../../utils/write-job-result.js";
12
13
  export async function taskCommand(options) {
13
14
  const { discoverTasks } = await import("../../../src/task/discovery.js");
14
15
  const { runTask } = await import("../../../src/task/runner.js");
@@ -76,6 +77,7 @@ export async function taskCommand(options) {
76
77
  if (result.success) {
77
78
  cliLogger.info(`Task completed in ${result.durationMs}ms`);
78
79
  if (result.result !== undefined) {
80
+ await writeJobResultIfConfigured(result.result);
79
81
  cliLogger.info(`Result: ${JSON.stringify(sanitizeJobOutputForLogging(result.result), null, 2)}`);
80
82
  }
81
83
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/workflow/command.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAIjD,MAAM,WAAW,eAAgB,SAAQ,YAAY;CAAG;AA6DxD,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAmF7E"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/workflow/command.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAIjD,MAAM,WAAW,eAAgB,SAAQ,YAAY;CAAG;AA8DxD,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAmF7E"}
@@ -3,6 +3,7 @@ import { cliLogger } from "../../utils/index.js";
3
3
  import { exitProcess } from "../../utils/index.js";
4
4
  import { withProjectSourceContext } from "../../shared/project-source-context.js";
5
5
  import { sanitizeJobOutputForLogging } from "../../utils/sanitize-job-output.js";
6
+ import { writeJobResultIfConfigured } from "../../utils/write-job-result.js";
6
7
  import { getEnv } from "../../../src/platform/index.js";
7
8
  const WORKFLOW_STATUS_POLL_INTERVAL_MS = 1_000;
8
9
  async function createWorkflowClient(debug) {
@@ -27,6 +28,7 @@ async function waitForWorkflowExit(client, runId) {
27
28
  if (run.status === "completed") {
28
29
  cliLogger.info(`Workflow completed: ${runId}`);
29
30
  if (run.output !== undefined) {
31
+ await writeJobResultIfConfigured(run.output);
30
32
  cliLogger.info(`Result: ${JSON.stringify(sanitizeJobOutputForLogging(run.output), null, 2)}`);
31
33
  }
32
34
  return;
@@ -0,0 +1,2 @@
1
+ export declare function writeJobResultIfConfigured(value: unknown): Promise<void>;
2
+ //# sourceMappingURL=write-job-result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-job-result.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/write-job-result.ts"],"names":[],"mappings":"AAWA,wBAAsB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAW9E"}
@@ -0,0 +1,16 @@
1
+ import * as dntShim from "../../_dnt.shims.js";
2
+ import { dirname } from "../../src/platform/compat/path/index.js";
3
+ import { sanitizeJobOutputForLogging } from "./sanitize-job-output.js";
4
+ const JOB_RESULT_PATH_ENV = "VERYFRONT_JOB_RESULT_PATH";
5
+ function getJobResultPath() {
6
+ const value = dntShim.Deno.env.get(JOB_RESULT_PATH_ENV)?.trim();
7
+ return value ? value : null;
8
+ }
9
+ export async function writeJobResultIfConfigured(value) {
10
+ const resultPath = getJobResultPath();
11
+ if (!resultPath) {
12
+ return;
13
+ }
14
+ await dntShim.Deno.mkdir(dirname(resultPath), { recursive: true });
15
+ await dntShim.Deno.writeTextFile(resultPath, JSON.stringify(sanitizeJobOutputForLogging(value), null, 2));
16
+ }
package/esm/deno.d.ts CHANGED
@@ -241,6 +241,9 @@ declare namespace _default {
241
241
  "@ai-sdk/openai": string;
242
242
  "@ai-sdk/anthropic": string;
243
243
  "@ai-sdk/google": string;
244
+ "@ai-sdk/mistral": string;
245
+ "@ai-sdk/provider": string;
246
+ "@ai-sdk/provider-utils": string;
244
247
  tailwindcss: string;
245
248
  "tailwindcss/plugin": string;
246
249
  "tailwindcss/defaultTheme": string;
package/esm/deno.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export default {
2
2
  "name": "veryfront",
3
- "version": "0.1.79",
3
+ "version": "0.1.81",
4
4
  "license": "Apache-2.0",
5
5
  "nodeModulesDir": "auto",
6
6
  "exclude": [
@@ -251,12 +251,15 @@ export default {
251
251
  "@ai-sdk/openai": "npm:@ai-sdk/openai@3.0.28",
252
252
  "@ai-sdk/anthropic": "npm:@ai-sdk/anthropic@3.0.43",
253
253
  "@ai-sdk/google": "npm:@ai-sdk/google@3.0.29",
254
+ "@ai-sdk/mistral": "npm:@ai-sdk/mistral@3.0.14",
255
+ "@ai-sdk/provider": "npm:@ai-sdk/provider@3.0.2",
256
+ "@ai-sdk/provider-utils": "npm:@ai-sdk/provider-utils@4.0.5",
254
257
  "tailwindcss": "https://esm.sh/tailwindcss@4.1.8",
255
258
  "tailwindcss/plugin": "https://esm.sh/tailwindcss@4.1.8/plugin",
256
259
  "tailwindcss/defaultTheme": "https://esm.sh/tailwindcss@4.1.8/defaultTheme",
257
260
  "tailwindcss/colors": "https://esm.sh/tailwindcss@4.1.8/colors",
258
261
  "redis": "npm:redis@4.6.13",
259
- "pg": "npm:pg",
262
+ "pg": "npm:pg@8.13.1",
260
263
  "jose": "npm:jose@5.9.6",
261
264
  "@opentelemetry/api": "npm:@opentelemetry/api@1",
262
265
  "@opentelemetry/core": "npm:@opentelemetry/core@1",
@@ -108,6 +108,15 @@ export declare const JobResultSchema: z.ZodNullable<z.ZodDiscriminatedUnion<"kin
108
108
  remotePath: string;
109
109
  }[];
110
110
  kind: "knowledge_ingest";
111
+ }>, z.ZodObject<{
112
+ kind: z.ZodLiteral<"value">;
113
+ value: z.ZodUnknown;
114
+ }, "strip", z.ZodTypeAny, {
115
+ kind: "value";
116
+ value?: unknown;
117
+ }, {
118
+ kind: "value";
119
+ value?: unknown;
111
120
  }>, z.ZodObject<{
112
121
  kind: z.ZodLiteral<"artifacts">;
113
122
  artifacts: z.ZodArray<z.ZodUnknown, "many">;
@@ -193,6 +202,15 @@ export declare const JobSchema: z.ZodObject<{
193
202
  remotePath: string;
194
203
  }[];
195
204
  kind: "knowledge_ingest";
205
+ }>, z.ZodObject<{
206
+ kind: z.ZodLiteral<"value">;
207
+ value: z.ZodUnknown;
208
+ }, "strip", z.ZodTypeAny, {
209
+ kind: "value";
210
+ value?: unknown;
211
+ }, {
212
+ kind: "value";
213
+ value?: unknown;
196
214
  }>, z.ZodObject<{
197
215
  kind: z.ZodLiteral<"artifacts">;
198
216
  artifacts: z.ZodArray<z.ZodUnknown, "many">;
@@ -232,6 +250,9 @@ export declare const JobSchema: z.ZodObject<{
232
250
  remotePath: string;
233
251
  }[];
234
252
  kind: "knowledge_ingest";
253
+ } | {
254
+ kind: "value";
255
+ value?: unknown;
235
256
  } | {
236
257
  kind: "artifacts";
237
258
  artifacts: unknown[];
@@ -270,6 +291,9 @@ export declare const JobSchema: z.ZodObject<{
270
291
  remotePath: string;
271
292
  }[];
272
293
  kind: "knowledge_ingest";
294
+ } | {
295
+ kind: "value";
296
+ value?: unknown;
273
297
  } | {
274
298
  kind: "artifacts";
275
299
  artifacts: unknown[];
@@ -361,6 +385,15 @@ export declare const PaginatedJobsResponseSchema: z.ZodObject<{
361
385
  remotePath: string;
362
386
  }[];
363
387
  kind: "knowledge_ingest";
388
+ }>, z.ZodObject<{
389
+ kind: z.ZodLiteral<"value">;
390
+ value: z.ZodUnknown;
391
+ }, "strip", z.ZodTypeAny, {
392
+ kind: "value";
393
+ value?: unknown;
394
+ }, {
395
+ kind: "value";
396
+ value?: unknown;
364
397
  }>, z.ZodObject<{
365
398
  kind: z.ZodLiteral<"artifacts">;
366
399
  artifacts: z.ZodArray<z.ZodUnknown, "many">;
@@ -400,6 +433,9 @@ export declare const PaginatedJobsResponseSchema: z.ZodObject<{
400
433
  remotePath: string;
401
434
  }[];
402
435
  kind: "knowledge_ingest";
436
+ } | {
437
+ kind: "value";
438
+ value?: unknown;
403
439
  } | {
404
440
  kind: "artifacts";
405
441
  artifacts: unknown[];
@@ -438,6 +474,9 @@ export declare const PaginatedJobsResponseSchema: z.ZodObject<{
438
474
  remotePath: string;
439
475
  }[];
440
476
  kind: "knowledge_ingest";
477
+ } | {
478
+ kind: "value";
479
+ value?: unknown;
441
480
  } | {
442
481
  kind: "artifacts";
443
482
  artifacts: unknown[];
@@ -494,6 +533,9 @@ export declare const PaginatedJobsResponseSchema: z.ZodObject<{
494
533
  remotePath: string;
495
534
  }[];
496
535
  kind: "knowledge_ingest";
536
+ } | {
537
+ kind: "value";
538
+ value?: unknown;
497
539
  } | {
498
540
  kind: "artifacts";
499
541
  artifacts: unknown[];
@@ -540,6 +582,9 @@ export declare const PaginatedJobsResponseSchema: z.ZodObject<{
540
582
  remotePath: string;
541
583
  }[];
542
584
  kind: "knowledge_ingest";
585
+ } | {
586
+ kind: "value";
587
+ value?: unknown;
543
588
  } | {
544
589
  kind: "artifacts";
545
590
  artifacts: unknown[];
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/src/jobs/schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/src/jobs/schemas.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,10 @@ export const JobResultSchema = z
32
32
  kind: z.literal("knowledge_ingest"),
33
33
  files: z.array(KnowledgeIngestFileResultSchema),
34
34
  }),
35
+ z.object({
36
+ kind: z.literal("value"),
37
+ value: z.unknown(),
38
+ }),
35
39
  z.object({
36
40
  kind: z.literal("artifacts"),
37
41
  artifacts: z.array(z.unknown()),
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAC;AAG/C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAI7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAMlD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEzE,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,EAAE,CAAC;AAOzD,UAAU,cAAc;IACtB,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,UAAU,eAAe;IACvB,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,OAAO,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,GAAG,SAAS,CAAC,CAAC;IACnE,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,iBAAiB,CAAC,CAA0B;IACpD,OAAO,CAAC,kBAAkB,CAAS;gBAEvB,MAAM,EAAE,eAAe;IAInC;;;OAGG;IACH,oBAAoB,CAAC,MAAM,EAAE,uBAAuB,GAAG,IAAI;IAK3D,aAAa,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC;IAsBhG,OAAO,CAAC,QAAQ;IA8BhB,OAAO,CAAC,UAAU;YAYJ,SAAS;IA2BvB,OAAO,CAAC,QAAQ;IAmChB,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,YAAY;IA6CpB,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,SAAS;IAuCjB,iBAAiB,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;IAsD5E,OAAO,CAAC,qBAAqB;YAkBf,YAAY;IAe1B,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,cAAc;YAYR,oBAAoB;CA0BnC;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAElE"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAC;AAG/C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAI7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAMlD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAOzE,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,EAAE,CAAC;AAOzD,UAAU,cAAc;IACtB,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,UAAU,eAAe;IACvB,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,OAAO,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,GAAG,SAAS,CAAC,CAAC;IACnE,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,iBAAiB,CAAC,CAA0B;IACpD,OAAO,CAAC,kBAAkB,CAAS;gBAEvB,MAAM,EAAE,eAAe;IAQnC;;;OAGG;IACH,oBAAoB,CAAC,MAAM,EAAE,uBAAuB,GAAG,IAAI;IAK3D,aAAa,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC;IAsBhG,OAAO,CAAC,QAAQ;IA8BhB,OAAO,CAAC,UAAU;YAYJ,SAAS;IA2BvB,OAAO,CAAC,QAAQ;IAmChB,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,YAAY;IA6CpB,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,SAAS;IAuCjB,iBAAiB,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;IA+E5E,OAAO,CAAC,qBAAqB;YAkBf,YAAY;IAoB1B,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,cAAc;YAqBR,oBAAoB;CA0BnC;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAElE"}
@@ -9,6 +9,9 @@ import { withSpan } from "../observability/tracing/otlp-setup.js";
9
9
  import { VERSION } from "../utils/version.js";
10
10
  import { validateContentType } from "../security/input-validation/limits.js";
11
11
  import { VeryfrontError } from "../security/input-validation/errors.js";
12
+ import { logger as baseLogger } from "../utils/index.js";
13
+ const logger = baseLogger.component("mcp-server");
14
+ const MAX_REQUEST_BODY_SIZE = 1_048_576; // 1 MB
12
15
  function asParamsRecord(params) {
13
16
  if (!params || Array.isArray(params))
14
17
  return {};
@@ -20,6 +23,9 @@ export class MCPServer {
20
23
  integrationsLoaded = false;
21
24
  constructor(config) {
22
25
  this.config = config;
26
+ if (!config.auth || config.auth.type === "none") {
27
+ logger.warn("MCP server has no authentication configured — all requests will be accepted");
28
+ }
23
29
  }
24
30
  /**
25
31
  * Configure integration tools to be lazily loaded on first tools/list call.
@@ -207,13 +213,23 @@ export class MCPServer {
207
213
  }
208
214
  createHTTPHandler() {
209
215
  return async (request) => {
216
+ const requestOrigin = request.headers.get("Origin");
210
217
  if (request.method === "OPTIONS")
211
- return this.handleCORS();
218
+ return this.handleCORS(requestOrigin);
212
219
  if (this.config.auth?.type && this.config.auth.type !== "none") {
213
220
  const authorized = await this.validateAuth(request);
214
221
  if (!authorized)
215
222
  return new dntShim.Response("Unauthorized", { status: 401 });
216
223
  }
224
+ // Enforce request body size limit (fast path via Content-Length header)
225
+ const contentLength = request.headers.get("content-length");
226
+ if (contentLength && Number(contentLength) > MAX_REQUEST_BODY_SIZE) {
227
+ return new dntShim.Response(JSON.stringify({
228
+ jsonrpc: "2.0",
229
+ id: null,
230
+ error: { code: -32600, message: "Request body too large" },
231
+ }), { status: 413, headers: { "Content-Type": "application/json" } });
232
+ }
217
233
  try {
218
234
  validateContentType(request, "application/json");
219
235
  }
@@ -227,7 +243,15 @@ export class MCPServer {
227
243
  }
228
244
  let rpcRequest;
229
245
  try {
230
- rpcRequest = await request.json();
246
+ const bodyText = await request.text();
247
+ if (bodyText.length > MAX_REQUEST_BODY_SIZE) {
248
+ return new dntShim.Response(JSON.stringify({
249
+ jsonrpc: "2.0",
250
+ id: null,
251
+ error: { code: -32600, message: "Request body too large" },
252
+ }), { status: 413, headers: { "Content-Type": "application/json" } });
253
+ }
254
+ rpcRequest = JSON.parse(bodyText);
231
255
  }
232
256
  catch (_) {
233
257
  // expected: malformed JSON in request body
@@ -246,7 +270,7 @@ export class MCPServer {
246
270
  return new dntShim.Response(JSON.stringify(rpcResponse), {
247
271
  headers: {
248
272
  "Content-Type": "application/json",
249
- ...this.getCORSHeaders(),
273
+ ...this.getCORSHeaders(requestOrigin),
250
274
  },
251
275
  });
252
276
  };
@@ -275,21 +299,33 @@ export class MCPServer {
275
299
  if (auth.type !== "bearer")
276
300
  return false;
277
301
  const token = authHeader.replace("Bearer ", "");
278
- if (!auth.validate)
302
+ // When bearer auth is configured without a validate function, reject all requests
303
+ if (!auth.validate) {
304
+ logger.warn("Bearer auth configured without validate function — rejecting request");
279
305
  return false;
306
+ }
280
307
  return await auth.validate(token);
281
308
  }
282
- handleCORS() {
283
- return new dntShim.Response(null, { status: 204, headers: this.getCORSHeaders() });
309
+ handleCORS(requestOrigin) {
310
+ return new dntShim.Response(null, { status: 204, headers: this.getCORSHeaders(requestOrigin) });
284
311
  }
285
- getCORSHeaders() {
312
+ getCORSHeaders(requestOrigin) {
286
313
  if (!this.config.cors?.enabled)
287
314
  return {};
288
- const origin = this.config.cors.origins?.[0] ?? "*";
315
+ const origins = this.config.cors.origins;
316
+ if (!origins || origins.length === 0)
317
+ return {};
318
+ // Match request origin against the configured origins list
319
+ const matchedOrigin = requestOrigin && origins.includes(requestOrigin)
320
+ ? requestOrigin
321
+ : undefined;
322
+ if (!matchedOrigin)
323
+ return {};
289
324
  return {
290
- "Access-Control-Allow-Origin": origin,
325
+ "Access-Control-Allow-Origin": matchedOrigin,
291
326
  "Access-Control-Allow-Methods": "POST, OPTIONS",
292
327
  "Access-Control-Allow-Headers": "Content-Type, Authorization, X-End-User-Id, X-Project-Id",
328
+ "Vary": "Origin",
293
329
  };
294
330
  }
295
331
  async loadIntegrationTools(config) {
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/src/proxy/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAE,KAAK,YAAY,EAAsB,MAAM,kCAAkC,CAAC;AACzF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAQnD,eAAO,MAAM,sBAAsB,0MAYzB,CAAC;AA6EX,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,SAAS,GAAG,YAAY,CAAC;IACtC,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,YAAY,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE;QACN,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC9D,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC7D,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC7D,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CAC9E;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AA4CD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB;0BA6K1B,OAAO,CAAC,OAAO,KAAG,OAAO,CAAC,YAAY,CAAC;0BA+NvC,OAAO,CAAC,OAAO,KAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;;;;;;;;0BAjVrD,MAAM,EAAE;;EA+XpC;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEjE,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAwB7F"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/src/proxy/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAE,KAAK,YAAY,EAAsB,MAAM,kCAAkC,CAAC;AACzF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAQnD,eAAO,MAAM,sBAAsB,0MAYzB,CAAC;AAoGX,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,SAAS,GAAG,YAAY,CAAC;IACtC,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,YAAY,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE;QACN,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC9D,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC7D,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC7D,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CAC9E;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AA8ED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB;0BAiL1B,OAAO,CAAC,OAAO,KAAG,OAAO,CAAC,YAAY,CAAC;0BA+NvC,OAAO,CAAC,OAAO,KAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;;;;;;;;0BArVrD,MAAM,EAAE;;EAmYpC;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEjE,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAwB7F"}
@@ -6,7 +6,7 @@ import { cwd, getEnv } from "../platform/compat/process.js";
6
6
  import { join } from "../platform/compat/path/index.js";
7
7
  import { injectContext, ProxySpanNames, withSpan } from "./tracing.js";
8
8
  import { computeContentSourceId } from "../cache/keys.js";
9
- import { jwtVerify } from "jose";
9
+ import { createRemoteJWKSet, decodeProtectedHeader, jwtVerify } from "jose";
10
10
  export const INTERNAL_PROXY_HEADERS = [
11
11
  "x-token",
12
12
  "x-project-slug",
@@ -20,6 +20,26 @@ export const INTERNAL_PROXY_HEADERS = [
20
20
  "x-branch-id",
21
21
  "x-branch-name",
22
22
  ];
23
+ const remoteJwksByUrl = new Map();
24
+ function getApiJwks(apiBaseUrl, logger) {
25
+ try {
26
+ const normalizedBaseUrl = apiBaseUrl.endsWith("/") ? apiBaseUrl : `${apiBaseUrl}/`;
27
+ const jwksUrl = new URL(".well-known/jwks.json", normalizedBaseUrl);
28
+ const cacheKey = jwksUrl.toString();
29
+ let jwks = remoteJwksByUrl.get(cacheKey);
30
+ if (!jwks) {
31
+ jwks = createRemoteJWKSet(jwksUrl);
32
+ remoteJwksByUrl.set(cacheKey, jwks);
33
+ }
34
+ return jwks;
35
+ }
36
+ catch (error) {
37
+ logger?.error("Invalid API base URL for JWKS lookup", error, {
38
+ apiBaseUrl,
39
+ });
40
+ return undefined;
41
+ }
42
+ }
23
43
  async function lookupProjectByDomain(domain, apiBaseUrl, token, logger) {
24
44
  return withSpan(ProxySpanNames.PROXY_DOMAIN_LOOKUP, async () => {
25
45
  const domainWithoutPort = domain.replace(/:\d+$/, "");
@@ -70,7 +90,38 @@ function extractUserToken(cookieHeader) {
70
90
  const match = cookieHeader.match(/(?:^|;\s*)authToken=([^;]+)/);
71
91
  return match?.[1] ? decodeURIComponent(match[1]) : undefined;
72
92
  }
73
- async function extractUserIdFromToken(token, log) {
93
+ async function extractUserIdFromToken(token, apiBaseUrl, log) {
94
+ let algorithm;
95
+ try {
96
+ algorithm = decodeProtectedHeader(token).alg;
97
+ }
98
+ catch (error) {
99
+ log?.debug("Failed to decode JWT header", {
100
+ error: error instanceof Error ? error.message : String(error),
101
+ });
102
+ return undefined;
103
+ }
104
+ if (algorithm === "RS256") {
105
+ const jwks = getApiJwks(apiBaseUrl, log);
106
+ if (!jwks)
107
+ return undefined;
108
+ try {
109
+ const { payload } = await jwtVerify(token, jwks, {
110
+ algorithms: ["RS256"],
111
+ });
112
+ return payload.userId;
113
+ }
114
+ catch (error) {
115
+ log?.debug("RS256 JWT verification failed", {
116
+ error: error instanceof Error ? error.message : String(error),
117
+ });
118
+ return undefined;
119
+ }
120
+ }
121
+ if (algorithm !== "HS256") {
122
+ log?.debug("Unsupported JWT algorithm", { algorithm: algorithm ?? null });
123
+ return undefined;
124
+ }
74
125
  const jwtSecret = getEnv("JWT_SECRET");
75
126
  if (!jwtSecret) {
76
127
  log?.warn("JWT_SECRET not configured — cannot verify user token");
@@ -184,7 +235,7 @@ export function createProxyHandler(options) {
184
235
  });
185
236
  return { status: 302, message: "Authentication required", redirectUrl };
186
237
  }
187
- const userId = await extractUserIdFromToken(userToken, logger);
238
+ const userId = await extractUserIdFromToken(userToken, config.apiBaseUrl, logger);
188
239
  if (!userId) {
189
240
  const redirectUrl = makeAuthRedirectUrl(req);
190
241
  logger?.info("Could not extract userId from token", {
@@ -1 +1 @@
1
- {"version":3,"file":"script-page-handling.d.ts","sourceRoot":"","sources":["../../../src/src/rendering/script-page-handling.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACV,cAAc,EACd,UAAU,EAGV,YAAY,EAEb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAenE,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,eAAe,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IAC3C,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA0HD,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,UAAU,EACpB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,YAAY,CAAC,CAiDvB"}
1
+ {"version":3,"file":"script-page-handling.d.ts","sourceRoot":"","sources":["../../../src/src/rendering/script-page-handling.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EACV,cAAc,EACd,UAAU,EAGV,YAAY,EAEb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAenE,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,eAAe,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IAC3C,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAqHD,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,UAAU,EACpB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,YAAY,CAAC,CAiDvB"}
@@ -6,6 +6,7 @@
6
6
  */
7
7
  import * as dntShim from "../../_dnt.shims.js";
8
8
  import { DEFAULT_DASHBOARD_PORT, rendererLogger } from "../utils/index.js";
9
+ import { rewriteNpmImports } from "../transforms/npm-import-rewrites.js";
9
10
  import { dirname, join } from "../platform/compat/path/index.js";
10
11
  import { cwd } from "../platform/compat/process.js";
11
12
  import { RENDER_ERROR } from "../errors/error-registry.js";
@@ -16,10 +17,6 @@ import { extractHTMLMetadata, injectHTMLContent, isFullHTMLDocument } from "../h
16
17
  import { createFileSystem } from "../platform/compat/fs.js";
17
18
  import { getEsbuildLoader } from "../utils/path-utils.js";
18
19
  const logger = rendererLogger.component("script");
19
- const NPM_REWRITES = [
20
- { pattern: /from\s+["']ai["']/g, replacement: 'from "npm:ai@latest"' },
21
- { pattern: /from\s+["']zod["']/g, replacement: 'from "npm:zod@latest"' },
22
- ];
23
20
  const ESBUILD_EXTERNALS = [
24
21
  "ai",
25
22
  "ai/*",
@@ -208,16 +205,6 @@ async function readFileWithFallback(adapter, modulePath, normalizedPath) {
208
205
  }
209
206
  }
210
207
  }
211
- function rewriteNpmImports(code) {
212
- const isDeno = typeof dntShim.dntGlobalThis.Deno !== "undefined";
213
- if (!isDeno)
214
- return code;
215
- let result = code;
216
- for (const { pattern, replacement } of NPM_REWRITES) {
217
- result = result.replace(pattern, replacement);
218
- }
219
- return result;
220
- }
221
208
  async function transpileWithEsbuild(source, modulePath, resolveDir) {
222
209
  const { build } = await import("esbuild");
223
210
  const loader = getEsbuildLoader(modulePath);
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../../src/src/routing/api/module-loader/loader.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AA+K9D,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAejE;AAgBD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAyBtF"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../../src/src/routing/api/module-loader/loader.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAgL9D,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAejE;AAgBD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAyBtF"}
@@ -12,6 +12,7 @@ import { withSpan } from "../../../observability/tracing/otlp-setup.js";
12
12
  import { isCompiledBinary } from "../../../utils/index.js";
13
13
  import { wrapWithCurrentContext } from "../../../platform/adapters/fs/veryfront/multi-project-adapter.js";
14
14
  import { isWithinDirectory } from "../../../security/path-validation.js";
15
+ import { rewriteNpmImports } from "../../../transforms/npm-import-rewrites.js";
15
16
  const logger = serverLogger.component("api");
16
17
  /**
17
18
  * Validates that a module path is contained within the project directory.
@@ -633,63 +634,7 @@ async function rewriteExternalImports(code, projectDir, fs, userDeps = new Map()
633
634
  }
634
635
  }
635
636
  if (isDeno) {
636
- const rewrites = [
637
- { pattern: /from\s+["']ai["']/g, replacement: 'from "npm:ai@latest"' },
638
- {
639
- pattern: /from\s+["']@ai-sdk\/anthropic["']/g,
640
- replacement: 'from "npm:@ai-sdk/anthropic@latest"',
641
- },
642
- {
643
- pattern: /from\s+["']@ai-sdk\/openai["']/g,
644
- replacement: 'from "npm:@ai-sdk/openai@latest"',
645
- },
646
- {
647
- pattern: /from\s+["']@ai-sdk\/google["']/g,
648
- replacement: 'from "npm:@ai-sdk/google@latest"',
649
- },
650
- {
651
- pattern: /from\s+["']@ai-sdk\/mistral["']/g,
652
- replacement: 'from "npm:@ai-sdk/mistral@latest"',
653
- },
654
- {
655
- pattern: /from\s+["']@ai-sdk\/provider["']/g,
656
- replacement: 'from "npm:@ai-sdk/provider@latest"',
657
- },
658
- {
659
- pattern: /from\s+["']@ai-sdk\/provider-utils["']/g,
660
- replacement: 'from "npm:@ai-sdk/provider-utils@latest"',
661
- },
662
- { pattern: /from\s+["']zod["']/g, replacement: 'from "npm:zod@latest"' },
663
- { pattern: /import\s*\(\s*["']ai["']\s*\)/g, replacement: 'import("npm:ai@latest")' },
664
- {
665
- pattern: /import\s*\(\s*["']@ai-sdk\/anthropic["']\s*\)/g,
666
- replacement: 'import("npm:@ai-sdk/anthropic@latest")',
667
- },
668
- {
669
- pattern: /import\s*\(\s*["']@ai-sdk\/openai["']\s*\)/g,
670
- replacement: 'import("npm:@ai-sdk/openai@latest")',
671
- },
672
- {
673
- pattern: /import\s*\(\s*["']@ai-sdk\/google["']\s*\)/g,
674
- replacement: 'import("npm:@ai-sdk/google@latest")',
675
- },
676
- {
677
- pattern: /import\s*\(\s*["']@ai-sdk\/mistral["']\s*\)/g,
678
- replacement: 'import("npm:@ai-sdk/mistral@latest")',
679
- },
680
- {
681
- pattern: /import\s*\(\s*["']@ai-sdk\/provider["']\s*\)/g,
682
- replacement: 'import("npm:@ai-sdk/provider@latest")',
683
- },
684
- {
685
- pattern: /import\s*\(\s*["']@ai-sdk\/provider-utils["']\s*\)/g,
686
- replacement: 'import("npm:@ai-sdk/provider-utils@latest")',
687
- },
688
- { pattern: /import\s*\(\s*["']zod["']\s*\)/g, replacement: 'import("npm:zod@latest")' },
689
- ];
690
- for (const { pattern, replacement } of rewrites) {
691
- transformed = transformed.replace(pattern, replacement);
692
- }
637
+ transformed = rewriteNpmImports(transformed);
693
638
  // Rewrite bare Node.js built-in imports to node: prefix for Deno compatibility.
694
639
  // npm packages often use require('fs') / from "fs" without the node: prefix.
695
640
  for (const mod of NODE_BUILTINS) {
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Bare specifiers that should be rewritten to their pinned npm: versions.
3
+ * Each must have a corresponding entry in deno.json's import map.
4
+ */
5
+ declare const REWRITABLE_PACKAGES: readonly ["ai", "@ai-sdk/anthropic", "@ai-sdk/openai", "@ai-sdk/google", "@ai-sdk/mistral", "@ai-sdk/provider", "@ai-sdk/provider-utils", "zod"];
6
+ interface RewriteRule {
7
+ pattern: RegExp;
8
+ replacement: string;
9
+ }
10
+ declare function buildRules(importMap: Record<string, string>): RewriteRule[];
11
+ /**
12
+ * Returns rewrite rules derived from deno.json's import map.
13
+ * Rules are cached after first call.
14
+ */
15
+ export declare function getNpmRewriteRules(): RewriteRule[];
16
+ /**
17
+ * Apply npm import rewrites to source code.
18
+ * Rewrites bare specifiers to pinned npm: versions from deno.json.
19
+ * No-op on Node.js where bare specifiers resolve via node_modules.
20
+ */
21
+ export declare function rewriteNpmImports(source: string): string;
22
+ /** Exported for testing */
23
+ export { buildRules, REWRITABLE_PACKAGES };
24
+ /** @internal Reset cached rules — only for testing */
25
+ export declare function _resetCache(): void;
26
+ //# sourceMappingURL=npm-import-rewrites.d.ts.map