[build-system] requires = ["setuptools>=68.0", "wheel"] build-backend = "setuptools.build_meta" [project] name = "tera-pilot" version = "2.5.0" description = """\ Tera Pilot v2.5.0 — TUI-first, local-first coding agent with multi-provider support, MCP, multi-agent Heavy Code mode, Office Worker section, controlled backend integrations, optional Rust native acceleration (sandbox / circuit breaker / compaction / interjection), v2 agent runtime (asyncio ChatStateActor + three-tier compaction + sub-agent v2 with toolset-level read-only guarantee), multi-provider consensus engine (G15), signed Ed25519 audit trail (G16), automatic learning loop (G17), web search/fetch with a read-only 'researcher' subagent role (G18), and a browser-based Web UI served by a plain HTTP server (replaces the legacy PySide6 / QWebEngineView desktop GUI).""" readme = "README.md" license = { file = "LICENSE" } authors = [ { name = "Tera Pilot Contributors" } ] keywords = [ "ai", "ide", "agent", "llm", "tera-pilot", "macos", "apple-silicon", "rust", "pyo3", "sandbox", "landlock", ] classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Topic :: Software Development :: Code Generators", "Topic :: Software Development :: IDEs", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Rust", "Operating System :: MacOS :: MacOS X", "Operating System :: POSIX :: Linux", "Environment :: Web Environment", ] requires-python = ">=3.11" dependencies = [ # v2.2.4: GUI is served by a plain HTTP server (tera_pilot.web_server). # No Qt / PySide6 dependency — point a browser at the printed URL. # Utils "pydantic>=2.7.0", "toml>=0.10.2", "pyyaml>=6.0", "pygments>=2.18.0", "rich>=13.7.0", # Office Worker section — built-from-scratch Python wrapper over docx/xlsx/pptx "python-docx>=1.1.0", "openpyxl>=3.1.0", "python-pptx>=0.6.23", # v2.0: cryptography for EncryptedPromptStore (ChaCha20-Poly1305). # Optional — falls back to XOR if not installed (loud warning logged). "cryptography>=42.0.0", # HTTP client (used by providers, daemon, web search) "requests>=2.31.0", "aiohttp>=3.9.0", # AI provider SDKs "anthropic>=0.28.0", "openai>=1.30.0", "groq>=0.9.0", # TUI (Textual framework) "textual>=0.60.0", ] [project.optional-dependencies] # v2.2.0: the macOS optional group is now empty — the transparent-titlebar # styling was a Qt/Cocoa feature that no longer applies. Kept as an empty # list so existing `pip install tera-pilot[macos]` invocations don't error. macos = [] # v2.0: optional Rust native acceleration. When installed (via maturin), # `tera_pilot_native` extension is available and used automatically by # `tera_pilot.agent.native`. Without it, pure-Python fallbacks are used. native = [ # Built and installed via maturin from tera-pilot-native/pyo3/. # We don't ship a wheel here — users build it themselves: # cd tera-pilot-native && maturin develop --release # (Listing maturin as a dev dependency instead.) ] dev = [ "pytest>=8.0", "pytest-asyncio>=0.23", "black>=24.0", "mypy>=1.10", # v2.0: for building the Rust native extension. "maturin>=1.7.0", ] [project.urls] Homepage = "https://github.com/ilyaosovskoi/tera-pilot" Repository = "https://github.com/ilyaosovskoi/tera-pilot" Issues = "https://github.com/ilyaosovskoi/tera-pilot/issues" Documentation = "https://github.com/ilyaosovskoi/tera-pilot#readme" [project.scripts] tera-pilot = "tera_pilot.cli:main" tera-pilot-tui = "tera_pilot_tui.__main__:main" # v2.0: ACP server entry point (for IDE integration via Agent Client Protocol). tera-pilot-acp = "tera_pilot.agent.acp_server:cli_main" # v2.0: Remote agent daemon — run tasks on server with HTTP API + SSE + messengers. tera-pilot-daemon = "tera_pilot.daemon:main" # v2.5.0: IDE bridge server for editor extensions (localhost, token auth). tera-pilot-bridge = "tera_pilot.ide_bridge:main" [tool.pytest.ini_options] # The eval/ directory ships clean-copy fixture repos whose test_*.py # files are workspace-local (they import modules that only exist inside # the task's own repo) — never collect them as project tests. testpaths = ["tests"] [tool.setuptools.packages.find] include = ["tera_pilot*", "tera_pilot_tui*"] [tool.setuptools.package-data] tera_pilot = [ "assets/*", "assets/**/*", "web/*", "web/**/*", "skills/*", "skills/**/*", "agent/templates/*", ] tera_pilot_tui = [ "*.tcss", "backend_report_schema.json", ] # ── py2app configuration for .dmg builds (DISABLED in v2.2.0) ─────────── # The Qt / PySide6 desktop GUI was removed in v2.2.0 — py2app packaging # is no longer applicable. The Web UI ships as plain HTML/CSS/JS served # by tera_pilot.web_server, so no special packaging is needed. # [tool.py2app] # app = ["tera_pilot/__main__.py"] # iconfile = "assets/logo.icns" # bundle-identifier = "io.tera_pilot.app" # name = "Tera Pilot" # version = "2.4.1" # excludes = ["tkinter", "test", "tests", "unittest"] # resources = ["assets", "tera_pilot/web"] # plist-file = "Info.plist"