diff --git a/packages/opencode/src/session/mcp-tools.ts b/packages/opencode/src/session/mcp-tools.ts index ee32958d559..7e89c9367f2 100644 --- a/packages/opencode/src/session/mcp-tools.ts +++ b/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 = diff --git a/packages/opencode/src/session/prompt.ts b/packages/opencode/src/session/prompt.ts index 142f24462cb..9f8c9efbb3f 100644 --- a/packages/opencode/src/session/prompt.ts +++ b/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), diff --git a/packages/opencode/src/session/tools.ts b/packages/opencode/src/session/tools.ts index 073d54fad53..4a86ddeb7ca 100644 --- a/packages/opencode/src/session/tools.ts +++ b/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 = {} const run = yield* EffectBridge.make() diff --git a/packages/opencode/test/session/tools.test.ts b/packages/opencode/test/session/tools.test.ts index acd261808d4..6405c6893b6 100644 --- a/packages/opencode/test/session/tools.test.ts +++ b/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"]) - }), - ) })