mirror of
https://github.com/andrewyng/openworker.git
synced 2026-09-03 04:49:26 +00:00
The Python import namespace (coworker) and the live auth config strings are intentionally unchanged.
62 lines
2.6 KiB
TOML
62 lines
2.6 KiB
TOML
[build-system]
|
|
requires = ["setuptools>=68"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
name = "coworker"
|
|
version = "0.0.0"
|
|
description = "Agent coworker platform — provider-agnostic agentic coworker runtime"
|
|
requires-python = ">=3.10"
|
|
dependencies = [
|
|
"openai>=1.0",
|
|
"anthropic>=0.40", # native Claude Messages API provider
|
|
"google-genai>=1.0", # native Gemini provider
|
|
"textual>=1.0",
|
|
"fastapi>=0.110",
|
|
"uvicorn[standard]>=0.27",
|
|
# aisuite (toolkits/tracing), pinned to the commit this repo was imported from;
|
|
# swap for a PyPI pin ("aisuite>=x.y") once the next aisuite release ships.
|
|
"aisuite @ git+https://github.com/andrewyng/aisuite.git@1b4bbf303ec21968230b1ec869a144d054e9b3c4",
|
|
"docstring_parser",
|
|
"pyyaml>=6", # persona manifest frontmatter (YAML)
|
|
"pydantic>=2",
|
|
"mcp>=1.1", # MCP client (stdio + streamable-http); we use our own async layer on it
|
|
"httpx>=0.27", # sync outbound senders for messaging connectors (send_message tool)
|
|
"websockets>=13", # managed Slack relay client transport (relay_client.py)
|
|
"ddgs>=9", # keyless default web-search provider (DuckDuckGo); Tavily/Brave use httpx
|
|
"croniter>=2", # cron next-fire math for the automation scheduler
|
|
# PDF attachments for models without native PDF support (pdf_support.py):
|
|
# pypdf = pure-python text extraction; pypdfium2 = page rasterization (BSD pdfium,
|
|
# ships its own libpdfium — NOT PyMuPDF, whose AGPL license can't ride in the DMG).
|
|
"pypdf>=5",
|
|
"pypdfium2>=4",
|
|
# IANA tz database for zoneinfo. Windows ships no system tz db, so without this every
|
|
# named schedule timezone (UTC, Asia/Kolkata, …) silently falls back to local time.
|
|
"tzdata; sys_platform == 'win32'",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
dev = ["pytest>=8", "pytest-asyncio", "httpx"]
|
|
# Inbound messaging listeners (outbound send_message needs only httpx, already a core dep).
|
|
# aiohttp is slack-bolt's Socket Mode transport at runtime (and the FakeSlack test harness
|
|
# drives the real handler) — declare it so CI installs it, not just transitively.
|
|
messaging = ["python-telegram-bot>=21", "slack-bolt>=1.18", "aiohttp>=3.9"]
|
|
# Interactive Cowork browser automation.
|
|
browser = ["playwright>=1.44"]
|
|
|
|
[project.scripts]
|
|
openworker = "coworker.cli:main"
|
|
openworker-server = "coworker.server.run:main"
|
|
openworker-connectors = "coworker.connectors.cli:main"
|
|
|
|
[tool.setuptools.packages.find]
|
|
where = ["."]
|
|
include = ["coworker*"]
|
|
|
|
[tool.setuptools.package-data]
|
|
coworker = ["personas/builtin/*.md"]
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|
|
asyncio_mode = "auto"
|