jd-opensource / jd-opensource/OxyGent
[Feature] Optional endpoint-observation FunctionHub example before external A2A delegation
- Dominant language
- Python
- Stars
- 2.1k
- Forks
- 278
- PR merge metrics
- No merged PRs in 30d
Description
**Is your feature request related to a problem? Please describe.**
OxyGent can resolve an external Agent Card and send a task through A2AClientAgent. For an operator evaluating a newly selected public counterparty, a parsable card or successful connection leaves a separate question: which endpoint properties were observed, and which remain unknown, before task data is sent?
I maintain Agent Guild as AgentTanuki. I would like to contribute an optional example using the existing FunctionHub interface. It would collect endpoint observations only when explicitly selected by the caller; it would not modify OxyGent's default agent behavior or make a delegation decision.
**Describe the solution you'd like**
A small example under examples/ would register an async agent_guild_preflight function. It would accept one deliberately selected public HTTP(S) endpoint, call the fixed free Guild /preflight?url= route, and return a bounded structured projection of the six checks, failed/unknown lists, verdict and exact target. The function would validate its inputs itself because FunctionTool._execute forwards argument values directly.
The example would explain that the complete target URL goes to Guild, which actively probes it and records the request. It would send no task text, history, authentication material or payment. A no_failed_checks verdict would retain unknowns and would not authorize delegation. Signature-field presence would not be presented as cryptographic verification; a payment-claim check would mean an HTTP 402 challenge, not settlement.
**Describe alternatives you've considered**
An operator can already connect Guild through StreamableMCPClient. The proposed FunctionHub example would keep a deliberately narrow input/output contract; it would not claim that the existing MCP client filters or sanitizes every remote tool. Operators using only their own known agents may not need this example.
**Additional context**
The proposed native seam is based on OxyGent cd96268de5814dfb4e0444cfd687f97508cf996a and Guild's [preflight source](https://github.com/AgentTanuki/agent-guild/blob/9cf6c561468e60afb77acdbddebfc5134a155e4f/live/guild/app/preflight.py). No OxyGent integration has been implemented or tested yet, and this proposal claims no independent users.
Your contribution guide starts code work from a PR welcome issue. Would this narrowly scoped example be useful, and is examples/tools/ the preferred location? If welcomed, I can prepare the example with real FunctionHub/FunctionTool execution tests using substituted HTTP, documentation, formatting and the required unit suite.
Contributor guide
Research direction
Start by reading the existing FunctionHub and FunctionTool interfaces and the examples/ layout, then inspect how FunctionTool._execute forwards arguments. Add an optional agent_guild_preflight example that validates one public HTTP(S) endpoint, calls the fixed Guild preflight route, and returns the bounded observations, lists, verdict, and exact target without sending task data. Verify it with substituted HTTP, documentation, formatting, and the required unit suite.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- api, tooling
- Issue type
- Feature
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100