thinkingBudgetForLevel function

int thinkingBudgetForLevel(
  1. String? level, [
  2. Map<String, int>? customBudgets
])

pi's thinkingBudgetForLevel: merged-map lookup on the clamped level.

null level → 0. Our extension: pi never calls with null because its callers gate on thinking being requested; here a null level means "no thinking requested" and a zero budget is exactly the no-op that makes adjustMaxTokensForThinking an identity. Unknown level → ArgumentError, the same crash pi's ! produces on a missing key, with a readable message.

Implementation

int thinkingBudgetForLevel(String? level, [Map<String, int>? customBudgets]) {
  if (level == null) return 0;
  final budgets = {...defaultThinkingBudgets, ...?customBudgets};
  final budget = budgets[clampThinkingLevel(level)];
  if (budget == null) {
    throw ArgumentError.value(level, 'level', 'unknown thinking level');
  }
  return budget;
}