Complete agent monitoring and Galaxy Control integration

- expose command-monitor conversations and preserve visible agent transcripts
- add bounded polling and a dedicated shell interrupt tool
- improve direct-provider images, skills, tool history, and usage handling
- package and brand Galaxy Control across releases, installers, persistence, and docs
This commit is contained in:
2026-07-29 15:04:58 -05:00
parent 100f1eff1c
commit dbfa8bcd48
172 changed files with 6357 additions and 3825 deletions
+48
View File
@@ -28,6 +28,54 @@ fn test_text_message_converts_to_single_block() {
assert!(matches!(&result.messages[0].content()[0], ContentBlock::Text(t) if t == "Hello"));
}
#[test]
fn test_multimodal_user_message_converts_image_to_bedrock_block() {
let messages = vec![ConversationMessage {
role: MessageRole::User,
content: MessageContent::MultiPart(vec![
ContentPart::Text("Describe this image".to_string()),
ContentPart::Image {
data: vec![1, 2, 3, 4],
mime_type: "image/png".to_string(),
},
]),
}];
let result = build_converse_request(
messages,
None,
None,
vec![],
4096,
None,
None,
None,
CachingConfig::default(),
);
assert_eq!(result.messages.len(), 1);
assert_eq!(result.messages[0].content().len(), 2);
assert!(matches!(
&result.messages[0].content()[0],
ContentBlock::Text(text) if text == "Describe this image"
));
let ContentBlock::Image(image) = &result.messages[0].content()[1] else {
panic!("expected Bedrock image block");
};
assert_eq!(
image.format(),
&aws_sdk_bedrockruntime::types::ImageFormat::Png
);
let source = image.source().expect("expected image source");
assert_eq!(
source
.as_bytes()
.expect("expected inline image bytes")
.as_ref(),
&[1, 2, 3, 4]
);
}
#[test]
fn test_tool_use_produces_valid_json_input() {
let messages = vec![ConversationMessage {