fix(instance): run bootstrap from instance store (#25475)
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
import { GlobalBus } from "@/bus/global"
|
||||
import { InstanceStore } from "@/project/instance-store"
|
||||
import * as Log from "@opencode-ai/core/util/log"
|
||||
import { Effect } from "effect"
|
||||
import { Event } from "./event"
|
||||
|
||||
const log = Log.create({ service: "server" })
|
||||
|
||||
export const emitGlobalDisposed = Effect.sync(() =>
|
||||
GlobalBus.emit("event", {
|
||||
directory: "global",
|
||||
payload: {
|
||||
type: Event.Disposed.type,
|
||||
properties: {},
|
||||
},
|
||||
}),
|
||||
)
|
||||
|
||||
export const disposeAllInstancesAndEmitGlobalDisposed = Effect.fn(
|
||||
"Server.disposeAllInstancesAndEmitGlobalDisposed",
|
||||
)(function* (options?: { swallowErrors?: boolean }) {
|
||||
const store = yield* InstanceStore.Service
|
||||
yield* Effect.gen(function* () {
|
||||
yield* (options?.swallowErrors
|
||||
? store.disposeAll().pipe(
|
||||
Effect.catchCause((cause) =>
|
||||
Effect.sync(() => {
|
||||
log.warn("global disposal failed", { cause })
|
||||
}),
|
||||
),
|
||||
)
|
||||
: store.disposeAll())
|
||||
yield* emitGlobalDisposed
|
||||
}).pipe(Effect.uninterruptible)
|
||||
})
|
||||
|
||||
export * as GlobalLifecycle from "./global-lifecycle"
|
||||
Reference in New Issue
Block a user