mirror of
https://github.com/anomalyco/opencode.git
synced 2026-08-09 15:33:27 +00:00
33 lines
884 B
TypeScript
33 lines
884 B
TypeScript
export * as App from "./app"
|
|
|
|
import { Context, Layer } from "effect"
|
|
import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
|
|
|
|
export interface Info {
|
|
readonly name: string
|
|
readonly version: string
|
|
readonly channel: string
|
|
}
|
|
|
|
export const Metadata = Context.Reference<Info>("@opencode/App", {
|
|
defaultValue: () => make(),
|
|
})
|
|
|
|
export function make(input: Partial<Info> = {}): Info {
|
|
return {
|
|
name: input.name ?? "opencode",
|
|
version: input.version ?? "unknown",
|
|
channel: input.channel ?? "unknown",
|
|
}
|
|
}
|
|
|
|
export function useragent(app: Info) {
|
|
return `opencode/${app.channel}/${app.version}/${app.name}`
|
|
}
|
|
|
|
export const layer = (input?: Partial<Info>) => Layer.succeed(Metadata, make(input))
|
|
|
|
export const configured = (input?: Partial<Info>) =>
|
|
makeGlobalNode({ service: Metadata, layer: layer(input), deps: [] })
|
|
|
|
export const node = configured()
|