plexus.cli.score_chat.graphql_service module

GraphQL-based implementation of the Plexus score chat service.

This module provides chat functionality that works with the GraphQL API instead of Celery, while preserving all file-editing capabilities.

class plexus.cli.score_chat.graphql_service.GraphQLChatService(session_id: str | None = None, scorecard: str | None = None, score: str | None = None, experiment_id: str | None = None, message_callback: Callable[[str], None] | None = None)

Bases: ScoreChatService

Chat service that uses GraphQL API for persistence and messaging.

Initialize the GraphQL chat service.

Args:

session_id: Existing chat session ID, or None to create new scorecard: Optional scorecard identifier for new sessions score: Optional score identifier for new sessions experiment_id: Optional experiment ID to associate session with message_callback: Optional callback for receiving message outputs

__init__(session_id: str | None = None, scorecard: str | None = None, score: str | None = None, experiment_id: str | None = None, message_callback: Callable[[str], None] | None = None)

Initialize the GraphQL chat service.

Args:

session_id: Existing chat session ID, or None to create new scorecard: Optional scorecard identifier for new sessions score: Optional score identifier for new sessions experiment_id: Optional experiment ID to associate session with message_callback: Optional callback for receiving message outputs

async create_session(account_id: str) str

Create a new chat session in the database.

Args:

account_id: Account ID for the session

Returns:

Session ID of the created session

async end_session() Dict[str, Any]

End the chat session and update its status.

Returns:

Updated session data

async process_message_with_graphql(message: str) Dict[str, Any]

Process a user message and return AI response via GraphQL.

Args:

message: User message to process

Returns:

Dictionary with response content and metadata

async send_message(message: str, role: str = 'USER') Dict[str, Any]

Send a message and save it to the database.

Args:

message: Message content role: Message role (USER, ASSISTANT, SYSTEM)

Returns:

Created message data

async plexus.cli.score_chat.graphql_service.create_chat_session(account_id: str, scorecard: str = None, score: str = None, experiment_id: str = None) GraphQLChatService

Create a new chat session.

Args:

account_id: Account ID for the session scorecard: Optional scorecard identifier score: Optional score identifier experiment_id: Optional experiment ID to associate with

Returns:

Initialized GraphQLChatService instance

async plexus.cli.score_chat.graphql_service.resume_chat_session(session_id: str) GraphQLChatService

Resume an existing chat session.

Args:

session_id: ID of the session to resume

Returns:

GraphQLChatService instance connected to the session