Skip to content

Commit b1dd119

Browse files
rekram1-nodekitlangton
authored andcommitted
chore: effectify agent.ts (anomalyco#18971)
Co-authored-by: Kit Langton <kit.langton@gmail.com>
1 parent d294dad commit b1dd119

1 file changed

Lines changed: 13 additions & 19 deletions

File tree

packages/opencode/src/agent/agent.ts

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import { Plugin } from "@/plugin"
2121
import { Skill } from "../skill"
2222
import { Effect, ServiceMap, Layer } from "effect"
2323
import { InstanceState } from "@/effect/instance-state"
24-
import { makeRuntime } from "@/effect/run-service"
24+
import { makeRunPromise } from "@/effect/run-service"
2525

2626
export 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

Comments
 (0)