Track inference tool changes in turn analytics (#50964)

## What changed

Add `tools_change_count` to turn profiles and turn analytics events. Compare the full model-visible tool list before each sampling request, retaining the previous list across turns and connection resets. The first list establishes a baseline; subsequent changes increment the current turn's count.

## Testing

Add coverage for schema changes, tool additions, ordering changes, empty lists, and tracking across sessions and transport fallback. Extend the turn event serialization test to include `tools_change_count`.

GitOrigin-RevId: 44a15c42dc7d0b35c166666faeb9627b718b33dd
This commit is contained in:
Ahmed Ibrahim
2026-10-04 21:19:05 +00:00
committed by copyberry
parent 335c7f8eca
commit 4ad985e2ca
10 changed files with 91 additions and 0 deletions
@@ -173,6 +173,7 @@ fn turn_event_serializes_expected_shape() {
after_last_sampling_ms: 94,
sampling_request_count: 2,
sampling_retry_count: 1,
tools_change_count: 2,
duration_ms: Some(1234),
started_at: Some(455),
completed_at: Some(456),
@@ -264,6 +265,7 @@ fn turn_event_serializes_expected_shape() {
"after_last_sampling_ms": 94,
"sampling_request_count": 2,
"sampling_retry_count": 1,
"tools_change_count": 2,
"duration_ms": 1234,
"started_at": 455,
"completed_at": 456
+1
View File
@@ -378,6 +378,7 @@ pub(super) fn sample_turn_profile() -> TurnProfile {
after_last_sampling_ms: 94,
sampling_request_count: 2,
sampling_retry_count: 1,
tools_change_count: 2,
}
}