Bump version to 2.0.0 and upload install-galaxy.sh in deploy script

- Update version from 1.6.3 to 2.0.0 in app/Cargo.toml and Cargo.lock
- Add install-galaxy.sh upload step to build-and-deploy-hermes script
- Include pending AI provider and agent changes
This commit is contained in:
Ryan Ward
2026-07-15 16:17:13 -05:00
parent af5315313d
commit e9a9a4c30f
19 changed files with 523 additions and 61 deletions
@@ -1942,7 +1942,7 @@ impl AgentInputFooter {
if let Some(conversation) =
BlocklistAIHistoryModel::as_ref(ctx).active_conversation(self.terminal_view_id)
{
let usage = conversation.context_window_usage();
let usage = conversation.context_window_usage().clamp(0.0, 1.0);
let icon = icon_for_context_window_usage(usage);
let remaining_pct = ((1.0 - usage) * 100.0).round() as i32;
+14 -11
View File
@@ -3139,17 +3139,20 @@ impl BlocklistAIController {
// Check if this error is eligible for corrective retry.
// Similar to loop detection, inject a message telling the LLM
// to try a different approach rather than just failing.
// Exclude errors that are proxy/config issues (cache_control,
// BadRequestError from LiteLLM) since the LLM can't fix those.
let error_str = format!("{e}");
let is_corrective_retry_candidate = !matches!(
e.as_ref(),
AIApiError::QuotaLimit { .. }
) && (error_str.contains("ValidationException")
|| error_str.contains("validation")
|| error_str.contains("context window")
|| error_str.contains("too many tokens")
|| error_str.contains("input is too long")
|| error_str.contains("throttl")
|| error_str.contains("ThrottlingException"));
let is_proxy_config_error = error_str.contains("cache_control")
|| error_str.contains("tool_use` ids were found without")
|| error_str.contains("BadRequestError");
let is_corrective_retry_candidate = !is_proxy_config_error
&& !matches!(e.as_ref(), AIApiError::QuotaLimit { .. })
&& (error_str.contains("ValidationException")
|| error_str.contains("context window")
|| error_str.contains("too many tokens")
|| error_str.contains("input is too long")
|| error_str.contains("throttl")
|| error_str.contains("ThrottlingException"));
const MAX_ERROR_RETRIES: usize = 2;
let retry_count = self
@@ -4026,7 +4029,7 @@ impl BlocklistAIController {
let max_ctx = context_window_for_model(&active_model_id);
let new_usage =
(summary_tokens + remaining_msgs_tokens) as f32 / max_ctx as f32;
conversation.set_context_window_usage(new_usage);
conversation.set_context_window_usage(new_usage.clamp(0.0, 1.0));
conversation
.set_current_context_tokens(summary_tokens + remaining_msgs_tokens);
@@ -185,6 +185,8 @@ impl ResponseStream {
base_url: client_config.base_url.clone(),
api_key: client_config.api_key.clone(),
model: Some(model_id.to_string()),
max_input_tokens: client_config.max_input_tokens,
max_output_tokens: client_config.max_output_tokens,
});
}
}
@@ -522,7 +522,8 @@ impl ConversationUsageView {
}
labels.push(render_label_text("Context window used", appearance));
let context_usage_pct = self.usage_info.context_window_usage * 100.;
let context_window_usage = self.usage_info.context_window_usage.clamp(0.0, 1.0);
let context_usage_pct = context_window_usage * 100.;
let context_usage_str = if context_window_breakdown_enabled && self.context_window_expanded
{
format!("{context_usage_pct:.2}%")
@@ -540,7 +541,7 @@ impl ConversationUsageView {
)
.with_child(
ConstrainedBox::new(render_context_window_usage_icon(
self.usage_info.context_window_usage,
context_window_usage,
theme,
None,
))