veryfront 0.1.890 → 0.1.892

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 (40) hide show
  1. package/esm/cli/commands/eval/command-help.d.ts.map +1 -1
  2. package/esm/cli/commands/eval/command-help.js +6 -1
  3. package/esm/cli/commands/eval/command.d.ts +21 -0
  4. package/esm/cli/commands/eval/command.d.ts.map +1 -1
  5. package/esm/cli/commands/eval/command.js +46 -4
  6. package/esm/cli/commands/eval/handler.d.ts +2 -0
  7. package/esm/cli/commands/eval/handler.d.ts.map +1 -1
  8. package/esm/cli/commands/eval/handler.js +2 -0
  9. package/esm/deno.js +1 -1
  10. package/esm/extensions/ext-observability-opentelemetry/src/index.d.ts +15 -11
  11. package/esm/extensions/ext-observability-opentelemetry/src/index.d.ts.map +1 -1
  12. package/esm/extensions/ext-observability-opentelemetry/src/index.js +86 -36
  13. package/esm/src/agent/runtime/client-profile.d.ts.map +1 -1
  14. package/esm/src/agent/runtime/client-profile.js +2 -0
  15. package/esm/src/config/environment-config.d.ts +1 -0
  16. package/esm/src/config/environment-config.d.ts.map +1 -1
  17. package/esm/src/config/environment-config.js +13 -11
  18. package/esm/src/config/runtime-config.d.ts.map +1 -1
  19. package/esm/src/config/runtime-config.js +29 -13
  20. package/esm/src/observability/metrics/config.d.ts.map +1 -1
  21. package/esm/src/observability/metrics/config.js +6 -7
  22. package/esm/src/observability/tracing/otlp-setup.d.ts.map +1 -1
  23. package/esm/src/observability/tracing/otlp-setup.js +6 -6
  24. package/esm/src/observability/tracing/telemetry-env.d.ts +3 -0
  25. package/esm/src/observability/tracing/telemetry-env.d.ts.map +1 -0
  26. package/esm/src/observability/tracing/telemetry-env.js +10 -0
  27. package/esm/src/proxy/tracing.js +5 -5
  28. package/esm/src/server/handlers/request/agent-stream.handler.d.ts.map +1 -1
  29. package/esm/src/server/handlers/request/agent-stream.handler.js +2 -2
  30. package/esm/src/server/project-env/index.d.ts +1 -0
  31. package/esm/src/server/project-env/index.d.ts.map +1 -1
  32. package/esm/src/server/project-env/index.js +1 -0
  33. package/esm/src/server/project-env/reserved-env.d.ts +2 -0
  34. package/esm/src/server/project-env/reserved-env.d.ts.map +1 -0
  35. package/esm/src/server/project-env/reserved-env.js +4 -0
  36. package/esm/src/server/runtime-handler/index.d.ts.map +1 -1
  37. package/esm/src/server/runtime-handler/index.js +2 -2
  38. package/esm/src/utils/version-constant.d.ts +1 -1
  39. package/esm/src/utils/version-constant.js +1 -1
  40. package/package.json +3 -1
@@ -1 +1 @@
1
- {"version":3,"file":"command-help.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/eval/command-help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,QAAQ,EAAE,WA8CtB,CAAC"}
1
+ {"version":3,"file":"command-help.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/eval/command-help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,QAAQ,EAAE,WAmDtB,CAAC"}
@@ -16,6 +16,10 @@ export const evalHelp = {
16
16
  flag: "--report <path>",
17
17
  description: "Write the raw eval report JSON to a file",
18
18
  },
