Skip to main content

Python SDK for the Starlight Protocol - Resilient browser automation through autonomous Sentinels

Project description

Starlight Protocol Python SDK

PyPI version License

Python SDK for building Sentinels that connect to the Starlight Protocol Hub.

Installation

pip install starlight-protocol

Quick Start

🚀 New in v1.3 Series: Protocol Resilience & Extended Actions

  • Protocol Resilience: Support for Phase 14 Hub features (Generic Perception, Self-Healing).
  • Extended Commands: Native support for scroll, hover, check/uncheck, select, press, type.
  • Enterprise Security: JWT-ready Sentinel base class.

Create a custom Sentinel in just a few lines:

from starlight_protocol import SentinelBase

class MySentinel(SentinelBase):
    def __init__(self):
        super().__init__(
            layer_name="MySentinel",
            priority=5,
            capabilities=["custom-detection"]
        )
    
    async def on_pre_check(self, params, msg_id):
        # Called before each Hub action
        blocking = params.get("blocking", [])
        
        if self.should_intervene(blocking):
            await self.send_hijack("Custom obstacle detected")
            await self.send_action("click", "#close-button")
            await self.send_resume()
        else:
            await self.send_clear()
    
    def should_intervene(self, blocking):
        # Your custom detection logic
        return any(b.get("className", "").find("custom-modal") >= 0 for b in blocking)

# Run the Sentinel
if __name__ == "__main__":
    sentinel = MySentinel()
    sentinel.run()

Core Classes

SentinelBase

Abstract base class for all Sentinels.

class SentinelBase:
    def __init__(
        self,
        layer_name: str,      # Unique identifier (e.g., "JanitorSentinel")
        priority: int,        # 1-10, lower = higher priority
        uri: str = "ws://localhost:8080",  # Hub WebSocket URL
        capabilities: list = None,  # ["stability", "obstacle-removal", "vision"]
        selectors: list = None,     # CSS selectors to monitor
    )

Methods to Override

Method When Called Purpose
on_pre_check(params, msg_id) Before each Hub action Decide to clear, wait, or hijack
on_message(msg) Any message received Custom message handling

Methods to Call

Method Purpose
send_clear() Signal all-clear to Hub
send_wait(delay_ms, reason) Request Hub to wait
send_hijack(reason) Take exclusive control
send_action(action, selector, **kwargs) Execute browser action during hijack
send_resume(re_check=False) Return control to Hub

Built-in Sentinels

The package includes reference Sentinel implementations:

from starlight_protocol.sentinels import PulseSentinel, JanitorSentinel

# Stability monitoring
pulse = PulseSentinel()
pulse.run()

# Obstacle removal
janitor = JanitorSentinel()
janitor.run()

Protocol Compliance

This SDK implements Starlight Protocol v1.0.0.

Certification

Test your Sentinel with the TCK Validator:

# Start validator
node validator/starlight_validator.js

# Run your Sentinel
python -m starlight_protocol.my_sentinel

Configuration

Sentinels automatically load config.json from the project root:

{
  "sentinel": {
    "reconnectDelay": 3,
    "heartbeatInterval": 2
  },
  "security": {
    "authToken": "your-secret-token"
  }
}

License

MIT - See LICENSE

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

starlight_protocol-1.3.4.tar.gz (7.3 kB view details)

Uploaded Source

Built Distribution

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

starlight_protocol-1.3.4-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

File details

Details for the file starlight_protocol-1.3.4.tar.gz.

File metadata

  • Download URL: starlight_protocol-1.3.4.tar.gz
  • Upload date:
  • Size: 7.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for starlight_protocol-1.3.4.tar.gz
Algorithm Hash digest
SHA256 bc3d2c51d610f873423ea88e95fa390b290b1294a649cce4658d6f485fb5adce
MD5 e0ef33ce6c0a2b36b8fd3460088eb3d3
BLAKE2b-256 57e1a0cc9088c6ce66a1c9a1a7071db9cef83c0051ec4297963a12a08bda890f

See more details on using hashes here.

File details

Details for the file starlight_protocol-1.3.4-py3-none-any.whl.

File metadata

File hashes

Hashes for starlight_protocol-1.3.4-py3-none-any.whl
Algorithm Hash digest
SHA256 a2d98af20d52a872eda4c557c5192663dcfbec47bdc5b1afcaf46ac22531afda
MD5 fcedee186f8abaa43caaa126be356a93
BLAKE2b-256 a967900c77a311201fea34c25b56b92c8f644406f32355e9ef19d9dd6859beeb

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