# Copyright 2026 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

from enum import Enum


class ComplianceStep(str, Enum):
    """Pipeline state machine for contract compliance processing.
    
    Each contract moves through these states as it progresses through
    the multi-agent pipeline. Using str+Enum ensures JSON serialization
    compatibility with ADK's session state.
    
    State transitions:
        INGESTED → EXTRACTED → COMPLIANCE_PENDING → COMPLIANCE_COMPLETE → APPROVED
                                                                       → REVIEW_READY
                                    → MANUAL_REVIEW (on timeout/failure)
    """
    INGESTED = "INGESTED"                    # Contract uploaded, awaiting extraction
    EXTRACTED = "EXTRACTED"                   # Fields extracted, ready for compliance check
    COMPLIANCE_PENDING = "COMPLIANCE_PENDING" # A2A task sent to Go agent, awaiting result
    COMPLIANCE_COMPLETE = "COMPLIANCE_COMPLETE" # Go agent returned compliance verdict
    MANUAL_REVIEW = "MANUAL_REVIEW"          # Timeout/error — routed for human review
    REVIEW_READY = "REVIEW_READY"            # Compliance failed — flagged for legal review
    APPROVED = "APPROVED"                    # Compliance passed — contract approved

