Files
routstr-core/routstr/upstream/__init__.py
T
redshift dd9ccc95a6 feat(systemone): add TypeSafe System One decision endpoint
Support POST /v1/systemone -- `{state, model, questions}` ->
`{answers, usage}` -- as a first-class Routstr endpoint with a dedicated
upstream provider.

- routstr/upstream/typesafe.py: new TypeSafeUpstreamProvider with a fixed
  base URL, a priced model catalog assembled from TypeSafe's
  pricing-less GET /v1/models, and fail-closed catalog errors.
- Register the provider and seed it from TYPESAFE_API_KEY.
- proxy: admit POST systemone and route it through the response-usage
  settlement branch (plus the X-Cashu gate) so ecash payments are charged
  from usage instead of being served free.
- Document the endpoint and add unit + end-to-end integration coverage.

SYSTEMONE_TYPESAFE.md records the change set and test report.
2026-09-19 16:19:18 +00:00

42 lines
1.3 KiB
Python

from .anthropic import AnthropicUpstreamProvider
from .azure import AzureUpstreamProvider
from .base import BaseUpstreamProvider
from .fireworks import FireworksUpstreamProvider
from .gemini import GeminiUpstreamProvider
from .generic import GenericUpstreamProvider
from .groq import GroqUpstreamProvider
from .ollama import OllamaUpstreamProvider
from .openai import OpenAIUpstreamProvider
from .openrouter import OpenRouterUpstreamProvider
from .perplexity import PerplexityUpstreamProvider
from .ppqai import PPQAIUpstreamProvider
from .routstr import RoutstrUpstreamProvider
from .tinfoil import TinfoilUpstreamProvider
from .typesafe import TypeSafeUpstreamProvider
from .xai import XAIUpstreamProvider
upstream_provider_classes: list[type[BaseUpstreamProvider]] = [
AnthropicUpstreamProvider,
AzureUpstreamProvider,
FireworksUpstreamProvider,
GeminiUpstreamProvider,
GenericUpstreamProvider,
GroqUpstreamProvider,
OllamaUpstreamProvider,
OpenAIUpstreamProvider,
OpenRouterUpstreamProvider,
PerplexityUpstreamProvider,
PPQAIUpstreamProvider,
RoutstrUpstreamProvider,
TinfoilUpstreamProvider,
TypeSafeUpstreamProvider,
XAIUpstreamProvider,
]
"""List of all upstream classes"""
__all__ = [
"BaseUpstreamProvider",
*[cls.__name__ for cls in upstream_provider_classes],
"upstream_provider_classes",
]