Просмотр исходного кода

fix(opencode): scope reference readiness wait

Dax Raad 2 месяцев назад
Родитель
Сommit
6ea3e6698a
2 измененных файлов с 6 добавлено и 6 удалено
  1. 6 4
      packages/opencode/src/agent/agent.ts
  2. 0 2
      packages/opencode/src/session/system.ts

+ 6 - 4
packages/opencode/src/agent/agent.ts

@@ -99,10 +99,12 @@ export const layer = Layer.effect(
       Effect.fn("Agent.state")(function* (ctx) {
       Effect.fn("Agent.state")(function* (ctx) {
         const cfg = yield* config.get()
         const cfg = yield* config.get()
         const skillDirs = yield* skill.dirs()
         const skillDirs = yield* skill.dirs()
-        const referenceDirs = yield* Effect.gen(function* () {
-          yield* (yield* PluginV2.Service).wait(PluginV2.ID.make("core/config-reference"))
-          return (yield* (yield* Reference.Service).list()).map((reference) => reference.path)
-        }).pipe(Effect.provide(locations.get(Location.Ref.make({ directory: AbsolutePath.make(ctx.directory) }))))
+        const referenceDirs = Object.keys(cfg.references ?? cfg.reference ?? {}).length
+          ? yield* Effect.gen(function* () {
+              yield* (yield* PluginV2.Service).wait(PluginV2.ID.make("core/config-reference"))
+              return (yield* (yield* Reference.Service).list()).map((reference) => reference.path)
+            }).pipe(Effect.provide(locations.get(Location.Ref.make({ directory: AbsolutePath.make(ctx.directory) }))))
+          : []
         const whitelistedDirs = [
         const whitelistedDirs = [
           Truncate.GLOB,
           Truncate.GLOB,
           path.join(Global.Path.tmp, "*"),
           path.join(Global.Path.tmp, "*"),

+ 0 - 2
packages/opencode/src/session/system.ts

@@ -20,7 +20,6 @@ import { AbsolutePath } from "@opencode-ai/core/schema"
 import { Location } from "@opencode-ai/core/location"
 import { Location } from "@opencode-ai/core/location"
 import { LocationServiceMap } from "@opencode-ai/core/location-layer"
 import { LocationServiceMap } from "@opencode-ai/core/location-layer"
 import { Reference } from "@opencode-ai/core/reference"
 import { Reference } from "@opencode-ai/core/reference"
-import { PluginV2 } from "@opencode-ai/core/plugin"
 
 
 export function provider(model: Provider.Model) {
 export function provider(model: Provider.Model) {
   if (model.api.id.includes("gpt-4") || model.api.id.includes("o1") || model.api.id.includes("o3"))
   if (model.api.id.includes("gpt-4") || model.api.id.includes("o1") || model.api.id.includes("o3"))
@@ -55,7 +54,6 @@ export const layer = Layer.effect(
       environment: Effect.fn("SystemPrompt.environment")(function* (model: Provider.Model) {
       environment: Effect.fn("SystemPrompt.environment")(function* (model: Provider.Model) {
         const ctx = yield* InstanceState.context
         const ctx = yield* InstanceState.context
         const references = yield* Effect.gen(function* () {
         const references = yield* Effect.gen(function* () {
-          yield* (yield* PluginV2.Service).wait(PluginV2.ID.make("core/config-reference"))
           return (yield* (yield* Reference.Service).list()).filter((reference) => reference.description !== undefined)
           return (yield* (yield* Reference.Service).list()).filter((reference) => reference.description !== undefined)
         }).pipe(Effect.provide(locations.get(Location.Ref.make({ directory: AbsolutePath.make(ctx.directory) }))))
         }).pipe(Effect.provide(locations.get(Location.Ref.make({ directory: AbsolutePath.make(ctx.directory) }))))
         return [
         return [