No reviewers
Labels
No labels
module:M0-setup
module:M1-stt
module:M1-stt
module:M2-ai
module:M2-ai
module:M3-rich
module:M3-rich
module:M4-bridge
module:M4-bridge
module:M5-bonus
module:M5-bonus
module:setup
priority:high
priority:high
priority:low
priority:low
priority:medium
priority:medium
type:chore
type:chore
type:feature
type:feature
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
charles/my-fractal!130
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/14-23-streaming-protocol"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #14
Closes #23
Summary
streaming.rs—StreamingMessageTrackerbacked byDashMap<String, StreamState>. Handleson_editwith 30 s stream window, strips the animated▋cursor from the body, returnsUpdateInPlacefor known agents andNormalEditotherwise.is_streaming,register_message,mark_complete, andgcare all provided.protocol.rs—AgentProtocolasync trait (agent_type,get_capabilities,get_status);AgentStatusenum (Active/Idle/Unavailable);MatrixAgentProtocol(alwaysActive);OpenClawProtocol;OpenClawResponseParser(extracts/strips<!-- meta -->JSON blocks).detector.rs— addedAgentDetector::with_defaults(HashSet<String>)convenience constructor and madeis_agentpublic withOption<bool>bot-flag (used by the streaming tracker when only the sender ID is available).Cargo.toml— addeddashmap = "6"andregex = "1"to[workspace.dependencies].fractal-ai/Cargo.toml— switcheddashmapandregexto{ workspace = true }.lib.rs— re-exports all new public types.Test plan
cargo test -p fractal-ai— all unit tests pass (streaming + protocol + detector)StreamingMessageTracker::on_editwith unknown sender returnsNormalEditStreamingMessageTracker::on_editwith@my-bot:matrix.orgreturnsUpdateInPlace▋is stripped from body andshow_cursor = trueis_streamingreturns false aftermark_completeOpenClawResponseParser::parse_metaextracts model/token fields from<!-- meta -->blockMatrixAgentProtocol::get_statusreturnsActive🤖 Generated with Claude Code
feat(ai): StreamingMessageTracker + AgentProtocol trait (#14, #23)to feat: StreamingMessageTracker + AgentProtocol (#14, #23)Pull request closed