VectorUpsert.fromIChunk constructor

VectorUpsert.fromIChunk({
  1. required Object chunk,
  2. String idPrefix = "",
  3. Map<String, dynamic> metadata = const {},
})

Implementation

factory VectorUpsert.fromIChunk({
  required Object chunk,
  String idPrefix = "",
  Map<String, dynamic> metadata = const {},
}) {
  dynamic candidate = chunk;

  try {
    int index = (candidate.index as num).toInt();
    int charStart = (candidate.charStart as num).toInt();
    int charEnd = (candidate.charEnd as num).toInt();
    List<int> from =
        ((candidate.from as Iterable?) ?? const <int>[])
            .map((value) => (value as num).toInt())
            .toList();

    return VectorUpsert(
      id: "$idPrefix$index",
      content: candidate.fullContent as String,
      metadata: <String, dynamic>{
        "index": index,
        "start": charStart,
        "length": charEnd > charStart ? charEnd - charStart : 0,
        "lod": (candidate.lod as num).toInt(),
        if (from.isNotEmpty) "from": from,
        ...metadata,
      },
    );
  } catch (_) {
    throw ArgumentError.value(
      chunk,
      'chunk',
      'Expected an object compatible with agentic.IChunk.',
    );
  }
}