veryfront 0.1.246 → 0.1.248
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/mcp/tools/project-tools.d.ts +1 -1
- package/esm/cli/mcp/tools/scaffold-tools.d.ts +2 -2
- package/esm/cli/shared/server-startup.d.ts.map +1 -1
- package/esm/cli/shared/server-startup.js +8 -0
- package/esm/deno.d.ts +0 -9
- package/esm/deno.js +5 -12
- package/esm/src/agent/durable.d.ts +67 -0
- package/esm/src/agent/durable.d.ts.map +1 -1
- package/esm/src/agent/durable.js +134 -0
- package/esm/src/agent/index.d.ts +1 -1
- package/esm/src/agent/index.d.ts.map +1 -1
- package/esm/src/agent/index.js +1 -1
- package/esm/src/embedding/upload-loader.d.ts +2 -2
- package/esm/src/embedding/upload-loader.d.ts.map +1 -1
- package/esm/src/embedding/upload-loader.js +11 -48
- package/esm/src/errors/middleware/cli-error-boundary.js +1 -1
- package/esm/src/errors/middleware/http-error-boundary.js +1 -1
- package/esm/src/errors/tracing.d.ts +3 -3
- package/esm/src/errors/tracing.d.ts.map +1 -1
- package/esm/src/errors/tracing.js +3 -3
- package/esm/src/extensions/interfaces/index.d.ts +2 -2
- package/esm/src/extensions/interfaces/index.d.ts.map +1 -1
- package/esm/src/extensions/interfaces/node-compat.d.ts +68 -10
- package/esm/src/extensions/interfaces/node-compat.d.ts.map +1 -1
- package/esm/src/extensions/interfaces/tracing-exporter.d.ts +35 -1
- package/esm/src/extensions/interfaces/tracing-exporter.d.ts.map +1 -1
- package/esm/src/integrations/schema.d.ts +10 -10
- package/esm/src/mcp/index.d.ts +7 -2
- package/esm/src/mcp/index.d.ts.map +1 -1
- package/esm/src/mcp/index.js +7 -2
- package/esm/src/mcp/schemas/index.d.ts +1 -1
- package/esm/src/mcp/schemas/index.d.ts.map +1 -1
- package/esm/src/mcp/schemas/index.js +1 -1
- package/esm/src/mcp/schemas/mcp.schema.d.ts +13 -7
- package/esm/src/mcp/schemas/mcp.schema.d.ts.map +1 -1
- package/esm/src/mcp/schemas/mcp.schema.js +17 -7
- package/esm/src/mcp/server.d.ts +13 -0
- package/esm/src/mcp/server.d.ts.map +1 -1
- package/esm/src/mcp/server.js +43 -6
- package/esm/src/observability/auto-instrument/http-instrumentation.js +1 -1
- package/esm/src/observability/auto-instrument/react-instrumentation.js +1 -1
- package/esm/src/observability/instruments/build-instruments.d.ts +1 -1
- package/esm/src/observability/instruments/build-instruments.d.ts.map +1 -1
- package/esm/src/observability/instruments/cache-instruments.d.ts +1 -1
- package/esm/src/observability/instruments/cache-instruments.d.ts.map +1 -1
- package/esm/src/observability/instruments/data-instruments.d.ts +1 -1
- package/esm/src/observability/instruments/data-instruments.d.ts.map +1 -1
- package/esm/src/observability/instruments/error-instruments.d.ts +1 -1
- package/esm/src/observability/instruments/error-instruments.d.ts.map +1 -1
- package/esm/src/observability/instruments/http-instruments.d.ts +1 -1
- package/esm/src/observability/instruments/http-instruments.d.ts.map +1 -1
- package/esm/src/observability/instruments/instruments-factory.d.ts +1 -1
- package/esm/src/observability/instruments/instruments-factory.d.ts.map +1 -1
- package/esm/src/observability/instruments/memory-instruments.d.ts +1 -1
- package/esm/src/observability/instruments/memory-instruments.d.ts.map +1 -1
- package/esm/src/observability/instruments/render-instruments.d.ts +1 -1
- package/esm/src/observability/instruments/render-instruments.d.ts.map +1 -1
- package/esm/src/observability/instruments/rsc-instruments.d.ts +1 -1
- package/esm/src/observability/instruments/rsc-instruments.d.ts.map +1 -1
- package/esm/src/observability/metrics/manager.d.ts.map +1 -1
- package/esm/src/observability/metrics/manager.js +10 -2
- package/esm/src/observability/metrics/types.d.ts +1 -1
- package/esm/src/observability/metrics/types.d.ts.map +1 -1
- package/esm/src/observability/simple-metrics/otel-instruments.d.ts.map +1 -1
- package/esm/src/observability/simple-metrics/otel-instruments.js +7 -2
- package/esm/src/observability/simple-metrics/types.d.ts +1 -1
- package/esm/src/observability/simple-metrics/types.d.ts.map +1 -1
- package/esm/src/observability/tracing/api-shim.d.ts +177 -0
- package/esm/src/observability/tracing/api-shim.d.ts.map +1 -0
- package/esm/src/observability/tracing/api-shim.js +234 -0
- package/esm/src/observability/tracing/manager.d.ts.map +1 -1
- package/esm/src/observability/tracing/manager.js +29 -4
- package/esm/src/observability/tracing/otlp-setup.d.ts +12 -8
- package/esm/src/observability/tracing/otlp-setup.d.ts.map +1 -1
- package/esm/src/observability/tracing/otlp-setup.js +59 -136
- package/esm/src/observability/tracing/types.d.ts +1 -1
- package/esm/src/observability/tracing/types.d.ts.map +1 -1
- package/esm/src/platform/compat/kv/factory.d.ts.map +1 -1
- package/esm/src/platform/compat/kv/factory.js +15 -6
- package/esm/src/platform/compat/opaque-deps.d.ts +6 -5
- package/esm/src/platform/compat/opaque-deps.d.ts.map +1 -1
- package/esm/src/platform/compat/opaque-deps.js +13 -37
- package/esm/src/proxy/tracing.d.ts +7 -2
- package/esm/src/proxy/tracing.d.ts.map +1 -1
- package/esm/src/proxy/tracing.js +31 -96
- package/esm/src/rendering/rsc/client-module-strategy.d.ts.map +1 -1
- package/esm/src/rendering/rsc/client-module-strategy.js +9 -1
- package/esm/src/server/bootstrap.d.ts.map +1 -1
- package/esm/src/server/bootstrap.js +27 -1
- package/esm/src/server/context/request-context.d.ts.map +1 -1
- package/esm/src/server/context/request-context.js +7 -4
- package/esm/src/server/dev-server/middleware.js +1 -1
- package/esm/src/server/handlers/dev/files/dev-file.handler.d.ts.map +1 -1
- package/esm/src/server/handlers/dev/files/dev-file.handler.js +4 -14
- package/esm/src/server/services/rendering/ssr.service.d.ts.map +1 -1
- package/esm/src/server/services/rendering/ssr.service.js +4 -1
- package/esm/src/server/services/rsc/endpoints/rsc-bundles.generated.js +1 -1
- package/esm/src/utils/version-constant.d.ts +1 -1
- package/esm/src/utils/version-constant.js +1 -1
- package/esm/src/workflow/claude-code/workspace-sync.d.ts +17 -2
- package/esm/src/workflow/claude-code/workspace-sync.d.ts.map +1 -1
- package/esm/src/workflow/claude-code/workspace-sync.js +106 -19
- package/esm/src/workflow/schemas/workflow.schema.d.ts +3 -3
- package/package.json +1 -9
- package/src/cli/shared/server-startup.ts +8 -0
- package/src/deno.js +5 -12
- package/src/src/agent/durable.ts +237 -0
- package/src/src/agent/index.ts +4 -0
- package/src/src/cache/backends/factory.ts +1 -1
- package/src/src/cache/backends/redis.ts +1 -1
- package/src/src/cache/keys/utils.ts +1 -1
- package/src/src/cache/registry.ts +1 -1
- package/src/src/data/static-paths-fetcher.ts +1 -1
- package/src/src/embedding/upload-loader.ts +14 -63
- package/src/src/errors/middleware/cli-error-boundary.ts +1 -1
- package/src/src/errors/middleware/http-error-boundary.ts +1 -1
- package/src/src/errors/tracing.ts +4 -4
- package/src/src/extensions/interfaces/index.ts +7 -2
- package/src/src/extensions/interfaces/node-compat.ts +74 -10
- package/src/src/extensions/interfaces/tracing-exporter.ts +36 -1
- package/src/src/mcp/index.ts +7 -2
- package/src/src/mcp/schemas/index.ts +1 -0
- package/src/src/mcp/schemas/mcp.schema.ts +20 -7
- package/src/src/mcp/server.ts +60 -6
- package/src/src/observability/auto-instrument/http-instrumentation.ts +1 -1
- package/src/src/observability/auto-instrument/react-instrumentation.ts +1 -1
- package/src/src/observability/auto-instrument/wrappers.ts +1 -1
- package/src/src/observability/instruments/build-instruments.ts +1 -1
- package/src/src/observability/instruments/cache-instruments.ts +6 -1
- package/src/src/observability/instruments/data-instruments.ts +1 -1
- package/src/src/observability/instruments/error-instruments.ts +1 -1
- package/src/src/observability/instruments/http-instruments.ts +6 -1
- package/src/src/observability/instruments/instruments-factory.ts +1 -1
- package/src/src/observability/instruments/memory-instruments.ts +5 -1
- package/src/src/observability/instruments/render-instruments.ts +1 -1
- package/src/src/observability/instruments/rsc-instruments.ts +1 -1
- package/src/src/observability/metrics/manager.ts +11 -3
- package/src/src/observability/metrics/types.ts +7 -1
- package/src/src/observability/simple-metrics/otel-instruments.ts +7 -2
- package/src/src/observability/simple-metrics/types.ts +1 -1
- package/src/src/observability/tracing/api-shim.ts +409 -0
- package/src/src/observability/tracing/manager.ts +29 -4
- package/src/src/observability/tracing/otlp-setup.ts +76 -168
- package/src/src/observability/tracing/types.ts +1 -1
- package/src/src/platform/compat/kv/factory.ts +18 -7
- package/src/src/platform/compat/opaque-deps.ts +16 -44
- package/src/src/proxy/tracing.ts +43 -117
- package/src/src/rendering/rsc/client-module-strategy.ts +9 -1
- package/src/src/server/bootstrap.ts +38 -1
- package/src/src/server/context/request-context.ts +10 -7
- package/src/src/server/dev-server/middleware.ts +1 -1
- package/src/src/server/handlers/dev/files/dev-file.handler.ts +4 -22
- package/src/src/server/services/rendering/ssr.service.ts +4 -1
- package/src/src/server/services/rsc/endpoints/rsc-bundles.generated.ts +1 -1
- package/src/src/utils/version-constant.ts +1 -1
- package/src/src/workflow/claude-code/workspace-sync.ts +109 -20
- package/esm/src/utils/logger/trace-bridge.d.ts +0 -11
- package/esm/src/utils/logger/trace-bridge.d.ts.map +0 -1
- package/esm/src/utils/logger/trace-bridge.js +0 -12
- package/src/src/utils/logger/trace-bridge.ts +0 -14
|
@@ -1,21 +1,20 @@
|
|
|
1
1
|
/**************************
|
|
2
|
-
* OpenTelemetry OTLP Setup
|
|
2
|
+
* OpenTelemetry OTLP Setup
|
|
3
|
+
*
|
|
4
|
+
* Thin wrapper that delegates to the `ext-opentelemetry` extension via the
|
|
5
|
+
* `TracingExporter` contract. When the extension is not installed, all span
|
|
6
|
+
* operations silently no-op.
|
|
3
7
|
*
|
|
4
|
-
* Configures the OTLP exporter to send traces to Grafana Cloud.
|
|
5
8
|
* Reads configuration from environment variables:
|
|
6
9
|
* - OTEL_TRACES_ENABLED: "true" to enable tracing
|
|
7
10
|
* - OTEL_SERVICE_NAME: Service name for traces
|
|
8
|
-
* - OTEL_EXPORTER_OTLP_ENDPOINT: OTLP endpoint
|
|
9
|
-
* - OTEL_EXPORTER_OTLP_HEADERS: Auth headers
|
|
11
|
+
* - OTEL_EXPORTER_OTLP_ENDPOINT: OTLP endpoint
|
|
12
|
+
* - OTEL_EXPORTER_OTLP_HEADERS: Auth headers
|
|
10
13
|
**************************/
|
|
11
14
|
import { getOtelTracingConfig } from "../../config/env.js";
|
|
12
15
|
import { serverLogger } from "../../utils/index.js";
|
|
13
|
-
import {
|
|
16
|
+
import { context as shimContext, defaultTextMapGetter, defaultTextMapSetter, getTracer, propagation as shimPropagation, SpanKind, SpanStatusCode, trace as shimTrace, } from "./api-shim.js";
|
|
14
17
|
const logger = serverLogger.component("otel");
|
|
15
|
-
let initialized = false;
|
|
16
|
-
let tracerProvider = null;
|
|
17
|
-
let traceApi = null;
|
|
18
|
-
let propagationApi = null;
|
|
19
18
|
function parseHeaders(headerString) {
|
|
20
19
|
if (!headerString)
|
|
21
20
|
return {};
|
|
@@ -42,107 +41,50 @@ function getConfig() {
|
|
|
42
41
|
headers: parseHeaders(tracingConfig.headers),
|
|
43
42
|
};
|
|
44
43
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
propagationApi = await import("@opentelemetry/core");
|
|
50
|
-
}
|
|
51
|
-
function setSpanErrorStatus(span, error) {
|
|
52
|
-
if (!traceApi)
|
|
53
|
-
return;
|
|
54
|
-
span.setStatus({
|
|
55
|
-
code: traceApi.SpanStatusCode.ERROR,
|
|
56
|
-
message: error instanceof Error ? error.message : String(error),
|
|
57
|
-
});
|
|
58
|
-
if (error instanceof Error)
|
|
59
|
-
span.recordException(error);
|
|
60
|
-
}
|
|
44
|
+
// ---------------------------------------------------------------------------
|
|
45
|
+
// Legacy initialise / shutdown (now delegated to bootstrap.ts + ext)
|
|
46
|
+
// ---------------------------------------------------------------------------
|
|
47
|
+
let initialized = false;
|
|
61
48
|
export async function initializeOTLP() {
|
|
62
49
|
if (initialized) {
|
|
63
50
|
logger.debug("Already initialized");
|
|
64
51
|
return;
|
|
65
52
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
if (!config.endpoint) {
|
|
73
|
-
logger.warn("No OTEL_EXPORTER_OTLP_ENDPOINT configured, skipping");
|
|
74
|
-
initialized = true;
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
try {
|
|
78
|
-
const { BasicTracerProvider, BatchSpanProcessor } = await import("@opentelemetry/sdk-trace-base");
|
|
79
|
-
const { OTLPTraceExporter } = await import("@opentelemetry/exporter-trace-otlp-http");
|
|
80
|
-
const { resourceFromAttributes } = await import("@opentelemetry/resources");
|
|
81
|
-
const { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION } = await import("@opentelemetry/semantic-conventions");
|
|
82
|
-
const { AsyncLocalStorageContextManager } = await import("@opentelemetry/context-async-hooks");
|
|
83
|
-
const resource = resourceFromAttributes({
|
|
84
|
-
[ATTR_SERVICE_NAME]: config.serviceName,
|
|
85
|
-
[ATTR_SERVICE_VERSION]: RUNTIME_VERSION,
|
|
86
|
-
});
|
|
87
|
-
const endpointBase = config.endpoint.replace(/\/$/, "");
|
|
88
|
-
const exporter = new OTLPTraceExporter({
|
|
89
|
-
url: `${endpointBase}/v1/traces`,
|
|
90
|
-
headers: config.headers,
|
|
91
|
-
});
|
|
92
|
-
const contextManager = new AsyncLocalStorageContextManager();
|
|
93
|
-
contextManager.enable();
|
|
94
|
-
const provider = new BasicTracerProvider({
|
|
95
|
-
resource,
|
|
96
|
-
spanProcessors: [new BatchSpanProcessor(exporter)],
|
|
97
|
-
});
|
|
98
|
-
// In OTel SDK v2, provider.register() is removed.
|
|
99
|
-
// Set global tracer provider and context manager via the API directly.
|
|
100
|
-
traceApi = await import("@opentelemetry/api");
|
|
101
|
-
traceApi.trace.setGlobalTracerProvider(provider);
|
|
102
|
-
traceApi.context.setGlobalContextManager(contextManager);
|
|
103
|
-
tracerProvider = provider;
|
|
104
|
-
initialized = true;
|
|
105
|
-
logger.info("OpenTelemetry OTLP tracing initialized", {
|
|
106
|
-
serviceName: config.serviceName,
|
|
107
|
-
endpoint: config.endpoint,
|
|
108
|
-
});
|
|
109
|
-
traceApi.trace.getTracer(config.serviceName);
|
|
110
|
-
logger.debug("Tracer obtained", { name: config.serviceName });
|
|
111
|
-
// Bridge trace context into the logger so every JSON log entry
|
|
112
|
-
// automatically includes traceId/spanId from the active span.
|
|
113
|
-
// Imported here (rather than per-entrypoint) so all callers of
|
|
114
|
-
// initializeOTLP benefit — CLI serve, production-server, proxy, etc.
|
|
115
|
-
await import("../../utils/logger/trace-bridge.js");
|
|
116
|
-
}
|
|
117
|
-
catch (error) {
|
|
118
|
-
logger.error("Failed to initialize OTLP tracing", { error });
|
|
119
|
-
initialized = true; // Mark as initialized to prevent retries
|
|
120
|
-
}
|
|
53
|
+
// Actual provider setup is handled by ext-opentelemetry via bootstrap.
|
|
54
|
+
// This is kept for backward compatibility.
|
|
55
|
+
initialized = true;
|
|
56
|
+
logger.debug("OTLP setup delegated to ext-opentelemetry extension");
|
|
121
57
|
}
|
|
122
58
|
export async function shutdownOTLP() {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
try {
|
|
126
|
-
await tracerProvider.shutdown();
|
|
127
|
-
logger.info("Tracer provider shutdown complete");
|
|
128
|
-
}
|
|
129
|
-
catch (error) {
|
|
130
|
-
logger.warn("Error during tracer shutdown", { error });
|
|
131
|
-
}
|
|
59
|
+
// Actual shutdown is handled by the extension loader teardown.
|
|
60
|
+
logger.debug("OTLP shutdown delegated to ext-opentelemetry extension");
|
|
132
61
|
}
|
|
133
62
|
export function isOTLPEnabled() {
|
|
134
|
-
return initialized
|
|
63
|
+
return initialized;
|
|
64
|
+
}
|
|
65
|
+
export async function initializeOTLPWithApis() {
|
|
66
|
+
await initializeOTLP();
|
|
67
|
+
}
|
|
68
|
+
// ---------------------------------------------------------------------------
|
|
69
|
+
// Span helpers — delegate to shim (which delegates to SDK if wired)
|
|
70
|
+
// ---------------------------------------------------------------------------
|
|
71
|
+
function setSpanErrorStatus(span, error) {
|
|
72
|
+
span.setStatus({
|
|
73
|
+
code: SpanStatusCode.ERROR,
|
|
74
|
+
message: error instanceof Error ? error.message : String(error),
|
|
75
|
+
});
|
|
76
|
+
if (error instanceof Error)
|
|
77
|
+
span.recordException(error);
|
|
135
78
|
}
|
|
136
79
|
export async function withSpan(name, fn, attributes) {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
const
|
|
140
|
-
const
|
|
141
|
-
const
|
|
142
|
-
const spanContext = traceApi.trace.setSpan(parentContext, span);
|
|
80
|
+
const config = getConfig();
|
|
81
|
+
const tracer = getTracer(config.serviceName);
|
|
82
|
+
const parentContext = shimContext.active();
|
|
83
|
+
const span = tracer.startSpan(name, { kind: SpanKind.INTERNAL, attributes }, parentContext);
|
|
84
|
+
const spanContext = shimTrace.setSpan(parentContext, span);
|
|
143
85
|
try {
|
|
144
|
-
const result = await
|
|
145
|
-
span.setStatus({ code:
|
|
86
|
+
const result = await shimContext.with(spanContext, fn);
|
|
87
|
+
span.setStatus({ code: SpanStatusCode.OK });
|
|
146
88
|
return result;
|
|
147
89
|
}
|
|
148
90
|
catch (error) {
|
|
@@ -154,14 +96,13 @@ export async function withSpan(name, fn, attributes) {
|
|
|
154
96
|
}
|
|
155
97
|
}
|
|
156
98
|
export function withSpanSync(name, fn, attributes) {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
const
|
|
160
|
-
const
|
|
161
|
-
const span = tracer.startSpan(name, { kind: traceApi.SpanKind.INTERNAL, attributes }, parentContext);
|
|
99
|
+
const config = getConfig();
|
|
100
|
+
const tracer = getTracer(config.serviceName);
|
|
101
|
+
const parentContext = shimContext.active();
|
|
102
|
+
const span = tracer.startSpan(name, { kind: SpanKind.INTERNAL, attributes }, parentContext);
|
|
162
103
|
try {
|
|
163
104
|
const result = fn();
|
|
164
|
-
span.setStatus({ code:
|
|
105
|
+
span.setStatus({ code: SpanStatusCode.OK });
|
|
165
106
|
return result;
|
|
166
107
|
}
|
|
167
108
|
catch (error) {
|
|
@@ -173,35 +114,28 @@ export function withSpanSync(name, fn, attributes) {
|
|
|
173
114
|
}
|
|
174
115
|
}
|
|
175
116
|
export function extractContext(headers) {
|
|
176
|
-
if (!traceApi || !propagationApi)
|
|
177
|
-
return traceApi?.context?.active();
|
|
178
117
|
const carrier = {};
|
|
179
118
|
for (const [k, v] of headers)
|
|
180
119
|
carrier[k.toLowerCase()] = v;
|
|
181
|
-
|
|
182
|
-
return traceApi.context.active();
|
|
183
|
-
return new propagationApi.W3CTraceContextPropagator().extract(traceApi.context.active(), carrier, traceApi.defaultTextMapGetter);
|
|
120
|
+
return shimPropagation.extract(shimContext.active(), carrier, defaultTextMapGetter);
|
|
184
121
|
}
|
|
185
122
|
export function injectContext(headers) {
|
|
186
|
-
if (!traceApi || !propagationApi)
|
|
187
|
-
return;
|
|
188
123
|
const carrier = {};
|
|
189
|
-
|
|
124
|
+
shimPropagation.inject(shimContext.active(), carrier, defaultTextMapSetter);
|
|
190
125
|
for (const [k, v] of Object.entries(carrier))
|
|
191
126
|
headers.set(k, v);
|
|
192
127
|
}
|
|
193
128
|
export function startServerSpan(method, path, parentContext) {
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
const
|
|
197
|
-
const
|
|
198
|
-
const span = tracer.startSpan(`${method} ${path}`, { kind: traceApi.SpanKind.SERVER }, ctx);
|
|
129
|
+
const config = getConfig();
|
|
130
|
+
const tracer = getTracer(config.serviceName);
|
|
131
|
+
const ctx = (parentContext || shimContext.active());
|
|
132
|
+
const span = tracer.startSpan(`${method} ${path}`, { kind: SpanKind.SERVER }, ctx);
|
|
199
133
|
span.setAttribute("http.method", method);
|
|
200
134
|
span.setAttribute("http.target", path);
|
|
201
|
-
return { span, context:
|
|
135
|
+
return { span, context: shimTrace.setSpan(ctx, span) };
|
|
202
136
|
}
|
|
203
137
|
export function endServerSpan(span, statusCode, error) {
|
|
204
|
-
if (!span
|
|
138
|
+
if (!span)
|
|
205
139
|
return;
|
|
206
140
|
const otelSpan = span;
|
|
207
141
|
otelSpan.setAttribute("http.status_code", statusCode);
|
|
@@ -211,45 +145,34 @@ export function endServerSpan(span, statusCode, error) {
|
|
|
211
145
|
return;
|
|
212
146
|
}
|
|
213
147
|
if (statusCode >= 400) {
|
|
214
|
-
otelSpan.setStatus({ code:
|
|
148
|
+
otelSpan.setStatus({ code: SpanStatusCode.ERROR });
|
|
215
149
|
otelSpan.end();
|
|
216
150
|
return;
|
|
217
151
|
}
|
|
218
|
-
otelSpan.setStatus({ code:
|
|
152
|
+
otelSpan.setStatus({ code: SpanStatusCode.OK });
|
|
219
153
|
otelSpan.end();
|
|
220
154
|
}
|
|
221
155
|
export function setSpanAttributes(span, attributes) {
|
|
222
|
-
if (!span
|
|
156
|
+
if (!span)
|
|
223
157
|
return;
|
|
224
158
|
const otelSpan = span;
|
|
225
159
|
for (const [key, value] of Object.entries(attributes))
|
|
226
160
|
otelSpan.setAttribute(key, value);
|
|
227
161
|
}
|
|
228
162
|
export function setActiveSpanAttributes(attributes) {
|
|
229
|
-
|
|
230
|
-
return;
|
|
231
|
-
const span = traceApi.trace.getSpan(traceApi.context.active());
|
|
163
|
+
const span = shimTrace.getActiveSpan?.();
|
|
232
164
|
if (!span)
|
|
233
165
|
return;
|
|
234
166
|
for (const [key, value] of Object.entries(attributes))
|
|
235
167
|
span.setAttribute(key, value);
|
|
236
168
|
}
|
|
237
169
|
export async function withContext(spanContext, fn) {
|
|
238
|
-
|
|
239
|
-
return fn();
|
|
240
|
-
return traceApi.context.with(spanContext, fn);
|
|
170
|
+
return shimContext.with(spanContext, fn);
|
|
241
171
|
}
|
|
242
172
|
export function getTraceContext() {
|
|
243
|
-
|
|
244
|
-
return {};
|
|
245
|
-
const span = traceApi.trace.getSpan(traceApi.context.active());
|
|
173
|
+
const span = shimTrace.getActiveSpan?.();
|
|
246
174
|
if (!span)
|
|
247
175
|
return {};
|
|
248
176
|
const ctx = span.spanContext();
|
|
249
177
|
return { traceId: ctx.traceId, spanId: ctx.spanId };
|
|
250
178
|
}
|
|
251
|
-
export async function initializeOTLPWithApis() {
|
|
252
|
-
await initializeOTLP();
|
|
253
|
-
if (isOTLPEnabled())
|
|
254
|
-
await ensureApis();
|
|
255
|
-
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Context, Span, SpanKind, TextMapPropagator, Tracer } from "
|
|
1
|
+
import type { Context, Span, SpanKind, TextMapPropagator, Tracer } from "./api-shim.js";
|
|
2
2
|
export interface TracingConfig {
|
|
3
3
|
enabled: boolean;
|
|
4
4
|
exporter: "jaeger" | "zipkin" | "otlp" | "console";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/src/observability/tracing/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/src/observability/tracing/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAExF,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACvD,MAAM,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE;QACL,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAC9D,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC;KAChD,CAAC;IACF,WAAW,EAAE;QACX,mBAAmB,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAC;QACzD,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC;QACpE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;KACjE,CAAC;IACF,OAAO,EAAE;QACP,MAAM,IAAI,OAAO,CAAC;QAClB,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;KAC3C,CAAC;IACF,QAAQ,EAAE,OAAO,QAAQ,CAAC;IAC1B,cAAc,EAAE;QACd,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,GAAG,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAC;CACtC;AAED,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../../../src/src/platform/compat/kv/factory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../../../src/src/platform/compat/kv/factory.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,EAAE,EAAkB,MAAM,YAAY,CAAC;AASrD,wBAAsB,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,CAgCvD;AAED,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAEtE;AAED,wBAAgB,cAAc,IAAI,IAAI,CAMrC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as dntShim from "../../../../_dnt.shims.js";
|
|
2
|
+
import { tryResolve } from "../../../extensions/contracts.js";
|
|
2
3
|
import { serverLogger } from "../../../utils/index.js";
|
|
3
4
|
import { isDeno } from "../runtime.js";
|
|
4
5
|
import { MemoryKv } from "./memory-adapter.js";
|
|
@@ -16,13 +17,21 @@ export async function openKv(path) {
|
|
|
16
17
|
}
|
|
17
18
|
}
|
|
18
19
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
const nodeCompat = tryResolve("NodeCompat");
|
|
21
|
+
if (nodeCompat?.openSqliteDatabase) {
|
|
22
|
+
try {
|
|
23
|
+
const db = await nodeCompat.openSqliteDatabase(path);
|
|
24
|
+
// NodeCompatSqliteDatabase is structurally identical to SqliteDatabase;
|
|
25
|
+
// cast to satisfy the SqliteKv constructor's nominal type check.
|
|
26
|
+
return new SqliteKv(db);
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
serverLogger.debug("NodeCompat.openSqliteDatabase failed, using memory KV:", error);
|
|
30
|
+
}
|
|
23
31
|
}
|
|
24
|
-
|
|
25
|
-
serverLogger.debug("
|
|
32
|
+
else {
|
|
33
|
+
serverLogger.debug("NodeCompat extension not registered — SQLite KV unavailable. " +
|
|
34
|
+
"Install @veryfront/ext-node-compat to enable SQLite-backed KV.");
|
|
26
35
|
}
|
|
27
36
|
return new MemoryKv();
|
|
28
37
|
}
|
|
@@ -6,11 +6,12 @@ export declare function importClaudeAgentSDK(): Promise<OpaqueModule>;
|
|
|
6
6
|
/**
|
|
7
7
|
* Lazily import kreuzberg document extraction.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
9
|
+
* Delegates to the `NodeCompat` extension contract (`@veryfront/ext-node-compat`)
|
|
10
|
+
* when available. Without the extension, throws an actionable error instructing
|
|
11
|
+
* the user to install `ext-node-compat`.
|
|
12
|
+
*
|
|
13
|
+
* Node/Bun path: `@kreuzberg/node` resolved from the project's node_modules at
|
|
14
|
+
* runtime — the extension handles that dynamic import internally.
|
|
14
15
|
*/
|
|
15
16
|
export declare function importKreuzberg(): Promise<{
|
|
16
17
|
extractBytes: (data: Uint8Array, mimeType: string) => Promise<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opaque-deps.d.ts","sourceRoot":"","sources":["../../../../src/src/platform/compat/opaque-deps.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"opaque-deps.d.ts","sourceRoot":"","sources":["../../../../src/src/platform/compat/opaque-deps.ts"],"names":[],"mappings":"AA6BA,KAAK,YAAY,GAAG,GAAG,CAAC;AAExB,yEAAyE;AACzE,wBAAgB,kBAAkB,IAAI,OAAO,CAAC,YAAY,CAAC,CAE1D;AAED,8DAA8D;AAC9D,wBAAgB,oBAAoB,IAAI,OAAO,CAAC,YAAY,CAAC,CAK5D;AAED;;;;;;;;;GASG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC;IAC/C,YAAY,EAAE,CACZ,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,MAAM,KACb,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnC,CAAC,CASD"}
|
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
* @module platform/compat
|
|
16
16
|
*/
|
|
17
17
|
import * as dntShim from "../../../_dnt.shims.js";
|
|
18
|
-
import {
|
|
18
|
+
import { tryResolve } from "../../extensions/contracts.js";
|
|
19
|
+
import { isDeno } from "./runtime.js";
|
|
19
20
|
import { dynamicImport } from "./dynamic-import.js";
|
|
20
21
|
function resolve(pkg, version) {
|
|
21
22
|
return isDeno ? `npm:${pkg}@${version}` : pkg;
|
|
@@ -35,43 +36,18 @@ export function importClaudeAgentSDK() {
|
|
|
35
36
|
/**
|
|
36
37
|
* Lazily import kreuzberg document extraction.
|
|
37
38
|
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
39
|
+
* Delegates to the `NodeCompat` extension contract (`@veryfront/ext-node-compat`)
|
|
40
|
+
* when available. Without the extension, throws an actionable error instructing
|
|
41
|
+
* the user to install `ext-node-compat`.
|
|
42
|
+
*
|
|
43
|
+
* Node/Bun path: `@kreuzberg/node` resolved from the project's node_modules at
|
|
44
|
+
* runtime — the extension handles that dynamic import internally.
|
|
43
45
|
*/
|
|
44
46
|
export async function importKreuzberg() {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
if (isDenoCompiled) {
|
|
49
|
-
// Kreuzberg's initWasm() internally uses a computed dynamic import() to
|
|
50
|
-
// load the WASM glue module (kreuzberg_wasm.js). deno compile cannot
|
|
51
|
-
// trace computed import() paths, so the glue module is absent from the
|
|
52
|
-
// binary's embedded module graph. Pre-importing it here populates Deno's
|
|
53
|
-
// in-process module cache so the subsequent import() inside initWasm()
|
|
54
|
-
// resolves from cache instead of hitting the missing file.
|
|
55
|
-
await import("@kreuzberg/wasm/dist/pkg/kreuzberg_wasm.js");
|
|
56
|
-
// pdfium.js is not in @kreuzberg/wasm package exports, so we can't use
|
|
57
|
-
// an import map entry. Resolve its URL relative to the kreuzberg package
|
|
58
|
-
// and pre-import it so initWasm()'s `import("./pdfium.js")` resolves
|
|
59
|
-
// from the in-process module cache instead of hanging.
|
|
60
|
-
// Wrapped in try/catch because pdfium is only needed for PDF extraction;
|
|
61
|
-
// a failure here should not break extraction of other formats (DOCX, etc.).
|
|
62
|
-
try {
|
|
63
|
-
const kreuzbergUrl = globalThis[Symbol.for("import-meta-ponyfill-esmodule")](import.meta).resolve("@kreuzberg/wasm");
|
|
64
|
-
await import(new URL("./pdfium.js", kreuzbergUrl).href);
|
|
65
|
-
}
|
|
66
|
-
catch {
|
|
67
|
-
// expected: pdfium pre-import may fail if the file is missing or
|
|
68
|
-
// the package structure changed — PDF extraction will be degraded
|
|
69
|
-
// but other formats will still work.
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
await mod.initWasm?.();
|
|
73
|
-
return mod;
|
|
47
|
+
const nodeCompat = tryResolve("NodeCompat");
|
|
48
|
+
if (nodeCompat?.importKreuzberg) {
|
|
49
|
+
return nodeCompat.importKreuzberg();
|
|
74
50
|
}
|
|
75
|
-
|
|
76
|
-
|
|
51
|
+
throw new Error("Document extraction requires the NodeCompat extension. " +
|
|
52
|
+
"Install @veryfront/ext-node-compat and add it to your extensions configuration.");
|
|
77
53
|
}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
/****
|
|
2
2
|
* OpenTelemetry OTLP tracing for proxy.
|
|
3
|
-
*
|
|
3
|
+
*
|
|
4
|
+
* Uses the core api-shim for in-process tracing; when ext-opentelemetry
|
|
5
|
+
* is loaded, the shim delegates to the real SDK provider.
|
|
6
|
+
*
|
|
7
|
+
* Env: OTEL_TRACES_ENABLED, OTEL_SERVICE_NAME, OTEL_EXPORTER_OTLP_ENDPOINT,
|
|
8
|
+
* OTEL_EXPORTER_OTLP_HEADERS
|
|
4
9
|
*/
|
|
5
|
-
import type
|
|
10
|
+
import { type Context, type Span } from "../observability/tracing/api-shim.js";
|
|
6
11
|
export declare function initializeOTLPWithApis(): Promise<void>;
|
|
7
12
|
export declare function shutdownOTLP(): Promise<void>;
|
|
8
13
|
export declare function extractContext(headers: Headers): Context | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracing.d.ts","sourceRoot":"","sources":["../../../src/src/proxy/tracing.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"tracing.d.ts","sourceRoot":"","sources":["../../../src/src/proxy/tracing.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,KAAK,OAAO,EAKZ,KAAK,IAAI,EAKV,MAAM,sCAAsC,CAAC;AAmC9C,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CA+B5D;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAElD;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAQpE;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAOpD;AAED,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,CAMzC;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAiBvF;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAErF;AAOD,wBAAgB,eAAe,IAAI;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAIvE;AAED;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;CAKjB,CAAC;AAEX;;;GAGG;AACH,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,CA0BZ"}
|