refactor(opencode): reuse deferred MCP resolution

This commit is contained in:
Aiden Cline
2026-06-29 07:59:55 -05:00
parent 0bff5bf389
commit c2d619741b
4 changed files with 30 additions and 46 deletions
+3 -7
View File
@@ -1223,7 +1223,7 @@ export const layer = Layer.effect(
const bypassAgentCheck = lastUserMsg?.parts.some((p) => p.type === "agent") ?? false
const promptOps = yield* ops()
const tools = yield* SessionTools.resolve({
const resolvedTools = yield* SessionTools.resolve({
agent,
session,
model,
@@ -1240,6 +1240,7 @@ export const layer = Layer.effect(
Effect.provideService(Truncate.Service, truncate),
Effect.provideService(RuntimeFlags.Service, flags),
)
const tools = resolvedTools.tools
if (lastUser.format?.type === "json_schema") {
tools["StructuredOutput"] = createStructuredOutputTool({
@@ -1260,12 +1261,7 @@ export const layer = Layer.effect(
sys.environment(model),
instruction.system().pipe(Effect.orDie),
sys.mcp(agent, session.permission),
tools.search_deferred_tools && tools.call_deferred_tool
? SessionTools.deferredSystemPrompt({ agent, session, messages: msgs }).pipe(
Effect.provideService(MCP.Service, mcp),
Effect.provideService(RuntimeFlags.Service, flags),
)
: Effect.succeed(undefined),
Effect.succeed(resolvedTools.deferredSystemPrompt),
MessageV2.toModelMessagesEffect(msgs, model),
])
const system = [