23 lines
933 B
TypeScript
23 lines
933 B
TypeScript
import { Agent } from "@/agent/agent"
|
|
import { AppRuntime, type AppServices } from "@/effect/app-runtime"
|
|
import { InstanceRef } from "@/effect/instance-ref"
|
|
import { InstanceRuntime } from "@/project/instance-runtime"
|
|
import { Effect } from "effect"
|
|
|
|
// Global ACP Effect re-entry: no project InstanceRef is provided.
|
|
export const runGlobal = AppRuntime.runPromise
|
|
|
|
// Directory-scoped ACP Effect re-entry: load the project instance and provide InstanceRef.
|
|
export async function runDirectory<A, E>(input: { directory: string; effect: Effect.Effect<A, E, AppServices> }) {
|
|
const ctx = await InstanceRuntime.load({ directory: input.directory })
|
|
return AppRuntime.runPromise(input.effect.pipe(Effect.provideService(InstanceRef, ctx)))
|
|
}
|
|
|
|
export const defaultAgentInfo = (directory: string) =>
|
|
runDirectory({
|
|
directory,
|
|
effect: Agent.Service.use((svc) => svc.defaultInfo()),
|
|
})
|
|
|
|
export * as ACPRuntime from "./runtime"
|