@@ -21,7 +21,7 @@ import { Plugin } from "@/plugin"
2121import { Skill } from "../skill"
2222import { Effect , ServiceMap , Layer } from "effect"
2323import { InstanceState } from "@/effect/instance-state"
24- import { makeRuntime } from "@/effect/run-service"
24+ import { makeRunPromise } from "@/effect/run-service"
2525
2626export namespace Agent {
2727 export const Info = z
@@ -72,15 +72,13 @@ export namespace Agent {
7272 export const layer = Layer . effect (
7373 Service ,
7474 Effect . gen ( function * ( ) {
75- const config = yield * Config . Service
75+ const config = ( ) => Effect . promise ( ( ) => Config . get ( ) )
7676 const auth = yield * Auth . Service
77- const skill = yield * Skill . Service
78- const provider = yield * Provider . Service
7977
8078 const state = yield * InstanceState . make < State > (
8179 Effect . fn ( "Agent.state" ) ( function * ( ctx ) {
82- const cfg = yield * config . get ( )
83- const skillDirs = yield * skill . dirs ( )
80+ const cfg = yield * config ( )
81+ const skillDirs = yield * Effect . promise ( ( ) => Skill . dirs ( ) )
8482 const whitelistedDirs = [ Truncate . GLOB , ...skillDirs . map ( ( dir ) => path . join ( dir , "*" ) ) ]
8583
8684 const defaults = Permission . fromConfig ( {
@@ -150,6 +148,7 @@ export namespace Agent {
150148 permission : Permission . merge (
151149 defaults ,
152150 Permission . fromConfig ( {
151+ todoread : "deny" ,
153152 todowrite : "deny" ,
154153 } ) ,
155154 user ,
@@ -283,7 +282,7 @@ export namespace Agent {
283282 } )
284283
285284 const list = Effect . fnUntraced ( function * ( ) {
286- const cfg = yield * config . get ( )
285+ const cfg = yield * config ( )
287286 return pipe (
288287 agents ,
289288 values ( ) ,
@@ -295,7 +294,7 @@ export namespace Agent {
295294 } )
296295
297296 const defaultAgent = Effect . fnUntraced ( function * ( ) {
298- const c = yield * config . get ( )
297+ const c = yield * config ( )
299298 if ( c . default_agent ) {
300299 const agent = agents [ c . default_agent ]
301300 if ( ! agent ) throw new Error ( `default agent "${ c . default_agent } " not found` )
@@ -330,10 +329,10 @@ export namespace Agent {
330329 description : string
331330 model ?: { providerID : ProviderID ; modelID : ModelID }
332331 } ) {
333- const cfg = yield * config . get ( )
334- const model = input . model ?? ( yield * provider . defaultModel ( ) )
335- const resolved = yield * provider . getModel ( model . providerID , model . modelID )
336- const language = yield * provider . getLanguage ( resolved )
332+ const cfg = yield * config ( )
333+ const model = input . model ?? ( yield * Effect . promise ( ( ) => Provider . defaultModel ( ) ) )
334+ const resolved = yield * Effect . promise ( ( ) => Provider . getModel ( model . providerID , model . modelID ) )
335+ const language = yield * Effect . promise ( ( ) => Provider . getLanguage ( resolved ) )
337336
338337 const system = [ PROMPT_GENERATE ]
339338 yield * Effect . promise ( ( ) =>
@@ -393,14 +392,9 @@ export namespace Agent {
393392 } ) ,
394393 )
395394
396- export const defaultLayer = layer . pipe (
397- Layer . provide ( Provider . defaultLayer ) ,
398- Layer . provide ( Auth . defaultLayer ) ,
399- Layer . provide ( Config . defaultLayer ) ,
400- Layer . provide ( Skill . defaultLayer ) ,
401- )
395+ export const defaultLayer = layer . pipe ( Layer . provide ( Auth . layer ) )
402396
403- const { runPromise } = makeRuntime ( Service , defaultLayer )
397+ const runPromise = makeRunPromise ( Service , defaultLayer )
404398
405399 export async function get ( agent : string ) {
406400 return runPromise ( ( svc ) => svc . get ( agent ) )
0 commit comments