mirror of
https://github.com/andrewyng/openworker.git
synced 2026-09-03 04:49:26 +00:00
requires-python declares >=3.10 and the README says "Python 3.10+", but coworker/config.py imports tomllib at module top and tomllib only landed in the 3.11 stdlib — on 3.10 the package cannot even be imported (every test module fails collection through the coworker.config import chain), so the advertised floor is broken in practice. Fall back to the tomli package (the pre-stdlib implementation of the same API) and declare it as a dependency only for python_version < '3.11', so 3.11+ installs are unchanged. Verified on 3.10: importing coworker.config and load_config() parsing a workspace config.toml both work through the fallback; the config suite still passes on 3.12. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
67 lines
2.9 KiB
TOML
67 lines
2.9 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
|
|
"google-auth>=2.23", # Vertex credentials (service account / ADC / MaaS bearer)
|
|
"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,<2", # MCP client (stdio + streamable-http); 2.0 removed streamablehttp_client
|
|
"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'",
|
|
# tomllib landed in the 3.11 stdlib; on the 3.10 floor config.py falls back to tomli.
|
|
"tomli>=2; python_version < '3.11'",
|
|
]
|
|
|
|
[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"]
|
|
# AWS Bedrock provider (lazy-imported; desktop builds bundle it, pip users opt in).
|
|
bedrock = ["boto3>=1.34"]
|
|
|
|
[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"
|