feat: add peer pod handshake command

This commit is contained in:
2026-06-02 19:43:20 +09:00
parent b51c32401c
commit 093a84fc83
12 changed files with 663 additions and 14 deletions
+22 -1
View File
@@ -64,6 +64,13 @@ pub enum Method {
RestorePod {
name: String,
},
/// Register another existing Pod as a reciprocal peer of this Pod.
///
/// This is metadata/control state only: it must not grant delegated scope,
/// spawned-child ownership, output cursors, or child lifecycle authority.
RegisterPeer {
name: String,
},
}
/// Typed lifecycle events sent from a child Pod to its parent.
@@ -480,6 +487,10 @@ pub enum Event {
PodRestored {
result: serde_json::Value,
},
/// Reply to `Method::RegisterPeer`.
PeerRegistered {
result: serde_json::Value,
},
Alert(Alert),
/// Latest memory extract/consolidation lifecycle event for UI observability.
///
@@ -1465,13 +1476,17 @@ mod tests {
Method::RestorePod {
name: "child".into(),
},
Method::RegisterPeer {
name: "peer".into(),
},
];
for method in methods {
let json = serde_json::to_string(&method).unwrap();
let decoded: Method = serde_json::from_str(&json).unwrap();
match (decoded, method) {
(Method::ListPods, Method::ListPods)
| (Method::RestorePod { .. }, Method::RestorePod { .. }) => {}
| (Method::RestorePod { .. }, Method::RestorePod { .. })
| (Method::RegisterPeer { .. }, Method::RegisterPeer { .. }) => {}
(decoded, expected) => panic!("decoded {decoded:?}, expected {expected:?}"),
}
}
@@ -1486,6 +1501,9 @@ mod tests {
Event::PodRestored {
result: serde_json::json!({ "action": "already_live" }),
},
Event::PeerRegistered {
result: serde_json::json!({ "source": "self", "peer": "other" }),
},
];
for event in events {
let json = serde_json::to_string(&event).unwrap();
@@ -1497,6 +1515,9 @@ mod tests {
(Event::PodRestored { result }, Event::PodRestored { result: expected }) => {
assert_eq!(result, expected)
}
(Event::PeerRegistered { result }, Event::PeerRegistered { result: expected }) => {
assert_eq!(result, expected)
}
(decoded, expected) => panic!("decoded {decoded:?}, expected {expected:?}"),
}
}