You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Browse filesBrowse the repository at this point in the historyBrowse files
authored
Name a vendor's error as the vendor's to a Bot running its own loop, as the in-process door does (#569)
A vendor that says no by answering `{ isError: true }` with a sentence,
the way an MCP server refuses, reaches a Bot's model through one of two
doors to the same `callTool`. The in-process door (`grantedTools`) has
named that sentence as the vendor's since #97, because handing it over
as content cost a diagnosis: Google's "The caller does not have
permission" read as a result, and the model told the person it had no
access to their Drive.
`/api/agent-tools/call`, the door a framework Bot calls back through,
answered with the bare text. Neither framework Bot words it on the way
through: the LangGraph Bot passes an `isError` answer on untouched, and
the Python LangGraph Bot reads only `text`. So on those Bots the model
was still handed the vendor's refusal as an ordinary result.
The wording now lives in one helper, `vendorAnswer`, and both doors use
it. A result that is not an error is unchanged, and so are this
deployment's own refusals, which keep `REFUSAL_MARKER` and never reach
this helper.
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: David McKay <david@copilotkit.ai>
0 commit comments