def parse_history()

in aidial_assistant/utils/state.py [0:0]


def parse_history(history: list[Message]) -> list[ScopedMessage]:
    messages: list[ScopedMessage] = []
    for index, message in enumerate(history):
        if message.role == Role.ASSISTANT:
            invocations = _get_invocations(message.custom_content)
            for invocation in invocations:
                messages.append(
                    ScopedMessage(
                        scope=MessageScope.INTERNAL,
                        message=assistant_message(
                            _convert_old_commands(invocation["request"])
                        ),
                        user_index=index,
                    )
                )
                messages.append(
                    ScopedMessage(
                        scope=MessageScope.INTERNAL,
                        message=user_message(invocation["response"]),
                        user_index=index,
                    )
                )

            messages.append(
                ScopedMessage(
                    message=assistant_message(message.content or ""),
                    user_index=index,
                )
            )
        elif message.role == Role.USER:
            messages.append(
                ScopedMessage(
                    message=user_message(message.content or ""),
                    user_index=index,
                )
            )
        elif message.role == Role.SYSTEM:
            messages.append(
                ScopedMessage(
                    message=system_message(message.content or ""),
                    user_index=index,
                )
            )
        else:
            raise RequestParameterValidationError(
                f"Role {message.role} is not supported.", param="messages"
            )

    return messages