|
|
@@ -1,4 +1,4 @@
|
|
|
-import { Layer, ManagedRuntime } from "effect"
|
|
|
+import { Effect, Layer, ManagedRuntime } from "effect"
|
|
|
import { attach } from "./run-service"
|
|
|
import * as Observability from "@opencode-ai/core/effect/observability"
|
|
|
|
|
|
@@ -40,6 +40,7 @@ import { Command } from "@/command"
|
|
|
import { Truncate } from "@/tool/truncate"
|
|
|
import { ToolRegistry } from "@/tool/registry"
|
|
|
import { Format } from "@/format"
|
|
|
+import { InstanceBootstrap } from "@/project/bootstrap"
|
|
|
import { InstanceStore } from "@/project/instance-store"
|
|
|
import { Project } from "@/project/project"
|
|
|
import { Vcs } from "@/project/vcs"
|
|
|
@@ -93,6 +94,7 @@ export const AppLayer = Layer.mergeAll(
|
|
|
Truncate.defaultLayer,
|
|
|
ToolRegistry.defaultLayer,
|
|
|
Format.defaultLayer,
|
|
|
+ InstanceBootstrap.defaultLayer,
|
|
|
InstanceStore.defaultLayer,
|
|
|
Project.defaultLayer,
|
|
|
Vcs.defaultLayer,
|
|
|
@@ -130,3 +132,15 @@ export const AppRuntime: Runtime = {
|
|
|
},
|
|
|
dispose: () => rt.dispose(),
|
|
|
}
|
|
|
+
|
|
|
+let bootstrapRun: Promise<Effect.Effect<void>>
|
|
|
+export function getBootstrapRunEffect(): Promise<Effect.Effect<void>> {
|
|
|
+ if (!bootstrapRun) {
|
|
|
+ bootstrapRun = AppRuntime.runPromise(
|
|
|
+ Effect.gen(function* () {
|
|
|
+ return (yield* InstanceBootstrap.Service).run
|
|
|
+ }),
|
|
|
+ )
|
|
|
+ }
|
|
|
+ return bootstrapRun
|
|
|
+}
|