test(anthropic): inline the Claude Code request instead of a json fixture

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
kerry 2026-09-26 22:42:03 +00:00
parent edfb89eea7
commit f235d19895
2 changed files with 143 additions and 866 deletions

View file

@ -1,859 +0,0 @@
{
"model": "claude-sonnet-4-5",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "<system-reminder>\nSynthetic environment reminder.\n</system-reminder>"
},
{
"type": "text",
"text": "<system-reminder>\nSynthetic model identity reminder.\n</system-reminder>"
},
{
"type": "text",
"text": "<system-reminder>\nSynthetic agent types reminder.\n</system-reminder>"
},
{
"type": "text",
"text": "<system-reminder>\nSynthetic skills reminder.\n</system-reminder>"
},
{
"type": "text",
"text": "<system-reminder>\n<total_tokens>15000000 tokens left</total_tokens>\n</system-reminder>"
},
{
"type": "text",
"text": "<system-reminder>\nSynthetic date reminder.\n</system-reminder>"
},
{
"type": "text",
"text": "<system-reminder>\nSynthetic attribution reminder.\n</system-reminder>"
},
{
"type": "text",
"text": "Reply with exactly the word PONG",
"cache_control": {
"type": "ephemeral"
}
}
]
}
],
"system": [
{
"type": "text",
"text": "Synthetic billing header block from a Claude Code request."
},
{
"type": "text",
"text": "Synthetic agent identity system prompt.",
"cache_control": {
"type": "ephemeral"
}
},
{
"type": "text",
"text": "Synthetic interactive agent instructions.",
"cache_control": {
"type": "ephemeral"
}
}
],
"tools": [
{
"name": "Agent",
"description": "Launch a new agent to handle complex, multi-step tasks.",
"input_schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"description": {
"description": "A short (3-5 word) description of the task",
"type": "string"
},
"prompt": {
"description": "The task for the agent to perform",
"type": "string"
},
"subagent_type": {
"description": "The type of specialized agent to use for this task",
"type": "string"
},
"model": {
"description": "Optional model override for this agent.",
"type": "string",
"enum": [
"sonnet",
"opus",
"haiku",
"fable"
]
},
"run_in_background": {
"description": "Agents run in the background by default; you will be notified when one completes.",
"type": "boolean"
},
"isolation": {
"description": "Isolation mode.",
"type": "string",
"enum": [
"worktree",
"remote"
]
}
},
"required": [
"description",
"prompt"
],
"additionalProperties": false
}
},
{
"name": "Bash",
"description": "Executes a given bash command and returns its output.",
"input_schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"command": {
"description": "The command to execute",
"type": "string"
},
"timeout": {
"description": "Optional timeout in milliseconds (max 600000)",
"type": "number"
},
"description": {
"description": "Clear, concise description of what this command does in active voice.",
"type": "string"
},
"run_in_background": {
"description": "Set to true to run this command in the background.",
"type": "boolean"
},
"dangerouslyDisableSandbox": {
"description": "Set this to true to dangerously override sandbox mode and run commands without sandboxing.",
"type": "boolean"
}
},
"required": [
"command"
],
"additionalProperties": false
}
},
{
"name": "CronCreate",
"description": "Schedule a prompt to be enqueued at a future time.",
"input_schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"cron": {
"description": "Standard 5-field cron expression in local time: \"M H DoM Mon DoW\" (e.g.",
"type": "string"
},
"prompt": {
"description": "The prompt to enqueue at each fire time.",
"type": "string"
},
"recurring": {
"description": "true (default) = fire on every cron match until deleted or auto-expired after 7 days.",
"type": "boolean"
},
"durable": {
"description": "true = persist to .claude/scheduled_tasks.json and survive restarts.",
"type": "boolean"
}
},
"required": [
"cron",
"prompt"
],
"additionalProperties": false
}
},
{
"name": "CronDelete",
"description": "Cancel a cron job previously scheduled with CronCreate.",
"input_schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"description": "Job ID returned by CronCreate.",
"type": "string"
}
},
"required": [
"id"
],
"additionalProperties": false
}
},
{
"name": "CronList",
"description": "List all cron jobs scheduled via CronCreate, both durable (.claude/scheduled_tasks.json) and session-only.",
"input_schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
}
},
{
"name": "Edit",
"description": "Performs exact string replacements in files.",
"input_schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"file_path": {
"description": "The absolute path to the file to modify",
"type": "string"
},
"old_string": {
"description": "The text to replace",
"type": "string"
},
"new_string": {
"description": "The text to replace it with (must be different from old_string)",
"type": "string"
},
"replace_all": {
"description": "Replace all occurrences of old_string (default false)",
"default": false,
"type": "boolean"
}
},
"required": [
"file_path",
"old_string",
"new_string"
],
"additionalProperties": false
}
},
{
"name": "EnterWorktree",
"description": "Use this tool ONLY when explicitly instructed to work in a worktree \u2014 either by the user directly, or by project instruc",
"input_schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"name": {
"description": "Optional name for a new worktree.",
"type": "string"
},
"path": {
"description": "Path to an existing worktree to switch into instead of creating a new one.",
"type": "string"
}
},
"additionalProperties": false
}
},
{
"name": "ExitWorktree",
"description": "Exit a worktree session created by EnterWorktree and return the session to the original working directory.",
"input_schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"action": {
"description": "\"keep\" leaves the worktree and branch on disk; \"remove\" deletes both.",
"type": "string",
"enum": [
"keep",
"remove"
]
},
"discard_changes": {
"description": "Required true when action is \"remove\" and the worktree has uncommitted files or unmerged commits.",
"type": "boolean"
}
},
"required": [
"action"
],
"additionalProperties": false
}
},
{
"name": "ListAgents",
"description": "Lists agents you can SendMessage to \u2014 in-process subagents you spawned, the teammates on your team, other local Claude s",
"input_schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"channel": {
"description": "Not available in this build; leave unset.",
"type": "string",
"maxLength": 256
},
"q": {
"description": "Not available in this build; leave unset.",
"type": "string",
"maxLength": 256
}
},
"additionalProperties": false
}
},
{
"name": "NotebookEdit",
"description": "Replaces, inserts, or deletes a single cell in a Jupyter notebook (.ipynb file).",
"input_schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"notebook_path": {
"description": "The absolute path to the Jupyter notebook file to edit (must be absolute, not relative)",
"type": "string"
},
"cell_id": {
"description": "The ID of the cell to edit.",
"type": "string"
},
"new_source": {
"description": "The new source for the cell",
"type": "string"
},
"cell_type": {
"description": "The type of the cell (code or markdown).",
"type": "string",
"enum": [
"code",
"markdown"
]
},
"edit_mode": {
"description": "The type of edit to make (replace, insert, delete).",
"type": "string",
"enum": [
"replace",
"insert",
"delete"
]
}
},
"required": [
"notebook_path",
"new_source"
],
"additionalProperties": false
}
},
{
"name": "Read",
"description": "Reads a file from the local filesystem.",
"input_schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"file_path": {
"description": "The absolute path to the file to read",
"type": "string"
},
"offset": {
"description": "The line number to start reading from.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"limit": {
"description": "The number of lines to read.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"pages": {
"description": "Page range for PDF files (e.g., \"1-5\", \"3\", \"10-20\").",
"type": "string"
}
},
"required": [
"file_path"
],
"additionalProperties": false
}
},
{
"name": "ReportFindings",
"description": "Report code-review findings as a typed list so the host UI can render them.",
"input_schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"level": {
"description": "Effort level the review ran at",
"type": "string",
"enum": [
"low",
"medium",
"high",
"xhigh",
"max"
]
},
"findings": {
"description": "Verified findings, most-severe first; empty if none survived",
"maxItems": 32,
"type": "array",
"items": {
"type": "object",
"properties": {
"file": {
"description": "Repo-relative path of the file the finding is in",
"type": "string"
},
"line": {
"description": "1-indexed line the finding anchors to",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"summary": {
"description": "One-sentence statement of the defect",
"type": "string"
},
"short_summary": {
"description": "Compressed label for compact UI (\u226460 chars): the claim alone, no rationale or consequence clause",
"type": "string",
"maxLength": 60
},
"failure_scenario": {
"description": "Concrete inputs/state \u2192 wrong output/crash",
"type": "string"
},
"category": {
"description": "Short kebab-case slug of the finding type, e.g.",
"type": "string",
"maxLength": 40
},
"verdict": {
"description": "Set when a verify pass ran; absent on inline-only reviews",
"type": "string",
"enum": [
"CONFIRMED",
"PLAUSIBLE"
]
},
"outcome": {
"description": "Set ONLY when re-reporting after applying fixes: what happened to this finding",
"type": "string",
"enum": [
"fixed",
"skipped",
"no_change_needed"
]
}
},
"required": [
"file",
"summary",
"failure_scenario"
],
"additionalProperties": false
}
}
},
"required": [
"findings"
],
"additionalProperties": false
}
},
{
"name": "ScheduleWakeup",
"description": "Schedule when to resume work in /loop dynamic mode \u2014 the user invoked /loop without an interval, asking you to self-pace",
"input_schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"delaySeconds": {
"description": "Seconds from now to wake up.",
"type": "number"
},
"reason": {
"description": "One short sentence explaining the chosen delay.",
"type": "string"
},
"prompt": {
"description": "The /loop input to fire on wake-up.",
"type": "string"
},
"stop": {
"description": "Set to true to end the dynamic loop immediately instead of scheduling another wakeup.",
"type": "boolean"
},
"noop": {
"description": "true = nothing changed (you checked and there is nothing to report).",
"type": "boolean"
}
},
"additionalProperties": false
}
},
{
"name": "SendMessage",
"description": "# SendMessage\n\nSend a message to another agent.",
"input_schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"to": {
"description": "Recipient: a name from ListAgents (append its \" [ref]\" only when a listing or an error shows one), a teammate name, \"mai",
"type": "string",
"allOf": [
{
"pattern": "^[^\\n\\r]*$"
},
{
"pattern": "^[\\s\\S]{0,300}$"
}
]
},
"summary": {
"description": "A 5-10 word label for your own transcript row (not transmitted \u2014 the recipient previews the first line of `message`).",
"type": "string",
"maxLength": 200
},
"message": {
"default": "",
"description": "Plain text message content.",
"type": "string"
},
"notify_when_idle": {
"description": "Ask a session ON THIS MACHINE to send you ONE notice when it next goes idle (finishes its turn with nothing queued) or e",
"type": "boolean"
}
},
"required": [
"to",
"message"
],
"additionalProperties": false
}
},
{
"name": "Skill",
"description": "Invoke a skill.",
"input_schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"skill": {
"description": "The name of a skill from the available-skills list.",
"type": "string"
},
"args": {
"description": "Optional arguments for the skill",
"type": "string"
}
},
"required": [
"skill"
],
"additionalProperties": false
}
},
{
"name": "TaskCreate",
"description": "Use this tool to create a structured task list for your current coding session.",
"input_schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"subject": {
"description": "A brief title for the task",
"type": "string"
},
"description": {
"description": "What needs to be done",
"type": "string"
},
"activeForm": {
"description": "Present continuous form shown in spinner when in_progress (e.g., \"Running tests\")",
"type": "string"
},
"metadata": {
"description": "Arbitrary metadata to attach to the task",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"subject",
"description"
],
"additionalProperties": false
}
},
{
"name": "TaskGet",
"description": "Use this tool to retrieve a task by its ID from the task list.",
"input_schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"taskId": {
"description": "The ID of the task to retrieve",
"type": "string"
}
},
"required": [
"taskId"
],
"additionalProperties": false
}
},
{
"name": "TaskList",
"description": "Use this tool to list all tasks in the task list.",
"input_schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
}
},
{
"name": "TaskStop",
"description": "- Stops a running background task by its ID\n- Takes a task_id parameter identifying the task to stop\n- To stop an agent-",
"input_schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"task_id": {
"description": "The ID of the background task to stop.",
"type": "string"
},
"shell_id": {
"description": "Deprecated: use task_id instead",
"type": "string"
}
},
"additionalProperties": false
}
},
{
"name": "TaskUpdate",
"description": "Use this tool to update a task in the task list.",
"input_schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"taskId": {
"description": "The ID of the task to update",
"type": "string"
},
"subject": {
"description": "New subject for the task",
"type": "string"
},
"description": {
"description": "New description for the task",
"type": "string"
},
"activeForm": {
"description": "Present continuous form shown in spinner when in_progress (e.g., \"Running tests\")",
"type": "string"
},
"status": {
"description": "New status for the task",
"anyOf": [
{
"type": "string",
"enum": [
"pending",
"in_progress",
"completed"
]
},
{
"type": "string",
"const": "deleted"
}
]
},
"addBlocks": {
"description": "Task IDs that this task blocks",
"type": "array",
"items": {
"type": "string"
}
},
"addBlockedBy": {
"description": "Task IDs that block this task",
"type": "array",
"items": {
"type": "string"
}
},
"owner": {
"description": "New owner for the task",
"type": "string"
},
"metadata": {
"description": "Metadata keys to merge into the task.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"taskId"
],
"additionalProperties": false
}
},
{
"name": "WebFetch",
"description": "IMPORTANT: WebFetch WILL FAIL for authenticated or private URLs.",
"input_schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"url": {
"description": "The URL to fetch content from",
"type": "string",
"format": "uri"
},
"prompt": {
"description": "The prompt to run on the fetched content",
"type": "string"
}
},
"required": [
"url",
"prompt"
],
"additionalProperties": false
}
},
{
"name": "WebSearch",
"description": "- Allows Claude to search the web and use the results to inform responses\n- Provides up-to-date information for current ",
"input_schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"query": {
"description": "The search query to use",
"type": "string",
"minLength": 2
},
"allowed_domains": {
"description": "Only include search results from these domains",
"type": "array",
"items": {
"type": "string"
}
},
"blocked_domains": {
"description": "Never include search results from these domains",
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"query"
],
"additionalProperties": false
}
},
{
"name": "Workflow",
"description": "Execute a workflow script that orchestrates multiple subagents deterministically.",
"input_schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"script": {
"description": "Self-contained workflow script.",
"type": "string",
"maxLength": 524288
},
"name": {
"description": "Name of a predefined workflow (built-in or from .claude/workflows/).",
"type": "string"
},
"description": {
"description": "Ignored \u2014 set the workflow description in the script's `meta` block.",
"type": "string"
},
"title": {
"description": "Ignored \u2014 set the workflow title in the script's `meta` block.",
"type": "string"
},
"args": {
"description": "Optional input value exposed to the script as the global `args`, verbatim."
},
"scriptPath": {
"description": "Path to a workflow script file on disk.",
"type": "string"
},
"resumeFromRunId": {
"description": "Run ID of a prior Workflow invocation to resume from.",
"type": "string",
"pattern": "^wf_[a-z0-9-]{6,}$"
}
},
"additionalProperties": false
}
},
{
"name": "Write",
"description": "Writes a file to the local filesystem.",
"input_schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"file_path": {
"description": "The absolute path to the file to write (must be absolute, not relative)",
"type": "string"
},
"content": {
"description": "The content to write to the file",
"type": "string"
}
},
"required": [
"file_path",
"content"
],
"additionalProperties": false
}
}
],
"metadata": {
"user_id": "{\"device_id\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"account_uuid\": \"\", \"session_id\": \"00000000-0000-4000-8000-000000000000\"}"
},
"max_tokens": 32000,
"thinking": {
"budget_tokens": 31999,
"type": "enabled",
"display": "omitted"
},
"context_management": {
"edits": [
{
"type": "clear_thinking_20251015",
"keep": "all"
}
]
},
"stream": true
}

