Ver Fonte

fix(opencode): remove deferred MCP step gate

Aiden Cline há 1 mês atrás
pai
commit
421e33e531

+ 1 - 2
packages/opencode/src/session/mcp-tools.ts

@@ -51,7 +51,6 @@ interface Input {
   bypassAgentCheck: boolean
   messages: SessionV1.WithParts[]
   promptOps: TaskPromptOps
-  canDeferMcpTools?: boolean
 }
 
 interface DeferredToolDescriptor {
@@ -248,7 +247,7 @@ export const resolve = Effect.fn("SessionMcpTools.resolve")(function* (input: In
     Object.entries(mcpTools).filter(([key]) => userTools?.[key] !== false && !mcpDisabled.has(key)),
   )
   const deferredDescriptors =
-    (input.canDeferMcpTools ?? true) && flags.experimentalToolSearch && Object.keys(allowedMcpTools).length > 0
+    flags.experimentalToolSearch && Object.keys(allowedMcpTools).length > 0
       ? yield* deferredToolDescriptors(allowedMcpTools)
       : []
   const deferMcpTools =

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

@@ -1231,7 +1231,6 @@ export const layer = Layer.effect(
               bypassAgentCheck,
               messages: msgs,
               promptOps,
-              canDeferMcpTools: maxSteps - step >= 2,
             }).pipe(
               Effect.provideService(Plugin.Service, plugin),
               Effect.provideService(Permission.Service, permission),

+ 0 - 1
packages/opencode/src/session/tools.ts

@@ -25,7 +25,6 @@ export const resolve = Effect.fn("SessionTools.resolve")(function* (input: {
   bypassAgentCheck: boolean
   messages: SessionV1.WithParts[]
   promptOps: TaskPromptOps
-  canDeferMcpTools?: boolean
 }) {
   const tools: Record<string, Tool> = {}
   const run = yield* EffectBridge.make()

+ 2 - 11
packages/opencode/test/session/tools.test.ts

@@ -132,7 +132,7 @@ const belowThresholdIt = makeIt({
   queryDescription: "Natural language analytics query",
 })
 
-function resolveToolResult(input: { messages?: SessionV1.WithParts[]; canDeferMcpTools?: boolean } = {}) {
+function resolveToolResult(input: { messages?: SessionV1.WithParts[] } = {}) {
   return SessionTools.resolve({
     agent,
     model,
@@ -141,11 +141,10 @@ function resolveToolResult(input: { messages?: SessionV1.WithParts[]; canDeferMc
     bypassAgentCheck: false,
     messages: input.messages ?? [],
     promptOps,
-    canDeferMcpTools: input.canDeferMcpTools,
   })
 }
 
-function resolveTools(input: { messages?: SessionV1.WithParts[]; canDeferMcpTools?: boolean } = {}) {
+function resolveTools(input: { messages?: SessionV1.WithParts[] } = {}) {
   return resolveToolResult(input).pipe(Effect.map((result) => result.tools))
 }
 
@@ -236,12 +235,4 @@ describe("session.tools", () => {
       expect(Object.keys(tools).sort()).toEqual(["posthog_feature_flags", "posthog_query_trends"])
     }),
   )
-
-  deferredIt.instance("keeps MCP tools direct when deferred search cannot finish before the last step", () =>
-    Effect.gen(function* () {
-      const tools = yield* resolveTools({ canDeferMcpTools: false })
-
-      expect(Object.keys(tools).sort()).toEqual(["posthog_feature_flags", "posthog_query_trends"])
-    }),
-  )
 })