Wrapping up bedrock implementation
This commit is contained in:
@@ -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::{
|
||||
|
||||
@@ -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::{
|
||||
|
||||
+1
-1
@@ -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::{
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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 => {
|
||||
|
||||
@@ -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::{
|
||||
|
||||
@@ -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,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};
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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::{
|
||||
|
||||
@@ -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,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() {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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::{
|
||||
|
||||
@@ -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};
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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::{
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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")] {
|
||||
|
||||
@@ -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,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";
|
||||
|
||||
|
||||
@@ -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.;
|
||||
|
||||
@@ -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,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 {
|
||||
|
||||
@@ -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},
|
||||
|
||||
Reference in New Issue
Block a user