toPromptString method

String toPromptString()

Format this element as a human-readable string for the LLM prompt.

Implementation

String toPromptString() {
  final buffer = StringBuffer();

  // Type prefix
  final typeStr = switch (type) {
    UiElementType.button => '[Button]',
    UiElementType.textField => '[TextField]',
    UiElementType.header => '[Header]',
    UiElementType.slider => '[Slider]',
    UiElementType.link => '[Link]',
    UiElementType.checkbox => '[Checkbox]',
    UiElementType.toggle => '[Toggle]',
    UiElementType.scrollable => '[Scrollable]',
    UiElementType.image => '[Image]',
    UiElementType.text => '[Text]',
    UiElementType.unknown => '',
  };

  buffer.write('$typeStr "$label"');

  if (value != null && value!.isNotEmpty) {
    buffer.write(' (value: "$value")');
  }

  if (isChecked != null) {
    buffer.write(isChecked! ? ' [checked]' : ' [unchecked]');
  }

  if (!isEnabled) {
    buffer.write(' [disabled]');
  }

  if (availableActions.isNotEmpty) {
    buffer.write(' {${availableActions.join(', ')}}');
  }

  if (parentLabels.isNotEmpty) {
    buffer.write(' in context: [${parentLabels.join(', ')}]');
  }

  return buffer.toString();
}