{"version":"2.1.269","anchor":"sdkprint-mode-turn-loop-rewritten-with-richer-per-turn-tele","canonical_anchor":"sdkprint-mode-turn-loop-rewritten-with-richer-per-turn-tele","heading":"SDK\/print-mode turn telemetry reworked","tier":"internal","area":"SDK","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.269\/e\/sdkprint-mode-turn-loop-rewritten-with-richer-per-turn-tele","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.269","markdown":"### SDK\/print-mode turn telemetry reworked\n\nThe turn-tracking and shutdown telemetry for SDK\/print mode runs was rewritten, adding a tool-call breakdown and consolidating shutdown reporting\n\n**What**\n\n- Turn execution in SDK\/non-interactive (print) mode now uses two new internal classes: one that tracks whether a turn is in flight and emits `tengu_sdk_result` (or `tengu_sdk_session_crash`) on shutdown or crash, and another that runs each turn and emits `tengu_sdk_result` with a new breakdown of tool call counts into MCP tool calls, tool-search calls, and built-in tool calls.\n\n- A companion class manages adopting a model override at the end of a turn and logs `tengu_print_model_override_adopted` with the previous and new model.\n\n- The telemetry sent when a run is shut down mid-way (status `terminated`) now goes through one shared method (`reportTerminatedOnShutdown`) instead of being built inline, so `aborted`\/`runPhase`\/`exitCode` reporting is consistent.\n\n**Why** This gives clearer visibility into how SDK-driven and print-mode sessions end and what kinds of tool calls they made, and makes the shutdown telemetry more consistent and easier to maintain.\n\n- Area: SDK\n- Tier: Under the hood\n- Useful: 3\/5\n- Signal: 3\/5"}