Skip to main content

Sirji messaging protocol implementation to create, validate and parse messages.

Project description

Sirji Logo

Sirji is an Open Source AI Software Development Agent.

Built with ❤️ by True Sparrow

GitHub License GitHub commit activity GitHub Issues or Pull Requests PyPI sirji-messages

GitHub Repo stars GitHub forks GitHub watchers

Sirji Messages

sirji-messages is a PyPI package that implements the Sirji message protocol with following highlights:

  • Message Factory
  • Permissions Matrix (for defining message actions allowed between two agents)
  • System prompt generation

Installation

Setup Virtual Environment

We recommend setting up a virtual environment to isolate Python dependencies, ensuring project-specific packages without conflicting with system-wide installations.

python3 -m venv venv
source venv/bin/activate

Install Package

Install the package from PyPi:

pip install sirji-messages

Usage

Message Parsing

Parse structured message strings into Python dictionaries for easy access to the message components.

from sirji_messages import message_parse

# Example message string to parse
message_str = """```
FROM: CODER
TO: USER
ACTION: INFORM
DETAILS: Welcome to sirji-messages. Here's how you can start.
```"""

# Parsing the message
message = message_parse(message_str)
print(message)

Permission Validation

Determine if a specified action is allowed between two agents based on predefined permission rules.

from sirji_messages import permissions_dict, validate_permission, AgentEnum

# Example check if a CODER can QUESTION a USER
is_allowed = validate_permission("CODER", "USER", "QUESTION")
print(f"Is allowed: {is_allowed}")

# Get a direct look at permissions dictionary for CODER sending to USER
print(permissions_dict[(AgentEnum.CODER, AgentEnum.SIRJI_USER)])

Handling Custom Exceptions

Efficiently manage parsing and validation errors with custom exceptions for improved error handling and debugging.

from sirji_messages import MessageParsingError, MessageValidationError, message_parse

try:
    # Attempt parsing an incorrectly formatted message
    message_parse("INCORRECT_FORMAT")
except MessageParsingError as e:
    print(f"Parsing Error: {e}")
except MessageValidationError as e:
    print(f"Validation Error: {e}")

Enums for Intuitive References

Use enums (ActionEnum, AgentEnum) to reference actions and agent types programmatically, enhancing code clarity and reducing errors.

from sirji_messages import ActionEnum, AgentEnum

# Example usage of enums for action and agent reference
action = ActionEnum.ACKNOWLEDGE
agent = AgentEnum.CODER

# Accessing enum properties
print(f"Action: {action.name}, Agent: {agent.full_name}")

# Access to enums using [] is also possible
action = ActionEnum['ACKNOWLEDGE']
agent = AgentEnum['CODER']

Factories for Dynamic Message and Prompt Creation

Utilize factories (MessageFactory, AgentSystemPromptFactory) to instantiate message and prompt classes dynamically based on enums. It simplifies creating custom messages or retrieving specific system prompts without hardcoding class names.

from sirji_messages import MessageFactory, ActionEnum, AgentSystemPromptFactory, AgentEnum

# Message class instantiation from an action enum
message_class = MessageFactory[ActionEnum.INFORM.name]
print(f"Sample INFORM message:\n{message_class().sample()}")

# Generate message using passed template variables
generated_messages = message_class().generate({"details": "Some sample information."})
print(f"Generated INFORM message:\n{generated_messages}")

# System prompt class instantiation from an agent enum
prompt_class = AgentSystemPromptFactory[AgentEnum.CODER.name]
print(f"CODER system prompt: {prompt_class().system_prompt()}")

For Contributors

  1. Fork and clone the repository.
  2. Create and activate the virtual environment as described above.
  3. Install the package in editable mode by running the following command from repository root:
pip install -e .

Running Tests and Coverage Analysis

Follow the above mentioned steps for "contributors", before running the test cases.

# Install testing dependencies
pip install pytest coverage

# Execute tests
pytest

# Measure coverage, excluding test files
coverage run --omit="tests/*" -m pytest
coverage report

License

Distributed under the MIT License. See LICENSE for more information.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sirji_messages-0.0.17.tar.gz (20.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sirji_messages-0.0.17-py3-none-any.whl (37.3 kB view details)

Uploaded Python 3

File details

Details for the file sirji_messages-0.0.17.tar.gz.

File metadata

  • Download URL: sirji_messages-0.0.17.tar.gz
  • Upload date:
  • Size: 20.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for sirji_messages-0.0.17.tar.gz
Algorithm Hash digest
SHA256 00a3bb1e0bd8ab0f93e688158f4b1ed9b25cbbe576270924c1786444dab512b6
MD5 9bb7f904ce57f898cf63ab1d3cc43b4e
BLAKE2b-256 1ceb62799a4c57246d486a1cbc0eb18ab08b62d28f1ea0c90f4031b78ef7c9c7

See more details on using hashes here.

File details

Details for the file sirji_messages-0.0.17-py3-none-any.whl.

File metadata

File hashes

Hashes for sirji_messages-0.0.17-py3-none-any.whl
Algorithm Hash digest
SHA256 275bdd090a5f20657fc17e0a26dda498f261b0a8a09002c6dbd56d33d2a40bc6
MD5 a16de181cb2e18ff9f901ab2a18a512e
BLAKE2b-256 509c2f96f81464730bac8efb074e99405a6e1e8d975e9334f7b9f523c4b824b6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page