process method

Perception process(
  1. String input, {
  2. required PerceptionModality modality,
  3. String? id,
  4. double confidence = 1.0,
  5. Map<String, dynamic>? contextData,
})

Processes a raw input string and returns a Perception.

This is Stage 1 of the perceptual pipeline.

Implementation

Perception process(
  String input, {
  required PerceptionModality modality,
  String? id,
  double confidence = 1.0,
  Map<String, dynamic>? contextData,
}) {
  final features = _extractor.extract(input);
  final valence = _extractor.detectEmotionalValence(features.emotionalCues);
  final intensity = _extractor.estimateEmotionalIntensity(input);

  final featureMap = {
    ...features.toProperties(),
    'emotional_valence': valence.name,
    'emotional_intensity': intensity,
    if (contextData != null) ...contextData,
  };

  final perception = Perception(
    id: id ?? const Uuid().v4(),
    rawInput: input,
    modality: modality,
    confidence: confidence,
    features: featureMap,
  );

  _buffer.add(perception);

  _logger.debug(
      'Processed [${modality.name}]: "${_trunc(input)}" '
      '(entities: ${features.entities.length}, '
      'emotional: ${valence.name})');

  return perception;
}