mirror of
https://github.com/getpaseo/paseo.git
synced 2026-07-29 12:01:31 +00:00
Route agent MCP parent via query param
This commit is contained in:
@@ -231,6 +231,17 @@ const DEFAULT_AGENT_CONTROL_MCP: AgentControlMcpConfig = {
|
||||
},
|
||||
};
|
||||
|
||||
function appendCallerAgentId(url: string, agentId: string): string {
|
||||
try {
|
||||
const parsed = new URL(url);
|
||||
parsed.searchParams.set("callerAgentId", agentId);
|
||||
return parsed.toString();
|
||||
} catch {
|
||||
const separator = url.includes("?") ? "&" : "?";
|
||||
return `${url}${separator}callerAgentId=${encodeURIComponent(agentId)}`;
|
||||
}
|
||||
}
|
||||
|
||||
export function extractUserMessageText(
|
||||
content: string | ClaudeContentChunk[]
|
||||
): string | null {
|
||||
@@ -690,16 +701,14 @@ class ClaudeAgentSession implements AgentSession {
|
||||
|
||||
// Always include the agent-control MCP server so agents can launch other agents
|
||||
const agentControlConfig = this.agentControlMcp ?? DEFAULT_AGENT_CONTROL_MCP;
|
||||
// Merge base headers with the caller agent ID header for parent-child relationships
|
||||
const agentControlHeaders: Record<string, string> = {
|
||||
...agentControlConfig.headers,
|
||||
...(this.managedAgentId ? { "X-Caller-Agent-Id": this.managedAgentId } : {}),
|
||||
};
|
||||
const agentControlUrl = this.managedAgentId
|
||||
? appendCallerAgentId(agentControlConfig.url, this.managedAgentId)
|
||||
: agentControlConfig.url;
|
||||
const defaultMcpServers: Record<string, ClaudeMcpServerConfig> = {
|
||||
"agent-control": {
|
||||
type: "http",
|
||||
url: agentControlConfig.url,
|
||||
...(Object.keys(agentControlHeaders).length > 0 ? { headers: agentControlHeaders } : {}),
|
||||
url: agentControlUrl,
|
||||
...(agentControlConfig.headers ? { headers: agentControlConfig.headers } : {}),
|
||||
},
|
||||
playwright: {
|
||||
type: "stdio",
|
||||
|
||||
@@ -185,8 +185,14 @@ async function main() {
|
||||
});
|
||||
return;
|
||||
}
|
||||
// Extract caller agent ID from header (sent by agents when connecting)
|
||||
const callerAgentId = req.header("X-Caller-Agent-Id");
|
||||
// Extract optional caller agent ID from query string (sent by agents when connecting)
|
||||
const callerAgentIdRaw = req.query.callerAgentId;
|
||||
const callerAgentId =
|
||||
typeof callerAgentIdRaw === "string"
|
||||
? callerAgentIdRaw
|
||||
: Array.isArray(callerAgentIdRaw)
|
||||
? callerAgentIdRaw[0]
|
||||
: undefined;
|
||||
transport = await createAgentMcpTransport(callerAgentId);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user