Patch Changes
- 9bed345: Emit
thread.context_compaction_started/thread.context_compaction_finishedaround context compaction (trigger, usage, duration_ms). - f5427d9: Pass each MCP server's saved description into deferred tool instructions. A server with
preload: falsenow shows its description before its tools are listed. - a527e57: Send
x-tfy-forward-pings: trueon TrueFoundry-mode model invokes. Support per-call LLMheadersandmetadata(TrueFoundry folds metadata intox-tfy-metadata), and stamptfg.compaction: trueon context-compaction calls so those requests are visible in traces. - 7318806: Blocked large tool response messages now state the exact content size and which limit blocked it, in characters (
Content too large (50,000 characters; this response exceeds the 24,000-character limit for a single response). Result saved to: …, at the default thresholds; responses blocked by the parallel total instead say the parallel responses together exceed the combined limit), and the file-dump message prompts the model to plan reads against the total instead of guessing with small incremental reads. - fcb48de: Keep local
$defs/definitionscontainers when converting preloaded MCP tool input schemas, so$refpointers resolve instead of being dropped. - 6247d67: Prefix model and MCP failures so logs and the chat error show which system failed.
- 4682d87: Bump npm-security dependencies:
@modelcontextprotocol/sdk,hono, andundici. - e0566ef: Record outbound HTTP, model calls, MCP, harness limits, tool-call duration, active threads, turn lifetime, Parallel web search, ServiceFoundry requests, and Postgres query duration on the existing Prometheus scrape. Daytona and Redis SDK meters are included on that same scrape.
- 82e50e2: Report logged failures to Sentry except HTTP statuses from 200 through 499, including when that status sits on a wrapped cause. The log message is the Sentry title, and the thrown error is the cause and stack. Those events include the active tenant, request, session, and turn ids. Printed lines omit that marker even when Sentry is off.
- c21132e: Sessions now return
last_turn_details({ id, state: { status } }, null before the first turn), kept in sync as the last turn changes status. Existing sessions are backfilled. - 012f8fc: Block HTTPS-to-HTTP redirects in the outbound SSRF-guarded fetch so cleartext downgrades cannot follow a secure hop.