|
|
@@ -1,9 +1,12 @@
|
|
|
import { EffectBridge } from "@/effect/bridge"
|
|
|
import type { InstanceContext } from "@/project/instance"
|
|
|
import { InstanceStore } from "@/project/instance-store"
|
|
|
+import * as Log from "@opencode-ai/core/util/log"
|
|
|
import { Effect } from "effect"
|
|
|
import { HttpEffect, HttpMiddleware, HttpServerRequest } from "effect/unstable/http"
|
|
|
|
|
|
+const log = Log.create({ service: "server" })
|
|
|
+
|
|
|
type MarkedInstance = {
|
|
|
ctx: InstanceContext
|
|
|
store: InstanceStore.Interface
|
|
|
@@ -47,6 +50,8 @@ export const disposeMiddleware: HttpMiddleware.HttpMiddleware = (effect) =>
|
|
|
const marked = disposeAfterResponse.get(request.source)
|
|
|
if (!marked) return response
|
|
|
disposeAfterResponse.delete(request.source)
|
|
|
- yield* Effect.uninterruptible(marked.bridge.run(marked.store.dispose(marked.ctx)))
|
|
|
+ yield* Effect.uninterruptible(marked.bridge.run(marked.store.dispose(marked.ctx))).pipe(
|
|
|
+ Effect.catchCause((cause) => Effect.sync(() => log.warn("instance disposal failed", { cause }))),
|
|
|
+ )
|
|
|
return response
|
|
|
})
|