- Fixed TTSR violations during subagent execution aborting the entire subagent run; `#waitForPostPromptRecovery()` now awaits agent idle after TTSR/retry gates resolve, preventing `prompt()` from returning while fire-and-forget `agent.continue()` is still streaming.
- Added comprehensive test case verifying `prompt()` blocks until TTSR continuation with tool calls completes, preventing premature session disposal.
- Added `tools.maxTimeout` setting to enforce global timeout ceiling across all tool calls.
- Centralized per-tool timeout constants and clamping logic into `tool-timeouts.ts` module.
- Extracted `clampTimeout()` function to standardize timeout enforcement across bash, python, browser, ssh, and fetch tools.
- Fixed response body reuse error when handling 429 rate limit responses by cloning response before reading error body.
- Added test case to verify 429 errors surface correctly without body reuse failures.
- Implemented TTSR resume gate to ensure `prompt()` blocks until TTSR interrupt continuations complete, preventing race conditions between TTSR injections and subsequent prompts.
- Replaced `#waitForRetry()` with `#waitForPostPromptRecovery()` to handle both retry and TTSR resume gates, ensuring prompt completion waits for all post-prompt recovery operations.
- Added comprehensive test coverage for TTSR resume gate behavior under interrupt and deferred injection modes.
- Renamed intent field from `agent__intent` to `intent` in tool schemas for cleaner API contracts.
- Refined intent parameter guidance to require concise 2-6 word present participle sentences.
- Updated intentTracing documentation and test fixtures to reflect the new field naming convention.
Add cross-platform terminal dark/light mode detection using the Mode 2031
VT extension (DECSET 2031). On startup, query the terminal's current
appearance with CSI ? 996 n, then subscribe to live appearance change
notifications with CSI ? 2031 h. When the OS or terminal switches between
dark and light mode, the terminal sends a DSR that triggers an automatic
theme re-evaluation.
Previously, detectTerminalBackground() only checked the COLORFGBG
environment variable once at launch — a static value that never updates
when the system appearance changes mid-session. The SIGWINCH listener
only fires on terminal resize, not on appearance changes.
Mode 2031 is supported by Ghostty, Kitty (0.38.1+), Contour (0.4.0+),
VTE/GNOME Terminal (0.82.0+), and tmux (3.6+). Unsupported terminals
silently ignore the escape sequences and fall back to the existing
COLORFGBG heuristic.
writeMCPConfigFile writes to disk via node:fs, but the capability
system's readFile (capability/fs.ts) caches file contents in an
in-memory Map. When /mcp reauth writes a new credential ID to the
config file and then #reloadMCP calls discoverAndConnect, the
builtin provider's readFile hits the stale cache and returns the
old config — causing the connection to use the old (deleted)
credential ID and fail with HTTP 401 missing_token.
Fix: call invalidateFsCache(filePath) after the atomic rename in
writeMCPConfigFile so subsequent loadCapability reads see fresh
content.
- Added lenientArgValidation option to tools for graceful handling of argument validation errors.
- Refactored schema reference resolution to inline all $ref definitions instead of preserving them at root level.
- Added circular reference detection during schema resolution to prevent infinite loops.
- Added AJV compilation verification to catch unresolved $ref references before tool execution.
- Added graceful schema validation fallback mechanism that degrades to unconstrained schemas on repeated validation failures.
- Enhanced schema enforcement across AI providers to use try-catch pattern with automatic fallback to non-strict mode on validation errors.
- Improved handling of circular, deeply nested, and non-object output schemas with stack overflow prevention and type conversion fallbacks.
- Added `tryEnforceStrictSchema()` utility function providing error-resilient schema validation with strict mode flag tracking.
- Added normalizeMixedSchemaNode() function to recursively convert mixed JTD and JSON Schema definitions into valid JSON Schema.
- Changed output schema validation to gracefully fall back to unconstrained JSON objects when schema is invalid instead of throwing errors.
- Fixed handling of mixed JTD and JSON Schema output definitions by normalizing them during schema conversion.
- Added comprehensive test coverage for JTD-to-JSON Schema conversion and output schema validation edge cases.
* fix: use --no-optional-locks for background git status calls
Prevent index.lock contention by adding --no-optional-locks to all
git status --porcelain calls. This is the same approach VSCode uses
in its built-in git extension (GIT_OPTIONAL_LOCKS=0).
The status-line component polls git status every ~1s to show
staged/unstaged/untracked counts. Without --no-optional-locks,
each call acquires index.lock for an opportunistic index refresh,
which blocks concurrent git operations (pull, rebase, commit) run
by the user or by omp's own tool execution.
The git-status documentation explicitly recommends this:
'Scripts running status in the background should consider
using git --no-optional-locks status'
References:
- git docs: https://git-scm.com/docs/git-status (BACKGROUND REFRESH)
- git commit adding the flag: https://github.com/git/git/commit/27344d6
- VSCode's fix: GIT_OPTIONAL_LOCKS=0 in extensions/git/src/git.ts:2716
- Claude Code same issue: https://github.com/anthropics/claude-code/issues/11005
- GitExtensions same issue: https://github.com/gitextensions/gitextensions/issues/5066
- VSCode issue #31069: https://github.com/microsoft/vscode/issues/31069
* style: fix biome formatting for long lines in worktree.ts
Add an optional `oauth` config block on MCP server entries in mcp.json,
allowing explicit `clientId` and `callbackPort` values for servers that
don't expose these through auto-discovery (e.g. Slack).
The `oauth.clientId` is used as a fallback — if the server's error
response or well-known metadata includes a client_id, that takes
precedence. The `callbackPort` defaults to 3000 when not specified.
- Add Sonnet 4.6 to Bedrock supportsAdaptiveThinking check (was Opus-only,
causing thinking to be silently disabled for Sonnet 4.6 on Bedrock)
- Clamp 'max' effort to 'high' for Sonnet 4.6 on Bedrock (max is
Opus 4.6 only per Anthropic API docs)
- Add output_config effort support for Opus 4.5 alongside budget-based
thinking (Opus 4.5 supports effort per Anthropic docs but was not
sending it)
Co-authored-by: Miroslav Drbal <miroslav.drbal@gendigital.com>
- Added `sanitizeSchemaForStrictMode` function to normalize JSON schemas by removing non-structural keys for strict mode compatibility.
- Enhanced `enforceStrictSchema` to handle union types with object variants and type arrays containing object.
- Fixed `enforceStrictSchema` to properly handle malformed object schemas with required keys.
- Integrated schema sanitization in coding-agent submit-result tool with fallback to non-strict mode on validation errors.
- Removed per-task skill pinning feature; subagents now inherit session skill set instead of per-task selection.
- Removed `preloadedSkills` option from `CreateAgentSessionOptions` interface and related system prompt plumbing.
- Removed `skills` field from Task schema; task execution now passes available session skills directly to subagents.
- Simplified task execution pipeline by removing skill resolution logic and preloaded skills handling from system prompt templates.
- Fixed `enforceStrictSchema` to properly handle malformed object schemas with required keys but missing properties.
- Fixed `enforceStrictSchema` to correctly process nested object schemas within `anyOf`, `allOf`, and `oneOf` combinators.
- Added type guards to validate schema entries before recursive processing to prevent incorrect transformations.
- Added 2 test cases covering malformed object normalization and nested schema repair scenarios.
- Replaced `Type.Object` with `Type.Record` for more accurate representation of arbitrary JSON output when no specific schema is provided.
- Improved config CLI test assertions for model roles to strip ANSI escape codes, enhancing test robustness.
- Restructured submit_result tool parameter schema to wrap data and error fields in a nested result object.
- Updated all prompt documentation to reference the new result.data and result.error parameter paths.
- Added validation logic to ensure result is an object containing exactly one of data or error.
- Updated test cases to reflect the new nested result object parameter structure.
- Added support for setting array and record configuration values using JSON syntax.
- Implemented JSON parsing and validation for array and record types in config CLI.
- Added 2 integration tests covering array and record configuration workflows.
- Enhanced test setup with temporary directory management and settings reset for isolation.
- Improved config display formatting to properly render arrays and objects as JSON instead of `[object Object]`.
- Enhanced type display in config list output to show correct type indicators for number, array, and record settings.
- Added test coverage for record settings rendering in config list output.
- Increased default async max jobs limit from 15 to 100 for improved concurrent task handling.
- Updated fallback default in SDK initialization to match schema configuration.
- Added support for four new exec message types: listMcpResources, readMcpResource, recordScreen, and computerUse.
- Imported four new result schemas to handle responses for MCP resource operations and computer use capabilities.
- Updated bash execution handler to use standardized 'cwd' parameter name instead of 'workdir'.
- Fixed skill discovery to continue loading project skills when user skills directory is missing.
- Added error handling in scanSkillsFromDir to gracefully handle ENOENT and log other read failures.
- Added test case verifying project skills load successfully despite missing user skills directory.
- Added topP, topK, minP, presencePenalty, and repetitionPenalty sampling control options to StreamOptions and AgentOptions interfaces.
- Implemented getter and setter properties on Agent class for runtime configuration of model sampling parameters.
- Added UI configuration and preset value providers for five new sampling parameters in coding-agent settings schema and components.
- Integrated sampling control parameters through proxy layer and agent session configuration for end-to-end provider support.
Validate report_finding details before extraction and normalize findings before task rendering to avoid crashes when tool errors emit empty details.
Fixes#173