- Gate server requests on available credentials
- Run local child agents directly without a parent run ID
- Include command IDs in Bedrock context and recognize transfer tools
When a skill was invoked on a clean slate (no conversation history),
the request sent to the AI provider contained only a system prompt
with zero user messages, causing Bedrock/LiteLLM to reject it with:
'Invalid Message bedrock requires at least one non-system message'
Root cause: extract_new_input_messages() had no handler for
Type::InvokeSkill, so it fell through to the _ => {} wildcard and
produced zero ConversationMessage results.
Fix adds InvokeSkill handling to three functions:
- extract_new_input_messages(): generates a User message with the
skill name and content wrapped in <skill-instructions> tags
- extract_input_messages(): persists the InvokeSkill as a proper
api::Message in task history for conversation continuity
- extract_user_query_text(): returns '/<skill-name>' for the
UserQuery proto event used in conversation title generation
- Load global rules (AIFact/AIMemory) from local CloudModel and inject
them into the Bedrock/OpenAI system prompt as a '## Global Rules' section
when memory is enabled.
- Fix rule seeding: always re-seed predefined rules when the CloudModel has
none, regardless of the has_seeded_predefined_rules flag (handles case
where flag was set but rules never persisted due to prior missing owner).
- Rename /context slash command to /copy-context: dumps the full context
window (global rules, progressive summary, message history) to the
clipboard for debugging.
- Construct ServerTask directly for Bedrock CLI subagents so messages route
correctly without needing a server CreateTask upgrade
- Handle CliAgentUserQuery input type in both request translators, including
running command context and terminal output
- Add force_cancel_all_streaming_exchanges fallback for when Ctrl+C finds no
in-flight streams (stuck subagent / unexpected stream end)
- Cancel active conversation on Ctrl+C in agent view compose state
- Skip agent view entry when agent is tagged-in for a running command
- Set root_task_id on Bedrock requests for proper optimistic task upgrade
- Persist app state on will_terminate to avoid losing sessions
- Trust persisted CWD without is_dir() recheck (fixes network mount restore)
- Log warning instead of silently dropping tabs with unreadable root nodes
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Fix start_agent tool mapping: route to Tool::StartAgent instead of
dead-end Tool::Subagent so tool calls become executable actions
- Block start_agent until child finishes: parent waits for child
conversation to complete and receives full output as tool result
- Fix tool result delivery: add StartAgent/StartAgentV2 cases to
extract_tool_result_content so the model actually sees agent output
- Support parallel agent spawning: change StartAgent action phase from
Serial to Parallel, and track multiple pending agents via Vec
- Mark child conversations as Success on EndTurn: emit
ConversationStatus::Success when a child stream ends with no actions
- Skip orchestration SSE in local mode: prevent app freeze from trying
to connect to non-existent server
- Remove send_message_to_agent and suggest_next_prompt from tool list:
these require server infrastructure that doesn't exist in OSS mode
- Add "Waiting for sub-agents..." status message while agents process
- Fix child agent pane close: actually dismiss instead of re-hiding,
track dismissed IDs to prevent re-creation on restart
- Fix cache_miss_tokens calculation and show per-block cache stats
- Add [tool-debug] logging throughout tool invocation pipeline
Bump version to 1.6.0.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The apply_file_diffs tool now includes a required "summary" field so the
model provides a brief description of edits. This surfaces as the title
on the diff panel instead of showing only +/- line counts.
Also propagates is_error from tool result content back to the model so it
can distinguish failed tool calls from successful ones.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
New features:
- Inline subagent panels with expand/collapse and click-to-toggle
- /context slash command to inspect bedrock_message_history
- Child-to-parent question routing with auto-answer for subagents
- Subagent token usage and cost merging into parent conversation
- Randomized session-colored user avatar silhouettes
Bug fixes:
- Bedrock: remove orphaned tool_results after compaction
- Bedrock: self-healing exchange lookup for out-of-order streaming
- Bedrock: append continuation prompt when conversation ends with assistant
- Duration sanity check rejects epoch-time artifacts from session restore
- Cache hit rate calculation uses actual total_input_tokens
- Hide "Time to first token" when value is zero
Improvements:
- Demote verbose bedrock-debug logs to debug/trace levels
- Bedrock tool usage counting falls back to action counting
- Remove logout menu item from workspace menu
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Major features:
- Auto-compact: triggers conversation summarization when context window >= 85%,
compacts Bedrock message history to a summary pair, and tracks live context tokens
- Bedrock summarization: plumbs `is_summarization` flag through translator/client/response
pipeline, handles SummarizeConversation input type, and marks `summarized` in metadata
- Session restore: rebuilds bedrock_message_history from persisted task messages via
newly-public `convert_proto_message`, preventing empty history on reconnect
- Subagent orchestration: adds SubagentQuestion/Answer/CompletionSummary event types,
parent-child question routing with depth limits, retry counting, and drain methods
- Summarization UI: inline SummarizationView in AI blocks with progress/finished states
Refactors:
- Rename WarpTheme → GalaxyTheme across ~100 files (rebrand continuation)
- Rename warp_home_config_dir → galaxy_home_config_dir and related path functions
- Predefined rules: replace "System Defined Rule #N" with descriptive names
(e.g. "Correctness Over Speed", "Never Guess") and add lookup helpers
- Usage view: replace cumulative input/output token display with live context tokens,
cache hit rate calculation, and separate cache read/write stats
- Telemetry: remove verbose doc comments, simplify trait definitions
- Facts view: simplify delete permission check (always allow local deletion)
- Remove warp_managed_paths_watcher.rs (dead code)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Major changes:
- **Bedrock translator architecture**: Extract orchestration logic from `impl.rs` into
a dedicated `translator.rs` module. Rename `convert_request.rs` → `request_translator.rs`
and `stream.rs` → `response_translator.rs` for clarity. Remove `tool_docs.rs` (inlined).
Remove `fallback_to_warp` setting and server fallback path — Bedrock is now the sole backend.
- **Unknown tool handling**: The response translator now detects hallucinated/unknown tool
calls from the model and synthesizes error tool_results so the conversation doesn't
deadlock waiting for a result that will never come.
- **Usage display overhaul**: Replace credit-based usage display with detailed token metrics
showing context window %, cache hit rate (read/write/miss), and estimated cost in dollars.
Add `total_input_tokens`, `total_cache_read_tokens`, `total_cache_write_tokens`, and
`cache_miss_tokens` accessors to `AIConversation`.
- **Predefined rules system**: Add `predefined_rules.rs` with 11 system-defined behavioral
rules that are auto-seeded on first launch. Add "Add Predefined Rules" button to the
Rules UI for re-adding them later. Track seeding state via `has_seeded_predefined_rules`
setting.
- **Session restore improvements**: Rename database file from `warp.sqlite` to
`galaxy.sqlite` with automatic migration from both same-directory and state_dir legacy
paths. Improve CWD persistence by falling back to `session_startup_path` for agent-mode
and fresh tabs. Add extensive session-save/restore logging.
- **Shell bootstrap rebrand**: Rename `WARP_INITIAL_WORKING_DIR` environment variable to
`GALAXY_INITIAL_WORKING_DIR` across bash, zsh, and fish bootstrap scripts.
- **Model defaults**: Change default Bedrock model from Opus 4.7 to Opus 4.6.
Add `context_window_for_model()` helper with model-aware context sizes.
Remove `is_bedrock_model()` (no longer needed without server fallback).
- **User query persistence**: The response translator now emits a `UserQuery` proto message
at stream start so the user's prompt persists across sessions for conversation titles.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>