import { LayerNode } from "@opencode-ai/core/effect/layer-node" import { BackgroundJob as CoreBackgroundJob } from "@opencode-ai/core/background-job" import { InstanceState } from "@/effect/instance-state" import { Effect, Layer } from "effect" export { Service, type ExtendInput, type Info, type Interface, type StartInput, type Status, type WaitInput, type WaitResult, } from "@opencode-ai/core/background-job" /** Keeps the legacy service instance-scoped while sharing the core registry engine. */ export const layer = Layer.effect( CoreBackgroundJob.Service, Effect.gen(function* () { const state = yield* InstanceState.make(() => CoreBackgroundJob.make) return CoreBackgroundJob.Service.of({ list: () => InstanceState.useEffect(state, (jobs) => jobs.list()), get: (id) => InstanceState.useEffect(state, (jobs) => jobs.get(id)), start: (input) => InstanceState.useEffect(state, (jobs) => jobs.start(input)), extend: (input) => InstanceState.useEffect(state, (jobs) => jobs.extend(input)), wait: (input) => InstanceState.useEffect(state, (jobs) => jobs.wait(input)), waitForPromotion: (id) => InstanceState.useEffect(state, (jobs) => jobs.waitForPromotion(id)), promote: (id) => InstanceState.useEffect(state, (jobs) => jobs.promote(id)), cancel: (id) => InstanceState.useEffect(state, (jobs) => jobs.cancel(id)), }) }), ) export const defaultLayer = layer export const node = LayerNode.make(layer, []) export * as BackgroundJob from "./job"