Wrapping up bedrock implementation

This commit is contained in:
Ryan Ward
2026-05-13 10:04:59 -05:00
parent ed53aa99eb
commit cee61e2af0
1144 changed files with 2954 additions and 2660 deletions
+1 -1
View File
@@ -47,9 +47,9 @@ use std::{
};
use crate::ai::agent::conversation::AIConversationId;
use galaxyui::{AppContext, Entity, EntityId, ModelContext, ModelHandle, SingletonEntity};
use itertools::Itertools;
use parking_lot::FairMutex;
use galaxyui::{AppContext, Entity, EntityId, ModelContext, ModelHandle, SingletonEntity};
use crate::{
ai::{
+2 -2
View File
@@ -29,6 +29,7 @@ use edit_documents::EditDocumentsExecutor;
use fetch_conversation::FetchConversationExecutor;
use file_glob::FileGlobExecutor;
use futures::{future::BoxFuture, FutureExt};
use galaxy_core::{execution_mode::AppExecutionMode, features::FeatureFlag};
use grep::GrepExecutor;
use parking_lot::FairMutex;
use read_documents::ReadDocumentsExecutor;
@@ -52,13 +53,11 @@ use suggest_new_conversation::SuggestNewConversationExecutor;
pub use suggest_prompt::PromptSuggestionExecutor;
use upload_artifact::UploadArtifactExecutor;
use use_computer::UseComputerExecutor;
use galaxy_core::{execution_mode::AppExecutionMode, features::FeatureFlag};
#[cfg(feature = "local_fs")]
use crate::util::openable_file_type::is_binary_file;
#[cfg(feature = "local_fs")]
use futures::AsyncReadExt;
use std::{any::Any, path::PathBuf, pin::Pin, sync::Arc};
#[cfg(feature = "local_fs")]
use galaxy_files::{FileModel, TextFileReadResult};
#[cfg(feature = "local_fs")]
@@ -69,6 +68,7 @@ use galaxyui::{
r#async::{Spawnable, SpawnableOutput},
AppContext, Entity, EntityId, ModelContext, ModelHandle, SingletonEntity,
};
use std::{any::Any, path::PathBuf, pin::Pin, sync::Arc};
#[cfg(feature = "local_fs")]
use crate::util::image::{
@@ -15,9 +15,9 @@ use crate::{
send_telemetry_from_app_ctx, TelemetryEvent,
};
#[cfg(not(target_family = "wasm"))]
use itertools::Itertools;
#[cfg(not(target_family = "wasm"))]
use galaxyui::SingletonEntity;
#[cfg(not(target_family = "wasm"))]
use itertools::Itertools;
pub struct CallMCPToolExecutor {
_active_session: ModelHandle<ActiveSession>,
@@ -1,7 +1,7 @@
use ai::diff_validation::DiffDelta;
use futures::{future::BoxFuture, FutureExt};
use std::collections::HashMap;
use galaxyui::{Entity, ModelContext, SingletonEntity};
use std::collections::HashMap;
use crate::ai::{
agent::{
@@ -4,9 +4,9 @@ use std::time::Duration;
use futures::future::BoxFuture;
use futures::FutureExt;
use itertools::Itertools;
use galaxyui::r#async::FutureExt as AsyncFutureExt;
use galaxyui::{AppContext, Entity, EntityId, ModelContext, ModelHandle, SingletonEntity};
use itertools::Itertools;
use crate::ai::agent::{
conversation::AIConversationId, AIAgentAction, AIAgentActionType, FileGlobResult,
@@ -8,13 +8,13 @@ use crate::ai::blocklist::action_model::AIConversationId;
use crate::ai::skills::SkillManager;
use crate::warp_managed_paths_watcher::WarpManagedPathsWatcher;
use ai::skills::{parse_skill, SkillReference};
use galaxyui::App;
use repo_metadata::{
repositories::DetectedRepositories, watcher::DirectoryWatcher, RepoMetadataModel,
};
use std::fs;
use std::io::Write;
use tempfile::TempDir;
use galaxyui::App;
use watcher::HomeDirectoryWatcher;
fn initialize_app(app: &mut App) {
@@ -9,10 +9,10 @@ use std::path::PathBuf;
use ai::diff_validation::AIRequestedCodeDiff;
use futures::{channel::oneshot, future::BoxFuture, FutureExt};
use itertools::Itertools;
use vec1::{vec1, Vec1};
use galaxy_core::send_telemetry_from_ctx;
use galaxyui::{Entity, EntityId, ModelContext, ModelHandle, SingletonEntity as _, ViewHandle};
use itertools::Itertools;
use vec1::{vec1, Vec1};
use apply_diff_model::ApplyDiffModel;
pub(crate) use diff_application::apply_edits;
@@ -10,9 +10,9 @@
use ai::diff_validation::AIRequestedCodeDiff;
use futures::FutureExt;
use vec1::Vec1;
use galaxyui::r#async::BoxFuture;
use galaxyui::{Entity, ModelContext, ModelHandle, SingletonEntity as _};
use vec1::Vec1;
use crate::ai::agent::{AIIdentifiers, FileEdit};
use crate::ai::blocklist::SessionContext;
@@ -11,9 +11,9 @@ use ai::diff_validation::{
fuzzy_match_diffs, fuzzy_match_v4a_diffs, AIRequestedCodeDiff, DiffDelta, DiffMatchFailures,
DiffType, ParsedDiff, SearchAndReplace, V4AHunk,
};
use galaxyui::r#async::executor::Background;
use itertools::Itertools;
use vec1::Vec1;
use galaxyui::r#async::executor::Background;
use crate::{
ai::{
@@ -3,9 +3,9 @@ use std::sync::Arc;
use ai::diff_validation::{DiffDelta, ParsedDiff, V4AHunk};
use async_io::block_on;
use galaxyui::App;
use tempfile::NamedTempFile;
use vec1::vec1;
use galaxyui::App;
use crate::ai::agent::{AIIdentifiers, FileEdit};
use crate::ai::blocklist::SessionContext;
@@ -3,10 +3,10 @@
/// This distinguishes the legacy search/replace edit format from the structured
/// V4A patch format used by `apply_patch`.
use ai::diff_validation::DiffMatchFailures;
use galaxy_core::telemetry::{EnablementState, TelemetryEvent, TelemetryEventDesc};
use serde::Serialize;
use serde_json::json;
use strum_macros::{EnumDiscriminants, EnumIter};
use galaxy_core::telemetry::{EnablementState, TelemetryEvent, TelemetryEventDesc};
use crate::ai::{agent::AIIdentifiers, blocklist::RequestedEditResolution};
@@ -4,8 +4,8 @@ use std::{
};
use futures::{channel::oneshot, future::BoxFuture, FutureExt};
use itertools::Itertools;
use galaxyui::{AppContext, Entity, EntityId, ModelContext, ModelHandle, SingletonEntity};
use itertools::Itertools;
use crate::{
ai::{
@@ -7,13 +7,13 @@ use futures::channel::oneshot;
use futures::future::BoxFuture;
use futures::{select, FutureExt};
use futures_lite::pin;
use itertools::Itertools;
use parking_lot::FairMutex;
use galaxy_core::command::ExitCode;
use galaxy_core::execution_mode::AppExecutionMode;
use galaxy_util::path::ShellFamily;
use galaxyui::r#async::{Spawnable, Timer};
use galaxyui::{Entity, EntityId, ModelContext, ModelHandle, SingletonEntity};
use itertools::Itertools;
use parking_lot::FairMutex;
use crate::ai::agent::{
AIAgentActionId, AIAgentActionType, AIAgentPtyWriteMode, ReadShellCommandOutputResult,
@@ -1,6 +1,3 @@
use pathfinder_color::ColorU;
use pathfinder_geometry::vector::vec2f;
use settings::Setting;
use galaxy_core::send_telemetry_from_ctx;
use galaxy_core::ui::color::blend::Blend;
use galaxy_core::ui::theme::Fill;
@@ -12,6 +9,9 @@ use galaxyui::{
AppContext, Element, Entity, ModelHandle, SingletonEntity, TypedActionView, View, ViewContext,
ViewHandle,
};
use pathfinder_color::ColorU;
use pathfinder_geometry::vector::vec2f;
use settings::Setting;
use std::sync::Arc;
@@ -54,8 +54,8 @@ use crate::{
workspace::{view::TOGGLE_PROJECT_EXPLORER_BINDING_NAME, ToastStack},
workspaces::user_workspaces::UserWorkspaces,
};
use toolbar_item::AgentToolbarItemKind;
use galaxy_cli::agent::Harness;
use toolbar_item::AgentToolbarItemKind;
use std::sync::Arc;
@@ -1309,10 +1309,12 @@ impl AgentInputFooter {
.unwrap_or_else(|| appearance.theme().foreground().into_solid());
left_buttons.add_child(
Container::new(
ConstrainedBox::new(icon.to_galaxyui_icon(Fill::Solid(icon_color)).finish())
.with_width(cli_icon_size)
.with_height(cli_icon_size)
.finish(),
ConstrainedBox::new(
icon.to_galaxyui_icon(Fill::Solid(icon_color)).finish(),
)
.with_width(cli_icon_size)
.with_height(cli_icon_size)
.finish(),
)
.with_padding_right(8.)
.finish(),
@@ -72,9 +72,7 @@ pub enum AgentToolbarItemKind {
impl AgentToolbarItemKind {
pub fn available_in(&self) -> ToolbarAvailability {
match self {
Self::ContextChip(_) | Self::VoiceInput | Self::FileAttach => {
ToolbarAvailability::Both
}
Self::ContextChip(_) | Self::VoiceInput | Self::FileAttach => ToolbarAvailability::Both,
Self::ModelSelector
| Self::NLDToggle
| Self::ContextWindowUsage
@@ -1,6 +1,5 @@
use std::sync::Arc;
use parking_lot::FairMutex;
use galaxy_core::features::FeatureFlag;
use galaxy_core::ui::appearance::Appearance;
use galaxy_core::ui::theme::Fill;
@@ -9,6 +8,7 @@ use galaxyui::elements::{Container, Element, Empty, MouseStateHandle};
use galaxyui::keymap::Keystroke;
use galaxyui::platform::OperatingSystem;
use galaxyui::{AppContext, Entity, ModelHandle, SingletonEntity, View, ViewContext};
use parking_lot::FairMutex;
use super::{AgentViewState, EphemeralMessageModel, EphemeralMessageModelEvent};
use crate::ai::agent::conversation::AIConversation;
@@ -1,5 +1,3 @@
use pathfinder_color::ColorU;
use settings::Setting;
use galaxy_core::ui::{appearance::Appearance, Icon};
use galaxyui::{
elements::{
@@ -12,6 +10,8 @@ use galaxyui::{
text_layout::ClipConfig,
Element, Entity, ModelHandle, SingletonEntity, TypedActionView, View, ViewContext,
};
use pathfinder_color::ColorU;
use settings::Setting;
use crate::{
ai::{
@@ -2,13 +2,13 @@ use std::{sync::Arc, time::Duration};
use instant::Instant;
use parking_lot::FairMutex;
use galaxy_core::ui::appearance::Appearance;
use galaxyui::keymap::Keystroke;
use galaxyui::AppContext;
use galaxyui::{
r#async::SpawnedFutureHandle, Entity, EntityId, ModelContext, ModelHandle, SingletonEntity,
};
use parking_lot::FairMutex;
use crate::terminal::input::message_bar::{Message, MessageItem};
use crate::terminal::input::slash_commands::SlashCommandTrigger;
@@ -1,12 +1,12 @@
use std::sync::Arc;
use ai::agent::action::{AIAgentActionType, ShellCommandDelay};
use parking_lot::FairMutex;
use galaxy_core::ui::appearance::Appearance;
use galaxyui::{
elements::{CornerRadius, Radius},
AppContext, Element, Entity, EntityId, ModelHandle, SingletonEntity, View, ViewContext,
};
use parking_lot::FairMutex;
use crate::{
ai::{
+2 -2
View File
@@ -15,17 +15,17 @@ pub use agent_message_bar::*;
pub use agent_view_block::*;
pub use controller::*;
pub use ephemeral_message_model::*;
pub use inline_agent_view_header::*;
use galaxyui::fonts::Properties;
pub use inline_agent_view_header::*;
pub use zero_state_block::*;
use std::sync::LazyLock;
use pathfinder_color::ColorU;
use galaxy_core::ui::theme::Fill;
use galaxy_core::ui::{appearance::Appearance, color::blend::Blend};
use galaxyui::keymap::Keystroke;
use galaxyui::{AppContext, SingletonEntity};
use pathfinder_color::ColorU;
use crate::view_components::action_button::ActionButtonTheme;
@@ -1,5 +1,3 @@
use pathfinder_color::ColorU;
use pathfinder_geometry::vector::Vector2F;
use galaxy_core::ui::appearance::Appearance;
use galaxy_core::ui::theme::Fill;
use galaxyui::{
@@ -12,6 +10,8 @@ use galaxyui::{
text_layout::ClipConfig,
AppContext, Element, EventContext, SingletonEntity,
};
use pathfinder_color::ColorU;
use pathfinder_geometry::vector::Vector2F;
use crate::{
ai::{
@@ -199,7 +199,9 @@ pub(crate) fn conversation_navigation_card_with_icon(
Container::new(
ConstrainedBox::new(
Icon::ChevronRight
.to_galaxyui_icon(blended_colors::text_sub(theme, theme.background()).into())
.to_galaxyui_icon(
blended_colors::text_sub(theme, theme.background()).into(),
)
.finish(),
)
.with_height(20.)
@@ -1,9 +1,4 @@
#![allow(dead_code, unused_imports, unused_variables)]
use itertools::Itertools as _;
use markdown_parser::{parse_markdown, FormattedText, FormattedTextFragment, FormattedTextLine};
use parking_lot::FairMutex;
use settings::Setting;
use std::{borrow::Cow, cmp::Reverse, path::Path, sync::Arc};
use galaxy_core::{features::FeatureFlag, report_if_error, ui::Icon};
use galaxyui::{
elements::{
@@ -17,6 +12,11 @@ use galaxyui::{
scene::Border,
AppContext, Element, Entity, ModelHandle, SingletonEntity, TypedActionView, View, ViewContext,
};
use itertools::Itertools as _;
use markdown_parser::{parse_markdown, FormattedText, FormattedTextFragment, FormattedTextLine};
use parking_lot::FairMutex;
use settings::Setting;
use std::{borrow::Cow, cmp::Reverse, path::Path, sync::Arc};
use crate::{
ai::{
@@ -209,8 +209,7 @@ impl AgentViewZeroStateBlock {
}
}
});
ctx.subscribe_to_model(&AISettings::handle(ctx), |_me, _, _event, _ctx| {
});
ctx.subscribe_to_model(&AISettings::handle(ctx), |_me, _, _event, _ctx| {});
let mut state_handles = StateHandles::default();
state_handles.update_hyperlinks.resize(
@@ -7,8 +7,8 @@ use crate::terminal::{
color::{self, Colors},
event_listener::ChannelEventListener,
};
use std::{path::PathBuf, sync::Arc};
use galaxyui::r#async::executor::Background;
use std::{path::PathBuf, sync::Arc};
fn terminal_with_startup_path(startup_path: Option<&str>) -> TerminalModel {
TerminalModel::new_for_test(
+29 -22
View File
@@ -54,21 +54,21 @@ use crate::view_components::action_button::{
use crate::view_components::compactible_action_button::CompactibleActionButton;
use crate::AIAgentTodoList;
use crate::FileEdit;
use pathfinder_color::ColorU;
use galaxy_core::ui::theme::color::internal_colors;
use galaxy_core::ui::theme::Fill;
use pathfinder_color::ColorU;
use cli_controller::CLISubagentController;
use cli_controller::CLISubagentEvent;
use find::FindState;
use model::AIBlockOutputStatus;
use parking_lot::FairMutex;
use settings::Setting as _;
use galaxy_core::features::FeatureFlag;
use galaxyui::elements::get_rich_content_position_id;
use galaxyui::elements::ClippedScrollStateHandle;
use galaxyui::elements::TableStateHandle;
use galaxyui::ui_components::radio_buttons::RadioButtonStateHandle;
use model::AIBlockOutputStatus;
use parking_lot::FairMutex;
use settings::Setting as _;
use crate::ai::agent::conversation::AIConversationId;
use crate::ai::agent::AIAgentActionResultType;
@@ -111,6 +111,15 @@ use crate::view_components::action_button::KeystrokeSource;
use crate::workspaces::user_workspaces::UserWorkspaces;
use crate::Appearance;
use crate::LLMPreferences;
use galaxy_util::path::ShellFamily;
use galaxyui::elements::MainAxisAlignment;
use galaxyui::elements::MainAxisSize;
use galaxyui::elements::SecretRange;
use galaxyui::ui_components::button::ButtonVariant;
use galaxyui::ui_components::button::TextAndIcon;
use galaxyui::ui_components::button::TextAndIconAlignment;
use galaxyui::ui_components::components::UiComponent;
use galaxyui::ui_components::components::UiComponentStyles;
use indexmap::IndexMap;
use parking_lot::{Mutex, RwLock};
use pathfinder_geometry::vector::vec2f;
@@ -121,20 +130,9 @@ use std::ops::Range;
use std::path::{Path, PathBuf};
use std::rc::Rc;
use std::{cell::OnceCell, sync::Arc};
use galaxy_util::path::ShellFamily;
use galaxyui::elements::MainAxisAlignment;
use galaxyui::elements::MainAxisSize;
use galaxyui::elements::SecretRange;
use galaxyui::ui_components::button::ButtonVariant;
use galaxyui::ui_components::button::TextAndIcon;
use galaxyui::ui_components::button::TextAndIconAlignment;
use galaxyui::ui_components::components::UiComponent;
use galaxyui::ui_components::components::UiComponentStyles;
use crate::util::link_detection::*;
use chrono::Duration;
use itertools::Itertools;
use secret_redaction::*;
#[cfg(feature = "local_fs")]
use galaxy_editor::content::edit::resolve_asset_source_relative_to_directory;
use galaxy_editor::{
@@ -151,6 +149,8 @@ use galaxyui::{
AppContext, Entity, EntityId, ModelHandle, SingletonEntity, TypedActionView, View, ViewContext,
ViewHandle, WeakViewHandle, WindowId,
};
use itertools::Itertools;
use secret_redaction::*;
use crate::ai::agent::{
AIAgentAction, AIAgentActionId, AIAgentActionType, AIAgentAttachment, AIAgentCitation,
@@ -1688,13 +1688,20 @@ impl AIBlock {
let status = self.model.status(ctx);
let is_udi_enabled = InputSettings::as_ref(ctx).is_universal_developer_input_enabled(ctx);
log::info!("[bedrock-debug] on_output_status_update: status={}", match &status {
AIBlockOutputStatus::Pending => "Pending".to_string(),
AIBlockOutputStatus::PartiallyReceived { output } => format!("PartiallyReceived(messages={})", output.get().messages.len()),
AIBlockOutputStatus::Complete { output } => format!("Complete(messages={})", output.get().messages.len()),
AIBlockOutputStatus::Cancelled { .. } => "Cancelled".to_string(),
AIBlockOutputStatus::Failed { .. } => "Failed".to_string(),
});
log::info!(
"[bedrock-debug] on_output_status_update: status={}",
match &status {
AIBlockOutputStatus::Pending => "Pending".to_string(),
AIBlockOutputStatus::PartiallyReceived { output } => format!(
"PartiallyReceived(messages={})",
output.get().messages.len()
),
AIBlockOutputStatus::Complete { output } =>
format!("Complete(messages={})", output.get().messages.len()),
AIBlockOutputStatus::Cancelled { .. } => "Cancelled".to_string(),
AIBlockOutputStatus::Failed { .. } => "Failed".to_string(),
}
);
match status {
AIBlockOutputStatus::Pending => {
+7 -7
View File
@@ -1,9 +1,3 @@
use parking_lot::{FairMutex, RwLock};
use pathfinder_color::ColorU;
use settings::Setting as _;
use std::sync::Arc;
use std::time::Duration;
use std::{cmp::Ordering, rc::Rc};
use galaxy_core::features::FeatureFlag;
use galaxy_core::report_error;
use galaxy_core::ui::theme::color::internal_colors;
@@ -16,11 +10,16 @@ use galaxyui::elements::{
use galaxyui::fonts::Weight;
use galaxyui::platform::{Cursor, OperatingSystem};
use galaxyui::ui_components::components::{Coords, UiComponent, UiComponentStyles};
use parking_lot::{FairMutex, RwLock};
use pathfinder_color::ColorU;
use settings::Setting as _;
use std::sync::Arc;
use std::time::Duration;
use std::{cmp::Ordering, rc::Rc};
use lazy_static::lazy_static;
use pathfinder_geometry::vector::vec2f;
use markdown_parser::{FormattedText, FormattedTextFragment, FormattedTextLine};
use galaxy_core::semantic_selection::SemanticSelection;
use galaxy_core::ui::appearance::Appearance;
use galaxy_editor::{
@@ -41,6 +40,7 @@ use galaxyui::{
AppContext, Element, Entity, EntityId, ModelHandle, SingletonEntity, TypedActionView, View,
ViewContext, ViewHandle,
};
use markdown_parser::{FormattedText, FormattedTextFragment, FormattedTextLine};
use crate::ai::agent::{AIAgentPtyWriteMode, CancellationReason};
use crate::ai::blocklist::block::view_impl::common::{
+2 -2
View File
@@ -1,11 +1,11 @@
use std::{collections::HashMap, sync::Arc};
use crate::server::telemetry::{CLISubagentControlState, TelemetryEvent};
use galaxy_core::send_telemetry_from_ctx;
use galaxyui::{Entity, EntityId, ModelContext, ModelHandle, SingletonEntity};
use instant::Instant;
use parking_lot::FairMutex;
use serde::{Deserialize, Serialize};
use galaxy_core::send_telemetry_from_ctx;
use galaxyui::{Entity, EntityId, ModelContext, ModelHandle, SingletonEntity};
use crate::ai::blocklist::context_model::block_context_from_terminal_model;
use crate::{
+1 -1
View File
@@ -1,10 +1,10 @@
mod helper;
mod model_impl;
use galaxy_core::features::FeatureFlag;
pub use helper::AIBlockModelHelper;
pub use model_impl::*;
use session_sharing_protocol::common::ParticipantId;
use galaxy_core::features::FeatureFlag;
use crate::ai::{
agent::{
@@ -2,9 +2,9 @@ use std::marker::PhantomData;
use anyhow::{anyhow, Result};
use chrono::{Local, TimeDelta};
use galaxyui::{AppContext, SingletonEntity, View, ViewContext};
use history_model::{BlocklistAIHistoryEvent, BlocklistAIHistoryModel};
use session_sharing_protocol::common::ParticipantId;
use galaxyui::{AppContext, SingletonEntity, View, ViewContext};
use crate::ai::{
agent::{
@@ -203,7 +203,10 @@ where
let exchange_id = self.exchange_id;
let conversation_id = self.conversation_id;
let history_model = BlocklistAIHistoryModel::handle(ctx);
log::info!("[bedrock-debug] on_updated_output: subscribing for exchange_id={:?}", exchange_id);
log::info!(
"[bedrock-debug] on_updated_output: subscribing for exchange_id={:?}",
exchange_id
);
ctx.subscribe_to_model(&history_model, move |me, _, event, ctx| {
let BlocklistAIHistoryEvent::UpdatedStreamingExchange {
exchange_id: event_exchange_id,
@@ -1,5 +1,3 @@
use pathfinder_geometry::vector::{vec2f, Vector2F};
use std::{cell::RefCell, rc::Rc};
use galaxy_core::ui::appearance::Appearance;
use galaxyui::{
elements::{
@@ -10,6 +8,8 @@ use galaxyui::{
App, Entity, Event, Presenter, TypedActionView, View, ViewContext, ViewHandle, WindowId,
WindowInvalidation,
};
use pathfinder_geometry::vector::{vec2f, Vector2F};
use std::{cell::RefCell, rc::Rc};
use super::*;
@@ -1,9 +1,9 @@
use std::collections::HashMap;
use itertools::Itertools;
use similar::DiffableStr;
use galaxyui::elements::{MouseStateHandle, PartialClickableElement, SecretRange};
use galaxyui::platform::Cursor;
use itertools::Itertools;
use similar::DiffableStr;
use crate::ai::agent::{AIAgentOutput, AIAgentTextSection, AgentOutputText};
use crate::terminal::model::secrets::{SecretLevel, REGEX_LEVEL_METADATA, SECRETS_REGEX};
@@ -1,7 +1,7 @@
use regex::Regex;
use serial_test::serial;
use galaxyui::elements::Text;
use galaxyui::fonts::FamilyId;
use regex::Regex;
use serial_test::serial;
use crate::terminal::model::secrets::{self, SecretLevel};
+4 -4
View File
@@ -67,9 +67,6 @@ use crate::{
util::bindings::keybinding_name_to_keystroke,
BlocklistAIHistoryModel,
};
use instant::Instant;
use parking_lot::FairMutex;
use pathfinder_color::ColorU;
use galaxy_core::{
features::FeatureFlag,
ui::{appearance::Appearance, theme::Fill, Icon as CoreIcon},
@@ -84,6 +81,9 @@ use galaxyui::{
ViewHandle,
};
use galaxyui::{r#async::Timer, TypedActionView};
use instant::Instant;
use parking_lot::FairMutex;
use pathfinder_color::ColorU;
pub fn init(app: &mut AppContext) {
summarization_cancel_dialog::init(app);
@@ -989,8 +989,8 @@ fn latest_model_used_before_exchange<V: View>(
fn render_agent_tip(tip: &AgentTip, app: &AppContext) -> Box<dyn Element> {
use crate::ai::agent_tips::AITip;
use markdown_parser::{FormattedTextFragment, FormattedTextLine};
use galaxyui::text_layout::ClipConfig;
use markdown_parser::{FormattedTextFragment, FormattedTextLine};
let appearance = Appearance::as_ref(app);
let theme = appearance.theme();
+4 -4
View File
@@ -30,9 +30,6 @@ pub mod query;
mod todos;
use common::get_highlight_ranges_for_find_matches;
use pathfinder_color::ColorU;
use settings::Setting as _;
use std::collections::{HashMap, HashSet};
use galaxy_core::features::FeatureFlag;
use galaxy_core::semantic_selection::SemanticSelection;
use galaxyui::elements::{
@@ -45,6 +42,9 @@ use galaxyui::{
AppContext, Element, SingletonEntity,
};
use galaxyui::{View, ViewContext};
use pathfinder_color::ColorU;
use settings::Setting as _;
use std::collections::{HashMap, HashSet};
use crate::ai::agent::AIAgentCitation;
use crate::ai::agent::AIAgentInput;
@@ -82,7 +82,6 @@ use crate::ui_components::blended_colors;
use crate::ui_components::icons::Icon;
use crate::util::link_detection::DetectedLinkType;
use crate::workspace::WorkspaceAction;
use itertools::Itertools;
use galaxy_core::ui::color::contrast::{
foreground_color_with_minimum_contrast, MinimumAllowedContrast,
};
@@ -93,6 +92,7 @@ use galaxyui::fonts::Properties;
use galaxyui::platform::Cursor;
use galaxyui::text_layout::TextStyle;
use galaxyui::ui_components::components::UiComponent;
use itertools::Itertools;
/// Helper function to create gray strikethrough highlight for secrets
fn create_secret_gray_highlight() -> Highlight {
@@ -11,11 +11,6 @@ use std::path::Path;
#[cfg(feature = "local_fs")]
use std::path::PathBuf;
use itertools::Itertools;
use markdown_parser::{FormattedText, FormattedTextInline, TableAlignment};
use pathfinder_color::ColorU;
use pathfinder_geometry::vector::vec2f;
use std::sync::Arc;
use galaxy_core::{
features::FeatureFlag,
ui::{appearance::Appearance, color::blend::Blend, theme::color::internal_colors},
@@ -43,6 +38,11 @@ use galaxyui::{
},
Action, AppContext, Element, EventContext, SingletonEntity, View, ViewHandle,
};
use itertools::Itertools;
use markdown_parser::{FormattedText, FormattedTextInline, TableAlignment};
use pathfinder_color::ColorU;
use pathfinder_geometry::vector::vec2f;
use std::sync::Arc;
use super::{add_highlights_to_rich_text, add_highlights_to_text, output::LinkActionConstructors};
use crate::ai::agent::MessageId;
@@ -22,8 +22,8 @@ use crate::{
features::FeatureFlag,
search::slash_command_menu::static_commands::commands,
};
use ui_components::lightbox::{LightboxImage, LightboxImageSource};
use galaxyui::{elements::Empty, Element};
use ui_components::lightbox::{LightboxImage, LightboxImageSource};
#[test]
fn query_prefix_highlight_len_highlights_invoke_skill_inputs() {
@@ -1,15 +1,15 @@
//! Rendering functions for orchestration-related output items (messaging & agent management).
use pathfinder_color::ColorU;
use galaxyui::elements::{
ConstrainedBox, Container, CornerRadius, CrossAxisAlignment, Empty, Flex, Hoverable,
MouseStateHandle, ParentElement, Radius, Text,
};
use galaxyui::platform::Cursor;
use galaxyui::{AppContext, Element, SingletonEntity};
use pathfinder_color::ColorU;
use markdown_parser::{FormattedText, FormattedTextFragment, FormattedTextLine};
use galaxyui::elements::FormattedTextElement;
use markdown_parser::{FormattedText, FormattedTextFragment, FormattedTextLine};
use crate::ai::agent::conversation::{AIConversation, AIConversationId, ConversationStatus};
use crate::ai::agent::{
+25 -13
View File
@@ -38,9 +38,6 @@ use ai::agent::action::{
RequestComputerUseRequest, SuggestPromptRequest, UploadArtifactRequest, UseComputerRequest,
};
use ai::skills::SkillReference;
use pathfinder_color::ColorU;
use pathfinder_geometry::vector::vec2f;
use ui_components::{button, Component as _, Options as _};
use galaxy_core::ui::theme::color::internal_colors;
#[allow(unused_imports)]
use galaxy_util::path::{common_path, CleanPathResult};
@@ -49,6 +46,9 @@ use galaxyui::elements::{
ChildAnchor, NewScrollable, OffsetPositioning, ParentAnchor, ParentOffsetBounds, Stack,
};
use galaxyui::EntityId;
use pathfinder_color::ColorU;
use pathfinder_geometry::vector::vec2f;
use ui_components::{button, Component as _, Options as _};
use crate::ai::blocklist::block::{
CollapsibleElementState, CollapsibleExpansionState, FinishReason, ImportedCommentGroup,
@@ -108,9 +108,9 @@ use crate::{
workspace::WorkspaceAction,
FeatureFlag,
};
use galaxy_core::channel::ChannelState;
use itertools::Itertools;
use markdown_parser::{FormattedText, FormattedTextFragment, FormattedTextLine};
use galaxy_core::channel::ChannelState;
use super::common::{
format_elapsed_seconds, render_debug_footer, render_failed_output, render_informational_footer,
@@ -220,17 +220,29 @@ pub(super) fn render(props: Props, app: &AppContext) -> Box<dyn Element> {
| AIBlockOutputStatus::Complete { .. }
| AIBlockOutputStatus::Cancelled { .. }
| AIBlockOutputStatus::Failed { .. } => {
if let Some(output) = status.output_to_render() {
if let Some(output) = status.output_to_render() {
let output = output.get();
let total_text_len: usize = output.messages.iter().map(|m| match &m.message {
AIAgentOutputMessageType::Text(t) => t.sections.iter().map(|s| match s {
AIAgentTextSection::PlainText { text } => text.text().len(),
AIAgentTextSection::Code { code, .. } => code.len(),
let total_text_len: usize = output
.messages
.iter()
.map(|m| match &m.message {
AIAgentOutputMessageType::Text(t) => t
.sections
.iter()
.map(|s| match s {
AIAgentTextSection::PlainText { text } => text.text().len(),
AIAgentTextSection::Code { code, .. } => code.len(),
_ => 0,
})
.sum::<usize>(),
_ => 0,
}).sum::<usize>(),
_ => 0,
}).sum();
log::info!("[bedrock-debug] render output: messages={}, total_text_len={}", output.messages.len(), total_text_len);
})
.sum();
log::info!(
"[bedrock-debug] render output: messages={}, total_text_len={}",
output.messages.len(),
total_text_len
);
let is_complete = matches!(status, AIBlockOutputStatus::Complete { .. });
let is_output_for_static_prompt_suggestions =
props.model.contains_static_prompt_suggestion_input(app);
+1 -1
View File
@@ -1,8 +1,8 @@
use super::{CollapsibleElementState, CollapsibleExpansionState};
use crate::settings::AISettings;
use crate::test_util::settings::initialize_settings_for_tests;
use settings::Setting;
use galaxyui::{App, SingletonEntity};
use settings::Setting;
#[test]
fn reasoning_auto_collapses_when_user_has_not_manually_toggled() {
+1 -1
View File
@@ -5,7 +5,6 @@ use crate::ai::blocklist::inline_action::inline_action_icons::icon_size;
use crate::code::editor_management::CodeSource;
use crate::search::files::icon::icon_from_file_path;
use crate::search::ItemHighlightState;
use std::iter;
use galaxy_core::ui::theme::Fill;
use galaxyui::elements::{ChildView, HighlightedRange, MouseStateHandle};
use galaxyui::{
@@ -17,6 +16,7 @@ use galaxyui::{
AppContext, Element, SingletonEntity,
};
use galaxyui::{EventContext, ViewHandle};
use std::iter;
use crate::code::editor::view::CodeEditorView;
use crate::ui_components::blended_colors;
+1 -1
View File
@@ -15,9 +15,9 @@ use crate::ai::{
use super::agent_view::{AgentViewController, AgentViewEntryOrigin, EnterAgentViewError};
use ai::project_context::model::ProjectContextModel;
use parking_lot::FairMutex;
use galaxy_core::features::FeatureFlag;
use galaxyui::{AppContext, Entity, EntityId, ModelContext, ModelHandle, SingletonEntity};
use parking_lot::FairMutex;
use crate::ai::agent::conversation::{AIConversationAutoexecuteMode, ConversationStatus};
use crate::{
+9 -4
View File
@@ -67,6 +67,8 @@ use crate::workspaces::user_workspaces::UserWorkspaces;
use crate::{send_telemetry_from_ctx, server::telemetry::TelemetryEvent};
use anyhow::anyhow;
use chrono::{DateTime, Local};
use galaxy_core::assertions::safe_assert;
use galaxyui::r#async::{SpawnedFutureHandle, Timer};
use itertools::Itertools;
use parking_lot::FairMutex;
use pending_response_streams::PendingResponseStreams;
@@ -74,9 +76,7 @@ use session_sharing_protocol::common::ParticipantId;
use std::collections::{HashMap, HashSet};
use std::sync::Arc;
use std::time::Duration;
use galaxy_core::assertions::safe_assert;
use warp_multi_agent_api::{message, Task, ToolType};
use galaxyui::r#async::{SpawnedFutureHandle, Timer};
use super::orchestration_events::{OrchestrationEventService, OrchestrationEventServiceEvent};
use galaxyui::{AppContext, Entity, EntityId, ModelContext, ModelHandle, SingletonEntity};
@@ -2306,9 +2306,14 @@ impl BlocklistAIController {
// After the stream finishes, persist the full message
// history (input + assistant response) from the Arc back
// into the conversation for the next request cycle.
let messages_sent_arc = response_stream.as_ref(ctx).bedrock_messages_sent().clone();
let messages_sent_arc =
response_stream.as_ref(ctx).bedrock_messages_sent().clone();
let new_history = messages_sent_arc.lock().ok().and_then(|sent| {
if sent.is_empty() { None } else { Some(sent.clone()) }
if sent.is_empty() {
None
} else {
Some(sent.clone())
}
});
if let Some(new_history) = new_history {
let history_model = BlocklistAIHistoryModel::handle(ctx);
@@ -2,10 +2,10 @@ use std::{collections::HashMap, path::Path, sync::Arc};
use ai::index::full_source_code_embedding::manager::CodebaseIndexManager;
use chrono::Local;
use lazy_static::lazy_static;
use regex::Regex;
use galaxy_core::features::FeatureFlag;
use galaxyui::{AppContext, SingletonEntity};
use lazy_static::lazy_static;
use regex::Regex;
use crate::{
ai::{
@@ -1,7 +1,7 @@
use std::collections::HashMap;
use itertools::Itertools;
use galaxyui::{AppContext, ModelContext, ModelHandle, SingletonEntity};
use itertools::Itertools;
use crate::{
ai::agent::{conversation::AIConversationId, CancellationReason},
@@ -3,9 +3,9 @@ use std::{cell::RefCell, rc::Rc};
use anyhow::anyhow;
use chrono::{DateTime, Local, TimeDelta};
use futures::channel::oneshot;
use galaxyui::{Entity, ModelContext, SingletonEntity};
use uuid::Uuid;
use warp_multi_agent_api::response_event;
use galaxyui::{Entity, ModelContext, SingletonEntity};
use crate::{
ai::{
@@ -151,7 +151,10 @@ impl ResponseStream {
&self.id
}
pub fn bedrock_messages_sent(&self) -> &std::sync::Arc<std::sync::Mutex<Vec<crate::ai::bedrock::convert::ConversationMessage>>> {
pub fn bedrock_messages_sent(
&self,
) -> &std::sync::Arc<std::sync::Mutex<Vec<crate::ai::bedrock::convert::ConversationMessage>>>
{
&self.params.bedrock_messages_sent
}
@@ -255,7 +258,9 @@ impl ResponseStream {
ctx: &mut ModelContext<Self>,
) {
if self.current_request_id.is_none_or(|id| id != request_id) {
log::info!("[bedrock-debug] handle_response_stream_event: stale request_id, dropping event");
log::info!(
"[bedrock-debug] handle_response_stream_event: stale request_id, dropping event"
);
return;
}
self.time_to_latest_event = Local::now().signed_duration_since(self.start_time);
@@ -265,11 +270,20 @@ impl ResponseStream {
let event_type_name = match &response_event.r#type {
Some(warp_multi_agent_api::response_event::Type::Init(_)) => "Init",
Some(warp_multi_agent_api::response_event::Type::ClientActions(a)) => {
log::info!("[bedrock-debug] ResponseStream received ClientActions with {} actions", a.actions.len());
log::info!(
"[bedrock-debug] ResponseStream received ClientActions with {} actions",
a.actions.len()
);
"ClientActions"
}
Some(warp_multi_agent_api::response_event::Type::Finished(f)) => {
log::info!("[bedrock-debug] ResponseStream received Finished (reason={:?})", f.reason.as_ref().map(|r| format!("{r:?}")).unwrap_or("None".into()));
log::info!(
"[bedrock-debug] ResponseStream received Finished (reason={:?})",
f.reason
.as_ref()
.map(|r| format!("{r:?}"))
.unwrap_or("None".into())
);
"Finished"
}
None => "None",
@@ -3,9 +3,9 @@
// and defines state used only for session sharing.
use std::collections::HashMap;
use galaxy_core::features::FeatureFlag;
use itertools::Itertools;
use session_sharing_protocol::common::{AgentAttachment, ParticipantId, ServerConversationToken};
use galaxy_core::features::FeatureFlag;
use warp_multi_agent_api::response_event::{stream_finished, ClientActions};
use warp_multi_agent_api::{client_action::Action, message::Message};
+2 -2
View File
@@ -3,16 +3,16 @@ use std::collections::{HashMap, HashSet};
use anyhow::anyhow;
use chrono::{DateTime, Local, NaiveDateTime};
use galaxy_core::features::FeatureFlag;
use galaxyui::{AppContext, Entity, EntityId, ModelContext, SingletonEntity};
use itertools::Itertools as _;
use serde::{Deserialize, Serialize};
use uuid::Uuid;
use galaxy_core::features::FeatureFlag;
use warp_multi_agent_api::response_event::stream_finished::ConversationUsageMetadata;
use warp_multi_agent_api::{
client_action::{Action, StartNewConversation},
response_event::stream_finished::TokenUsage,
};
use galaxyui::{AppContext, Entity, EntityId, ModelContext, SingletonEntity};
#[cfg(feature = "local_fs")]
use std::sync::{Arc, Mutex};
@@ -6,10 +6,10 @@ use std::future::Future;
use std::sync::Arc;
use futures::FutureExt;
use itertools::Itertools as _;
use persistence::model::AgentConversationRecord;
use galaxy_core::features::FeatureFlag;
use galaxyui::{AppContext, SingletonEntity};
use itertools::Itertools as _;
use persistence::model::AgentConversationRecord;
use crate::ai::agent::api::convert_conversation::{
convert_conversation_data_to_ai_conversation, RestorationMode,
+1 -1
View File
@@ -2,8 +2,8 @@ use std::collections::{HashMap, HashSet};
use std::time::Duration;
use chrono::{DateTime, Local, Utc};
use itertools::Itertools;
use galaxyui::{App, EntityId};
use itertools::Itertools;
use crate::{
ai::{
@@ -4,7 +4,6 @@ use ai::agent::{
action::{AskUserQuestionItem, AskUserQuestionOption, AskUserQuestionType},
action_result::{AskUserQuestionAnswerItem, AskUserQuestionResult},
};
use itertools::Itertools;
use galaxy_core::ui::theme::{color::internal_colors, WarpTheme};
use galaxyui::{
elements::{
@@ -19,6 +18,7 @@ use galaxyui::{
AppContext, Element, Entity, FocusContext, ModelHandle, SingletonEntity, TypedActionView, View,
ViewContext, ViewHandle,
};
use itertools::Itertools;
use crate::{
ai::{
@@ -1,4 +1,3 @@
use settings::Setting as _;
use galaxy_core::ui::Icon;
use galaxyui::elements::{
ChildView, ConstrainedBox, Container, CrossAxisAlignment, Flex, MainAxisAlignment,
@@ -10,6 +9,7 @@ use galaxyui::{
AppContext, Element, Entity, EventContext, SingletonEntity, TypedActionView, View, ViewContext,
ViewHandle,
};
use settings::Setting as _;
use crate::report_if_error;
use crate::Appearance;
@@ -1,17 +1,6 @@
use crate::ai::blocklist::view_util::render_provider_icon_button;
use crate::ai::skills::{SkillOpenOrigin, SkillTelemetryEvent};
use anyhow::Result;
use lazy_static::lazy_static;
use markdown_parser::{FormattedText, FormattedTextFragment, FormattedTextLine};
use pathfinder_geometry::vector::vec2f;
use rand::{distributions::Alphanumeric, thread_rng, Rng as _};
use std::{
collections::HashMap,
path::{Path, PathBuf},
rc::Rc,
sync::Arc,
time::Duration,
};
use galaxy_core::{
features::FeatureFlag,
platform::SessionPlatform,
@@ -49,6 +38,17 @@ use galaxyui::{
AppContext, Element, Entity, FocusContext, ModelHandle, SingletonEntity, TypedActionView, View,
ViewContext, ViewHandle,
};
use lazy_static::lazy_static;
use markdown_parser::{FormattedText, FormattedTextFragment, FormattedTextLine};
use pathfinder_geometry::vector::vec2f;
use rand::{distributions::Alphanumeric, thread_rng, Rng as _};
use std::{
collections::HashMap,
path::{Path, PathBuf},
rc::Rc,
sync::Arc,
time::Duration,
};
use super::malformed_line_heuristics::has_malformed_terminal_correction_signal;
use crate::view_components::action_button::{ActionButton, NakedTheme};
@@ -1,6 +1,3 @@
use pathfinder_color::ColorU;
use std::borrow::Cow;
use std::rc::Rc;
use galaxy_core::ui::{appearance::Appearance, theme::color::internal_colors};
use galaxyui::{
elements::{
@@ -13,6 +10,9 @@ use galaxyui::{
platform::Cursor,
AppContext, Element, EventContext, SingletonEntity,
};
use pathfinder_color::ColorU;
use std::borrow::Cow;
use std::rc::Rc;
use crate::{
ai::blocklist::inline_action::inline_action_icons::icon_size,
@@ -9,13 +9,6 @@
//! into [`View`] components as well. If that's ever deemed necessary, see [`RequestedCommandView`]
//! for an example on how that transformation could be made.
use lazy_static::lazy_static;
use markdown_parser::FormattedText;
use markdown_parser::FormattedTextFragment;
use markdown_parser::FormattedTextLine;
use pathfinder_color::ColorU;
use std::borrow::Cow;
use std::rc::Rc;
use galaxy_core::ui::appearance::Appearance;
use galaxy_core::ui::theme::color::internal_colors::neutral_2;
use galaxyui::elements::Align;
@@ -33,6 +26,13 @@ use galaxyui::{
ui_components::components::{UiComponent, UiComponentStyles},
AppContext, Element, EventContext, SingletonEntity,
};
use lazy_static::lazy_static;
use markdown_parser::FormattedText;
use markdown_parser::FormattedTextFragment;
use markdown_parser::FormattedTextLine;
use pathfinder_color::ColorU;
use std::borrow::Cow;
use std::rc::Rc;
use super::inline_action_header::HeaderConfig;
use crate::ai::blocklist::block::view_impl::WithContentItemSpacing;
@@ -1,12 +1,3 @@
use lazy_static::lazy_static;
use parking_lot::FairMutex;
use pathfinder_geometry::vector::vec2f;
use settings::Setting as _;
use std::borrow::Cow;
use std::cmp::{Ordering, PartialEq};
use std::collections::HashMap;
use std::rc::Rc;
use std::sync::Arc;
use galaxy_core::ui::appearance::Appearance;
use galaxy_core::ui::Icon;
use galaxy_editor::render::element::VerticalExpansionBehavior;
@@ -22,6 +13,15 @@ use galaxyui::{
AppContext, Element, Entity, ModelHandle, SingletonEntity, TypedActionView, UpdateView, View,
ViewContext, ViewHandle,
};
use lazy_static::lazy_static;
use parking_lot::FairMutex;
use pathfinder_geometry::vector::vec2f;
use settings::Setting as _;
use std::borrow::Cow;
use std::cmp::{Ordering, PartialEq};
use std::collections::HashMap;
use std::rc::Rc;
use std::sync::Arc;
use crate::ai::agent::{AIAgentActionResult, AIAgentActionType};
use galaxyui::{EntityId, EventContext};
@@ -1,8 +1,6 @@
//! This module is similar to `requested_actions.rs` but specifically for scripts instead of commands.
//! Eventually, we'll probably want to refactor the functions here to lean on Views instead.
use pathfinder_geometry::vector::Vector2F;
use std::rc::Rc;
use galaxy_core::ui::appearance::Appearance;
use galaxyui::elements::{
Align, Border, ConstrainedBox, Container, CornerRadius, CrossAxisAlignment, Flex, Hoverable,
@@ -16,6 +14,8 @@ use galaxyui::ui_components::toggle_menu::{
ToggleMenuCallback, ToggleMenuItem, ToggleMenuStateHandle,
};
use galaxyui::{AppContext, Element, EventContext, SingletonEntity};
use pathfinder_geometry::vector::Vector2F;
use std::rc::Rc;
use super::inline_action_header::{
INLINE_ACTION_HEADER_VERTICAL_PADDING, INLINE_ACTION_HORIZONTAL_PADDING,
@@ -1,7 +1,5 @@
use std::sync::Arc;
use markdown_parser::{FormattedText, FormattedTextFragment, FormattedTextLine};
use rand::{distributions::Alphanumeric, thread_rng, Rng as _};
use galaxy_core::{settings::ToggleableSetting, ui::appearance::Appearance};
use galaxyui::{
elements::{
@@ -13,6 +11,8 @@ use galaxyui::{
ui_components::components::{Coords, UiComponent, UiComponentStyles},
AppContext, Element, Entity, FocusContext, SingletonEntity, TypedActionView, View, ViewContext,
};
use markdown_parser::{FormattedText, FormattedTextFragment, FormattedTextLine};
use rand::{distributions::Alphanumeric, thread_rng, Rng as _};
use crate::{
ai::{
+2 -2
View File
@@ -8,14 +8,14 @@
use std::sync::Arc;
use futures::stream::AbortHandle;
use galaxy_core::features::FeatureFlag;
use galaxyui::{AppContext, Entity, EntityId, ModelContext, ModelHandle, SingletonEntity};
use input_classifier::util::{is_agent_follow_up_input, is_one_off_natural_language_word};
use instant::Instant;
use parking_lot::FairMutex;
use serde::{Deserialize, Serialize};
use session_sharing_protocol::common::{InputMode, InputType as ProtocolInputType};
use settings::Setting as _;
use galaxy_core::features::FeatureFlag;
use galaxyui::{AppContext, Entity, EntityId, ModelContext, ModelHandle, SingletonEntity};
pub use input_classifier::InputType;
@@ -13,14 +13,14 @@ use crate::server::server_api::{ServerApi, ServerApiProvider};
use anyhow::anyhow;
use async_trait::async_trait;
use futures::channel::mpsc;
use galaxy_core::features::FeatureFlag;
use galaxyui::r#async::Timer;
use galaxyui::{Entity, ModelContext, SingletonEntity};
use std::collections::{HashMap, HashSet};
use std::sync::Arc;
use std::time::Duration;
use uuid::Uuid;
use galaxy_core::features::FeatureFlag;
use warp_multi_agent_api as api;
use galaxyui::r#async::Timer;
use galaxyui::{Entity, ModelContext, SingletonEntity};
/// Backoff schedule (seconds) reused for the post-restore
/// `get_ambient_agent_task` retry: 1s, 2s, 5s, then 10s max.
@@ -195,8 +195,8 @@ fn finish_restore_fetch_uses_server_cursor_when_sqlite_is_absent() {
use crate::ai::agent::conversation::AIConversation;
use crate::server::server_api::ai::MockAIClient;
use crate::server::server_api::ServerApiProvider;
use std::sync::Arc;
use galaxyui::App;
use std::sync::Arc;
App::test((), |mut app| async move {
let _v2_guard = FeatureFlag::OrchestrationV2.override_enabled(true);
@@ -251,8 +251,8 @@ fn restored_inprogress_parent_defers_delivery_until_success() {
use crate::ai::agent::conversation::{AIConversation, AIConversationId, ConversationStatus};
use crate::server::server_api::ai::MockAIClient;
use crate::server::server_api::ServerApiProvider;
use std::sync::Arc;
use galaxyui::App;
use std::sync::Arc;
App::test((), |mut app| async move {
let _v2_guard = FeatureFlag::OrchestrationV2.override_enabled(true);
@@ -339,8 +339,8 @@ fn handle_event_batch_persists_max_seq_to_history_model() {
use crate::server::server_api::ServerApiProvider;
use crate::test_util::settings::initialize_settings_for_tests;
use crate::{GlobalResourceHandles, GlobalResourceHandlesProvider};
use std::sync::Arc;
use galaxyui::App;
use std::sync::Arc;
App::test((), |mut app| async move {
let _v2_guard = FeatureFlag::OrchestrationV2.override_enabled(true);
@@ -436,8 +436,8 @@ fn finish_restore_fetch_no_ops_when_conversation_deleted_mid_flight() {
use crate::ai::agent::conversation::AIConversation;
use crate::server::server_api::ai::MockAIClient;
use crate::server::server_api::ServerApiProvider;
use std::sync::Arc;
use galaxyui::App;
use std::sync::Arc;
App::test((), |mut app| async move {
let _v2_guard = FeatureFlag::OrchestrationV2.override_enabled(true);
@@ -508,8 +508,8 @@ fn finish_restore_fetch_reconnects_sse_when_children_added_to_open_connection()
use crate::ai::agent::conversation::{AIConversation, ConversationStatus};
use crate::server::server_api::ai::MockAIClient;
use crate::server::server_api::ServerApiProvider;
use std::sync::Arc;
use galaxyui::App;
use std::sync::Arc;
App::test((), |mut app| async move {
let _v2_guard = FeatureFlag::OrchestrationV2.override_enabled(true);
+3 -3
View File
@@ -10,12 +10,12 @@ use crate::ai::agent::{
AIAgentExchangeId, AIAgentInput, AIAgentOutputMessageType, LifecycleEventType,
ReceivedMessageInput,
};
use std::collections::{HashMap, HashSet};
use uuid::Uuid;
use galaxy_core::features::FeatureFlag;
use galaxy_core::send_telemetry_from_ctx;
use warp_multi_agent_api as api;
use galaxyui::{Entity, ModelContext, SingletonEntity};
use std::collections::{HashMap, HashSet};
use uuid::Uuid;
use warp_multi_agent_api as api;
const MAX_RETRY_ATTEMPTS: i32 = 3;
const MAX_PENDING_LIFECYCLE_EVENTS_PER_TARGET: usize = 200;
@@ -32,11 +32,11 @@ use crate::terminal::model_events::{ModelEvent, ModelEventDispatcher};
use crate::terminal::view::{AgentModePromptSuggestion, PromptSuggestion};
use crate::workspaces::user_workspaces::UserWorkspaces;
use chrono::Utc;
use parking_lot::FairMutex;
use serde_json::json;
use galaxy_core::features::FeatureFlag;
use galaxyui::r#async::{FutureExt as AsyncFutureExt, SpawnedFutureHandle, Timer};
use galaxyui::{Entity, EntityId, ModelContext, ModelHandle, SingletonEntity};
use parking_lot::FairMutex;
use serde_json::json;
const NUM_TOP_BLOCK_LINES: usize = 100;
const NUM_BOTTOM_BLOCK_LINES: usize = 200;
@@ -28,10 +28,10 @@ use crate::workspaces::user_workspaces::UserWorkspaces;
use ai::agent::action::{AIAgentActionType, FileEdit};
use ai::diff_validation::ParsedDiff;
use chrono::{DateTime, Utc};
use parking_lot::FairMutex;
use galaxy_core::features::FeatureFlag;
use galaxyui::r#async::SpawnedFutureHandle;
use galaxyui::{Entity, EntityId, ModelContext, ModelHandle, SingletonEntity};
use parking_lot::FairMutex;
cfg_if::cfg_if! {
if #[cfg(feature = "local_fs")] {
+1 -1
View File
@@ -22,12 +22,12 @@ use crate::ai::mcp::mcp_provider_from_file_path;
use crate::ai::mcp::TemplatableMCPServerManager;
use anyhow::Result;
use serde::{Deserialize, Serialize};
use galaxy_completer::parsers::simple::decompose_command;
use galaxy_core::user_preferences::GetUserPreferences;
use galaxy_core::{features::FeatureFlag, settings::Setting};
use galaxy_util::path::EscapeChar;
use galaxyui::{AppContext, Entity, EntityId, ModelContext, SingletonEntity};
use serde::{Deserialize, Serialize};
use super::BlocklistAIHistoryModel;
@@ -1,6 +1,5 @@
use std::sync::Arc;
use pathfinder_geometry::vector::vec2f;
use galaxy_core::ui::{appearance::Appearance, theme::color::internal_colors, Icon};
use galaxyui::{
elements::{
@@ -16,6 +15,7 @@ use galaxyui::{
elements::{ParentElement, ParentOffsetBounds},
ui_components::components::UiComponent,
};
use pathfinder_geometry::vector::vec2f;
use galaxy_core::features::FeatureFlag;
+1 -1
View File
@@ -1,4 +1,3 @@
use markdown_parser::{FormattedText, FormattedTextFragment, FormattedTextLine};
use galaxy_core::ui::appearance::Appearance;
use galaxyui::{
elements::{
@@ -7,6 +6,7 @@ use galaxyui::{
},
AppContext, Element, Entity, SingletonEntity, TypedActionView, View, ViewContext,
};
use markdown_parser::{FormattedText, FormattedTextFragment, FormattedTextLine};
use crate::{
ai::{blocklist::error_color, AIRequestUsageModel},
@@ -11,8 +11,6 @@ use crate::{
workspaces::user_workspaces::UserWorkspaces,
TelemetryEvent,
};
use pathfinder_geometry::vector::vec2f;
use std::{collections::HashMap, default::Default, sync::Arc};
use galaxy_core::{send_telemetry_from_ctx, ui::appearance::Appearance};
use galaxyui::{
elements::{
@@ -25,6 +23,8 @@ use galaxyui::{
ui_components::components::{Coords, UiComponentStyles},
AppContext, Element, Entity, SingletonEntity, TypedActionView, View, ViewContext, ViewHandle,
};
use pathfinder_geometry::vector::vec2f;
use std::{collections::HashMap, default::Default, sync::Arc};
const SUGGESTED_PROMPT_MODAL_HEADER: &str = "Prompt";
+1 -1
View File
@@ -23,7 +23,6 @@ use crate::{
server::cloud_objects::update_manager::UpdateManager,
ui_components::blended_colors,
};
use pathfinder_geometry::vector::vec2f;
use galaxy_core::ui::appearance::Appearance;
use galaxy_editor::editor::NavigationKey;
use galaxyui::elements::{
@@ -44,6 +43,7 @@ use galaxyui::{
AppContext, Element, Entity, FocusContext, SingletonEntity, TypedActionView, View, ViewContext,
ViewHandle,
};
use pathfinder_geometry::vector::vec2f;
const HEADER_TEXT: &str = "Suggested rule";
const MAX_EDITOR_HEIGHT: f32 = 240.;
+1 -1
View File
@@ -14,7 +14,6 @@ use crate::{
server::{cloud_objects::update_manager::UpdateManager, ids::ClientId},
ui_components::{blended_colors, icons::Icon},
};
use pathfinder_color::ColorU;
use galaxy_core::send_telemetry_from_ctx;
use galaxy_core::ui::appearance::Appearance;
use galaxy_core::ui::theme::Fill;
@@ -22,6 +21,7 @@ use galaxyui::{
elements::{Align, ChildView, Container, ParentElement, SavePosition, Stack},
AppContext, Element, Entity, SingletonEntity, TypedActionView, View, ViewContext, ViewHandle,
};
use pathfinder_color::ColorU;
use super::suggested_agent_mode_workflow_modal::SuggestedAgentModeWorkflowAndId;
use super::suggested_rule_modal::SuggestedRuleAndId;
@@ -1,4 +1,3 @@
use pathfinder_geometry::vector::vec2f;
use galaxy_core::ui::theme::Fill;
use galaxyui::{
elements::{Align, Container, CrossAxisAlignment, Dismiss, Flex, ParentElement, Stack},
@@ -10,6 +9,7 @@ use galaxyui::{
},
AppContext, Element, Entity, SingletonEntity, TypedActionView, View, ViewContext,
};
use pathfinder_geometry::vector::vec2f;
use crate::appearance::Appearance;
use crate::ui_components::{
@@ -7,10 +7,10 @@ use crate::server::server_api::ServerApiProvider;
use crate::terminal::cli_agent_sessions::{
CLIAgentSessionStatus, CLIAgentSessionsModel, CLIAgentSessionsModelEvent,
};
use std::collections::HashMap;
use std::sync::Arc;
use galaxy_graphql::ai::{AgentTaskState, PlatformErrorCode};
use galaxyui::{Entity, EntityId, ModelContext, SingletonEntity};
use std::collections::HashMap;
use std::sync::Arc;
/// Listens for conversation status changes and CLI agent session status
/// changes, then reports the corresponding task state to the server via
+1 -1
View File
@@ -1,8 +1,8 @@
use crate::ai::agent::conversation::AIConversationId;
use galaxy_core::telemetry::{EnablementState, TelemetryEvent, TelemetryEventDesc};
use serde::Serialize;
use serde_json::{json, Value};
use strum_macros::{EnumDiscriminants, EnumIter};
use galaxy_core::telemetry::{EnablementState, TelemetryEvent, TelemetryEventDesc};
#[derive(Debug, EnumDiscriminants)]
#[strum_discriminants(derive(EnumIter))]
@@ -6,8 +6,6 @@ use crate::persistence::model::{
PRIMARY_AGENT_CATEGORY,
};
use crate::ui_components::blended_colors;
use std::cmp::Ordering;
use std::collections::HashMap;
use galaxy_core::ui::theme::color::internal_colors;
use galaxy_core::ui::Icon;
use galaxyui::elements::ConstrainedBox;
@@ -18,6 +16,8 @@ use galaxyui::{
},
AppContext, Element, Entity, SingletonEntity, TypedActionView, View, ViewContext,
};
use std::cmp::Ordering;
use std::collections::HashMap;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum DisplayMode {
+2 -2
View File
@@ -1,8 +1,6 @@
//! This module contains common utilities for rendering Blocklist AI UI.
use std::sync::LazyLock;
use pathfinder_color::ColorU;
use pathfinder_geometry::vector::vec2f;
use galaxy_core::ui::appearance::Appearance;
use galaxyui::{
elements::{
@@ -17,6 +15,8 @@ use galaxyui::{
},
AppContext, Element, EntityId, EventContext, SingletonEntity,
};
use pathfinder_color::ColorU;
use pathfinder_geometry::vector::vec2f;
use crate::{
themes::theme::{AnsiColorIdentifier, Fill, WarpTheme},