feat(observability): refine span linkage and telemetry

This commit is contained in:
starptech 2026-07-08 21:33:46 +02:00
commit 0b9f1a47c6
6 changed files with 293 additions and 34 deletions

View file

@ -0,0 +1,32 @@
import { expect, test } from "bun:test"
import { NodeServices } from "@effect/platform-node"
import { Context, Effect, Layer, References } from "effect"
import { HttpMiddleware, HttpServer, HttpServerRequest } from "effect/unstable/http"
test("route construction retains the server tracing policy", async () => {
const database = process.env.OPENCODE_DB
const endpoint = process.env.OTEL_EXPORTER_OTLP_ENDPOINT
delete process.env.OTEL_EXPORTER_OTLP_ENDPOINT
process.env.OPENCODE_DB = ":memory:"
try {
const { createEmbeddedRoutes } = await import("../src/routes")
await Effect.gen(function* () {
const context = yield* Layer.build(
createEmbeddedRoutes().pipe(
Layer.provide(HttpServer.layerServices),
Layer.provide(NodeServices.layer),
),
)
const request = HttpServerRequest.fromWeb(new Request("http://opencode.local/api/session"))
expect(Context.get(context, References.TracerEnabled)).toBeFalse()
expect(Context.get(context, HttpMiddleware.TracerDisabledWhen)(request)).toBeTrue()
}).pipe(Effect.scoped, Effect.runPromise)
} finally {
if (database === undefined) delete process.env.OPENCODE_DB
else process.env.OPENCODE_DB = database
if (endpoint === undefined) delete process.env.OTEL_EXPORTER_OTLP_ENDPOINT
else process.env.OTEL_EXPORTER_OTLP_ENDPOINT = endpoint
}
})