a2ui-base 0.3.0

Framework-agnostic base for A2UI (Agent to UI): protocol, models, and catalog
Documentation

a2ui-base

crates.io docs.rs MIT

English | ไธญๆ–‡

๐Ÿ“ฆ a2ui crate ็”Ÿๆ€ๆˆๅ‘˜ ยท ๆก†ๆžถๆ— ๅ…ณๆ ธๅฟƒๅฑ‚

ๆœฌ crate ๆ˜ฏ a2ui workspace ็š„ๅŸบ็ก€ๅญ crate,ๅฎŒๆ•ดไป‹็ป่งๆ น็›ฎๅฝ• READMEใ€‚

A2UI (Agent to UI) v1.0 ๅ่ฎฎ็š„ๆก†ๆžถๆ— ๅ…ณๆ ธๅฟƒๅฑ‚:ๅ่ฎฎ็ฑปๅž‹ใ€็ป„ไปถ / ๆ•ฐๆฎๆจกๅž‹ใ€Catalogใ€ๆถˆๆฏๅค„็†ๅ™จใ€่ƒฝๅŠ›ๅๅ•†ใ€ๆ ก้ชŒ,ไปฅๅŠๆ‰€ๆœ‰ UI ๅŽ็ซฏๅ…ฑไบซ็š„ไบคไบ’ๅฑ‚ใ€‚ไธไพ่ต–ไปปไฝ• UI ๆก†ๆžถ(ratatui / Slint / egui ้ƒฝไธๅผ•ๅ…ฅ),ๅฏ็‹ฌ็ซ‹็”จไบŽๅ…ถไป– backend ๆˆ–็บฏๅ่ฎฎ่งฃๆžๅœบๆ™ฏใ€‚

ๅœจ็”Ÿๆ€ไธญ็š„ไฝ็ฝฎ

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  apps:  a2ui-gallery (TUI)   a2ui-slint-gallery   a2ui-egui-gallery   โ”‚
โ”‚  umbrella:   a2ui  (re-export core + tui [+ slint] [+ egui])          โ”‚
โ”‚  backends:   a2ui-tui (ratatui)   a2ui-slint   a2ui-egui              โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  โ–ถ a2ui-base  (ๆก†ๆžถๆ— ๅ…ณ:Protocol / Model / Catalog / Processor)       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

a2ui-base ๆ˜ฏๆ•ดไธช workspace ็š„ๅœฐๅŸบ โ€”โ€” ไธ‰ไธชๅŽ็ซฏ(ratatui / Slint / egui)้ƒฝๅปบ็ซ‹ๅœจๅฎƒไน‹ไธŠใ€‚ๆก†ๆžถๆ— ๅ…ณ็š„ไบคไบ’้€ป่พ‘(็„ฆ็‚น้ๅކ focusใ€ไบ‹ไปถ็ป“ๆžœๅบ”็”จ interactionใ€็ป„ไปถ่กŒไธบ components)็ปŸไธ€ๆ”พๅœจ่ฟ™้‡Œ,ไฟ่ฏไธๅŒๅŽ็ซฏๅœจ้”ฎ็›˜ / ๆŒ‰้’ฎไบคไบ’ไธŠ่กŒไธบไธ€่‡ดใ€‚

ๆจกๅ—

ๆจกๅ— ่Œ่ดฃ
protocol A2UI v1.0 JSON ๆถˆๆฏ็ฑปๅž‹(serverโ†’clientใ€clientโ†’server)
model ่ฟ่กŒๆ—ถ็ป„ไปถๆ ‘ใ€surfaceใ€JSON Pointer ๆ•ฐๆฎ็ป‘ๅฎš
catalog Catalogใ€็ป„ไปถ APIใ€ๅ‡ฝๆ•ฐๅฎž็Žฐใ€schema-only ๅ‡ฝๆ•ฐใ€ๅ†…่” catalog
message_processor ๆถˆๆฏ่งฃๆž โ†’ ็Šถๆ€ๅ˜ๆ›ด;process_message / parse_jsonl
capabilities ClientCapabilities / ServerCapabilities ๅๅ•† + ๅ†…่” catalog ่งฃๆž(UAX#31 ๆ ก้ชŒ)
validate ๅ่ฎฎๆ ก้ชŒ(ValidationConfig / ValidationReport)
observable ๅ“ๅบ”ๅผ็Šถๆ€็ฎก็†
focus / interaction / components ๅŽ็ซฏๅ…ฑไบซ็š„ไบคไบ’ๅฑ‚(็„ฆ็‚น้ๅކใ€EventResult ๅบ”็”จใ€็ป„ไปถ handle_event)

็”จๆณ•

cargo add a2ui-base
use a2ui_base::message_processor::MessageProcessor;
use a2ui_base::catalog::Catalog;

let mut processor = MessageProcessor::new(vec![/* catalogs */]);

// ่งฃๆžๅนถๅค„็†ไธ€ๆก JSON ๆถˆๆฏ
let msg = MessageProcessor::parse_message(r#"{"version":"v1.0",...}"#)?;
processor.process_message(msg)?;

// ่ฏปๅ–ๅ่ฎฎไบง็”Ÿ็š„ๅ›žไผ ๆถˆๆฏ(functionResponse / actionResponse / ...)
let outgoing = processor.drain_outgoing();

ๆƒณ็›ดๆŽฅๅพ—ๅˆฐไธ€ไธช่ƒฝๆธฒๆŸ“็š„็ปˆ็ซฏ UI?็ป„ๅˆ a2ui-tui ไธ€่ตท็”จ;ๆˆ–้€š่ฟ‡ umbrella a2ui ไปฅ a2ui::core::... ่ทฏๅพ„่ฎฟ้—ฎๆœฌ crateใ€‚

่ฎธๅฏ่ฏ

MIT