Skip to content

docs: proposal -- public seam for host-supplied tools at the Engine/prepare level - #161

Open
Brian Krabach (bkrabach) wants to merge 1 commit into
microsoft:mainfrom
bkrabach:proposal/host-supplied-tools-seam
Open

docs: proposal -- public seam for host-supplied tools at the Engine/prepare level#161
Brian Krabach (bkrabach) wants to merge 1 commit into
microsoft:mainfrom
bkrabach:proposal/host-supplied-tools-seam

Conversation

@bkrabach

Copy link
Copy Markdown
Contributor

Proposal doc: docs/HOST-TOOLS-PROPOSAL.md.

Filed as a docs PR rather than an issue -- this repo's Issues are disabled,
and there's no CONTRIBUTING.md/docs/designs/ proposal process currently
in the tree for me to match, so I picked the closest existing convention
(a flat doc under docs/, alongside INTEGRATION.md/ARCHITECTURE.md).
Happy to move/rename/close in favor of whatever process you'd actually
prefer -- including "wontfix, wait for v1," which this doc says explicitly
is a fine answer.

Short version: embedding Engine per docs/INTEGRATION.md, there's no
public way to hand it a host-declared tool. We had a reach-in
(session.coordinator.mount("tools", ...)) that worked -- it's the same
shape amplifier_agent_http/_session_runner.py already uses internally for
HostToolProxy -- but we deleted it on principle: your internals aren't our
contract. This proposes making the equivalent capability public at the
Engine/prepare layer, in the same shape as the existing
inject_provider/inject_routing_matrix functions.

We already see docs_v1/05-interface/tools.md's ToolsConfig(host_tools=[HostTool(...)])
covers exactly this for the create_agent facade, and we intend to move onto
it the moment it ships as code -- this is scoped only to the gap between now
and then.

No urgency implied; closing as "wait for v1" is a completely acceptable
outcome.

… level

Downstream-embedder proposal, not a spec change. We (a .dot-pipeline runner
embedding Engine per docs/INTEGRATION.md) used to reach into a hosted
session's own coordinator (session.coordinator.mount("tools", ...)) from our
turn_handler to hand it a host-declared tool -- the same call shape
amplifier_agent_http/_session_runner.py itself uses internally
(HostToolProxy, line ~134), so the mechanism is proven safe, just not public.
We deleted that reach-in on principle: coordinator is internals, not our
contract surface, and an embedder depending on it has no compatibility
guarantee.

Proposes a small, additive seam (illustrative shape: an inject_host_tools(prepared,
tools) alongside the existing inject_provider/inject_routing_matrix pattern)
and explicitly cites docs_v1/05-interface/tools.md's ToolsConfig(host_tools=[...])
as the real destination -- we intend to adopt the v1 facade the moment it
ships as code and are scoping this ask only to the gap between now and
then.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant