Skip to main content

Python SDK for WyseOS

Project description

English | 中文

WyseOS SDK for Python

Official Python SDK for WyseOS session protocol and real-time task execution.

Highlights

  • HTTP + WebSocket workflow aligned with docs/wyse-session-protocol.md
  • CreateSessionRequest(task, mode, platform, extra)
  • API Key and JWT dual authentication
  • TaskRunner for automated and interactive execution
  • Product analysis: create product, poll status, get report (ProductService)
  • Marketing rich-stream support (marketing_tweet_reply, marketing_tweet_interact, writer_twitter)
  • Marketing data APIs and dashboard APIs

Architecture

flowchart LR
    App[User App] --> Client[Client]
    Client --> Session[SessionService]
    Client --> Product[ProductService]
    Client --> Marketing[MarketingService]
    Client --> Upload[FileUploadService]
    Session --> HTTP[HTTP API]
    Product --> HTTP
    Marketing --> HTTP
    Upload --> HTTP
    Session --> Runner[TaskRunner]
    Runner --> WS[WebSocketClient]
    WS --> WSS[WebSocket]

Repository Structure

__pycache__ directories are runtime artifacts and are omitted below.

wyseos
├── __init__.py                 # Package entry
└── mate                        # Core SDK module
    ├── __init__.py             # Public module exports
    ├── client.py               # Top-level client and service wiring
    ├── config.py               # Config loading and parsing
    ├── constants.py            # Shared protocol/API constants
    ├── errors.py               # SDK exception definitions
    ├── factory.py              # Client/task-runner constructors
    ├── models.py               # Request/response data models
    ├── plan.py                 # Plan-related message models
    ├── services                # Domain service layer
    │   ├── __init__.py         # Service exports
    │   ├── agent.py            # Agent APIs
    │   ├── browser.py          # Browser APIs
    │   ├── file_upload.py      # File upload and validation APIs
    │   ├── marketing.py        # Marketing dashboard APIs
    │   ├── product.py          # Product analysis APIs
    │   ├── session.py          # Session lifecycle and message APIs
    │   ├── team.py             # Team APIs
    │   └── user.py             # User and API key APIs
    ├── task_runner.py          # Automated/interactive task execution loop
    └── websocket.py            # WebSocket transport client

Installation

pip install wyseos-sdk

See full install guide: installation.md.

Quick Start

from wyseos.mate import Client, ClientOptions, create_task_runner
from wyseos.mate.models import CreateSessionRequest
from wyseos.mate.task_runner import TaskExecutionOptions, TaskMode
from wyseos.mate.websocket import WebSocketClient

# 1) Initialize client
client = Client(ClientOptions(
    api_key="your-api-key",             # or jwt_token="your-jwt-token" (pick one)
    base_url="https://api.wyseos.com",  # required
    timeout=30,                         # optional, default 30s
))

# 2) Create session (latest protocol fields)
req = CreateSessionRequest(
    task="Draft a Twitter launch campaign for my product",
    mode="marketing",
    platform="api",
    extra={"marketing_product": {"product_id": "prod_123"}},
)
session = client.session.create(req)
session_info = client.session.get_info(session.session_id)

# 3) Connect websocket + task runner
ws_client = WebSocketClient(
    base_url=client.base_url,
    api_key=client.api_key or "",
    jwt_token=client.jwt_token or "",
    session_id=session_info.session_id,
)
task_runner = create_task_runner(ws_client, client, session_info)

# 4) Execute interactive session (recommended for marketing input loops)
task_runner.run_interactive_session(
    initial_task="Generate 3 tweet drafts and 5 candidate replies",
    task_mode=TaskMode.Marketing,
    extra=req.extra,
    options=TaskExecutionOptions(
        auto_accept_plan=False,
        verbose=True,
        stop_on_x_confirm=True,
        completion_timeout=600,
    ),
)

More examples: examples/quickstart.md and examples/getting_started/example.py.

Product Analysis

Create a product, poll until analysis completes, and get the full report — no WebSocket needed.

from wyseos.mate import Client, ClientOptions

client = Client(ClientOptions(
    api_key="your-api-key",
    base_url="https://api.wyseos.com",
))

report = client.product.create_and_wait(
    product="Notion",                       # product name or URL
    on_poll=lambda attempt, status: print(f"[{attempt}] {status}"),
)

