fromPayload static method
Implementation
static AgentUsageSnapshot? fromPayload(Map<String, Object?> payload) {
if (payload["type"] != agentUsageUpdatedType) {
return null;
}
final rawThreadPath = payload["thread_id"];
if (rawThreadPath is! String || rawThreadPath.trim().isEmpty) {
return null;
}
final rawContextWindow = payload["context_window"];
if (rawContextWindow is! Map) {
return null;
}
final rawUsedTokens = rawContextWindow["used_tokens"];
final usedTokens = _asInt(rawUsedTokens);
if (usedTokens == null) {
return null;
}
final rawTotalTokens = rawContextWindow["total_tokens"];
final totalContextTokens = rawTotalTokens == null ? null : _asInt(rawTotalTokens);
final rawCompactionMode = rawContextWindow["compaction_mode"];
final compactionMode = rawCompactionMode is String && rawCompactionMode.trim().isNotEmpty ? rawCompactionMode.trim() : null;
final rawCompactionThreshold = rawContextWindow["compaction_threshold"];
final compactionThreshold = rawCompactionThreshold == null ? null : _asInt(rawCompactionThreshold);
final totalTokens = _usageTotalTokens(payload["usage"]);
final usage = _usageValues(payload["usage"]);
final rawTurnId = payload["turn_id"];
return AgentUsageSnapshot(
threadPath: rawThreadPath.trim(),
turnId: rawTurnId is String && rawTurnId.trim().isNotEmpty ? rawTurnId.trim() : null,
contextUsedTokens: usedTokens,
contextTotalTokens: totalContextTokens,
compactionMode: compactionMode,
compactionThreshold: compactionThreshold,
totalTokens: totalTokens,
usage: usage,
);
}