19
+ {
20
+ flag: "--report-dir <path>",
21
+ description: "Write summary.json and results.jsonl artifacts to a directory",
22
+ },
19
23
  {
20
24
  flag: "--junit <path>",
21
25
  description: "Write a JUnit XML report to a file",
@@ -40,7 +44,8 @@ export const evalHelp = {
40
44
  examples: [
41
45
  "veryfront eval --list",
42
46
  "veryfront eval deep-research",
43
- "veryfront eval eval:deep-research --report .veryfront/evals/deep-research.json --junit .veryfront/evals/deep-research.xml",
47
+ "veryfront eval eval:deep-research --report-dir .veryfront/evals/deep-research",
48
+ "veryfront eval eval:deep-research --report .veryfront/evals/deep-research/report.json --junit .veryfront/evals/deep-research/junit.xml",
44
49
  "veryfront eval deep-research --export braintrust,langfuse --json",
45
50
  "veryfront eval deep-research --json",
46
51
  ],
@@ -12,10 +12,31 @@ type CliEvalSummary = {
12
12
  passRate: number;
13
13
  metrics: EvalReport["summary"]["metrics"];
14
14
  };
15
+ type EvalArtifactPaths = {
16
+ directory: string;
17
+ summary: string;
18
+ results: string;
19
+ };
20
+ type EvalSummaryArtifact = {
21
+ kind: "eval-summary";
22
+ runId: string;
23
+ definitionId: string;
24
+ targetKind: EvalReport["targetKind"];
25
+ target: string;
26
+ startedAt: string;
27
+ endedAt: string;
28
+ summary: EvalReport["summary"];
29
+ exports?: EvalReport["exports"];
30
+ };
31
+ export declare function createDefaultEvalReportDir(runId: string): string;
32
+ export declare function createEvalArtifactPaths(reportDir: string): EvalArtifactPaths;
15
33
  export declare function normalizeEvalCliId(id: string): string;
16
34
  export declare function normalizeEvalInputForAgent(input: unknown): string;
17
35
  export declare function summarizeReportForCli(report: EvalReport): CliEvalSummary;
36
+ export declare function createSummaryArtifact(report: EvalReport): EvalSummaryArtifact;
37
+ export declare function createResultsJsonl(report: EvalReport): string;
18
38
  export declare function createJunitXml(report: EvalReport): string;
39
+ export declare function writeEvalArtifacts(report: EvalReport, paths: EvalArtifactPaths): Promise<void>;
19
40
  export declare function evalCommand(options: EvalOptions): Promise<void>;
20
41
  export {};
21
42
  //# sourceMappingURL=command.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/eval/command.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAKV,UAAU,EAGX,MAAM,4BAA4B,CAAC;AAWpC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,WAAW,WAAY,SAAQ,QAAQ;CAAG;AAEhD,KAAK,cAAc,GAAG;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC;CAC3C,CAAC;AAiDF,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CASjE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,GAAG,cAAc,CAWxE;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CA0CzD;AA+ID,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA8FrE"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/eval/command.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAKV,UAAU,EAGX,MAAM,4BAA4B,CAAC;AAWpC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,WAAW,WAAY,SAAQ,QAAQ;CAAG;AAEhD,KAAK,cAAc,GAAG;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC;CAC3C,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACzB,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;CACjC,CAAC;AAoBF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB,CAM5E;AAmCD,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CASjE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,GAAG,cAAc,CAWxE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,GAAG,mBAAmB,CAY7E;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAG7D;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CA0CzD;AAQD,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC,IAAI,CAAC,CAIf;AA0ID,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAsGrE"}
@@ -2,7 +2,7 @@
2
2
  * Eval command - Discover and run eval definitions from the evals/ directory.
3
3
  */
4
4
  import * as dntShim from "../../../_dnt.shims.js";
5
- import { dirname, relative } from "../../../deps/jsr.io/@std/path/1.1.4/mod.js";
5
+ import { dirname, join, relative } from "../../../deps/jsr.io/@std/path/1.1.4/mod.js";
6
6
  import { createProjectDiscoveryConfig, discoverAll } from "../../../src/discovery/index.js";
7
7
  import { discoverEvals, runEval } from "../../../src/eval/index.js";
8
8
  import { cliLogger, exitProcess } from "../../utils/index.js";
@@ -21,6 +21,19 @@ function stripFileProtocol(path) {
21
21
  return path;
22
22
  return decodeURIComponent(new URL(path).pathname);
23
23
  }
24
+ function createCliRunId(now = new Date()) {
25
+ return `evalrun_${now.toISOString().replace(/[-:.]/g, "").replace("T", "_").replace("Z", "")}`;
26
+ }
27
+ export function createDefaultEvalReportDir(runId) {
28
+ return join(".veryfront", "evals", runId);
29
+ }
30
+ export function createEvalArtifactPaths(reportDir) {
31
+ return {
32
+ directory: reportDir,
33
+ summary: join(reportDir, "summary.json"),
34
+ results: join(reportDir, "results.jsonl"),
35
+ };
36
+ }
24
37
  function displaySourcePath(filePath, projectDir) {
25
38
  const normalized = stripFileProtocol(filePath);
26
39
  if (normalized.startsWith(projectDir)) {
@@ -75,6 +88,24 @@ export function summarizeReportForCli(report) {
75
88
  metrics: report.summary.metrics,
76
89
  };
77
90
  }
91
+ export function createSummaryArtifact(report) {
92
+ return {
93
+ kind: "eval-summary",
94
+ runId: report.runId,
95
+ definitionId: report.definitionId,
96
+ targetKind: report.targetKind,
97
+ target: report.target,
98
+ startedAt: report.startedAt,
99
+ endedAt: report.endedAt,
100
+ summary: report.summary,
101
+ ...(report.exports ? { exports: report.exports } : {}),
102
+ };
103
+ }
104
+ export function createResultsJsonl(report) {
105
+ if (report.records.length === 0)
106
+ return "";
107
+ return `${report.records.map((record) => JSON.stringify(record)).join("\n")}\n`;
108
+ }
78
109
  export function createJunitXml(report) {
79
110
  const skipped = report.records.reduce((count, record) => count + skippedResults(record).length, 0);
80
111
  const lines = [
@@ -107,6 +138,11 @@ async function writeTextFileEnsuringDir(path, content) {
107
138
  await dntShim.Deno.mkdir(dir, { recursive: true });
108
139
  await dntShim.Deno.writeTextFile(path, content);
109
140
  }
141
+ export async function writeEvalArtifacts(report, paths) {
142
+ await dntShim.Deno.mkdir(paths.directory, { recursive: true });
143
+ await dntShim.Deno.writeTextFile(paths.summary, JSON.stringify(createSummaryArtifact(report), null, 2));
144
+ await dntShim.Deno.writeTextFile(paths.results, createResultsJsonl(report));
145
+ }
110
146
  function resolveAgentTargetId(target) {
111
147
  return target.startsWith("agent:") ? target.slice("agent:".length) : target;
112
148
  }
@@ -174,7 +210,7 @@ function printReport(report) {
174
210
  }
175
211
  }
176
212
  }
177
- function createEvalCliExportConfig(evalItem, options, projectDir) {
213
+ function createEvalCliExportConfig(evalItem, options, projectDir, artifactPaths) {
178
214
  if (options.exporters.length === 0)
179
215
  return undefined;
180
216
  return {
@@ -182,7 +218,7 @@ function createEvalCliExportConfig(evalItem, options, projectDir) {
182
218
  context: {
183
219
  evalId: evalItem.definition.id,
184
220
  sourcePath: displaySourcePath(evalItem.filePath, projectDir),
185
- reportPath: options.report,
221
+ reportPath: options.report ?? artifactPaths.summary,
186
222
  tags: evalItem.definition.tags,
187
223
  metadata: evalItem.definition.metadata,
188
224
  redaction: {},
@@ -282,13 +318,17 @@ export async function evalCommand(options) {
282
318
  await outputAgentNotFound(agentId);
283
319
  return;
284
320
  }
321
+ const runId = createCliRunId();
322
+ const artifactPaths = createEvalArtifactPaths(options.reportDir ?? createDefaultEvalReportDir(runId));
285
323
  const report = await runEval(evalItem.definition, {
286
324
  baseDir: options.datasetBase ?? projectDir,
325
+ runId,
287
326
  adapters: {
288
327
  agent: createAgentAdapter(agent, options),
289
328
  },
290
- export: createEvalCliExportConfig(evalItem, options, projectDir),
329
+ export: createEvalCliExportConfig(evalItem, options, projectDir, artifactPaths),
291
330
  });
331
+ await writeEvalArtifacts(report, artifactPaths);
292
332
  if (options.report) {
293
333
  await writeTextFileEnsuringDir(options.report, JSON.stringify(report, null, 2));
294
334
  }
@@ -299,10 +339,12 @@ export async function evalCommand(options) {
299
339
  await outputJson(createSuccessEnvelope("eval", {
300
340
  report,
301
341
  summary: summarizeReportForCli(report),
342
+ artifacts: artifactPaths,
302
343
  }));
303
344
  }
304
345
  else {
305
346
  printReport(report);
347
+ cliLogger.info(`Report directory: ${artifactPaths.directory}`);
306
348
  if (options.report)
307
349
  cliLogger.info(`Report: ${options.report}`);
308
350
  if (options.junit)
@@ -4,6 +4,7 @@ declare const getEvalArgsSchema: () => import("../../../src/internal-agents/sche
4
4
  id: import("../../../src/internal-agents/schema.js").Schema<string | undefined>;
5
5
  list: import("../../../src/internal-agents/schema.js").Schema<boolean>;
6
6
  datasetBase: import("../../../src/internal-agents/schema.js").Schema<string | undefined>;
7
+ reportDir: import("../../../src/internal-agents/schema.js").Schema<string | undefined>;
7
8
  report: import("../../../src/internal-agents/schema.js").Schema<string | undefined>;
8
9
  junit: import("../../../src/internal-agents/schema.js").Schema<string | undefined>;
9
10
  exporters: import("../../../src/internal-agents/schema.js").Schema<string[]>;
@@ -16,6 +17,7 @@ export declare const parseEvalArgs: (args: ParsedArgs) => import("../../shared/a
16
17
  id: import("../../../src/internal-agents/schema.js").Schema<string | undefined>;
17
18
  list: import("../../../src/internal-agents/schema.js").Schema<boolean>;
18
19
  datasetBase: import("../../../src/internal-agents/schema.js").Schema<string | undefined>;
20
+ reportDir: import("../../../src/internal-agents/schema.js").Schema<string | undefined>;
19
21
  report: import("../../../src/internal-agents/schema.js").Schema<string | undefined>;
20
22
  junit: import("../../../src/internal-agents/schema.js").Schema<string | undefined>;
21
23
  exporters: import("../../../src/internal-agents/schema.js").Schema<string[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/eval/handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAE3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,QAAA,MAAM,iBAAiB;;;;;;;;;;GAYtB,CAAC;AAIF,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC;AAEzE,eAAO,MAAM,aAAa;;;;;;;;;;GAUxB,CAAC;AAEH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAIvE"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/eval/handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAE3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,QAAA,MAAM,iBAAiB;;;;;;;;;;;GAatB,CAAC;AAIF,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC;AAEzE,eAAO,MAAM,aAAa;;;;;;;;;;;GAWxB,CAAC;AAEH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAIvE"}
@@ -4,6 +4,7 @@ const getEvalArgsSchema = defineSchema((v) => v.object({
4
4
  id: v.string().optional(),
5
5
  list: v.boolean().default(false),
6
6
  datasetBase: v.string().optional(),
7
+ reportDir: v.string().optional(),
7
8
  report: v.string().optional(),
8
9
  junit: v.string().optional(),
9
10
  exporters: v.array(v.string()).default([]),
@@ -16,6 +17,7 @@ export const parseEvalArgs = createArgParser(EvalArgsSchema, {
16
17
  id: { keys: ["id"], type: "string", positional: 0 },
17
18
  list: { keys: ["list", "l"], type: "boolean" },
18
19
  datasetBase: { keys: ["dataset-base"], type: "string" },
20
+ reportDir: { keys: ["report-dir"], type: "string" },
19
21
  report: { keys: ["report"], type: "string" },
20
22
  junit: { keys: ["junit"], type: "string" },
21
23
  exporters: { keys: ["export"], type: "array" },
package/esm/deno.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export default {
2
2
  "name": "veryfront",
3
- "version": "0.1.890",
3
+ "version": "0.1.892",
4
4
  "license": "Apache-2.0",
5
5
  "nodeModulesDir": "auto",
6
6
  "minimumDependencyAge": {
@@ -7,20 +7,24 @@ import type { NodeTelemetryInitializeOptions, NodeTelemetryProvider, SpanData, T
7
7
  interface ShimTracerProvider {
8
8
  getTracer(name: string, version?: string): unknown;
9
9
  }
10
- /**
11
- * Configuration shape accepted by this extension factory.
12
- */
13
- export interface OtlpExtConfig {
14
- otel?: {
15
- serviceName?: string;
16
- serviceVersion?: string;
17
- endpoint?: string;
18
- headers?: string | Record<string, string>;
19
- };
10
+ type EnvReader = (name: string) => string | undefined;
11
+ export interface ResolvedOtlpExtensionConfig {
12
+ serviceName: string;
13
+ serviceVersion: string;
14
+ headers: Record<string, string>;
15
+ tracesEnabled: boolean;
16
+ metricsEnabled: boolean;
17
+ tracesUrl: string | undefined;
18
+ metricsUrl: string | undefined;
19
+ metricsExportIntervalMillis: number;
20
20
  }
21
+ export declare function resolveOtlpSignalUrl(endpoint: string | undefined, signal: "traces" | "metrics"): string | undefined;
22
+ export declare function resolveOtlpExtensionConfig(read?: EnvReader): ResolvedOtlpExtensionConfig;
21
23
  declare class OtlpTracingExporter implements TracingExporter {
22
24
  private sdkProvider;
23
- start(ctxConfig: Record<string, unknown>): Promise<void>;
25
+ private meterProvider;
26
+ private metricReader;
27
+ start(_ctxConfig: Record<string, unknown>): Promise<void>;
24
28
  export(_spans: SpanData[]): Promise<void>;
25
29
  shutdown(): Promise<void>;
26
30
  getProvider(): ShimTracerProvider;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/extensions/ext-observability-opentelemetry/src/index.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EACV,8BAA8B,EAC9B,qBAAqB,EACrB,QAAQ,EACR,eAAe,EAChB,MAAM,gDAAgD,CAAC;AAiBxD;;;GAGG;AACH,UAAU,kBAAkB;IAC1B,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACpD;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE;QACL,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC3C,CAAC;CACH;AAqDD,cAAM,mBAAoB,YAAW,eAAe;IAClD,OAAO,CAAC,WAAW,CAAoC;IAEjD,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAyCxD,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAU/B,WAAW,IAAI,kBAAkB;IAOjC,aAAa,IAAI;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAAG,IAAI;IAKzF,WAAW,IAAI;QAAE,aAAa,IAAI,OAAO,CAAC;QAAC,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAA;KAAE,GAAG,IAAI;CAOnF;AAED,cAAM,kCAAmC,YAAW,qBAAqB;IACvE,OAAO,CAAC,GAAG,CAAwB;IAE7B,UAAU,CAAC,OAAO,EAAE,8BAA8B,GAAG,OAAO,CAAC,OAAO,CAAC;IA0CrE,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAQhC;AAED;;;;;GAKG;AACH,QAAA,MAAM,gBAAgB,EAAE,gBAiCvB,CAAC;AAEF,eAAe,gBAAgB,CAAC;AAChC,OAAO,EAAE,kCAAkC,EAAE,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/extensions/ext-observability-opentelemetry/src/index.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EACV,8BAA8B,EAC9B,qBAAqB,EACrB,QAAQ,EACR,eAAe,EAChB,MAAM,gDAAgD,CAAC;AAmBxD;;;GAGG;AACH,UAAU,kBAAkB;IAC1B,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACpD;AAED,KAAK,SAAS,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;AAEtD,MAAM,WAAW,2BAA2B;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,2BAA2B,EAAE,MAAM,CAAC;CACrC;AAgCD,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,MAAM,EAAE,QAAQ,GAAG,SAAS,GAC3B,MAAM,GAAG,SAAS,CAKpB;AAED,wBAAgB,0BAA0B,CACxC,IAAI,GAAE,SAAmB,GACxB,2BAA2B,CAqB7B;AAED,cAAM,mBAAoB,YAAW,eAAe;IAClD,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,YAAY,CAA8C;IAE5D,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAsEzD,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB/B,WAAW,IAAI,kBAAkB;IAOjC,aAAa,IAAI;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAAG,IAAI;IAKzF,WAAW,IAAI;QAAE,aAAa,IAAI,OAAO,CAAC;QAAC,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAA;KAAE,GAAG,IAAI;CAOnF;AAED,cAAM,kCAAmC,YAAW,qBAAqB;IACvE,OAAO,CAAC,GAAG,CAAwB;IAE7B,UAAU,CAAC,OAAO,EAAE,8BAA8B,GAAG,OAAO,CAAC,OAAO,CAAC;IA0CrE,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAQhC;AAED;;;;;GAKG;AACH,QAAA,MAAM,gBAAgB,EAAE,gBAqCvB,CAAC;AAEF,eAAe,gBAAgB,CAAC;AAChC,OAAO,EAAE,kCAAkC,EAAE,mBAAmB,EAAE,CAAC"}
@@ -9,8 +9,7 @@
9
9
  * - `getProvider()`: returns the SDK TracerProvider for shim wiring
10
10
  * - `initialize(options)`: starts NodeSDK auto-instrumentation
11
11
  *
12
- * Configuration is read from `ctx.config` (see `OtlpExtConfig`) and falls
13
- * back to standard OTEL environment variables.
12
+ * Configuration is read from standard OTEL environment variables.
14
13
  *
15
14
  * @module extensions/ext-observability-opentelemetry
16
15
  */
@@ -20,6 +19,8 @@ import { getNodeAutoInstrumentations } from "@opentelemetry/auto-instrumentation
20
19
  import { W3CTraceContextPropagator } from "@opentelemetry/core";
21
20
  import { AsyncLocalStorageContextManager } from "@opentelemetry/context-async-hooks";
22
21
  import { NodeSDK } from "@opentelemetry/sdk-node";
22
+ import { OTLPMetricExporter } from "@opentelemetry/exporter-metrics-otlp-http";
23
+ import { MeterProvider, PeriodicExportingMetricReader } from "@opentelemetry/sdk-metrics";
23
24
  import { BasicTracerProvider, BatchSpanProcessor, ParentBasedSampler, TraceIdRatioBasedSampler, } from "@opentelemetry/sdk-trace-base";
24
25
  import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
25
26
  import { resourceFromAttributes } from "@opentelemetry/resources";
@@ -52,50 +53,86 @@ function parseHeaders(headerInput) {
52
53
  }
53
54
  return result;
54
55
  }
55
- function resolveConfig(ctxConfig) {
56
- const otelCfg = ctxConfig.otel ?? {};
57
- const enabled = readEnv("OTEL_TRACES_ENABLED") === "true";
58
- const serviceName = otelCfg.serviceName ?? readEnv("OTEL_SERVICE_NAME") ?? "veryfront";
59
- const serviceVersion = otelCfg.serviceVersion ?? "0.1.0";
60
- const endpoint = otelCfg.endpoint ??
61
- readEnv("OTEL_EXPORTER_OTLP_ENDPOINT") ??
62
- "";
63
- const headersRaw = otelCfg.headers ?? readEnv("OTEL_EXPORTER_OTLP_HEADERS");
64
- const headers = parseHeaders(headersRaw);
65
- return { enabled, serviceName, serviceVersion, endpoint, headers };
56
+ export function resolveOtlpSignalUrl(endpoint, signal) {
57
+ if (!endpoint)
58
+ return undefined;
59
+ const trimmed = endpoint.replace(/\/$/, "");
60
+ const suffix = `/v1/${signal}`;
61
+ return trimmed.endsWith(suffix) ? trimmed : `${trimmed}${suffix}`;
62
+ }
63
+ export function resolveOtlpExtensionConfig(read = readEnv) {
64
+ const endpoint = read("OTEL_EXPORTER_OTLP_ENDPOINT");
65
+ const tracesEndpoint = read("OTEL_EXPORTER_OTLP_TRACES_ENDPOINT") ?? endpoint;
66
+ const metricsEndpoint = read("OTEL_EXPORTER_OTLP_METRICS_ENDPOINT") ?? endpoint;
67
+ const metricsExportIntervalMillis = Number.parseInt(read("OTEL_METRIC_EXPORT_INTERVAL") ?? "60000", 10);
68
+ return {
69
+ serviceName: read("OTEL_SERVICE_NAME") ?? "veryfront",
70
+ serviceVersion: "0.1.0",
71
+ headers: parseHeaders(read("OTEL_EXPORTER_OTLP_HEADERS")),
72
+ tracesEnabled: read("OTEL_TRACES_ENABLED") === "true",
73
+ metricsEnabled: read("OTEL_METRICS_ENABLED") === "true",
74
+ tracesUrl: resolveOtlpSignalUrl(tracesEndpoint, "traces"),
75
+ metricsUrl: resolveOtlpSignalUrl(metricsEndpoint, "metrics"),
76
+ metricsExportIntervalMillis: Number.isFinite(metricsExportIntervalMillis)
77
+ ? metricsExportIntervalMillis
78
+ : 60_000,
79
+ };
66
80
  }
67
81
  class OtlpTracingExporter {
68
82
  sdkProvider = null;
69
- async start(ctxConfig) {
70
- const cfg = resolveConfig(ctxConfig);
83
+ meterProvider = null;
84
+ metricReader = null;
85
+ async start(_ctxConfig) {
86
+ const cfg = resolveOtlpExtensionConfig(readEnv);
71
87
  // Honor OTEL_TRACES_ENABLED: when unset/false, skip exporter wiring so
72
88
  // deployments opting out never create OTLP traffic or set globals.
73
- if (!cfg.enabled)
89
+ if (!cfg.tracesEnabled && !cfg.metricsEnabled)
74
90
  return;
75
91
  const resource = resourceFromAttributes({
76
92
  [ATTR_SERVICE_NAME]: cfg.serviceName,
77
93
  [ATTR_SERVICE_VERSION]: cfg.serviceVersion,
78
94
  });
79
- const endpointBase = cfg.endpoint.replace(/\/$/, "");
80
- const exporter = new OTLPTraceExporter({
81
- url: endpointBase ? `${endpointBase}/v1/traces` : undefined,
82
- headers: cfg.headers,
83
- });
84
- const provider = new BasicTracerProvider({
85
- resource,
86
- spanProcessors: [new BatchSpanProcessor(exporter)],
87
- });
88
- // Wire OTel SDK globals so the real API delegates to this provider.
89
- // The shim also gets wired separately in bootstrap.ts via getProvider().
90
- trace.setGlobalTracerProvider(provider);
91
- const contextManager = new AsyncLocalStorageContextManager();
92
- contextManager.enable();
93
- const propagator = new W3CTraceContextPropagator();
94
- // Set propagator via OTel API (import is available in this extension).
95
- const { propagation, context: otelContext } = await import("@opentelemetry/api");
96
- propagation.setGlobalPropagator(propagator);
97
- otelContext.setGlobalContextManager(contextManager);
98
- this.sdkProvider = provider;
95
+ if (cfg.tracesEnabled) {
96
+ if (!cfg.tracesUrl) {
97
+ throw new Error("OTEL_TRACES_ENABLED=true requires OTEL_EXPORTER_OTLP_ENDPOINT or OTEL_EXPORTER_OTLP_TRACES_ENDPOINT");
98
+ }
99
+ const exporter = new OTLPTraceExporter({
100
+ url: cfg.tracesUrl,
101
+ headers: cfg.headers,
102
+ });
103
+ const provider = new BasicTracerProvider({
104
+ resource,
105
+ spanProcessors: [new BatchSpanProcessor(exporter)],
106
+ });
107
+ // Wire OTel SDK globals so the real API delegates to this provider.
108
+ // The shim also gets wired separately in bootstrap.ts via getProvider().
109
+ trace.setGlobalTracerProvider(provider);
110
+ const contextManager = new AsyncLocalStorageContextManager();
111
+ contextManager.enable();
112
+ const propagator = new W3CTraceContextPropagator();
113
+ // Set propagator via OTel API (import is available in this extension).
114
+ const { propagation, context: otelContext } = await import("@opentelemetry/api");
115
+ propagation.setGlobalPropagator(propagator);
116
+ otelContext.setGlobalContextManager(contextManager);
117
+ this.sdkProvider = provider;
118
+ }
119
+ if (cfg.metricsEnabled) {
120
+ if (!cfg.metricsUrl) {
121
+ throw new Error("OTEL_METRICS_ENABLED=true requires OTEL_EXPORTER_OTLP_ENDPOINT or OTEL_EXPORTER_OTLP_METRICS_ENDPOINT");
122
+ }
123
+ this.metricReader = new PeriodicExportingMetricReader({
124
+ exporter: new OTLPMetricExporter({
125
+ url: cfg.metricsUrl,
126
+ headers: cfg.headers,
127
+ }),
128
+ exportIntervalMillis: cfg.metricsExportIntervalMillis,
129
+ });
130
+ this.meterProvider = new MeterProvider({
131
+ resource,
132
+ readers: [this.metricReader],
133
+ });
134
+ metrics.setGlobalMeterProvider(this.meterProvider);
135
+ }
99
136
  }
100
137
  // eslint-disable-next-line require-await
101
138
  async export(_spans) {
@@ -103,6 +140,15 @@ class OtlpTracingExporter {
103
140
  // Callers that want to push custom SpanData batches can extend this.
104
141
  }
105
142
  async shutdown() {
143
+ if (this.meterProvider) {
144
+ try {
145
+ await this.meterProvider.shutdown();
146
+ }
147
+ finally {
148
+ this.meterProvider = null;
149
+ this.metricReader = null;
150
+ }
151
+ }
106
152
  if (this.sdkProvider) {
107
153
  try {
108
154
  await this.sdkProvider.shutdown();
@@ -202,9 +248,13 @@ const extOpenTelemetry = () => {
202
248
  type: "env:read",
203
249
  keys: [
204
250
  "OTEL_EXPORTER_OTLP_ENDPOINT",
251
+ "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT",
252
+ "OTEL_EXPORTER_OTLP_METRICS_ENDPOINT",
205
253
  "OTEL_EXPORTER_OTLP_HEADERS",
206
254
  "OTEL_SERVICE_NAME",
207
255
  "OTEL_TRACES_ENABLED",
256
+ "OTEL_METRICS_ENABLED",
257
+ "OTEL_METRIC_EXPORT_INTERVAL",
208
258
  ],
209
259
  },
210
260
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"client-profile.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/client-profile.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAEpE,8CAA8C;AAC9C,eAAO,MAAM,0BAA0B,gEAEtC,CAAC;AAEF,oDAAoD;AACpD,eAAO,MAAM,gCAAgC,gEAS5C,CAAC;AAEF,iDAAiD;AACjD,eAAO,MAAM,6BAA6B;;;;;GAOzC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,0DAAyC,CAAC;AAC9E;;GAEG;AACH,eAAO,MAAM,6BAA6B,0DAA+C,CAAC;AAC1F;;GAEG;AACH,eAAO,MAAM,0BAA0B;;;;;GAA4C,CAAC;AAEpF,mDAAmD;AACnD,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,0BAA0B,CAAC,CAAC,CAAC;AAC3F,yDAAyD;AACzD,MAAM,MAAM,uBAAuB,GAAG,WAAW,CAC/C,UAAU,CAAC,OAAO,gCAAgC,CAAC,CACpD,CAAC;AACF,sDAAsD;AACtD,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,6BAA6B,CAAC,CAAC,CAAC;AAiDjG,uCAAuC;AACvC,wBAAgB,2BAA2B,CACzC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAClD,oBAAoB,GAAG,IAAI,CA4B7B;AAED,uCAAuC;AACvC,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,oBAAoB,GAAG,IAAI,GAAG,SAAS,GACrD,OAAO,CAUT"}
1
+ {"version":3,"file":"client-profile.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/client-profile.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAEpE,8CAA8C;AAC9C,eAAO,MAAM,0BAA0B,gEAEtC,CAAC;AAEF,oDAAoD;AACpD,eAAO,MAAM,gCAAgC,gEAU5C,CAAC;AAEF,iDAAiD;AACjD,eAAO,MAAM,6BAA6B;;;;;GAOzC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,0DAAyC,CAAC;AAC9E;;GAEG;AACH,eAAO,MAAM,6BAA6B,0DAA+C,CAAC;AAC1F;;GAEG;AACH,eAAO,MAAM,0BAA0B;;;;;GAA4C,CAAC;AAEpF,mDAAmD;AACnD,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,0BAA0B,CAAC,CAAC,CAAC;AAC3F,yDAAyD;AACzD,MAAM,MAAM,uBAAuB,GAAG,WAAW,CAC/C,UAAU,CAAC,OAAO,gCAAgC,CAAC,CACpD,CAAC;AACF,sDAAsD;AACtD,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,6BAA6B,CAAC,CAAC,CAAC;AAkDjG,uCAAuC;AACvC,wBAAgB,2BAA2B,CACzC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAClD,oBAAoB,GAAG,IAAI,CA4B7B;AAED,uCAAuC;AACvC,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,oBAAoB,GAAG,IAAI,GAAG,SAAS,GACrD,OAAO,CAUT"}
@@ -9,6 +9,7 @@ export const getRuntimeClientCapabilitySchema = defineSchema((v) => v.enum([
9
9
  "project_switching",
10
10
  "project.evals.read",
11
11
  "project.evals.write",
12
+ "project.evals.run",
12
13
  ]));
13
14
  /** Zod schema for get runtime client profile. */
14
15
  export const getRuntimeClientProfileSchema = defineSchema((v) => v.object({
@@ -53,6 +54,7 @@ const FIRST_PARTY_CLIENTS = {
53
54
  "project_switching",
54
55
  "project.evals.read",
55
56
  "project.evals.write",
57
+ "project.evals.run",
56
58
  ],
57
59
  },
58
60
  "veryfront-cli": {
@@ -2,6 +2,7 @@ export interface EnvironmentConfig {
2
2
  nodeEnv: "development" | "production" | "test" | string;
3
3
  veryfrontEnv: string;
4
4
  veryfrontMode: string;
5
+ proxyMode: boolean;
5
6
  debug: boolean;
6
7
  ci: boolean;
7
8
  denoTesting: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"environment-config.d.ts","sourceRoot":"","sources":["../../../src/src/config/environment-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"environment-config.d.ts","sourceRoot":"","sources":["../../../src/src/config/environment-config.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import { getEnv } from "../platform/compat/process.js";
1
+ import { getEnv, getHostEnv } from "../platform/compat/process.js";
2
+ import { getHostTelemetryEnv } from "../observability/tracing/telemetry-env.js";
2
3
  import { isTruthyEnvValue } from "../utils/constants/env.js";
3
4
  import { logger } from "../utils/logger/logger.js";
4
5
  import { hasEnvLoaded } from "../utils/env-loader.js";
@@ -32,6 +33,7 @@ function readEnvSnapshot() {
32
33
  nodeEnv,
33
34
  veryfrontEnv,
34
35
  veryfrontMode: getEnv("VERYFRONT_MODE") ?? "development",
36
+ proxyMode: getHostEnv("PROXY_MODE") === "1",
35
37
  debug: isTruthyEnvValue(getEnv("VERYFRONT_DEBUG")),
36
38
  ci: getEnv("CI") === "1",
37
39
  denoTesting: getEnv("DENO_TESTING") === "1",
@@ -70,16 +72,16 @@ function readEnvSnapshot() {
70
72
  ? parseNumber(extensionSetupTimeoutRaw, 30_000)
71
73
  : undefined,
72
74
  ssrMaxConcurrentTransforms: parseNumber(getEnv("SSR_MAX_CONCURRENT_TRANSFORMS"), DEFAULTS.ssrMaxConcurrentTransforms),
73
- otelEnabled: isTruthyEnvValue(getEnv("VERYFRONT_OTEL")) ||
74
- isTruthyEnvValue(getEnv("OTEL_TRACES_ENABLED")),
75
- otelServiceName: getEnv("OTEL_SERVICE_NAME") || undefined,
76
- otelEndpoint: getEnv("OTEL_EXPORTER_OTLP_ENDPOINT") || undefined,
77
- otelTracesEndpoint: getEnv("OTEL_EXPORTER_OTLP_TRACES_ENDPOINT") || undefined,
78
- otelMetricsEndpoint: getEnv("OTEL_EXPORTER_OTLP_METRICS_ENDPOINT") || undefined,
79
- otelTracesExporter: getEnv("OTEL_TRACES_EXPORTER") || undefined,
80
- otelMetricsExporter: getEnv("OTEL_METRICS_EXPORTER") || undefined,
81
- otelHeaders: getEnv("OTEL_EXPORTER_OTLP_HEADERS") || undefined,
82
- otelMetricsEnabled: isTruthyEnvValue(getEnv("OTEL_METRICS_ENABLED")),
75
+ otelEnabled: isTruthyEnvValue(getHostTelemetryEnv("VERYFRONT_OTEL")) ||
76
+ isTruthyEnvValue(getHostTelemetryEnv("OTEL_TRACES_ENABLED")),
77
+ otelServiceName: getHostTelemetryEnv("OTEL_SERVICE_NAME") || undefined,
78
+ otelEndpoint: getHostTelemetryEnv("OTEL_EXPORTER_OTLP_ENDPOINT") || undefined,
79
+ otelTracesEndpoint: getHostTelemetryEnv("OTEL_EXPORTER_OTLP_TRACES_ENDPOINT") || undefined,
80
+ otelMetricsEndpoint: getHostTelemetryEnv("OTEL_EXPORTER_OTLP_METRICS_ENDPOINT") || undefined,
81
+ otelTracesExporter: getHostTelemetryEnv("OTEL_TRACES_EXPORTER") || undefined,
82
+ otelMetricsExporter: getHostTelemetryEnv("OTEL_METRICS_EXPORTER") || undefined,
83
+ otelHeaders: getHostTelemetryEnv("OTEL_EXPORTER_OTLP_HEADERS") || undefined,
84
+ otelMetricsEnabled: isTruthyEnvValue(getHostTelemetryEnv("OTEL_METRICS_ENABLED")),
83
85
  openaiApiKey: getEnv("OPENAI_API_KEY") || undefined,
84
86
  openaiBaseUrl: getEnv("OPENAI_BASE_URL") || undefined,
85
87
  anthropicApiKey: getEnv("ANTHROPIC_API_KEY") || undefined,
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-config.d.ts","sourceRoot":"","sources":["../../../src/src/config/runtime-config.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAMjE;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,uCAAuC;IACvC,GAAG,EAAE,iBAAiB,CAAC;IAEvB,uCAAuC;IACvC,YAAY,EAAE,OAAO,CAAC;IAEtB,wCAAwC;IACxC,aAAa,EAAE,OAAO,CAAC;IAEvB,mDAAmD;IACnD,MAAM,EAAE,OAAO,CAAC;IAEhB,wCAAwC;IACxC,IAAI,EAAE,OAAO,CAAC;IAEd,oCAAoC;IACpC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,aAAc,SAAQ,eAAe;IACpD;;;OAGG;IACH,OAAO,EAAE,WAAW,CAAC;CACtB;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,OAAO,CAAC,eAAe,CA4BnD,CAAC;AAsDF,wBAAgB,mBAAmB,CACjC,UAAU,GAAE,eAAoB,EAChC,GAAG,GAAE,iBAA0C,GAC9C,aAAa,CAOf;AAQD,wBAAgB,iBAAiB,CAAC,UAAU,GAAE,eAAoB,GAAG,aAAa,CAKjF;AAED,wBAAgB,gBAAgB,IAAI,aAAa,CAEhD;AAED,wBAAgB,0BAA0B,IAAI,OAAO,CAEpD;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,eAAe,GAAG,aAAa,CAG9E;AAcD,wBAAgB,gBAAgB,CAC9B,SAAS,GAAE,OAAO,CAAC,eAAe,CAAC,GAAG;IACpC,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAA;KAAE,CAAC;CAC3C,GACL,aAAa,CAOf;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,GAC7C,IAAI,CAON;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}
1
+ {"version":3,"file":"runtime-config.d.ts","sourceRoot":"","sources":["../../../src/src/config/runtime-config.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAMjE;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,uCAAuC;IACvC,GAAG,EAAE,iBAAiB,CAAC;IAEvB,uCAAuC;IACvC,YAAY,EAAE,OAAO,CAAC;IAEtB,wCAAwC;IACxC,aAAa,EAAE,OAAO,CAAC;IAEvB,mDAAmD;IACnD,MAAM,EAAE,OAAO,CAAC;IAEhB,wCAAwC;IACxC,IAAI,EAAE,OAAO,CAAC;IAEd,oCAAoC;IACpC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,aAAc,SAAQ,eAAe;IACpD;;;OAGG;IACH,OAAO,EAAE,WAAW,CAAC;CACtB;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,OAAO,CAAC,eAAe,CA4BnD,CAAC;AA2EF,wBAAgB,mBAAmB,CACjC,UAAU,GAAE,eAAoB,EAChC,GAAG,GAAE,iBAA0C,GAC9C,aAAa,CAOf;AAQD,wBAAgB,iBAAiB,CAAC,UAAU,GAAE,eAAoB,GAAG,aAAa,CAKjF;AAED,wBAAgB,gBAAgB,IAAI,aAAa,CAEhD;AAED,wBAAgB,0BAA0B,IAAI,OAAO,CAEpD;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,eAAe,GAAG,aAAa,CAG9E;AAcD,wBAAgB,gBAAgB,CAC9B,SAAS,GAAE,OAAO,CAAC,eAAe,CAAC,GAAG;IACpC,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAA;KAAE,CAAC;CAC3C,GACL,aAAa,CAOf;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,GAC7C,IAAI,CAON;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}
@@ -53,6 +53,34 @@ function createRuntimeInfo(env) {
53
53
  isDebug: env.debug,
54
54
  };
55
55
  }
56
+ function mergeObservabilityConfig(fileConfig, env) {
57
+ if (env.proxyMode) {
58
+ return {
59
+ tracing: {
60
+ enabled: env.otelEnabled,
61
+ endpoint: env.otelEndpoint,
62
+ serviceName: env.otelServiceName,
63
+ },
64
+ metrics: {
65
+ enabled: env.otelMetricsEnabled,
66
+ endpoint: env.otelMetricsEndpoint,
67
+ },
68
+ };
69
+ }
70
+ return {
71
+ tracing: {
72
+ ...fileConfig.observability?.tracing,
73
+ enabled: env.otelEnabled || fileConfig.observability?.tracing?.enabled,
74
+ endpoint: env.otelEndpoint || fileConfig.observability?.tracing?.endpoint,
75
+ serviceName: env.otelServiceName || fileConfig.observability?.tracing?.serviceName,
76
+ },
77
+ metrics: {
78
+ ...fileConfig.observability?.metrics,
79
+ enabled: env.otelMetricsEnabled || fileConfig.observability?.metrics?.enabled,
80
+ endpoint: env.otelMetricsEndpoint || fileConfig.observability?.metrics?.endpoint,
81
+ },
82
+ };
83
+ }
56
84
  function mergeConfigWithEnv(fileConfig, env) {
57
85
  return {
58
86
  ...fileConfig,
@@ -73,19 +101,7 @@ function mergeConfigWithEnv(fileConfig, env) {
73
101
  ...fileConfig.dev,
74
102
  port: env.port || fileConfig.dev?.port,
75
103
  },
76
- observability: {
77
- tracing: {
78
- ...fileConfig.observability?.tracing,
79
- enabled: env.otelEnabled || fileConfig.observability?.tracing?.enabled,
80
- endpoint: env.otelEndpoint || fileConfig.observability?.tracing?.endpoint,
81
- serviceName: env.otelServiceName || fileConfig.observability?.tracing?.serviceName,
82
- },
83
- metrics: {
84
- ...fileConfig.observability?.metrics,
85
- enabled: env.otelMetricsEnabled || fileConfig.observability?.metrics?.enabled,
86
- endpoint: env.otelMetricsEndpoint || fileConfig.observability?.metrics?.endpoint,
87
- },
88
- },
104
+ observability: mergeObservabilityConfig(fileConfig, env),
89
105
  };
90
106
  }
91
107
  export function createRuntimeConfig(fileConfig = {}, env = getEnvironmentConfig()) {
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/src/observability/metrics/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAMhD,eAAO,MAAM,cAAc,EAAE,aAM5B,CAAC;AAoBF,wBAAgB,UAAU,CACxB,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,EAC9B,OAAO,CAAC,EAAE,cAAc,GACvB,aAAa,CA8Cf;AAED,wBAAgB,cAAc,IAAI;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,IAAI,CAOP"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/src/observability/metrics/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAMhD,eAAO,MAAM,cAAc,EAAE,aAM5B,CAAC;AAoBF,wBAAgB,UAAU,CACxB,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,EAC9B,OAAO,CAAC,EAAE,cAAc,GACvB,aAAa,CA6Cf;AAED,wBAAgB,cAAc,IAAI;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,IAAI,CAOP"}
@@ -1,5 +1,5 @@
1
1
  import { memoryUsage as platformMemoryUsage } from "../../platform/compat/process.js";
2
- import { getOtelMetricsConfig } from "../../config/env.js";
2
+ import { getHostTelemetryEnv } from "../tracing/telemetry-env.js";
3
3
  const DEFAULT_METRICS_COLLECT_INTERVAL_MS = 60000;
4
4
  export const DEFAULT_CONFIG = {
5
5
  enabled: false,
@@ -43,13 +43,12 @@ export function loadConfig(config, adapter) {
43
43
  return finalConfig;
44
44
  }
45
45
  try {
46
- const metricsConfig = getOtelMetricsConfig();
47
46
  applyEnvConfig({
48
- enabledFlag: metricsConfig.enabledFlag,
49
- veryfrontFlag: metricsConfig.veryfrontFlag,
50
- endpoint: metricsConfig.endpoint,
51
- metricsEndpoint: metricsConfig.metricsEndpoint,
52
- exporter: metricsConfig.exporter,
47
+ enabledFlag: getHostTelemetryEnv("OTEL_METRICS_ENABLED"),
48
+ veryfrontFlag: getHostTelemetryEnv("VERYFRONT_OTEL"),
49
+ endpoint: getHostTelemetryEnv("OTEL_EXPORTER_OTLP_ENDPOINT"),
50
+ metricsEndpoint: getHostTelemetryEnv("OTEL_EXPORTER_OTLP_METRICS_ENDPOINT"),
51
+ exporter: getHostTelemetryEnv("OTEL_METRICS_EXPORTER"),
53
52
  });
54
53
  }
55
54
  catch (_) {
@@ -1 +1 @@
1
- {"version":3,"file":"otlp-setup.d.ts","sourceRoot":"","sources":["../../../../src/src/observability/tracing/otlp-setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;4BAY4B;AAC5B,OAAO,4BAA4B,CAAC;AAMpC,OAAO,EACL,KAAK,OAAO,EAOZ,KAAK,IAAI,EAKV,MAAM,eAAe,CAAC;AAIvB,wCAAwC;AACxC,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,EAAE,OAAO,CAAC;CAClB;AA6DD,sCAAsC;AACtC,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CASpD;AAED,qCAAqC;AACrC,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAGlD;AAED,4CAA4C;AAC5C,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED,0DAA0D;AAC1D,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CAE5D;AAcD,oBAAoB;AACpB,wBAAsB,QAAQ,CAAC,CAAC,EAC9B,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GACrD,OAAO,CAAC,CAAC,CAAC,CAsBZ;AAED,yBAAyB;AACzB,wBAAgB,YAAY,CAAC,CAAC,EAC5B,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,CAAC,EACX,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GACrD,CAAC,CAoBH;AAED,2BAA2B;AAC3B,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAKpE;AAED,0BAA0B;AAC1B,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAIpD;AAED,0BAA0B;AAC1B,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,aAAa,CAAC,EAAE,OAAO,GACtB;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CASzC;AAED,yCAAyC;AACzC,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAoBpF;AAED,4BAA4B;AAC5B,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,OAAO,EACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GACpD,IAAI,CAKN;AAED,mCAAmC;AACnC,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GACpD,IAAI,CAKN;AAED,wBAAwB;AACxB,wBAAsB,WAAW,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAE3F;AAED,6BAA6B;AAC7B,wBAAgB,eAAe,IAAI;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAMvE"}
1
+ {"version":3,"file":"otlp-setup.d.ts","sourceRoot":"","sources":["../../../../src/src/observability/tracing/otlp-setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;4BAY4B;AAC5B,OAAO,4BAA4B,CAAC;AAKpC,OAAO,EACL,KAAK,OAAO,EAOZ,KAAK,IAAI,EAKV,MAAM,eAAe,CAAC;AAKvB,wCAAwC;AACxC,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,EAAE,OAAO,CAAC;CAClB;AA6DD,sCAAsC;AACtC,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CASpD;AAED,qCAAqC;AACrC,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAGlD;AAED,4CAA4C;AAC5C,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED,0DAA0D;AAC1D,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CAE5D;AAcD,oBAAoB;AACpB,wBAAsB,QAAQ,CAAC,CAAC,EAC9B,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GACrD,OAAO,CAAC,CAAC,CAAC,CAsBZ;AAED,yBAAyB;AACzB,wBAAgB,YAAY,CAAC,CAAC,EAC5B,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,CAAC,EACX,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GACrD,CAAC,CAoBH;AAED,2BAA2B;AAC3B,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAKpE;AAED,0BAA0B;AAC1B,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAIpD;AAED,0BAA0B;AAC1B,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,aAAa,CAAC,EAAE,OAAO,GACtB;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CASzC;AAED,yCAAyC;AACzC,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAoBpF;AAED,4BAA4B;AAC5B,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,OAAO,EACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GACpD,IAAI,CAKN;AAED,mCAAmC;AACnC,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GACpD,IAAI,CAKN;AAED,wBAAwB;AACxB,wBAAsB,WAAW,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAE3F;AAED,6BAA6B;AAC7B,wBAAgB,eAAe,IAAI;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAMvE"}
@@ -12,10 +12,10 @@
12
12
  * - OTEL_EXPORTER_OTLP_HEADERS: Auth headers
13
13
  **************************/
14
14
  import "../../../_dnt.polyfills.js";
15
- import { getEnv } from "../../platform/compat/process.js";
16
15
  import { isTruthyEnvValue } from "../../utils/constants/env.js";
17
16
  import { serverLogger } from "../../utils/logger/logger.js";
18
17
  import { context as shimContext, defaultTextMapGetter, defaultTextMapSetter, getTracer, getTracerProviderRevision, propagation as shimPropagation, SpanKind, SpanStatusCode, trace as shimTrace, } from "./api-shim.js";
18
+ import { getHostTelemetryEnv } from "./telemetry-env.js";
19
19
  const logger = serverLogger.component("otel");
20
20
  function parseHeaders(headerString) {
21
21
  if (!headerString)
@@ -39,11 +39,11 @@ function getConfig() {
39
39
  // bootstrap has loaded .env files. Read tracing env directly here so no-op
40
40
  // spans do not force early EnvironmentConfig initialization.
41
41
  return {
42
- enabled: isTruthyEnvValue(getEnv("VERYFRONT_OTEL")) ||
43
- isTruthyEnvValue(getEnv("OTEL_TRACES_ENABLED")),
44
- serviceName: getEnv("OTEL_SERVICE_NAME") || "veryfront",
45
- endpoint: getEnv("OTEL_EXPORTER_OTLP_ENDPOINT") || "",
46
- headers: parseHeaders(getEnv("OTEL_EXPORTER_OTLP_HEADERS")),
42
+ enabled: isTruthyEnvValue(getHostTelemetryEnv("VERYFRONT_OTEL")) ||
43
+ isTruthyEnvValue(getHostTelemetryEnv("OTEL_TRACES_ENABLED")),
44
+ serviceName: getHostTelemetryEnv("OTEL_SERVICE_NAME") || "veryfront",
45
+ endpoint: getHostTelemetryEnv("OTEL_EXPORTER_OTLP_ENDPOINT") || "",
46
+ headers: parseHeaders(getHostTelemetryEnv("OTEL_EXPORTER_OTLP_HEADERS")),
47
47
  };
48
48
  }
49
49
  let cachedTracingRuntime;
@@ -0,0 +1,3 @@
1
+ export declare function getHostTelemetryEnv(key: string): string | undefined;
2
+ export declare function isReservedSharedRuntimeTelemetryEnvKey(key: string): boolean;
3
+ //# sourceMappingURL=telemetry-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-env.d.ts","sourceRoot":"","sources":["../../../../src/src/observability/tracing/telemetry-env.ts"],"names":[],"mappings":"AAMA,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEnE;AAED,wBAAgB,sCAAsC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE3E"}
@@ -0,0 +1,10 @@
1
+ import { getHostEnv } from "../../platform/compat/process.js";
2
+ const RESERVED_SHARED_RUNTIME_TELEMETRY_ENV_KEYS = new Set([
3
+ "VERYFRONT_OTEL",
4
+ ]);
5
+ export function getHostTelemetryEnv(key) {
6
+ return getHostEnv(key);
7
+ }
8
+ export function isReservedSharedRuntimeTelemetryEnvKey(key) {
9
+ return key.startsWith("OTEL_") || RESERVED_SHARED_RUNTIME_TELEMETRY_ENV_KEYS.has(key);
10
+ }
@@ -8,7 +8,7 @@
8
8
  * OTEL_EXPORTER_OTLP_HEADERS
9
9
  */
10
10
  import { context as shimContext, defaultTextMapGetter, defaultTextMapSetter, propagation as shimPropagation, SpanKind, SpanStatusCode, trace as shimTrace, } from "../observability/tracing/api-shim.js";
11
- import { getEnv } from "./env.js";
11
+ import { getHostTelemetryEnv } from "../observability/tracing/telemetry-env.js";
12
12
  import { proxyLogger } from "./logger.js";
13
13
  let initialized = false;
14
14
  let tracer = null;
@@ -26,10 +26,10 @@ function parseHeaders(headerString) {
26
26
  }
27
27
  function getConfig() {
28
28
  return {
29
- enabled: getEnv("OTEL_TRACES_ENABLED") === "true",
30
- serviceName: getEnv("OTEL_SERVICE_NAME") || "veryfront-proxy",
31
- endpoint: getEnv("OTEL_EXPORTER_OTLP_ENDPOINT") || "",
32
- headers: parseHeaders(getEnv("OTEL_EXPORTER_OTLP_HEADERS")),
29
+ enabled: getHostTelemetryEnv("OTEL_TRACES_ENABLED") === "true",
30
+ serviceName: getHostTelemetryEnv("OTEL_SERVICE_NAME") || "veryfront-proxy",
31
+ endpoint: getHostTelemetryEnv("OTEL_EXPORTER_OTLP_ENDPOINT") || "",
32
+ headers: parseHeaders(getHostTelemetryEnv("OTEL_EXPORTER_OTLP_HEADERS")),
33
33
  };
34
34
  }
35
35
  export async function initializeOTLPWithApis() {
@@ -1 +1 @@
1
- {"version":3,"file":"agent-stream.handler.d.ts","sourceRoot":"","sources":["../../../../../src/src/server/handlers/request/agent-stream.handler.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AACpF,OAAO,EAEL,KAAK,+BAA+B,EACrC,MAAM,wCAAwC,CAAC;AAOhD,OAAO,EACL,4BAA4B,EAE7B,MAAM,2CAA2C,CAAC;AAwBnD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAmB,aAAa,EAAE,MAAM,aAAa,CAAC;AAYnG,MAAM,WAAW,sBACf,SAAQ,yBAAyB,EAAE,+BAA+B;IAClE,4BAA4B,CAAC,EAAE,OAAO,4BAA4B,CAAC;CACpE;AAgZD,qBAAa,kBAAmB,SAAQ,WAAW;IASrC,OAAO,CAAC,QAAQ,CAAC,IAAI;IARjC,QAAQ,EAAE,eAAe,CAMvB;gBAE2B,IAAI,GAAE,sBAAoC;IAIvE,OAAO,CAAC,sBAAsB;IAwBxB,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;CAoLxE"}
1
+ {"version":3,"file":"agent-stream.handler.d.ts","sourceRoot":"","sources":["../../../../../src/src/server/handlers/request/agent-stream.handler.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AACpF,OAAO,EAEL,KAAK,+BAA+B,EACrC,MAAM,wCAAwC,CAAC;AAOhD,OAAO,EACL,4BAA4B,EAE7B,MAAM,2CAA2C,CAAC;AAwBnD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAmB,aAAa,EAAE,MAAM,aAAa,CAAC;AAanG,MAAM,WAAW,sBACf,SAAQ,yBAAyB,EAAE,+BAA+B;IAClE,4BAA4B,CAAC,EAAE,OAAO,4BAA4B,CAAC;CACpE;AAgZD,qBAAa,kBAAmB,SAAQ,WAAW;IASrC,OAAO,CAAC,QAAQ,CAAC,IAAI;IARjC,QAAQ,EAAE,eAAe,CAMvB;gBAE2B,IAAI,GAAE,sBAAoC;IAIvE,OAAO,CAAC,sBAAsB;IAwBxB,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;CAoLxE"}
@@ -15,7 +15,7 @@ import { buildRuntimeShuttingDownResponse } from "./runtime-shutdown-response.js
15
15
  import { isServerShuttingDown } from "../../shutdown-state.js";
16
16
  import { getHostEnv } from "../../../platform/compat/process.js";
17
17
  import { serverLogger } from "../../../utils/index.js";
18
- import { EnvironmentVariableCache, fetchProjectEnvVars, runWithProjectEnv, } from "../../project-env/index.js";
18
+ import { EnvironmentVariableCache, fetchProjectEnvVars, filterSharedRuntimeProjectEnv, runWithProjectEnv, } from "../../project-env/index.js";
19
19
  const defaultDeps = {
20
20
  ...defaultChannelInvokeDeps,
21
21
  sessionManager: agentRunSessionManager,
@@ -233,7 +233,7 @@ function withVeryfrontStudioRemoteTools(input) {
233
233
  function buildAgentStreamEnv(input) {
234
234
  const apiUrl = getHostEnv("VERYFRONT_API_URL") ?? "https://api.veryfront.com";
235
235
  return {
236
- ...input.envVars,
236
+ ...filterSharedRuntimeProjectEnv(input.envVars),
237
237
  // Framework-owned values must override project env to keep request-scoped
238
238
  // credentials bound to trusted Veryfront endpoints and the current project.
239
239
  ...(input.proxyToken ? { VERYFRONT_API_TOKEN: input.proxyToken } : {}),
@@ -5,5 +5,6 @@
5
5
  */
6
6
  export { getProjectEnv, isProjectEnvActive, runWithProjectEnv } from "./storage.js";
7
7
  export { EnvironmentVariableCache } from "./cache.js";
8
+ export { filterSharedRuntimeProjectEnv } from "./reserved-env.js";
8
9
  export { fetchProjectEnvVars } from "./fetcher.js";
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/src/server/project-env/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACpF,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/src/server/project-env/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACpF,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC"}
@@ -5,4 +5,5 @@
5
5
  */
6
6
  export { getProjectEnv, isProjectEnvActive, runWithProjectEnv } from "./storage.js";
7
7
  export { EnvironmentVariableCache } from "./cache.js";
8
+ export { filterSharedRuntimeProjectEnv } from "./reserved-env.js";
8
9
  export { fetchProjectEnvVars } from "./fetcher.js";
@@ -0,0 +1,2 @@
1
+ export declare function filterSharedRuntimeProjectEnv(vars: Record<string, string>): Record<string, string>;
2
+ //# sourceMappingURL=reserved-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reserved-env.d.ts","sourceRoot":"","sources":["../../../../src/src/server/project-env/reserved-env.ts"],"names":[],"mappings":"AAEA,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAIxB"}
@@ -0,0 +1,4 @@
1
+ import { isReservedSharedRuntimeTelemetryEnvKey } from "../../observability/tracing/telemetry-env.js";
2
+ export function filterSharedRuntimeProjectEnv(vars) {
3
+ return Object.fromEntries(Object.entries(vars).filter(([key]) => !isReservedSharedRuntimeTelemetryEnvKey(key)));
4
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/src/server/runtime-handler/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAK7D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAmCpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAiErE,OAAO,EAAE,qBAAqB,EAAE,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAMtF,2CAA2C;AAC3C,eAAO,MAAM,aAAa,msBAmChB,CAAC;AAEX,6CAA6C;AAC7C,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,8CAA8C;IAC9C,SAAS,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IAClD,mDAAmD;IACnD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AA2CD;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,cAAc,EACvB,IAAI,GAAE,mBAAwB,GAC7B;IAAE,QAAQ,EAAE,aAAa,CAAC;IAAC,UAAU,EAAE,iBAAiB,CAAA;CAAE,CAuB5D;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,wEAAwE;IACxE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,oFAAoF;IACpF,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,sFAAsF;IACtF,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oFAAoF;IACpF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,8FAA8F;IAC9F,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uGAAuG;IACvG,kBAAkB,CAAC,EAAE,SAAS,GAAG,YAAY,CAAC;CAC/C;AAED,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,cAAc,EACvB,IAAI,GAAE,qBAAsC,GAC3C,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAscnE;AAGD,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/src/server/runtime-handler/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAK7D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAmCpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAkErE,OAAO,EAAE,qBAAqB,EAAE,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAMtF,2CAA2C;AAC3C,eAAO,MAAM,aAAa,msBAmChB,CAAC;AAEX,6CAA6C;AAC7C,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,8CAA8C;IAC9C,SAAS,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IAClD,mDAAmD;IACnD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AA2CD;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,cAAc,EACvB,IAAI,GAAE,mBAAwB,GAC7B;IAAE,QAAQ,EAAE,aAAa,CAAC;IAAC,UAAU,EAAE,iBAAiB,CAAA;CAAE,CAuB5D;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,wEAAwE;IACxE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,oFAAoF;IACpF,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,sFAAsF;IACtF,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oFAAoF;IACpF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,8FAA8F;IAC9F,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uGAAuG;IACvG,kBAAkB,CAAC,EAAE,SAAS,GAAG,YAAY,CAAC;CAC/C;AAED,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,cAAc,EACvB,IAAI,GAAE,qBAAsC,GAC3C,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAycnE;AAGD,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC"}
@@ -64,7 +64,7 @@ import { buildHandlerContext, buildMinimalContext } from "./handler-context-buil
64
64
  import { handleProjectsRequest, shouldHandleProjectsUI } from "./projects-handler.js";
65
65
  import { HTTP_GATEWAY_TIMEOUT, isLightweightPath, isMonitoringPath, isWebSocketPath, shouldSkipEnrichedContext, } from "./request-utils.js";
66
66
  import { withRequestTimeout } from "./timeout-manager.js";
67
- import { EnvironmentVariableCache, fetchProjectEnvVars, runWithProjectEnv, } from "../project-env/index.js";
67
+ import { EnvironmentVariableCache, fetchProjectEnvVars, filterSharedRuntimeProjectEnv, runWithProjectEnv, } from "../project-env/index.js";
68
68
  import { SCANNER_PATH_PATTERN } from "../../utils/constants/security.js";
69
69
  import { isProxyTrusted } from "../utils/proxy-trust.js";
70
70
  // Re-export from dedicated module for lightweight imports
@@ -463,7 +463,7 @@ export function createVeryfrontHandler(projectDir, adapter, opts = { projectDir
463
463
  const shouldIsolateEnv = !adapterRes.isLocalProject && !!reqCtx.token;
464
464
  const response = await withSpan(SpanNames.HANDLER_EXECUTE, () => profilePhase("handler.execute", () => {
465
465
  if (shouldIsolateEnv) {
466
- return runWithProjectEnv(envVarsForRequest, executeRoute);
466
+ return runWithProjectEnv(filterSharedRuntimeProjectEnv(envVarsForRequest), executeRoute);
467
467
  }
468
468
  return executeRoute();
469
469
  }), {
@@ -1,3 +1,3 @@
1
1
  /** Shared version value. */
2
- export declare const VERSION = "0.1.890";
2
+ export declare const VERSION = "0.1.892";
3
3
  //# sourceMappingURL=version-constant.d.ts.map
@@ -1,4 +1,4 @@
1
1
  // Keep in sync with deno.json version.
2
2
  // scripts/release.ts updates this constant during releases.
3
3
  /** Shared version value. */
4
- export const VERSION = "0.1.890";
4
+ export const VERSION = "0.1.892";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "veryfront",
3
- "version": "0.1.890",
3
+ "version": "0.1.892",
4
4
  "description": "The simplest way to build AI-powered apps",
5
5
  "keywords": [
6
6
  "react",
@@ -324,6 +324,8 @@
324
324
  "@babel/traverse": "7.29.0",
325
325
  "@babel/types": "7.29.0",
326
326
  "@mdx-js/mdx": "3.1.1",
327
+ "@opentelemetry/exporter-metrics-otlp-http": "0.219.0",
328
+ "@opentelemetry/sdk-metrics": "2.8.0",
327
329
  "@types/hast": "3.0.3",
328
330
  "@types/mdast": "4.0.3",
329
331
  "@types/unist": "3.0.2",