// Code generated by "stringer -type=State -trimprefix=State"; DO NOT EDIT.

package loop

import "strconv"

func _() {
	// An "invalid array index" compiler error signifies that the constant values have changed.
	// Re-run the stringer command to generate them again.
	var x [1]struct{}
	_ = x[StateUnknown-0]
	_ = x[StateReady-1]
	_ = x[StateWaitingForUserInput-2]
	_ = x[StateSendingToLLM-3]
	_ = x[StateProcessingLLMResponse-4]
	_ = x[StateEndOfTurn-5]
	_ = x[StateToolUseRequested-6]
	_ = x[StateCheckingForCancellation-7]
	_ = x[StateRunningTool-8]
	_ = x[StateCheckingGitCommits-9]
	_ = x[StateRunningAutoformatters-10]
	_ = x[StateCheckingBudget-11]
	_ = x[StateGatheringAdditionalMessages-12]
	_ = x[StateSendingToolResults-13]
	_ = x[StateCancelled-14]
	_ = x[StateBudgetExceeded-15]
	_ = x[StateError-16]
}

const _State_name = "UnknownReadyWaitingForUserInputSendingToLLMProcessingLLMResponseEndOfTurnToolUseRequestedCheckingForCancellationRunningToolCheckingGitCommitsRunningAutoformattersCheckingBudgetGatheringAdditionalMessagesSendingToolResultsCancelledBudgetExceededError"

var _State_index = [...]uint8{0, 7, 12, 31, 43, 64, 73, 89, 112, 123, 141, 162, 176, 203, 221, 230, 244, 249}

func (i State) String() string {
	if i < 0 || i >= State(len(_State_index)-1) {
		return "State(" + strconv.FormatInt(int64(i), 10) + ")"
	}
	return _State_name[_State_index[i]:_State_index[i+1]]
}
