Open History to see the last commit
1import {
2 nodeProcessRuntimeAttributes,
3 processServiceInstanceId,
4} from "@t3tools/shared/observability";
5import * as RelayTracing from "@t3tools/shared/relayTracing";
6import * as Effect from "effect/Effect";
7import * as Layer from "effect/Layer";
8
9import * as ServerConfig from "../config.ts";
10import * as ManagedPolicy from "../policy/ManagedPolicy.ts";
11import { resolveRelayClientTracingConfig } from "./publicConfig.ts";
12
13const relayClientTracingConfig = resolveRelayClientTracingConfig();
14
15/** Relay traces leave the machine for T3 Connect, so a policy with `telemetry: false` stops them. */
16export const relayLayer = (
17 resource: Omit<RelayTracing.RelayClientTracingResource, "serviceInstanceId">,
18 tracingConfig = relayClientTracingConfig,
19) =>
20 Layer.unwrap(
21 Effect.gen(function* () {
22 const config = yield* ServerConfig.ServerConfig;
23 const policy = yield* ManagedPolicy.ManagedPolicy;
24 return RelayTracing.layer(
25 ManagedPolicy.deniedBy(policy, "telemetry") === undefined ? tracingConfig : null,
26 {
27 ...resource,
28 serviceInstanceId: processServiceInstanceId(config.otelEnvironment.resourceAttributes),
29 },
30 );
31 }),
32 );
33
34export const layerHeadlessRelayClient = relayLayer({
35 serviceName: "t3code-server",
36 runtime: "node",
37 attributes: nodeProcessRuntimeAttributes(),
38 client: "headless-cli",
39});
40
41export const layerServerRelayBroker = relayLayer({
42 serviceName: "t3code-server",
43 runtime: "node",
44 attributes: nodeProcessRuntimeAttributes(),
45 client: "environment-server",
46 component: "relay-broker",
47});