Skip to main content

hello/
hello.rs

1//! Minimal two-node TPCP HANDSHAKE example using tpcp-std.
2use tpcp_std::{TPCPNode, AgentIdentity, Intent};
3use std::sync::Arc;
4use tokio::time::{sleep, Duration};
5
6#[tokio::main]
7async fn main() {
8    // Server
9    let server_identity = AgentIdentity {
10        agent_id: "server-001".into(),
11        framework: "hello-server".into(),
12        capabilities: vec![],
13        public_key: "".into(),
14        modality: vec!["text".into()],
15    };
16    let server = Arc::new(TPCPNode::new(server_identity));
17
18    server.register_handler(Intent::Handshake, |env| {
19        println!("Server received HANDSHAKE from {}", env.header.sender_id);
20        println!("Payload: {}", env.payload);
21    }).await;
22
23    server.listen("127.0.0.1:9001").await.expect("failed to listen");
24    sleep(Duration::from_millis(100)).await; // let server bind
25
26    // Client
27    let client_identity = AgentIdentity {
28        agent_id: "client-001".into(),
29        framework: "hello-client".into(),
30        capabilities: vec![],
31        public_key: "".into(),
32        modality: vec!["text".into()],
33    };
34    let client = TPCPNode::new(client_identity);
35
36    client.send_message(
37        "ws://127.0.0.1:9001",
38        "server-001",
39        Intent::Handshake,
40        serde_json::json!({"payload_type": "text", "content": "hello from Rust client"}),
41    ).await.expect("send failed");
42
43    sleep(Duration::from_millis(200)).await;
44    println!("TPCP Rust SDK hello example completed.");
45}