[project] name = "opencompany-cli" version = "0.3.1" description = "OpenCompany project supervisor CLI (company)." requires-python = ">=3.12" dependencies = [ "typer>=0.12", "rich>=13", "anyio>=4", "psutil>=6", # OS-native user data / cache / config / log dirs. Soft dependency # in the CLI (``cli/platform_.py`` imports it inside a try/except # and falls back to a stdlib implementation if the wheel isn't # available) so ``company clean`` / ``company build`` still work # immediately after a wipe, before ``pip install`` has had a # chance to materialise it. "platformdirs>=4.0", # Required on Windows for the supervisor's Job Object (cli/tree.py). # Without it, child processes survive abnormal supervisor exit # (SIGKILL, BSOD, console close) and accumulate as orphans across # dev restarts. Floor 308 is the first release shipping prebuilt # wheels for Python 3.13. "pywin32>=308; platform_system == 'Windows'", ] [project.scripts] company = "cli.cli:app" # Deprecated compatibility alias. New documentation and installs use # ``company``; keep this entry point so existing automation keeps working. machina = "cli.cli:app" [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["cli"] # The CLI runs under the user's global / pipx-managed Python — it is # NOT a uv-managed project. ``managed = false`` tells ``uv`` to leave # this project alone: ``uv sync`` at the repo root is a no-op, no # ``/.venv/`` is created, ``python`` on PATH resolves to the # user's global interpreter instead of being shadowed by a workspace # venv. The server is the only uv-managed project (``server/.venv``). [tool.uv] managed = false [dependency-groups] dev = [] # ``opencompany-cli`` is a standalone Python CLI package -- installable # via ``pipx install .`` / ``pip install .`` against any Python >=3.12 # without involving uv. It depends on nothing from ``server/``. The # server has its own uv-managed venv at ``server/.venv``; the CLI # invokes server-side commands by shelling out via ``cli.run.uv_run`` # (which runs ``uv run --no-sync ...`` with ``cwd=server/`` so uv # discovers ``server/pyproject.toml`` and activates ``server/.venv``). # Keeping the CLI independent of the uv workspace means contributors # can install / run / debug ``company`` on whatever interpreter is on # PATH -- no per-checkout venv activation required.