Ensure parallel tool results finish before follow-ups, preserve warping
status across exchanges, clean up streams before crosscheck reviews, and
restore terminal focus when conversations complete. Remove temporary
debug
logging.
- 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
Add the 'Crosscheck Work' experiment to the Agents settings. When enabled,
a reviewer sub-agent is spawned after the main agent finishes a turn (with
no pending tool calls). The reviewer critiques the output using a dedicated
system prompt focused on correctness, simplicity, and code quality. If the
reviewer does not respond with 'LGTM!', its feedback is injected as a
synthetic user query back to the main agent, which must address it. This
loop continues until the reviewer approves or max iterations is reached.
Components:
- Feature flag: CrosscheckWork (enabled in DOGFOOD_FLAGS)
- Settings: agents.experiments.crosscheck_enabled,
agents.experiments.crosscheck_model_id,
agents.experiments.crosscheck_max_iterations
- Settings UI: new 'Experiments' subpage under Agents
- Crosscheck module: app/src/ai/crosscheck/ with prompt, reviewer model
- Controller integration: hooks into AfterStreamFinished when no actions
are queued, triggers reviewer, handles feedback injection
- Provider support: OpenAI-compatible and Bedrock direct invocation
- Safety: max iteration guard, error handling, reset on new user query
- Sanitize tool_use_id values in OpenAI request conversion to match
Bedrock's required pattern ^[a-zA-Z0-9_-]+$. Fixes 400 errors when
LiteLLM proxies to Bedrock and tool IDs contain invalid characters.
- Parse cache usage stats from LiteLLM/OpenAI responses
(prompt_tokens_details.cached_tokens, cache_read_input_tokens,
cache_creation_input_tokens) and propagate to token usage tracking.
- Hide cache-o-meter in session status bar when provider doesn't report
cache data (LiteLLM/OpenAI), instead of showing misleading 0% stats.
- Update cost estimation to account for cache read/write pricing tiers.
typescript-language-server requires a valid TypeScript installation to
function. Previously, no initializationOptions were sent during the LSP
initialize request, causing the server to fail with:
'Could not find a valid TypeScript installation. Please ensure that
the typescript dependency is installed in the workspace or that a
valid tsserver.path is specified.'
This fix:
- Adds initializationOptions.tsserver.path resolution that searches for
TypeScript in: workspace node_modules, global npm install, and npx cache
- Wires initialization_options into the LSP startup flow via LSPServerType
- Updates the install step to proactively install TypeScript globally if
not found locally