print(report.product_name)
print(report.target_description)
print(report.keywords)
print(report.competitors)
print(report.user_personas)
print(report.recommended_campaigns)

Lower-level methods are also available:

from wyseos.mate.models import CreateProductRequest

# Step 1: create
created = client.product.create(CreateProductRequest(product="Notion"))

# Step 2: poll
info = client.product.get_info(created.product_id)

# Step 3: get report
report = client.product.get_report(info.analysis_result.report_id)

# Optional: industry categories
categories = client.product.get_categories()

Full example: examples/product_analysis/example.py.

Authentication

Use one of the following in ClientOptions / mate.yaml:

  • api_key
  • jwt_token

Behavior:

  • HTTP:
    • api_key -> x-api-key
    • jwt_token -> Authorization
  • WebSocket URL query:
    • ?api_key=...
    • ?authorization=...

Session Protocol Flow

Typical flow:

  1. client.session.create(...) to get session_id
  2. Connect WebSocketClient
  3. Send start
  4. Receive plan / input / progress / rich / text
  5. Receive task_result
  6. Optionally receive follow_up_suggestion

For full message schema and rich types, see docs/wyse-session-protocol.md.

Task Runner API

TaskRunner is created via:

task_runner = create_task_runner(ws_client, client, session_info)

Main methods:

  • run_task(task, attachments=None, task_mode=TaskMode.Default, extra=None, options=None) -> TaskResult
  • run_interactive_session(initial_task, attachments=None, task_mode=TaskMode.Default, extra=None, options=None)

TaskExecutionOptions includes:

  • verbose (default: False) — print status/progress to stdout
  • auto_accept_plan — auto-approve plan without user input
  • capture_screenshots
  • stop_on_x_confirm — stop session when browser confirmation is requested (useful in CLI)
  • completion_timeout

Marketing APIs

Session-scoped generated content:

client.session.get_marketing_data(session_id, type="reply")
client.session.get_marketing_data(session_id, type="like")
client.session.get_marketing_data(session_id, type="retweet")
client.session.get_marketing_data(session_id, type="tweet")

Dashboard APIs:

client.marketing.get_product_info(product_id)
client.marketing.get_report_detail(report_id)
client.marketing.update_report(report_id, data)
client.marketing.get_research_tweets(query_id)

Services Overview

  • client.user - API keys
  • client.team - team list/info
  • client.agent - agent list/info
  • client.session - create/info/messages/marketing data
  • client.browser - browser APIs
  • client.file_upload - upload and validation
  • client.product - product analysis (create/poll/report/categories)
  • client.marketing - dashboard marketing APIs

Error Types

  • APIError
  • NetworkError
  • WebSocketError
  • ConfigError
  • SessionExecutionError

Documentation

  • Session Protocol: docs/wyse-session-protocol.md
  • Product API: docs/api-product-create.md
  • Quick Start: examples/quickstart.md
  • Installation: installation.md
  • Marketing Example: examples/getting_started/example.py
  • Product Analysis Example: examples/product_analysis/example.py

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

wyseos_sdk-0.3.2.tar.gz (37.1 kB view details)

Uploaded Source

Built Distribution

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

wyseos_sdk-0.3.2-py3-none-any.whl (41.5 kB view details)

Uploaded Python 3

File details

Details for the file wyseos_sdk-0.3.2.tar.gz.

File metadata

  • Download URL: wyseos_sdk-0.3.2.tar.gz
  • Upload date:
  • Size: 37.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.0

File hashes

Hashes for wyseos_sdk-0.3.2.tar.gz
Algorithm Hash digest
SHA256 a7cb1306ca6fb8633cc84ea0fd2ac784f75e6d65a374631a82589b442df5d315
MD5 e7f91c7167329a3218f2daf192eb8c1c
BLAKE2b-256 927b1a3732338e8ed0bed07d37a93042e3a36c04d1f049bd6a529a4eb1d4e2e5

See more details on using hashes here.

File details

Details for the file wyseos_sdk-0.3.2-py3-none-any.whl.

File metadata

  • Download URL: wyseos_sdk-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 41.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.0

File hashes

Hashes for wyseos_sdk-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 68fc6c93bbafb8adda8c071b3806195cce3bae9abcba2cad40d8ae05794511c2
MD5 e94e80917a1c807fd9aeda3ccc511ea4
BLAKE2b-256 06a3744a2ec7d1ce4123cead979566a37a2db686a4220a9b35248e9a79363865

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