From 99156c10e670dbda1be61b78d561f8c925a6021d Mon Sep 17 00:00:00 2001 From: James Long Date: Thu, 9 Jul 2026 17:19:22 -0400 Subject: [PATCH] feat(cli): export frontend logs over OTLP (#36152) --- packages/cli/src/index.ts | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index e358b181c40..75f798b0ebf 100755 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -1,10 +1,10 @@ #!/usr/bin/env bun -import { NodeFileSystem, NodeRuntime, NodeServices } from "@effect/platform-node" -import { Effect, Layer, Logger, References } from "effect" +import { NodeRuntime, NodeServices } from "@effect/platform-node" +import { Effect } from "effect" import { Commands } from "./commands/commands" import { Runtime } from "./framework/runtime" -import { Logging } from "@opencode-ai/core/observability/logging" +import { Observability } from "@opencode-ai/core/observability" import { Updater } from "./services/updater" import { InstallationChannel, InstallationVersion, InstallationLocal } from "@opencode-ai/core/installation/version" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" @@ -12,12 +12,6 @@ import { LayerNode } from "@opencode-ai/core/effect/layer-node" import { Global } from "@opencode-ai/core/global" import { AppProcess } from "@opencode-ai/core/process" -const LoggingLayer = Logger.layer(Logging.loggers(), { mergeWithExisting: false }).pipe( - Layer.provide(NodeFileSystem.layer), - Layer.orDie, - Layer.merge(Layer.succeed(References.MinimumLogLevel, Logging.minimumLogLevel())), -) - const Handlers = Runtime.handlers(Commands, { $: () => import("./commands/handlers/default"), api: () => import("./commands/handlers/api"), @@ -59,7 +53,7 @@ Effect.logInfo("cli starting", { Effect.annotateLogs({ role: "cli" }), Effect.provide(Updater.layer), Effect.provide(AppNodeBuilder.build(LayerNode.group([Global.node, AppProcess.node]))), - Effect.provide(LoggingLayer), + Effect.provide(Observability.layer), Effect.provide(NodeServices.layer), Effect.scoped, Effect.tap(() => Effect.sync(() => process.exit(process.exitCode ?? 0))),