Skip to main content

SDK for building third-party automations for the ToRivers marketplace

Project description

ToRivers SDK

Build and publish automations for the ToRivers marketplace.

Installation

pip install torivers-sdk

Quick Start

Create a new automation:

from torivers_sdk import Automation, AutomationMetadata, BaseState
from langgraph.graph import StateGraph
from typing import Annotated, Any


class MyState(BaseState):
    """State for my automation."""
    result: Annotated[str, lambda l, r: r]


class MyAutomation(Automation[MyState]):
    """A simple automation example."""

    def metadata(self) -> AutomationMetadata:
        return AutomationMetadata(
            name="my-automation",
            title="My Automation",
            version="1.0.0",
            description="Does something useful",
            category="general",
        )

    def get_state_class(self) -> type[MyState]:
        return MyState

    def build_graph(self) -> StateGraph:
        graph = StateGraph(MyState)
        graph.add_node("process", self.process)
        graph.set_entry_point("process")
        graph.set_finish_point("process")
        return graph

    def process(self, state: MyState) -> dict[str, Any]:
        context = state["context"]
        context.log_progress("Processing", "Starting work...")

        # Your automation logic here
        result = f"Processed: {state['input_data']}"

        context.log_success("Done", "Work completed!")
        return {
            "output_data": {
                "_version": 1,
                "_blocks": [
                    {
                        "type": "text",
                        "label": "Result",
                        "content": result,
                        "format": "plain",
                    }
                ],
            }
        }

Testing Locally

Use the local sandbox to test your automation:

import asyncio
from torivers_sdk.testing import LocalSandbox, MockCredentialProxy

async def test_automation():
    sandbox = LocalSandbox()

    # Set up mock credentials if needed
    credentials = MockCredentialProxy(["gmail", "sheets"])
    sandbox.set_credentials(credentials)

    # Run the automation
    automation = MyAutomation()
    result = await sandbox.run(automation, {"query": "test"})

    assert result.success
    print(f"Output: {result.output_data}")

asyncio.run(test_automation())

CLI Commands

# Initialize a new automation project
torivers init my-automation

# Run locally
torivers run --input input.json

# Run tests
torivers test

# Validate before submission
torivers validate

# Submit for review
torivers submit

# Authenticate and track review
torivers login
torivers status

Documentation

For full documentation, visit docs.torivers.com/sdk

Versioning & Releases

This package uses bump-my-version for version management. Install dev dependencies first:

pip install -e ".[dev]"

Bump the version (creates a commit + sdk-v* tag automatically):

bump-my-version bump patch                   # 0.1.0 → 0.1.1
bump-my-version bump minor                   # 0.1.0 → 0.2.0
bump-my-version bump --new-version 0.2.0b5   # Example beta version
bump-my-version bump pre_n                   # Next beta (b1 → b2)
bump-my-version bump pre_l                   # Beta → RC → Stable

Then push to trigger the PyPI publish workflow:

git push && git push --tags

Pre-releases (b/rc tags) are published to PyPI but not installed by default — users must pip install --pre torivers-sdk.

Requirements

  • Python 3.11+
  • Dependencies: langgraph, pydantic, httpx, click, rich, docker, pyyaml

License

Proprietary - see LICENSE for details.

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

torivers_sdk-0.2.0b6.tar.gz (168.1 kB view details)

Uploaded Source

Built Distribution

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

torivers_sdk-0.2.0b6-py3-none-any.whl (160.4 kB view details)

Uploaded Python 3

File details

Details for the file torivers_sdk-0.2.0b6.tar.gz.

File metadata

  • Download URL: torivers_sdk-0.2.0b6.tar.gz
  • Upload date:
  • Size: 168.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for torivers_sdk-0.2.0b6.tar.gz
Algorithm Hash digest
SHA256 86794f3d7d8e30834ee40e7f35e9d3a422369115deea4ef1eb0fbfbbbd48126d
MD5 ea383a211670ab2c19937d78acff6ee2
BLAKE2b-256 ef6a326b5f273f67b3cc7e06b7bf37612f8c6d40935a0d81ecc48871f5c0395b

See more details on using hashes here.

Provenance

The following attestation bundles were made for torivers_sdk-0.2.0b6.tar.gz:

Publisher: sdk-publish.yml on Lo-Agency/torivers-v2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file torivers_sdk-0.2.0b6-py3-none-any.whl.

File metadata

  • Download URL: torivers_sdk-0.2.0b6-py3-none-any.whl
  • Upload date:
  • Size: 160.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for torivers_sdk-0.2.0b6-py3-none-any.whl
Algorithm Hash digest
SHA256 ac339d008e2f8f308a24c80f590bbab380fe99a14beb1e744438b50b2f0ead63
MD5 9065c5578b3cc4d7a8165889ac15783f
BLAKE2b-256 6424bb67d04fa81d976cf1b2b67a142393e90bc4e20d93669f06232b16e1d423

See more details on using hashes here.

Provenance

The following attestation bundles were made for torivers_sdk-0.2.0b6-py3-none-any.whl:

Publisher: sdk-publish.yml on Lo-Agency/torivers-v2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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