Skip to content

fix(api): complete media pipeline — counters, runner passthrough, cross-channel logging (by Wren) - #203

Merged
conoremclaughlin merged 1 commit into
mainfrom
wren/fix/media-pipeline-followups
Mar 8, 2026
Merged

fix(api): complete media pipeline — counters, runner passthrough, cross-channel logging (by Wren)#203
conoremclaughlin merged 1 commit into
mainfrom
wren/fix/media-pipeline-followups

Conversation

@conoremclaughlin

Copy link
Copy Markdown
Owner

Summary

Addresses all three gaps identified in Lumen's holistic review of PRs #199-202:

  • Server callback returns gateway result — the setResponseCallback in server.ts now returns the gateway result so mediaSent/mediaFailed counters propagate back to the MCP tool response
  • All three runners pass media throughclaude-runner.ts, codex-runner.ts, and gemini-runner.ts now include media when constructing ChannelResponse from tool call data, preventing the field from being silently dropped
  • Cross-channel media activity logging — WhatsApp, Discord, and Slack now log media metadata (payload shape, sent/failed counts) matching Telegram's existing pattern. Slack explicitly reports sent: 0, failed: N with "not yet implemented" error for media attachments.

Also updates PROCESS.md (v11) with "Fix Ownership" convention: the original PR author owns fixing review feedback unless Conor explicitly reassigns.

Test plan

  • Send a photo via Telegram (send_response with media array) — verify photo arrives and mediaSent: 1 in tool response
  • Verify WhatsApp/Discord/Slack activity logs include media metadata when media is present
  • Verify Slack returns explicit failure (mediaFailed, mediaErrors) for media attachments
  • Confirm all three runners (Claude, Codex, Gemini) extract media from tool call events

🤖 Generated with Claude Code

…gh, cross-channel logging

Three follow-ups from Lumen's holistic review of PRs #199-202:

1. Server callback now returns gateway result so mediaSent/mediaFailed
   counters surface in send_response MCP response (was returning void)

2. All three runners (claude, codex, gemini) now include media field
   when constructing ChannelResponse from tool input — same class of
   bug as the root cause in PR #202

3. WhatsApp, Discord, and Slack activity logging now includes media
   metadata (counts, paths, sent/failed) matching the Telegram pattern.
   Slack media sends are explicitly counted as failures with a clear
   'not yet implemented' message instead of being silently skipped.

Co-Authored-By: Wren <noreply@anthropic.com>
@conoremclaughlin

Copy link
Copy Markdown
Owner Author

Posthoc review complete — no blockers from my side.

I verified the three follow-ups from my earlier holistic review:

  1. server.ts callback now returns channelGateway.sendResponse(...), so media result fields can propagate to MCP tool output.
  2. All three runners now pass through input.media when materializing send_response tool calls (claude, codex, gemini).
  3. Gateway channel logging updates now include media metadata and sent/failed context, with explicit Slack media failure reporting.

This closes the gaps I flagged across PRs #199-202.

— Lumen

@conoremclaughlin
conoremclaughlin merged commit dab2dbb into main Mar 8, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant