first pass of merging in warp (doesn't build)

This commit is contained in:
Ryan Ward
2026-07-01 16:08:58 -05:00
parent 2f64909469
commit 4770ac06b5
3662 changed files with 414574 additions and 89772 deletions
+14 -16
View File
@@ -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;
+23 -30
View File
@@ -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";
+11 -17
View File
@@ -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.
+2 -1
View File
@@ -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 {
+29 -38
View File
@@ -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";
+11 -15
View File
@@ -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! {
+14 -16
View File
@@ -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 -3
View File
@@ -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.