fix(opencode): remove deferred MCP step gate
This commit is contained in:
parent
c2d619741b
commit
421e33e531
4 changed files with 3 additions and 15 deletions
|
|
@ -51,7 +51,6 @@ interface Input {
|
||||||
bypassAgentCheck: boolean
|
bypassAgentCheck: boolean
|
||||||
messages: SessionV1.WithParts[]
|
messages: SessionV1.WithParts[]
|
||||||
promptOps: TaskPromptOps
|
promptOps: TaskPromptOps
|
||||||
canDeferMcpTools?: boolean
|
|
||||||
}
|
}
|
||||||
|
|
||||||
interface DeferredToolDescriptor {
|
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)),
|
Object.entries(mcpTools).filter(([key]) => userTools?.[key] !== false && !mcpDisabled.has(key)),
|
||||||
)
|
)
|
||||||
const deferredDescriptors =
|
const deferredDescriptors =
|
||||||
(input.canDeferMcpTools ?? true) && flags.experimentalToolSearch && Object.keys(allowedMcpTools).length > 0
|
flags.experimentalToolSearch && Object.keys(allowedMcpTools).length > 0
|
||||||
? yield* deferredToolDescriptors(allowedMcpTools)
|
? yield* deferredToolDescriptors(allowedMcpTools)
|
||||||
: []
|
: []
|
||||||
const deferMcpTools =
|
const deferMcpTools =
|
||||||
|
|
|
||||||
|
|
@ -1231,7 +1231,6 @@ export const layer = Layer.effect(
|
||||||
bypassAgentCheck,
|
bypassAgentCheck,
|
||||||
messages: msgs,
|
messages: msgs,
|
||||||
promptOps,
|
promptOps,
|
||||||
canDeferMcpTools: maxSteps - step >= 2,
|
|
||||||
}).pipe(
|
}).pipe(
|
||||||
Effect.provideService(Plugin.Service, plugin),
|
Effect.provideService(Plugin.Service, plugin),
|
||||||
Effect.provideService(Permission.Service, permission),
|
Effect.provideService(Permission.Service, permission),
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,6 @@ export const resolve = Effect.fn("SessionTools.resolve")(function* (input: {
|
||||||
bypassAgentCheck: boolean
|
bypassAgentCheck: boolean
|
||||||
messages: SessionV1.WithParts[]
|
messages: SessionV1.WithParts[]
|
||||||
promptOps: TaskPromptOps
|
promptOps: TaskPromptOps
|
||||||
canDeferMcpTools?: boolean
|
|
||||||
}) {
|
}) {
|
||||||
const tools: Record<string, Tool> = {}
|
const tools: Record<string, Tool> = {}
|
||||||
const run = yield* EffectBridge.make()
|
const run = yield* EffectBridge.make()
|
||||||
|
|
|
||||||
|
|
@ -132,7 +132,7 @@ const belowThresholdIt = makeIt({
|
||||||
queryDescription: "Natural language analytics query",
|
queryDescription: "Natural language analytics query",
|
||||||
})
|
})
|
||||||
|
|
||||||
function resolveToolResult(input: { messages?: SessionV1.WithParts[]; canDeferMcpTools?: boolean } = {}) {
|
function resolveToolResult(input: { messages?: SessionV1.WithParts[] } = {}) {
|
||||||
return SessionTools.resolve({
|
return SessionTools.resolve({
|
||||||
agent,
|
agent,
|
||||||
model,
|
model,
|
||||||
|
|
@ -141,11 +141,10 @@ function resolveToolResult(input: { messages?: SessionV1.WithParts[]; canDeferMc
|
||||||
bypassAgentCheck: false,
|
bypassAgentCheck: false,
|
||||||
messages: input.messages ?? [],
|
messages: input.messages ?? [],
|
||||||
promptOps,
|
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))
|
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"])
|
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"])
|
|
||||||
}),
|
|
||||||
)
|
|
||||||
})
|
})
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue