From b92a21eb04b169e45626f17bb113ef6242722250 Mon Sep 17 00:00:00 2001 From: Andy Lo-A-Foe Date: Wed, 29 Apr 2026 21:21:26 +0200 Subject: [PATCH] feat(pico): pass client metadata to inbound context Allows Pico clients to include a metadata object in message payloads. String values are merged into the channel metadata, enabling clients to pass headers (e.g., mcp:Authorization) that flow through to MCP tool calls via the dynamic headers mechanism. Co-Authored-By: Claude Opus 4.5 --- pkg/channels/pico/pico.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkg/channels/pico/pico.go b/pkg/channels/pico/pico.go index d1de8f4d5..87e13f701 100644 --- a/pkg/channels/pico/pico.go +++ b/pkg/channels/pico/pico.go @@ -948,6 +948,14 @@ func (c *PicoChannel) handleMessageSend(pc *picoConn, msg PicoMessage) { "conn_id": pc.id, } + if payloadMeta, ok := msg.Payload["metadata"].(map[string]any); ok { + for k, v := range payloadMeta { + if s, ok := v.(string); ok && s != "" { + metadata[k] = s + } + } + } + logger.DebugCF("pico", "Received message", map[string]any{ "session_id": sessionID, "preview": truncate(content, 50),