Something went wrong. Try again.
opencode v2 mirror
Something went wrong. Try again.
TypeScript
12345678910111213141516171819202122232425262728293031323334353637383940import { Context, Effect, Layer } from "effect"import { Info, Ref, response } from "@opencode/schema/location"import { Project } from "./project.js"import { LayerNode } from "@opencode/util/effect/layer-node"import { makeLocationNode, tags } from "@opencode/util/effect/app-node"
export * as Location from "./location.js"
export { Info, Ref, response }
export interface Interface extends Info { readonly vcs?: Project.Vcs}
export class Service extends Context.Service<Service, Interface>()("@opencode/Location") {}
export const node = LayerNode.unbound(Service, tags.values.location)
const layer = (ref: Ref, options?: { readonly discovery?: boolean }) => Layer.effect( Service, Effect.gen(function* () { const project = yield* Project.Service const resolved = yield* project.resolve(ref.directory, options) return Service.of({ directory: ref.directory, workspaceID: ref.workspaceID, project: { id: resolved.id, directory: resolved.directory, canonical: resolved.canonical }, vcs: resolved.vcs, }) }), )
export const boundNode = (ref: Ref, options?: { readonly discovery?: boolean }) => makeLocationNode({ service: Service, layer: layer(ref, options), deps: [Project.node], })