Python SDK for the Starlight Protocol - Resilient browser automation through autonomous Sentinels
Project description
Starlight Protocol Python SDK
Python SDK for building Sentinels that connect to the Starlight Protocol Hub.
Installation
pip install starlight-protocol
Quick Start
🚀 New in v1.3.0: 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file starlight_protocol-1.3.1.tar.gz.
File metadata
- Download URL: starlight_protocol-1.3.1.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
079b1cb0c0a7fb4ea6b53afb07e214ec9e3d31bf1bcb3288f61d48e68a3b03c8
|
|
| MD5 |
e8e6493918c5712e90aef2959331fe64
|
|
| BLAKE2b-256 |
997461aa40aafeb4caff85c82b78da524b34eacb9778bccbc045e7ec37ead008
|
File details
Details for the file starlight_protocol-1.3.1-py3-none-any.whl.
File metadata
- Download URL: starlight_protocol-1.3.1-py3-none-any.whl
- Upload date:
- Size: 7.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2b33978f96ae8cf004e65e480567fe2a9645d9f5e617e39cccf13615161ad3d1
|
|
| MD5 |
fc1558883b6d7793b647b4b05dac4b24
|
|
| BLAKE2b-256 |
97a27520fc75e23c83c33f18ce954915370a51bf662153d6c5dfe13fd4a89fdb
|