refactor(permission): remove async facade exports (#22342)

This commit is contained in:
Kit Langton
2026-04-13 19:33:58 -04:00
committed by GitHub
parent a06f40297b
commit d199648aeb
5 changed files with 462 additions and 531 deletions
-15
View File
@@ -2,7 +2,6 @@ import { Bus } from "@/bus"
import { BusEvent } from "@/bus/bus-event" import { BusEvent } from "@/bus/bus-event"
import { Config } from "@/config/config" import { Config } from "@/config/config"
import { InstanceState } from "@/effect/instance-state" import { InstanceState } from "@/effect/instance-state"
import { makeRuntime } from "@/effect/run-service"
import { ProjectID } from "@/project/schema" import { ProjectID } from "@/project/schema"
import { Instance } from "@/project/instance" import { Instance } from "@/project/instance"
import { MessageID, SessionID } from "@/session/schema" import { MessageID, SessionID } from "@/session/schema"
@@ -308,18 +307,4 @@ export namespace Permission {
} }
export const defaultLayer = layer.pipe(Layer.provide(Bus.layer)) export const defaultLayer = layer.pipe(Layer.provide(Bus.layer))
export const { runPromise } = makeRuntime(Service, defaultLayer)
export async function ask(input: z.infer<typeof AskInput>) {
return runPromise((s) => s.ask(input))
}
export async function reply(input: z.infer<typeof ReplyInput>) {
return runPromise((s) => s.reply(input))
}
export async function list() {
return runPromise((s) => s.list())
}
} }
@@ -1,6 +1,7 @@
import { Hono } from "hono" import { Hono } from "hono"
import { describeRoute, validator, resolver } from "hono-openapi" import { describeRoute, validator, resolver } from "hono-openapi"
import z from "zod" import z from "zod"
import { AppRuntime } from "@/effect/app-runtime"
import { Permission } from "@/permission" import { Permission } from "@/permission"
import { PermissionID } from "@/permission/schema" import { PermissionID } from "@/permission/schema"
import { errors } from "../error" import { errors } from "../error"
@@ -36,11 +37,15 @@ export const PermissionRoutes = lazy(() =>
async (c) => { async (c) => {
const params = c.req.valid("param") const params = c.req.valid("param")
const json = c.req.valid("json") const json = c.req.valid("json")
await Permission.reply({ await AppRuntime.runPromise(
requestID: params.requestID, Permission.Service.use((svc) =>
reply: json.reply, svc.reply({
message: json.message, requestID: params.requestID,
}) reply: json.reply,
message: json.message,
}),
),
)
return c.json(true) return c.json(true)
}, },
) )
@@ -62,7 +67,7 @@ export const PermissionRoutes = lazy(() =>
}, },
}), }),
async (c) => { async (c) => {
const permissions = await Permission.list() const permissions = await AppRuntime.runPromise(Permission.Service.use((svc) => svc.list()))
return c.json(permissions) return c.json(permissions)
}, },
), ),
@@ -1070,10 +1070,14 @@ export const SessionRoutes = lazy(() =>
validator("json", z.object({ response: Permission.Reply })), validator("json", z.object({ response: Permission.Reply })),
async (c) => { async (c) => {
const params = c.req.valid("param") const params = c.req.valid("param")
Permission.reply({ await AppRuntime.runPromise(
requestID: params.permissionID, Permission.Service.use((svc) =>
reply: c.req.valid("json").response, svc.reply({
}) requestID: params.permissionID,
reply: c.req.valid("json").response,
}),
),
)
return c.json(true) return c.json(true)
}, },
), ),
+14 -9
View File
@@ -21,6 +21,7 @@ import { Wildcard } from "@/util/wildcard"
import { SessionID } from "@/session/schema" import { SessionID } from "@/session/schema"
import { Auth } from "@/auth" import { Auth } from "@/auth"
import { Installation } from "@/installation" import { Installation } from "@/installation"
import { AppRuntime } from "@/effect/app-runtime"
export namespace LLM { export namespace LLM {
const log = Log.create({ service: "llm" }) const log = Log.create({ service: "llm" })
@@ -305,15 +306,19 @@ export namespace LLM {
} }
}) })
const uniquePatterns = [...new Set(toolPatterns)] as string[] const uniquePatterns = [...new Set(toolPatterns)] as string[]
await Permission.ask({ await AppRuntime.runPromise(
id, Permission.Service.use((svc) =>
sessionID: SessionID.make(input.sessionID), svc.ask({
permission: "workflow_tool_approval", id,
patterns: uniquePatterns, sessionID: SessionID.make(input.sessionID),
metadata: { tools: approvalTools }, permission: "workflow_tool_approval",
always: uniquePatterns, patterns: uniquePatterns,
ruleset: [], metadata: { tools: approvalTools },
}) always: uniquePatterns,
ruleset: [],
}),
),
)
for (const name of uniqueNames) approvedToolsForSession.add(name) for (const name of uniqueNames) approvedToolsForSession.add(name)
workflowModel.sessionPreapprovedTools = [...(workflowModel.sessionPreapprovedTools ?? []), ...uniqueNames] workflowModel.sessionPreapprovedTools = [...(workflowModel.sessionPreapprovedTools ?? []), ...uniqueNames]
return { approved: true } return { approved: true }
File diff suppressed because it is too large Load Diff