fromPayload static method

AgentUsageSnapshot? fromPayload(
  1. Map<String, Object?> payload
)

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,
  );
}