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

refactor(flags): route plan mode through runtime flags (#27320)

Shoubhit Dash 3 месяцев назад
Родитель
Сommit
098bdd8ae2

+ 4 - 1
packages/opencode/src/session/prompt.ts

@@ -51,6 +51,7 @@ import { InstanceState } from "@/effect/instance-state"
 import { TaskTool, type TaskPromptOps } from "@/tool/task"
 import { TaskTool, type TaskPromptOps } from "@/tool/task"
 import { SessionRunState } from "./run-state"
 import { SessionRunState } from "./run-state"
 import { EffectBridge } from "@/effect/bridge"
 import { EffectBridge } from "@/effect/bridge"
+import { RuntimeFlags } from "@/effect/runtime-flags"
 import { SyncEvent } from "@/sync"
 import { SyncEvent } from "@/sync"
 import { SessionEvent } from "@/v2/session-event"
 import { SessionEvent } from "@/v2/session-event"
 import { Modelv2 } from "@/v2/model"
 import { Modelv2 } from "@/v2/model"
@@ -202,6 +203,7 @@ export const layer = Layer.effect(
     const llm = yield* LLM.Service
     const llm = yield* LLM.Service
     const references = yield* Reference.Service
     const references = yield* Reference.Service
     const sync = yield* SyncEvent.Service
     const sync = yield* SyncEvent.Service
+    const flags = yield* RuntimeFlags.Service
     const runner = Effect.fn("SessionPrompt.runner")(function* () {
     const runner = Effect.fn("SessionPrompt.runner")(function* () {
       return yield* EffectBridge.make()
       return yield* EffectBridge.make()
     })
     })
@@ -384,7 +386,7 @@ export const layer = Layer.effect(
       const userMessage = input.messages.findLast((msg) => msg.info.role === "user")
       const userMessage = input.messages.findLast((msg) => msg.info.role === "user")
       if (!userMessage) return input.messages
       if (!userMessage) return input.messages
 
 
-      if (!Flag.OPENCODE_EXPERIMENTAL_PLAN_MODE) {
+      if (!flags.experimentalPlanMode) {
         if (input.agent.name === "plan") {
         if (input.agent.name === "plan") {
           userMessage.parts.push({
           userMessage.parts.push({
             id: PartID.ascending(),
             id: PartID.ascending(),
@@ -2024,6 +2026,7 @@ export const defaultLayer = Layer.suspend(() =>
         Bus.layer,
         Bus.layer,
         CrossSpawnSpawner.defaultLayer,
         CrossSpawnSpawner.defaultLayer,
         SyncEvent.defaultLayer,
         SyncEvent.defaultLayer,
+        RuntimeFlags.defaultLayer,
       ),
       ),
     ),
     ),
   ),
   ),

+ 1 - 0
packages/opencode/test/session/prompt.test.ts

@@ -206,6 +206,7 @@ function makeHttp() {
       Layer.provideMerge(trunc),
       Layer.provideMerge(trunc),
       Layer.provide(Instruction.defaultLayer),
       Layer.provide(Instruction.defaultLayer),
       Layer.provide(SystemPrompt.defaultLayer),
       Layer.provide(SystemPrompt.defaultLayer),
+      Layer.provide(RuntimeFlags.layer()),
       Layer.provideMerge(deps),
       Layer.provideMerge(deps),
     ),
     ),
   ).pipe(Layer.provide(summary))
   ).pipe(Layer.provide(summary))

+ 1 - 0
packages/opencode/test/session/snapshot-tool-race.test.ts

@@ -165,6 +165,7 @@ function makeHttp() {
       Layer.provideMerge(trunc),
       Layer.provideMerge(trunc),
       Layer.provide(Instruction.defaultLayer),
       Layer.provide(Instruction.defaultLayer),
       Layer.provide(SystemPrompt.defaultLayer),
       Layer.provide(SystemPrompt.defaultLayer),
+      Layer.provide(RuntimeFlags.layer()),
       Layer.provideMerge(deps),
       Layer.provideMerge(deps),
     ),
     ),
   )
   )