Rebrand to Galaxy, major improvements to Bedrock support, still needs some TLC though
This commit is contained in:
+46
-46
@@ -1,16 +1,16 @@
|
||||
[package]
|
||||
authors = ["Warp Team <dev@warp.dev>"]
|
||||
default-run = "warp-oss"
|
||||
description = "The cloud-backed terminal for individuals and teams"
|
||||
authors = ["Ryan Ward <ryan.ward@samsung.com>"]
|
||||
default-run = "galaxy-ai-oss"
|
||||
description = "Galaxy AI - AI-powered terminal for development teams"
|
||||
edition = "2021"
|
||||
autobins = false
|
||||
name = "warp"
|
||||
name = "galaxy"
|
||||
version = "0.1.0"
|
||||
publish.workspace = true
|
||||
license.workspace = true
|
||||
|
||||
[lib]
|
||||
name = "warp"
|
||||
name = "galaxy"
|
||||
path = "src/lib.rs"
|
||||
|
||||
# We define separate targets for each channel (stable, preview, dev) so that we can
|
||||
@@ -18,12 +18,12 @@ path = "src/lib.rs"
|
||||
# flag overrides). Otherwise these binaries are exactly identical to our main binary.
|
||||
|
||||
[[bin]]
|
||||
name = "warp-oss"
|
||||
name = "galaxy-ai-oss"
|
||||
path = "src/bin/oss.rs"
|
||||
test = false
|
||||
|
||||
[[bin]]
|
||||
name = "warp"
|
||||
name = "galaxy-ai"
|
||||
path = "src/bin/local.rs"
|
||||
test = false
|
||||
|
||||
@@ -134,7 +134,7 @@ line-ending.workspace = true
|
||||
log.workspace = true
|
||||
log-panics = { version = "2.1.0", features = ["with-backtrace"] }
|
||||
lsp.workspace = true
|
||||
warp_logging.workspace = true
|
||||
galaxy_logging.workspace = true
|
||||
sentry = { workspace = true, optional = true }
|
||||
lz4_flex = "0.11"
|
||||
markdown_parser.workspace = true
|
||||
@@ -207,7 +207,7 @@ unindent = "0.1.7"
|
||||
url = { workspace = true, features = ["serde"] }
|
||||
urlocator.workspace = true
|
||||
uuid.workspace = true
|
||||
warp_cli.workspace = true
|
||||
galaxy_cli.workspace = true
|
||||
validator = "0.19.0"
|
||||
variant_count = "1.1.0"
|
||||
vec1.workspace = true
|
||||
@@ -215,19 +215,19 @@ version-compare.workspace = true
|
||||
vte.workspace = true
|
||||
walkdir.workspace = true
|
||||
warp-workflows.workspace = true
|
||||
warp_completer.workspace = true
|
||||
warp_core.workspace = true
|
||||
warp_editor.workspace = true
|
||||
warp_graphql.workspace = true
|
||||
warp_js = { workspace = true, optional = true }
|
||||
warp_server_client.workspace = true
|
||||
warp_util.workspace = true
|
||||
warpui = { workspace = true, features = ["schema_gen", "settings_value"] }
|
||||
galaxy_completer.workspace = true
|
||||
galaxy_core.workspace = true
|
||||
galaxy_editor.workspace = true
|
||||
galaxy_graphql.workspace = true
|
||||
galaxy_js = { workspace = true, optional = true }
|
||||
galaxy_server_client.workspace = true
|
||||
galaxy_util.workspace = true
|
||||
galaxyui = { workspace = true, features = ["schema_gen", "settings_value"] }
|
||||
voice_input = { workspace = true, optional = true }
|
||||
warpui_extras = { workspace = true, features = ["default", "user_preferences-toml"] }
|
||||
galaxyui_extras = { workspace = true, features = ["default", "user_preferences-toml"] }
|
||||
syntax_tree.workspace = true
|
||||
languages.workspace = true
|
||||
warp_terminal.workspace = true
|
||||
galaxy_terminal.workspace = true
|
||||
websocket.workspace = true
|
||||
wgpu = { workspace = true, optional = true }
|
||||
natural_language_detection.workspace = true
|
||||
@@ -246,9 +246,9 @@ remote_server.workspace = true
|
||||
repo_metadata.workspace = true
|
||||
vim.workspace = true
|
||||
rmcp = { workspace = true, features = ["client"] }
|
||||
warp_isolation_platform.workspace = true
|
||||
warp_ripgrep.workspace = true
|
||||
warp_managed_secrets.workspace = true
|
||||
galaxy_isolation_platform.workspace = true
|
||||
galaxy_ripgrep.workspace = true
|
||||
galaxy_managed_secrets.workspace = true
|
||||
|
||||
[target.'cfg(target_os = "macos")'.dependencies]
|
||||
block.workspace = true
|
||||
@@ -308,7 +308,7 @@ warp-command-signatures = { workspace = true, features = ["embed-signatures"] }
|
||||
is_executable = "1.0.1"
|
||||
gethostname = "1.1.0"
|
||||
watcher.workspace = true
|
||||
warp_files.workspace = true
|
||||
galaxy_files.workspace = true
|
||||
tantivy = "0.26.0"
|
||||
|
||||
[target.'cfg(target_family = "wasm")'.dependencies]
|
||||
@@ -333,7 +333,7 @@ serde-wasm-bindgen = "0.6.5"
|
||||
# For wasm, we don't use the feature "embed-signatures".
|
||||
warp-command-signatures = { workspace = true }
|
||||
web-sys.workspace = true
|
||||
warp_web_event_bus.workspace = true
|
||||
galaxy_web_event_bus.workspace = true
|
||||
|
||||
[target.'cfg(unix)'.dependencies]
|
||||
cvt = "0.1.1"
|
||||
@@ -396,14 +396,14 @@ mockito.workspace = true
|
||||
serial_test = "0.8.0"
|
||||
sum_tree = { workspace = true, features = ["test-util"] }
|
||||
virtual-fs.workspace = true
|
||||
warp_completer = { workspace = true, features = ["test-util"] }
|
||||
warp_core = { workspace = true, features = ["test-util"] }
|
||||
warp_editor = { workspace = true, features = ["test-util"] }
|
||||
warp_server_client = { workspace = true, features = ["test-util"] }
|
||||
warp_terminal = { workspace = true, features = ["test-util"] }
|
||||
warpui = { workspace = true, features = ["test-util"] }
|
||||
warpui_extras = { workspace = true, features = ["test-util"] }
|
||||
warp_files = { workspace = true, features = ["test-util"] }
|
||||
galaxy_completer = { workspace = true, features = ["test-util"] }
|
||||
galaxy_core = { workspace = true, features = ["test-util"] }
|
||||
galaxy_editor = { workspace = true, features = ["test-util"] }
|
||||
galaxy_server_client = { workspace = true, features = ["test-util"] }
|
||||
galaxy_terminal = { workspace = true, features = ["test-util"] }
|
||||
galaxyui = { workspace = true, features = ["test-util"] }
|
||||
galaxyui_extras = { workspace = true, features = ["test-util"] }
|
||||
galaxy_files = { workspace = true, features = ["test-util"] }
|
||||
repo_metadata = { workspace = true, features = ["test-util"] }
|
||||
|
||||
[target.'cfg(not(target_family = "wasm"))'.dev-dependencies]
|
||||
@@ -417,7 +417,7 @@ prost-build.workspace = true
|
||||
sha2.workspace = true
|
||||
tempfile.workspace = true
|
||||
walkdir = "2.3.2"
|
||||
warp_util.workspace = true
|
||||
galaxy_util.workspace = true
|
||||
|
||||
[target.'cfg(windows)'.build-dependencies]
|
||||
embed-resource = "3.0"
|
||||
@@ -445,7 +445,7 @@ command_predictor = []
|
||||
context_line_review_comments = []
|
||||
completions_v2 = [
|
||||
"plugin_host",
|
||||
"warp_completer/v2",
|
||||
"galaxy_completer/v2",
|
||||
"dep:command-signatures-v2",
|
||||
]
|
||||
crash_reporting = [
|
||||
@@ -453,7 +453,7 @@ crash_reporting = [
|
||||
"dep:sentry-log",
|
||||
"dep:minidumper",
|
||||
"dep:crash-handler",
|
||||
"warp_logging/crash_reporting",
|
||||
"galaxy_logging/crash_reporting",
|
||||
"ai/crash_reporting",
|
||||
]
|
||||
creating_shared_sessions = []
|
||||
@@ -557,7 +557,7 @@ default = [
|
||||
"ambient_agents_command_line",
|
||||
"ambient_agents_image_upload",
|
||||
"scheduled_ambient_agents",
|
||||
"warp_managed_secrets",
|
||||
"galaxy_managed_secrets",
|
||||
"v4a_file_diffs",
|
||||
"classic_completions",
|
||||
"force_classic_completions",
|
||||
@@ -668,8 +668,8 @@ agent_mode_evals = [
|
||||
"full_source_code_embedding",
|
||||
"cross_repo_context",
|
||||
"rust-embed/debug-embed",
|
||||
"warpui/log_named_telemetry_events",
|
||||
"warp_logging/agent_mode_evals",
|
||||
"galaxyui/log_named_telemetry_events",
|
||||
"galaxy_logging/agent_mode_evals",
|
||||
]
|
||||
ambient_agents_command_line = []
|
||||
ambient_agents_image_upload = []
|
||||
@@ -710,7 +710,7 @@ local_fs = [
|
||||
"lsp/local_fs",
|
||||
"persistence/local_fs",
|
||||
"repo_metadata/local_fs",
|
||||
"warp_core/local_fs",
|
||||
"galaxy_core/local_fs",
|
||||
]
|
||||
log_expensive_frames_in_sentry = []
|
||||
markdown_tables = []
|
||||
@@ -731,7 +731,7 @@ read_image_files = []
|
||||
# This feature enables plugin support in Warp. Note that its typically checked
|
||||
# directly, rather than via the `FeatureFlag` enum, because its value is
|
||||
# required early in the app lifecycle prior to `FeatureFlag` initialization.
|
||||
plugin_host = ["dep:rquickjs", "dep:warp_js", "warp_cli/plugin_host"]
|
||||
plugin_host = ["dep:rquickjs", "dep:galaxy_js", "galaxy_cli/plugin_host"]
|
||||
# Enable this feature to automatically perform CPU profiling via pprof. The
|
||||
# generated profile will be written to profile.pb in the current directory.
|
||||
# NOTE: This may slow down program execution.
|
||||
@@ -743,7 +743,7 @@ recording_mode = []
|
||||
# This feature should only be enabled when building a release bundle with
|
||||
# the bundle script, and can be used to conditionally enable functionality
|
||||
# accordingly.
|
||||
release_bundle = ["rust-embed/debug-embed", "warp_core/release_bundle"]
|
||||
release_bundle = ["rust-embed/debug-embed", "galaxy_core/release_bundle"]
|
||||
render_agent_mode_output_markdown = []
|
||||
render_continuous_block_selections_with_single_border = []
|
||||
rich_history = []
|
||||
@@ -767,10 +767,10 @@ team_workflows = ["team_features_override"]
|
||||
toggle_bootstrap_block = []
|
||||
# Feature enabled only when app is compiled for integration tests.
|
||||
integration_tests = [
|
||||
"warp_cli/integration_tests",
|
||||
"warpui/integration_tests",
|
||||
"warpui/test-util",
|
||||
"warp_core/integration_tests",
|
||||
"galaxy_cli/integration_tests",
|
||||
"galaxyui/integration_tests",
|
||||
"galaxyui/test-util",
|
||||
"galaxy_core/integration_tests",
|
||||
]
|
||||
traces = []
|
||||
viewing_shared_sessions = []
|
||||
@@ -874,7 +874,7 @@ revert_to_checkpoints = []
|
||||
rewind_slash_command = []
|
||||
agent_view = []
|
||||
agent_view_block_context = ["agent_view"]
|
||||
warp_managed_secrets = []
|
||||
galaxy_managed_secrets = []
|
||||
v4a_file_diffs = []
|
||||
agent_tips = []
|
||||
agent_toolbar_editor = ["agent_view"]
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>dev.warp.WarpDockTilePlugin</string>
|
||||
<string>com.samsung.GalaxyAIDockTilePlugin</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>WarpDockTilePlugin</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>WarpDockTilePlugin</string>
|
||||
<string>GalaxyAIDockTilePlugin</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 4.8 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 18 KiB |
+6
-6
@@ -10,11 +10,11 @@ use sha2::Digest;
|
||||
use std::path::{Path, PathBuf};
|
||||
use std::{env, fs, process::Command};
|
||||
use walkdir::WalkDir;
|
||||
use warp_util::assets::{
|
||||
use galaxy_util::assets::{
|
||||
ASSETS_DIR, ASYNC_ASSETS_DIR, CONPTY_DLL_FILE, DXCOMPILER_DLL_FILE, DXIL_DLL_FILE,
|
||||
OPEN_CONSOLE_EXE_FILE, REMOTE_ASSETS_DIR, WINDOWS_ASSETS_DIR,
|
||||
};
|
||||
use warp_util::path::app_target_dir;
|
||||
use galaxy_util::path::app_target_dir;
|
||||
|
||||
fn main() -> Result<()> {
|
||||
cfg_aliases! {
|
||||
@@ -385,7 +385,7 @@ fn copy_async_assets() {
|
||||
let mut hasher = sha2::Sha256::new();
|
||||
hasher.update(&contents);
|
||||
let hash: [u8; 32] = hasher.finalize().into();
|
||||
let new_relative_path = warp_util::assets::hashed_asset_path(
|
||||
let new_relative_path = galaxy_util::assets::hashed_asset_path(
|
||||
asset_path
|
||||
.strip_prefix(&asset_dir)
|
||||
.expect("asset in unexpected location"),
|
||||
@@ -496,13 +496,13 @@ BEGIN
|
||||
BEGIN
|
||||
BLOCK "040904E4"
|
||||
BEGIN
|
||||
VALUE "CompanyName", "Denver Technologies, Inc\0"
|
||||
VALUE "CompanyName", "Samsung Electronics of America, Inc."
|
||||
VALUE "FileDescription", "{app_name}\0"
|
||||
VALUE "FileVersion", "{version}\0"
|
||||
VALUE "LegalCopyright", "© 2025, Denver Technologies, Inc\0"
|
||||
VALUE "LegalCopyright", "© 2026, Samsung Electronics Co., Ltd.\0"
|
||||
VALUE "InternalName", "\0"
|
||||
VALUE "OriginalFilename", "\0"
|
||||
VALUE "ProductName", "Warp\0"
|
||||
VALUE "ProductName", "Galaxy AI\0"
|
||||
VALUE "ProductVersion", "{version}\0"
|
||||
END
|
||||
END
|
||||
|
||||
@@ -17,9 +17,9 @@ use std::collections::HashSet;
|
||||
use std::path::PathBuf;
|
||||
|
||||
use settings::schema::SettingSchemaEntry;
|
||||
use warp_core::features::{FeatureFlag, DEBUG_FLAGS, DOGFOOD_FLAGS, PREVIEW_FLAGS, RELEASE_FLAGS};
|
||||
use warpui_extras::user_preferences::toml_backed::TomlBackedUserPreferences;
|
||||
use warpui_extras::user_preferences::UserPreferences as _;
|
||||
use galaxy_core::features::{FeatureFlag, DEBUG_FLAGS, DOGFOOD_FLAGS, PREVIEW_FLAGS, RELEASE_FLAGS};
|
||||
use galaxyui_extras::user_preferences::toml_backed::TomlBackedUserPreferences;
|
||||
use galaxyui_extras::user_preferences::UserPreferences as _;
|
||||
|
||||
/// Ensures all `inventory::submit!` registrations from the app crate's
|
||||
/// dependency tree are linked into the binary.
|
||||
@@ -29,7 +29,7 @@ use warpui_extras::user_preferences::UserPreferences as _;
|
||||
/// not include most of the app's object files and the `inventory`
|
||||
/// submissions they contain.
|
||||
fn ensure_settings_linked() {
|
||||
let _ = std::hint::black_box(warp::settings::RESTORE_SESSION);
|
||||
let _ = std::hint::black_box(galaxy::settings::RESTORE_SESSION);
|
||||
}
|
||||
|
||||
fn active_flags_for_channel(channel: &str) -> HashSet<FeatureFlag> {
|
||||
|
||||
@@ -7,7 +7,7 @@ use crate::ai::ambient_agents::AmbientAgentTaskId;
|
||||
use crate::ai::blocklist::agent_view::{AgentViewController, AgentViewControllerEvent};
|
||||
use crate::ai::blocklist::BlocklistAIHistoryModel;
|
||||
use crate::terminal::model::session::active_session::ActiveSession;
|
||||
use warpui::{
|
||||
use galaxyui::{
|
||||
AppContext, Entity, EntityId, ModelContext, ModelHandle, SingletonEntity, WeakModelHandle,
|
||||
WindowId,
|
||||
};
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use std::str::FromStr;
|
||||
|
||||
use warpui::{App, EntityId, WindowId};
|
||||
use galaxyui::{App, EntityId, WindowId};
|
||||
|
||||
use super::*;
|
||||
|
||||
|
||||
@@ -17,9 +17,9 @@ use serde::Serialize;
|
||||
use std::path::Path;
|
||||
use std::pin::Pin;
|
||||
use std::sync::Arc;
|
||||
use warp_core::channel::ChannelState;
|
||||
use warp_core::execution_mode::AppExecutionMode;
|
||||
use warp_core::features::FeatureFlag;
|
||||
use galaxy_core::channel::ChannelState;
|
||||
use galaxy_core::execution_mode::AppExecutionMode;
|
||||
use galaxy_core::features::FeatureFlag;
|
||||
|
||||
use crate::ai::agent::conversation::AIConversationId;
|
||||
use crate::ai::ambient_agents::AmbientAgentTaskId;
|
||||
@@ -35,8 +35,8 @@ use crate::ai::mcp::TemplatableMCPServerManager;
|
||||
use crate::settings::AISettings;
|
||||
use crate::terminal::safe_mode_settings::get_secret_obfuscation_mode;
|
||||
use crate::workspaces::user_workspaces::UserWorkspaces;
|
||||
use warp_core::user_preferences::GetUserPreferences;
|
||||
use warpui::{AppContext, EntityId, SingletonEntity as _};
|
||||
use galaxy_core::user_preferences::GetUserPreferences;
|
||||
use galaxyui::{AppContext, EntityId, SingletonEntity as _};
|
||||
|
||||
/// Unique, server-generated conversation-scoped token to be roundtripped to the API when sending
|
||||
/// requests that follow-up within a given conversation.
|
||||
|
||||
@@ -42,7 +42,7 @@ use chrono::{DateTime, Local, TimeZone};
|
||||
use persistence::model::AgentConversationData;
|
||||
use std::collections::{HashMap, HashSet};
|
||||
use std::sync::Arc;
|
||||
use warp_core::command::ExitCode;
|
||||
use galaxy_core::command::ExitCode;
|
||||
use warp_multi_agent_api as api;
|
||||
use warp_multi_agent_api::ask_user_question_result::answer_item::Answer as AskUserQuestionAnswer;
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ use ai::agent::convert::ToolToAIAgentActionError;
|
||||
use ai::agent::UnknownCitationTypeError;
|
||||
use ai::skills::SkillReference;
|
||||
use api::ask_user_question::question::QuestionType;
|
||||
use warp_core::channel::ChannelState;
|
||||
use galaxy_core::channel::ChannelState;
|
||||
use warp_multi_agent_api as api;
|
||||
|
||||
use crate::ai::agent::{AIAgentAttachment, UserQueryMode};
|
||||
|
||||
@@ -3,7 +3,7 @@ use crate::ai::agent::{
|
||||
AIAgentActionResult, AIAgentActionResultType, TransferShellCommandControlToUserResult,
|
||||
};
|
||||
use crate::terminal::model::block::BlockId;
|
||||
use warp_core::command::ExitCode;
|
||||
use galaxy_core::command::ExitCode;
|
||||
use warp_multi_agent_api as api;
|
||||
|
||||
#[test]
|
||||
|
||||
@@ -2,10 +2,11 @@ use std::{collections::HashMap, sync::Arc};
|
||||
|
||||
use crate::{ai::agent::redaction, terminal::model::session::SessionType};
|
||||
use futures_util::StreamExt;
|
||||
use warp_core::features::FeatureFlag;
|
||||
use galaxy_core::features::FeatureFlag;
|
||||
use warp_multi_agent_api as api;
|
||||
|
||||
use crate::ai::bedrock::client::{BedrockClient, BedrockClientConfig};
|
||||
use crate::ai::bedrock::diagnostic::BedrockDiagnosticLogger;
|
||||
use crate::server::server_api::ServerApi;
|
||||
|
||||
use super::{convert_to::convert_input, ConvertToAPITypeError, RequestParams, ResponseStream};
|
||||
@@ -141,7 +142,9 @@ pub async fn generate_multi_agent_output(
|
||||
let is_arn = model_id_for_fallback_check.starts_with("arn:");
|
||||
let fallback_to_warp = config.fallback_to_warp && !is_arn;
|
||||
if is_arn && config.fallback_to_warp {
|
||||
log::info!("[bedrock] Fallback disabled for ARN-based model (not available on Warp server)");
|
||||
log::info!(
|
||||
"[bedrock] Fallback disabled for ARN-based model (not available on Warp server)"
|
||||
);
|
||||
}
|
||||
match BedrockClient::from_config(config).await {
|
||||
Ok(bedrock) => {
|
||||
@@ -156,6 +159,14 @@ pub async fn generate_multi_agent_output(
|
||||
|
||||
log::info!("[bedrock] Starting stream with task_id={task_id}");
|
||||
|
||||
let needs_create_task = request
|
||||
.task_context
|
||||
.as_ref()
|
||||
.map(|tc| tc.tasks.is_empty())
|
||||
.unwrap_or(true);
|
||||
|
||||
log::info!("[bedrock] needs_create_task={needs_create_task}");
|
||||
|
||||
let model_id = request
|
||||
.settings
|
||||
.as_ref()
|
||||
@@ -165,6 +176,13 @@ pub async fn generate_multi_agent_output(
|
||||
|
||||
log::info!("[bedrock] Model: {model_id}");
|
||||
|
||||
let diagnostic_logger =
|
||||
BedrockDiagnosticLogger::try_new(&model_id, "", "", &task_id).map(Arc::new);
|
||||
|
||||
if let Some(ref logger) = diagnostic_logger {
|
||||
logger.log_protobuf_input(&request);
|
||||
}
|
||||
|
||||
let messages =
|
||||
crate::ai::bedrock::convert_request::extract_messages_from_request(&request);
|
||||
let system_prompt =
|
||||
@@ -178,16 +196,66 @@ pub async fn generate_multi_agent_output(
|
||||
tools.len()
|
||||
);
|
||||
|
||||
for (i, msg) in messages.iter().enumerate() {
|
||||
let content_desc = match &msg.content {
|
||||
crate::ai::bedrock::convert::MessageContent::Text(t) => {
|
||||
format!("Text({}chars)", t.len())
|
||||
}
|
||||
crate::ai::bedrock::convert::MessageContent::ToolUse {
|
||||
tool_use_id,
|
||||
name,
|
||||
..
|
||||
} => {
|
||||
format!("ToolUse(name={}, id={})", name, tool_use_id)
|
||||
}
|
||||
crate::ai::bedrock::convert::MessageContent::ToolResult {
|
||||
tool_use_id,
|
||||
is_error,
|
||||
..
|
||||
} => {
|
||||
format!("ToolResult(id={}, is_error={})", tool_use_id, is_error)
|
||||
}
|
||||
crate::ai::bedrock::convert::MessageContent::MultiPart(parts) => {
|
||||
let part_descs: Vec<String> = parts
|
||||
.iter()
|
||||
.map(|p| match p {
|
||||
crate::ai::bedrock::convert::ContentPart::Text(t) => {
|
||||
format!("Text({})", t.len())
|
||||
}
|
||||
crate::ai::bedrock::convert::ContentPart::ToolUse {
|
||||
name,
|
||||
tool_use_id,
|
||||
..
|
||||
} => format!("ToolUse({},{})", name, tool_use_id),
|
||||
crate::ai::bedrock::convert::ContentPart::ToolResult {
|
||||
tool_use_id,
|
||||
..
|
||||
} => format!("ToolResult({})", tool_use_id),
|
||||
})
|
||||
.collect();
|
||||
format!("MultiPart[{}]", part_descs.join(", "))
|
||||
}
|
||||
};
|
||||
log::debug!(
|
||||
"[bedrock] msg[{}]: role={:?}, content={}",
|
||||
i,
|
||||
msg.role,
|
||||
content_desc
|
||||
);
|
||||
}
|
||||
|
||||
match bedrock
|
||||
.converse_stream(
|
||||
&model_id,
|
||||
&task_id,
|
||||
needs_create_task,
|
||||
messages,
|
||||
system_prompt,
|
||||
tools,
|
||||
8192,
|
||||
None,
|
||||
true,
|
||||
diagnostic_logger,
|
||||
)
|
||||
.await
|
||||
{
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use crate::ai::agent::api::RequestParams;
|
||||
use crate::ai::blocklist::SessionContext;
|
||||
use crate::ai::llms::LLMId;
|
||||
use warp_core::features::FeatureFlag;
|
||||
use galaxy_core::features::FeatureFlag;
|
||||
use warp_multi_agent_api as api;
|
||||
|
||||
use super::get_supported_tools;
|
||||
|
||||
@@ -26,17 +26,17 @@ use std::{collections::HashMap, fmt::Display};
|
||||
use super::task_store::TaskStore;
|
||||
use uuid::Uuid;
|
||||
use vec1::{Size0Error, Vec1};
|
||||
use warp_core::command::ExitCode;
|
||||
use warp_core::execution_mode::AppExecutionMode;
|
||||
use warp_core::features::FeatureFlag;
|
||||
use warp_core::send_telemetry_from_ctx;
|
||||
use warp_core::ui::appearance::Appearance;
|
||||
use warp_core::ui::theme::color::internal_colors;
|
||||
use warp_core::ui::theme::WarpTheme;
|
||||
use galaxy_core::command::ExitCode;
|
||||
use galaxy_core::execution_mode::AppExecutionMode;
|
||||
use galaxy_core::features::FeatureFlag;
|
||||
use galaxy_core::send_telemetry_from_ctx;
|
||||
use galaxy_core::ui::appearance::Appearance;
|
||||
use galaxy_core::ui::theme::color::internal_colors;
|
||||
use galaxy_core::ui::theme::WarpTheme;
|
||||
use warp_multi_agent_api::response_event::stream_finished;
|
||||
use warp_multi_agent_api::{self as api, response_event::stream_finished::TokenUsage};
|
||||
use warpui::color::ColorU;
|
||||
use warpui::{EntityId, ModelContext, SingletonEntity};
|
||||
use galaxyui::color::ColorU;
|
||||
use galaxyui::{EntityId, ModelContext, SingletonEntity};
|
||||
|
||||
use crate::ai::agent::{AIIdentifiers, CancellationReason};
|
||||
use crate::{
|
||||
@@ -3683,7 +3683,7 @@ impl std::fmt::Display for ConversationStatus {
|
||||
}
|
||||
|
||||
impl ConversationStatus {
|
||||
pub fn render_icon(&self, appearance: &Appearance) -> warpui::elements::Icon {
|
||||
pub fn render_icon(&self, appearance: &Appearance) -> galaxyui::elements::Icon {
|
||||
match self {
|
||||
ConversationStatus::InProgress => in_progress_icon(appearance),
|
||||
ConversationStatus::Success => succeeded_icon(appearance),
|
||||
|
||||
@@ -5,7 +5,7 @@ use super::{
|
||||
};
|
||||
use crate::ai::artifacts::Artifact;
|
||||
use crate::persistence::model::AgentConversationData;
|
||||
use warp_core::features::FeatureFlag;
|
||||
use galaxy_core::features::FeatureFlag;
|
||||
use warp_multi_agent_api as api;
|
||||
|
||||
fn restored_conversation(conversation_data: Option<AgentConversationData>) -> AIConversation {
|
||||
|
||||
+25
-25
@@ -1,90 +1,90 @@
|
||||
use warp_core::ui::{appearance::Appearance, theme::AnsiColorIdentifier};
|
||||
use galaxy_core::ui::{appearance::Appearance, theme::AnsiColorIdentifier};
|
||||
|
||||
use crate::ui_components::{blended_colors, icons::Icon};
|
||||
|
||||
pub fn todo_list_icon(appearance: &Appearance) -> warpui::elements::Icon {
|
||||
warpui::elements::Icon::new(
|
||||
pub fn todo_list_icon(appearance: &Appearance) -> galaxyui::elements::Icon {
|
||||
galaxyui::elements::Icon::new(
|
||||
Icon::BulletedListBlock.into(),
|
||||
blended_colors::neutral_7(appearance.theme()),
|
||||
)
|
||||
}
|
||||
|
||||
pub fn pending_icon(appearance: &Appearance) -> warpui::elements::Icon {
|
||||
warpui::elements::Icon::new(
|
||||
pub fn pending_icon(appearance: &Appearance) -> galaxyui::elements::Icon {
|
||||
galaxyui::elements::Icon::new(
|
||||
Icon::Queued.into(),
|
||||
blended_colors::neutral_5(appearance.theme()),
|
||||
)
|
||||
}
|
||||
|
||||
pub fn in_progress_icon(appearance: &Appearance) -> warpui::elements::Icon {
|
||||
warpui::elements::Icon::new(
|
||||
pub fn in_progress_icon(appearance: &Appearance) -> galaxyui::elements::Icon {
|
||||
galaxyui::elements::Icon::new(
|
||||
Icon::Circle.into(),
|
||||
AnsiColorIdentifier::Magenta.to_ansi_color(&appearance.theme().terminal_colors().normal),
|
||||
)
|
||||
}
|
||||
|
||||
pub fn succeeded_icon(appearance: &Appearance) -> warpui::elements::Icon {
|
||||
warpui::elements::Icon::new(
|
||||
pub fn succeeded_icon(appearance: &Appearance) -> galaxyui::elements::Icon {
|
||||
galaxyui::elements::Icon::new(
|
||||
Icon::Check.into(),
|
||||
AnsiColorIdentifier::Green.to_ansi_color(&appearance.theme().terminal_colors().normal),
|
||||
)
|
||||
}
|
||||
|
||||
pub fn addressed_comment_icon(appearance: &Appearance) -> warpui::elements::Icon {
|
||||
warpui::elements::Icon::new(
|
||||
pub fn addressed_comment_icon(appearance: &Appearance) -> galaxyui::elements::Icon {
|
||||
galaxyui::elements::Icon::new(
|
||||
Icon::AddressedComment.into(),
|
||||
AnsiColorIdentifier::Green.to_ansi_color(&appearance.theme().terminal_colors().normal),
|
||||
)
|
||||
}
|
||||
|
||||
pub fn failed_icon(appearance: &Appearance) -> warpui::elements::Icon {
|
||||
warpui::elements::Icon::new(
|
||||
pub fn failed_icon(appearance: &Appearance) -> galaxyui::elements::Icon {
|
||||
galaxyui::elements::Icon::new(
|
||||
Icon::Triangle.into(),
|
||||
AnsiColorIdentifier::Red.to_ansi_color(&appearance.theme().terminal_colors().normal),
|
||||
)
|
||||
}
|
||||
|
||||
/// Not running, does not need user's attention
|
||||
pub fn gray_stop_icon(appearance: &Appearance) -> warpui::elements::Icon {
|
||||
warpui::elements::Icon::new(
|
||||
pub fn gray_stop_icon(appearance: &Appearance) -> galaxyui::elements::Icon {
|
||||
galaxyui::elements::Icon::new(
|
||||
Icon::StopFilled.into(),
|
||||
blended_colors::neutral_5(appearance.theme()),
|
||||
)
|
||||
}
|
||||
|
||||
/// Agent is waiting for user to follow-up with next prompt.
|
||||
pub fn gray_clock_icon(appearance: &Appearance) -> warpui::elements::Icon {
|
||||
warpui::elements::Icon::new(
|
||||
pub fn gray_clock_icon(appearance: &Appearance) -> galaxyui::elements::Icon {
|
||||
galaxyui::elements::Icon::new(
|
||||
Icon::ClockSnooze.into(),
|
||||
blended_colors::neutral_5(appearance.theme()),
|
||||
)
|
||||
}
|
||||
|
||||
/// Loading but not actionable yet.
|
||||
pub fn gray_circle_icon(appearance: &Appearance) -> warpui::elements::Icon {
|
||||
warpui::elements::Icon::new(
|
||||
pub fn gray_circle_icon(appearance: &Appearance) -> galaxyui::elements::Icon {
|
||||
galaxyui::elements::Icon::new(
|
||||
Icon::Circle.into(),
|
||||
blended_colors::neutral_5(appearance.theme()),
|
||||
)
|
||||
}
|
||||
|
||||
/// Not running, requires user's attention
|
||||
pub fn yellow_stop_icon(appearance: &Appearance) -> warpui::elements::Icon {
|
||||
warpui::elements::Icon::new(
|
||||
pub fn yellow_stop_icon(appearance: &Appearance) -> galaxyui::elements::Icon {
|
||||
galaxyui::elements::Icon::new(
|
||||
Icon::StopFilled.into(),
|
||||
AnsiColorIdentifier::Yellow.to_ansi_color(&appearance.theme().terminal_colors().normal),
|
||||
)
|
||||
}
|
||||
|
||||
/// To be used for actions (like running commands/reading files) that are long-running and executing.
|
||||
pub fn yellow_running_icon(appearance: &Appearance) -> warpui::elements::Icon {
|
||||
warpui::elements::Icon::new(
|
||||
pub fn yellow_running_icon(appearance: &Appearance) -> galaxyui::elements::Icon {
|
||||
galaxyui::elements::Icon::new(
|
||||
Icon::Circle.into(),
|
||||
AnsiColorIdentifier::Yellow.to_ansi_color(&appearance.theme().terminal_colors().normal),
|
||||
)
|
||||
}
|
||||
|
||||
/// Used for buttons that stop the current task
|
||||
pub fn red_stop_icon(appearance: &Appearance) -> warpui::elements::Icon {
|
||||
warpui::elements::Icon::new(Icon::StopFilled.into(), appearance.theme().ansi_fg_red())
|
||||
pub fn red_stop_icon(appearance: &Appearance) -> galaxyui::elements::Icon {
|
||||
galaxyui::elements::Icon::new(Icon::StopFilled.into(), appearance.theme().ansi_fg_red())
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ pub(super) mod util;
|
||||
|
||||
// Re-export types that were moved to the ai crate.
|
||||
pub use ai::agent::{action::*, action_result::*, AIAgentCitation, FileLocations};
|
||||
use warp_core::features::FeatureFlag;
|
||||
use galaxy_core::features::FeatureFlag;
|
||||
|
||||
#[cfg(test)]
|
||||
mod suggestion_test;
|
||||
@@ -33,7 +33,7 @@ use comment::ReviewComment;
|
||||
use task::TaskId;
|
||||
pub use telemetry::AIIdentifiers;
|
||||
|
||||
use warp_editor::render::model::LineCount;
|
||||
use galaxy_editor::render::model::LineCount;
|
||||
|
||||
use parking_lot::RwLock;
|
||||
use std::collections::{HashMap, HashSet};
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
use serde::Serialize;
|
||||
use warpui::{AppContext, SingletonEntity};
|
||||
use galaxyui::{AppContext, SingletonEntity};
|
||||
|
||||
use crate::ai::llms::LLMId;
|
||||
use crate::CloudModel;
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
use crate::ai::blocklist::{BlocklistAIContextEvent, BlocklistAIContextModel};
|
||||
use pathfinder_color::ColorU;
|
||||
use warp_core::ui::appearance::Appearance;
|
||||
use warp_core::ui::theme::Fill;
|
||||
use warpui::elements::{
|
||||
use galaxy_core::ui::appearance::Appearance;
|
||||
use galaxy_core::ui::theme::Fill;
|
||||
use galaxyui::elements::{
|
||||
ClippedScrollStateHandle, ClippedScrollable, Dismiss, Empty, Expanded, ParentElement,
|
||||
SavePosition, ScrollTarget, ScrollToPositionMode, ScrollbarWidth, Shrinkable,
|
||||
};
|
||||
use warpui::fonts::FamilyId;
|
||||
use warpui::ModelHandle;
|
||||
use warpui::SingletonEntity;
|
||||
use warpui::{
|
||||
use galaxyui::fonts::FamilyId;
|
||||
use galaxyui::ModelHandle;
|
||||
use galaxyui::SingletonEntity;
|
||||
use galaxyui::{
|
||||
elements::{
|
||||
Border, ConstrainedBox, Container, CornerRadius, CrossAxisAlignment, DropShadow, Flex,
|
||||
MainAxisSize, Radius, Text,
|
||||
@@ -50,7 +50,7 @@ struct Styles {
|
||||
}
|
||||
|
||||
pub fn init(app: &mut AppContext) {
|
||||
use warpui::keymap::macros::*;
|
||||
use galaxyui::keymap::macros::*;
|
||||
|
||||
app.register_fixed_bindings([FixedBinding::new(
|
||||
"escape",
|
||||
@@ -124,9 +124,9 @@ impl AgentTodosPopupView {
|
||||
|
||||
fn render_header(
|
||||
&self,
|
||||
app: &warpui::AppContext,
|
||||
app: &galaxyui::AppContext,
|
||||
todo_list: &AIAgentTodoList,
|
||||
) -> Box<dyn warpui::Element> {
|
||||
) -> Box<dyn galaxyui::Element> {
|
||||
let appearance = Appearance::as_ref(app);
|
||||
let styles = self.styles(appearance);
|
||||
let theme = appearance.theme();
|
||||
@@ -159,7 +159,7 @@ impl View for AgentTodosPopupView {
|
||||
"AgentTodosPopup"
|
||||
}
|
||||
|
||||
fn render(&self, app: &warpui::AppContext) -> Box<dyn warpui::Element> {
|
||||
fn render(&self, app: &galaxyui::AppContext) -> Box<dyn galaxyui::Element> {
|
||||
let Some(todo_list) = self
|
||||
.ai_context_model
|
||||
.as_ref(app)
|
||||
@@ -271,7 +271,7 @@ impl View for AgentTodosPopupView {
|
||||
ScrollbarWidth::Auto,
|
||||
theme.nonactive_ui_detail().into(),
|
||||
theme.active_ui_detail().into(),
|
||||
warpui::elements::Fill::None,
|
||||
galaxyui::elements::Fill::None,
|
||||
)
|
||||
.with_overlayed_scrollbar()
|
||||
.finish();
|
||||
|
||||
@@ -13,7 +13,7 @@ use markdown_parser::{
|
||||
use mermaid_to_svg::is_mermaid_diagram;
|
||||
use regex::Regex;
|
||||
use std::{collections::HashMap, path::PathBuf};
|
||||
use warp_util::path::LineAndColumnArg;
|
||||
use galaxy_util::path::LineAndColumnArg;
|
||||
|
||||
lazy_static! {
|
||||
/// Markdown prefix for code blocks. Matches on triple backticks followed by a language.
|
||||
@@ -258,7 +258,7 @@ fn image_section(image: FormattedImage, layout: AgentOutputImageLayout) -> AIAge
|
||||
}
|
||||
|
||||
fn markdown_source_for_image(image: &FormattedImage) -> String {
|
||||
warp_editor::content::text::format_image_markdown(
|
||||
galaxy_editor::content::text::format_image_markdown(
|
||||
&image.alt_text,
|
||||
&image.source,
|
||||
image.title.as_deref(),
|
||||
|
||||
@@ -29,15 +29,15 @@ use serde::{Deserialize, Deserializer, Serialize, Serializer};
|
||||
use session_sharing_protocol::common::SessionId;
|
||||
use std::collections::{HashMap, HashSet};
|
||||
use std::time::Duration;
|
||||
use warp_cli::agent::Harness;
|
||||
use warp_core::execution_mode::AppExecutionMode;
|
||||
use warp_core::features::FeatureFlag;
|
||||
use warp_core::report_error;
|
||||
use warp_core::ui::theme::{color::internal_colors, WarpTheme};
|
||||
use warpui::color::ColorU;
|
||||
use warpui::r#async::Timer;
|
||||
use warpui::windowing::{StateEvent, WindowManager};
|
||||
use warpui::{
|
||||
use galaxy_cli::agent::Harness;
|
||||
use galaxy_core::execution_mode::AppExecutionMode;
|
||||
use galaxy_core::features::FeatureFlag;
|
||||
use galaxy_core::report_error;
|
||||
use galaxy_core::ui::theme::{color::internal_colors, WarpTheme};
|
||||
use galaxyui::color::ColorU;
|
||||
use galaxyui::r#async::Timer;
|
||||
use galaxyui::windowing::{StateEvent, WindowManager};
|
||||
use galaxyui::{
|
||||
duration_with_jitter, AppContext, Entity, EntityId, ModelContext, RequestState,
|
||||
SingletonEntity, WindowId,
|
||||
};
|
||||
|
||||
@@ -8,8 +8,8 @@ use std::{
|
||||
Arc,
|
||||
},
|
||||
};
|
||||
use warp_core::features::FeatureFlag;
|
||||
use warpui::{App, EntityId};
|
||||
use galaxy_core::features::FeatureFlag;
|
||||
use galaxyui::{App, EntityId};
|
||||
|
||||
use crate::ai::agent::conversation::{AIConversation, AIConversationId, ConversationStatus};
|
||||
use crate::ai::ambient_agents::task::{TaskCreatorInfo, TaskStatusMessage};
|
||||
@@ -29,7 +29,7 @@ use super::{
|
||||
MAX_PERSONAL_TASKS, MAX_TEAM_TASKS,
|
||||
};
|
||||
use crate::ai::ambient_agents::task::HarnessConfig;
|
||||
use warp_cli::agent::Harness;
|
||||
use galaxy_cli::agent::Harness;
|
||||
|
||||
/// Creates a test task with specified creator UID and updated_at time
|
||||
fn create_test_task(
|
||||
|
||||
@@ -6,7 +6,7 @@ use async_trait::async_trait;
|
||||
use futures::future::Either;
|
||||
use futures::StreamExt;
|
||||
use instant::Instant;
|
||||
use warpui::r#async::Timer;
|
||||
use galaxyui::r#async::Timer;
|
||||
|
||||
use crate::server::server_api::ai::AgentRunEvent;
|
||||
use crate::server::server_api::ServerApi;
|
||||
|
||||
@@ -5,7 +5,7 @@ use anyhow::{anyhow, Context, Result};
|
||||
#[cfg(not(target_family = "wasm"))]
|
||||
use futures::future::Either;
|
||||
#[cfg(not(target_family = "wasm"))]
|
||||
use warpui::r#async::Timer;
|
||||
use galaxyui::r#async::Timer;
|
||||
|
||||
use crate::ai::agent::ReceivedMessageInput;
|
||||
use crate::server::server_api::ai::{AIClient, AgentRunEvent, ReadAgentMessageResponse};
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use std::collections::HashMap;
|
||||
|
||||
use warp_core::features::FeatureFlag;
|
||||
use warpui::{AppContext, Entity, EntityId, ModelContext, SingletonEntity, WindowId};
|
||||
use galaxy_core::features::FeatureFlag;
|
||||
use galaxyui::{AppContext, Entity, EntityId, ModelContext, SingletonEntity, WindowId};
|
||||
|
||||
use crate::settings::AISettings;
|
||||
|
||||
@@ -21,7 +21,7 @@ use crate::terminal::CLIAgent;
|
||||
use crate::workspace::util::is_terminal_view_in_same_tab;
|
||||
use crate::workspace::{Workspace, WorkspaceRegistry};
|
||||
use crate::BlocklistAIHistoryModel;
|
||||
use warp_core::send_telemetry_from_ctx;
|
||||
use galaxy_core::send_telemetry_from_ctx;
|
||||
|
||||
/// Singleton model responsible for triggering in-app notifications on blocking conversation
|
||||
/// status updates and tracking/storing these notifications for the notifications mailbox.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
use warp_core::features::FeatureFlag;
|
||||
use warpui::{App, EntityId, ModelHandle};
|
||||
use galaxy_core::features::FeatureFlag;
|
||||
use galaxyui::{App, EntityId, ModelHandle};
|
||||
|
||||
use crate::ai::active_agent_views_model::ActiveAgentViewsModel;
|
||||
use crate::ai::agent::conversation::AIConversationId;
|
||||
|
||||
@@ -7,18 +7,18 @@ use crate::appearance::Appearance;
|
||||
use crate::ui_components::icons::Icon;
|
||||
use pathfinder_color::ColorU;
|
||||
use pathfinder_geometry::vector::vec2f;
|
||||
use warp_core::ui::color::blend::Blend;
|
||||
use warp_core::ui::theme::color::internal_colors;
|
||||
use warpui::elements::{
|
||||
use galaxy_core::ui::color::blend::Blend;
|
||||
use galaxy_core::ui::theme::color::internal_colors;
|
||||
use galaxyui::elements::{
|
||||
Align, Border, ConstrainedBox, Container, CornerRadius, CrossAxisAlignment, Dismiss,
|
||||
DropShadow, Element, Flex, Hoverable, MainAxisAlignment, MainAxisSize, MouseStateHandle,
|
||||
ParentElement, Radius, Shrinkable, Text,
|
||||
};
|
||||
use warpui::fonts::{Properties, Weight};
|
||||
use warpui::keymap::{FixedBinding, Keystroke};
|
||||
use warpui::platform::Cursor;
|
||||
use warpui::ui_components::components::{Coords, UiComponent, UiComponentStyles};
|
||||
use warpui::{AppContext, Entity, SingletonEntity, TypedActionView, View, ViewContext};
|
||||
use galaxyui::fonts::{Properties, Weight};
|
||||
use galaxyui::keymap::{FixedBinding, Keystroke};
|
||||
use galaxyui::platform::Cursor;
|
||||
use galaxyui::ui_components::components::{Coords, UiComponent, UiComponentStyles};
|
||||
use galaxyui::{AppContext, Entity, SingletonEntity, TypedActionView, View, ViewContext};
|
||||
|
||||
// Modal dimensions based on Figma design.
|
||||
const MODAL_WIDTH: f32 = 440.;
|
||||
@@ -79,7 +79,7 @@ pub struct AgentTypeSelector {
|
||||
}
|
||||
|
||||
pub fn init(app: &mut AppContext) {
|
||||
use warpui::keymap::macros::*;
|
||||
use galaxyui::keymap::macros::*;
|
||||
|
||||
app.register_fixed_bindings(vec![
|
||||
FixedBinding::new(
|
||||
@@ -223,7 +223,7 @@ impl AgentTypeSelector {
|
||||
(base_background, base_border)
|
||||
};
|
||||
|
||||
let avatar_icon = ConstrainedBox::new(icon.to_warpui_icon(icon_color).finish())
|
||||
let avatar_icon = ConstrainedBox::new(icon.to_galaxyui_icon(icon_color).finish())
|
||||
.with_width(AVATAR_ICON_SIZE)
|
||||
.with_height(AVATAR_ICON_SIZE)
|
||||
.finish();
|
||||
|
||||
@@ -11,23 +11,23 @@ use crate::workflows::WorkflowType;
|
||||
use serde::Serialize;
|
||||
use std::collections::HashMap;
|
||||
use string_offset::CharCounter;
|
||||
use warp_completer::signatures::CommandRegistry;
|
||||
use warp_completer::{util::parse_current_commands_and_tokens, ParsedTokensSnapshot};
|
||||
use warp_core::report_error;
|
||||
use warp_core::ui::theme::{AnsiColorIdentifier, AnsiColors};
|
||||
use warpui::clipboard::ClipboardContent;
|
||||
use warpui::elements::{
|
||||
use galaxy_completer::signatures::CommandRegistry;
|
||||
use galaxy_completer::{util::parse_current_commands_and_tokens, ParsedTokensSnapshot};
|
||||
use galaxy_core::report_error;
|
||||
use galaxy_core::ui::theme::{AnsiColorIdentifier, AnsiColors};
|
||||
use galaxyui::clipboard::ClipboardContent;
|
||||
use galaxyui::elements::{
|
||||
new_scrollable::{ClippedAxisConfiguration, DualAxisConfig, NewScrollable},
|
||||
Align, Border, ClippedScrollStateHandle, ConstrainedBox, Container, CornerRadius,
|
||||
CrossAxisAlignment, Element, Empty, Expanded, Flex, Highlight, HighlightedRange,
|
||||
MainAxisAlignment, MainAxisSize, MouseStateHandle, ParentElement, Radius, Text,
|
||||
};
|
||||
use warpui::fonts::{Properties, Weight};
|
||||
use warpui::prelude::ChildView;
|
||||
use warpui::text_layout::TextStyle;
|
||||
use warpui::ui_components::components::{UiComponent, UiComponentStyles};
|
||||
use warpui::ViewHandle;
|
||||
use warpui::{AppContext, Entity, SingletonEntity, TypedActionView, View, ViewContext};
|
||||
use galaxyui::fonts::{Properties, Weight};
|
||||
use galaxyui::prelude::ChildView;
|
||||
use galaxyui::text_layout::TextStyle;
|
||||
use galaxyui::ui_components::components::{UiComponent, UiComponentStyles};
|
||||
use galaxyui::ViewHandle;
|
||||
use galaxyui::{AppContext, Entity, SingletonEntity, TypedActionView, View, ViewContext};
|
||||
|
||||
const DOCS_URL: &str = "https://docs.warp.dev/agent-platform/cloud-agents/overview";
|
||||
const ENV_DOCS_URL: &str =
|
||||
@@ -617,7 +617,7 @@ impl View for CloudSetupGuideView {
|
||||
},
|
||||
theme.nonactive_ui_detail().into(),
|
||||
theme.active_ui_detail().into(),
|
||||
warpui::elements::Fill::None,
|
||||
galaxyui::elements::Fill::None,
|
||||
)
|
||||
.finish();
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
//! Action buttons row for conversation details panel.
|
||||
|
||||
use warp_core::ui::theme::AnsiColorIdentifier;
|
||||
use warpui::elements::{ChildView, CrossAxisAlignment, Empty, Flex, ParentElement};
|
||||
use warpui::{AppContext, Element, Entity, TypedActionView, View, ViewContext, ViewHandle};
|
||||
use galaxy_core::ui::theme::AnsiColorIdentifier;
|
||||
use galaxyui::elements::{ChildView, CrossAxisAlignment, Empty, Flex, ParentElement};
|
||||
use galaxyui::{AppContext, Element, Entity, TypedActionView, View, ViewContext, ViewHandle};
|
||||
|
||||
use crate::view_components::copyable_text_field::COPY_FEEDBACK_DURATION;
|
||||
|
||||
@@ -274,7 +274,7 @@ impl TypedActionView for ConversationActionButtonsRow {
|
||||
let duration = COPY_FEEDBACK_DURATION;
|
||||
ctx.spawn(
|
||||
async move {
|
||||
warpui::r#async::Timer::after(duration).await;
|
||||
galaxyui::r#async::Timer::after(duration).await;
|
||||
},
|
||||
|me, _, ctx| {
|
||||
me.copy_link_button.update(ctx, |button, ctx| {
|
||||
|
||||
@@ -9,7 +9,7 @@ pub(crate) mod view;
|
||||
|
||||
pub(crate) use agent_management_model::{AgentManagementEvent, AgentNotificationsModel};
|
||||
|
||||
pub fn init(app: &mut warpui::AppContext) {
|
||||
pub fn init(app: &mut galaxyui::AppContext) {
|
||||
view::init(app);
|
||||
agent_type_selector::init(app);
|
||||
notifications::view::NotificationMailboxView::init(app);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use enum_iterator::Sequence;
|
||||
use instant::Instant;
|
||||
use uuid::Uuid;
|
||||
use warpui::EntityId;
|
||||
use galaxyui::EntityId;
|
||||
|
||||
use crate::ai::agent::conversation::AIConversationId;
|
||||
use crate::ai::artifacts::Artifact;
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use pathfinder_color::ColorU;
|
||||
use warp_core::ui::icons::Icon;
|
||||
use warp_core::ui::theme::{Fill, WarpTheme};
|
||||
use warpui::clipboard::ClipboardContent;
|
||||
use warpui::elements::{
|
||||
use galaxy_core::ui::icons::Icon;
|
||||
use galaxy_core::ui::theme::{Fill, WarpTheme};
|
||||
use galaxyui::clipboard::ClipboardContent;
|
||||
use galaxyui::elements::{
|
||||
ChildView, ConstrainedBox, Container, CornerRadius, CrossAxisAlignment, DispatchEventResult,
|
||||
Element, EventHandler, Flex, MainAxisAlignment, MainAxisSize, ParentElement, Radius, Rect,
|
||||
Shrinkable,
|
||||
};
|
||||
use warpui::fonts::Weight;
|
||||
use warpui::ui_components::components::{UiComponent, UiComponentStyles};
|
||||
use warpui::{View, ViewContext, ViewHandle};
|
||||
use galaxyui::fonts::Weight;
|
||||
use galaxyui::ui_components::components::{UiComponent, UiComponentStyles};
|
||||
use galaxyui::{View, ViewContext, ViewHandle};
|
||||
|
||||
use warp_core::ui::appearance::Appearance as CoreAppearance;
|
||||
use warp_core::ui::theme::color::internal_colors;
|
||||
use galaxy_core::ui::appearance::Appearance as CoreAppearance;
|
||||
use galaxy_core::ui::theme::color::internal_colors;
|
||||
|
||||
use crate::ai::agent::conversation::ConversationStatus;
|
||||
use crate::ai::agent_management::notifications::item::NotificationSourceAgent;
|
||||
@@ -85,7 +85,7 @@ impl ActionButtonTheme for NotificationArtifactButtonTheme {
|
||||
}
|
||||
|
||||
/// Callback invoked when the user clicks the expand/collapse affordance on a clamped message.
|
||||
pub(crate) type OnExpandClick = Box<dyn Fn(&mut warpui::EventContext)>;
|
||||
pub(crate) type OnExpandClick = Box<dyn Fn(&mut galaxyui::EventContext)>;
|
||||
|
||||
/// Renders the inner content of a notification item.
|
||||
/// Dispatches to the rich layout (with branch row) or simple layout based on `item.branch`.
|
||||
@@ -258,7 +258,7 @@ fn render_branch_label(branch: &str, appearance: &Appearance) -> Box<dyn Element
|
||||
.with_cross_axis_alignment(CrossAxisAlignment::Center)
|
||||
.with_spacing(2.)
|
||||
.with_child(
|
||||
ConstrainedBox::new(Icon::GitBranch.to_warpui_icon(color).finish())
|
||||
ConstrainedBox::new(Icon::GitBranch.to_galaxyui_icon(color).finish())
|
||||
.with_width(10.)
|
||||
.with_height(10.)
|
||||
.finish(),
|
||||
@@ -339,7 +339,7 @@ fn render_expand_chevron(
|
||||
Icon::ChevronRight
|
||||
};
|
||||
let chevron = ConstrainedBox::new(
|
||||
icon.to_warpui_icon(theme.disabled_text_color(theme.surface_1()))
|
||||
icon.to_galaxyui_icon(theme.disabled_text_color(theme.surface_1()))
|
||||
.finish(),
|
||||
)
|
||||
.with_width(12.)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use warpui::EntityId;
|
||||
use galaxyui::EntityId;
|
||||
|
||||
use super::*;
|
||||
use crate::ai::agent::conversation::AIConversationId;
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
use std::time::Duration;
|
||||
|
||||
use pathfinder_geometry::vector::vec2f;
|
||||
use warp_core::ui::color::blend::Blend;
|
||||
use warp_core::ui::theme::color::internal_colors;
|
||||
use warpui::elements::{
|
||||
use galaxy_core::ui::color::blend::Blend;
|
||||
use galaxy_core::ui::theme::color::internal_colors;
|
||||
use galaxyui::elements::{
|
||||
Border, ChildAnchor, ConstrainedBox, Container, CornerRadius, CrossAxisAlignment,
|
||||
DispatchEventResult, Element, EventHandler, Flex, Hoverable, MouseStateHandle,
|
||||
OffsetPositioning, Padding, ParentElement, PositionedElementAnchor,
|
||||
PositionedElementOffsetBounds, Radius, SavePosition, Shrinkable, Stack,
|
||||
};
|
||||
use warpui::keymap::Keystroke;
|
||||
use warpui::platform::Cursor;
|
||||
use warpui::r#async::{SpawnedFutureHandle, Timer};
|
||||
use warpui::ui_components::components::{Coords, UiComponent, UiComponentStyles};
|
||||
use warpui::ui_components::keyboard_shortcut::KeyboardShortcut;
|
||||
use warpui::{AppContext, Entity, SingletonEntity, TypedActionView, View, ViewContext, ViewHandle};
|
||||
use galaxyui::keymap::Keystroke;
|
||||
use galaxyui::platform::Cursor;
|
||||
use galaxyui::r#async::{SpawnedFutureHandle, Timer};
|
||||
use galaxyui::ui_components::components::{Coords, UiComponent, UiComponentStyles};
|
||||
use galaxyui::ui_components::keyboard_shortcut::KeyboardShortcut;
|
||||
use galaxyui::{AppContext, Entity, SingletonEntity, TypedActionView, View, ViewContext, ViewHandle};
|
||||
|
||||
use crate::ai::agent_management::notifications::item_rendering::{
|
||||
create_notification_artifact_buttons_view, handle_notification_artifact_buttons_event,
|
||||
@@ -367,7 +367,7 @@ fn render_toast(
|
||||
appearance: &Appearance,
|
||||
) -> Box<dyn Element> {
|
||||
let theme = appearance.theme();
|
||||
let on_expand: OnExpandClick = Box::new(move |ctx: &mut warpui::EventContext| {
|
||||
let on_expand: OnExpandClick = Box::new(move |ctx: &mut galaxyui::EventContext| {
|
||||
ctx.dispatch_typed_action(AgentNotificationToastAction::ToggleMessageExpanded(id));
|
||||
});
|
||||
let keybinding_hint = keystroke.map(|ks| render_keybinding_hint(ks, appearance));
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
use warp_core::ui::theme::color::internal_colors;
|
||||
use warpui::elements::new_scrollable::{ScrollableAppearance, SingleAxisConfig};
|
||||
use warpui::elements::{
|
||||
use galaxy_core::ui::theme::color::internal_colors;
|
||||
use galaxyui::elements::new_scrollable::{ScrollableAppearance, SingleAxisConfig};
|
||||
use galaxyui::elements::{
|
||||
Border, ChildView, ClippedScrollStateHandle, ConstrainedBox, Container, CornerRadius,
|
||||
CrossAxisAlignment, Dismiss, DispatchEventResult, Element, Empty, EventHandler,
|
||||
Fill as ElementFill, Flex, Hoverable, MainAxisAlignment, MainAxisSize, MouseStateHandle,
|
||||
NewScrollable, Padding, ParentElement, Radius, SavePosition, ScrollTarget,
|
||||
ScrollToPositionMode, ScrollbarWidth, Shrinkable,
|
||||
};
|
||||
use warpui::fonts::Weight;
|
||||
use warpui::keymap::macros::id;
|
||||
use warpui::keymap::FixedBinding;
|
||||
use warpui::platform::Cursor;
|
||||
use warpui::ui_components::components::{UiComponent, UiComponentStyles};
|
||||
use warpui::{AppContext, Entity, SingletonEntity, TypedActionView, View, ViewContext, ViewHandle};
|
||||
use galaxyui::fonts::Weight;
|
||||
use galaxyui::keymap::macros::id;
|
||||
use galaxyui::keymap::FixedBinding;
|
||||
use galaxyui::platform::Cursor;
|
||||
use galaxyui::ui_components::components::{UiComponent, UiComponentStyles};
|
||||
use galaxyui::{AppContext, Entity, SingletonEntity, TypedActionView, View, ViewContext, ViewHandle};
|
||||
|
||||
use crate::ai::agent_management::notifications::item::NotificationFilter;
|
||||
use crate::ai::agent_management::notifications::item_rendering::{
|
||||
@@ -56,7 +56,7 @@ impl Entity for NotificationMailboxView {
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub enum NotificationMailboxViewEvent {
|
||||
NavigateToTerminal { terminal_view_id: warpui::EntityId },
|
||||
NavigateToTerminal { terminal_view_id: galaxyui::EntityId },
|
||||
Dismissed,
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use serde::Serialize;
|
||||
use serde_json::json;
|
||||
use strum_macros::{EnumDiscriminants, EnumIter};
|
||||
use warp_core::telemetry::{EnablementState, TelemetryEvent, TelemetryEventDesc};
|
||||
use galaxy_core::telemetry::{EnablementState, TelemetryEvent, TelemetryEventDesc};
|
||||
|
||||
use crate::ai::agent_management::cloud_setup_guide_view::SetupGuideDocs;
|
||||
|
||||
@@ -216,7 +216,7 @@ impl TelemetryEvent for AgentManagementTelemetryEvent {
|
||||
}
|
||||
|
||||
fn event_descs() -> impl Iterator<Item = Box<dyn TelemetryEventDesc>> {
|
||||
warp_core::telemetry::enum_events::<Self>()
|
||||
galaxy_core::telemetry::enum_events::<Self>()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -290,4 +290,4 @@ impl TelemetryEventDesc for AgentManagementTelemetryEventDiscriminants {
|
||||
}
|
||||
}
|
||||
|
||||
warp_core::register_telemetry_event!(AgentManagementTelemetryEvent);
|
||||
galaxy_core::register_telemetry_event!(AgentManagementTelemetryEvent);
|
||||
|
||||
@@ -6,9 +6,9 @@ use fuzzy_match::match_indices_case_insensitive;
|
||||
use lazy_static::lazy_static;
|
||||
use pathfinder_color::ColorU;
|
||||
use siphasher::sip::SipHasher;
|
||||
use warp_core::features::FeatureFlag;
|
||||
use warpui::scene::DropShadow;
|
||||
use warpui::ui_components::button::ButtonVariant;
|
||||
use galaxy_core::features::FeatureFlag;
|
||||
use galaxyui::scene::DropShadow;
|
||||
use galaxyui::ui_components::button::ButtonVariant;
|
||||
|
||||
use crate::ai::agent::conversation::AIConversationId;
|
||||
use crate::ai::agent_conversations_model::{
|
||||
@@ -65,26 +65,26 @@ use crate::workspaces::user_workspaces::UserWorkspaces;
|
||||
use crate::{send_telemetry_from_ctx, AgentModeEntrypoint};
|
||||
use pathfinder_geometry::vector::vec2f;
|
||||
use settings::Setting;
|
||||
use warp_cli::agent::Harness;
|
||||
use warp_core::ui::icons::Icon;
|
||||
use warp_core::ui::theme::color::internal_colors;
|
||||
use warp_core::ui::theme::Fill;
|
||||
use warpui::clipboard::ClipboardContent;
|
||||
use warpui::elements::new_scrollable::{
|
||||
use galaxy_cli::agent::Harness;
|
||||
use galaxy_core::ui::icons::Icon;
|
||||
use galaxy_core::ui::theme::color::internal_colors;
|
||||
use galaxy_core::ui::theme::Fill;
|
||||
use galaxyui::clipboard::ClipboardContent;
|
||||
use galaxyui::elements::new_scrollable::{
|
||||
NewScrollableElement, ScrollableAppearance, SingleAxisConfig,
|
||||
};
|
||||
use warpui::elements::{
|
||||
use galaxyui::elements::{
|
||||
Align, Border, ChildAnchor, ChildView, Clipped, ConstrainedBox, Container, CornerRadius,
|
||||
CrossAxisAlignment, Element, Empty, Expanded, Flex, Hoverable, List, ListState, MainAxisSize,
|
||||
MouseStateHandle, NewScrollable, OffsetPositioning, Padding, ParentAnchor, ParentElement,
|
||||
ParentOffsetBounds, Radius, Rect, ScrollStateHandle, ScrollbarWidth, Shrinkable,
|
||||
SizeConstraintCondition, SizeConstraintSwitch, Stack, Text, Wrap,
|
||||
};
|
||||
use warpui::fonts::{Properties, Weight};
|
||||
use warpui::platform::Cursor;
|
||||
use warpui::ui_components::components::UiComponent;
|
||||
use warpui::ui_components::components::UiComponentStyles;
|
||||
use warpui::{
|
||||
use galaxyui::fonts::{Properties, Weight};
|
||||
use galaxyui::platform::Cursor;
|
||||
use galaxyui::ui_components::components::UiComponent;
|
||||
use galaxyui::ui_components::components::UiComponentStyles;
|
||||
use galaxyui::{
|
||||
keymap::FixedBinding, Action, AppContext, Entity, FocusContext, ModelHandle, SingletonEntity,
|
||||
TypedActionView, View, ViewContext, ViewHandle, WeakViewHandle,
|
||||
};
|
||||
@@ -117,7 +117,7 @@ pub fn init(app: &mut AppContext) {
|
||||
app.register_fixed_bindings([FixedBinding::new(
|
||||
cmd_or_ctrl_shift("f"),
|
||||
AgentManagementViewAction::FocusSearch,
|
||||
warpui::keymap::macros::id!(AgentManagementView::ui_name()),
|
||||
galaxyui::keymap::macros::id!(AgentManagementView::ui_name()),
|
||||
)]);
|
||||
}
|
||||
|
||||
@@ -1992,7 +1992,7 @@ impl AgentManagementView {
|
||||
|
||||
let loading_icon = ConstrainedBox::new(
|
||||
Icon::Refresh
|
||||
.to_warpui_icon(theme.sub_text_color(theme.surface_1()))
|
||||
.to_galaxyui_icon(theme.sub_text_color(theme.surface_1()))
|
||||
.finish(),
|
||||
)
|
||||
.with_height(icon_size)
|
||||
@@ -2036,7 +2036,7 @@ impl AgentManagementView {
|
||||
|
||||
let loading_icon = ConstrainedBox::new(
|
||||
Icon::Loading
|
||||
.to_warpui_icon(Fill::Solid(internal_colors::neutral_6(theme)))
|
||||
.to_galaxyui_icon(Fill::Solid(internal_colors::neutral_6(theme)))
|
||||
.finish(),
|
||||
)
|
||||
.with_height(appearance.ui_font_size() + 2.)
|
||||
@@ -2096,7 +2096,7 @@ impl AgentManagementView {
|
||||
let appearance = Appearance::as_ref(app);
|
||||
let icon = ConstrainedBox::new(
|
||||
Icon::FilterOff
|
||||
.to_warpui_icon(appearance.theme().nonactive_ui_text_color())
|
||||
.to_galaxyui_icon(appearance.theme().nonactive_ui_text_color())
|
||||
.finish(),
|
||||
)
|
||||
.with_width(24.)
|
||||
@@ -2135,7 +2135,7 @@ impl AgentManagementView {
|
||||
axis_config,
|
||||
theme.nonactive_ui_detail().into(),
|
||||
theme.active_ui_detail().into(),
|
||||
warpui::elements::Fill::None,
|
||||
galaxyui::elements::Fill::None,
|
||||
)
|
||||
.with_vertical_scrollbar(ScrollableAppearance::new(ScrollbarWidth::None, false))
|
||||
.with_always_handle_events_first(false)
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
use anyhow::{Context, Result};
|
||||
use serde::Serialize;
|
||||
use warp_cli::agent::OutputFormat;
|
||||
use warpui::{platform::TerminationMode, AppContext, SingletonEntity};
|
||||
use galaxy_cli::agent::OutputFormat;
|
||||
use galaxyui::{platform::TerminationMode, AppContext, SingletonEntity};
|
||||
|
||||
use crate::auth::auth_manager::{AuthManager, AuthManagerEvent};
|
||||
use crate::auth::user::PrincipalType;
|
||||
@@ -116,7 +116,7 @@ struct WhoamiOutput {
|
||||
/// Singleton model that provides a `ModelContext` for the `whoami` command's async work.
|
||||
struct WhoamiRunner;
|
||||
|
||||
impl warpui::Entity for WhoamiRunner {
|
||||
impl galaxyui::Entity for WhoamiRunner {
|
||||
type Event = ();
|
||||
}
|
||||
|
||||
|
||||
@@ -4,10 +4,10 @@ use crate::ai::agent_sdk::oauth_flow::poll_oauth_until_terminal;
|
||||
use crate::ai::cloud_environments::GithubRepo;
|
||||
use crate::server::server_api::ai::AgentListItem;
|
||||
use crate::server::server_api::ServerApiProvider;
|
||||
use warp_cli::agent::ListAgentConfigsArgs;
|
||||
use warp_graphql::queries::get_oauth_connect_tx_status::OauthConnectTxStatus;
|
||||
use warp_graphql::queries::user_repo_auth_status::UserRepoAuthStatusEnum;
|
||||
use warpui::{platform::TerminationMode, AppContext, ModelContext, SingletonEntity};
|
||||
use galaxy_cli::agent::ListAgentConfigsArgs;
|
||||
use galaxy_graphql::queries::get_oauth_connect_tx_status::OauthConnectTxStatus;
|
||||
use galaxy_graphql::queries::user_repo_auth_status::UserRepoAuthStatusEnum;
|
||||
use galaxyui::{platform::TerminationMode, AppContext, ModelContext, SingletonEntity};
|
||||
|
||||
const MAX_LINE_WIDTH: usize = 90;
|
||||
const MAX_AUTH_ATTEMPTS: u32 = 8;
|
||||
@@ -304,7 +304,7 @@ impl AgentConfigRunner {
|
||||
}
|
||||
}
|
||||
|
||||
impl warpui::Entity for AgentConfigRunner {
|
||||
impl galaxyui::Entity for AgentConfigRunner {
|
||||
type Event = ();
|
||||
}
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ use comfy_table::Cell;
|
||||
use futures::{future, StreamExt};
|
||||
use serde::Serialize;
|
||||
|
||||
use warp_cli::{
|
||||
use galaxy_cli::{
|
||||
agent::{Harness, OutputFormat, Prompt, RunCloudArgs},
|
||||
json_filter::JsonOutput,
|
||||
task::{
|
||||
@@ -37,10 +37,10 @@ use warp_cli::{
|
||||
},
|
||||
GlobalOptions,
|
||||
};
|
||||
use warp_core::channel::ChannelState;
|
||||
use warp_core::features::FeatureFlag;
|
||||
use warpui::r#async::Timer;
|
||||
use warpui::{
|
||||
use galaxy_core::channel::ChannelState;
|
||||
use galaxy_core::features::FeatureFlag;
|
||||
use galaxyui::r#async::Timer;
|
||||
use galaxyui::{
|
||||
platform::TerminationMode, r#async::Spawnable, AppContext, ModelContext, SingletonEntity,
|
||||
};
|
||||
|
||||
@@ -1240,7 +1240,7 @@ impl AmbientAgentRunner {
|
||||
}
|
||||
}
|
||||
|
||||
impl warpui::Entity for AmbientAgentRunner {
|
||||
impl galaxyui::Entity for AmbientAgentRunner {
|
||||
type Event = ();
|
||||
}
|
||||
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
|
||||
use chrono::{TimeZone, Utc};
|
||||
|
||||
use warp_cli::json_filter::JsonOutput;
|
||||
use warp_cli::task::{
|
||||
use galaxy_cli::json_filter::JsonOutput;
|
||||
use galaxy_cli::task::{
|
||||
ArtifactTypeArg, ExecutionLocationArg, ListTasksArgs, RunSortByArg, RunSortOrderArg,
|
||||
RunSourceArg, RunStateArg,
|
||||
};
|
||||
|
||||
@@ -2,12 +2,12 @@ use std::{path::PathBuf, sync::Arc};
|
||||
|
||||
use anyhow::{Context, Result};
|
||||
use serde::Serialize;
|
||||
use warp_cli::agent::OutputFormat;
|
||||
use warp_cli::artifact::{
|
||||
use galaxy_cli::agent::OutputFormat;
|
||||
use galaxy_cli::artifact::{
|
||||
ArtifactCommand, DownloadArtifactArgs, GetArtifactArgs, UploadArtifactArgs,
|
||||
};
|
||||
use warp_cli::GlobalOptions;
|
||||
use warpui::{platform::TerminationMode, AppContext, ModelContext, SingletonEntity};
|
||||
use galaxy_cli::GlobalOptions;
|
||||
use galaxyui::{platform::TerminationMode, AppContext, ModelContext, SingletonEntity};
|
||||
|
||||
use crate::ai::artifact_download::{download_artifact_bytes, download_destination};
|
||||
#[cfg(test)]
|
||||
@@ -129,7 +129,7 @@ impl ArtifactCommandRunner {
|
||||
}
|
||||
}
|
||||
|
||||
impl warpui::Entity for ArtifactCommandRunner {
|
||||
impl galaxyui::Entity for ArtifactCommandRunner {
|
||||
type Event = ();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
use std::path::PathBuf;
|
||||
use warp_cli::agent::OutputFormat;
|
||||
use galaxy_cli::agent::OutputFormat;
|
||||
|
||||
use super::*;
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ use std::sync::Arc;
|
||||
use anyhow::{anyhow, bail, Context, Result};
|
||||
use blocking::unblock;
|
||||
use mime_guess::from_path;
|
||||
use warp_cli::artifact::UploadArtifactArgs;
|
||||
use galaxy_cli::artifact::UploadArtifactArgs;
|
||||
|
||||
use super::common::parse_ambient_task_id;
|
||||
use crate::ai::agent::api::ServerConversationToken;
|
||||
|
||||
@@ -4,7 +4,7 @@ use std::path::PathBuf;
|
||||
|
||||
use chrono::Utc;
|
||||
use tempfile::tempdir;
|
||||
use warp_cli::artifact::UploadArtifactArgs;
|
||||
use galaxy_cli::artifact::UploadArtifactArgs;
|
||||
|
||||
use super::*;
|
||||
use crate::ai::agent::api::ServerConversationToken;
|
||||
|
||||
@@ -7,10 +7,10 @@ use std::time::Duration;
|
||||
|
||||
use futures::TryFutureExt;
|
||||
use inquire::{InquireError, Select};
|
||||
use warp_cli::agent::Harness;
|
||||
use warp_cli::environment::{EnvironmentCreateArgs, EnvironmentUpdateArgs};
|
||||
use warpui::r#async::FutureExt;
|
||||
use warpui::{AppContext, GetSingletonModelHandle, SingletonEntity as _, UpdateModel};
|
||||
use galaxy_cli::agent::Harness;
|
||||
use galaxy_cli::environment::{EnvironmentCreateArgs, EnvironmentUpdateArgs};
|
||||
use galaxyui::r#async::FutureExt;
|
||||
use galaxyui::{AppContext, GetSingletonModelHandle, SingletonEntity as _, UpdateModel};
|
||||
|
||||
use crate::ai::agent::conversation::ServerAIConversationMetadata;
|
||||
use crate::ai::agent_sdk::driver::{AgentDriverError, WARP_DRIVE_SYNC_TIMEOUT};
|
||||
@@ -252,7 +252,7 @@ impl EnvironmentChoice {
|
||||
|
||||
// If there are no synced environments, require the user to create one or use --no-environment.
|
||||
if options.len() == 1 {
|
||||
let cli_name = warp_cli::binary_name().unwrap_or_else(|| "warp".to_string());
|
||||
let cli_name = galaxy_cli::binary_name().unwrap_or_else(|| "warp".to_string());
|
||||
return Err(ResolveConfigurationError::Other(anyhow::anyhow!(
|
||||
"No environments are configured for this account.\n\
|
||||
You can create an environment with `{cli_name} environment create`.\n\
|
||||
|
||||
@@ -2,7 +2,7 @@ use std::path::Path;
|
||||
|
||||
use anyhow::Context as _;
|
||||
use serde_json::{Map, Value};
|
||||
use warp_cli::mcp::MCPSpec;
|
||||
use galaxy_cli::mcp::MCPSpec;
|
||||
|
||||
use crate::ai::ambient_agents::AgentConfigSnapshot;
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ use std::io::Write as _;
|
||||
use serde_json::json;
|
||||
|
||||
use crate::ai::ambient_agents::AgentConfigSnapshot;
|
||||
use warp_cli::mcp::MCPSpec;
|
||||
use galaxy_cli::mcp::MCPSpec;
|
||||
|
||||
fn write_temp(suffix: &str, contents: &str) -> tempfile::NamedTempFile {
|
||||
let mut file = tempfile::Builder::new().suffix(suffix).tempfile().unwrap();
|
||||
|
||||
@@ -76,13 +76,13 @@ use futures::{
|
||||
};
|
||||
use oneshot::{Canceled, Receiver, Sender};
|
||||
use uuid::Uuid;
|
||||
use warp_cli::agent::{Harness, OutputFormat};
|
||||
use warp_cli::mcp::MCPSpec;
|
||||
use warp_cli::share::ShareRequest;
|
||||
use warp_core::{features::FeatureFlag, report_error, report_if_error, safe_debug, safe_info};
|
||||
use warp_graphql::ai::AgentTaskState;
|
||||
use warp_managed_secrets::ManagedSecretValue;
|
||||
use warpui::{
|
||||
use galaxy_cli::agent::{Harness, OutputFormat};
|
||||
use galaxy_cli::mcp::MCPSpec;
|
||||
use galaxy_cli::share::ShareRequest;
|
||||
use galaxy_core::{features::FeatureFlag, report_error, report_if_error, safe_debug, safe_info};
|
||||
use galaxy_graphql::ai::AgentTaskState;
|
||||
use galaxy_managed_secrets::ManagedSecretValue;
|
||||
use galaxyui::{
|
||||
r#async::{FutureExt, TimeoutError},
|
||||
AppContext, Entity, ModelContext, ModelHandle, ModelSpawner, SingletonEntity,
|
||||
};
|
||||
@@ -441,8 +441,8 @@ pub enum AgentDriverError {
|
||||
},
|
||||
}
|
||||
|
||||
impl From<warpui::ModelDropped> for AgentDriverError {
|
||||
fn from(_: warpui::ModelDropped) -> Self {
|
||||
impl From<galaxyui::ModelDropped> for AgentDriverError {
|
||||
fn from(_: galaxyui::ModelDropped) -> Self {
|
||||
AgentDriverError::InvalidRuntimeState
|
||||
}
|
||||
}
|
||||
@@ -596,7 +596,7 @@ impl AgentDriver {
|
||||
|
||||
// Signal to third-party harnesses (e.g. Claude Code) that we're in a sandbox
|
||||
// so they allow root execution with permissive flags.
|
||||
if warp_isolation_platform::detect().is_some() {
|
||||
if galaxy_isolation_platform::detect().is_some() {
|
||||
env_vars.insert(OsString::from("IS_SANDBOX"), OsString::from("1"));
|
||||
}
|
||||
|
||||
@@ -729,7 +729,7 @@ impl AgentDriver {
|
||||
) {
|
||||
let timeout = idle_timeout.min(SETUP_FAILED_IDLE_TIMEOUT);
|
||||
log::info!("Environment setup failed; keeping session alive for {timeout:?}");
|
||||
warpui::r#async::Timer::after(timeout).await;
|
||||
galaxyui::r#async::Timer::after(timeout).await;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1402,7 +1402,7 @@ impl AgentDriver {
|
||||
// and then call stop_sharing_session when they're done. To know when streams are finished, we would need to modify start_ordered_terminal_events_listener
|
||||
// to send a message when the streams are finished, flushed, and the websocket is disconnected. For now, we'll just sleep for a second, as this seems
|
||||
// to be enough time for the streams to be finished and the events to be flushed.
|
||||
warpui::r#async::Timer::after(Duration::from_secs(1)).await;
|
||||
galaxyui::r#async::Timer::after(Duration::from_secs(1)).await;
|
||||
|
||||
conversation_status.into_result()
|
||||
}
|
||||
@@ -1569,7 +1569,7 @@ impl AgentDriver {
|
||||
let command_result = loop {
|
||||
futures::select! {
|
||||
exit_code = command_handle => break exit_code,
|
||||
_ = warpui::r#async::Timer::after(HARNESS_SAVE_INTERVAL).fuse() => {
|
||||
_ = galaxyui::r#async::Timer::after(HARNESS_SAVE_INTERVAL).fuse() => {
|
||||
log::debug!("Triggering periodic save of harness conversation data");
|
||||
report_if_error!(runner
|
||||
.save_conversation(SavePoint::Periodic, foreground)
|
||||
|
||||
@@ -8,7 +8,7 @@ use futures::TryStreamExt as _;
|
||||
use mime_guess::from_path;
|
||||
use tokio::fs;
|
||||
use tokio_util::io::StreamReader;
|
||||
use warp_core::features::FeatureFlag;
|
||||
use galaxy_core::features::FeatureFlag;
|
||||
|
||||
use crate::ai::agent_sdk::retry::with_bounded_retry;
|
||||
use crate::ai::ambient_agents::task::{AttachmentInput, TaskAttachment};
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use std::{collections::HashMap, ffi::OsString, future::Future, pin::Pin};
|
||||
|
||||
use anyhow::Error;
|
||||
use warpui::ModelSpawner;
|
||||
use galaxyui::ModelSpawner;
|
||||
|
||||
use super::terminal::TerminalDriver;
|
||||
use crate::ai::cloud_environments::ProvidersConfig;
|
||||
|
||||
@@ -3,9 +3,9 @@ use std::{collections::HashMap, ffi::OsString, future::Future, pin::Pin, time::D
|
||||
use anyhow::Context;
|
||||
use tempfile::{Builder, NamedTempFile};
|
||||
use vec1::Vec1;
|
||||
use warp_core::safe_info;
|
||||
use warp_managed_secrets::ManagedSecretManager;
|
||||
use warpui::{ModelSpawner, SingletonEntity};
|
||||
use galaxy_core::safe_info;
|
||||
use galaxy_managed_secrets::ManagedSecretManager;
|
||||
use galaxyui::{ModelSpawner, SingletonEntity};
|
||||
|
||||
use crate::ai::aws_credentials::aws_role_session_name;
|
||||
use crate::ai::cloud_environments::AwsProviderConfig;
|
||||
@@ -93,7 +93,7 @@ impl CloudProvider for AwsCloudProvider {
|
||||
ManagedSecretManager::handle(ctx)
|
||||
.as_ref(ctx)
|
||||
.issue_task_identity_token(
|
||||
warp_managed_secrets::client::IdentityTokenOptions {
|
||||
galaxy_managed_secrets::client::IdentityTokenOptions {
|
||||
audience,
|
||||
requested_duration: duration,
|
||||
subject_template,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use std::{collections::HashMap, ffi::OsString, future::Future, pin::Pin, time::Duration};
|
||||
|
||||
use anyhow::Context as _;
|
||||
use warp_managed_secrets::{GcpCredentials, GcpFederationConfig};
|
||||
use galaxy_managed_secrets::{GcpCredentials, GcpFederationConfig};
|
||||
|
||||
use crate::ai::cloud_environments::GcpProviderConfig;
|
||||
|
||||
|
||||
@@ -14,12 +14,12 @@ use ai::index::full_source_code_embedding::manager::{
|
||||
};
|
||||
use futures::{channel::oneshot, future::join_all};
|
||||
use repo_metadata::repositories::{DetectedRepositories, RepoDetectionSource};
|
||||
use warp_completer::completer::CommandExitStatus;
|
||||
use warp_core::{command::ExitCode, safe_info, safe_warn};
|
||||
use warpui::{r#async::FutureExt, ModelContext, ModelSpawner, SingletonEntity};
|
||||
use galaxy_completer::completer::CommandExitStatus;
|
||||
use galaxy_core::{command::ExitCode, safe_info, safe_warn};
|
||||
use galaxyui::{r#async::FutureExt, ModelContext, ModelSpawner, SingletonEntity};
|
||||
|
||||
use super::{terminal::TerminalDriver, AgentDriverError};
|
||||
use warp_cli::agent::Harness;
|
||||
use galaxy_cli::agent::Harness;
|
||||
|
||||
const CODEBASE_INDEX_SYNC_TIMEOUT: Duration = Duration::from_secs(60);
|
||||
|
||||
@@ -260,10 +260,10 @@ async fn prepare_environment_impl(
|
||||
// We also skip this in Namespace to reduce startup time.
|
||||
#[cfg(not(target_family = "wasm"))]
|
||||
let should_wait_for_indexing = !matches!(
|
||||
warp_isolation_platform::detect(),
|
||||
galaxy_isolation_platform::detect(),
|
||||
Some(
|
||||
warp_isolation_platform::IsolationPlatformType::DockerSandbox
|
||||
| warp_isolation_platform::IsolationPlatformType::Namespace
|
||||
galaxy_isolation_platform::IsolationPlatformType::DockerSandbox
|
||||
| galaxy_isolation_platform::IsolationPlatformType::Namespace
|
||||
)
|
||||
);
|
||||
#[cfg(target_family = "wasm")]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use crate::ai::blocklist::task_status_sync_model::classify_renderable_error;
|
||||
use crate::server::server_api::ai::TaskStatusUpdate;
|
||||
use warp_graphql::ai::{AgentTaskState, PlatformErrorCode};
|
||||
use galaxy_graphql::ai::{AgentTaskState, PlatformErrorCode};
|
||||
|
||||
use super::terminal::ShareSessionError;
|
||||
use super::AgentDriverError;
|
||||
@@ -71,7 +71,7 @@ pub fn classify_driver_error(error: &AgentDriverError) -> (AgentTaskState, TaskS
|
||||
),
|
||||
),
|
||||
AgentDriverError::NotLoggedIn => {
|
||||
let bin = warp_cli::binary_name().unwrap_or_else(|| "warp".to_string());
|
||||
let bin = galaxy_cli::binary_name().unwrap_or_else(|| "warp".to_string());
|
||||
(
|
||||
AgentTaskState::Error,
|
||||
TaskStatusUpdate::with_error_code(
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use warp_graphql::ai::{AgentTaskState, PlatformErrorCode};
|
||||
use galaxy_graphql::ai::{AgentTaskState, PlatformErrorCode};
|
||||
|
||||
use super::classify_driver_error;
|
||||
use crate::ai::agent_sdk::driver::terminal::ShareSessionError;
|
||||
|
||||
@@ -10,8 +10,8 @@ use serde::{Deserialize, Serialize};
|
||||
use serde_json::{Map, Value};
|
||||
use tempfile::NamedTempFile;
|
||||
use uuid::Uuid;
|
||||
use warp_cli::agent::Harness;
|
||||
use warpui::{ModelHandle, ModelSpawner};
|
||||
use galaxy_cli::agent::Harness;
|
||||
use galaxyui::{ModelHandle, ModelSpawner};
|
||||
|
||||
use crate::ai::agent::conversation::AIConversationId;
|
||||
use crate::ai::ambient_agents::AmbientAgentTaskId;
|
||||
|
||||
@@ -20,8 +20,8 @@ use serde::{Deserialize, Serialize};
|
||||
use tempfile::NamedTempFile;
|
||||
use tokio::sync::Mutex as AsyncMutex;
|
||||
use uuid::Uuid;
|
||||
use warpui::r#async::SpawnedFutureHandle;
|
||||
use warpui::ModelSpawner;
|
||||
use galaxyui::r#async::SpawnedFutureHandle;
|
||||
use galaxyui::ModelSpawner;
|
||||
|
||||
use crate::ai::agent_events::{
|
||||
run_agent_event_driver, AgentEventConsumer, AgentEventConsumerControlFlow,
|
||||
|
||||
@@ -22,7 +22,7 @@ use anyhow::{Context, Result};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use serde_json::Value;
|
||||
use uuid::Uuid;
|
||||
use warp_core::safe_warn;
|
||||
use galaxy_core::safe_warn;
|
||||
|
||||
use crate::ai::agent::conversation::AIConversationId;
|
||||
|
||||
|
||||
@@ -8,9 +8,9 @@ use parking_lot::Mutex;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use serde_json::{Map, Value};
|
||||
use tempfile::NamedTempFile;
|
||||
use warp_cli::agent::Harness;
|
||||
use warp_managed_secrets::ManagedSecretValue;
|
||||
use warpui::{ModelHandle, ModelSpawner};
|
||||
use galaxy_cli::agent::Harness;
|
||||
use galaxy_managed_secrets::ManagedSecretValue;
|
||||
use galaxyui::{ModelHandle, ModelSpawner};
|
||||
|
||||
use crate::ai::agent::conversation::AIConversationId;
|
||||
use crate::ai::ambient_agents::AmbientAgentTaskId;
|
||||
|
||||
@@ -9,9 +9,9 @@ use std::sync::Arc;
|
||||
use anyhow::{Context, Result};
|
||||
use async_trait::async_trait;
|
||||
use tempfile::NamedTempFile;
|
||||
use warp_cli::agent::Harness;
|
||||
use warp_managed_secrets::ManagedSecretValue;
|
||||
use warpui::{ModelHandle, ModelSpawner, SingletonEntity};
|
||||
use galaxy_cli::agent::Harness;
|
||||
use galaxy_managed_secrets::ManagedSecretValue;
|
||||
use galaxyui::{ModelHandle, ModelSpawner, SingletonEntity};
|
||||
|
||||
use crate::ai::agent::conversation::AIConversationId;
|
||||
use crate::ai::ambient_agents::AmbientAgentTaskId;
|
||||
@@ -21,11 +21,11 @@ use crate::terminal::cli_agent_sessions::{CLIAgentSessionStatus, CLIAgentSession
|
||||
use crate::terminal::model::block::{BlockId, SerializedBlock};
|
||||
use crate::terminal::CLIAgent;
|
||||
use crate::util::path::resolve_executable;
|
||||
use warp_cli::{
|
||||
use galaxy_cli::{
|
||||
OZ_CLI_ENV, OZ_HARNESS_ENV, OZ_PARENT_RUN_ID_ENV, OZ_RUN_ID_ENV, SERVER_ROOT_URL_OVERRIDE_ENV,
|
||||
SESSION_SHARING_SERVER_URL_OVERRIDE_ENV, WS_SERVER_URL_OVERRIDE_ENV,
|
||||
};
|
||||
use warp_core::channel::ChannelState;
|
||||
use galaxy_core::channel::ChannelState;
|
||||
|
||||
use super::terminal::{CommandHandle, TerminalDriver};
|
||||
use super::{
|
||||
|
||||
@@ -1289,7 +1289,7 @@ pub mod json {
|
||||
use crate::ai::agent::{AIAgentText, AIAgentTextSection};
|
||||
use crate::code::editor_management::CodeSource;
|
||||
use std::io::{self, BufWriter, Write};
|
||||
use warp_core::channel::ChannelState;
|
||||
use galaxy_core::channel::ChannelState;
|
||||
|
||||
/// Constructs the Oz dashboard URL for a given run ID.
|
||||
fn run_url(run_id: &str) -> String {
|
||||
|
||||
@@ -34,8 +34,8 @@ use anyhow::Result;
|
||||
use command::r#async::Command;
|
||||
use command::Stdio;
|
||||
use futures::future::join_all;
|
||||
use warp_core::report_error;
|
||||
use warpui::r#async::FutureExt as _;
|
||||
use galaxy_core::report_error;
|
||||
use galaxyui::r#async::FutureExt as _;
|
||||
|
||||
use crate::ai::agent_sdk::retry::with_bounded_retry;
|
||||
use crate::ai::ambient_agents::AmbientAgentTaskId;
|
||||
|
||||
@@ -12,12 +12,12 @@ use std::{
|
||||
use futures::channel::oneshot;
|
||||
use session_sharing_protocol::common::{Role, SessionId};
|
||||
use session_sharing_protocol::sharer::SessionSourceType;
|
||||
use warp_cli::share::{ShareAccessLevel, ShareRequest, ShareSubject};
|
||||
use warp_completer::completer::CommandOutput;
|
||||
use warp_core::command::ExitCode;
|
||||
use warp_core::features::FeatureFlag;
|
||||
use warp_util::path::ShellFamily;
|
||||
use warpui::{
|
||||
use galaxy_cli::share::{ShareAccessLevel, ShareRequest, ShareSubject};
|
||||
use galaxy_completer::completer::CommandOutput;
|
||||
use galaxy_core::command::ExitCode;
|
||||
use galaxy_core::features::FeatureFlag;
|
||||
use galaxy_util::path::ShellFamily;
|
||||
use galaxyui::{
|
||||
r#async::FutureExt, AppContext, Entity, ModelContext, ModelHandle, SingletonEntity as _,
|
||||
ViewHandle,
|
||||
};
|
||||
@@ -198,7 +198,7 @@ impl TerminalDriver {
|
||||
// When sharing is disabled (or running against ngrok), leave both halves
|
||||
// as None so that `wait_for_session_shared` returns immediately.
|
||||
let sharing_expected =
|
||||
should_share && !warp_core::channel::ChannelState::server_root_url().contains("ngrok");
|
||||
should_share && !galaxy_core::channel::ChannelState::server_root_url().contains("ngrok");
|
||||
let (mut session_share_tx, session_share_rx) = if sharing_expected {
|
||||
if !FeatureFlag::CreatingSharedSessions.is_enabled() {
|
||||
// Session sharing was requested but the feature is not enabled for this
|
||||
@@ -272,7 +272,7 @@ impl TerminalDriver {
|
||||
pub fn with_terminal_view(
|
||||
&self,
|
||||
ctx: &mut ModelContext<Self>,
|
||||
f: impl FnOnce(&mut TerminalView, &mut warpui::ViewContext<TerminalView>),
|
||||
f: impl FnOnce(&mut TerminalView, &mut galaxyui::ViewContext<TerminalView>),
|
||||
) {
|
||||
self.terminal_view.update(ctx, f);
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
use std::{ffi::OsString, sync::Arc, time::Duration};
|
||||
|
||||
use futures::channel::oneshot;
|
||||
use warp_cli::agent::Harness;
|
||||
use warp_cli::{
|
||||
use galaxy_cli::agent::Harness;
|
||||
use galaxy_cli::{
|
||||
OZ_CLI_ENV, OZ_HARNESS_ENV, OZ_PARENT_RUN_ID_ENV, OZ_RUN_ID_ENV, SERVER_ROOT_URL_OVERRIDE_ENV,
|
||||
SESSION_SHARING_SERVER_URL_OVERRIDE_ENV, WS_SERVER_URL_OVERRIDE_ENV,
|
||||
};
|
||||
use warp_core::channel::ChannelState;
|
||||
use galaxy_core::channel::ChannelState;
|
||||
|
||||
use super::{
|
||||
IdleTimeoutSender, LEGACY_OZ_PARENT_LISTENER_MANAGED_EXTERNALLY_ENV,
|
||||
|
||||
@@ -3,14 +3,14 @@ use std::collections::HashSet;
|
||||
use comfy_table::Cell;
|
||||
use inquire::{error::InquireError, Confirm, Select};
|
||||
use serde::Serialize;
|
||||
use warp_cli::{
|
||||
use galaxy_cli::{
|
||||
agent::OutputFormat,
|
||||
environment::{EnvironmentCommand, ImageCommand},
|
||||
scope::ObjectScope,
|
||||
GlobalOptions,
|
||||
};
|
||||
use warpui::r#async::FutureExt;
|
||||
use warpui::{AppContext, ModelContext, SingletonEntity};
|
||||
use galaxyui::r#async::FutureExt;
|
||||
use galaxyui::{AppContext, ModelContext, SingletonEntity};
|
||||
|
||||
use crate::ai::agent_sdk::output::{self, TableFormat};
|
||||
|
||||
@@ -32,11 +32,11 @@ use crate::util::time_format::format_approx_duration_from_now_utc;
|
||||
use crate::workspaces::user_profiles::UserProfiles;
|
||||
use crate::CloudObjectTypeAndId;
|
||||
use cynic::QueryBuilder;
|
||||
use warp_graphql::queries::get_oauth_connect_tx_status::OauthConnectTxStatus;
|
||||
use warp_graphql::queries::list_warp_dev_images::{
|
||||
use galaxy_graphql::queries::get_oauth_connect_tx_status::OauthConnectTxStatus;
|
||||
use galaxy_graphql::queries::list_warp_dev_images::{
|
||||
ListWarpDevImages, ListWarpDevImagesResult, ListWarpDevImagesVariables,
|
||||
};
|
||||
use warp_graphql::queries::user_repo_auth_status::UserRepoAuthStatusEnum;
|
||||
use galaxy_graphql::queries::user_repo_auth_status::UserRepoAuthStatusEnum;
|
||||
|
||||
const WARP_DEV_ENVIRONMENTS_REPO: &str = "https://github.com/warpdotdev/warp-dev-environments";
|
||||
|
||||
@@ -174,7 +174,7 @@ impl EnvironmentCommandRunner {
|
||||
);
|
||||
}
|
||||
output::print_list(image_infos, global_options.output_format);
|
||||
ctx.terminate_app(warpui::platform::TerminationMode::ForceTerminate, None);
|
||||
ctx.terminate_app(galaxyui::platform::TerminationMode::ForceTerminate, None);
|
||||
}
|
||||
ListWarpDevImagesResult::UserFacingError(_) | ListWarpDevImagesResult::Unknown => {
|
||||
super::report_fatal_error(anyhow::anyhow!("Failed to fetch images"), ctx);
|
||||
@@ -253,7 +253,7 @@ impl EnvironmentCommandRunner {
|
||||
|
||||
output::print_list(environment_infos, global_options.output_format);
|
||||
|
||||
ctx.terminate_app(warpui::platform::TerminationMode::ForceTerminate, None);
|
||||
ctx.terminate_app(galaxyui::platform::TerminationMode::ForceTerminate, None);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -276,7 +276,7 @@ impl EnvironmentCommandRunner {
|
||||
Ok(sid) => sid,
|
||||
Err(_) => {
|
||||
ctx.terminate_app(
|
||||
warpui::platform::TerminationMode::ForceTerminate,
|
||||
galaxyui::platform::TerminationMode::ForceTerminate,
|
||||
Some(Err(anyhow::anyhow!("Environment {} not found", id))),
|
||||
);
|
||||
return;
|
||||
@@ -287,10 +287,10 @@ impl EnvironmentCommandRunner {
|
||||
|
||||
if let Some(environment) = environment {
|
||||
Self::print_environment_details(&environment.model().string_model);
|
||||
ctx.terminate_app(warpui::platform::TerminationMode::ForceTerminate, None);
|
||||
ctx.terminate_app(galaxyui::platform::TerminationMode::ForceTerminate, None);
|
||||
} else {
|
||||
ctx.terminate_app(
|
||||
warpui::platform::TerminationMode::ForceTerminate,
|
||||
galaxyui::platform::TerminationMode::ForceTerminate,
|
||||
Some(Err(anyhow::anyhow!("Environment {} not found", id))),
|
||||
);
|
||||
}
|
||||
@@ -330,7 +330,7 @@ impl EnvironmentCommandRunner {
|
||||
match err {
|
||||
InquireError::OperationCanceled | InquireError::OperationInterrupted => {
|
||||
eprintln!("Environment creation canceled.");
|
||||
ctx.terminate_app(warpui::platform::TerminationMode::ForceTerminate, None);
|
||||
ctx.terminate_app(galaxyui::platform::TerminationMode::ForceTerminate, None);
|
||||
true
|
||||
}
|
||||
_ => false,
|
||||
@@ -426,7 +426,7 @@ impl EnvironmentCommandRunner {
|
||||
docker_image: Option<String>,
|
||||
github_repos: Vec<GithubRepo>,
|
||||
setup_commands: Vec<String>,
|
||||
scope: warp_cli::scope::ObjectScope,
|
||||
scope: galaxy_cli::scope::ObjectScope,
|
||||
ctx: &mut ModelContext<Self>,
|
||||
) {
|
||||
if let Some(image) = docker_image {
|
||||
@@ -464,7 +464,7 @@ impl EnvironmentCommandRunner {
|
||||
docker_image: String,
|
||||
github_repos: Vec<GithubRepo>,
|
||||
setup_commands: Vec<String>,
|
||||
scope: warp_cli::scope::ObjectScope,
|
||||
scope: galaxy_cli::scope::ObjectScope,
|
||||
ctx: &mut ModelContext<Self>,
|
||||
) {
|
||||
let initial_sync = UpdateManager::as_ref(ctx)
|
||||
@@ -521,7 +521,7 @@ impl EnvironmentCommandRunner {
|
||||
|
||||
if attempt > MAX_AUTH_ATTEMPTS {
|
||||
ctx.terminate_app(
|
||||
warpui::platform::TerminationMode::ForceTerminate,
|
||||
galaxyui::platform::TerminationMode::ForceTerminate,
|
||||
Some(Err(anyhow::anyhow!(
|
||||
"Exceeded maximum number of authorization attempts ({}). Please try again later.",
|
||||
MAX_AUTH_ATTEMPTS
|
||||
@@ -582,7 +582,7 @@ impl EnvironmentCommandRunner {
|
||||
if private_repo_owners.len() > 1 {
|
||||
let owners_str = private_repo_owners.into_iter().collect::<Vec<_>>().join(", ");
|
||||
ctx.terminate_app(
|
||||
warpui::platform::TerminationMode::ForceTerminate,
|
||||
galaxyui::platform::TerminationMode::ForceTerminate,
|
||||
Some(Err(anyhow::anyhow!(
|
||||
"All private repositories in an environment must belong to the same owner. Found multiple owners: {}.\nIf you need support for private repos from multiple owners, please submit a GitHub issue.",
|
||||
owners_str
|
||||
@@ -644,7 +644,7 @@ impl EnvironmentCommandRunner {
|
||||
}
|
||||
Ok(OauthConnectTxStatus::Failed) => {
|
||||
ctx.terminate_app(
|
||||
warpui::platform::TerminationMode::ForceTerminate,
|
||||
galaxyui::platform::TerminationMode::ForceTerminate,
|
||||
Some(Err(anyhow::anyhow!(
|
||||
"GitHub authorization failed. Please try again."
|
||||
))),
|
||||
@@ -652,7 +652,7 @@ impl EnvironmentCommandRunner {
|
||||
}
|
||||
Ok(OauthConnectTxStatus::Expired) => {
|
||||
ctx.terminate_app(
|
||||
warpui::platform::TerminationMode::ForceTerminate,
|
||||
galaxyui::platform::TerminationMode::ForceTerminate,
|
||||
Some(Err(anyhow::anyhow!(
|
||||
"GitHub authorization expired. Please try again."
|
||||
))),
|
||||
@@ -662,7 +662,7 @@ impl EnvironmentCommandRunner {
|
||||
| Ok(OauthConnectTxStatus::InProgress) => {
|
||||
// Should not be returned by poll_oauth_until_terminal.
|
||||
ctx.terminate_app(
|
||||
warpui::platform::TerminationMode::ForceTerminate,
|
||||
galaxyui::platform::TerminationMode::ForceTerminate,
|
||||
Some(Err(anyhow::anyhow!(
|
||||
"Unexpected non-terminal OAuth status returned"
|
||||
))),
|
||||
@@ -670,7 +670,7 @@ impl EnvironmentCommandRunner {
|
||||
}
|
||||
Err(err) => {
|
||||
ctx.terminate_app(
|
||||
warpui::platform::TerminationMode::ForceTerminate,
|
||||
galaxyui::platform::TerminationMode::ForceTerminate,
|
||||
Some(Err(anyhow::anyhow!(
|
||||
"Error polling OAuth status: {err}"
|
||||
))),
|
||||
@@ -685,14 +685,14 @@ impl EnvironmentCommandRunner {
|
||||
println!("\nAuthorize access here: {auth_url}\n");
|
||||
println!("After authorizing, please re-run this command.");
|
||||
ctx.terminate_app(
|
||||
warpui::platform::TerminationMode::ForceTerminate,
|
||||
galaxyui::platform::TerminationMode::ForceTerminate,
|
||||
None,
|
||||
);
|
||||
}
|
||||
(None, Some(_)) => {
|
||||
// Server returned txId without authUrl - unexpected.
|
||||
ctx.terminate_app(
|
||||
warpui::platform::TerminationMode::ForceTerminate,
|
||||
galaxyui::platform::TerminationMode::ForceTerminate,
|
||||
Some(Err(anyhow::anyhow!(
|
||||
"Server error: did not receive auth URL for OAuth flow"
|
||||
))),
|
||||
@@ -701,7 +701,7 @@ impl EnvironmentCommandRunner {
|
||||
(None, None) => {
|
||||
// No auth URL or txId provided, but we have auth issues.
|
||||
ctx.terminate_app(
|
||||
warpui::platform::TerminationMode::ForceTerminate,
|
||||
galaxyui::platform::TerminationMode::ForceTerminate,
|
||||
Some(Err(anyhow::anyhow!(
|
||||
"Cannot {} environment: authorization required but no auth flow provided by server",
|
||||
operation_name
|
||||
@@ -712,7 +712,7 @@ impl EnvironmentCommandRunner {
|
||||
}
|
||||
Err(e) => {
|
||||
ctx.terminate_app(
|
||||
warpui::platform::TerminationMode::ForceTerminate,
|
||||
galaxyui::platform::TerminationMode::ForceTerminate,
|
||||
Some(Err(e.context("Failed to check GitHub auth status"))),
|
||||
);
|
||||
}
|
||||
@@ -764,7 +764,7 @@ impl EnvironmentCommandRunner {
|
||||
{
|
||||
let server_id = result.server_id.unwrap();
|
||||
println!("Environment created successfully with ID: {server_id}");
|
||||
ctx.terminate_app(warpui::platform::TerminationMode::ForceTerminate, None);
|
||||
ctx.terminate_app(galaxyui::platform::TerminationMode::ForceTerminate, None);
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -807,13 +807,13 @@ impl EnvironmentCommandRunner {
|
||||
Ok(false) | Err(InquireError::OperationCanceled | InquireError::OperationInterrupted) => {
|
||||
println!("Environment {action} canceled.");
|
||||
ctx.terminate_app(
|
||||
warpui::platform::TerminationMode::ForceTerminate,
|
||||
galaxyui::platform::TerminationMode::ForceTerminate,
|
||||
None,
|
||||
);
|
||||
}
|
||||
Err(err) => {
|
||||
ctx.terminate_app(
|
||||
warpui::platform::TerminationMode::ForceTerminate,
|
||||
galaxyui::platform::TerminationMode::ForceTerminate,
|
||||
Some(Err(anyhow::anyhow!("Error prompting for confirmation: {err}"))),
|
||||
);
|
||||
}
|
||||
@@ -824,7 +824,7 @@ impl EnvironmentCommandRunner {
|
||||
}
|
||||
Err(_) => {
|
||||
ctx.terminate_app(
|
||||
warpui::platform::TerminationMode::ForceTerminate,
|
||||
galaxyui::platform::TerminationMode::ForceTerminate,
|
||||
Some(Err(anyhow::anyhow!(
|
||||
"Aborting environment {action} because integration usage could not be determined. Re-run with --force to override."
|
||||
))),
|
||||
@@ -868,7 +868,7 @@ impl EnvironmentCommandRunner {
|
||||
Err(_) => {
|
||||
let error = anyhow::anyhow!("Environment {} not found", id);
|
||||
ctx.terminate_app(
|
||||
warpui::platform::TerminationMode::ForceTerminate,
|
||||
galaxyui::platform::TerminationMode::ForceTerminate,
|
||||
Some(Err(error)),
|
||||
);
|
||||
return;
|
||||
@@ -879,7 +879,7 @@ impl EnvironmentCommandRunner {
|
||||
let Some(environment) = environment else {
|
||||
let error = anyhow::anyhow!("Environment {} not found", id);
|
||||
ctx.terminate_app(
|
||||
warpui::platform::TerminationMode::ForceTerminate,
|
||||
galaxyui::platform::TerminationMode::ForceTerminate,
|
||||
Some(Err(error)),
|
||||
);
|
||||
return;
|
||||
@@ -1011,7 +1011,7 @@ impl EnvironmentCommandRunner {
|
||||
println!("Environment updated successfully!\n");
|
||||
Self::print_environment_details(&updated_env);
|
||||
ctx.terminate_app(
|
||||
warpui::platform::TerminationMode::ForceTerminate,
|
||||
galaxyui::platform::TerminationMode::ForceTerminate,
|
||||
None,
|
||||
);
|
||||
}
|
||||
@@ -1047,7 +1047,7 @@ impl EnvironmentCommandRunner {
|
||||
Err(_) => {
|
||||
let error = anyhow::anyhow!("Environment {} not found", id);
|
||||
ctx.terminate_app(
|
||||
warpui::platform::TerminationMode::ForceTerminate,
|
||||
galaxyui::platform::TerminationMode::ForceTerminate,
|
||||
Some(Err(error)),
|
||||
);
|
||||
return;
|
||||
@@ -1058,7 +1058,7 @@ impl EnvironmentCommandRunner {
|
||||
let Some(environment) = environment else {
|
||||
let error = anyhow::anyhow!("Environment {} not found", id);
|
||||
ctx.terminate_app(
|
||||
warpui::platform::TerminationMode::ForceTerminate,
|
||||
galaxyui::platform::TerminationMode::ForceTerminate,
|
||||
Some(Err(error)),
|
||||
);
|
||||
return;
|
||||
@@ -1094,7 +1094,7 @@ impl EnvironmentCommandRunner {
|
||||
OperationSuccessType::Success => {
|
||||
println!("Environment deleted successfully");
|
||||
ctx.terminate_app(
|
||||
warpui::platform::TerminationMode::ForceTerminate,
|
||||
galaxyui::platform::TerminationMode::ForceTerminate,
|
||||
None,
|
||||
);
|
||||
}
|
||||
@@ -1111,7 +1111,7 @@ impl EnvironmentCommandRunner {
|
||||
}
|
||||
}
|
||||
|
||||
impl warpui::Entity for EnvironmentCommandRunner {
|
||||
impl galaxyui::Entity for EnvironmentCommandRunner {
|
||||
type Event = ();
|
||||
}
|
||||
impl SingletonEntity for EnvironmentCommandRunner {}
|
||||
|
||||
@@ -2,11 +2,11 @@ use std::process;
|
||||
|
||||
use anyhow::{anyhow, Result};
|
||||
use serde_json::json;
|
||||
use warp_cli::federate::{FederateCommand, IssueGcpTokenArgs, IssueTokenArgs};
|
||||
use warp_cli::{agent::OutputFormat, GlobalOptions};
|
||||
use warp_core::{features::FeatureFlag, report_error};
|
||||
use warp_managed_secrets::ManagedSecretManager;
|
||||
use warpui::{platform::TerminationMode, AppContext, SingletonEntity as _};
|
||||
use galaxy_cli::federate::{FederateCommand, IssueGcpTokenArgs, IssueTokenArgs};
|
||||
use galaxy_cli::{agent::OutputFormat, GlobalOptions};
|
||||
use galaxy_core::{features::FeatureFlag, report_error};
|
||||
use galaxy_managed_secrets::ManagedSecretManager;
|
||||
use galaxyui::{platform::TerminationMode, AppContext, SingletonEntity as _};
|
||||
|
||||
use super::common::set_ambient_task_context_from_run_id;
|
||||
|
||||
@@ -43,7 +43,7 @@ fn issue_token(
|
||||
|
||||
ManagedSecretManager::handle(ctx).update(ctx, move |manager, ctx| {
|
||||
let future =
|
||||
manager.issue_task_identity_token(warp_managed_secrets::client::IdentityTokenOptions {
|
||||
manager.issue_task_identity_token(galaxy_managed_secrets::client::IdentityTokenOptions {
|
||||
audience,
|
||||
requested_duration: duration,
|
||||
subject_template,
|
||||
|
||||
@@ -4,14 +4,14 @@
|
||||
//! - [`ping`] — fetches the current run by task ID and prints its info.
|
||||
//! - [`report_artifact`] — reports an artifact (e.g. a PR) back to the Oz platform.
|
||||
use anyhow::Result;
|
||||
use warp_cli::agent::OutputFormat;
|
||||
use warp_cli::harness_support::{
|
||||
use galaxy_cli::agent::OutputFormat;
|
||||
use galaxy_cli::harness_support::{
|
||||
FinishTaskArgs, HarnessSupportArgs, HarnessSupportCommand, NotifyUserArgs, ReportArtifactArgs,
|
||||
ReportArtifactCommand, TaskStatus,
|
||||
};
|
||||
use warp_cli::GlobalOptions;
|
||||
use warp_core::features::FeatureFlag;
|
||||
use warpui::{platform::TerminationMode, AppContext, ModelHandle, SingletonEntity};
|
||||
use galaxy_cli::GlobalOptions;
|
||||
use galaxy_core::features::FeatureFlag;
|
||||
use galaxyui::{platform::TerminationMode, AppContext, ModelHandle, SingletonEntity};
|
||||
|
||||
use super::common::set_ambient_task_context_from_run_id;
|
||||
use crate::ai::ambient_agents::AmbientAgentTaskId;
|
||||
@@ -206,7 +206,7 @@ fn finish_task(
|
||||
/// Singleton model for running async harness-support operations.
|
||||
struct HarnessSupportRunner;
|
||||
|
||||
impl warpui::Entity for HarnessSupportRunner {
|
||||
impl galaxyui::Entity for HarnessSupportRunner {
|
||||
type Event = ();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
use crate::server::server_api::ServerApiProvider;
|
||||
use futures::future;
|
||||
use warp_cli::{
|
||||
use galaxy_cli::{
|
||||
integration::{CreateIntegrationArgs, IntegrationCommand, UpdateIntegrationArgs},
|
||||
provider::ProviderType,
|
||||
GlobalOptions,
|
||||
};
|
||||
use warp_graphql::mutations::create_simple_integration::CreateSimpleIntegrationOutput;
|
||||
use warp_graphql::queries::get_oauth_connect_tx_status::OauthConnectTxStatus;
|
||||
use warp_graphql::queries::get_simple_integrations::SimpleIntegrationsOutput;
|
||||
use warpui::{platform::TerminationMode, AppContext, ModelContext, SingletonEntity};
|
||||
use galaxy_graphql::mutations::create_simple_integration::CreateSimpleIntegrationOutput;
|
||||
use galaxy_graphql::queries::get_oauth_connect_tx_status::OauthConnectTxStatus;
|
||||
use galaxy_graphql::queries::get_simple_integrations::SimpleIntegrationsOutput;
|
||||
use galaxyui::{platform::TerminationMode, AppContext, ModelContext, SingletonEntity};
|
||||
|
||||
use super::common::{EnvironmentChoice, ResolveConfigurationError};
|
||||
use super::integration_output;
|
||||
@@ -518,7 +518,7 @@ impl IntegrationCommandRunner {
|
||||
}
|
||||
}
|
||||
|
||||
impl warpui::Entity for IntegrationCommandRunner {
|
||||
impl galaxyui::Entity for IntegrationCommandRunner {
|
||||
type Event = ();
|
||||
}
|
||||
impl SingletonEntity for IntegrationCommandRunner {}
|
||||
|
||||
@@ -2,11 +2,11 @@ use chrono::{DateTime, Utc};
|
||||
use comfy_table::{presets::UTF8_FULL, Cell, Table};
|
||||
use serde::Serialize;
|
||||
use serde_json::{Map, Value};
|
||||
use warp_cli::agent::OutputFormat;
|
||||
use galaxy_cli::agent::OutputFormat;
|
||||
|
||||
use crate::ai::agent_sdk::output::{self, TableFormat};
|
||||
use crate::util::time_format::format_approx_duration_from_now_utc;
|
||||
use warp_graphql::queries::get_simple_integrations::{
|
||||
use galaxy_graphql::queries::get_simple_integrations::{
|
||||
ListedSimpleIntegrationConfig, SimpleIntegration, SimpleIntegrationConnectionStatus,
|
||||
SimpleIntegrationsOutput,
|
||||
};
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use comfy_table::Cell;
|
||||
use serde::Serialize;
|
||||
use warp_cli::{mcp::MCPCommand, GlobalOptions};
|
||||
use warpui::{AppContext, ModelContext, SingletonEntity};
|
||||
use galaxy_cli::{mcp::MCPCommand, GlobalOptions};
|
||||
use galaxyui::{AppContext, ModelContext, SingletonEntity};
|
||||
|
||||
use crate::ai::agent_sdk::output::{self, TableFormat};
|
||||
use crate::ai::mcp::TemplatableMCPServerManager;
|
||||
@@ -40,12 +40,12 @@ impl MCPCommandRunner {
|
||||
global_options.output_format,
|
||||
);
|
||||
|
||||
ctx.terminate_app(warpui::platform::TerminationMode::ForceTerminate, None);
|
||||
ctx.terminate_app(galaxyui::platform::TerminationMode::ForceTerminate, None);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
impl warpui::Entity for MCPCommandRunner {
|
||||
impl galaxyui::Entity for MCPCommandRunner {
|
||||
type Event = ();
|
||||
}
|
||||
impl SingletonEntity for MCPCommandRunner {}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use anyhow::Context as _;
|
||||
use serde_json::{Map, Value};
|
||||
use warp_cli::mcp::MCPSpec;
|
||||
use galaxy_cli::mcp::MCPSpec;
|
||||
|
||||
use crate::ai::mcp::TemplatableMCPServer;
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
use serde_json::{json, Map, Value};
|
||||
use warp_cli::mcp::MCPSpec;
|
||||
use galaxy_cli::mcp::MCPSpec;
|
||||
|
||||
use super::build_mcp_servers_from_specs;
|
||||
|
||||
|
||||
+14
-14
@@ -24,7 +24,7 @@ use crate::server::server_api::ai::AIClient;
|
||||
use crate::workflows::workflow::Workflow;
|
||||
use ai::api_keys::{ApiKeyManager, AwsCredentialsRefreshStrategy};
|
||||
use anyhow::Context;
|
||||
use warp_cli::{
|
||||
use galaxy_cli::{
|
||||
agent::{AgentCommand, AgentProfileCommand, OutputFormat},
|
||||
artifact::ArtifactCommand,
|
||||
environment::{EnvironmentCommand, ImageCommand},
|
||||
@@ -40,13 +40,13 @@ use warp_cli::{
|
||||
task::{MessageCommand, TaskCommand},
|
||||
CliCommand, GlobalOptions,
|
||||
};
|
||||
use warp_core::features::FeatureFlag;
|
||||
use warp_isolation_platform::IsolationPlatformError;
|
||||
use galaxy_core::features::FeatureFlag;
|
||||
use galaxy_isolation_platform::IsolationPlatformError;
|
||||
#[cfg(not(target_family = "wasm"))]
|
||||
use warp_logging::log_file_path;
|
||||
use warp_managed_secrets::ManagedSecretManager;
|
||||
use warpui::ModelSpawner;
|
||||
use warpui::{platform::TerminationMode, AppContext, SingletonEntity};
|
||||
use galaxy_logging::log_file_path;
|
||||
use galaxy_managed_secrets::ManagedSecretManager;
|
||||
use galaxyui::ModelSpawner;
|
||||
use galaxyui::{platform::TerminationMode, AppContext, SingletonEntity};
|
||||
|
||||
use crate::{
|
||||
ai::ambient_agents::{task::HarnessConfig, AmbientAgentTaskId},
|
||||
@@ -60,7 +60,7 @@ use crate::{
|
||||
terminal::view::ConversationRestorationInNewPaneType,
|
||||
};
|
||||
use driver::AgentDriverError;
|
||||
use warp_graphql::object_permissions::OwnerType;
|
||||
use galaxy_graphql::object_permissions::OwnerType;
|
||||
|
||||
use crate::ai::attachment_utils::attachments_download_dir;
|
||||
use crate::ai::skills::{
|
||||
@@ -72,8 +72,8 @@ pub(crate) use driver::harness::{
|
||||
};
|
||||
pub use driver::AgentDriver;
|
||||
use telemetry::CliTelemetryEvent;
|
||||
use warp_cli::agent::{Harness, Prompt, RunAgentArgs};
|
||||
use warp_cli::OZ_HARNESS_ENV;
|
||||
use galaxy_cli::agent::{Harness, Prompt, RunAgentArgs};
|
||||
use galaxy_cli::OZ_HARNESS_ENV;
|
||||
|
||||
mod admin;
|
||||
mod agent_config;
|
||||
@@ -510,7 +510,7 @@ fn run_task(
|
||||
));
|
||||
}
|
||||
match conv_cmd {
|
||||
warp_cli::task::ConversationCommand::Get(args) => {
|
||||
galaxy_cli::task::ConversationCommand::Get(args) => {
|
||||
ambient::get_conversation(ctx, args.conversation_id)
|
||||
}
|
||||
}
|
||||
@@ -531,11 +531,11 @@ fn run_task(
|
||||
/// requires spawning an async task, which requires a ModelContext.
|
||||
struct AgentDriverRunner;
|
||||
|
||||
impl warpui::Entity for AgentDriverRunner {
|
||||
impl galaxyui::Entity for AgentDriverRunner {
|
||||
type Event = ();
|
||||
}
|
||||
|
||||
impl warpui::SingletonEntity for AgentDriverRunner {}
|
||||
impl galaxyui::SingletonEntity for AgentDriverRunner {}
|
||||
|
||||
impl AgentDriverRunner {
|
||||
async fn setup_and_run_driver(
|
||||
@@ -1301,7 +1301,7 @@ fn launch_command(
|
||||
return dispatch_command(ctx, command, global_options);
|
||||
}
|
||||
|
||||
let cli_name = warp_cli::binary_name().unwrap_or_else(|| "warp".to_string());
|
||||
let cli_name = galaxy_cli::binary_name().unwrap_or_else(|| "warp".to_string());
|
||||
|
||||
let auth_state = AuthStateProvider::handle(ctx).as_ref(ctx).get();
|
||||
if !auth_state.is_logged_in() {
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
use serde_json::json;
|
||||
use warp_cli::{
|
||||
use galaxy_cli::{
|
||||
artifact::{ArtifactCommand, DownloadArtifactArgs, GetArtifactArgs, UploadArtifactArgs},
|
||||
task::{MessageCommand, MessageSendArgs, MessageWatchArgs, TaskCommand},
|
||||
CliCommand,
|
||||
};
|
||||
use warp_core::telemetry::TelemetryEvent;
|
||||
use galaxy_core::telemetry::TelemetryEvent;
|
||||
|
||||
use super::{command_requires_auth, command_to_telemetry_event};
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ use crate::ai::agent_sdk::output::{self, TableFormat};
|
||||
use crate::ai::llms::LLMPreferences;
|
||||
use comfy_table::Cell;
|
||||
use serde::Serialize;
|
||||
use warp_cli::{model::ModelCommand, GlobalOptions};
|
||||
use warpui::{platform::TerminationMode, AppContext, ModelContext, SingletonEntity};
|
||||
use galaxy_cli::{model::ModelCommand, GlobalOptions};
|
||||
use galaxyui::{platform::TerminationMode, AppContext, ModelContext, SingletonEntity};
|
||||
|
||||
/// Handle model-related CLI commands.
|
||||
pub fn run(
|
||||
@@ -59,7 +59,7 @@ impl ModelCommandRunner {
|
||||
}
|
||||
}
|
||||
|
||||
impl warpui::Entity for ModelCommandRunner {
|
||||
impl galaxyui::Entity for ModelCommandRunner {
|
||||
type Event = ();
|
||||
}
|
||||
|
||||
|
||||
@@ -2,10 +2,10 @@ use std::sync::Arc;
|
||||
use std::time::Duration;
|
||||
|
||||
use anyhow::{anyhow, Result};
|
||||
use warpui::r#async::Timer;
|
||||
use galaxyui::r#async::Timer;
|
||||
|
||||
use crate::server::server_api::integrations::IntegrationsClient;
|
||||
use warp_graphql::queries::get_oauth_connect_tx_status::OauthConnectTxStatus;
|
||||
use galaxy_graphql::queries::get_oauth_connect_tx_status::OauthConnectTxStatus;
|
||||
|
||||
/// Shared helpers for OAuth-based connect flows (txId + polling).
|
||||
///
|
||||
|
||||
@@ -11,8 +11,8 @@ use jaq_all::fmts::Format;
|
||||
use jaq_json::{write as jaq_write, Val};
|
||||
use serde::Serialize;
|
||||
use tabwriter::TabWriter;
|
||||
use warp_cli::agent::OutputFormat;
|
||||
use warp_cli::json_filter::{JqFilter, JsonOutput};
|
||||
use galaxy_cli::agent::OutputFormat;
|
||||
use galaxy_cli::json_filter::{JqFilter, JsonOutput};
|
||||
|
||||
pub fn standard_table() -> Table {
|
||||
let mut table = Table::new();
|
||||
|
||||
@@ -4,8 +4,8 @@ use super::{
|
||||
use comfy_table::Cell;
|
||||
use serde::Serialize;
|
||||
use serde_json::json;
|
||||
use warp_cli::agent::OutputFormat;
|
||||
use warp_cli::json_filter::parse_jq_filter;
|
||||
use galaxy_cli::agent::OutputFormat;
|
||||
use galaxy_cli::json_filter::parse_jq_filter;
|
||||
|
||||
#[derive(Serialize)]
|
||||
struct TestItem {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use comfy_table::Cell;
|
||||
use serde::Serialize;
|
||||
use warp_cli::{agent::AgentProfileCommand, GlobalOptions};
|
||||
use warpui::{AppContext, ModelContext, SingletonEntity};
|
||||
use galaxy_cli::{agent::AgentProfileCommand, GlobalOptions};
|
||||
use galaxyui::{AppContext, ModelContext, SingletonEntity};
|
||||
|
||||
use crate::ai::agent_sdk::output::{self, TableFormat};
|
||||
use crate::ai::execution_profiles::profiles::AIExecutionProfilesModel;
|
||||
@@ -52,12 +52,12 @@ impl ProfilesCommandRunner {
|
||||
|
||||
output::print_list(profiles, global_options.output_format);
|
||||
|
||||
ctx.terminate_app(warpui::platform::TerminationMode::ForceTerminate, None);
|
||||
ctx.terminate_app(galaxyui::platform::TerminationMode::ForceTerminate, None);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
impl warpui::Entity for ProfilesCommandRunner {
|
||||
impl galaxyui::Entity for ProfilesCommandRunner {
|
||||
type Event = ();
|
||||
}
|
||||
impl SingletonEntity for ProfilesCommandRunner {}
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
use crate::workspaces::user_workspaces::UserWorkspaces;
|
||||
use comfy_table::Cell;
|
||||
use serde::Serialize;
|
||||
use warp_cli::{
|
||||
use galaxy_cli::{
|
||||
provider::{ProviderCommand, ProviderType},
|
||||
GlobalOptions,
|
||||
};
|
||||
use warp_core::channel::ChannelState;
|
||||
use warpui::{platform::TerminationMode, AppContext, ModelContext, SingletonEntity};
|
||||
use galaxy_core::channel::ChannelState;
|
||||
use galaxyui::{platform::TerminationMode, AppContext, ModelContext, SingletonEntity};
|
||||
|
||||
use crate::ai::agent_sdk::output::{self, TableFormat};
|
||||
|
||||
@@ -123,7 +123,7 @@ impl ProviderCommandRunner {
|
||||
}
|
||||
}
|
||||
|
||||
impl warpui::Entity for ProviderCommandRunner {
|
||||
impl galaxyui::Entity for ProviderCommandRunner {
|
||||
type Event = ();
|
||||
}
|
||||
impl SingletonEntity for ProviderCommandRunner {}
|
||||
|
||||
@@ -9,8 +9,8 @@ use std::future::Future;
|
||||
use std::time::Duration;
|
||||
|
||||
use anyhow::{anyhow, Result};
|
||||
use warpui::duration_with_jitter;
|
||||
use warpui::r#async::Timer;
|
||||
use galaxyui::duration_with_jitter;
|
||||
use galaxyui::r#async::Timer;
|
||||
|
||||
pub(crate) use crate::server::retry_strategies::is_transient_http_error;
|
||||
|
||||
|
||||
@@ -2,14 +2,14 @@ use chrono::{DateTime, Utc};
|
||||
use comfy_table::Cell;
|
||||
use futures::future;
|
||||
use serde::Serialize;
|
||||
use warp_cli::schedule::{
|
||||
use galaxy_cli::schedule::{
|
||||
CreateScheduleArgs, DeleteScheduleArgs, GetScheduleArgs, PauseScheduleArgs, ScheduleCommand,
|
||||
ScheduleSubcommand, UnpauseScheduleArgs, UpdateScheduleArgs,
|
||||
};
|
||||
use warp_cli::{agent::OutputFormat, GlobalOptions};
|
||||
use warp_graphql::queries::get_scheduled_agent_history::ScheduledAgentHistory;
|
||||
use warpui::platform::TerminationMode;
|
||||
use warpui::{AppContext, SingletonEntity};
|
||||
use galaxy_cli::{agent::OutputFormat, GlobalOptions};
|
||||
use galaxy_graphql::queries::get_scheduled_agent_history::ScheduledAgentHistory;
|
||||
use galaxyui::platform::TerminationMode;
|
||||
use galaxyui::{AppContext, SingletonEntity};
|
||||
|
||||
use crate::ai::ambient_agents::scheduled::{
|
||||
CloudScheduledAmbientAgent, ScheduledAgentManager, ScheduledAmbientAgent, UpdateScheduleParams,
|
||||
|
||||
@@ -8,7 +8,7 @@ use chrono::{DateTime, Utc};
|
||||
use comfy_table::Cell;
|
||||
use inquire::{Confirm, InquireError, Password};
|
||||
use serde::Serialize;
|
||||
use warp_cli::{
|
||||
use galaxy_cli::{
|
||||
agent::OutputFormat,
|
||||
scope::ObjectScope,
|
||||
secret::{
|
||||
@@ -17,13 +17,13 @@ use warp_cli::{
|
||||
},
|
||||
GlobalOptions,
|
||||
};
|
||||
use warp_core::features::FeatureFlag;
|
||||
use warp_graphql::{
|
||||
use galaxy_core::features::FeatureFlag;
|
||||
use galaxy_graphql::{
|
||||
managed_secrets::{ManagedSecret, ManagedSecretType},
|
||||
object::SpaceType,
|
||||
};
|
||||
use warp_managed_secrets::{client::SecretOwner, ManagedSecretManager, ManagedSecretValue};
|
||||
use warpui::{platform::TerminationMode, AppContext, SingletonEntity as _};
|
||||
use galaxy_managed_secrets::{client::SecretOwner, ManagedSecretManager, ManagedSecretValue};
|
||||
use galaxyui::{platform::TerminationMode, AppContext, SingletonEntity as _};
|
||||
|
||||
use crate::{
|
||||
auth::UserUid, cloud_object::Owner, server::ids::ServerId,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use crate::features::FeatureFlag;
|
||||
use serde_json::{json, Value};
|
||||
use strum_macros::{EnumDiscriminants, EnumIter};
|
||||
use warp_core::telemetry::{EnablementState, TelemetryEvent, TelemetryEventDesc};
|
||||
use galaxy_core::telemetry::{EnablementState, TelemetryEvent, TelemetryEventDesc};
|
||||
|
||||
#[derive(Debug, EnumDiscriminants)]
|
||||
#[strum_discriminants(derive(EnumIter))]
|
||||
@@ -204,7 +204,7 @@ impl TelemetryEvent for CliTelemetryEvent {
|
||||
}
|
||||
|
||||
fn event_descs() -> impl Iterator<Item = Box<dyn TelemetryEventDesc>> {
|
||||
warp_core::telemetry::enum_events::<Self>()
|
||||
galaxy_core::telemetry::enum_events::<Self>()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -421,4 +421,4 @@ impl TelemetryEventDesc for CliTelemetryEventDiscriminants {
|
||||
}
|
||||
}
|
||||
|
||||
warp_core::register_telemetry_event!(CliTelemetryEvent);
|
||||
galaxy_core::register_telemetry_event!(CliTelemetryEvent);
|
||||
|
||||
@@ -18,9 +18,9 @@ use markdown_parser::FormattedTextFragment;
|
||||
use std::path::Path;
|
||||
use std::sync::LazyLock;
|
||||
use std::time::Duration;
|
||||
use warpui::keymap::Keystroke;
|
||||
use warpui::r#async::SpawnedFutureHandle;
|
||||
use warpui::{AppContext, Entity, ModelContext, SingletonEntity};
|
||||
use galaxyui::keymap::Keystroke;
|
||||
use galaxyui::r#async::SpawnedFutureHandle;
|
||||
use galaxyui::{AppContext, Entity, ModelContext, SingletonEntity};
|
||||
|
||||
/// Trait for tip implementations that can be displayed to users.
|
||||
/// Tips provide helpful information with optional links and keybindings.
|
||||
@@ -526,7 +526,7 @@ impl AITipModel<AgentTip> {
|
||||
// Start 60-second cooldown
|
||||
let handle = ctx.spawn(
|
||||
async {
|
||||
warpui::r#async::Timer::after(Duration::from_secs(60)).await;
|
||||
galaxyui::r#async::Timer::after(Duration::from_secs(60)).await;
|
||||
},
|
||||
|me, _, _| {
|
||||
me.cooldown_handle = None;
|
||||
@@ -558,7 +558,7 @@ impl AITipModel<crate::terminal::view::ambient_agent::CloudModeTip> {
|
||||
// Start 60-second cooldown
|
||||
let handle = ctx.spawn(
|
||||
async {
|
||||
warpui::r#async::Timer::after(Duration::from_secs(60)).await;
|
||||
galaxyui::r#async::Timer::after(Duration::from_secs(60)).await;
|
||||
},
|
||||
|me, _, _| {
|
||||
me.cooldown_handle = None;
|
||||
@@ -579,7 +579,7 @@ impl AITipModel<crate::terminal::view::ambient_agent::CloudModeTip> {
|
||||
// Start a new 60-second cooldown
|
||||
let handle = ctx.spawn(
|
||||
async {
|
||||
warpui::r#async::Timer::after(Duration::from_secs(60)).await;
|
||||
galaxyui::r#async::Timer::after(Duration::from_secs(60)).await;
|
||||
},
|
||||
|me, _, _| {
|
||||
me.cooldown_handle = None;
|
||||
|
||||
@@ -48,20 +48,20 @@ use crate::{
|
||||
view_components::action_button::{ActionButton, PrimaryTheme},
|
||||
};
|
||||
use pathfinder_geometry::vector::vec2f;
|
||||
use warp_core::ui::icons;
|
||||
use warp_core::ui::icons::ICON_DIMENSIONS;
|
||||
use warp_core::ui::theme::Fill as ThemeFill;
|
||||
use warpui::clipboard::ClipboardContent;
|
||||
use warpui::elements::CrossAxisAlignment;
|
||||
use warpui::elements::MainAxisAlignment;
|
||||
use warpui::elements::MainAxisSize;
|
||||
use warpui::elements::{ChildAnchor, PositionedElementAnchor, PositionedElementOffsetBounds};
|
||||
use warpui::keymap::EditableBinding;
|
||||
use warpui::keymap::FixedBinding;
|
||||
use warpui::text_layout::ClipConfig;
|
||||
use warpui::ui_components::button::ButtonTooltipPosition;
|
||||
use warpui::ui_components::components::UiComponent;
|
||||
use warpui::{
|
||||
use galaxy_core::ui::icons;
|
||||
use galaxy_core::ui::icons::ICON_DIMENSIONS;
|
||||
use galaxy_core::ui::theme::Fill as ThemeFill;
|
||||
use galaxyui::clipboard::ClipboardContent;
|
||||
use galaxyui::elements::CrossAxisAlignment;
|
||||
use galaxyui::elements::MainAxisAlignment;
|
||||
use galaxyui::elements::MainAxisSize;
|
||||
use galaxyui::elements::{ChildAnchor, PositionedElementAnchor, PositionedElementOffsetBounds};
|
||||
use galaxyui::keymap::EditableBinding;
|
||||
use galaxyui::keymap::FixedBinding;
|
||||
use galaxyui::text_layout::ClipConfig;
|
||||
use galaxyui::ui_components::button::ButtonTooltipPosition;
|
||||
use galaxyui::ui_components::components::UiComponent;
|
||||
use galaxyui::{
|
||||
elements::{
|
||||
ChildView, ConstrainedBox, Container, Flex, Hoverable, MouseStateHandle, OffsetPositioning,
|
||||
ParentElement, SavePosition, Stack,
|
||||
@@ -69,7 +69,7 @@ use warpui::{
|
||||
AppContext, Element, Entity, ModelHandle, SingletonEntity, TypedActionView, View, ViewContext,
|
||||
ViewHandle,
|
||||
};
|
||||
use warpui::{id, EntityId};
|
||||
use galaxyui::{id, EntityId};
|
||||
|
||||
pub fn init(app: &mut AppContext) {
|
||||
app.register_editable_bindings([EditableBinding::new(
|
||||
@@ -97,7 +97,7 @@ use crate::util::file::external_editor::settings::EditorLayout;
|
||||
#[cfg(feature = "local_fs")]
|
||||
use crate::util::openable_file_type::FileTarget;
|
||||
#[cfg(feature = "local_fs")]
|
||||
use warp_util::path::LineAndColumnArg;
|
||||
use galaxy_util::path::LineAndColumnArg;
|
||||
|
||||
// Import keybinding constants from code view to ensure consistency
|
||||
use crate::code::view::{SAVE_FILE_BINDING_DESCRIPTION, SAVE_FILE_BINDING_NAME};
|
||||
@@ -641,7 +641,7 @@ impl AIDocumentView {
|
||||
Container::new(
|
||||
ConstrainedBox::new(
|
||||
Icon::RefreshCw04
|
||||
.to_warpui_icon(ThemeFill::Solid(color))
|
||||
.to_galaxyui_icon(ThemeFill::Solid(color))
|
||||
.finish(),
|
||||
)
|
||||
.with_width(16.)
|
||||
@@ -672,7 +672,7 @@ impl AIDocumentView {
|
||||
Hoverable::new(synced_status_mouse_state, move |state| {
|
||||
let icon = {
|
||||
let icon_elem = Icon::RefreshCw04
|
||||
.to_warpui_icon(ThemeFill::Solid(color))
|
||||
.to_galaxyui_icon(ThemeFill::Solid(color))
|
||||
.finish();
|
||||
ConstrainedBox::new(icon_elem)
|
||||
.with_width(16.)
|
||||
@@ -688,8 +688,8 @@ impl AIDocumentView {
|
||||
tooltip,
|
||||
OffsetPositioning::offset_from_parent(
|
||||
vec2f(0., 4.),
|
||||
warpui::elements::ParentOffsetBounds::WindowByPosition,
|
||||
warpui::elements::ParentAnchor::BottomRight,
|
||||
galaxyui::elements::ParentOffsetBounds::WindowByPosition,
|
||||
galaxyui::elements::ParentAnchor::BottomRight,
|
||||
ChildAnchor::TopRight,
|
||||
),
|
||||
);
|
||||
@@ -938,7 +938,7 @@ impl AIDocumentView {
|
||||
}
|
||||
|
||||
/// Bind the underlying editor model to the given window, enabling render/event processing.
|
||||
pub fn bind_window(&self, window_id: warpui::WindowId, ctx: &mut ViewContext<Self>) {
|
||||
pub fn bind_window(&self, window_id: galaxyui::WindowId, ctx: &mut ViewContext<Self>) {
|
||||
self.editor.update(ctx, |editor_view, ctx| {
|
||||
editor_view
|
||||
.model()
|
||||
@@ -959,7 +959,7 @@ impl AIDocumentView {
|
||||
#[cfg(feature = "local_fs")]
|
||||
fn export(&self, ctx: &mut ViewContext<Self>) {
|
||||
use crate::drive::export::safe_filename;
|
||||
use warpui::platform::SaveFilePickerConfiguration;
|
||||
use galaxyui::platform::SaveFilePickerConfiguration;
|
||||
let markdown = self.editor.as_ref(ctx).markdown_unescaped(ctx);
|
||||
|
||||
// Get the document title from the model
|
||||
@@ -1015,7 +1015,7 @@ impl View for AIDocumentView {
|
||||
"AIDocumentView"
|
||||
}
|
||||
|
||||
fn render(&self, _app: &AppContext) -> Box<dyn warpui::Element> {
|
||||
fn render(&self, _app: &AppContext) -> Box<dyn galaxyui::Element> {
|
||||
let editor = Container::new(ChildView::new(&self.editor).finish())
|
||||
.with_padding_left(8.)
|
||||
.with_padding_right(8.)
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! any component in the app (e.g., `UpdateEnvironmentForm`) to react to
|
||||
//! auth state changes without relying on window activation timing.
|
||||
|
||||
use warpui::{Entity, ModelContext, SingletonEntity};
|
||||
use galaxyui::{Entity, ModelContext, SingletonEntity};
|
||||
|
||||
/// Events emitted by the GitHub auth notifier.
|
||||
#[derive(Debug, Clone)]
|
||||
|
||||
@@ -27,8 +27,8 @@ use crate::{
|
||||
};
|
||||
use futures::channel::oneshot;
|
||||
use futures::FutureExt;
|
||||
use warp_graphql::queries::get_scheduled_agent_history::ScheduledAgentHistory;
|
||||
use warpui::{AppContext, Entity, ModelContext, SingletonEntity};
|
||||
use galaxy_graphql::queries::get_scheduled_agent_history::ScheduledAgentHistory;
|
||||
use galaxyui::{AppContext, Entity, ModelContext, SingletonEntity};
|
||||
|
||||
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
|
||||
/// A ScheduledAmbientAgent represents configuration for ambient agents that run on a cron schedule.
|
||||
@@ -213,7 +213,7 @@ impl ScheduledAgentManager {
|
||||
&self,
|
||||
schedule_id: SyncId,
|
||||
app: &AppContext,
|
||||
) -> impl warpui::r#async::Spawnable<Output = anyhow::Result<Option<ScheduledAgentHistory>>>
|
||||
) -> impl galaxyui::r#async::Spawnable<Output = anyhow::Result<Option<ScheduledAgentHistory>>>
|
||||
{
|
||||
let ai_client = ServerApiProvider::as_ref(app).get_ai_client();
|
||||
|
||||
|
||||
@@ -117,12 +117,12 @@ pub fn spawn_task(
|
||||
// We use a timeout to ensure we don't wait indefinitely for session info.
|
||||
// If no timeout is provided, we use a future that never completes.
|
||||
let mut timeout_timer = match timeout {
|
||||
Some(d) => warpui::r#async::Timer::after(d),
|
||||
None => warpui::r#async::Timer::never(),
|
||||
Some(d) => galaxyui::r#async::Timer::after(d),
|
||||
None => galaxyui::r#async::Timer::never(),
|
||||
}.fuse();
|
||||
let mut last_state = None;
|
||||
loop {
|
||||
let mut poll_timer = warpui::r#async::Timer::after(TASK_STATUS_POLL_INTERVAL).fuse();
|
||||
let mut poll_timer = galaxyui::r#async::Timer::after(TASK_STATUS_POLL_INTERVAL).fuse();
|
||||
|
||||
select! {
|
||||
_ = timeout_timer => {
|
||||
|
||||
@@ -3,17 +3,17 @@
|
||||
use anyhow::anyhow;
|
||||
use chrono::{DateTime, Utc};
|
||||
use serde::{Deserialize, Deserializer, Serialize, Serializer};
|
||||
use warp_cli::agent::Harness;
|
||||
use warp_core::report_error;
|
||||
use warp_core::ui::theme::WarpTheme;
|
||||
use warpui::color::ColorU;
|
||||
use galaxy_cli::agent::Harness;
|
||||
use galaxy_core::report_error;
|
||||
use galaxy_core::ui::theme::WarpTheme;
|
||||
use galaxyui::color::ColorU;
|
||||
|
||||
use crate::ai::artifacts::{deserialize_artifacts, Artifact};
|
||||
use crate::server::server_api::ServerApiProvider;
|
||||
use crate::ui_components::icons::Icon;
|
||||
use crate::view_components::DismissibleToast;
|
||||
use crate::workspace::ToastStack;
|
||||
use warpui::{SingletonEntity, View, ViewContext};
|
||||
use galaxyui::{SingletonEntity, View, ViewContext};
|
||||
|
||||
use super::AmbientAgentTaskId;
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ use crate::server::ids::ServerId;
|
||||
use serde::Serialize;
|
||||
use serde_json::{json, Value};
|
||||
use strum_macros::{EnumDiscriminants, EnumIter};
|
||||
use warp_core::features::FeatureFlag;
|
||||
use warp_core::telemetry::{EnablementState, TelemetryEvent, TelemetryEventDesc};
|
||||
use galaxy_core::features::FeatureFlag;
|
||||
use galaxy_core::telemetry::{EnablementState, TelemetryEvent, TelemetryEventDesc};
|
||||
|
||||
/// The entry point through which Cloud Mode was entered.
|
||||
#[derive(Clone, Copy, Debug, Serialize)]
|
||||
@@ -124,7 +124,7 @@ impl TelemetryEvent for CloudAgentTelemetryEvent {
|
||||
}
|
||||
|
||||
fn event_descs() -> impl Iterator<Item = Box<dyn TelemetryEventDesc>> {
|
||||
warp_core::telemetry::enum_events::<Self>()
|
||||
galaxy_core::telemetry::enum_events::<Self>()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -178,4 +178,4 @@ impl TelemetryEventDesc for CloudAgentTelemetryEventDiscriminants {
|
||||
}
|
||||
}
|
||||
|
||||
warp_core::register_telemetry_event!(CloudAgentTelemetryEvent);
|
||||
galaxy_core::register_telemetry_event!(CloudAgentTelemetryEvent);
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use warp_core::ui::icons::Icon;
|
||||
use warp_core::ui::theme::AnsiColorIdentifier;
|
||||
use warpui::elements::{ChildView, Element, Empty, ParentElement, Wrap};
|
||||
use warpui::{AppContext, Entity, TypedActionView, View, ViewContext, ViewHandle};
|
||||
use galaxy_core::ui::icons::Icon;
|
||||
use galaxy_core::ui::theme::AnsiColorIdentifier;
|
||||
use galaxyui::elements::{ChildView, Element, Empty, ParentElement, Wrap};
|
||||
use galaxyui::{AppContext, Entity, TypedActionView, View, ViewContext, ViewHandle};
|
||||
|
||||
use crate::notebooks::NotebookId;
|
||||
use crate::terminal::input::MenuPositioning;
|
||||
|
||||
+21
-21
@@ -4,11 +4,11 @@ use std::path::PathBuf;
|
||||
|
||||
use anyhow::anyhow;
|
||||
use ui_components::lightbox::{LightboxImage, LightboxImageSource};
|
||||
use warp_core::report_error;
|
||||
use galaxy_core::report_error;
|
||||
use warp_multi_agent_api as api;
|
||||
#[cfg(feature = "local_fs")]
|
||||
use warpui::platform::SaveFilePickerConfiguration;
|
||||
use warpui::SingletonEntity;
|
||||
use galaxyui::platform::SaveFilePickerConfiguration;
|
||||
use galaxyui::SingletonEntity;
|
||||
|
||||
#[cfg(feature = "local_fs")]
|
||||
use crate::ai::artifact_download::default_download_filename;
|
||||
@@ -208,19 +208,19 @@ impl From<api::message::artifact_event::PlanArtifact> for Artifact {
|
||||
}
|
||||
}
|
||||
|
||||
impl TryFrom<warp_graphql::ai::AIConversationArtifact> for Artifact {
|
||||
impl TryFrom<galaxy_graphql::ai::AIConversationArtifact> for Artifact {
|
||||
type Error = ();
|
||||
|
||||
fn try_from(value: warp_graphql::ai::AIConversationArtifact) -> Result<Self, Self::Error> {
|
||||
fn try_from(value: galaxy_graphql::ai::AIConversationArtifact) -> Result<Self, Self::Error> {
|
||||
match value {
|
||||
warp_graphql::ai::AIConversationArtifact::PlanArtifact(plan) => Ok(Artifact::Plan {
|
||||
galaxy_graphql::ai::AIConversationArtifact::PlanArtifact(plan) => Ok(Artifact::Plan {
|
||||
document_uid: plan.document_uid.into_inner(),
|
||||
notebook_uid: plan
|
||||
.notebook_uid
|
||||
.map(|id| NotebookId::from(id.into_inner())),
|
||||
title: plan.title,
|
||||
}),
|
||||
warp_graphql::ai::AIConversationArtifact::PullRequestArtifact(pr) => {
|
||||
galaxy_graphql::ai::AIConversationArtifact::PullRequestArtifact(pr) => {
|
||||
let (repo, number) = parse_github_pr_url(&pr.url).unzip();
|
||||
Ok(Artifact::PullRequest {
|
||||
url: pr.url,
|
||||
@@ -229,14 +229,14 @@ impl TryFrom<warp_graphql::ai::AIConversationArtifact> for Artifact {
|
||||
number,
|
||||
})
|
||||
}
|
||||
warp_graphql::ai::AIConversationArtifact::ScreenshotArtifact(screenshot) => {
|
||||
galaxy_graphql::ai::AIConversationArtifact::ScreenshotArtifact(screenshot) => {
|
||||
Ok(Artifact::Screenshot {
|
||||
artifact_uid: screenshot.artifact_uid.into_inner(),
|
||||
mime_type: screenshot.mime_type,
|
||||
description: screenshot.description,
|
||||
})
|
||||
}
|
||||
warp_graphql::ai::AIConversationArtifact::FileArtifact(file) => Ok(Artifact::File {
|
||||
galaxy_graphql::ai::AIConversationArtifact::FileArtifact(file) => Ok(Artifact::File {
|
||||
artifact_uid: file.artifact_uid.into_inner(),
|
||||
filepath: file.filepath.clone(),
|
||||
filename: sanitized_basename(&file.filepath).unwrap_or(file.filepath),
|
||||
@@ -244,7 +244,7 @@ impl TryFrom<warp_graphql::ai::AIConversationArtifact> for Artifact {
|
||||
description: file.description,
|
||||
size_bytes: file.size_bytes,
|
||||
}),
|
||||
warp_graphql::ai::AIConversationArtifact::Unknown => Err(()),
|
||||
galaxy_graphql::ai::AIConversationArtifact::Unknown => Err(()),
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -296,9 +296,9 @@ pub fn file_button_label(filename: &str, filepath: &str) -> String {
|
||||
"File".to_string()
|
||||
}
|
||||
|
||||
pub fn open_screenshot_lightbox<V: warpui::View>(
|
||||
pub fn open_screenshot_lightbox<V: galaxyui::View>(
|
||||
artifact_uids: &[String],
|
||||
ctx: &mut warpui::ViewContext<V>,
|
||||
ctx: &mut galaxyui::ViewContext<V>,
|
||||
) {
|
||||
// Open lightbox immediately with Loading placeholders.
|
||||
let loading_images: Vec<LightboxImage> = artifact_uids
|
||||
@@ -367,9 +367,9 @@ fn screenshot_lightbox_image_from_download_result(
|
||||
}
|
||||
}
|
||||
|
||||
pub fn download_file_artifact<V: warpui::View>(
|
||||
pub fn download_file_artifact<V: galaxyui::View>(
|
||||
artifact_uid: &str,
|
||||
ctx: &mut warpui::ViewContext<V>,
|
||||
ctx: &mut galaxyui::ViewContext<V>,
|
||||
) {
|
||||
let ai_client = ServerApiProvider::handle(ctx).as_ref(ctx).get_ai_client();
|
||||
let artifact_uid = artifact_uid.to_string();
|
||||
@@ -395,10 +395,10 @@ pub fn download_file_artifact<V: warpui::View>(
|
||||
);
|
||||
}
|
||||
|
||||
fn open_file_download_result<V: warpui::View>(
|
||||
fn open_file_download_result<V: galaxyui::View>(
|
||||
artifact_uid: &str,
|
||||
artifact: ArtifactDownloadResponse,
|
||||
ctx: &mut warpui::ViewContext<V>,
|
||||
ctx: &mut galaxyui::ViewContext<V>,
|
||||
) {
|
||||
match artifact {
|
||||
ArtifactDownloadResponse::File { .. } => {
|
||||
@@ -419,9 +419,9 @@ fn open_file_download_result<V: warpui::View>(
|
||||
}
|
||||
|
||||
#[cfg(feature = "local_fs")]
|
||||
fn open_file_download_picker<V: warpui::View>(
|
||||
fn open_file_download_picker<V: galaxyui::View>(
|
||||
artifact: ArtifactDownloadResponse,
|
||||
ctx: &mut warpui::ViewContext<V>,
|
||||
ctx: &mut galaxyui::ViewContext<V>,
|
||||
) {
|
||||
let mut config = SaveFilePickerConfiguration::new()
|
||||
.with_default_filename(default_download_filename(&artifact));
|
||||
@@ -430,7 +430,7 @@ fn open_file_download_picker<V: warpui::View>(
|
||||
}
|
||||
|
||||
ctx.open_save_file_picker(
|
||||
move |path_opt: Option<String>, _me: &mut V, ctx: &mut warpui::ViewContext<V>| {
|
||||
move |path_opt: Option<String>, _me: &mut V, ctx: &mut galaxyui::ViewContext<V>| {
|
||||
let Some(path) = path_opt else {
|
||||
return;
|
||||
};
|
||||
@@ -468,10 +468,10 @@ fn open_file_download_picker<V: warpui::View>(
|
||||
);
|
||||
}
|
||||
|
||||
fn show_file_download_toast<V: warpui::View>(
|
||||
fn show_file_download_toast<V: galaxyui::View>(
|
||||
artifact_uid: &str,
|
||||
toast: DismissibleToast<WorkspaceAction>,
|
||||
ctx: &mut warpui::ViewContext<V>,
|
||||
ctx: &mut galaxyui::ViewContext<V>,
|
||||
) {
|
||||
let toast_id = format!("artifact_download:{artifact_uid}");
|
||||
let window_id = ctx.window_id();
|
||||
|
||||
@@ -153,8 +153,8 @@ fn default_download_filename_falls_back_to_artifact_uid_with_extension() {
|
||||
|
||||
#[test]
|
||||
fn converts_graphql_file_artifact() {
|
||||
let artifact = Artifact::try_from(warp_graphql::ai::AIConversationArtifact::FileArtifact(
|
||||
warp_graphql::ai::FileArtifact {
|
||||
let artifact = Artifact::try_from(galaxy_graphql::ai::AIConversationArtifact::FileArtifact(
|
||||
galaxy_graphql::ai::FileArtifact {
|
||||
artifact_uid: "artifact-file-1".into(),
|
||||
filepath: "outputs/report.txt".to_string(),
|
||||
mime_type: "text/plain".to_string(),
|
||||
|
||||
@@ -13,8 +13,8 @@ use futures::channel::oneshot::channel;
|
||||
use futures::future::BoxFuture;
|
||||
use tokio::sync::OnceCell;
|
||||
use vec1::vec1;
|
||||
use warp_managed_secrets::{client::IdentityTokenOptions, ManagedSecretManager};
|
||||
use warpui::{ModelContext, ModelHandle, SingletonEntity};
|
||||
use galaxy_managed_secrets::{client::IdentityTokenOptions, ManagedSecretManager};
|
||||
use galaxyui::{ModelContext, ModelHandle, SingletonEntity};
|
||||
|
||||
/// Errors that can occur when loading AWS credentials.
|
||||
#[derive(Debug, Clone)]
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use anyhow::Result;
|
||||
use aws_config::BehaviorVersion;
|
||||
use aws_sdk_bedrockruntime::config::Region;
|
||||
@@ -6,6 +8,7 @@ use aws_sdk_bedrockruntime::Client as BedrockRuntimeClient;
|
||||
use crate::settings::ai::BedrockAuthMethod;
|
||||
|
||||
use super::convert::{build_converse_request, ConversationMessage, ToolDefinition};
|
||||
use super::diagnostic::BedrockDiagnosticLogger;
|
||||
use super::models::apply_cross_region_prefix;
|
||||
use super::stream::bedrock_stream_to_response_events;
|
||||
use crate::ai::agent::api::ResponseStream;
|
||||
@@ -102,12 +105,14 @@ impl BedrockClient {
|
||||
&self,
|
||||
model_id: &str,
|
||||
task_id: &str,
|
||||
needs_create_task: bool,
|
||||
messages: Vec<ConversationMessage>,
|
||||
system_prompt: Option<String>,
|
||||
tools: Vec<ToolDefinition>,
|
||||
max_tokens: i32,
|
||||
temperature: Option<f32>,
|
||||
cross_region_inference: bool,
|
||||
diagnostic_logger: Option<Arc<BedrockDiagnosticLogger>>,
|
||||
) -> Result<ResponseStream, BedrockError> {
|
||||
let effective_model_id = if cross_region_inference {
|
||||
apply_cross_region_prefix(model_id, &self.region)
|
||||
@@ -122,8 +127,26 @@ impl BedrockClient {
|
||||
tools.len()
|
||||
);
|
||||
|
||||
let converted =
|
||||
build_converse_request(messages, system_prompt, tools, max_tokens, temperature, None, None);
|
||||
let converted = build_converse_request(
|
||||
messages.clone(),
|
||||
system_prompt.clone(),
|
||||
tools.clone(),
|
||||
max_tokens,
|
||||
temperature,
|
||||
None,
|
||||
None,
|
||||
);
|
||||
|
||||
if let Some(ref logger) = diagnostic_logger {
|
||||
logger.log_bedrock_input(
|
||||
&messages,
|
||||
&system_prompt,
|
||||
&tools,
|
||||
max_tokens,
|
||||
temperature,
|
||||
cross_region_inference,
|
||||
);
|
||||
}
|
||||
|
||||
let mut request = self
|
||||
.runtime_client
|
||||
@@ -147,6 +170,9 @@ impl BedrockClient {
|
||||
} else {
|
||||
display_msg
|
||||
};
|
||||
if let Some(ref logger) = diagnostic_logger {
|
||||
logger.log_result_fail(&msg);
|
||||
}
|
||||
if msg.contains("AccessDenied") || msg.contains("access denied") {
|
||||
BedrockError::AccessDenied(msg)
|
||||
} else if msg.contains("ThrottlingException") || msg.contains("throttl") {
|
||||
@@ -161,7 +187,12 @@ impl BedrockClient {
|
||||
})?;
|
||||
|
||||
log::info!("[bedrock] Stream connected successfully");
|
||||
Ok(Box::pin(bedrock_stream_to_response_events(output, task_id.to_string())))
|
||||
Ok(Box::pin(bedrock_stream_to_response_events(
|
||||
output,
|
||||
task_id.to_string(),
|
||||
needs_create_task,
|
||||
diagnostic_logger,
|
||||
)))
|
||||
}
|
||||
|
||||
pub fn runtime_client(&self) -> &BedrockRuntimeClient {
|
||||
|
||||
@@ -15,16 +15,19 @@ pub struct ConvertedRequest {
|
||||
pub tool_config: Option<ToolConfiguration>,
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct ConversationMessage {
|
||||
pub role: MessageRole,
|
||||
pub content: MessageContent,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq)]
|
||||
pub enum MessageRole {
|
||||
User,
|
||||
Assistant,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub enum MessageContent {
|
||||
Text(String),
|
||||
ToolUse {
|
||||
@@ -40,6 +43,7 @@ pub enum MessageContent {
|
||||
MultiPart(Vec<ContentPart>),
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub enum ContentPart {
|
||||
Text(String),
|
||||
ToolUse {
|
||||
@@ -54,6 +58,7 @@ pub enum ContentPart {
|
||||
},
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct ToolDefinition {
|
||||
pub name: String,
|
||||
pub description: String,
|
||||
@@ -96,9 +101,7 @@ fn json_to_document(value: JsonValue) -> Document {
|
||||
}
|
||||
}
|
||||
JsonValue::String(s) => Document::String(s),
|
||||
JsonValue::Array(arr) => {
|
||||
Document::Array(arr.into_iter().map(json_to_document).collect())
|
||||
}
|
||||
JsonValue::Array(arr) => Document::Array(arr.into_iter().map(json_to_document).collect()),
|
||||
JsonValue::Object(obj) => {
|
||||
let map: HashMap<String, Document> = obj
|
||||
.into_iter()
|
||||
|
||||
@@ -74,14 +74,187 @@ pub fn extract_messages_from_request(request: &api::Request) -> Vec<Conversation
|
||||
});
|
||||
}
|
||||
}
|
||||
api::request::input::Type::InitProjectRules(_) => {
|
||||
messages.push(ConversationMessage {
|
||||
role: MessageRole::User,
|
||||
content: MessageContent::Text(
|
||||
"Initialize this project. Analyze the codebase structure and files, \
|
||||
generate an AGENTS.md file documenting project conventions and setup \
|
||||
instructions, and offer to create a development environment configuration. \
|
||||
Use the available tools to inspect the project before responding."
|
||||
.to_string(),
|
||||
),
|
||||
});
|
||||
}
|
||||
api::request::input::Type::CreateEnvironment(env) => {
|
||||
let repo_info = if env.repo_paths.is_empty() {
|
||||
String::new()
|
||||
} else {
|
||||
format!(" Repositories: {}", env.repo_paths.join(", "))
|
||||
};
|
||||
messages.push(ConversationMessage {
|
||||
role: MessageRole::User,
|
||||
content: MessageContent::Text(format!(
|
||||
"Create a development environment for this project. \
|
||||
Set up necessary dependencies, configuration files, and tooling.{}",
|
||||
repo_info
|
||||
)),
|
||||
});
|
||||
}
|
||||
api::request::input::Type::CreateNewProject(project) => {
|
||||
messages.push(ConversationMessage {
|
||||
role: MessageRole::User,
|
||||
content: MessageContent::Text(format!(
|
||||
"Create a new project: {}",
|
||||
project.query
|
||||
)),
|
||||
});
|
||||
}
|
||||
api::request::input::Type::CloneRepository(repo) => {
|
||||
messages.push(ConversationMessage {
|
||||
role: MessageRole::User,
|
||||
content: MessageContent::Text(format!(
|
||||
"Clone the repository at {} and set it up for development.",
|
||||
repo.url
|
||||
)),
|
||||
});
|
||||
}
|
||||
api::request::input::Type::AutoCodeDiffQuery(diff) => {
|
||||
messages.push(ConversationMessage {
|
||||
role: MessageRole::User,
|
||||
content: MessageContent::Text(format!(
|
||||
"Apply code changes: {}",
|
||||
diff.query
|
||||
)),
|
||||
});
|
||||
}
|
||||
api::request::input::Type::ResumeConversation(_) => {
|
||||
messages.push(ConversationMessage {
|
||||
role: MessageRole::User,
|
||||
content: MessageContent::Text(
|
||||
"Continue where we left off. Review the conversation history and proceed with the next steps."
|
||||
.to_string(),
|
||||
),
|
||||
});
|
||||
}
|
||||
api::request::input::Type::QueryWithCannedResponse(canned) => {
|
||||
messages.push(ConversationMessage {
|
||||
role: MessageRole::User,
|
||||
content: MessageContent::Text(canned.query.clone()),
|
||||
});
|
||||
}
|
||||
api::request::input::Type::CodeReview(_) => {
|
||||
messages.push(ConversationMessage {
|
||||
role: MessageRole::User,
|
||||
content: MessageContent::Text(
|
||||
"Review the following code changes and provide detailed feedback on correctness, style, and potential issues."
|
||||
.to_string(),
|
||||
),
|
||||
});
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ensure_starts_with_user_message(&mut messages);
|
||||
ensure_tool_results_paired(&mut messages);
|
||||
messages
|
||||
}
|
||||
|
||||
fn ensure_starts_with_user_message(messages: &mut Vec<ConversationMessage>) {
|
||||
if messages.is_empty() {
|
||||
messages.push(ConversationMessage {
|
||||
role: MessageRole::User,
|
||||
content: MessageContent::Text("Please proceed with the requested task.".to_string()),
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
if messages[0].role != MessageRole::User {
|
||||
messages.insert(
|
||||
0,
|
||||
ConversationMessage {
|
||||
role: MessageRole::User,
|
||||
content: MessageContent::Text(
|
||||
"Please proceed with the requested task.".to_string(),
|
||||
),
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
fn ensure_tool_results_paired(messages: &mut Vec<ConversationMessage>) {
|
||||
let mut tool_use_ids: Vec<String> = Vec::new();
|
||||
let mut tool_result_ids: std::collections::HashSet<String> = std::collections::HashSet::new();
|
||||
|
||||
for msg in messages.iter() {
|
||||
match &msg.content {
|
||||
MessageContent::ToolUse { tool_use_id, .. } => {
|
||||
tool_use_ids.push(tool_use_id.clone());
|
||||
}
|
||||
MessageContent::ToolResult { tool_use_id, .. } => {
|
||||
tool_result_ids.insert(tool_use_id.clone());
|
||||
}
|
||||
MessageContent::MultiPart(parts) => {
|
||||
for part in parts {
|
||||
match part {
|
||||
super::convert::ContentPart::ToolUse { tool_use_id, .. } => {
|
||||
tool_use_ids.push(tool_use_id.clone());
|
||||
}
|
||||
super::convert::ContentPart::ToolResult { tool_use_id, .. } => {
|
||||
tool_result_ids.insert(tool_use_id.clone());
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
|
||||
let orphaned: Vec<String> = tool_use_ids
|
||||
.into_iter()
|
||||
.filter(|id| !tool_result_ids.contains(id))
|
||||
.collect();
|
||||
|
||||
if orphaned.is_empty() {
|
||||
return;
|
||||
}
|
||||
|
||||
log::debug!(
|
||||
"[bedrock] Synthesizing {} missing toolResult messages for orphaned tool calls",
|
||||
orphaned.len()
|
||||
);
|
||||
|
||||
for orphaned_id in &orphaned {
|
||||
let insert_idx = messages
|
||||
.iter()
|
||||
.rposition(|m| match &m.content {
|
||||
MessageContent::ToolUse { tool_use_id, .. } => tool_use_id == orphaned_id,
|
||||
MessageContent::MultiPart(parts) => parts.iter().any(|p| matches!(
|
||||
p,
|
||||
super::convert::ContentPart::ToolUse { tool_use_id, .. } if tool_use_id == orphaned_id
|
||||
)),
|
||||
_ => false,
|
||||
})
|
||||
.map(|i| i + 1)
|
||||
.unwrap_or(messages.len());
|
||||
|
||||
messages.insert(
|
||||
insert_idx,
|
||||
ConversationMessage {
|
||||
role: MessageRole::User,
|
||||
content: MessageContent::ToolResult {
|
||||
tool_use_id: orphaned_id.clone(),
|
||||
content: "Tool executed successfully.".to_string(),
|
||||
is_error: false,
|
||||
},
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
pub fn extract_system_prompt(_request: &api::Request) -> Option<String> {
|
||||
Some("You are a helpful AI coding assistant. You help users with software engineering tasks including writing code, debugging, and explaining concepts.".to_string())
|
||||
}
|
||||
@@ -109,7 +282,10 @@ pub fn extract_tools(request: &api::Request) -> Vec<ToolDefinition> {
|
||||
match input_type {
|
||||
api::request::input::Type::UserInputs(user_inputs) => {
|
||||
for user_input in &user_inputs.inputs {
|
||||
if let Some(api::request::input::user_inputs::user_input::Input::ToolCallResult(_)) = &user_input.input {
|
||||
if let Some(
|
||||
api::request::input::user_inputs::user_input::Input::ToolCallResult(_),
|
||||
) = &user_input.input
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -133,6 +309,10 @@ pub fn extract_tools(request: &api::Request) -> Vec<ToolDefinition> {
|
||||
}
|
||||
}
|
||||
|
||||
if tools.is_empty() {
|
||||
tools = default_tool_definitions();
|
||||
}
|
||||
|
||||
tools
|
||||
}
|
||||
|
||||
@@ -232,7 +412,7 @@ fn convert_proto_message(msg: &api::Message) -> Option<ConversationMessage> {
|
||||
Some(ConversationMessage {
|
||||
role: MessageRole::Assistant,
|
||||
content: MessageContent::ToolUse {
|
||||
tool_use_id: msg.id.clone(),
|
||||
tool_use_id: tool_call.tool_call_id.clone(),
|
||||
name,
|
||||
input,
|
||||
},
|
||||
@@ -296,14 +476,12 @@ fn extract_tool_result_content(result: &api::request::input::ToolCallResult) ->
|
||||
match result_type {
|
||||
api::request::input::tool_call_result::Result::RunShellCommand(cmd_result) => {
|
||||
match &cmd_result.result {
|
||||
Some(
|
||||
api::run_shell_command_result::Result::CommandFinished(finished),
|
||||
) => finished.output.clone(),
|
||||
Some(
|
||||
api::run_shell_command_result::Result::LongRunningCommandSnapshot(
|
||||
snapshot,
|
||||
),
|
||||
) => snapshot.output.clone(),
|
||||
Some(api::run_shell_command_result::Result::CommandFinished(finished)) => {
|
||||
finished.output.clone()
|
||||
}
|
||||
Some(api::run_shell_command_result::Result::LongRunningCommandSnapshot(
|
||||
snapshot,
|
||||
)) => snapshot.output.clone(),
|
||||
_ => "Command completed.".to_string(),
|
||||
}
|
||||
}
|
||||
@@ -341,19 +519,15 @@ fn format_tool_call_result(result: &api::message::ToolCallResult) -> String {
|
||||
match result_type {
|
||||
api::message::tool_call_result::Result::RunShellCommand(cmd_result) => {
|
||||
match &cmd_result.result {
|
||||
Some(
|
||||
api::run_shell_command_result::Result::CommandFinished(finished),
|
||||
) => {
|
||||
Some(api::run_shell_command_result::Result::CommandFinished(finished)) => {
|
||||
format!(
|
||||
"Exit code: {}\nOutput: {}",
|
||||
finished.exit_code, finished.output
|
||||
)
|
||||
}
|
||||
Some(
|
||||
api::run_shell_command_result::Result::LongRunningCommandSnapshot(
|
||||
snapshot,
|
||||
),
|
||||
) => {
|
||||
Some(api::run_shell_command_result::Result::LongRunningCommandSnapshot(
|
||||
snapshot,
|
||||
)) => {
|
||||
format!("Output (running): {}", snapshot.output)
|
||||
}
|
||||
_ => "Command completed.".to_string(),
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user