mirror of
https://github.com/superdesigndev/treg.git
synced 2026-10-02 03:24:35 +08:00
public_url/email_from defaults, render.yaml, CLI fallbacks, packaging (npm/plugin/pyproject), web pages (+canonical tag), docs and context fragments all move to https://treg.to. The legacy host keeps serving the FULL API forever — installed CLIs, skill.md files and .mcp.json configs in the wild hold Bearer tokens pointed at it, and HTTP clients strip Authorization on cross-host redirects. Only browser-facing marketing pages 301 to treg.to (new middleware + tests). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
86 lines
3.4 KiB
TOML
86 lines
3.4 KiB
TOML
[project]
|
|
name = "tools-registry"
|
|
version = "0.9.0"
|
|
description = "A remote registry that turns team skills into shareable, callable tools via a credential-injecting proxy."
|
|
readme = "README.md"
|
|
license = { file = "LICENSE" }
|
|
requires-python = ">=3.12,<3.14"
|
|
authors = [
|
|
{ name = "Unclecode", email = "unclecode@superdesign.dev" },
|
|
{ name = "SuperDesign" },
|
|
]
|
|
maintainers = [{ name = "Unclecode", email = "unclecode@superdesign.dev" }]
|
|
keywords = ["registry", "cli", "proxy", "credentials", "secrets", "api", "tools", "agents"]
|
|
classifiers = [
|
|
"Development Status :: 4 - Beta",
|
|
"Environment :: Console",
|
|
"Intended Audience :: Developers",
|
|
"License :: Other/Proprietary License",
|
|
"Operating System :: OS Independent",
|
|
"Programming Language :: Python :: 3.12",
|
|
"Programming Language :: Python :: 3.13",
|
|
"Topic :: Software Development",
|
|
"Topic :: Utilities",
|
|
]
|
|
# Base install = just the CLI. Light + pure-Python, so `pip install tools-registry` (and Homebrew) are
|
|
# fast. Everything needed to RUN a registry server lives in the `[server]` extra below.
|
|
dependencies = [
|
|
"httpx>=0.27",
|
|
"questionary>=2.0",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
# The registry SERVER — host your own. The FastAPI app, the DB drivers, and encryption. Not needed to
|
|
# USE the CLI against a hosted registry, only to RUN one. Install with: pip install "tools-registry[server]"
|
|
server = [
|
|
"fastapi>=0.115",
|
|
"uvicorn[standard]>=0.32",
|
|
"sqlmodel>=0.0.22",
|
|
"sqlalchemy[asyncio]>=2.0",
|
|
"aiosqlite>=0.20",
|
|
"asyncpg>=0.30",
|
|
"cryptography>=43",
|
|
"pydantic-settings>=2.5",
|
|
"pyyaml>=6", # the endpoint catalog's data files (src/treg/catalog/*.yaml) — server-side only
|
|
"stripe>=12", # balance top-ups (src/treg/billing.py) — the payment rail, server-side only
|
|
"mcp>=2", # the MCP front door (src/treg/mcp.py) — server-side only; pulls httpx2 ALONGSIDE
|
|
# httpx (they coexist), so the light CLI's dependency set is untouched
|
|
]
|
|
# The LOCAL PROXY (`treg shell` catching the agent's own outgoing calls). It needs to generate a
|
|
# certificate authority on the machine, and `cryptography` is a compiled package — putting it in the
|
|
# base install would end the light, pure-Python CLI. Install with: pip install "tools-registry[proxy]"
|
|
# A self-hoster already has it through [server]. Everything else the proxy uses is asyncio + ssl from
|
|
# the standard library plus httpx, which is already a base dependency.
|
|
proxy = [
|
|
"cryptography>=43",
|
|
]
|
|
|
|
[project.scripts]
|
|
treg = "treg.cli:main"
|
|
|
|
[project.urls]
|
|
Homepage = "https://treg.to"
|
|
Repository = "https://github.com/superdesigndev/treg"
|
|
Issues = "https://github.com/superdesigndev/treg/issues"
|
|
|
|
[dependency-groups]
|
|
dev = [
|
|
"pytest>=8.3",
|
|
"pytest-asyncio>=0.24",
|
|
"tools-registry[server]", # the test suite imports the server (api, models, …), so dev pulls it in
|
|
]
|
|
|
|
[tool.pytest.ini_options]
|
|
asyncio_mode = "auto"
|
|
|
|
[build-system]
|
|
requires = ["hatchling"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
packages = ["src/treg"]
|
|
# The web/ dir lives inside the treg package, so `packages` already ships every asset
|
|
# (favicon.svg, index.html, tutorial.*, tour/, llms.txt, install.sh) — hatchling includes
|
|
# non-.py data files under a package by default. A force-include here would add each a SECOND
|
|
# time and break the wheel build (`A second file is being added ... at the same path`).
|