refactor(effect): rename permission service namespace
parent
ba26993361
commit
8e4af17a4b
|
|
@ -3,7 +3,7 @@ import { FileService } from "@/file"
|
|||
import { FileTimeService } from "@/file/time"
|
||||
import { FileWatcherService } from "@/file/watcher"
|
||||
import { FormatService } from "@/format"
|
||||
import { PermissionService } from "@/permission/service"
|
||||
import { PermissionEffect } from "@/permission/service"
|
||||
import { Instance } from "@/project/instance"
|
||||
import { VcsService } from "@/project/vcs"
|
||||
import { ProviderAuthService } from "@/provider/auth-service"
|
||||
|
|
@ -17,7 +17,7 @@ export { InstanceContext } from "./instance-context"
|
|||
|
||||
export type InstanceServices =
|
||||
| QuestionService
|
||||
| PermissionService.Service
|
||||
| PermissionEffect.Service
|
||||
| ProviderAuthService
|
||||
| FileWatcherService
|
||||
| VcsService
|
||||
|
|
@ -37,7 +37,7 @@ function lookup(_key: string) {
|
|||
const ctx = Layer.sync(InstanceContext, () => InstanceContext.of(Instance.current))
|
||||
return Layer.mergeAll(
|
||||
Layer.fresh(QuestionService.layer),
|
||||
Layer.fresh(PermissionService.layer),
|
||||
Layer.fresh(PermissionEffect.layer),
|
||||
Layer.fresh(ProviderAuthService.layer),
|
||||
Layer.fresh(FileWatcherService.layer).pipe(Layer.orDie),
|
||||
Layer.fresh(VcsService.layer),
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import { Config } from "@/config/config"
|
|||
import { fn } from "@/util/fn"
|
||||
import { Wildcard } from "@/util/wildcard"
|
||||
import os from "os"
|
||||
import { PermissionService as S } from "./service"
|
||||
import { PermissionEffect as S } from "./service"
|
||||
|
||||
export namespace PermissionNext {
|
||||
function expand(pattern: string): string {
|
||||
|
|
@ -53,9 +53,7 @@ export namespace PermissionNext {
|
|||
return rulesets.flat()
|
||||
}
|
||||
|
||||
export const ask = fn(S.AskInput, async (input) =>
|
||||
runPromiseInstance(S.Service.use((service) => service.ask(input))),
|
||||
)
|
||||
export const ask = fn(S.AskInput, async (input) => runPromiseInstance(S.Service.use((service) => service.ask(input))))
|
||||
|
||||
export const reply = fn(S.ReplyInput, async (input) =>
|
||||
runPromiseInstance(S.Service.use((service) => service.reply(input))),
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ import { Deferred, Effect, Layer, Schema, ServiceMap } from "effect"
|
|||
import z from "zod"
|
||||
import { PermissionID } from "./schema"
|
||||
|
||||
export namespace PermissionService {
|
||||
export namespace PermissionEffect {
|
||||
const log = Log.create({ service: "permission" })
|
||||
|
||||
export const Action = z.enum(["allow", "deny", "ask"]).meta({
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import { NodeFileSystem, NodePath } from "@effect/platform-node"
|
|||
import { Cause, Duration, Effect, FileSystem, Layer, Schedule, ServiceMap } from "effect"
|
||||
import path from "path"
|
||||
import type { Agent } from "../agent/agent"
|
||||
import { PermissionService } from "../permission/service"
|
||||
import { PermissionEffect } from "../permission/service"
|
||||
import { Identifier } from "../id/id"
|
||||
import { Log } from "../util/log"
|
||||
import { ToolID } from "./schema"
|
||||
|
|
@ -27,11 +27,15 @@ export namespace TruncateEffect {
|
|||
|
||||
function hasTaskTool(agent?: Agent.Info) {
|
||||
if (!agent?.permission) return false
|
||||
return PermissionService.evaluate("task", "*", agent.permission).action !== "deny"
|
||||
return PermissionEffect.evaluate("task", "*", agent.permission).action !== "deny"
|
||||
}
|
||||
|
||||
export interface Api {
|
||||
readonly cleanup: () => Effect.Effect<void>
|
||||
/**
|
||||
* Returns output unchanged when it fits within the limits, otherwise writes the full text
|
||||
* to the truncation directory and returns a preview plus a hint to inspect the saved file.
|
||||
*/
|
||||
readonly output: (text: string, options?: Options, agent?: Agent.Info) => Effect.Effect<Result>
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1005,7 +1005,7 @@ test("ask - abort should clear pending request", async () => {
|
|||
fn: async () => {
|
||||
const ctl = new AbortController()
|
||||
const ask = runtime.runPromise(
|
||||
S.PermissionService.Service.use((svc) =>
|
||||
S.PermissionEffect.Service.use((svc) =>
|
||||
svc.ask({
|
||||
sessionID: SessionID.make("session_test"),
|
||||
permission: "bash",
|
||||
|
|
|
|||
Loading…
Reference in New Issue