Conversation
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Josephrp
added a commit
that referenced
this pull request
Mar 5, 2026
… license gates, and split stable/nightly PyPI release lanes (#16) * adds docs site and ci docs build * Stop tracking ancient-docs (reference-only, in .gitignore) * Ignore site/ (MkDocs build output), stop tracking * resolves url , site/ ignore and uv install security * adds dashboard * removes stray md * adds memory system * adds memory system (#6) * adds memory system * fix failing tests in ci * fix failing tests in ci * adds trusted publisher * adds multiband and relay support * adds multiband and relay support (#7) * adds multiband and relay support * Update radioshaq/radioshaq/listener/relay_delivery.py * update tests * adds dbstate __getattr__ * docs ci update pinned mkdocs version * adds radio frequency * adds radio outbound reply default * adds ci test on pr * solves frequency and send tx race conditions * fixes pending entries & mode clobbering (fm) * fixes configuration hardcoded path and fixed reject path misleading error , cleans up pending list api semantics * resolves code review issues * Add frequency-aware radio replies (#8) * adds radio frequency * adds radio outbound reply default * adds ci test on pr * solves frequency and send tx race conditions * fixes pending entries & mode clobbering (fm) * fixes configuration hardcoded path and fixed reject path misleading error , cleans up pending list api semantics * resolves code review issues * adds ci fixes * Update radioshaq/radioshaq/api/routes/messages.py * solves code review suggestions * fixes failing tests * Fixes PyPI UI bundling flow (#12) * adds radio frequency * adds radio outbound reply default * adds ci test on pr * solves frequency and send tx race conditions * fixes pending entries & mode clobbering (fm) * fixes configuration hardcoded path and fixed reject path misleading error , cleans up pending list api semantics * resolves code review issues * adds ci fixes * Update radioshaq/radioshaq/api/routes/messages.py * solves code review suggestions * fixes failing tests * fixes build patch * fixes minor issues * fixes build env bug (#13) * adds radio frequency * adds radio outbound reply default * adds ci test on pr * solves frequency and send tx race conditions * fixes pending entries & mode clobbering (fm) * fixes configuration hardcoded path and fixed reject path misleading error , cleans up pending list api semantics * resolves code review issues * adds ci fixes * Update radioshaq/radioshaq/api/routes/messages.py * solves code review suggestions * fixes failing tests * fixes build patch * fixes minor issues * fixes ci issue * Update radioshaq/tests/integration/test_live_e2e_workflows.py * fixes ci issue (#14) * adds radio frequency * adds radio outbound reply default * adds ci test on pr * solves frequency and send tx race conditions * fixes pending entries & mode clobbering (fm) * fixes configuration hardcoded path and fixed reject path misleading error , cleans up pending list api semantics * resolves code review issues * adds ci fixes * Update radioshaq/radioshaq/api/routes/messages.py * solves code review suggestions * fixes failing tests * fixes build patch * fixes minor issues * fixes ci issue * Update radioshaq/tests/integration/test_live_e2e_workflows.py * Fix settings TS build and include web UI in wheel * adds release , versioning and workflows * adds ci , build , enfore branch protection and more * adds contributing * chore: bump version to 0.1.1 * fix(ci): allow non-interactive GPL acceptance in CLI setup tests * fix(ci): harden publish/governance workflows and refresh action versions * Fix CI branch guards, release push race handling, and license/version checks * adds contributing * adds validation fixes
Josephrp
added a commit
that referenced
this pull request
Mar 5, 2026
…sting * adds docs site and ci docs build * Stop tracking ancient-docs (reference-only, in .gitignore) * Ignore site/ (MkDocs build output), stop tracking * resolves url , site/ ignore and uv install security * adds dashboard * removes stray md * adds memory system * adds memory system (#6) * adds memory system * fix failing tests in ci * fix failing tests in ci * adds trusted publisher * adds multiband and relay support * adds multiband and relay support (#7) * adds multiband and relay support * Update radioshaq/radioshaq/listener/relay_delivery.py * update tests * adds dbstate __getattr__ * docs ci update pinned mkdocs version * adds radio frequency * adds radio outbound reply default * adds ci test on pr * solves frequency and send tx race conditions * fixes pending entries & mode clobbering (fm) * fixes configuration hardcoded path and fixed reject path misleading error , cleans up pending list api semantics * resolves code review issues * Add frequency-aware radio replies (#8) * adds radio frequency * adds radio outbound reply default * adds ci test on pr * solves frequency and send tx race conditions * fixes pending entries & mode clobbering (fm) * fixes configuration hardcoded path and fixed reject path misleading error , cleans up pending list api semantics * resolves code review issues * adds ci fixes * Update radioshaq/radioshaq/api/routes/messages.py * solves code review suggestions * fixes failing tests * Fixes PyPI UI bundling flow (#12) * adds radio frequency * adds radio outbound reply default * adds ci test on pr * solves frequency and send tx race conditions * fixes pending entries & mode clobbering (fm) * fixes configuration hardcoded path and fixed reject path misleading error , cleans up pending list api semantics * resolves code review issues * adds ci fixes * Update radioshaq/radioshaq/api/routes/messages.py * solves code review suggestions * fixes failing tests * fixes build patch * fixes minor issues * fixes build env bug (#13) * adds radio frequency * adds radio outbound reply default * adds ci test on pr * solves frequency and send tx race conditions * fixes pending entries & mode clobbering (fm) * fixes configuration hardcoded path and fixed reject path misleading error , cleans up pending list api semantics * resolves code review issues * adds ci fixes * Update radioshaq/radioshaq/api/routes/messages.py * solves code review suggestions * fixes failing tests * fixes build patch * fixes minor issues * fixes ci issue * Update radioshaq/tests/integration/test_live_e2e_workflows.py * fixes ci issue (#14) * adds radio frequency * adds radio outbound reply default * adds ci test on pr * solves frequency and send tx race conditions * fixes pending entries & mode clobbering (fm) * fixes configuration hardcoded path and fixed reject path misleading error , cleans up pending list api semantics * resolves code review issues * adds ci fixes * Update radioshaq/radioshaq/api/routes/messages.py * solves code review suggestions * fixes failing tests * fixes build patch * fixes minor issues * fixes ci issue * Update radioshaq/tests/integration/test_live_e2e_workflows.py * Fix settings TS build and include web UI in wheel * adds release , versioning and workflows * adds ci , build , enfore branch protection and more * adds contributing * chore: bump version to 0.1.1 * fix(ci): allow non-interactive GPL acceptance in CLI setup tests * fix(ci): harden publish/governance workflows and refresh action versions * Fix CI branch guards, release push race handling, and license/version checks * adds contributing * adds validation fixes
Josephrp
added a commit
that referenced
this pull request
Mar 6, 2026
* adds radio frequency * adds radio outbound reply default * adds ci test on pr * solves frequency and send tx race conditions * fixes pending entries & mode clobbering (fm) * fixes configuration hardcoded path and fixed reject path misleading error , cleans up pending list api semantics * resolves code review issues * adds ci fixes * Update radioshaq/radioshaq/api/routes/messages.py * solves code review suggestions * fixes failing tests * fixes build patch * fixes minor issues * fixes ci issue * Update radioshaq/tests/integration/test_live_e2e_workflows.py * Fix settings TS build and include web UI in wheel * adds release , versioning and workflows * adds ci , build , enfore branch protection and more * adds contributing * chore: bump version to 0.1.1 * fix(ci): allow non-interactive GPL acceptance in CLI setup tests * fix(ci): harden publish/governance workflows and refresh action versions * Fix CI branch guards, release push race handling, and license/version checks * adds contributing * adds validation fixes * adds contributing , license gate , ci build and release , pre push testing * adds docs site and ci docs build * Stop tracking ancient-docs (reference-only, in .gitignore) * Ignore site/ (MkDocs build output), stop tracking * resolves url , site/ ignore and uv install security * adds dashboard * removes stray md * adds memory system * adds memory system (#6) * adds memory system * fix failing tests in ci * fix failing tests in ci * adds trusted publisher * adds multiband and relay support * adds multiband and relay support (#7) * adds multiband and relay support * Update radioshaq/radioshaq/listener/relay_delivery.py * update tests * adds dbstate __getattr__ * docs ci update pinned mkdocs version * adds radio frequency * adds radio outbound reply default * adds ci test on pr * solves frequency and send tx race conditions * fixes pending entries & mode clobbering (fm) * fixes configuration hardcoded path and fixed reject path misleading error , cleans up pending list api semantics * resolves code review issues * Add frequency-aware radio replies (#8) * adds radio frequency * adds radio outbound reply default * adds ci test on pr * solves frequency and send tx race conditions * fixes pending entries & mode clobbering (fm) * fixes configuration hardcoded path and fixed reject path misleading error , cleans up pending list api semantics * resolves code review issues * adds ci fixes * Update radioshaq/radioshaq/api/routes/messages.py * solves code review suggestions * fixes failing tests * Fixes PyPI UI bundling flow (#12) * adds radio frequency * adds radio outbound reply default * adds ci test on pr * solves frequency and send tx race conditions * fixes pending entries & mode clobbering (fm) * fixes configuration hardcoded path and fixed reject path misleading error , cleans up pending list api semantics * resolves code review issues * adds ci fixes * Update radioshaq/radioshaq/api/routes/messages.py * solves code review suggestions * fixes failing tests * fixes build patch * fixes minor issues * fixes build env bug (#13) * adds radio frequency * adds radio outbound reply default * adds ci test on pr * solves frequency and send tx race conditions * fixes pending entries & mode clobbering (fm) * fixes configuration hardcoded path and fixed reject path misleading error , cleans up pending list api semantics * resolves code review issues * adds ci fixes * Update radioshaq/radioshaq/api/routes/messages.py * solves code review suggestions * fixes failing tests * fixes build patch * fixes minor issues * fixes ci issue * Update radioshaq/tests/integration/test_live_e2e_workflows.py * fixes ci issue (#14) * adds radio frequency * adds radio outbound reply default * adds ci test on pr * solves frequency and send tx race conditions * fixes pending entries & mode clobbering (fm) * fixes configuration hardcoded path and fixed reject path misleading error , cleans up pending list api semantics * resolves code review issues * adds ci fixes * Update radioshaq/radioshaq/api/routes/messages.py * solves code review suggestions * fixes failing tests * fixes build patch * fixes minor issues * fixes ci issue * Update radioshaq/tests/integration/test_live_e2e_workflows.py * Fix settings TS build and include web UI in wheel * adds release , versioning and workflows * adds ci , build , enfore branch protection and more * adds contributing * chore: bump version to 0.1.1 * fix(ci): allow non-interactive GPL acceptance in CLI setup tests * fix(ci): harden publish/governance workflows and refresh action versions * Fix CI branch guards, release push race handling, and license/version checks * adds contributing * adds validation fixes * Update GitHub Sponsors username in FUNDING.yml * Update .githooks/pre-push * adds license fallbacks for installed package
Josephrp
added a commit
that referenced
this pull request
Mar 6, 2026
* Enforce `main <- dev` governance, migrate to GPL-2.0-only, add CLI/UI license gates, and split stable/nightly PyPI release lanes (#16) * adds docs site and ci docs build * Stop tracking ancient-docs (reference-only, in .gitignore) * Ignore site/ (MkDocs build output), stop tracking * resolves url , site/ ignore and uv install security * adds dashboard * removes stray md * adds memory system * adds memory system (#6) * adds memory system * fix failing tests in ci * fix failing tests in ci * adds trusted publisher * adds multiband and relay support * adds multiband and relay support (#7) * adds multiband and relay support * Update radioshaq/radioshaq/listener/relay_delivery.py * update tests * adds dbstate __getattr__ * docs ci update pinned mkdocs version * adds radio frequency * adds radio outbound reply default * adds ci test on pr * solves frequency and send tx race conditions * fixes pending entries & mode clobbering (fm) * fixes configuration hardcoded path and fixed reject path misleading error , cleans up pending list api semantics * resolves code review issues * Add frequency-aware radio replies (#8) * adds radio frequency * adds radio outbound reply default * adds ci test on pr * solves frequency and send tx race conditions * fixes pending entries & mode clobbering (fm) * fixes configuration hardcoded path and fixed reject path misleading error , cleans up pending list api semantics * resolves code review issues * adds ci fixes * Update radioshaq/radioshaq/api/routes/messages.py * solves code review suggestions * fixes failing tests * Fixes PyPI UI bundling flow (#12) * adds radio frequency * adds radio outbound reply default * adds ci test on pr * solves frequency and send tx race conditions * fixes pending entries & mode clobbering (fm) * fixes configuration hardcoded path and fixed reject path misleading error , cleans up pending list api semantics * resolves code review issues * adds ci fixes * Update radioshaq/radioshaq/api/routes/messages.py * solves code review suggestions * fixes failing tests * fixes build patch * fixes minor issues * fixes build env bug (#13) * adds radio frequency * adds radio outbound reply default * adds ci test on pr * solves frequency and send tx race conditions * fixes pending entries & mode clobbering (fm) * fixes configuration hardcoded path and fixed reject path misleading error , cleans up pending list api semantics * resolves code review issues * adds ci fixes * Update radioshaq/radioshaq/api/routes/messages.py * solves code review suggestions * fixes failing tests * fixes build patch * fixes minor issues * fixes ci issue * Update radioshaq/tests/integration/test_live_e2e_workflows.py * fixes ci issue (#14) * adds radio frequency * adds radio outbound reply default * adds ci test on pr * solves frequency and send tx race conditions * fixes pending entries & mode clobbering (fm) * fixes configuration hardcoded path and fixed reject path misleading error , cleans up pending list api semantics * resolves code review issues * adds ci fixes * Update radioshaq/radioshaq/api/routes/messages.py * solves code review suggestions * fixes failing tests * fixes build patch * fixes minor issues * fixes ci issue * Update radioshaq/tests/integration/test_live_e2e_workflows.py * Fix settings TS build and include web UI in wheel * adds release , versioning and workflows * adds ci , build , enfore branch protection and more * adds contributing * chore: bump version to 0.1.1 * fix(ci): allow non-interactive GPL acceptance in CLI setup tests * fix(ci): harden publish/governance workflows and refresh action versions * Fix CI branch guards, release push race handling, and license/version checks * adds contributing * adds validation fixes * fixes license acceptance bugs * adds radio frequency * adds radio outbound reply default * adds ci test on pr * solves frequency and send tx race conditions * fixes pending entries & mode clobbering (fm) * fixes configuration hardcoded path and fixed reject path misleading error , cleans up pending list api semantics * resolves code review issues * adds ci fixes * Update radioshaq/radioshaq/api/routes/messages.py * solves code review suggestions * fixes failing tests * fixes build patch * fixes minor issues * fixes ci issue * Update radioshaq/tests/integration/test_live_e2e_workflows.py * Fix settings TS build and include web UI in wheel * adds release , versioning and workflows * adds ci , build , enfore branch protection and more * adds contributing * chore: bump version to 0.1.1 * fix(ci): allow non-interactive GPL acceptance in CLI setup tests * fix(ci): harden publish/governance workflows and refresh action versions * Fix CI branch guards, release push race handling, and license/version checks * adds contributing * adds validation fixes * adds contributing , license gate , ci build and release , pre push testing * adds docs site and ci docs build * Stop tracking ancient-docs (reference-only, in .gitignore) * Ignore site/ (MkDocs build output), stop tracking * resolves url , site/ ignore and uv install security * adds dashboard * removes stray md * adds memory system * adds memory system (#6) * adds memory system * fix failing tests in ci * fix failing tests in ci * adds trusted publisher * adds multiband and relay support * adds multiband and relay support (#7) * adds multiband and relay support * Update radioshaq/radioshaq/listener/relay_delivery.py * update tests * adds dbstate __getattr__ * docs ci update pinned mkdocs version * adds radio frequency * adds radio outbound reply default * adds ci test on pr * solves frequency and send tx race conditions * fixes pending entries & mode clobbering (fm) * fixes configuration hardcoded path and fixed reject path misleading error , cleans up pending list api semantics * resolves code review issues * Add frequency-aware radio replies (#8) * adds radio frequency * adds radio outbound reply default * adds ci test on pr * solves frequency and send tx race conditions * fixes pending entries & mode clobbering (fm) * fixes configuration hardcoded path and fixed reject path misleading error , cleans up pending list api semantics * resolves code review issues * adds ci fixes * Update radioshaq/radioshaq/api/routes/messages.py * solves code review suggestions * fixes failing tests * Fixes PyPI UI bundling flow (#12) * adds radio frequency * adds radio outbound reply default * adds ci test on pr * solves frequency and send tx race conditions * fixes pending entries & mode clobbering (fm) * fixes configuration hardcoded path and fixed reject path misleading error , cleans up pending list api semantics * resolves code review issues * adds ci fixes * Update radioshaq/radioshaq/api/routes/messages.py * solves code review suggestions * fixes failing tests * fixes build patch * fixes minor issues * fixes build env bug (#13) * adds radio frequency * adds radio outbound reply default * adds ci test on pr * solves frequency and send tx race conditions * fixes pending entries & mode clobbering (fm) * fixes configuration hardcoded path and fixed reject path misleading error , cleans up pending list api semantics * resolves code review issues * adds ci fixes * Update radioshaq/radioshaq/api/routes/messages.py * solves code review suggestions * fixes failing tests * fixes build patch * fixes minor issues * fixes ci issue * Update radioshaq/tests/integration/test_live_e2e_workflows.py * fixes ci issue (#14) * adds radio frequency * adds radio outbound reply default * adds ci test on pr * solves frequency and send tx race conditions * fixes pending entries & mode clobbering (fm) * fixes configuration hardcoded path and fixed reject path misleading error , cleans up pending list api semantics * resolves code review issues * adds ci fixes * Update radioshaq/radioshaq/api/routes/messages.py * solves code review suggestions * fixes failing tests * fixes build patch * fixes minor issues * fixes ci issue * Update radioshaq/tests/integration/test_live_e2e_workflows.py * Fix settings TS build and include web UI in wheel * adds release , versioning and workflows * adds ci , build , enfore branch protection and more * adds contributing * chore: bump version to 0.1.1 * fix(ci): allow non-interactive GPL acceptance in CLI setup tests * fix(ci): harden publish/governance workflows and refresh action versions * Fix CI branch guards, release push race handling, and license/version checks * adds contributing * adds validation fixes * Update GitHub Sponsors username in FUNDING.yml * Update .githooks/pre-push * adds license fallbacks for installed package * readme improvements and readthedocs ci (#22) * readme improvements and readthedocs ci * remove broken link * chore(release): bump patch to 0.1.2
Josephrp
added a commit
that referenced
this pull request
Mar 9, 2026
* Enforce `main <- dev` governance, migrate to GPL-2.0-only, add CLI/UI license gates, and split stable/nightly PyPI release lanes (#16) * adds memory system (#6) * adds multiband and relay support (#7) * Add frequency-aware radio replies (#8) * Fixes PyPI UI bundling flow (#12) * fixes build env bug (#13) * fixes ci issue (#14) * adds memory system (#6) * adds multiband and relay support (#7) * Add frequency-aware radio replies (#8) * Fixes PyPI UI bundling flow (#12) * fixes build env bug (#13) * fixes ci issue (#14) * readme improvements and readthedocs ci (#22) * adds language support and interface improvements (#23) * GIS location capture flow, dependency guidance, and test fixes (#25) * Gis (#27) * adds Country-specific compliance plugin (FCC, CEPT, R1 band plans) (#28) * TTS/ASR provider plugin, Hugging Face Inference, local options, .gitignore cleanup (#31) * SMS/WhatsApp relay, emergency approval, contact preferences & testing improvements (#32) * Patch (#33)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Title
Add multi-band listening and relay support
Summary
Adds simultaneous multi-band listening, orchestrator-centric message flow, reply-on-correct-band, and targeted relay (immediate and scheduled). Introduces a voice listener as the default capture path when audio is enabled, extends config/API for bands and relay, and adds a Settings page in the web UI.
What’s included
Multi-band listening
monitor_frequencyfor that band’s center frequency. With multiple SDRs/receivers, listening is simultaneous.listener_cycle_seconds.listen_bandsor[default_band]; band listener runs whenlistener_enabledand at least one band is set.metadata.band, optionally injected, and by default published to the MessageBus for the orchestrator.Orchestrator-centric flow
InboundMessage(channel="radio_rx", chat_id=band, ...).inbound_metadata(band, frequency_hz, destination_callsign, mode) for relay and reply decisions.listener_skip_bus,receiver_upload_skip_bus,inject_skip_bus.Reply on the correct band
channel="radio_rx"keepchat_idas the band. Outbound radio handler resolves frequency/mode fromBAND_PLANSand callsradio_txon that band.radio_reply_tx_enabled: falsefor listen-only.Relay (targeted and scheduled)
POST /messages/relaystores source + relayed transcript; optionalrelay_inject_target_band/relay_tx_target_bandfor inject and/or TX on target band.deliver_at(ISO datetime) in request body; relay delivery worker (whenrelay_scheduled_delivery_enabled) processes undelivered rows and injects/TXs then marks delivered.relay_message_between_bandscalls the same relay service; delivery is poll-based viaGET /transcripts?callsign=X&destination_only=true&band=Y.Voice listener (default capture)
audio_input_enabledandvoice_listener_enabled, voice is the primary ingestion path: rig audio → ASR → segments published to MessageBus.voice_store_transcriptto also store voice segments as transcripts.Callsigns and bands
preferred_bandsandlast_band; bridge updateslast_bandfromradio_rx; orchestrator context includeswhitelisted_callsign_bandsfor relay targeting.Config and API
config.schema,config.example.yaml,.env.example).GET /transcripts(callsign, band,destination_only),POST /messages/relay(optionaldeliver_at),GET/PATCH /callsigns/registered/...for bands, and config routes under/api/v1/config/*.Other
radioshaq setupextended (e.g. station callsign, trigger phrases, bands);radioshaq launch docker|pm2;radioshaq config show;infrastructure/local/setup.shandsetup.ps1for full local setup..env.exampleandconfig.example.yaml; removed/archived interactive-setup-plan and PR-DESCRIPTION; MkDocs workflow and build updates.Testing
band_listener,relay_service,relay_tools,radio_rx/radio_rx_audio,outbound_radio,radio_ingestion,transcriptsretention, callsign repo and new routes.Migration / compatibility
Greptile Summary
This PR adds comprehensive multi-band listening and relay support to RadioShaq, introducing concurrent band monitoring, orchestrator-centric message flow, and targeted relay capabilities. The implementation is well-structured with proper separation of concerns, comprehensive testing, and database migrations.
Major changes:
metadata.band, and publishes to MessageBusdeliver_at, and optionally injects/transmits on target bandinbound_metadata(band, frequency, destination) to REACT loop and maintainswhitelisted_callsign_bandscontext for relay decisionschat_idas band for radio_rx messages so outbound handler transmits on correct band usingBAND_PLANSextra_data->>'band',preferred_bands/last_bandcolumns, and relay delivery queries/messages/relay,/config/*routes, and band filtering on/transcriptsObservations:
text().bindparams()to prevent injectionrelay_delivery.pyretrieves mode from transcript rather than using target band's mode from BAND_PLANS (minor style issue)The implementation follows good architectural patterns with message bus integration, proper async patterns, and clean separation between storage, injection, and transmission paths.
Confidence Score: 4/5
Important Files Changed
Sequence Diagram
sequenceDiagram participant BandListener as Band Listener participant RadioRX as Radio RX Agent participant Storage as Transcript Storage participant MessageBus as Message Bus participant Orchestrator as REACT Orchestrator participant RelayTool as Relay Tool participant OutboundRadio as Outbound Radio Handler participant RadioTX as Radio TX Agent Note over BandListener,RadioRX: Multi-band Listening BandListener->>RadioRX: monitor_frequency(band, freq, mode) RadioRX-->>BandListener: messages BandListener->>Storage: store(band=40m, metadata) BandListener->>MessageBus: publish_inbound(channel=radio_rx, chat_id=band) Note over MessageBus,Orchestrator: Orchestrator Processing MessageBus->>Orchestrator: consume_inbound() Orchestrator->>Orchestrator: process_request(inbound_metadata={band, freq}) Orchestrator->>RelayTool: relay_message_between_bands(source_band=40m, target_band=2m) Note over RelayTool,Storage: Relay Service RelayTool->>Storage: store(source: band=40m, relay_role=source) RelayTool->>Storage: store(relayed: band=2m, relay_role=relayed, deliver_at) RelayTool-->>Orchestrator: relay result Orchestrator->>MessageBus: publish_outbound(channel=radio_rx, chat_id=band, reply_band) Note over OutboundRadio,RadioTX: Outbound Reply MessageBus->>OutboundRadio: consume_outbound() OutboundRadio->>OutboundRadio: resolve freq/mode from band BAND_PLANS OutboundRadio->>RadioTX: execute(freq, message, mode) RadioTX-->>OutboundRadio: transmittedLast reviewed commit: 7e185b2