first pass of merging in warp (doesn't build)
This commit is contained in:
+14
-16
@@ -1,24 +1,22 @@
|
||||
//! AI Assistant has since been renamed to "Galaxy" in the product.
|
||||
use std::{collections::HashSet, sync::Arc};
|
||||
//! AI Assistant has since been renamed to "Warp AI" in the product.
|
||||
use std::collections::HashSet;
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::{
|
||||
ai::{RequestLimitInfo, RequestLimitRefreshDuration},
|
||||
server::telemetry::OpenedWarpAISource,
|
||||
terminal::model::terminal_model::BlockIndex,
|
||||
workflows::workflow::{Argument, Workflow},
|
||||
};
|
||||
use galaxy_core::command::ExitCode;
|
||||
use galaxy_graphql::{
|
||||
ai::{
|
||||
RequestLimitInfo as RequestLimitInfoGraphql,
|
||||
RequestLimitRefreshDuration as RequestLimitRefreshDurationGraphql,
|
||||
},
|
||||
mutations::generate_commands::{GenerateCommandsFailureType, GeneratedCommand},
|
||||
};
|
||||
use itertools::Itertools;
|
||||
use lazy_static::lazy_static;
|
||||
use pathfinder_color::ColorU;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use galaxy_core::command::ExitCode;
|
||||
use galaxy_graphql::ai::{
|
||||
RequestLimitInfo as RequestLimitInfoGraphql,
|
||||
RequestLimitRefreshDuration as RequestLimitRefreshDurationGraphql,
|
||||
};
|
||||
use galaxy_graphql::mutations::generate_commands::{GenerateCommandsFailureType, GeneratedCommand};
|
||||
|
||||
use crate::ai::{RequestLimitInfo, RequestLimitRefreshDuration};
|
||||
use crate::server::telemetry::OpenedWarpAISource;
|
||||
use crate::terminal::model::terminal_model::BlockIndex;
|
||||
use crate::workflows::workflow::{Argument, Workflow};
|
||||
|
||||
pub mod execution_context;
|
||||
pub mod panel;
|
||||
|
||||
@@ -2,15 +2,15 @@ use std::sync::Arc;
|
||||
use std::time::Duration;
|
||||
|
||||
use chrono::Local;
|
||||
|
||||
use pathfinder_geometry::vector::{vec2f, Vector2F};
|
||||
use galaxy_editor::editor::NavigationKey;
|
||||
use galaxyui::clipboard::ClipboardContent;
|
||||
use galaxyui::elements::{
|
||||
resizable_state_handle, Align, Border, ChildAnchor, ConstrainedBox, Container, CornerRadius,
|
||||
CrossAxisAlignment, DispatchEventResult, DragBarSide, Empty, EventHandler, Fill, Flex,
|
||||
HyperlinkUrl, Icon, MainAxisAlignment, MainAxisSize, OffsetPositioning, ParentAnchor,
|
||||
PositionedElementAnchor, PositionedElementOffsetBounds, Radius, SavePosition, Shrinkable,
|
||||
Stack, Text,
|
||||
CrossAxisAlignment, DispatchEventResult, DragBarSide, Element, Empty, EventHandler, Fill, Flex,
|
||||
HyperlinkUrl, Icon, MainAxisAlignment, MainAxisSize, MouseStateHandle, OffsetPositioning,
|
||||
ParentAnchor, ParentElement, PositionedElementAnchor, PositionedElementOffsetBounds, Radius,
|
||||
Resizable, ResizableStateHandle, SavePosition, Shrinkable, Stack, Text,
|
||||
};
|
||||
use galaxyui::fonts::Properties;
|
||||
use galaxyui::keymap::{EditableBinding, FixedBinding};
|
||||
@@ -19,32 +19,10 @@ use galaxyui::presenter::ChildView;
|
||||
use galaxyui::r#async::Timer;
|
||||
use galaxyui::ui_components::button::ButtonVariant;
|
||||
use galaxyui::ui_components::components::{Coords, UiComponent, UiComponentStyles};
|
||||
use galaxyui::{elements::Element, AppContext, Entity, TypedActionView, View, ViewContext};
|
||||
use galaxyui::{FocusContext, ModelHandle, SingletonEntity, ViewHandle};
|
||||
use pathfinder_geometry::vector::{vec2f, Vector2F};
|
||||
|
||||
use crate::appearance::Appearance;
|
||||
use crate::editor::{
|
||||
EditorOptions, EditorView, Event as EditorEvent, PropagateAndNoOpNavigationKeys, TextOptions,
|
||||
use galaxyui::{
|
||||
AppContext, Entity, FocusContext, ModelHandle, SingletonEntity, TypedActionView, View,
|
||||
ViewContext, ViewHandle,
|
||||
};
|
||||
use crate::input_suggestions::{Event as InputSuggestionsEvent, InputSuggestions};
|
||||
|
||||
use crate::send_telemetry_from_ctx;
|
||||
use crate::server::server_api::ai::AIClient;
|
||||
use crate::server::server_api::ServerApi;
|
||||
use crate::server::telemetry::{TelemetryEvent, WarpAIActionType};
|
||||
use crate::terminal::resizable_data::{ModalType, ResizableData, DEFAULT_WARP_AI_WIDTH};
|
||||
use crate::ui_components::blended_colors;
|
||||
use crate::workspaces::user_workspaces::UserWorkspaces;
|
||||
|
||||
use crate::ui_components::buttons::icon_button;
|
||||
use crate::workspace::{ActiveSession, TAB_BAR_HEIGHT};
|
||||
|
||||
use crate::util::bindings::{cmd_or_ctrl_shift, CustomAction};
|
||||
use galaxyui::elements::MouseStateHandle;
|
||||
use galaxyui::elements::ParentElement;
|
||||
use galaxyui::elements::Resizable;
|
||||
use galaxyui::elements::ResizableStateHandle;
|
||||
|
||||
use super::execution_context::WarpAiExecutionContext;
|
||||
use super::requests::{Event as RequestsEvent, RequestStatus, Requests};
|
||||
@@ -54,6 +32,21 @@ use super::{
|
||||
AskAIType, AI_ASSISTANT_FEATURE_NAME, AI_ASSISTANT_LOGO_COLOR, AI_ASSISTANT_SVG_PATH,
|
||||
ASK_AI_ASSISTANT_TEXT, PROMPT_CHARACTER_LIMIT,
|
||||
};
|
||||
use crate::appearance::Appearance;
|
||||
use crate::editor::{
|
||||
EditorOptions, EditorView, Event as EditorEvent, PropagateAndNoOpNavigationKeys, TextOptions,
|
||||
};
|
||||
use crate::input_suggestions::{Event as InputSuggestionsEvent, InputSuggestions};
|
||||
use crate::send_telemetry_from_ctx;
|
||||
use crate::server::server_api::ai::AIClient;
|
||||
use crate::server::server_api::ServerApi;
|
||||
use crate::server::telemetry::{TelemetryEvent, WarpAIActionType};
|
||||
use crate::terminal::resizable_data::{ModalType, ResizableData, DEFAULT_WARP_AI_WIDTH};
|
||||
use crate::ui_components::blended_colors;
|
||||
use crate::ui_components::buttons::icon_button;
|
||||
use crate::util::bindings::{cmd_or_ctrl_shift, CustomAction};
|
||||
use crate::workspace::{ActiveSession, TAB_BAR_HEIGHT};
|
||||
use crate::workspaces::user_workspaces::UserWorkspaces;
|
||||
|
||||
const INFO_ICON_SVG_PATH: &str = "bundled/svg/info.svg";
|
||||
pub const HEXAGON_ALERT_SVG_PATH: &str = "bundled/svg/alert-hexagon.svg";
|
||||
|
||||
@@ -2,29 +2,23 @@
|
||||
// app/src/ai/request_usage_model duplicates much of this logic.
|
||||
use std::sync::Arc;
|
||||
|
||||
use anyhow::Result;
|
||||
use chrono::{OutOfRangeError, Utc};
|
||||
use futures::stream::AbortHandle;
|
||||
|
||||
use galaxy_core::user_preferences::GetUserPreferences as _;
|
||||
use galaxyui::{AppContext, Entity, ModelContext, SingletonEntity};
|
||||
|
||||
use crate::{
|
||||
ai::{RequestLimitInfo, RequestUsageInfo},
|
||||
ai_assistant::utils::{AssistantTranscriptPart, TranscriptPartSubType},
|
||||
auth::AuthStateProvider,
|
||||
send_telemetry_from_ctx,
|
||||
server::{
|
||||
server_api::{ai::AIClient, ServerApi},
|
||||
telemetry::{TelemetryEvent, WarpAIRequestResult},
|
||||
},
|
||||
workspaces::user_workspaces::UserWorkspaces,
|
||||
};
|
||||
|
||||
use super::{
|
||||
execution_context::WarpAiExecutionContext,
|
||||
utils::{markdown_segments_from_text, FormattedTranscriptMessage, TranscriptPart},
|
||||
};
|
||||
use anyhow::Result;
|
||||
use super::execution_context::WarpAiExecutionContext;
|
||||
use super::utils::{markdown_segments_from_text, FormattedTranscriptMessage, TranscriptPart};
|
||||
use crate::ai::{RequestLimitInfo, RequestUsageInfo};
|
||||
use crate::ai_assistant::utils::{AssistantTranscriptPart, TranscriptPartSubType};
|
||||
use crate::auth::AuthStateProvider;
|
||||
use crate::send_telemetry_from_ctx;
|
||||
use crate::server::server_api::ai::AIClient;
|
||||
use crate::server::server_api::ServerApi;
|
||||
use crate::server::telemetry::{TelemetryEvent, WarpAIRequestResult};
|
||||
use crate::workspaces::user_workspaces::UserWorkspaces;
|
||||
|
||||
/// The key for the corresponding entry in UserDefaults.
|
||||
/// Not wiring through Settings for now since this data is only needed by the panel view.
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
use markdown_parser::{CodeBlockText, FormattedText};
|
||||
|
||||
use crate::ai_assistant::utils::{
|
||||
AssistantTranscriptPart, CodeBlockIndex, FormattedTranscriptMessage, MarkdownSegment,
|
||||
};
|
||||
use markdown_parser::{CodeBlockText, FormattedText};
|
||||
|
||||
pub fn default_code_block_segment(code_block_index: CodeBlockIndex) -> MarkdownSegment {
|
||||
MarkdownSegment::CodeBlock {
|
||||
|
||||
@@ -1,47 +1,38 @@
|
||||
use galaxy_core::ui::builder::AnimatedButtonOptions;
|
||||
use galaxyui::clipboard::ClipboardContent;
|
||||
use galaxyui::elements::{DispatchEventResult, Stack};
|
||||
use galaxyui::units::Pixels;
|
||||
use galaxyui::{
|
||||
elements::{
|
||||
Align, Border, ChildAnchor, ClippedScrollStateHandle, ClippedScrollable, ConstrainedBox,
|
||||
Container, CornerRadius, CrossAxisAlignment, EventHandler, Fill, Flex,
|
||||
FormattedTextElement, HyperlinkUrl, Icon, MainAxisAlignment, MainAxisSize,
|
||||
MouseStateHandle, ParentAnchor, ParentElement, Radius, SavePosition, ScrollbarWidth,
|
||||
Shrinkable, Text, Wrap,
|
||||
},
|
||||
keymap::Keystroke,
|
||||
platform::Cursor,
|
||||
ui_components::components::{UiComponent, UiComponentStyles},
|
||||
units::IntoPixels,
|
||||
AppContext, Element, Entity, ModelHandle, SingletonEntity, TypedActionView, View, ViewContext,
|
||||
WeakViewHandle,
|
||||
};
|
||||
use galaxyui::{BlurContext, FocusContext};
|
||||
use markdown_parser::markdown_parser::RUNNABLE_BLOCK_MARKDOWN_LANG;
|
||||
use markdown_parser::CodeBlockText;
|
||||
use pathfinder_color::ColorU;
|
||||
use pathfinder_geometry::vector::vec2f;
|
||||
use galaxy_core::ui::builder::AnimatedButtonOptions;
|
||||
use galaxyui::clipboard::ClipboardContent;
|
||||
use galaxyui::elements::{
|
||||
Align, Border, ChildAnchor, ClippedScrollStateHandle, ClippedScrollable, ConstrainedBox,
|
||||
Container, CornerRadius, CrossAxisAlignment, DispatchEventResult, EventHandler, Fill, Flex,
|
||||
FormattedTextElement, HyperlinkUrl, Icon, MainAxisAlignment, MainAxisSize, MouseStateHandle,
|
||||
ParentAnchor, ParentElement, Radius, SavePosition, ScrollbarWidth, Shrinkable, Stack, Text,
|
||||
Wrap,
|
||||
};
|
||||
use galaxyui::keymap::Keystroke;
|
||||
use galaxyui::platform::Cursor;
|
||||
use galaxyui::ui_components::components::{UiComponent, UiComponentStyles};
|
||||
use galaxyui::units::{IntoPixels, Pixels};
|
||||
use galaxyui::{
|
||||
AppContext, BlurContext, Element, Entity, FocusContext, ModelHandle, SingletonEntity,
|
||||
TypedActionView, View, ViewContext, WeakViewHandle,
|
||||
};
|
||||
|
||||
use super::panel::{HEADER_HEIGHT, HEXAGON_ALERT_SVG_PATH};
|
||||
use super::requests::{RequestStatus, Requests};
|
||||
use super::utils::{
|
||||
code_block_position_id, markdown_segments_from_text, render_prepared_response_button,
|
||||
render_request_limit_info, save_as_workflow_position_id, AssistantTranscriptPart,
|
||||
CodeBlockIndex, FormattedTranscriptMessage, MarkdownSegment, TranscriptPartSubType,
|
||||
};
|
||||
use super::AI_ASSISTANT_SVG_PATH;
|
||||
use crate::appearance::Appearance;
|
||||
use crate::send_telemetry_from_ctx;
|
||||
use crate::server::telemetry::{SaveAsWorkflowModalSource, TelemetryEvent, WarpAIActionType};
|
||||
use crate::ui_components::blended_colors;
|
||||
use crate::workspaces::user_workspaces::UserWorkspaces;
|
||||
use crate::{
|
||||
appearance::Appearance,
|
||||
send_telemetry_from_ctx,
|
||||
server::telemetry::{SaveAsWorkflowModalSource, TelemetryEvent, WarpAIActionType},
|
||||
ui_components::blended_colors,
|
||||
};
|
||||
|
||||
use super::panel::HEADER_HEIGHT;
|
||||
use super::{
|
||||
panel::HEXAGON_ALERT_SVG_PATH,
|
||||
requests::{RequestStatus, Requests},
|
||||
utils::{
|
||||
code_block_position_id, markdown_segments_from_text, render_prepared_response_button,
|
||||
render_request_limit_info, save_as_workflow_position_id, AssistantTranscriptPart,
|
||||
CodeBlockIndex, FormattedTranscriptMessage, MarkdownSegment, TranscriptPartSubType,
|
||||
},
|
||||
AI_ASSISTANT_SVG_PATH,
|
||||
};
|
||||
|
||||
const TRANSCRIPT_POSITION_ID: &str = "ai_assistant::transcript";
|
||||
|
||||
|
||||
@@ -1,20 +1,16 @@
|
||||
use crate::{
|
||||
appearance, test_util::settings::initialize_settings_for_tests,
|
||||
workspaces::user_workspaces::UserWorkspaces,
|
||||
};
|
||||
|
||||
use galaxyui::{platform::WindowStyle, App};
|
||||
|
||||
use crate::ai_assistant::{
|
||||
requests::Requests,
|
||||
test_util::{
|
||||
default_assistant_transcript_part, default_code_block_segment, default_formatted_message,
|
||||
default_other_segment,
|
||||
},
|
||||
utils::{CodeBlockIndex, TranscriptPart, TranscriptPartSubType},
|
||||
};
|
||||
use galaxyui::platform::WindowStyle;
|
||||
use galaxyui::App;
|
||||
|
||||
use super::Transcript;
|
||||
use crate::ai_assistant::requests::Requests;
|
||||
use crate::ai_assistant::test_util::{
|
||||
default_assistant_transcript_part, default_code_block_segment, default_formatted_message,
|
||||
default_other_segment,
|
||||
};
|
||||
use crate::ai_assistant::utils::{CodeBlockIndex, TranscriptPart, TranscriptPartSubType};
|
||||
use crate::appearance;
|
||||
use crate::test_util::settings::initialize_settings_for_tests;
|
||||
use crate::workspaces::user_workspaces::UserWorkspaces;
|
||||
|
||||
// Mocked data to make it easy to test.
|
||||
lazy_static::lazy_static! {
|
||||
|
||||
@@ -1,22 +1,20 @@
|
||||
use galaxyui::{
|
||||
elements::{
|
||||
ConstrainedBox, Container, CornerRadius, CrossAxisAlignment, Flex, HighlightedHyperlink,
|
||||
Icon, MainAxisAlignment, MainAxisSize, MouseStateHandle, ParentElement, Radius, Text,
|
||||
},
|
||||
platform::Cursor,
|
||||
ui_components::{
|
||||
button::ButtonVariant,
|
||||
components::{Coords, UiComponent, UiComponentStyles},
|
||||
},
|
||||
AppContext, Element, ModelHandle,
|
||||
};
|
||||
/// Common functionality used across different AI Assistant components.
|
||||
use markdown_parser::{parse_markdown, CodeBlockText, FormattedText, FormattedTextLine};
|
||||
use pathfinder_color::ColorU;
|
||||
use galaxyui::elements::{
|
||||
ConstrainedBox, Container, CornerRadius, CrossAxisAlignment, Flex, HighlightedHyperlink, Icon,
|
||||
MainAxisAlignment, MainAxisSize, MouseStateHandle, ParentElement, Radius, Text,
|
||||
};
|
||||
use galaxyui::platform::Cursor;
|
||||
use galaxyui::ui_components::button::ButtonVariant;
|
||||
use galaxyui::ui_components::components::{Coords, UiComponent, UiComponentStyles};
|
||||
use galaxyui::{AppContext, Element, ModelHandle};
|
||||
|
||||
use crate::{appearance::Appearance, ui_components::blended_colors};
|
||||
|
||||
use super::{panel::AIAssistantAction, requests::Requests, transcript::CodeBlockMouseStateHandles};
|
||||
use super::panel::AIAssistantAction;
|
||||
use super::requests::Requests;
|
||||
use super::transcript::CodeBlockMouseStateHandles;
|
||||
use crate::appearance::Appearance;
|
||||
use crate::ui_components::blended_colors;
|
||||
|
||||
const PREPARED_RESPONSE_FONT_SIZE: f32 = 11.;
|
||||
const REQUEST_LIMIT_INFO_FONT_SIZE: f32 = 11.;
|
||||
@@ -423,7 +421,7 @@ fn translate_formatted_text_into_markdown_segments(
|
||||
// result is a set of markdown_segments.
|
||||
let mut markdown_segments = vec![];
|
||||
|
||||
// The running non-code block is a contigous sequence of FormattedTextLine's
|
||||
// The running non-code block is a contiguous sequence of FormattedTextLine's
|
||||
// that _do not_ contain any code blocks.
|
||||
let mut running_non_code_block = vec![];
|
||||
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
use super::{FormattedTranscriptMessage, TranscriptPart, TranscriptPartSubType};
|
||||
use crate::ai_assistant::test_util::{
|
||||
default_assistant_transcript_part, default_code_block_segment, default_formatted_message,
|
||||
default_other_segment,
|
||||
};
|
||||
|
||||
use super::{FormattedTranscriptMessage, TranscriptPart, TranscriptPartSubType};
|
||||
|
||||
use crate::ai_assistant::utils::CodeBlockIndex;
|
||||
|
||||
// Mocked data to make it easy to test.
|
||||
|
||||
Reference in New Issue
Block a user