Skip to content

feat(channels): HTTP JSON adapter and ScriptedChannel reference (#564)#640

Merged
matedev01 merged 3 commits into
GeniePod:mainfrom
kiannidev:feat/issue-560-speaker-conversation-tagging
Jul 6, 2026
Merged

feat(channels): HTTP JSON adapter and ScriptedChannel reference (#564)#640
matedev01 merged 3 commits into
GeniePod:mainfrom
kiannidev:feat/issue-560-speaker-conversation-tagging

Conversation

@kiannidev

@kiannidev kiannidev commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Part of #564 (port voice, HTTP, and Telegram onto the Channel trait).

Supersedes the closed #609 (speaker-tagging work landed via #611/#631); this branch is repurposed for the HTTP Channel reference adapter.

Summary

First HTTP reference-adapter slice for the Channel boundary:

  • Add channel::http::incoming_turn_from_chat_json — shared JSON → IncomingTurn parser (speaker + session fields)
  • Add channel::scripted::ScriptedChannel — public in-process Channel for tests/harnesses
  • Wire /api/chat through the shared adapter (behavior unchanged; logic moved out of server.rs)

Voice and Telegram porting remain follow-ups in #564.

Real Behavior Proof

  • I have built and run the affected code locally.
  • I have verified the change end-to-end on Jetson hardware.
  • I have NOT verified on Jetson hardware, and I explain the equivalent verification path below.

Tested profile / hardware:

  • laptop (x86_64 Linux dev host)

What I ran

cargo test -p genie-core channel::
cargo clippy -p genie-core --all-targets -- -D warnings
cargo fmt --all -- --check

What I observed

  • 15 channel:: unit tests pass (HTTP JSON parsing + ScriptedChannel recv/send + registry).
  • Clippy and fmt clean.
  • HTTP chat routes call incoming_turn_from_chat_json from channel::http — no duplicate parser in server.rs.

Test plan

  • channel::http::tests::* — speaker string/object parsing, session key derivation
  • channel::scripted::tests::recv_send_round_trip_records_outbound
  • channel::tests::scripted_channel_recv_send_round_trip
  • cargo clippy -p genie-core --all-targets -- -D warnings

…ePod#564)

Extract incoming_turn_from_chat_json into channel::http and add
ScriptedChannel as a public reference Channel impl. HTTP chat routes
now import the shared adapter; behavior unchanged.
@kiannidev kiannidev force-pushed the feat/issue-560-speaker-conversation-tagging branch from a13ff73 to 1371e38 Compare July 6, 2026 07:38

@matedev01 matedev01 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM — M2 A2 first channel adapter (#564). Adds channel::http JSON->IncomingTurn parser + ScriptedChannel test adapter; wires HTTP path into the Channel boundary. 832 lib, BFCL 96%. Please rebase (BEHIND) so CI runs.

@matedev01 matedev01 merged commit 0d8904e into GeniePod:main Jul 6, 2026
6 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.

2 participants