veryfront 0.1.890 → 0.1.891
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/cli/commands/eval/command-help.d.ts.map +1 -1
- package/esm/cli/commands/eval/command-help.js +6 -1
- package/esm/cli/commands/eval/command.d.ts +21 -0
- package/esm/cli/commands/eval/command.d.ts.map +1 -1
- package/esm/cli/commands/eval/command.js +46 -4
- package/esm/cli/commands/eval/handler.d.ts +2 -0
- package/esm/cli/commands/eval/handler.d.ts.map +1 -1
- package/esm/cli/commands/eval/handler.js +2 -0
- package/esm/deno.js +1 -1
- package/esm/extensions/ext-observability-opentelemetry/src/index.d.ts +15 -11
- package/esm/extensions/ext-observability-opentelemetry/src/index.d.ts.map +1 -1
- package/esm/extensions/ext-observability-opentelemetry/src/index.js +86 -36
- package/esm/src/config/environment-config.d.ts +1 -0
- package/esm/src/config/environment-config.d.ts.map +1 -1
- package/esm/src/config/environment-config.js +13 -11
- package/esm/src/config/runtime-config.d.ts.map +1 -1
- package/esm/src/config/runtime-config.js +29 -13
- package/esm/src/observability/metrics/config.d.ts.map +1 -1
- package/esm/src/observability/metrics/config.js +6 -7
- package/esm/src/observability/tracing/otlp-setup.d.ts.map +1 -1
- package/esm/src/observability/tracing/otlp-setup.js +6 -6
- package/esm/src/observability/tracing/telemetry-env.d.ts +3 -0
- package/esm/src/observability/tracing/telemetry-env.d.ts.map +1 -0
- package/esm/src/observability/tracing/telemetry-env.js +10 -0
- package/esm/src/proxy/tracing.js +5 -5
- package/esm/src/server/handlers/request/agent-stream.handler.d.ts.map +1 -1
- package/esm/src/server/handlers/request/agent-stream.handler.js +2 -2
- package/esm/src/server/project-env/index.d.ts +1 -0
- package/esm/src/server/project-env/index.d.ts.map +1 -1
- package/esm/src/server/project-env/index.js +1 -0
- package/esm/src/server/project-env/reserved-env.d.ts +2 -0
- package/esm/src/server/project-env/reserved-env.d.ts.map +1 -0
- package/esm/src/server/project-env/reserved-env.js +4 -0
- package/esm/src/server/runtime-handler/index.d.ts.map +1 -1
- package/esm/src/server/runtime-handler/index.js +2 -2
- package/esm/src/utils/version-constant.d.ts +1 -1
- package/esm/src/utils/version-constant.js +1 -1
- 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,
|
|
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
|
|
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;
|
|
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
|
|
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
|
@@ -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
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
|
-
|
|
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":"
|
|
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
|
|
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
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
const
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
const
|
|
64
|
-
const
|
|
65
|
-
|
|
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
|
-
|
|
70
|
-
|
|
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.
|
|
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
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
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":"environment-config.d.ts","sourceRoot":"","sources":["../../../src/src/config/environment-config.ts"],"names":[],"mappings":"
|
|
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(
|
|
74
|
-
isTruthyEnvValue(
|
|
75
|
-
otelServiceName:
|
|
76
|
-
otelEndpoint:
|
|
77
|
-
otelTracesEndpoint:
|
|
78
|
-
otelMetricsEndpoint:
|
|
79
|
-
otelTracesExporter:
|
|
80
|
-
otelMetricsExporter:
|
|
81
|
-
otelHeaders:
|
|
82
|
-
otelMetricsEnabled: isTruthyEnvValue(
|
|
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;
|
|
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,
|
|
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 {
|
|
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:
|
|
49
|
-
veryfrontFlag:
|
|
50
|
-
endpoint:
|
|
51
|
-
metricsEndpoint:
|
|
52
|
-
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;
|
|
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(
|
|
43
|
-
isTruthyEnvValue(
|
|
44
|
-
serviceName:
|
|
45
|
-
endpoint:
|
|
46
|
-
headers: parseHeaders(
|
|
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 @@
|
|
|
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
|
+
}
|
package/esm/src/proxy/tracing.js
CHANGED
|
@@ -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 {
|
|
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:
|
|
30
|
-
serviceName:
|
|
31
|
-
endpoint:
|
|
32
|
-
headers: parseHeaders(
|
|
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;
|
|
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"}
|
|
@@ -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;
|
|
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
|
}), {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "veryfront",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.891",
|
|
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",
|