import { NodeRuntime } from "@effect/platform-node";
import { Client, Registry } from "@rivetkit/effect";
import { Layer } from "effect";
import { AgentLive } from "./actors/agent/live.ts";
import { TelemetryLayer } from "./telemetry.ts";
import { OpenAiModelLayer } from "./model.ts";
const endpoint = process.env.RIVET_ENDPOINT ?? "http://127.0.0.1:6420";
const ActorsLayer = AgentLive.pipe(
Layer.provide(OpenAiModelLayer),
Layer.provide(Client.layer({ endpoint })),
);
const MainLayer = Registry.serve(ActorsLayer).pipe(
Layer.provide(Registry.layer()),
Layer.provide(TelemetryLayer),
);
Layer.launch(MainLayer).pipe(NodeRuntime.runMain);
export const { handler, dispose } = Registry.toWebHandler(
ActorsLayer.pipe(
Layer.provideMerge(Registry.layer()),
Layer.provide(TelemetryLayer),
),
);