View file

@ -1,21 +1,159 @@
import json
import uuid
from pathlib import Path
from typing import Final
from integration._support.client import Gateway, eventually, object_value
import pytest
from integration._support.client import Gateway, eventually
from integration._support.database import read_rows
from integration._support.wire import Reply, Request, wire_server
from pydantic import JsonValue, TypeAdapter
_API_KEY: Final = "synthetic-anthropic-key"
_MODEL: Final = "claude-sonnet-4-5"
_FIXTURE: Final = Path(__file__).with_name("claude_code_request.json")
_JSON_OBJECT: Final = TypeAdapter(dict[str, JsonValue])
_CLI_BETA: Final = (
"claude-code-20250219,interleaved-thinking-2025-05-14,thinking-token-count-2026-05-13,"
"context-management-2025-06-27,prompt-caching-scope-2026-01-05"
)
_CACHE: Final = {"type": "ephemeral"}
def _schema(properties: JsonValue, required: tuple[str, ...]) -> dict[str, JsonValue]:
return {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": properties,
"required": list(required),
"additionalProperties": False,
}
def _field(description: str, **extra: JsonValue) -> dict[str, JsonValue]:
return {"description": description, **extra}
def _tools() -> tuple[dict[str, JsonValue], ...]:
_MAX: Final = 9007199254740991
return (
{
"name": "Bash",
"description": "Executes a given bash command and returns its output.",
"input_schema": _schema(
{
"command": _field("The command to execute", type="string"),
"timeout": _field("Optional timeout in milliseconds (max 600000)", type="number"),
"description": _field(
"Clear, concise description of what this command does in active voice.", type="string"
),
"run_in_background": _field("Set to true to run this command in the background.", type="boolean"),
"dangerouslyDisableSandbox": _field(
"Set this to true to dangerously override sandbox mode and run commands without sandboxing.",
type="boolean",
),
},
("command",),
),
},
{
"name": "Read",
"description": "Reads a file from the local filesystem.",
"input_schema": _schema(
{
"file_path": _field("The absolute path to the file to read", type="string"),
"offset": _field("The line number to start reading from.", type="integer", minimum=0, maximum=_MAX),
"limit": _field("The number of lines to read.", type="integer", exclusiveMinimum=0, maximum=_MAX),
"pages": _field('Page range for PDF files (e.g., "1-5", "3", "10-20").', type="string"),
},
("file_path",),
),
},
{
"name": "Edit",
"description": "Performs exact string replacements in files.",
"input_schema": _schema(
{
"file_path": _field("The absolute path to the file to modify", type="string"),
"old_string": _field("The text to replace", type="string"),
"new_string": _field(
"The text to replace it with (must be different from old_string)", type="string"
),
"replace_all": _field(
"Replace all occurrences of old_string (default false)", default=False, type="boolean"
),
},
("file_path", "old_string", "new_string"),
),
},
{
"name": "Agent",
"description": "Launch a new agent to handle complex, multi-step tasks.",
"input_schema": _schema(
{
"description": _field("A short (3-5 word) description of the task", type="string"),
"prompt": _field("The task for the agent to perform", type="string"),
"subagent_type": _field("The type of specialized agent to use for this task", type="string"),
"model": _field(
"Optional model override for this agent.",
type="string",
enum=["sonnet", "opus", "haiku", "fable"],
),
"run_in_background": _field(
"Agents run in the background by default; you will be notified when one completes.",
type="boolean",
),
"isolation": _field("Isolation mode.", type="string", enum=["worktree", "remote"]),
},
("description", "prompt"),
),
},
)
def _claude_code_request(cache_bust: str) -> dict[str, JsonValue]:
reminders: Final = (
f"<system-reminder>\n{cache_bust}\n</system-reminder>",
"<system-reminder>\nSynthetic model identity reminder.\n</system-reminder>",
"<system-reminder>\nSynthetic agent types reminder.\n</system-reminder>",
"<system-reminder>\nSynthetic skills reminder.\n</system-reminder>",
"<system-reminder>\n<total_tokens>15000000 tokens left</total_tokens>\n</system-reminder>",
"<system-reminder>\nSynthetic date reminder.\n</system-reminder>",
"<system-reminder>\nSynthetic attribution reminder.\n</system-reminder>",
)
return {
"model": "",
"system": [
{"type": "text", "text": "Synthetic billing header block from a Claude Code request."},
{"type": "text", "text": "Synthetic agent identity system prompt.", "cache_control": _CACHE},
{"type": "text", "text": "Synthetic interactive agent instructions.", "cache_control": _CACHE},
],
"messages": [
{
"role": "user",
"content": [
*[{"type": "text", "text": reminder} for reminder in reminders],
{
"type": "text",
"text": "Reply with exactly the word PONG",
"cache_control": _CACHE,
},
],
}
],
"tools": list(_tools()),
"metadata": {
"user_id": json.dumps(
{
"device_id": "0" * 64,
"account_uuid": "",
"session_id": "00000000-0000-4000-8000-000000000000",
}
)
},
"max_tokens": 32000,
"thinking": {"budget_tokens": 31999, "type": "enabled", "display": "omitted"},
"context_management": {"edits": [{"type": "clear_thinking_20251015", "keep": "all"}]},
"stream": True,
}
def _sse_frame(event: str, data: JsonValue) -> bytes:
@ -72,13 +210,11 @@ def sse_events(text: str) -> tuple[tuple[str, dict[str, object]], ...]:
)
@pytest.mark.covers("other.provider_wire.anthropic.claude_code_native_request_survives_and_streams_back")
def test_claude_code_streaming_request_reaches_anthropic_intact_and_streams_back(gateway: Gateway) -> None:
identity: Final = f"msg_cc_{uuid.uuid4().hex}"
fixture: Final = _JSON_OBJECT.validate_json(_FIXTURE.read_bytes())
request_body: Final = _claude_code_request(f"cache-bust-{uuid.uuid4().hex}")
cli_beta: Final = frozenset(_CLI_BETA.split(","))
content: Final = list(object_value(fixture["messages"][0])["content"])
content[0] = {**content[0], "text": f"cache-bust-{uuid.uuid4().hex}"}
request_body: Final = {**fixture, "messages": [{"role": "user", "content": content}]}
def respond(request: Request) -> Reply:
assert request.method == "POST"