mirror of
https://github.com/CopilotKit/CopilotKit.git
synced 2026-09-14 16:26:20 +08:00
947fe2142a
Fixes #5635. ## What Headers set directly on an `HttpAgent` registered via `agents__unsafe_dev_only` were silently replaced by the provider headers. Per-agent auth headers (like an `Authorization` for a self-hosted backend) got dropped, causing 401s. ## Why `AgentRegistry.applyHeadersToAgent` did `agent.headers = { ...core.headers }`, a full overwrite. The run handler and the react-core `useAgent` hook did the same. So an agent built with its own headers lost them on registration, on every `setHeaders`, and before each request. ## Fix Merge instead of replace. The registry captures each agent's own headers once (in a WeakMap, before the first apply) and rebuilds `{ ...ownHeaders, ...coreHeaders }`. Core wins on key conflicts, which keeps the existing "provider headers are authoritative" and logout/clear behavior. All header application now routes through one method, `CopilotKitCore.applyHeadersToAgent`, so runs never clobber per-agent headers. Vue and Angular benefit too: they dispatch runs through `core.runAgent` / `connectAgent`, so the merge is re-applied before every request. ## Tests - core: 3 new cases in `core-headers.test.ts` (preserve, merge, retain-across-setHeaders); existing overwrite and clear tests still pass. - react-core: new `use-agent-provider-headers.e2e.test.tsx` with a real provider and an HttpAgent that has its own headers. Verified locally: format, lint, full core + react-core suites, and both builds.