From 8a87d0033ba5e641727ca40bf7fe5370456a429f Mon Sep 17 00:00:00 2001 From: gabrii Date: Tue, 9 Sep 2025 20:15:19 +0200 Subject: [PATCH] Squash everything befor release. Some past commits might have contained Cursor's IP or accidentally commited API keys. Before making the repository public, all the history has been squashed into a single commit with. --- .cursor/rules/lint-after-edit.mdc | 20 ++ .env.example | 20 ++ .github/dependabot.yml | 16 ++ .github/workflows/lint.yml | 27 +++ .gitignore | 46 +++++ Dockerfile | 42 ++++ LICENSE | 19 ++ README.md | 279 +++++++++++++++++++++++++ app/__init__.py | 4 + app/app.py | 41 ++++ app/auth.py | 25 +++ app/azure/__init__.py | 7 + app/azure/adapter.py | 57 ++++++ app/azure/request_adapter.py | 260 +++++++++++++++++++++++ app/azure/response_adapter.py | 272 ++++++++++++++++++++++++ app/blueprint.py | 106 ++++++++++ app/commands.py | 93 +++++++++ app/common/__init__.py | 1 + app/common/logging.py | 285 ++++++++++++++++++++++++++ app/common/recording.py | 73 +++++++ app/common/sse.py | 265 ++++++++++++++++++++++++ app/settings.py | 30 +++ assets/cursor_chat_config.jpg | Bin 0 -> 47028 bytes assets/cursor_custom_mode.gif | Bin 0 -> 151287 bytes assets/cursor_invalid_model.jpg | Bin 0 -> 18817 bytes assets/cursor_model_config.jpg | Bin 0 -> 102012 bytes autoapp.py | 5 + docker-compose.yml | 41 ++++ pyproject.toml | 11 + recordings/.gitkeep | 0 requirements/dev.txt | 19 ++ requirements/prod.txt | 20 ++ supervisord/gunicorn.conf | 16 ++ supervisord/supervisord.conf | 21 ++ supervisord/supervisord_entrypoint.sh | 8 + tests/__init__.py | 1 + tests/conftest.py | 27 +++ tests/factories.py | 1 + tests/settings.py | 20 ++ tests/test_functional.py | 26 +++ 40 files changed, 2204 insertions(+) create mode 100644 .cursor/rules/lint-after-edit.mdc create mode 100644 .env.example create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/lint.yml create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 LICENSE create mode 100644 README.md create mode 100644 app/__init__.py create mode 100644 app/app.py create mode 100644 app/auth.py create mode 100644 app/azure/__init__.py create mode 100644 app/azure/adapter.py create mode 100644 app/azure/request_adapter.py create mode 100644 app/azure/response_adapter.py create mode 100644 app/blueprint.py create mode 100644 app/commands.py create mode 100644 app/common/__init__.py create mode 100644 app/common/logging.py create mode 100644 app/common/recording.py create mode 100644 app/common/sse.py create mode 100644 app/settings.py create mode 100644 assets/cursor_chat_config.jpg create mode 100644 assets/cursor_custom_mode.gif create mode 100644 assets/cursor_invalid_model.jpg create mode 100644 assets/cursor_model_config.jpg create mode 100755 autoapp.py create mode 100644 docker-compose.yml create mode 100644 pyproject.toml create mode 100644 recordings/.gitkeep create mode 100644 requirements/dev.txt create mode 100644 requirements/prod.txt create mode 100644 supervisord/gunicorn.conf create mode 100644 supervisord/supervisord.conf create mode 100644 supervisord/supervisord_entrypoint.sh create mode 100644 tests/__init__.py create mode 100644 tests/conftest.py create mode 100644 tests/factories.py create mode 100644 tests/settings.py create mode 100644 tests/test_functional.py diff --git a/.cursor/rules/lint-after-edit.mdc b/.cursor/rules/lint-after-edit.mdc new file mode 100644 index 0000000..e4467d0 --- /dev/null +++ b/.cursor/rules/lint-after-edit.mdc @@ -0,0 +1,20 @@ +--- +description: +globs: +alwaysApply: true +--- +# Lint and Format After Edits + +After finishing any big code changes, and before yielding to the user, run with your terminal tool the following comand: + +``` +source .venv/bin/activate && flask lint +``` + +This command will: +- Run **black** to automatically format the codebase. +- Run **flake8** to flag any remaining formatting or lint issues. + +You don't need to preface it with /bin/bash -c, nor add | cat at the end. Just run it as is. + +This ensures the codebase remains clean, consistent, and compliant with style guidelines after every edit. \ No newline at end of file diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..c4a4ea3 --- /dev/null +++ b/.env.example @@ -0,0 +1,20 @@ +# Environment variables for local development +FLASK_APP=autoapp.py +FLASK_DEBUG=1 +FLASK_ENV=development +GUNICORN_WORKERS=1 +LOG_LEVEL=debug +RECORD_TRAFFIC=off + +# Arbitrary API key to protect your service. +SERVICE_API_KEY=change-me + +# Mandatory Azure settings +AZURE_BASE_URL=https://change-me.openai.azure.com +AZURE_API_KEY=change-me +AZURE_DEPLOYMENT=gpt-5 + +# Optional Azure settings +AZURE_API_VERSION= +AZURE_SUMMARY_LEVEL= +AZURE_TRUNCATION= \ No newline at end of file diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..b42162a --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,16 @@ +version: 2 +updates: + - package-ecosystem: "docker" + directory: "/" + schedule: + interval: "daily" + + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "daily" + + - package-ecosystem: "pip" + directory: "/requirements" + schedule: + interval: "daily" diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 0000000..7403979 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,27 @@ +name: Build Status + +on: + - push + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + - name: Set up Python + uses: actions/setup-python@v6 + with: + python-version: "3.13" + - name: Install Python dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements/dev.txt + - run: cp .env.example .env + - name: Run Python lints + run: flask lint --check + - name: Run Python tests + run: flask test + - name: Upload coverage reports to Codecov + uses: codecov/codecov-action@v5 + with: + token: ${{ secrets.CODECOV_TOKEN }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ca8fae1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,46 @@ +# Cache +*.py[cod] +__pycache__/ +.pytest_cache/ + +# C extensions +*.so + +# Packages +*.egg +*.egg-info +build +eggs +parts +bin +var +sdist +develop-eggs +.installed.cfg +lib +lib64 + +# Installer logs +pip-log.txt + +# Unit test / coverage reports +.coverage +htmlcov/ +coverage.xml + +# Complexity +output/*.html +output/*/index.html + +# Virtualenvs +env/ +.venv/ + +# Configuration +.env + +# Recordings +recordings/ + +# Legacy openai backend +backend_openai.py \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..90ca2bf --- /dev/null +++ b/Dockerfile @@ -0,0 +1,42 @@ +# ================================== BUILDER =================================== +ARG INSTALL_PYTHON_VERSION=${INSTALL_PYTHON_VERSION:-PYTHON_VERSION_NOT_SET} + +FROM python:${INSTALL_PYTHON_VERSION}-slim-bullseye AS builder + +WORKDIR /app + +COPY requirements requirements +RUN pip install --no-cache -r requirements/prod.txt + +COPY autoapp.py ./ +COPY app app +COPY .env.example .env + +# ================================= PRODUCTION ================================= +FROM python:${INSTALL_PYTHON_VERSION}-slim-bullseye as production + +WORKDIR /app + +RUN useradd -m sid +RUN chown -R sid:sid /app +USER sid +ENV PATH="/home/sid/.local/bin:${PATH}" + +COPY requirements requirements +RUN pip install --no-cache --user -r requirements/prod.txt + +COPY supervisord/supervisord.conf /etc/supervisor/supervisord.conf +COPY supervisord/gunicorn.conf /etc/supervisor/conf.d/gunicorn.conf + +COPY . . + +EXPOSE 5000 +ENTRYPOINT ["/bin/bash", "supervisord/supervisord_entrypoint.sh"] +CMD ["-c", "/etc/supervisor/supervisord.conf"] + + +# ================================= DEVELOPMENT ================================ +FROM builder AS development +RUN pip install --no-cache -r requirements/dev.txt +EXPOSE 5000 +CMD [ "flask", "run", "--host=0.0.0.0" ] diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..ba45d12 --- /dev/null +++ b/LICENSE @@ -0,0 +1,19 @@ +Copyright 2025 Gabriel Gavilan + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..e424b06 --- /dev/null +++ b/README.md @@ -0,0 +1,279 @@ +# Cursor Azure GPT-5 + +[![Python](https://img.shields.io/badge/Python-3.13-3776AB?logo=python&logoColor=fff)](#) +[![Flask](https://img.shields.io/badge/Flask-009485?logo=flask&logoColor=fff)](#) +[![Pytest](https://img.shields.io/badge/Pytest-fff?logo=pytest&logoColor=000)](#) +[![Docker](https://img.shields.io/badge/Docker-2496ED?logo=docker&logoColor=fff)](#) +![GitHub License](https://img.shields.io/github/license/gabrii/Cursor-Azure-GPT-5) +![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/gabrii/Cursor-Azure-GPT-5/lint.yml?label=lint) +![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/gabrii/Cursor-Azure-GPT-5/lint.yml?label=test) +![Codecov](https://img.shields.io/codecov/c/github/gabrii/Cursor-Azure-GPT-5) + +A service that allows Cursor to use Azure GPT-5 deployments by: + - Adapting incoming Cursor **completions API** requests to the **Responses API** + - Forwarding the requests to Azure + - Adapting outgoing Azure **Responses API** streams into **completions API** streams + +This project originates from Cursor's lack of support for Azure models that are only served through the **Responses API**. It will hopefully become obsolete as Cursor continues to improve its model support. + +## Feature highlights + +- Switching between `high`/`medium`/`low` reasoning effort levels by selecting different models in Cursor. +- Configuring different _reasoning summary_ levels. +- Displaying _reasoning summaries_ in Cursor natively, like any other reasoning model. +- Production-ready, so you can share the service among different users in an organization. +- When running from a terminal, [rich](https://github.com/Textualize/rich) logging of the model's context on every request, including Markdown rendering, syntax highlighting, tool calls/outputs, and more. + +Upcoming features: +- Multimodal: Will be implemented as soon as better testing is in place and there is demand (PRs welcome). +- Multiple models simultaneously: Even Cursor's Azure configuration only supports a single deployment at a time. It would be fairly easy to implement support for multiple models in this service, covering even more needs. +- Full test coverage: See the [Testing](#testing) section for an explanation of the current low coverage. + +Feel free to create or vote on any [project issues](https://github.com/gabrii/Cursor-Azure-GPT-5/issues), and star the project to show your support. + +## Quick start + +If you prefer to deploy the service (for example, to allow multiple members of your team to use it), check the [Production](#production) section, as the project comes with production-ready containers using `supervisord` and `gunicorn`. + +### 1. Service configuration + +Make a copy of the file `.env.example` as `.env` and update the following flags: + +| Flag | Description | Default | +| ------------------ | ---------------------------------------------------------------------------------------------------- | ----------- | +| `AZURE_BASE_URL` | Your Azure OpenAI endpoint base URL (no trailing slash), e.g. `https://.openai.azure.com`. | required | +| `AZURE_API_KEY` | Azure OpenAI API key. | required | +| `AZURE_DEPLOYMENT` | Name of the Azure model deployment to use. | `gpt-5` | +| `SERVICE_API_KEY` | Arbitrary API key to protect your service. Set it to a random string. | `change-me` | + +Alternatively, you can pass them through the environment where you run the application. + +
+Optional Configuration + +| Flag | Description | Default | +| --------------------- | ---------------------------------------------------------------------- | -------------------- | +| `AZURE_API_VERSION` | Azure OpenAI Responses API version to call. | `2025-04-01-preview` | +| `AZURE_SUMMARY_LEVEL` | Reasoning summary level for responses. | `detailed` | +| `AZURE_TRUNCATION` | Truncation strategy for long inputs. | `auto` | +| `FLASK_ENV` | Flask environment. Use `development` for dev or `production` for prod. | `production` | +| `RECORD_TRAFFIC` | Toggle writing request/response traffic to `recordings/` | `off` | + +
+ +### 2. Exposing the service + +
+Why do I have to? + +> Since Cursor routes requests through its external prompt-building service rather than directly from the IDE to your API, your custom endpoint must be publicly reachable on the Internet. +> +> Consider using Cloudflare because its tunnels are free and require no account. +
+ +[Install `cloudflared`](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/downloads/) and run: + +```bash +cloudflared tunnel --url http://localhost:8080 +``` + +Copy the URL of your tunnel from the output of the command. It looks something like this: + +```text ++----------------------------------------------------+ +| Your quick Tunnel has been created! Visit it at: | +| https://foo-bar.trycloudflare.com | ++----------------------------------------------------+ +``` + +Then paste it into _Cursor Settings > Models > API Keys > OpenAI API Key > Override OpenAI Base URL_: + +![How to use Azure API key in Cursor for GPT-5](assets/cursor_model_config.jpg) + +### 3. Configuring Cursor + +In addition to updating the OpenAI Base URL, you need to: + +1. Set _OpenAI API Key_ to the value of `SERVICE_API_KEY` in your `.env` + +2. Ensure the toggles for both options are **on**, as shown in the previous image. + +3. Add the custom models called exactly `gpt-high`, `gpt-medium`, and `gpt-low`, as shown in the previous image. You don't need to remove other models. + +
+Additional steps if you face this error: + The model does not work with your current plan or api key + + +> This is a bug on Cursor's side when custom models edit files in **∞ Agent** mode. Regardless of the model, and even if `edit_file` is working correctly, Cursor may show this pop-up and interrupt generation after the first `edit_file` function call. +> +> This only happens when using model names Cursor has not allowlisted or prepared for, such as `gpt-high`. However, we can't use the standard model names such as `gpt-5-high` because Cursor does not route those to custom OpenAI Base URLs. +> +> For now, this bug can be bypassed by using the Custom Modes beta +> +> In the near future, either the bug in Agent mode will be fixed or those two remaining functions will be added to Custom Modes—or, even better, Azure support will improve enough to render this project obsolete. + +4. Enable Custom Modes Beta in _Cursor Settings > Chat_: ![Azure not working in Cursor](assets/cursor_chat_config.jpg) + +5. Create a custom mode: + + Fix for cursor BYOK from azure + +
+ +### 4. Running the service + +To run the production version of the app: + +```bash +docker compose up flask-prod +``` + +> For instructions on how to run locally without Docker, and the different development commands, see the [Development](#development) section. + +## Development + +### Running locally + +
Expand + +#### Bootstrap your local environment + +```bash +python -m venv .venv +pip install -r requirements/dev.txt +``` + +#### Running the development server + +```bash +flask run -p 8080 +``` + +#### Running the production server* + +```bash +export FLASK_ENV=production +export FLASK_DEBUG=0 +export LOG_LEVEL=info +flask run -p 8080 +``` + +This will only run the Flask server with the production settings. For a closer approximation of the production server running with `supervisord` and `gunicorn`, check [Running with Docker](#running-with-docker). + +#### Running tests + +```bash +flask test +``` + +To run only specific tests, you can use the pytest `-k` argument: + +```bash +flask test -k ... +``` + +#### Running linter + +```bash +flask lint +``` + +The `lint` command will attempt to fix any linting/style errors in the code. If you only want to know if the code will pass CI and do not wish for the linter to make changes, add the `--check` argument. + +```bash +flask lint --check +``` + +
+ +### Running with Docker + +
Expand + +#### Running the development server + +```bash +docker compose up flask-dev +``` + +#### Running the production server + +```bash +docker compose up flask-prod +``` + +This image runs the server through `supervisord` and `gunicorn`. See the [Production](#production) section for more details. + +When running flask-prod, the production flags are set in `docker-compose.yml`: + +```yml + FLASK_ENV: production + FLASK_DEBUG: 0 + LOG_LEVEL: info + GUNICORN_WORKERS: 4 +``` + +The list of `environment:` variables in the `docker-compose.yml` file takes precedence over any variables specified in `.env`. + +#### Running tests + +```bash +docker compose run --rm manage test +``` + +To run only specific tests, you can use the pytest `-k` argument: + +```bash +docker compose run --rm manage test -k ... +``` + +#### Running linter + +```bash +docker compose run --rm manage lint +``` + +The `lint` command will attempt to fix any linting/style errors in the code. If you only want to know if the code will pass CI and do not wish for the linter to make changes, add the `--check` argument. + +```bash +docker compose run --rm manage lint --check +``` + +
+ +## Testing + +Currently, testing and coverage for the project are nonexistent. Only the test skeletons, configuration, commands, and a test-friendly architecture are in place. + +To make the generation of test fixtures easier, the `RECORD_TRAFFIC` flag has been added, which creates files with all the incoming/outgoing traffic between this service and Cursor/Azure. + +Currently, those fixtures would include sensitive data, such as system prompts, tools, and the entire scaffolding from Cursor's prompt-building service. + +To avoid violating Cursor's intellectual property, a redaction layer will have to be implemented so the recorded traffic can be published and used in tests while remaining MIT-licensed. + +This is a top priority and will be developed next, before any other features, as traffic recording will also be a valuable tool for users of the service to report issues on GitHub and to improve testing for other contributors to confidently contribute to the project. + +## Production + +
Expand + +### Configure server + +You might want to review and modify the following configuration files: + +| File | Description | +| --------------------------------------- | --------------------------------------------------------------------------------------------------------------- | +| `supervisord/gunicorn.conf` | Supervisor program config for Gunicorn (bind :5000, gevent; workers/log level from env; logs to stdout/stderr). | +| `supervisord/supervisord_entrypoint.sh` | Container entrypoint that execs supervisord (prepends it when args start with -). | +| `supervisord/supervisord.conf` | Main Supervisord config: socket, logging, nodaemon; includes conf.d program configs. | + +### Build, tag, and push the image + +```bash +docker compose build flask-prod +docker tag app-production your-tag +docker push your-tag +``` + +
\ No newline at end of file diff --git a/app/__init__.py b/app/__init__.py new file mode 100644 index 0000000..a636c94 --- /dev/null +++ b/app/__init__.py @@ -0,0 +1,4 @@ +"""Main application package.""" + +__all__ = ["create_app"] +from .app import create_app diff --git a/app/app.py b/app/app.py new file mode 100644 index 0000000..de50d87 --- /dev/null +++ b/app/app.py @@ -0,0 +1,41 @@ +"""The app module, containing the app factory function.""" + +import logging +import sys + +from flask import Flask + +from . import commands +from .blueprint import blueprint + + +def create_app(config_object="app.settings"): + """Create application factory, as explained here: http://flask.pocoo.org/docs/patterns/appfactories/. + + :param config_object: The configuration object to use. + """ + app = Flask(__name__.split(".")[0]) + app.config.from_object(config_object) + register_commands(app) + register_blueprints(app) + configure_logger(app) + return app + + +def register_blueprints(app): + """Register Flask blueprints.""" + app.register_blueprint(blueprint) + return None + + +def register_commands(app): + """Register Click commands.""" + app.cli.add_command(commands.test) + app.cli.add_command(commands.lint) + + +def configure_logger(app): + """Configure loggers.""" + handler = logging.StreamHandler(sys.stdout) + if not app.logger.handlers: + app.logger.addHandler(handler) diff --git a/app/auth.py b/app/auth.py new file mode 100644 index 0000000..a488691 --- /dev/null +++ b/app/auth.py @@ -0,0 +1,25 @@ +"""Authentication module.""" + +from functools import wraps + +from flask import Response, current_app, request + + +def valid_brearer_token(): + """Validate the bearer token.""" + service_api_key = current_app.config["SERVICE_API_KEY"] + return request.authorization and request.authorization.token == service_api_key + + +def require_auth(func): + """Require authentication for the given route.""" + + @wraps(func) + def wrapper(*args, **kwargs): + """Wrapper function return Unauthorized if the token is invalid.""" + if valid_brearer_token(): + return func(*args, **kwargs) + else: + return Response("Unauthorized", 401) + + return wrapper diff --git a/app/azure/__init__.py b/app/azure/__init__.py new file mode 100644 index 0000000..266c9ef --- /dev/null +++ b/app/azure/__init__.py @@ -0,0 +1,7 @@ +"""Azure adapter package. + +This package exposes the AzureAdapter for integrating with Azure's Responses API. +""" + +__all__ = ["AzureAdapter"] +from .adapter import AzureAdapter diff --git a/app/azure/adapter.py b/app/azure/adapter.py new file mode 100644 index 0000000..80c4eab --- /dev/null +++ b/app/azure/adapter.py @@ -0,0 +1,57 @@ +"""Azure adapter orchestrating request/response transformations.""" + +from __future__ import annotations + +from typing import Optional + +import requests +from flask import Request, Response + +from ..common.recording import record_payload + +# Local adapters +from .request_adapter import RequestAdapter +from .response_adapter import ResponseAdapter + + +class AzureAdapter: + """Orchestrate forwarding of a Flask Request to Azure's Responses API. + + Provides a Completions-compatible interface to the caller by composing a + RequestAdapter (pre-request transformations) and a ResponseAdapter + (post-request transformations). The adapters receive a reference to this + instance for shared per-request state (models/early_response). + """ + + # Per-request state (streaming completions only) + inbound_model: Optional[str] = None + early_response: Optional[Response] = None + + def __init__(self) -> None: + """Initialize child adapters and shared state references.""" + # Composition: child adapters get a reference to this orchestrator + self.request_adapter = RequestAdapter(self) + self.response_adapter = ResponseAdapter(self) + + # Public API + def forward(self, req: Request) -> Response: + """Forward the Flask request upstream and adapt the response back. + + High-level flow: + 1) RequestAdapter builds the upstream request kwargs and stores state + on this adapter (models) or sets early_response. + 2) Perform the upstream HTTP call using a short-lived requests call. + 3) ResponseAdapter converts the upstream response into a Flask Response. + """ + request_kwargs = self.request_adapter.adapt(req) + + # Allow early short-circuit responses (e.g., config errors) + if self.early_response is not None: + return self.early_response + + record_payload(request_kwargs.get("json", {}), "upstream_request") + + # Perform upstream request with kwargs directly (no long-lived session) + resp = requests.request(**request_kwargs) + + return self.response_adapter.adapt(resp) diff --git a/app/azure/request_adapter.py b/app/azure/request_adapter.py new file mode 100644 index 0000000..e519bd1 --- /dev/null +++ b/app/azure/request_adapter.py @@ -0,0 +1,260 @@ +"""Request adaptation helpers for Azure Responses API. + +This module defines RequestAdapter, which transforms incoming OpenAI-style +requests into Azure Responses API request parameters. +""" + +from __future__ import annotations + +import json +from typing import Any, Dict, List, Optional + +from flask import Request, Response, current_app + + +class RequestAdapter: + """Handle pre-request adaptation for the Azure Responses API. + + Transforms OpenAI Completions/Chat-style inputs into Azure Responses API + request parameters suitable for streaming completions in this codebase. + Returns request_kwargs for requests.request(**kwargs). If an early + short-circuit is needed (for example, missing config), sets + self.adapter.early_response and returns an empty dict. Also sets + per-request state on the adapter (model). + """ + + def __init__(self, adapter: Any) -> None: + """Initialize the adapter with a reference to the AzureAdapter.""" + self.adapter = adapter # AzureAdapter instance for shared config/env + + # ---- Helpers (kept local to minimize cross-module coupling) ---- + def _parse_json_body(self, req: Request, body: bytes) -> Optional[Any]: + if not body: + return None + data = req.get_json(silent=True, force=False) + if data is not None: + return data + try: + return json.loads(body.decode(req.charset or "utf-8", errors="replace")) + except json.JSONDecodeError: + return None + + def _copy_request_headers_for_azure( + self, src: Request, *, api_key: str + ) -> Dict[str, str]: + headers: Dict[str, str] = {k: v for k, v in src.headers.items()} + headers.pop("Host", None) + # Azure prefers api-key header + headers.pop("Authorization", None) + headers["api-key"] = api_key + return headers + + def _messages_to_responses_input_and_instructions( + self, messages: List[Dict[str, Any]] + ) -> Dict[str, Any]: + instructions_parts: List[str] = [] + input_items: List[Dict[str, Any]] = [] + + def content_to_text(c: Any) -> str: + if c is None: + return "" + if isinstance(c, str): + return c + if isinstance(c, list): + parts: List[str] = [] + for it in c: + if isinstance(it, dict): + if it.get("type") in {"text", "input_text"} and "text" in it: + parts.append(str(it.get("text", ""))) + elif "content" in it and isinstance(it["content"], str): + parts.append(it["content"]) + else: + parts.append(str(it)) + return "\n".join([p for p in parts if p]) + return json.dumps(c, ensure_ascii=False) + + for m in messages: + role = m.get("role") + c = m.get("content") + if role in {"system", "developer"}: + text = content_to_text(c) + if text: + instructions_parts.append(text) + continue + # For user/assistant/tools as inputs + if role == "tool": + item = { + "type": "function_call_output", + "output": content_to_text(c), + "status": "completed", + "call_id": m.get("tool_call_id"), + } + input_items.append(item) + else: + text = content_to_text(c) + item = { + "role": role or "user", + "content": [ + { + "type": "input_text" if role == "user" else "output_text", + "text": text, + }, + ], + } + input_items.append(item) + + if tool_calls := m.get("tool_calls"): + for tool_call in tool_calls: + function = tool_call.get("function", {}) + item = { + "type": "function_call", + "name": function.get("name"), + "arguments": function.get("arguments"), + "call_id": tool_call.get("id"), + } + input_items.append(item) + + instructions = "\n\n".join(instructions_parts) if instructions_parts else None + return { + "input": input_items if input_items else None, + "instructions": instructions, + } + + def _transform_tools_for_responses(self, tools: Any) -> Any: + if not isinstance(tools, list): + return tools + out: List[Dict[str, Any]] = [] + for t in tools: + if not isinstance(t, dict): + out.append(t) + continue + ttype = t.get("type") + if ttype == "function" and isinstance(t.get("function"), dict): + f = t["function"] + transformed: Dict[str, Any] = { + "type": "function", + "name": f.get("name"), + } + if "description" in f: + transformed["description"] = f["description"] + if "parameters" in f: + transformed["parameters"] = f["parameters"] + transformed["strict"] = False + out.append(transformed) + else: + out.append(t) + return out + + def _transform_tool_choice(self, tool_choice: Any) -> Any: + if tool_choice in (None, "auto", "none"): + return tool_choice + if isinstance(tool_choice, dict): + t = tool_choice.get("type") + if t == "function": + fn = tool_choice.get("function") or {} + name = fn.get("name") + if name: + return {"type": "function", "name": name} + return tool_choice + + # ---- Main adaptation (always streaming completions-like) ---- + def adapt(self, req: Request) -> Dict[str, Any]: + """Build requests.request kwargs for the Azure Responses API call. + + Validates the inbound request, sets early_response on error, maps inputs + to the Responses schema, and returns a dict suitable for + requests.request(**kwargs). + """ + # Reset per-request state + self.adapter.inbound_model = None + self.adapter.early_response = None + + # Validate method + if (req.method or "").upper() != "POST": + self.adapter.early_response = Response( + "Only POST supported for Azure backend", + status=405, + mimetype="text/plain", + ) + return {} + + # Parse request body + raw_body = req.get_data(cache=True) + payload = self._parse_json_body(req, raw_body) + if not isinstance(payload, dict): + payload = {} + + # Determine target model: prefer env AZURE_MODEL/AZURE_DEPLOYMENT + inbound_model = payload.get("model") if isinstance(payload, dict) else None + self.adapter.inbound_model = inbound_model + + settings = current_app.config + + upstream_headers = self._copy_request_headers_for_azure( + req, api_key=settings["AZURE_API_KEY"] + ) + + # Map Chat/Completions to Responses (always streaming) + messages = payload.get("messages") or [] + tools_in = payload.get("tools") or [] + tool_choice_in = payload.get("tool_choice") + top_p = payload.get("top_p") + max_tokens = payload.get("max_tokens") or payload.get("max_output_tokens") + prompt_cache_key = payload.get("user") or payload.get("prompt_cache_key") + + mapped = ( + self._messages_to_responses_input_and_instructions(messages) + if isinstance(messages, list) + else {"input": None, "instructions": None} + ) + + responses_body: Dict[str, Any] = {} + if mapped.get("instructions"): + responses_body["instructions"] = mapped["instructions"] + if mapped.get("input") is not None: + responses_body["input"] = mapped["input"] + responses_body["model"] = settings["AZURE_DEPLOYMENT"] + + # Transform tools and tool choice + if tools_in: + responses_body["tools"] = self._transform_tools_for_responses(tools_in) + mapped_tool_choice = self._transform_tool_choice(tool_choice_in) + if mapped_tool_choice is not None: + responses_body["tool_choice"] = mapped_tool_choice + + # Optional sampling/limits + if top_p is not None: + responses_body["top_p"] = top_p + if max_tokens is not None: + responses_body["max_output_tokens"] = max_tokens + if prompt_cache_key is not None: + responses_body["prompt_cache_key"] = prompt_cache_key + + # Always streaming + responses_body["stream"] = True + + reasoning_effort = inbound_model.replace("gpt-", "").lower() + if reasoning_effort not in {"high", "medium", "low"}: + raise ValueError( + "Model name must be either gpt-high, gpt-medium, or gpt-low" + ) + + responses_body["reasoning"] = { + "effort": reasoning_effort, + "summary": settings["AZURE_SUMMARY_LEVEL"], + } + + responses_body["store"] = False + responses_body["stream_options"] = {"include_obfuscation": False} + responses_body["truncation"] = settings["AZURE_TRUNCATION"] + + request_kwargs: Dict[str, Any] = { + "method": "POST", + "url": settings["AZURE_RESPONSES_API_URL"], + "headers": upstream_headers, + "json": responses_body, + "data": None, + "stream": True, + "timeout": (60, None), + } + return request_kwargs diff --git a/app/azure/response_adapter.py b/app/azure/response_adapter.py new file mode 100644 index 0000000..bc80a5e --- /dev/null +++ b/app/azure/response_adapter.py @@ -0,0 +1,272 @@ +"""Response adaptation helpers for Azure Responses API streams. + +This module defines ResponseAdapter, which converts Azure SSE streams into +OpenAI Chat Completions-compatible streaming responses. +""" + +from __future__ import annotations + +import random +import time +from string import ascii_letters, digits +from typing import Any, Dict, Iterable, Optional + +from flask import Response + +from ..common.sse import chunks_to_sse, sse_to_events + + +class ResponseAdapter: + """Handle post-request adaptation from Azure Responses API to Flask. + + Translates Azure SSE events into OpenAI Chat Completions chunks, including + reasoning tags and function call streaming. Direct /v1/responses + streams are passed through. + """ + + # Per-request chat completion id (for streaming) + _chat_completion_id: Optional[str] = None + + def __init__(self, adapter: Any) -> None: + """Initialize the adapter with a reference to the AzureAdapter.""" + self.adapter = adapter # AzureAdapter instance for shared config/env + + # ---- Helpers ---- + @staticmethod + def _create_chat_completion_id() -> str: + """Return a new pseudo-random chat completion id.""" + alphabet = ascii_letters + digits + return "chatcmpl-" + "".join(random.choices(alphabet, k=24)) + + @staticmethod + def _filter_response_headers( + headers: Dict[str, str], *, streaming: bool + ) -> Dict[str, str]: + """Filter hop-by-hop and incompatible headers for downstream responses.""" + # Minimal hop-by-hop headers list for downstream filtering + hop_by_hop_headers = { + "connection", + "keep-alive", + "proxy-authenticate", + "proxy-authorization", + "te", + "trailers", + "transfer-encoding", + "upgrade", + } + out: Dict[str, str] = {} + for k, v in headers.items(): + if k.lower() in hop_by_hop_headers: + continue + if streaming and k.lower() == "content-length": + continue + out[k] = v + return out + + def _build_completion_chunk( + self, + *, + delta: Optional[Dict[str, Any]] = None, + finish_reason: Optional[str] = None, + ) -> Dict[str, Any]: + """Build a Chat Completions chunk dict with the provided delta.""" + return { + "id": self._chat_completion_id, + "object": "chat.completion.chunk", + "created": int(time.time()), + "model": self.adapter.inbound_model, + "choices": [ + { + "index": 0, + "delta": delta or {}, + "finish_reason": finish_reason, + } + ], + } + + # ---- Event handlers (per SSE event) ---- + def _output_item__added( + self, obj: Optional[Dict[str, Any]] + ) -> Iterable[Dict[str, Any]]: + """Handle response.output_item.added events and emit chunks as needed.""" + if not isinstance(obj, dict): + return [] + item_type = obj.get("item", {}).get("type") + if item_type == "reasoning": + # Mark that we should open on first reasoning delta + self._started_thinking = True + return [] + if item_type == "function_call": + out: list[Dict[str, Any]] = [] + if getattr(self, "_thinking", False): + out.append( + self._build_completion_chunk( + delta={"role": "assistant", "content": "\n\n"} + ) + ) + self._thinking = False + name = obj.get("item", {}).get("name") + arguments = obj.get("item", {}).get("arguments") + call_id = obj.get("item", {}).get("call_id") + out.append( + self._build_completion_chunk( + delta={ + "role": "assistant", + "content": None, + "tool_calls": [ + { + "index": 0, + "id": call_id or "", + "type": "function", + "function": { + "name": name or "", + "arguments": arguments or "", + }, + } + ], + } + ) + ) + self._called_function = True + return out + return [] + + def _function_call_arguments__delta( + self, obj: Optional[Dict[str, Any]] + ) -> Iterable[Dict[str, Any]]: + """Handle response.function_call.arguments.delta events.""" + out: list[Dict[str, Any]] = [] + if getattr(self, "_thinking", False): + out.append( + self._build_completion_chunk( + delta={"role": "assistant", "content": "\n\n"} + ) + ) + self._thinking = False + arguments_delta = obj.get("delta", "") if isinstance(obj, dict) else "" + out.append( + self._build_completion_chunk( + delta={ + "tool_calls": [ + {"index": 0, "function": {"arguments": arguments_delta}} + ] + } + ) + ) + return out + + def _output_item__done( + self, obj: Optional[Dict[str, Any]] + ) -> Optional[Iterable[Dict[str, Any]]]: + """Handle response.output_item.done events (no-op for completions).""" + # No-op for completions mapping + return None + + def _reasoning_summary_text__delta( + self, obj: Optional[Dict[str, Any]] + ) -> Iterable[Dict[str, Any]]: + """Handle reasoning.summary_text.delta events and emit text chunks.""" + out: list[Dict[str, Any]] = [] + if getattr(self, "_started_thinking", False): + out.append( + self._build_completion_chunk( + delta={"role": "assistant", "content": "\n\n"} + ) + ) + self._thinking = True + self._started_thinking = False + out.append( + self._build_completion_chunk( + delta={ + "role": "assistant", + "content": (obj.get("delta", "") if isinstance(obj, dict) else ""), + } + ) + ) + return out + + def _reasoning_summary_text__done( + self, obj: Optional[Dict[str, Any]] + ) -> Iterable[Dict[str, Any]]: + """Handle reasoning.summary_text.done events and close think block.""" + return [ + self._build_completion_chunk(delta={"role": "assistant", "content": "\n\n"}) + ] + + def _output_text__delta( + self, obj: Optional[Dict[str, Any]] + ) -> Iterable[Dict[str, Any]]: + """Handle response.output_text.delta events and emit text chunks.""" + out: list[Dict[str, Any]] = [] + if getattr(self, "_thinking", False): + out.append( + self._build_completion_chunk( + delta={"role": "assistant", "content": "\n\n"} + ) + ) + self._thinking = False + out.append( + self._build_completion_chunk( + delta={ + "role": "assistant", + "content": (obj.get("delta", "") if isinstance(obj, dict) else ""), + } + ) + ) + return out + + def adapt(self, upstream_resp: Any) -> Response: + """Adapt an upstream Azure streaming response into SSE for Flask.""" + + def generate() -> Iterable[bytes]: + # Generate once per stream + self._chat_completion_id = self._create_chat_completion_id() + # Initialize per-stream state on the instance + self._started_thinking = False + self._thinking = False + self._called_function = False + + def gen_dicts() -> Iterable[Dict[str, Any]]: + try: + for ev in sse_to_events( + upstream_resp.iter_content(chunk_size=8192) + ): + if ev.is_done: + # Upstream [DONE] sentinel + continue + handler_name = "_" + (ev.event or "").replace( + "response.", "" + ).replace(".", "__") + handler = getattr(self, handler_name, None) + if not handler: + continue + res = handler(ev.json) + if res is not None: + for chunk in res: + yield chunk + finally: + # Emit finish reason at the end of stream + if getattr(self, "_called_function", False): + yield self._build_completion_chunk(finish_reason="tool_calls") + else: + yield self._build_completion_chunk(finish_reason="stop") + + # Wrap as SSE with [DONE] + try: + yield from chunks_to_sse(gen_dicts()) + finally: + upstream_resp.close() + + headers = self._filter_response_headers( + dict(getattr(upstream_resp, "headers", {})), streaming=True + ) + headers["Content-Type"] = "text/event-stream; charset=utf-8" + headers.pop("Content-Length", None) + headers["Cache-Control"] = "no-cache" + headers["Connection"] = "keep-alive" + headers["X-Accel-Buffering"] = "no" + return Response( + generate(), + status=getattr(upstream_resp, "status_code", 200), + headers=headers, + ) diff --git a/app/blueprint.py b/app/blueprint.py new file mode 100644 index 0000000..1d391b1 --- /dev/null +++ b/app/blueprint.py @@ -0,0 +1,106 @@ +"""Flask blueprint and request routing for the proxy service. + +This module defines the application blueprint, configures logging, and +forwards incoming HTTP requests to the configured backend implementation. +""" + +import sys + +from flask import Blueprint, jsonify, request +from loguru import logger +from rich.traceback import install as install_rich_traceback + +from .auth import require_auth +from .azure.adapter import AzureAdapter +from .common.logging import log_request +from .common.recording import increment_last_recording, record_payload + +blueprint = Blueprint("blueprint", __name__) + +# Pretty tracebacks for easier debugging +install_rich_traceback(show_locals=False) + + +# Configure Loguru to print colorful logs to stdout +logger.remove() +logger.add( + sys.stdout, + colorize=True, + enqueue=False, + backtrace=False, + diagnose=False, + format=( + "{time:YYYY-MM-DD HH:mm:ss.SSS} " + "| {level: <8} " + "| {name}:{function}:{line} " + "- {message}" + ), +) + + +ALL_METHODS = [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE", + "OPTIONS", + "HEAD", + "TRACE", +] + + +@blueprint.route("/health", methods=["GET"]) +def health(): + """Return a simple health check payload.""" + return jsonify({"status": "ok"}) + + +@blueprint.route("/", defaults={"path": ""}, methods=ALL_METHODS) +@blueprint.route("/", methods=ALL_METHODS) +@require_auth +def catch_all(path: str): + """Forward any request path to the Azure backend. + + Logs the incoming request and forwards it to the selected backend + implementation, returning the backend's response. If forwarding fails, + returns a 502 JSON error payload. + """ + log_request(request) + increment_last_recording() + record_payload(request.json, "downstream_request") + adapter = AzureAdapter() + return adapter.forward(request) + + +@blueprint.route("/models", methods=["GET"]) +@blueprint.route("/v1/models", methods=["GET"]) +@require_auth +def models(): + """Return a list of available models.""" + models = [ + "gpt-4.1-high", + "gpt-4.1-medium", + "gpt-4.1-low", + "gpt-5", + "gpt-5-high", + "openai/gpt-high", + "openai/gpt-5", + "custom/gpt-high", + "foo", + "high", + ] + return jsonify( + { + "object": "list", + "data": [ + { + "id": model, + "object": "model", + "created": 1686935002, + "owned_by": "openai", + } + for model in models + ], + } + ) diff --git a/app/commands.py b/app/commands.py new file mode 100644 index 0000000..69a9d21 --- /dev/null +++ b/app/commands.py @@ -0,0 +1,93 @@ +"""Click commands.""" + +import os +from glob import glob +from subprocess import call + +import click + +HERE = os.path.abspath(os.path.dirname(__file__)) +PROJECT_ROOT = os.path.join(HERE, os.pardir) +TEST_PATH = os.path.join(PROJECT_ROOT, "tests") + + +@click.command() +@click.option( + "-c/-C", + "--coverage/--no-coverage", + default=True, + is_flag=True, + help="Show coverage report", +) +@click.option( + "-k", + "--filter", + default=None, + help="Filter tests by keyword expressions", +) +def test(coverage, filter): + """Run the tests.""" + import pytest + + args = [TEST_PATH, "--verbose"] + if coverage: + args.append("--cov=app") + args.append("--cov-branch") + args.append("--cov-report=xml") + args.append("--cov-report=html") + args.append("--cov-report=term") + if filter: + args.extend(["-k", filter]) + rv = pytest.main(args=args) + exit(rv) + + +@click.command() +@click.option( + "-f", + "--fix-imports", + default=True, + is_flag=True, + help="Fix imports using isort, before linting", +) +@click.option( + "-c", + "--check", + default=False, + is_flag=True, + help="Don't make any changes to files, just confirm they are formatted correctly", +) +def lint(fix_imports, check): + """Lint and check code style with black, flake8 and isort.""" + skip = [ + "requirements", + "migrations", + "supervisord", + "htmlcov", + "__pycache__", + ] + root_files = glob("*.py") + root_directories = [ + name for name in next(os.walk("."))[1] if not name.startswith(".") + ] + files_and_directories = [ + arg for arg in root_files + root_directories if arg not in skip + ] + + def execute_tool(description, *args): + """Execute a checking tool with its arguments.""" + command_line = list(args) + files_and_directories + click.echo(f"{description}: {' '.join(command_line)}") + rv = call(command_line) + if rv != 0: + exit(rv) + + isort_args = [] + black_args = [] + if check: + isort_args.append("--check") + black_args.append("--check") + if fix_imports: + execute_tool("Fixing import order", "isort", *isort_args) + execute_tool("Formatting style", "black", *black_args) + execute_tool("Checking code style", "flake8") diff --git a/app/common/__init__.py b/app/common/__init__.py new file mode 100644 index 0000000..f6ecba7 --- /dev/null +++ b/app/common/__init__.py @@ -0,0 +1 @@ +"""Common utilities shared across the application (logging, SSE, etc.).""" diff --git a/app/common/logging.py b/app/common/logging.py new file mode 100644 index 0000000..7e6b6de --- /dev/null +++ b/app/common/logging.py @@ -0,0 +1,285 @@ +"""Utilities for structured, pretty logging of requests and SSE events.""" + +import json +import os +import time +import uuid +from typing import Any, Dict, List + +from flask import Request +from rich.console import Console +from rich.json import JSON +from rich.markdown import Markdown +from rich.padding import Padding +from rich.panel import Panel + +from .sse import SSEEvent + +# Global console instance for consistent logging across modules +console = Console() + + +# --- Request logging helpers --- + + +def should_redact() -> bool: + """Return True if sensitive values should be redacted in logs.""" + # Set LOG_REDACT=false to disable redaction (default True) + return os.environ.get("LOG_REDACT", "true").strip().lower() not in { + "0", + "false", + "no", + } + + +def redact_value(value: str) -> str: + """Mask a potentially sensitive value for safer logging.""" + if not value: + return value + if len(value) <= 8: + return "***" + return value[:4] + "…" + value[-4:] + + +def redact_headers(headers: Dict[str, str]) -> Dict[str, str]: + """Return a copy of headers with sensitive values redacted when enabled.""" + if not should_redact(): + return dict(headers) + redacted: Dict[str, str] = {} + sensitive = { + "authorization", + "proxy-authorization", + "x-api-key", + "api-key", + "api_key", + "x-azure-openai-key", + "azure-openai-key", + } + for k, v in headers.items(): + if k.lower() in sensitive: + redacted[k] = redact_value(v) + else: + # Heuristic: mask common bearer/api-key looking values + if isinstance(v, str) and ( + v.startswith("Bearer ") or v.startswith("sk-") or "api_key" in k.lower() + ): + redacted[k] = redact_value(v) + else: + redacted[k] = v + return redacted + + +def multidict_to_dict(md) -> Dict[str, List[str]]: + """Convert a werkzeug MultiDict-like object to a plain dict of lists.""" + try: + return {k: list(vs) for k, vs in md.lists()} + except AttributeError: + # Fallback for objects without .lists() + return {k: [md.get(k)] for k in md.keys()} + + +def files_summary(req: Request) -> List[Dict[str, Any]]: + """Return a summary of uploaded files from a Flask request.""" + items: List[Dict[str, Any]] = [] + for name, storage in req.files.items(): + items.append( + { + "field": name, + "filename": getattr(storage, "filename", ""), + "content_type": getattr(storage, "content_type", ""), + } + ) + return items + + +def _capture_request_details(req: Request, request_id: str) -> Dict[str, Any]: + """Collect a structured snapshot of request information for logging.""" + # Note: access request inside request context + hdrs = {k: v for k, v in req.headers.items()} + redacted_headers = redact_headers(hdrs) + + details: Dict[str, Any] = { + "id": request_id, + "timestamp": time.strftime("%Y-%m-%dT%H:%M:%S%z", time.localtime()), + "remote_addr": (req.headers.get("X-Forwarded-For") or req.remote_addr or ""), + "method": req.method, + "scheme": req.scheme, + "path": "/" + (req.view_args.get("path", "") if req.view_args else ""), + "full_path": req.full_path, # includes trailing ? + "url": req.url, + "route_args": dict(req.view_args or {}), + "query_args": multidict_to_dict(req.args), + "form": multidict_to_dict(req.form), + "json": req.get_json(silent=True), + "files": files_summary(req), + "cookies": req.cookies.to_dict() if req.cookies else {}, + "headers": redacted_headers, + "user_agent": str(req.user_agent) if req.user_agent else "", + } + return details + + +def log_request(req: Request) -> str: + """Pretty-print a Flask request using Rich and return the request id.""" + request_id = uuid.uuid4().hex[:8] + details = _capture_request_details(req, request_id) + + method = details.get("method") + path = details.get("path") or "/" + rid = details.get("id") + + # Rich pretty print of the full request details + console.rule(f"[bold]Request #{rid}[/bold] — {method} {path}") + console.print(Panel.fit("Headers")) + console.print(details.get("headers")) + console.print(Panel.fit("Args / Form / JSON")) + json_payload = details.get("json") + cleaned_json = json_payload + if isinstance(json_payload, dict): + # Remove verbose fields to log them separately + cleaned_json = { + k: v + for k, v in json_payload.items() + if k + not in { + "tools", + } + } + console.print_json( + data={ + "query_args": details.get("query_args"), + "form": details.get("form"), + "json": cleaned_json, + } + ) + + # Separate section for chat messages (role + content) + messages = [] + if isinstance(json_payload, dict): + maybe_messages = json_payload.get("messages") + if isinstance(maybe_messages, list): + messages = maybe_messages + + if messages: + console.rule(f"Messages ({len(messages)})") + + def render_content(content: Any) -> str: + """Render a message content value into readable text for logs.""" + # Show content with actual newlines + if content is None: + return "" + if isinstance(content, bytes): + return content.decode("utf-8", errors="replace") + if isinstance(content, str): + return content + if isinstance(content, list): + parts: List[str] = [] + for it in content: + if isinstance(it, dict): + t = it.get("type") + if t == "text" and "text" in it: + parts.append(str(it.get("text", ""))) + elif "content" in it and isinstance(it["content"], str): + parts.append(it["content"]) + else: + parts.append(json.dumps(it, ensure_ascii=False, indent=2)) + else: + parts.append(str(it)) + return "\n".join(p for p in parts if p is not None) + # Fallback: pretty JSON + return json.dumps(content, ensure_ascii=False, indent=2) + + for idx, msg in enumerate(messages, start=1): + role = "" + content_val: Any = "" + name = None + if isinstance(msg, dict): + role = str(msg.get("role", "")) + content_val = msg.get("content", "") + name = msg.get("name") + tool_call_id = msg.get("tool_call_id") + title = ( + f"Message {idx}: {role}" + if not name + else f"Message {idx}: {role} ({name}) - {tool_call_id}" + ) + console.rule(title) + console.print( + Padding( + Markdown( + render_content(content_val) + .replace("<", "\n`<") + .replace(">", ">`\n") + .replace(">`\n\n\n`<", ">`\n\n`<") + ), + (1, 0), + ) + ) + tool_calls = msg.get("tool_calls", []) + for tool_call in tool_calls: + function = tool_call.get("function", {}) + arguments = function.get("arguments") + console.print( + Padding( + Panel.fit(f"Tool call [italic]{tool_call.get('id')}[italic]"), + (0, 4), + ) + ) + console.print( + Padding( + f"[bold][magenta]{function.get('name')}[/magenta] ([/bold]", + (0, 4), + ) + ) + if arguments: + console.print(Padding(JSON(arguments), (0, 8))) + console.print(Padding("[bold])[/bold]", (0, 4))) + if tool_calls: + console.print() + + return request_id + + +# --- SSE logging helpers --- + + +def _clean_payload(obj: Any) -> Any: + """Default cleaning to reduce noisy fields in logs. + + - If obj is a dict, remove top-level 'tools' + - If it contains a nested 'response' dict, also remove its 'tools' + Returns a shallow-cleaned copy when applicable; otherwise returns the input unchanged. + """ + if not isinstance(obj, dict): + return obj + # Shallow copy top-level + cleaned = {k: v for k, v in obj.items()} + if "tools" in cleaned: + cleaned = {k: v for k, v in cleaned.items() if k != "tools"} + resp = cleaned.get("response") + if isinstance(resp, dict) and "tools" in resp: + # Shallow copy nested response to drop tools + new_resp = {k: v for k, v in resp.items() if k != "tools"} + cleaned = {**cleaned, "response": new_resp} + return cleaned + + +def log_event(ev: SSEEvent) -> None: + """Pretty-print one SSE event using Rich. + + - Title reflects whether the event had an 'event' name and its index + - If payload parses as JSON (ev.json), it is cleaned and printed as JSON; otherwise raw text is printed + """ + obj = ev.json + if obj is not None: + title = ( + f"SSE JSON #{ev.index}" if not ev.event else f"SSE {ev.event} #{ev.index}" + ) + console.print(Panel.fit(title)) + console.print_json(data=_clean_payload(obj)) + else: + title = f"SSE data #{ev.index}" + if ev.event: + title = f"SSE {ev.event} #{ev.index}" + console.print(Panel.fit(title)) + console.print(ev.data) diff --git a/app/common/recording.py b/app/common/recording.py new file mode 100644 index 0000000..9ce0e8e --- /dev/null +++ b/app/common/recording.py @@ -0,0 +1,73 @@ +"""Lightweight recording helpers for debugging request/response flows. + +Artifacts are stored under the project-level ``recordings/`` folder using a +monotonically increasing numeric prefix so related request/response files are +easy to correlate. +""" + +import json +import os +from functools import wraps +from typing import Any, Dict + +from flask import current_app, has_app_context + +RECORDINGS_DIR = os.path.join(os.path.dirname(__file__), "..", "..", "recordings") + +# Private, module-level counter tracking the latest recording index. +__LAST_RECORDING_INDEX = 0 + +# Initialize the counter based on existing files in the recordings directory so +# that subsequent runs continue incrementing from the maximum observed index. +files = os.listdir(RECORDINGS_DIR) +for file in files: + try: + recording_index = int(file.split("_")[0]) + if recording_index > __LAST_RECORDING_INDEX: + __LAST_RECORDING_INDEX = recording_index + except (ValueError, IndexError): + # Ignore unrelated files that do not follow the "_.*" pattern + pass + + +def config_bypass(func): + """Bypass the wrapped function when RECORD_TRAFFIC is disabled.""" + + @wraps(func) + def wrapper(*args, **kwargs): + enabled = False + if has_app_context(): + enabled = current_app.config["RECORD_TRAFFIC"] + if not enabled: + return None + return func(*args, **kwargs) + + return wrapper + + +@config_bypass +def increment_last_recording() -> None: + """Advance the shared recording index for a new request lifecycle.""" + + global __LAST_RECORDING_INDEX + __LAST_RECORDING_INDEX += 1 + + +@config_bypass +def record_payload(payload: Dict[str, Any], name: str) -> None: + """Write a JSON payload for the current recording index.""" + + file_name = f"{__LAST_RECORDING_INDEX}_{name}.json" + file_path = os.path.join(RECORDINGS_DIR, file_name) + with open(file_path, "w") as f: + json.dump(payload, f, indent=2) + + +@config_bypass +def record_sse(sse: bytes, name: str) -> None: + """Write raw SSE bytes for the current recording index.""" + + file_name = f"{__LAST_RECORDING_INDEX}_{name}.sse" + file_path = os.path.join(RECORDINGS_DIR, file_name) + with open(file_path, "wb") as f: + f.write(sse) diff --git a/app/common/sse.py b/app/common/sse.py new file mode 100644 index 0000000..10fc927 --- /dev/null +++ b/app/common/sse.py @@ -0,0 +1,265 @@ +"""Server-Sent Events (SSE) utilities. + +This module provides helpers to decode and encode SSE streams, including: +- An incremental decoder that turns byte chunks into parsed events +- Convenience iterators to yield JSON payloads from SSE streams +- Helpers to encode Python values back into SSE-formatted bytes +""" + +import json +from dataclasses import dataclass, field +from typing import Any, Dict, Iterable, Iterator, List, Optional, Tuple + +from .recording import record_sse + + +@dataclass +class SSEEvent: + """A parsed Server-Sent Event. + + Attributes: + event: Optional event type name sent by the server. + data: Raw data payload for the event (possibly multi-line). + id: Optional event ID, if provided by the server. + retry: Optional reconnection delay in milliseconds. + index: Monotonic sequence number assigned by the decoder. + """ + + event: Optional[str] + data: str + id: Optional[str] = None + retry: Optional[int] = None + # Monotonic sequence number (1-based) within a stream, set by the decoder + index: int = 0 + # Lazy JSON cache (computed on first access of .json) + _json_cached: bool = field(default=False, init=False, repr=False) + _json_value: Optional[Any] = field(default=None, init=False, repr=False) + + @property + def is_done(self) -> bool: + """Return True if this event marks the end of the stream. + + The end-of-stream sentinel is the literal string "[DONE]". + """ + return self.data.strip() == "[DONE]" + + @property + def json(self) -> Optional[Any]: + """Return the data parsed as JSON, caching the result. + + Returns None if the data is empty, invalid JSON, or the [DONE] sentinel. + """ + if not self._json_cached: + val: Optional[Any] + text = (self.data or "").strip() + if self.is_done or not text: + val = None + else: + try: + val = json.loads(text) + except json.JSONDecodeError: + val = None + self._json_value = val + self._json_cached = True + return self._json_value + + +class SSEDecoder: + """Incremental SSE decoder. + + Feed incoming bytes and iterate parsed events. The decoder keeps state + across feeds and yields events when a blank line delimiter is encountered. + """ + + def __init__(self, encoding: str = "utf-8") -> None: + """Initialize the decoder with the given text encoding.""" + self.encoding = encoding + self.buffer: bytes = b"" + self.full_buffer: bytes = b"" + self._event_lines: List[bytes] = [] + self._seq: int = 0 + + def _parse_event(self, lines: List[bytes]) -> SSEEvent: + ev_type: Optional[str] = None + data_parts: List[bytes] = [] + ev_id: Optional[str] = None + retry: Optional[int] = None + + for line in lines: + if not line: + continue + if line.startswith(b"event:"): + ev_type = ( + line.split(b":", 1)[1] + .strip() + .decode(self.encoding, errors="replace") + ) + elif line.startswith(b"data:"): + part = line[5:] + if part.startswith(b" "): + part = part[1:] + data_parts.append(part) + elif line.startswith(b"id:"): + val = line.split(b":", 1)[1] + if val.startswith(b" "): + val = val[1:] + ev_id = val.decode(self.encoding, errors="replace") + elif line.startswith(b"retry:"): + val = line.split(b":", 1)[1] + if val.startswith(b" "): + val = val[1:] + try: + retry = int(val.strip()) + except ValueError: + retry = None + elif line.startswith(b":"): + # Comment line, ignore + pass + + data_text = ( + b"\n".join(data_parts).decode(self.encoding, errors="replace") + if data_parts + else "" + ) + return SSEEvent(event=ev_type, data=data_text, id=ev_id, retry=retry) + + def feed(self, chunk: bytes) -> Iterator[SSEEvent]: + """Feed a new bytes chunk and yield any complete parsed events.""" + if not chunk: + return + self.buffer += chunk + self.full_buffer += chunk + while True: + idx = self.buffer.find(b"\n") + if idx == -1: + break + line = self.buffer[: idx + 1] + self.buffer = self.buffer[idx + 1 :] + stripped = line.rstrip(b"\r\n") + if stripped == b"": + if self._event_lines: + ev = self._parse_event(self._event_lines) + self._seq += 1 + ev.index = self._seq + yield ev + self._event_lines = [] + else: + self._event_lines.append(stripped) + record_sse(self.full_buffer, "upstream_response") + + def end_of_input(self) -> Iterator[SSEEvent]: + """Flush and yield a trailing event if the stream ended mid-message.""" + # Flush any pending event if the stream ended without a final blank line + if self._event_lines: + ev = self._parse_event(self._event_lines) + self._seq += 1 + ev.index = self._seq + yield ev + self._event_lines = [] + + +def sse_to_events( + stream: Iterable[bytes], encoding: str = "utf-8" +) -> Iterator[SSEEvent]: + """Convert an SSE byte-stream into parsed SSEEvent objects.""" + decoder = SSEDecoder(encoding=encoding) + for chunk in stream: + yield from decoder.feed(chunk) + yield from decoder.end_of_input() + + +def sse_to_chunks( + stream: Iterable[bytes], *, skip_done: bool = True, encoding: str = "utf-8" +) -> Iterator[Dict[str, Any]]: + """Convert an SSE byte-stream to an iterator of JSON dicts. + + - Collects multi-line data fields per SSE spec + - Uses event.json to avoid repeated json.loads + - Skips the [DONE] sentinel by default + """ + for ev in sse_to_events(stream, encoding=encoding): + if skip_done and ev.is_done: + continue + if ev.json is None: + continue + yield ev.json + + +def sse_to_json_events( + stream: Iterable[bytes], *, skip_done: bool = True, encoding: str = "utf-8" +) -> Iterator[Tuple[Optional[str], Dict[str, Any]]]: + """Yield (event, json_obj) pairs for events whose data parses as JSON. + + Non-JSON events are skipped. The [DONE] sentinel is skipped if skip_done + is True. + """ + for ev in sse_to_events(stream, encoding=encoding): + if skip_done and ev.is_done: + continue + obj = ev.json + if obj is None: + continue + yield (ev.event, obj) + + +def encode_sse_data( + data: str, *, event: Optional[str] = None, id: Optional[str] = None +) -> bytes: + """Encode a single SSE message into bytes. + + If the data contains newlines, they are split into multiple "data:" lines + as per the SSE spec. Optionally include event and id. + """ + out = bytearray() + if id is not None: + out.extend(b"id: ") + out.extend(id.encode("utf-8")) + out.extend(b"\n") + if event is not None: + out.extend(b"event: ") + out.extend(event.encode("utf-8")) + out.extend(b"\n") + + if data == "": + out.extend(b"data:\n") + else: + for line in data.splitlines(): + out.extend(b"data: ") + out.extend(line.encode("utf-8")) + out.extend(b"\n") + out.extend(b"\n") + return bytes(out) + + +def encode_sse_json( + obj: Any, *, event: Optional[str] = None, id: Optional[str] = None +) -> bytes: + """Encode a Python object as JSON in SSE format and return bytes.""" + payload = json.dumps(obj, ensure_ascii=False, separators=(",", ":")) + return encode_sse_data(payload, event=event, id=id) + + +def chunks_to_sse( + chunks: Iterable[Dict[str, Any]], *, add_done: bool = True +) -> Iterator[bytes]: + """Encode an iterator of JSON-able dicts into SSE byte messages. + + If add_done is True, a final [DONE] sentinel event is yielded. + """ + buffer = b"" + try: + for obj in chunks: + sse = encode_sse_json(obj) + buffer += sse + yield sse + finally: + if add_done: + sse = done_event_bytes() + buffer += sse + yield sse + record_sse(buffer, "downstream_response") + + +def done_event_bytes() -> bytes: + """Return the SSE-encoded [DONE] sentinel as bytes.""" + return encode_sse_data("[DONE]") diff --git a/app/settings.py b/app/settings.py new file mode 100644 index 0000000..00c8bc0 --- /dev/null +++ b/app/settings.py @@ -0,0 +1,30 @@ +"""Application configuration. + +Most configuration is set via environment variables. + +For local development, use a .env file to set +environment variables. +""" + +from environs import Env + +env = Env() +env.read_env() + +ENV = env.str("FLASK_ENV", default="production") +DEBUG = ENV == "development" +RECORD_TRAFFIC = env.bool("RECORD_TRAFFIC", False) + +SERVICE_API_KEY = env.str("SERVICE_API_KEY", "change-me") + +AZURE_BASE_URL = env.str("AZURE_BASE_URL", "change_me").rstrip("/") +AZURE_API_KEY = env.str("AZURE_API_KEY", "change_me") +AZURE_DEPLOYMENT = env.str("AZURE_DEPLOYMENT", "gpt-5") + +AZURE_API_VERSION = env.str("AZURE_API_VERSION", "2025-04-01-preview") +AZURE_SUMMARY_LEVEL = env.str("AZURE_SUMMARY_LEVEL", "detailed") +AZURE_TRUNCATION = env.str("AZURE_TRUNCATION", "auto") + +AZURE_RESPONSES_API_URL = ( + f"{AZURE_BASE_URL}/openai/responses?api-version={AZURE_API_VERSION}" +) diff --git a/assets/cursor_chat_config.jpg b/assets/cursor_chat_config.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9ce47dfda76204c6298f13cfabf7650544f42fe1 GIT binary patch literal 47028 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 literal 0 HcmV?d00001 diff --git a/assets/cursor_custom_mode.gif b/assets/cursor_custom_mode.gif new file mode 100644 index 0000000000000000000000000000000000000000..ea70e92d194e3f1dfc41ade51084ca8c51b2577b GIT binary patch literal 151287 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�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 dC%T2%b6O(}ww?QDyWreT@xz_6XFFAY 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 An*aa+ literal 0 HcmV?d00001 diff --git a/assets/cursor_model_config.jpg b/assets/cursor_model_config.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d65b8bfec9a1eb9ada29d67f57780abba18b3ad8 GIT binary patch literal 102012 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
{ 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 ZCD=7.0 +Flask==3.1.2 + +# Logging +rich==14.1.0 +loguru==0.7.3 + +# Requests +requests==2.32.5 + +# Deployment +gevent==25.8.2 +gunicorn>=19.9.0 +supervisor==4.3.0 + +# Environment variable parsing +environs==14.3.0 diff --git a/supervisord/gunicorn.conf b/supervisord/gunicorn.conf new file mode 100644 index 0000000..96825bc --- /dev/null +++ b/supervisord/gunicorn.conf @@ -0,0 +1,16 @@ +[program:gunicorn] +directory=/app +command=gunicorn + app:create_app() + -b :5000 + -w %(ENV_GUNICORN_WORKERS)s + -k gevent + --max-requests=5000 + --max-requests-jitter=500 + --log-level=%(ENV_LOG_LEVEL)s +autostart=true +autorestart=true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 diff --git a/supervisord/supervisord.conf b/supervisord/supervisord.conf new file mode 100644 index 0000000..adf2d5c --- /dev/null +++ b/supervisord/supervisord.conf @@ -0,0 +1,21 @@ +[unix_http_server] +file=/tmp/supervisor.sock ; path to your socket file + +[supervisord] +logfile=/tmp/supervisord.log ; supervisord log file +logfile_maxbytes=50MB ; maximum size of logfile before rotation +logfile_backups=10 ; number of backed up logfiles +loglevel=%(ENV_LOG_LEVEL)s ; info, debug, warn, trace +pidfile=/tmp/supervisord.pid ; pidfile location +nodaemon=true ; run supervisord as a daemon +minfds=1024 ; number of startup file descriptors +minprocs=200 ; number of process descriptors + +[rpcinterface:supervisor] +supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface + +[supervisorctl] +serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket + +[include] +files = /etc/supervisor/conf.d/*.conf diff --git a/supervisord/supervisord_entrypoint.sh b/supervisord/supervisord_entrypoint.sh new file mode 100644 index 0000000..b5b053e --- /dev/null +++ b/supervisord/supervisord_entrypoint.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env sh +set -e + +if [ $# -eq 0 ] || [ "${1#-}" != "$1" ]; then + set -- supervisord "$@" +fi + +exec "$@" diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..b0c2ab8 --- /dev/null +++ b/tests/__init__.py @@ -0,0 +1 @@ +"""Tests for the app.""" diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 0000000..17939af --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,27 @@ +"""Defines fixtures available to all tests.""" + +import logging + +import pytest +from webtest import TestApp + +from app import create_app + + +@pytest.fixture +def app(): + """Create application for the tests.""" + _app = create_app("tests.settings") + _app.logger.setLevel(logging.CRITICAL) + ctx = _app.test_request_context() + ctx.push() + + yield _app + + ctx.pop() + + +@pytest.fixture +def testapp(app): + """Create Webtest app.""" + return TestApp(app) diff --git a/tests/factories.py b/tests/factories.py new file mode 100644 index 0000000..16fca84 --- /dev/null +++ b/tests/factories.py @@ -0,0 +1 @@ +"""Factories to help in tests.""" diff --git a/tests/settings.py b/tests/settings.py new file mode 100644 index 0000000..95959ef --- /dev/null +++ b/tests/settings.py @@ -0,0 +1,20 @@ +"""Settings module for test app.""" + +ENV = "development" +TESTING = True + +SERVICE_API_KEY = "test-service-api-key" + +AZURE_API_VERSION = "2025-04-01-preview" +AZURE_BASE_URL = "test-base-url" +AZURE_API_KEY = "test-api-key" +AZURE_DEPLOYMENT = "gpt-5" +AZURE_SUMMARY_LEVEL = "detailed" +AZURE_TRUNCATION = "auto" + +RECORD_TRAFFIC = False + + +AZURE_RESPONSES_API_URL = ( + f"{AZURE_BASE_URL}/openai/responses?api-version={AZURE_API_VERSION}" +) diff --git a/tests/test_functional.py b/tests/test_functional.py new file mode 100644 index 0000000..0de755e --- /dev/null +++ b/tests/test_functional.py @@ -0,0 +1,26 @@ +"""Functional tests using WebTest. + +See: http://webtest.readthedocs.org/ +""" + + +class TestConfig: + """Config.""" + + def test_config_is_set(self, testapp): + """Ensure required config values are set.""" + app = testapp.app + assert app.config["AZURE_BASE_URL"] != "change_me" + assert app.config["AZURE_API_KEY"] != "change_me" + + +class TestModels: + """Models.""" + + def test_models_endpoint_returns_200(self, testapp): + """Ensure /models endpoint returns HTTP 200.""" + testapp.get("/models", status=401) + + def test_health_endpoint_returns_200(self, testapp): + """Ensure /health endpoint returns HTTP 200.""" + testapp.get("/health", status=200)