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.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.14.tar.gz (20.3 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.14-py3-none-any.whl (36.8 kB view details)

Uploaded Python 3

File details

Details for the file sirji-messages-0.0.14.tar.gz.

File metadata

  • Download URL: sirji-messages-0.0.14.tar.gz
  • Upload date:
  • Size: 20.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.10.5

File hashes

Hashes for sirji-messages-0.0.14.tar.gz
Algorithm Hash digest
SHA256 fc837a6076797ea973e783243fa44a3cb91983275dfc74f2b9d804322d1d6884
MD5 769aa7c3107c3c01d9134b1c1e0bda5c
BLAKE2b-256 2825ad63952131e3e01e7041f0fd15093a39ce0d206605b2ba611b9263209d89

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sirji_messages-0.0.14-py3-none-any.whl
Algorithm Hash digest
SHA256 88925c10da08d1505b0f730cc634814e080b6ae52f1db4b8aa5a9d8936b3acb8
MD5 0bc2e6c632f5dd9e56f9afc9d5e40469
BLAKE2b-256 7f8b16b06d9a5b95eaad1b2ea1fa8976f402a25a1bc1dc103c083a3b7fca7258

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