pickModelEditValue function

Future<int?> pickModelEditValue(
  1. Future<TuiPromptAnswer?> prompt(
    1. TuiPromptSpec
    ),
  2. bool isContext,
  3. void onResult(
    1. String message
    )
)

Step 2: picks a preset value or enters a custom one (null on cancel).

Implementation

Future<int?> pickModelEditValue(
  Future<TuiPromptAnswer?> Function(TuiPromptSpec) prompt,
  bool isContext,
  void Function(String message) onResult,
) async {
  final presets = isContext
      ? [4096, 8192, 16384, 32768, 65536, 131072, 204800, 1048576]
      : [4096, 8192, 16384, 32768, 65536];
  final result = await prompt(
    AskPromptSpec(
      header: 'Model Edit',
      question: '${isContext ? 'Context window' : 'Max tokens'} size:',
      index: 0,
      total: 1,
      options: [
        for (final p in presets) AskOption(label: formatTokenPreset(p)),
        const AskOption(
          label: 'Custom…',
          description: 'Enter a number manually',
        ),
      ],
    ),
  );
  if (result == null || result is! AskPromptAnswer) return null;
  final picked = result.value.selected.first;
  if (picked != 'Custom…') return parseTokenPreset(picked);
  return _pickCustomTokenValue(prompt, onResult);
}