aboutsummaryrefslogtreecommitdiff
path: root/src/api
diff options
context:
space:
mode:
Diffstat (limited to 'src/api')
-rw-r--r--src/api/mod.rs1
-rw-r--r--src/api/schema.rs34
-rw-r--r--src/api/server.rs1
3 files changed, 36 insertions, 0 deletions
diff --git a/src/api/mod.rs b/src/api/mod.rs
index 67964e83..7fd16fda 100644
--- a/src/api/mod.rs
+++ b/src/api/mod.rs
@@ -39,6 +39,7 @@ pub(crate) fn request_changes_ui(request: &Request) -> bool {
| Method::PaneSplit(_)
| Method::PaneRename(_)
| Method::PaneReportAgent(_)
+ | Method::PaneReportAgentSession(_)
| Method::PaneReportMetadata(_)
| Method::PaneClearAgentAuthority(_)
| Method::PaneReleaseAgent(_)
diff --git a/src/api/schema.rs b/src/api/schema.rs
index 794f6db4..483d4842 100644
--- a/src/api/schema.rs
+++ b/src/api/schema.rs
@@ -84,6 +84,8 @@ pub enum Method {
PaneRead(PaneReadParams),
#[serde(rename = "pane.report_agent")]
PaneReportAgent(PaneReportAgentParams),
+ #[serde(rename = "pane.report_agent_session")]
+ PaneReportAgentSession(PaneReportAgentSessionParams),
#[serde(rename = "pane.report_metadata")]
PaneReportMetadata(PaneReportMetadataParams),
#[serde(rename = "pane.clear_agent_authority")]
@@ -354,6 +356,19 @@ pub struct PaneReportAgentParams {
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+pub struct PaneReportAgentSessionParams {
+ pub pane_id: String,
+ pub source: String,
+ pub agent: String,
+ #[serde(default, skip_serializing_if = "Option::is_none")]
+ pub seq: Option<u64>,
+ #[serde(default, skip_serializing_if = "Option::is_none")]
+ pub agent_session_id: Option<String>,
+ #[serde(default, skip_serializing_if = "Option::is_none")]
+ pub agent_session_path: Option<String>,
+}
+
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct PaneReportMetadataParams {
pub pane_id: String,
pub source: String,
@@ -1073,6 +1088,25 @@ mod tests {
}
#[test]
+ fn request_round_trips_for_pane_report_agent_session() {
+ let request = Request {
+ id: "req_session".into(),
+ method: Method::PaneReportAgentSession(PaneReportAgentSessionParams {
+ pane_id: "1-1".into(),
+ source: "herdr:claude".into(),
+ agent: "claude".into(),
+ seq: Some(42),
+ agent_session_id: Some("claude-session".into()),
+ agent_session_path: None,
+ }),
+ };
+
+ let json = serde_json::to_string(&request).unwrap();
+ let restored: Request = serde_json::from_str(&json).unwrap();
+ assert_eq!(restored, request);
+ }
+
+ #[test]
fn request_round_trips_for_pane_report_metadata() {
let request = Request {
id: "req_metadata".into(),
diff --git a/src/api/server.rs b/src/api/server.rs
index cd130e47..8b4362fb 100644
--- a/src/api/server.rs
+++ b/src/api/server.rs
@@ -303,6 +303,7 @@ fn api_method_name(method: &Method) -> &'static str {
Method::PaneSendInput(_) => "pane.send_input",
Method::PaneRead(_) => "pane.read",
Method::PaneReportAgent(_) => "pane.report_agent",
+ Method::PaneReportAgentSession(_) => "pane.report_agent_session",
Method::PaneReportMetadata(_) => "pane.report_metadata",
Method::PaneClearAgentAuthority(_) => "pane.clear_agent_authority",
Method::PaneReleaseAgent(_) => "pane.release_agent",