zeroclaw/tests
Argenis dbd8c77519
feat(channels): add automatic media understanding pipeline (#4402)
* feat(channels): add automatic media understanding pipeline for inbound messages

Add MediaPipeline that pre-processes inbound channel message attachments
before the agent sees them:

- Audio: transcribed via existing transcription infrastructure, annotated
  as [Audio transcription: ...]
- Images: annotated with [Image: <file> attached] (vision-aware)
- Video: annotated with [Video: <file> attached] (placeholder for future API)

The pipeline is opt-in via [media_pipeline] config section (default: disabled).
Individual media types can be toggled independently.

Changes:
- New src/channels/media_pipeline.rs with MediaPipeline struct and tests
- New MediaPipelineConfig in config/schema.rs
- Added attachments field to ChannelMessage for media pass-through
- Wired pipeline into process_channel_message after hooks, before agent

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(channels): add attachments field to integration test fixtures

Add missing `attachments: vec![]` to all ChannelMessage struct literals
in channel_matrix.rs and channel_routing.rs after the new attachments
field was added to the struct in traits.rs.

Also fix schema.rs test compilation: make TempDir import unconditional
and add explicit type annotations on tokio::fs calls to resolve type
inference errors in the bootstrap file tests.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(channels): add missing attachments field to gmail_push and discord_history constructors

These channels were added to master after the media pipeline PR was
originally branched. The ChannelMessage struct now requires an
attachments field, so initialise it to an empty Vec for channels
that do not yet extract attachments.

---------

Co-authored-by: Giulio V <vannini.gv@gmail.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 15:14:11 -04:00
..
component feat(tools): enable internet access by default (#4270) 2026-03-22 19:07:12 -04:00
fixtures test: restructure test suite into five-level taxonomy 2026-03-11 11:03:33 -04:00
integration feat(channels): add automatic media understanding pipeline (#4402) 2026-03-23 15:14:11 -04:00
live feat(runtime): add configurable reasoning effort (#3785) 2026-03-17 09:21:53 -04:00
manual fix(onboard): make tmux paste safe for text prompts (#4106) 2026-03-21 05:14:37 -04:00
support fix(memory): filter autosave noise and scope recall/store by session (#3695) 2026-03-16 16:36:35 -04:00
system test: restructure test suite into five-level taxonomy 2026-03-11 11:03:33 -04:00
test_component.rs test: restructure test suite into five-level taxonomy 2026-03-11 11:03:33 -04:00
test_integration.rs test: restructure test suite into five-level taxonomy 2026-03-11 11:03:33 -04:00
test_live.rs test: restructure test suite into five-level taxonomy 2026-03-11 11:03:33 -04:00
test_system.rs test: restructure test suite into five-level taxonomy 2026-03-11 11:03:33 -04:00