refactor(httpapi): drop session prompt bridge (#25210)
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
import * as InstanceState from "@/effect/instance-state"
|
import * as InstanceState from "@/effect/instance-state"
|
||||||
import { EffectBridge } from "@/effect/bridge"
|
import { InstanceRef, WorkspaceRef } from "@/effect/instance-ref"
|
||||||
import { Agent } from "@/agent/agent"
|
import { Agent } from "@/agent/agent"
|
||||||
import { Bus } from "@/bus"
|
import { Bus } from "@/bus"
|
||||||
import { Command } from "@/command"
|
import { Command } from "@/command"
|
||||||
@@ -259,15 +259,14 @@ export const sessionHandlers = HttpApiBuilder.group(InstanceHttpApi, "session",
|
|||||||
params: { sessionID: SessionID }
|
params: { sessionID: SessionID }
|
||||||
payload: typeof PromptPayload.Type
|
payload: typeof PromptPayload.Type
|
||||||
}) {
|
}) {
|
||||||
const bridge = yield* EffectBridge.make()
|
const instance = yield* InstanceState.context
|
||||||
|
const workspace = yield* InstanceState.workspaceID
|
||||||
return HttpServerResponse.stream(
|
return HttpServerResponse.stream(
|
||||||
Stream.fromEffect(
|
Stream.fromEffect(
|
||||||
bridge.run(
|
promptSvc.prompt({
|
||||||
promptSvc.prompt({
|
...ctx.payload,
|
||||||
...ctx.payload,
|
sessionID: ctx.params.sessionID,
|
||||||
sessionID: ctx.params.sessionID,
|
}).pipe(Effect.provideService(InstanceRef, instance), Effect.provideService(WorkspaceRef, workspace)),
|
||||||
}),
|
|
||||||
),
|
|
||||||
).pipe(
|
).pipe(
|
||||||
Stream.map((message) => JSON.stringify(message)),
|
Stream.map((message) => JSON.stringify(message)),
|
||||||
Stream.encodeText,
|
Stream.encodeText,
|
||||||
@@ -280,10 +279,13 @@ export const sessionHandlers = HttpApiBuilder.group(InstanceHttpApi, "session",
|
|||||||
params: { sessionID: SessionID }
|
params: { sessionID: SessionID }
|
||||||
payload: typeof PromptPayload.Type
|
payload: typeof PromptPayload.Type
|
||||||
}) {
|
}) {
|
||||||
const bridge = yield* EffectBridge.make()
|
const instance = yield* InstanceState.context
|
||||||
yield* Effect.sync(() => {
|
const workspace = yield* InstanceState.workspaceID
|
||||||
bridge.fork(
|
yield* Effect.sync(() =>
|
||||||
|
Effect.runFork(
|
||||||
promptSvc.prompt({ ...ctx.payload, sessionID: ctx.params.sessionID }).pipe(
|
promptSvc.prompt({ ...ctx.payload, sessionID: ctx.params.sessionID }).pipe(
|
||||||
|
Effect.provideService(InstanceRef, instance),
|
||||||
|
Effect.provideService(WorkspaceRef, workspace),
|
||||||
Effect.catchCause((cause) =>
|
Effect.catchCause((cause) =>
|
||||||
Effect.gen(function* () {
|
Effect.gen(function* () {
|
||||||
yield* Effect.logError("prompt_async failed", { sessionID: ctx.params.sessionID, cause })
|
yield* Effect.logError("prompt_async failed", { sessionID: ctx.params.sessionID, cause })
|
||||||
@@ -294,8 +296,8 @@ export const sessionHandlers = HttpApiBuilder.group(InstanceHttpApi, "session",
|
|||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
),
|
||||||
})
|
)
|
||||||
return HttpApiSchema.NoContent.make()
|
return HttpApiSchema.NoContent.make()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user