mirror of
https://github.com/anomalyco/opencode.git
synced 2026-05-04 19:57:22 +00:00
Moves effect logging, observability, runtime utilities, flags, installation version info, and process utilities from opencode to core package. This enables better code sharing across packages and establishes core as the single source of truth for foundational utilities. All internal imports updated to use @opencode-ai/core paths for consistency.
47 lines
1.7 KiB
TypeScript
47 lines
1.7 KiB
TypeScript
import { afterEach, describe, expect, test } from "bun:test"
|
|
import { resource } from "@opencode-ai/core/effect/observability"
|
|
|
|
const otelResourceAttributes = process.env.OTEL_RESOURCE_ATTRIBUTES
|
|
const opencodeClient = process.env.OPENCODE_CLIENT
|
|
|
|
afterEach(() => {
|
|
if (otelResourceAttributes === undefined) delete process.env.OTEL_RESOURCE_ATTRIBUTES
|
|
else process.env.OTEL_RESOURCE_ATTRIBUTES = otelResourceAttributes
|
|
|
|
if (opencodeClient === undefined) delete process.env.OPENCODE_CLIENT
|
|
else process.env.OPENCODE_CLIENT = opencodeClient
|
|
})
|
|
|
|
describe("resource", () => {
|
|
test("parses and decodes OTEL resource attributes", () => {
|
|
process.env.OTEL_RESOURCE_ATTRIBUTES =
|
|
"service.namespace=anomalyco,team=platform%2Cobservability,label=hello%3Dworld,key%2Fname=value%20here"
|
|
|
|
expect(resource().attributes).toMatchObject({
|
|
"service.namespace": "anomalyco",
|
|
team: "platform,observability",
|
|
label: "hello=world",
|
|
"key/name": "value here",
|
|
})
|
|
})
|
|
|
|
test("drops OTEL resource attributes when any entry is invalid", () => {
|
|
process.env.OTEL_RESOURCE_ATTRIBUTES = "service.namespace=anomalyco,broken"
|
|
|
|
expect(resource().attributes["service.namespace"]).toBeUndefined()
|
|
expect(resource().attributes["opencode.client"]).toBeDefined()
|
|
})
|
|
|
|
test("keeps built-in attributes when env values conflict", () => {
|
|
process.env.OPENCODE_CLIENT = "cli"
|
|
process.env.OTEL_RESOURCE_ATTRIBUTES =
|
|
"opencode.client=web,service.instance.id=override,service.namespace=anomalyco"
|
|
|
|
expect(resource().attributes).toMatchObject({
|
|
"opencode.client": "cli",
|
|
"service.namespace": "anomalyco",
|
|
})
|
|
expect(resource().attributes["service.instance.id"]).not.toBe("override")
|
|
})
|
|
})
|