Skip to content

Commit 637c6a1

Browse files
committed
fix(session): correct terminal_id in session_runtime_bindings
The terminal_id field in SessionRuntimeBindingInfo was incorrectly set to runtime.runtime_id (e.g. "runtime:ws-1:session-1") instead of runtime.terminal_id (the actual workspace terminal ID). This caused the frontend's resolveAgentPaneTerminalBinding to set terminalId to the runtime ID, which never matched any workspace terminal in the list. Fix: use runtime.terminal_id for terminal_id, and only use runtime.runtime_id for terminal_runtime_id.
1 parent 30d1509 commit 637c6a1

2 files changed

Lines changed: 8 additions & 9 deletions

File tree

apps/server/src/command/http.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3499,7 +3499,8 @@ mod tests {
34993499
.session_runtime_bindings
35003500
.iter()
35013501
.any(|binding| binding.session_id == "slot-primary"
3502-
&& binding.terminal_id == started.terminal_runtime_id.clone().unwrap()
3502+
&& binding.terminal_id == started.terminal_id.to_string()
3503+
&& binding.terminal_runtime_id == started.terminal_runtime_id
35033504
&& binding.workspace_terminal_id == Some(started.terminal_id.to_string())));
35043505
assert!(observer
35053506
.snapshot

apps/server/src/services/session_runtime.rs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -155,15 +155,13 @@ pub(crate) fn collect_workspace_session_runtime_bindings(
155155
.iter()
156156
.filter_map(|(key, terminal_id)| {
157157
let session_id = key.strip_prefix(&prefix)?;
158+
let runtime_info = runtime_registry.by_session(workspace_id, session_id);
158159
Some(SessionRuntimeBindingInfo {
159160
session_id: session_id.to_string(),
160-
terminal_id: runtime_registry
161-
.by_session(workspace_id, session_id)
162-
.map(|runtime| runtime.runtime_id.clone())
161+
terminal_id: runtime_info
162+
.map(|runtime| runtime.terminal_id.to_string())
163163
.unwrap_or_else(|| terminal_id.to_string()),
164-
terminal_runtime_id: runtime_registry
165-
.by_session(workspace_id, session_id)
166-
.map(|runtime| runtime.runtime_id.clone()),
164+
terminal_runtime_id: runtime_info.map(|runtime| runtime.runtime_id.clone()),
167165
workspace_terminal_id: Some(terminal_id.to_string()),
168166
})
169167
})
@@ -789,7 +787,7 @@ mod tests {
789787
assert_eq!(bindings[0].terminal_runtime_id, result.terminal_runtime_id);
790788
assert_eq!(
791789
bindings[0].terminal_id,
792-
bindings[0].terminal_runtime_id.clone().unwrap()
790+
result.terminal_id.to_string()
793791
);
794792
}
795793

@@ -863,7 +861,7 @@ mod tests {
863861
assert_eq!(bindings[0].session_id, session.id);
864862
assert_eq!(
865863
bindings[0].terminal_id,
866-
result.terminal_runtime_id.clone().unwrap()
864+
result.terminal_id.to_string()
867865
);
868866
assert_eq!(bindings[0].terminal_runtime_id, result.terminal_runtime_id);
869867
assert_eq!(

0 commit comments

Comments
 (0)