feat: expand Galaxy agent and remote tooling
Add Wormhole remote helpers, provider and agent improvements, filesystem diagnostics, model metadata support, and schema-aware settings IntelliSense.
This commit is contained in:
@@ -115,7 +115,7 @@ impl ReadFilesExecutor {
|
||||
// Check if this is a remote session with a connected host.
|
||||
let session_type = self.active_session.as_ref(ctx).session_type(ctx);
|
||||
let host_request_handle = match &session_type {
|
||||
Some(SessionType::WarpifiedRemote {
|
||||
Some(SessionType::WormholedRemote {
|
||||
host_id: Some(host_id),
|
||||
}) => Some(
|
||||
remote_server::manager::RemoteServerManager::as_ref(ctx)
|
||||
@@ -127,7 +127,7 @@ impl ReadFilesExecutor {
|
||||
// Remote session without a usable remote server connection. File reading
|
||||
// requires either local access or a connected remote server, neither
|
||||
// of which is available.
|
||||
if matches!(session_type, Some(SessionType::WarpifiedRemote { .. }))
|
||||
if matches!(session_type, Some(SessionType::WormholedRemote { .. }))
|
||||
&& host_request_handle.is_none()
|
||||
{
|
||||
return ActionExecution::Sync(AIAgentActionResultType::ReadFiles(
|
||||
|
||||
@@ -154,7 +154,7 @@ fn disconnected_remote_session_does_not_fall_back_to_client_global_bundled_skill
|
||||
sessions.register_session_for_test(
|
||||
SessionInfo::new_for_test()
|
||||
.with_id(session_id)
|
||||
.with_session_type(BootstrapSessionType::WarpifiedRemote),
|
||||
.with_session_type(BootstrapSessionType::WormholedRemote),
|
||||
);
|
||||
});
|
||||
let (_model_events_tx, model_events_rx) = unbounded();
|
||||
@@ -235,7 +235,7 @@ fn remote_session_reads_remote_bundled_skill_catalog() {
|
||||
sessions.register_session_for_test(
|
||||
SessionInfo::new_for_test()
|
||||
.with_id(session_id)
|
||||
.with_session_type(BootstrapSessionType::WarpifiedRemote),
|
||||
.with_session_type(BootstrapSessionType::WormholedRemote),
|
||||
);
|
||||
});
|
||||
let session = sessions
|
||||
|
||||
@@ -370,7 +370,7 @@ impl RequestFileEditsExecutor {
|
||||
})
|
||||
.collect();
|
||||
let diff_session_type = match self.active_session.as_ref(ctx).session_type(ctx) {
|
||||
Some(SessionType::WarpifiedRemote {
|
||||
Some(SessionType::WormholedRemote {
|
||||
host_id: Some(host_id),
|
||||
}) => DiffSessionType::Remote(host_id.clone()),
|
||||
_ => DiffSessionType::Local,
|
||||
|
||||
@@ -360,7 +360,7 @@ fn format_session_location(session: &Session, working_directory: Option<&str>) -
|
||||
let hostname = session.hostname();
|
||||
match session_type {
|
||||
SessionType::Local => Some(display_path),
|
||||
SessionType::WarpifiedRemote { .. } => Some(format!("{user}@{hostname}:{display_path}")),
|
||||
SessionType::WormholedRemote { .. } => Some(format!("{user}@{hostname}:{display_path}")),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -510,7 +510,7 @@ fn current_working_directory_for_zero_state(terminal_model: &TerminalModel) -> O
|
||||
.is_some_and(|pending_session_info| {
|
||||
matches!(
|
||||
pending_session_info.session_type,
|
||||
BootstrapSessionType::WarpifiedRemote
|
||||
BootstrapSessionType::WormholedRemote
|
||||
)
|
||||
});
|
||||
(!terminal_model.block_list().is_bootstrapped() && !is_bootstrapping_remote_shell)
|
||||
|
||||
@@ -65,7 +65,7 @@ use crate::terminal::model_events::{ModelEvent, ModelEventDispatcher};
|
||||
use crate::terminal::view::ambient_agent::{
|
||||
is_cloud_agent_pre_first_exchange, AmbientAgentViewModel, AmbientAgentViewModelEvent,
|
||||
};
|
||||
use crate::terminal::warpify::render::LEFT_STRIPE_WIDTH;
|
||||
use crate::terminal::wormhole::render::LEFT_STRIPE_WIDTH;
|
||||
use crate::terminal::{
|
||||
TerminalModel, CANCEL_COMMAND_KEYBINDING, TOGGLE_AUTOEXECUTE_MODE_KEYBINDING,
|
||||
TOGGLE_HIDE_CLI_RESPONSES_KEYBINDING, TOGGLE_QUEUE_NEXT_PROMPT_KEYBINDING,
|
||||
|
||||
@@ -314,11 +314,11 @@ impl SessionContext {
|
||||
&self.current_working_directory
|
||||
}
|
||||
|
||||
/// Returns the remote host ID if this is a `WarpifiedRemote` session with
|
||||
/// Returns the remote host ID if this is a `WormholedRemote` session with
|
||||
/// a connected `RemoteServerClient`.
|
||||
pub fn host_id(&self) -> Option<&galaxy_core::HostId> {
|
||||
match &self.session_type {
|
||||
Some(SessionType::WarpifiedRemote { host_id }) => host_id.as_ref(),
|
||||
Some(SessionType::WormholedRemote { host_id }) => host_id.as_ref(),
|
||||
Some(SessionType::Local) | None => None,
|
||||
}
|
||||
}
|
||||
@@ -326,17 +326,17 @@ impl SessionContext {
|
||||
/// Returns `true` if this is a remote session (regardless of whether
|
||||
/// the remote server client is connected).
|
||||
pub fn is_remote(&self) -> bool {
|
||||
matches!(self.session_type, Some(SessionType::WarpifiedRemote { .. }))
|
||||
matches!(self.session_type, Some(SessionType::WormholedRemote { .. }))
|
||||
}
|
||||
|
||||
pub fn skill_path_origin(&self) -> SkillPathOrigin {
|
||||
match &self.session_type {
|
||||
Some(SessionType::WarpifiedRemote {
|
||||
Some(SessionType::WormholedRemote {
|
||||
host_id: Some(host_id),
|
||||
}) => SkillPathOrigin::Remote {
|
||||
host_id: host_id.clone(),
|
||||
},
|
||||
Some(SessionType::WarpifiedRemote { host_id: None }) => SkillPathOrigin::Unavailable,
|
||||
Some(SessionType::WormholedRemote { host_id: None }) => SkillPathOrigin::Unavailable,
|
||||
Some(SessionType::Local) | None => SkillPathOrigin::Local,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//! This module contains rendering functions for various requested inline actions that have not yet
|
||||
//! been transformed into a [`View`] component. This currently encompasses UI for file retrieval,
|
||||
//! environmental variable collection, and SSH Warpification, to name a few.
|
||||
//! environmental variable collection, and SSH Wormholing, to name a few.
|
||||
//!
|
||||
//! There's quite a bit of duplication between function-based inline actions and view-based inline
|
||||
//! actions. Moreover, the header rendering functions here don't make use of the HeaderConfig.
|
||||
|
||||
@@ -408,7 +408,7 @@ impl PassiveSuggestionsModel {
|
||||
.active_session
|
||||
.as_ref(ctx)
|
||||
.session_type(ctx)
|
||||
.map(|session_type| matches!(session_type, SessionType::WarpifiedRemote { .. }))
|
||||
.map(|session_type| matches!(session_type, SessionType::WormholedRemote { .. }))
|
||||
.unwrap_or(true);
|
||||
if !can_read_file || should_skip_for_remote {
|
||||
let reason = if !can_read_file {
|
||||
|
||||
Reference in New Issue
Block a user