tryParseLine static method

TuiEvidenceRecord? tryParseLine(
  1. String line
)

Parses one strict JSONL evidence line.

Implementation

static TuiEvidenceRecord? tryParseLine(String line) {
  final trimmed = line.trim();
  if (trimmed.isEmpty) return null;
  final decoded = _decodeJsonObject(trimmed);
  if (decoded == null) return null;

  final version = decoded['v'];
  if (version is! int && version is! num) return null;
  if (version.toInt() != _schemaVersion) return null;

  final type = decoded['type'];
  final decisionType = decoded['decisionType'];
  final result = decoded['result'];
  final timestampUs = decoded['timestampUs'];
  if (type is! String || type.isEmpty) return null;
  if (decisionType is! String || decisionType.isEmpty) return null;
  if (result is! String || result.isEmpty) return null;
  if (timestampUs is! int && timestampUs is! num) return null;

  final rawFactors = decoded['factors'];
  if (rawFactors is! Map) return null;
  final factors = <String, Object?>{};
  for (final entry in rawFactors.entries) {
    final key = entry.key;
    if (key is String) {
      factors[key] = entry.value;
    }
  }

  return TuiEvidenceRecord(
    version: version.toInt(),
    type: type,
    timestampUs: timestampUs.toInt(),
    decisionType: decisionType,
    result: result,
    factors: factors,
    runId: decoded['runId'] as String?,
  );
}