92408c62a6
`resolveLink` took an agent and used it for four appview reads plus the chat invite preview, so it now takes both clients as a `LinkResolvers` pair - the caller cannot know which branch a URL will take until it is parsed. That was the last DM_SERVICE_HEADERS site, so the constant is deleted. `resolveGif` never touched the agent at all (it is pure URL metadata work on what the picker already returned), so its parameter is dropped rather than replaced, along with the one on `fetchResolveGifQuery`. With the resolvers on clients, `apilib.post` loses the agent parameter the previous slice kept solely for them, and `composerStateToDraft` takes the resolver pair instead of minting a throwaway public agent. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>