export * as Instance from "./service.js" export type { Services } from "../instance.js" import { Context, type Effect } from "effect" import type { Session } from "@opencode/schema/session" import { Node } from "@opencode/util/effect/app-node" import { LayerNode } from "@opencode/util/effect/layer-node" import type { Services } from "../instance.js" /** Selects Session capabilities; implementations own caching and lifetime. */ export interface Interface { readonly provide: ( session: Session.Info, ) => (effect: Effect.Effect) => Effect.Effect> } export class Service extends Context.Service()("@opencode/Instance") {} export const node = LayerNode.unbound(Service, Node.tags.values.global)