mirror of
https://github.com/BerriAI/litellm.git
synced 2026-11-03 07:23:33 +00:00
Compare commits
72 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
65e36b0298 | ||
|
|
497a3b406b | ||
|
|
68b1fe1b66 | ||
|
|
0e6c47f8d1 | ||
|
|
d040262bf8 | ||
|
|
dc36db371c | ||
|
|
7679ae853f | ||
|
|
0c1ed2e155 | ||
|
|
eb91e815c0 | ||
|
|
9bfde413b3 | ||
|
|
1f388e5221 | ||
|
|
0cc25f2f18 | ||
|
|
6db4026e27 | ||
|
|
41017f478d | ||
|
|
ecae261b10 | ||
|
|
ff6578183b | ||
|
|
3896240d3b | ||
|
|
8a7280ee1b | ||
|
|
94d97b26f0 | ||
|
|
dabf756927 | ||
|
|
b74a2496c1 | ||
|
|
008bacc53f | ||
|
|
121ce723f5 | ||
|
|
0893321abf | ||
|
|
79691289df | ||
|
|
21995f87a4 | ||
|
|
4d245e1d9c | ||
|
|
3e32c0cd8e | ||
|
|
00b77ec8b5 | ||
|
|
b0c4d5b6d4 | ||
|
|
6e65828d7f | ||
|
|
f69b2103df | ||
|
|
2869a6f482 | ||
|
|
afbda352f1 | ||
|
|
f14625652a | ||
|
|
fe872527f1 | ||
|
|
1bbc9ee1f9 | ||
|
|
460d51fd85 | ||
|
|
97f670a942 | ||
|
|
00b8664bbd | ||
|
|
74952e95ac | ||
|
|
a746ac2462 | ||
|
|
a32e70a196 | ||
|
|
580bde9a2d | ||
|
|
d3bf006613 | ||
|
|
a80eacacee | ||
|
|
3b00260b86 | ||
|
|
44115c5f2b | ||
|
|
4982a1e111 | ||
|
|
594f0d1eaa | ||
|
|
e0850bab88 | ||
|
|
e7d8bbc5de | ||
|
|
bf02f06913 | ||
|
|
c991f4b01f | ||
|
|
cc111d1ae5 | ||
|
|
4dbbe6eddd | ||
|
|
8aca86a571 | ||
|
|
e640c0eb41 | ||
|
|
10e77ce406 | ||
|
|
6076c0a058 | ||
|
|
6bfc987349 | ||
|
|
6397b3603d | ||
|
|
4d08789101 | ||
|
|
a78a439c68 | ||
|
|
ed9ae4fc8c | ||
|
|
4a00468f38 | ||
|
|
ccf5e8c93a | ||
|
|
379d256eb9 | ||
|
|
cc449198c7 | ||
|
|
840f033f8c | ||
|
|
dcd6e0def7 | ||
|
|
9f79a59a41 |
420 changed files with 9691 additions and 3338 deletions
|
|
@ -1,16 +1,16 @@
|
||||||
# syntax=docker/dockerfile:1.7
|
# syntax=docker/dockerfile:1.7
|
||||||
|
|
||||||
# Base image for building
|
# Base image for building
|
||||||
ARG LITELLM_BUILD_IMAGE=cgr.dev/chainguard/wolfi-base@sha256:e624c5d5e42382ce7165ddafcbbf8e6769a24cbd02ea6114b880b05ae5ba2a8d
|
ARG LITELLM_BUILD_IMAGE=cgr.dev/chainguard/wolfi-base@sha256:1d95114038f76513a9ace6fca107d5582b08c65981f81f61cb56bf7fd2ef216d
|
||||||
|
|
||||||
# Runtime image
|
# Runtime image
|
||||||
ARG LITELLM_RUNTIME_IMAGE=cgr.dev/chainguard/wolfi-base@sha256:e624c5d5e42382ce7165ddafcbbf8e6769a24cbd02ea6114b880b05ae5ba2a8d
|
ARG LITELLM_RUNTIME_IMAGE=cgr.dev/chainguard/wolfi-base@sha256:1d95114038f76513a9ace6fca107d5582b08c65981f81f61cb56bf7fd2ef216d
|
||||||
ARG UV_IMAGE=ghcr.io/astral-sh/uv:0.11.7@sha256:240fb85ab0f263ef12f492d8476aa3a2e4e1e333f7d67fbdd923d00a506a516a
|
ARG UV_IMAGE=ghcr.io/astral-sh/uv:0.11.7@sha256:240fb85ab0f263ef12f492d8476aa3a2e4e1e333f7d67fbdd923d00a506a516a
|
||||||
# Pinned by digest like the other base images; bump explicitly on Node upgrades.
|
# Pinned by digest like the other base images; bump explicitly on Node upgrades.
|
||||||
ARG UI_BUILD_IMAGE=node:24.19-alpine3.24@sha256:d32cdf619f63fe0471182d08996dd516c6275bb5fd31ae06e55a570bd9e1ad43
|
ARG UI_BUILD_IMAGE=node:24.19-alpine3.24@sha256:d32cdf619f63fe0471182d08996dd516c6275bb5fd31ae06e55a570bd9e1ad43
|
||||||
# Checksum from https://www.pgbouncer.org/downloads/ (the Wolfi repo only carries 1.24.x)
|
# Checksum from https://www.pgbouncer.org/downloads/ (the Wolfi repo only carries 1.24.x)
|
||||||
ARG PGBOUNCER_VERSION=1.25.2
|
ARG PGBOUNCER_VERSION=1.26.0
|
||||||
ARG PGBOUNCER_SHA256=924ad35113fd0a71c8e2dbe85b5d03445532e2b7b37a9f8a48983beea238b332
|
ARG PGBOUNCER_SHA256=afd25dd61ee6775d37b40629b87ce08736b3e6955f3057bb212e410fbf21c71d
|
||||||
|
|
||||||
FROM $UV_IMAGE AS uvbin
|
FROM $UV_IMAGE AS uvbin
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
ARG LITELLM_BUILD_IMAGE=cgr.dev/chainguard/wolfi-base@sha256:e624c5d5e42382ce7165ddafcbbf8e6769a24cbd02ea6114b880b05ae5ba2a8d
|
ARG LITELLM_BUILD_IMAGE=cgr.dev/chainguard/wolfi-base@sha256:1d95114038f76513a9ace6fca107d5582b08c65981f81f61cb56bf7fd2ef216d
|
||||||
ARG LITELLM_RUNTIME_IMAGE=cgr.dev/chainguard/wolfi-base@sha256:e624c5d5e42382ce7165ddafcbbf8e6769a24cbd02ea6114b880b05ae5ba2a8d
|
ARG LITELLM_RUNTIME_IMAGE=cgr.dev/chainguard/wolfi-base@sha256:1d95114038f76513a9ace6fca107d5582b08c65981f81f61cb56bf7fd2ef216d
|
||||||
ARG UV_IMAGE=ghcr.io/astral-sh/uv:0.11.7@sha256:240fb85ab0f263ef12f492d8476aa3a2e4e1e333f7d67fbdd923d00a506a516a
|
ARG UV_IMAGE=ghcr.io/astral-sh/uv:0.11.7@sha256:240fb85ab0f263ef12f492d8476aa3a2e4e1e333f7d67fbdd923d00a506a516a
|
||||||
|
|
||||||
FROM $UV_IMAGE AS uvbin
|
FROM $UV_IMAGE AS uvbin
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,16 @@
|
||||||
# syntax=docker/dockerfile:1.7
|
# syntax=docker/dockerfile:1.7
|
||||||
|
|
||||||
# Base image for building
|
# Base image for building
|
||||||
ARG LITELLM_BUILD_IMAGE=cgr.dev/chainguard/wolfi-base@sha256:e624c5d5e42382ce7165ddafcbbf8e6769a24cbd02ea6114b880b05ae5ba2a8d
|
ARG LITELLM_BUILD_IMAGE=cgr.dev/chainguard/wolfi-base@sha256:1d95114038f76513a9ace6fca107d5582b08c65981f81f61cb56bf7fd2ef216d
|
||||||
|
|
||||||
# Runtime image
|
# Runtime image
|
||||||
ARG LITELLM_RUNTIME_IMAGE=cgr.dev/chainguard/wolfi-base@sha256:e624c5d5e42382ce7165ddafcbbf8e6769a24cbd02ea6114b880b05ae5ba2a8d
|
ARG LITELLM_RUNTIME_IMAGE=cgr.dev/chainguard/wolfi-base@sha256:1d95114038f76513a9ace6fca107d5582b08c65981f81f61cb56bf7fd2ef216d
|
||||||
ARG UV_IMAGE=ghcr.io/astral-sh/uv:0.11.7@sha256:240fb85ab0f263ef12f492d8476aa3a2e4e1e333f7d67fbdd923d00a506a516a
|
ARG UV_IMAGE=ghcr.io/astral-sh/uv:0.11.7@sha256:240fb85ab0f263ef12f492d8476aa3a2e4e1e333f7d67fbdd923d00a506a516a
|
||||||
# Pinned by digest like the other base images; bump explicitly on Node upgrades.
|
# Pinned by digest like the other base images; bump explicitly on Node upgrades.
|
||||||
ARG UI_BUILD_IMAGE=node:24.19-alpine3.24@sha256:d32cdf619f63fe0471182d08996dd516c6275bb5fd31ae06e55a570bd9e1ad43
|
ARG UI_BUILD_IMAGE=node:24.19-alpine3.24@sha256:d32cdf619f63fe0471182d08996dd516c6275bb5fd31ae06e55a570bd9e1ad43
|
||||||
# Checksum from https://www.pgbouncer.org/downloads/ (the Wolfi repo only carries 1.24.x)
|
# Checksum from https://www.pgbouncer.org/downloads/ (the Wolfi repo only carries 1.24.x)
|
||||||
ARG PGBOUNCER_VERSION=1.25.2
|
ARG PGBOUNCER_VERSION=1.26.0
|
||||||
ARG PGBOUNCER_SHA256=924ad35113fd0a71c8e2dbe85b5d03445532e2b7b37a9f8a48983beea238b332
|
ARG PGBOUNCER_SHA256=afd25dd61ee6775d37b40629b87ce08736b3e6955f3057bb212e410fbf21c71d
|
||||||
|
|
||||||
FROM $UV_IMAGE AS uvbin
|
FROM $UV_IMAGE AS uvbin
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,15 @@
|
||||||
# syntax=docker/dockerfile:1.7
|
# syntax=docker/dockerfile:1.7
|
||||||
|
|
||||||
# Base images
|
# Base images
|
||||||
ARG LITELLM_BUILD_IMAGE=cgr.dev/chainguard/wolfi-base@sha256:e624c5d5e42382ce7165ddafcbbf8e6769a24cbd02ea6114b880b05ae5ba2a8d
|
ARG LITELLM_BUILD_IMAGE=cgr.dev/chainguard/wolfi-base@sha256:1d95114038f76513a9ace6fca107d5582b08c65981f81f61cb56bf7fd2ef216d
|
||||||
ARG LITELLM_RUNTIME_IMAGE=cgr.dev/chainguard/wolfi-base@sha256:e624c5d5e42382ce7165ddafcbbf8e6769a24cbd02ea6114b880b05ae5ba2a8d
|
ARG LITELLM_RUNTIME_IMAGE=cgr.dev/chainguard/wolfi-base@sha256:1d95114038f76513a9ace6fca107d5582b08c65981f81f61cb56bf7fd2ef216d
|
||||||
ARG PROXY_EXTRAS_SOURCE=published
|
ARG PROXY_EXTRAS_SOURCE=published
|
||||||
ARG UV_IMAGE=ghcr.io/astral-sh/uv:0.11.7@sha256:240fb85ab0f263ef12f492d8476aa3a2e4e1e333f7d67fbdd923d00a506a516a
|
ARG UV_IMAGE=ghcr.io/astral-sh/uv:0.11.7@sha256:240fb85ab0f263ef12f492d8476aa3a2e4e1e333f7d67fbdd923d00a506a516a
|
||||||
# Pinned by digest like the other base images; bump explicitly on Node upgrades.
|
# Pinned by digest like the other base images; bump explicitly on Node upgrades.
|
||||||
ARG UI_BUILD_IMAGE=node:24.19-alpine3.24@sha256:d32cdf619f63fe0471182d08996dd516c6275bb5fd31ae06e55a570bd9e1ad43
|
ARG UI_BUILD_IMAGE=node:24.19-alpine3.24@sha256:d32cdf619f63fe0471182d08996dd516c6275bb5fd31ae06e55a570bd9e1ad43
|
||||||
# Checksum from https://www.pgbouncer.org/downloads/ (the Wolfi repo only carries 1.24.x)
|
# Checksum from https://www.pgbouncer.org/downloads/ (the Wolfi repo only carries 1.24.x)
|
||||||
ARG PGBOUNCER_VERSION=1.25.2
|
ARG PGBOUNCER_VERSION=1.26.0
|
||||||
ARG PGBOUNCER_SHA256=924ad35113fd0a71c8e2dbe85b5d03445532e2b7b37a9f8a48983beea238b332
|
ARG PGBOUNCER_SHA256=afd25dd61ee6775d37b40629b87ce08736b3e6955f3057bb212e410fbf21c71d
|
||||||
|
|
||||||
FROM $UV_IMAGE AS uvbin
|
FROM $UV_IMAGE AS uvbin
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ from typing import TYPE_CHECKING, Final, List, Literal, Optional, Tuple, cast
|
||||||
from litellm._logging import verbose_proxy_logger
|
from litellm._logging import verbose_proxy_logger
|
||||||
from litellm._uuid import uuid
|
from litellm._uuid import uuid
|
||||||
from litellm.constants import (
|
from litellm.constants import (
|
||||||
|
CLI_SESSION_KEY_PREFIX,
|
||||||
MANAGED_OBJECT_STALENESS_CUTOFF_DAYS,
|
MANAGED_OBJECT_STALENESS_CUTOFF_DAYS,
|
||||||
MAX_OBJECTS_PER_POLL_CYCLE,
|
MAX_OBJECTS_PER_POLL_CYCLE,
|
||||||
)
|
)
|
||||||
|
|
@ -112,10 +113,12 @@ class CheckBatchCost:
|
||||||
verbose_proxy_logger.error(f"CheckBatchCost: could not look up user {user_id} for batch {batch_id}: {e}")
|
verbose_proxy_logger.error(f"CheckBatchCost: could not look up user {user_id} for batch {batch_id}: {e}")
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
async def _get_key_alias(self, batch_id: str, api_key: str | None) -> str | None:
|
async def _get_key_alias(self, batch_id: str, api_key: str | None, created_by: str | None) -> str | None:
|
||||||
"""Resolve the creating virtual key's alias from its hashed token."""
|
"""Resolve the creating virtual key's alias from its hashed token."""
|
||||||
if not api_key:
|
if not api_key:
|
||||||
return None
|
return None
|
||||||
|
if created_by and api_key == f"{CLI_SESSION_KEY_PREFIX}-{created_by}":
|
||||||
|
return api_key
|
||||||
try:
|
try:
|
||||||
key_row: prisma_models.LiteLLM_VerificationToken | None = (
|
key_row: prisma_models.LiteLLM_VerificationToken | None = (
|
||||||
await self.prisma_client.db.litellm_verificationtoken.find_unique(
|
await self.prisma_client.db.litellm_verificationtoken.find_unique(
|
||||||
|
|
@ -204,7 +207,7 @@ class CheckBatchCost:
|
||||||
**(await self._get_user_info(batch_id, job.created_by)),
|
**(await self._get_user_info(batch_id, job.created_by)),
|
||||||
}
|
}
|
||||||
|
|
||||||
key_alias = await self._get_key_alias(batch_id, api_key)
|
key_alias = await self._get_key_alias(batch_id, api_key, job.created_by)
|
||||||
if key_alias is not None:
|
if key_alias is not None:
|
||||||
metadata["user_api_key_alias"] = key_alias
|
metadata["user_api_key_alias"] = key_alias
|
||||||
team_alias = await self._get_team_alias(team_id)
|
team_alias = await self._get_team_alias(team_id)
|
||||||
|
|
|
||||||
|
|
@ -50,6 +50,7 @@ from litellm.proxy._types import (
|
||||||
ProxyException,
|
ProxyException,
|
||||||
UserAPIKeyAuth,
|
UserAPIKeyAuth,
|
||||||
)
|
)
|
||||||
|
from litellm.proxy.litellm_pre_call_utils import LiteLLMProxyRequestSetup
|
||||||
from litellm.proxy.openai_files_endpoints.common_utils import (
|
from litellm.proxy.openai_files_endpoints.common_utils import (
|
||||||
BATCH_CREATE_HIDDEN_PARAM,
|
BATCH_CREATE_HIDDEN_PARAM,
|
||||||
FILE_LIST_CONTINUATION_CHUNK_SIZE,
|
FILE_LIST_CONTINUATION_CHUNK_SIZE,
|
||||||
|
|
@ -359,7 +360,7 @@ class _PROXY_LiteLLMManagedFiles(CustomLogger, BaseFileEndpoints):
|
||||||
|
|
||||||
from prisma import Json
|
from prisma import Json
|
||||||
|
|
||||||
api_key = user_api_key_dict.api_key or None
|
api_key = LiteLLMProxyRequestSetup.get_logged_api_key(user_api_key_dict) or None
|
||||||
attribution_columns = (
|
attribution_columns = (
|
||||||
{
|
{
|
||||||
**({"api_key": api_key} if api_key is not None else {}),
|
**({"api_key": api_key} if api_key is not None else {}),
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
[project]
|
[project]
|
||||||
name = "litellm-enterprise"
|
name = "litellm-enterprise"
|
||||||
version = "0.1.69"
|
version = "0.1.69.post1"
|
||||||
description = "Package for LiteLLM Enterprise features"
|
description = "Package for LiteLLM Enterprise features"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
requires-python = ">=3.9"
|
requires-python = ">=3.9"
|
||||||
|
|
@ -26,7 +26,7 @@ required-version = ">=0.10.9"
|
||||||
module-root = ""
|
module-root = ""
|
||||||
|
|
||||||
[tool.commitizen]
|
[tool.commitizen]
|
||||||
version = "0.1.69"
|
version = "0.1.69.post1"
|
||||||
version_files = [
|
version_files = [
|
||||||
"pyproject.toml:^version",
|
"pyproject.toml:^version",
|
||||||
"../pyproject.toml:litellm-enterprise==",
|
"../pyproject.toml:litellm-enterprise==",
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
ARG LITELLM_BUILD_IMAGE=cgr.dev/chainguard/wolfi-base@sha256:e624c5d5e42382ce7165ddafcbbf8e6769a24cbd02ea6114b880b05ae5ba2a8d
|
ARG LITELLM_BUILD_IMAGE=cgr.dev/chainguard/wolfi-base@sha256:1d95114038f76513a9ace6fca107d5582b08c65981f81f61cb56bf7fd2ef216d
|
||||||
ARG LITELLM_RUNTIME_IMAGE=cgr.dev/chainguard/wolfi-base@sha256:e624c5d5e42382ce7165ddafcbbf8e6769a24cbd02ea6114b880b05ae5ba2a8d
|
ARG LITELLM_RUNTIME_IMAGE=cgr.dev/chainguard/wolfi-base@sha256:1d95114038f76513a9ace6fca107d5582b08c65981f81f61cb56bf7fd2ef216d
|
||||||
ARG UV_IMAGE=ghcr.io/astral-sh/uv:0.11.7@sha256:240fb85ab0f263ef12f492d8476aa3a2e4e1e333f7d67fbdd923d00a506a516a
|
ARG UV_IMAGE=ghcr.io/astral-sh/uv:0.11.7@sha256:240fb85ab0f263ef12f492d8476aa3a2e4e1e333f7d67fbdd923d00a506a516a
|
||||||
# Checksum from https://www.pgbouncer.org/downloads/ (the Wolfi repo only carries 1.24.x)
|
# Checksum from https://www.pgbouncer.org/downloads/ (the Wolfi repo only carries 1.24.x)
|
||||||
ARG PGBOUNCER_VERSION=1.25.2
|
ARG PGBOUNCER_VERSION=1.26.0
|
||||||
ARG PGBOUNCER_SHA256=924ad35113fd0a71c8e2dbe85b5d03445532e2b7b37a9f8a48983beea238b332
|
ARG PGBOUNCER_SHA256=afd25dd61ee6775d37b40629b87ce08736b3e6955f3057bb212e410fbf21c71d
|
||||||
|
|
||||||
FROM $UV_IMAGE AS uvbin
|
FROM $UV_IMAGE AS uvbin
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,2 +1 @@
|
||||||
-- CreateIndex
|
SELECT 1;
|
||||||
CREATE INDEX IF NOT EXISTS "LiteLLM_SpendLogs_api_key_startTime_idx" ON "LiteLLM_SpendLogs"("api_key", "startTime");
|
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1 @@
|
||||||
-- CreateIndex (CONCURRENTLY)
|
SELECT 1;
|
||||||
--
|
|
||||||
-- Disclaimer:
|
|
||||||
-- - CREATE INDEX CONCURRENTLY cannot run inside a transaction. This migration must stay a
|
|
||||||
-- single statement so Prisma Migrate on PostgreSQL can apply it outside a transaction.
|
|
||||||
-- - Builds are slower and use more I/O than a blocking CREATE INDEX; if the build is
|
|
||||||
-- interrupted, Postgres may leave an INVALID index that must be dropped and recreated.
|
|
||||||
-- - Do not edit this file after it has been applied to any database: Prisma checksums
|
|
||||||
-- migrations; add a new migration instead.
|
|
||||||
-- - Requires PostgreSQL that supports CONCURRENTLY with IF NOT EXISTS (use a new migration
|
|
||||||
-- without IF NOT EXISTS if you must support older versions).
|
|
||||||
CREATE INDEX CONCURRENTLY IF NOT EXISTS "LiteLLM_SpendLogs_litellm_call_id_idx" ON "LiteLLM_SpendLogs"("litellm_call_id");
|
|
||||||
|
|
|
||||||
|
|
@ -115,6 +115,17 @@ _SPEND_LOGS_PK_CLAUSE_RE = re.compile(
|
||||||
re.IGNORECASE,
|
re.IGNORECASE,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
HAND_BUILT_SPEND_LOGS_INDEXES: Final = frozenset(
|
||||||
|
{
|
||||||
|
"LiteLLM_SpendLogs_api_key_startTime_idx",
|
||||||
|
"LiteLLM_SpendLogs_litellm_call_id_idx",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
_CREATE_INDEX_RE: Final = re.compile(
|
||||||
|
r'^\s*CREATE\s+(?:UNIQUE\s+)?INDEX\s+(?:CONCURRENTLY\s+)?(?:IF\s+NOT\s+EXISTS\s+)?"(?P<index>[^"]+)"\s+ON\b',
|
||||||
|
re.IGNORECASE,
|
||||||
|
)
|
||||||
|
|
||||||
PARTITIONED_SPEND_LOGS_PUSH_ERROR = (
|
PARTITIONED_SPEND_LOGS_PUSH_ERROR = (
|
||||||
"LiteLLM_SpendLogs is a partitioned table (see db_scripts/partition_spend_logs.sql), "
|
"LiteLLM_SpendLogs is a partitioned table (see db_scripts/partition_spend_logs.sql), "
|
||||||
"so its primary key must include the partition key (\"startTime\"). `prisma db push` "
|
"so its primary key must include the partition key (\"startTime\"). `prisma db push` "
|
||||||
|
|
@ -165,6 +176,21 @@ def filter_partitioned_spend_logs_diff(diff_sql: str) -> str:
|
||||||
return "".join(f"{statement};\n\n" for statement in kept)
|
return "".join(f"{statement};\n\n" for statement in kept)
|
||||||
|
|
||||||
|
|
||||||
|
def filter_hand_built_spend_logs_index_diff(diff_sql: str) -> str:
|
||||||
|
"""The `prisma migrate diff` script without the statements that create the
|
||||||
|
LiteLLM_SpendLogs indexes schema.prisma declares but the migrations deliberately
|
||||||
|
leave for operators to build online."""
|
||||||
|
kept: Final = tuple(
|
||||||
|
statement for statement in diff_sql.split(";") if not _creates_hand_built_spend_logs_index(statement)
|
||||||
|
)
|
||||||
|
return ";".join(kept) if any(part.strip() for part in kept) else ""
|
||||||
|
|
||||||
|
|
||||||
|
def _creates_hand_built_spend_logs_index(statement: str) -> bool:
|
||||||
|
match: Final = _CREATE_INDEX_RE.match(_without_sql_comments(statement))
|
||||||
|
return match is not None and match["index"] in HAND_BUILT_SPEND_LOGS_INDEXES
|
||||||
|
|
||||||
|
|
||||||
def _migration_timestamp(name: str) -> int:
|
def _migration_timestamp(name: str) -> int:
|
||||||
"""Extract the leading `YYYYMMDDHHMMSS` timestamp from a migration name.
|
"""Extract the leading `YYYYMMDDHHMMSS` timestamp from a migration name.
|
||||||
|
|
||||||
|
|
@ -433,6 +459,20 @@ class ProxyExtrasDBManager:
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _filter_drift_script(diff_sql: str) -> str:
|
||||||
|
"""The drift script without the hand-built SpendLogs indexes and, when
|
||||||
|
LiteLLM_SpendLogs is partitioned, without its primary-key rewrite and
|
||||||
|
partitioning artifacts."""
|
||||||
|
without_indexes: Final = filter_hand_built_spend_logs_index_diff(diff_sql)
|
||||||
|
if not ProxyExtrasDBManager.spend_logs_is_partitioned():
|
||||||
|
return without_indexes
|
||||||
|
logger.info(
|
||||||
|
"LiteLLM_SpendLogs is partitioned; removed its primary-key "
|
||||||
|
"rewrite and partitioning artifacts from the drift script"
|
||||||
|
)
|
||||||
|
return filter_partitioned_spend_logs_diff(without_indexes)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _resolve_all_migrations(
|
def _resolve_all_migrations(
|
||||||
migrations_dir: str, schema_path: str, mark_all_applied: bool = True
|
migrations_dir: str, schema_path: str, mark_all_applied: bool = True
|
||||||
|
|
@ -513,21 +553,14 @@ class ProxyExtrasDBManager:
|
||||||
return
|
return
|
||||||
logger.info(f"Migration diff created at {diff_sql_path}")
|
logger.info(f"Migration diff created at {diff_sql_path}")
|
||||||
|
|
||||||
if ProxyExtrasDBManager.spend_logs_is_partitioned():
|
filtered_sql: Final = ProxyExtrasDBManager._filter_drift_script(diff_sql_path.read_text())
|
||||||
filtered_sql = filter_partitioned_spend_logs_diff(
|
diff_sql_path.write_text(filtered_sql)
|
||||||
diff_sql_path.read_text()
|
if not filtered_sql.strip():
|
||||||
)
|
logger.info("Drift script is empty after filtering; nothing to apply")
|
||||||
diff_sql_path.write_text(filtered_sql)
|
if not mark_all_applied:
|
||||||
logger.info(
|
|
||||||
"LiteLLM_SpendLogs is partitioned; removed its primary-key "
|
|
||||||
"rewrite and partitioning artifacts from the drift script"
|
|
||||||
)
|
|
||||||
if not filtered_sql.strip():
|
|
||||||
logger.info("Drift script is empty after filtering; nothing to apply")
|
|
||||||
if not mark_all_applied:
|
|
||||||
return
|
|
||||||
ProxyExtrasDBManager._mark_migrations_applied(migrations_dir)
|
|
||||||
return
|
return
|
||||||
|
ProxyExtrasDBManager._mark_migrations_applied(migrations_dir)
|
||||||
|
return
|
||||||
|
|
||||||
# 2. Run prisma db execute to apply the migration
|
# 2. Run prisma db execute to apply the migration
|
||||||
applied_ok = False
|
applied_ok = False
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
[project]
|
[project]
|
||||||
name = "litellm-proxy-extras"
|
name = "litellm-proxy-extras"
|
||||||
version = "0.4.100"
|
version = "0.4.100.post1"
|
||||||
description = "Additional files for the LiteLLM Proxy. Reduces the size of the main litellm package."
|
description = "Additional files for the LiteLLM Proxy. Reduces the size of the main litellm package."
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
requires-python = ">=3.9"
|
requires-python = ">=3.9"
|
||||||
|
|
@ -26,7 +26,7 @@ required-version = ">=0.10.9"
|
||||||
module-root = ""
|
module-root = ""
|
||||||
|
|
||||||
[tool.commitizen]
|
[tool.commitizen]
|
||||||
version = "0.4.100"
|
version = "0.4.100.post1"
|
||||||
version_files = [
|
version_files = [
|
||||||
"pyproject.toml:^version",
|
"pyproject.toml:^version",
|
||||||
"../pyproject.toml:litellm-proxy-extras==",
|
"../pyproject.toml:litellm-proxy-extras==",
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@
|
||||||
"computer-use-2025-11-24": "computer-use-2025-11-24",
|
"computer-use-2025-11-24": "computer-use-2025-11-24",
|
||||||
"context-1m-2025-08-07": "context-1m-2025-08-07",
|
"context-1m-2025-08-07": "context-1m-2025-08-07",
|
||||||
"context-management-2025-06-27": "context-management-2025-06-27",
|
"context-management-2025-06-27": "context-management-2025-06-27",
|
||||||
|
"dangerous-tool-use-2026-09-03": "dangerous-tool-use-2026-09-03",
|
||||||
"effort-2025-11-24": "effort-2025-11-24",
|
"effort-2025-11-24": "effort-2025-11-24",
|
||||||
"fast-mode-2026-02-01": "fast-mode-2026-02-01",
|
"fast-mode-2026-02-01": "fast-mode-2026-02-01",
|
||||||
"files-api-2025-04-14": "files-api-2025-04-14",
|
"files-api-2025-04-14": "files-api-2025-04-14",
|
||||||
|
|
@ -44,6 +45,7 @@
|
||||||
"computer-use-2025-11-24": "computer-use-2025-11-24",
|
"computer-use-2025-11-24": "computer-use-2025-11-24",
|
||||||
"context-1m-2025-08-07": "context-1m-2025-08-07",
|
"context-1m-2025-08-07": "context-1m-2025-08-07",
|
||||||
"context-management-2025-06-27": "context-management-2025-06-27",
|
"context-management-2025-06-27": "context-management-2025-06-27",
|
||||||
|
"dangerous-tool-use-2026-09-03": "dangerous-tool-use-2026-09-03",
|
||||||
"effort-2025-11-24": "effort-2025-11-24",
|
"effort-2025-11-24": "effort-2025-11-24",
|
||||||
"fast-mode-2026-02-01": null,
|
"fast-mode-2026-02-01": null,
|
||||||
"files-api-2025-04-14": "files-api-2025-04-14",
|
"files-api-2025-04-14": "files-api-2025-04-14",
|
||||||
|
|
@ -76,6 +78,7 @@
|
||||||
"computer-use-2025-11-24": "computer-use-2025-11-24",
|
"computer-use-2025-11-24": "computer-use-2025-11-24",
|
||||||
"context-1m-2025-08-07": "context-1m-2025-08-07",
|
"context-1m-2025-08-07": "context-1m-2025-08-07",
|
||||||
"context-management-2025-06-27": null,
|
"context-management-2025-06-27": null,
|
||||||
|
"dangerous-tool-use-2026-09-03": null,
|
||||||
"effort-2025-11-24": "effort-2025-11-24",
|
"effort-2025-11-24": "effort-2025-11-24",
|
||||||
"fast-mode-2026-02-01": null,
|
"fast-mode-2026-02-01": null,
|
||||||
"files-api-2025-04-14": null,
|
"files-api-2025-04-14": null,
|
||||||
|
|
@ -109,6 +112,7 @@
|
||||||
"computer-use-2025-11-24": "computer-use-2025-11-24",
|
"computer-use-2025-11-24": "computer-use-2025-11-24",
|
||||||
"context-1m-2025-08-07": "context-1m-2025-08-07",
|
"context-1m-2025-08-07": "context-1m-2025-08-07",
|
||||||
"context-management-2025-06-27": "context-management-2025-06-27",
|
"context-management-2025-06-27": "context-management-2025-06-27",
|
||||||
|
"dangerous-tool-use-2026-09-03": "dangerous-tool-use-2026-09-03",
|
||||||
"effort-2025-11-24": "effort-2025-11-24",
|
"effort-2025-11-24": "effort-2025-11-24",
|
||||||
"fast-mode-2026-02-01": null,
|
"fast-mode-2026-02-01": null,
|
||||||
"files-api-2025-04-14": null,
|
"files-api-2025-04-14": null,
|
||||||
|
|
@ -142,6 +146,7 @@
|
||||||
"computer-use-2025-11-24": "computer-use-2025-11-24",
|
"computer-use-2025-11-24": "computer-use-2025-11-24",
|
||||||
"context-1m-2025-08-07": "context-1m-2025-08-07",
|
"context-1m-2025-08-07": "context-1m-2025-08-07",
|
||||||
"context-management-2025-06-27": "context-management-2025-06-27",
|
"context-management-2025-06-27": "context-management-2025-06-27",
|
||||||
|
"dangerous-tool-use-2026-09-03": "dangerous-tool-use-2026-09-03",
|
||||||
"effort-2025-11-24": null,
|
"effort-2025-11-24": null,
|
||||||
"fast-mode-2026-02-01": null,
|
"fast-mode-2026-02-01": null,
|
||||||
"files-api-2025-04-14": null,
|
"files-api-2025-04-14": null,
|
||||||
|
|
@ -175,6 +180,7 @@
|
||||||
"computer-use-2025-11-24": "computer-use-2025-11-24",
|
"computer-use-2025-11-24": "computer-use-2025-11-24",
|
||||||
"context-1m-2025-08-07": "context-1m-2025-08-07",
|
"context-1m-2025-08-07": "context-1m-2025-08-07",
|
||||||
"context-management-2025-06-27": "context-management-2025-06-27",
|
"context-management-2025-06-27": "context-management-2025-06-27",
|
||||||
|
"dangerous-tool-use-2026-09-03": null,
|
||||||
"effort-2025-11-24": "effort-2025-11-24",
|
"effort-2025-11-24": "effort-2025-11-24",
|
||||||
"fast-mode-2026-02-01": "fast-mode-2026-02-01",
|
"fast-mode-2026-02-01": "fast-mode-2026-02-01",
|
||||||
"files-api-2025-04-14": "files-api-2025-04-14",
|
"files-api-2025-04-14": "files-api-2025-04-14",
|
||||||
|
|
|
||||||
|
|
@ -188,7 +188,7 @@ def _reasoning_items_from_output_items(output_items: Sequence[object]) -> tuple[
|
||||||
|
|
||||||
|
|
||||||
def _as_chat_reasoning_items(
|
def _as_chat_reasoning_items(
|
||||||
reasoning_items: Sequence[_BuiltReasoningItem],
|
reasoning_items: Sequence[_BuiltReasoningItem | ChatCompletionReasoningItem],
|
||||||
) -> list[ChatCompletionReasoningItem] | None:
|
) -> list[ChatCompletionReasoningItem] | None:
|
||||||
if not reasoning_items:
|
if not reasoning_items:
|
||||||
return None
|
return None
|
||||||
|
|
@ -782,7 +782,32 @@ class LiteLLMResponsesTransformationHandler(CompletionTransformationBridge):
|
||||||
else:
|
else:
|
||||||
pass # don't fail request if item in list is not supported
|
pass # don't fail request if item in list is not supported
|
||||||
|
|
||||||
# If we accumulated tool calls, create a single choice with all of them
|
if accumulated_tool_calls and choices:
|
||||||
|
last_choice: Final = choices[-1]
|
||||||
|
last_reasoning_content: Final = getattr(last_choice.message, "reasoning_content", None)
|
||||||
|
last_reasoning_items: Final = getattr(last_choice.message, "reasoning_items", None)
|
||||||
|
merged_reasoning_content: Final = (
|
||||||
|
" ".join(value for value in (last_reasoning_content, reasoning_content) if value) or None
|
||||||
|
)
|
||||||
|
merged_reasoning_items: Final = _as_chat_reasoning_items(
|
||||||
|
(
|
||||||
|
*(last_reasoning_items or ()),
|
||||||
|
*(() if pending_reasoning_item is None else (pending_reasoning_item,)),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
merged_message: Final = Message(
|
||||||
|
role=last_choice.message.role,
|
||||||
|
content=last_choice.message.content,
|
||||||
|
annotations=getattr(last_choice.message, "annotations", None),
|
||||||
|
tool_calls=accumulated_tool_calls,
|
||||||
|
reasoning_content=merged_reasoning_content,
|
||||||
|
reasoning_items=merged_reasoning_items,
|
||||||
|
)
|
||||||
|
return [
|
||||||
|
*choices[:-1],
|
||||||
|
Choices(message=merged_message, finish_reason="tool_calls", index=last_choice.index),
|
||||||
|
]
|
||||||
|
|
||||||
if accumulated_tool_calls:
|
if accumulated_tool_calls:
|
||||||
msg = Message(
|
msg = Message(
|
||||||
content=None,
|
content=None,
|
||||||
|
|
|
||||||
|
|
@ -1861,6 +1861,7 @@ SPEND_LOG_KEY_METADATA_CACHE_TTL: Final = 600
|
||||||
SPEND_LOG_KEY_METADATA_MISS_CACHE_TTL: Final = 30
|
SPEND_LOG_KEY_METADATA_MISS_CACHE_TTL: Final = 30
|
||||||
SPEND_LOG_KEY_METADATA_CACHE_MAX_ITEMS: Final = 10000
|
SPEND_LOG_KEY_METADATA_CACHE_MAX_ITEMS: Final = 10000
|
||||||
SPEND_LOG_KEY_METADATA_QUERY_TIMEOUT_MS: Final = 5000
|
SPEND_LOG_KEY_METADATA_QUERY_TIMEOUT_MS: Final = 5000
|
||||||
|
SPEND_LOG_KEY_METADATA_ROWS_PER_PROBE: Final = 100
|
||||||
# Short TTL for negative MCP access-group existence lookups. Keeps unauthenticated
|
# Short TTL for negative MCP access-group existence lookups. Keeps unauthenticated
|
||||||
# callers from forcing a DB query per request for unknown names, while bounding
|
# callers from forcing a DB query per request for unknown names, while bounding
|
||||||
# staleness so a transient DB error (which surfaces as an empty list) cannot
|
# staleness so a transient DB error (which surfaces as an empty list) cannot
|
||||||
|
|
@ -2084,16 +2085,12 @@ MCP_SPEND_LOG_MODEL_PREFIX: Final[str] = "MCP: "
|
||||||
PTU_SENTINEL_API_KEY: Final[str] = "__ptu_flat_cost__"
|
PTU_SENTINEL_API_KEY: Final[str] = "__ptu_flat_cost__"
|
||||||
PTU_ROLLUP_JOB_ID: Final[str] = "ptu_flat_cost_rollup_job"
|
PTU_ROLLUP_JOB_ID: Final[str] = "ptu_flat_cost_rollup_job"
|
||||||
PTU_ROLLUP_LOCK_TTL_SECONDS: Final[int] = 900
|
PTU_ROLLUP_LOCK_TTL_SECONDS: Final[int] = 900
|
||||||
USAGE_TOP_API_KEYS_LIMIT: Final[int] = int(os.getenv("USAGE_TOP_API_KEYS_LIMIT", "100"))
|
|
||||||
# Furthest back the catch-up pass looks for unpriced PTU days when a deployment
|
# Furthest back the catch-up pass looks for unpriced PTU days when a deployment
|
||||||
# declares no ptu_effective_from, bounding the scan for an open-ended window.
|
# declares no ptu_effective_from, bounding the scan for an open-ended window.
|
||||||
PTU_ROLLUP_MAX_BACKFILL_DAYS: Final[int] = 90
|
PTU_ROLLUP_MAX_BACKFILL_DAYS: Final[int] = 90
|
||||||
# Deployments named in the lapsed-window alert before it is truncated, so a fleet-wide
|
# Deployments named in the lapsed-window alert before it is truncated, so a fleet-wide
|
||||||
# expiry cannot produce an alert too large for the channel delivering it.
|
# expiry cannot produce an alert too large for the channel delivering it.
|
||||||
PTU_LAPSED_ALERT_LIMIT: Final[int] = 10
|
PTU_LAPSED_ALERT_LIMIT: Final[int] = 10
|
||||||
DAILY_GLOBAL_SPEND_RECONCILE_JOB_ID: Final[str] = "daily_global_spend_reconcile_job"
|
|
||||||
DAILY_GLOBAL_SPEND_RECONCILE_LOCK_TTL_SECONDS: Final[int] = 3600
|
|
||||||
DAILY_GLOBAL_SPEND_RECONCILED_THROUGH_PARAM: Final[str] = "daily_global_spend_reconciled_through"
|
|
||||||
# Slack allowed when deciding a sentinel row is stale. The row's updated_at and the
|
# Slack allowed when deciding a sentinel row is stale. The row's updated_at and the
|
||||||
# run's cutoff are stamped by different hosts, so clock skew between them must not let
|
# run's cutoff are stamped by different hosts, so clock skew between them must not let
|
||||||
# one run delete a charge another just wrote. A stale row is hours old and a concurrent
|
# one run delete a charge another just wrote. A stale row is hours old and a concurrent
|
||||||
|
|
|
||||||
|
|
@ -114,6 +114,7 @@ class SlackAlerting(CustomBatchLogger):
|
||||||
self.default_webhook_url = default_webhook_url
|
self.default_webhook_url = default_webhook_url
|
||||||
self.flush_lock = asyncio.Lock()
|
self.flush_lock = asyncio.Lock()
|
||||||
self.periodic_started = False
|
self.periodic_started = False
|
||||||
|
self._periodic_flush_task: asyncio.Task[None] | None = None
|
||||||
self.hanging_request_check = AlertingHangingRequestCheck(
|
self.hanging_request_check = AlertingHangingRequestCheck(
|
||||||
slack_alerting_object=self,
|
slack_alerting_object=self,
|
||||||
)
|
)
|
||||||
|
|
@ -125,6 +126,12 @@ class SlackAlerting(CustomBatchLogger):
|
||||||
self.digest_lock = asyncio.Lock()
|
self.digest_lock = asyncio.Lock()
|
||||||
super().__init__(**kwargs, flush_lock=self.flush_lock)
|
super().__init__(**kwargs, flush_lock=self.flush_lock)
|
||||||
|
|
||||||
|
def _ensure_periodic_flush_task(self) -> None:
|
||||||
|
if self.periodic_started and (self._periodic_flush_task is None or not self._periodic_flush_task.done()):
|
||||||
|
return
|
||||||
|
self._periodic_flush_task = asyncio.create_task(self.periodic_flush())
|
||||||
|
self.periodic_started = True
|
||||||
|
|
||||||
def update_values(
|
def update_values(
|
||||||
self,
|
self,
|
||||||
alerting: list | None = None,
|
alerting: list | None = None,
|
||||||
|
|
@ -137,17 +144,14 @@ class SlackAlerting(CustomBatchLogger):
|
||||||
):
|
):
|
||||||
if alerting is not None:
|
if alerting is not None:
|
||||||
self.alerting = alerting
|
self.alerting = alerting
|
||||||
asyncio.create_task(self.periodic_flush())
|
self._ensure_periodic_flush_task()
|
||||||
self.periodic_started = True
|
|
||||||
if alerting_threshold is not None:
|
if alerting_threshold is not None:
|
||||||
self.alerting_threshold = alerting_threshold
|
self.alerting_threshold = alerting_threshold
|
||||||
if alert_types is not None:
|
if alert_types is not None:
|
||||||
self.alert_types = alert_types
|
self.alert_types = alert_types
|
||||||
if alerting_args is not None:
|
if alerting_args is not None:
|
||||||
self.alerting_args = SlackAlertingArgs(**alerting_args)
|
self.alerting_args = SlackAlertingArgs(**alerting_args)
|
||||||
if not self.periodic_started:
|
self._ensure_periodic_flush_task()
|
||||||
asyncio.create_task(self.periodic_flush())
|
|
||||||
self.periodic_started = True
|
|
||||||
if alert_type_config is not None:
|
if alert_type_config is not None:
|
||||||
for key, val in alert_type_config.items():
|
for key, val in alert_type_config.items():
|
||||||
self.alert_type_config[key] = AlertTypeConfig(**val) if isinstance(val, dict) else val
|
self.alert_type_config[key] = AlertTypeConfig(**val) if isinstance(val, dict) else val
|
||||||
|
|
@ -1442,9 +1446,8 @@ Model Info:
|
||||||
return
|
return
|
||||||
|
|
||||||
# Start periodic flush if not already started
|
# Start periodic flush if not already started
|
||||||
if not self.periodic_started and self.alerting is not None and len(self.alerting) > 0:
|
if self.alerting is not None and len(self.alerting) > 0:
|
||||||
asyncio.create_task(self.periodic_flush())
|
self._ensure_periodic_flush_task()
|
||||||
self.periodic_started = True
|
|
||||||
|
|
||||||
if "webhook" in self.alerting and alert_type == "budget_alerts" and user_info is not None:
|
if "webhook" in self.alerting and alert_type == "budget_alerts" and user_info is not None:
|
||||||
await self.send_webhook_alert(webhook_event=user_info)
|
await self.send_webhook_alert(webhook_event=user_info)
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,7 @@ from litellm.types.integrations.anthropic_cache_control_hook import (
|
||||||
CacheControlMessageInjectionPoint,
|
CacheControlMessageInjectionPoint,
|
||||||
)
|
)
|
||||||
from litellm.types.llms.anthropic import (
|
from litellm.types.llms.anthropic import (
|
||||||
|
ANTHROPIC_TOOL_SEARCH_TOOL_TYPES,
|
||||||
AllAnthropicToolsValues,
|
AllAnthropicToolsValues,
|
||||||
AnthropicSystemMessageContent,
|
AnthropicSystemMessageContent,
|
||||||
)
|
)
|
||||||
|
|
@ -124,6 +125,16 @@ def _carries_cache_breakpoint(block: object) -> bool:
|
||||||
return isinstance(block, dict) and any(block.get(key) is not None for key in CACHE_BREAKPOINT_KEYS)
|
return isinstance(block, dict) and any(block.get(key) is not None for key in CACHE_BREAKPOINT_KEYS)
|
||||||
|
|
||||||
|
|
||||||
|
def _tool_carries_cache_breakpoint(tool: object) -> bool:
|
||||||
|
return _carries_cache_breakpoint(tool) or (
|
||||||
|
isinstance(tool, dict) and _carries_cache_breakpoint(tool.get("function"))
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def _chat_transform_drops_tool_cache_control(tool: object) -> bool:
|
||||||
|
return isinstance(tool, dict) and tool.get("type") in ANTHROPIC_TOOL_SEARCH_TOOL_TYPES
|
||||||
|
|
||||||
|
|
||||||
def _accepts_prompt_cache_breakpoint(block: object) -> bool:
|
def _accepts_prompt_cache_breakpoint(block: object) -> bool:
|
||||||
return isinstance(block, dict) and block.get("type") in OPENAI_PROMPT_CACHE_BREAKPOINT_BLOCK_TYPES
|
return isinstance(block, dict) and block.get("type") in OPENAI_PROMPT_CACHE_BREAKPOINT_BLOCK_TYPES
|
||||||
|
|
||||||
|
|
@ -134,6 +145,8 @@ def _accepts_prompt_cache_breakpoint(block: object) -> bool:
|
||||||
# rather than spending them on a list that is still missing some of their targets.
|
# rather than spending them on a list that is still missing some of their targets.
|
||||||
CARRY_UNMATCHED_MESSAGE_POINTS: Final = "_litellm_carry_unmatched_cache_control_points"
|
CARRY_UNMATCHED_MESSAGE_POINTS: Final = "_litellm_carry_unmatched_cache_control_points"
|
||||||
|
|
||||||
|
EXTERNAL_BREAKPOINTS_STAMP: Final = "_litellm_external_breakpoints"
|
||||||
|
|
||||||
|
|
||||||
class AnthropicCacheControlHook(CustomPromptManagement):
|
class AnthropicCacheControlHook(CustomPromptManagement):
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
|
@ -199,19 +212,13 @@ class AnthropicCacheControlHook(CustomPromptManagement):
|
||||||
# Create a deep copy of messages to avoid modifying the original list
|
# Create a deep copy of messages to avoid modifying the original list
|
||||||
processed_messages = copy.deepcopy(messages)
|
processed_messages = copy.deepcopy(messages)
|
||||||
|
|
||||||
# Separate message-level and non-message-level injection points
|
message_points: Final = tuple(
|
||||||
message_points: Final[list[CacheControlMessageInjectionPoint]] = []
|
cast(CacheControlMessageInjectionPoint, point)
|
||||||
remaining_points: Final[list[CacheControlInjectionPoint]] = []
|
for point in injection_points
|
||||||
for point in injection_points:
|
if point.get("location") == "message"
|
||||||
if point.get("location") == "message":
|
)
|
||||||
message_points.append(cast(CacheControlMessageInjectionPoint, point))
|
remaining_points: Final = tuple(point for point in injection_points if point.get("location") != "message")
|
||||||
else:
|
|
||||||
remaining_points.append(point)
|
|
||||||
|
|
||||||
# Non-message points (currently Bedrock tool_config) are handled in the
|
|
||||||
# provider transform, where each tool_config point appends at most one
|
|
||||||
# cachePoint to the tools. That block also counts toward Anthropic's
|
|
||||||
# limit, so reserve a slot for it here to leave room.
|
|
||||||
stamped_dialect: Final = injection_points[0].get("_litellm_openai_dialect")
|
stamped_dialect: Final = injection_points[0].get("_litellm_openai_dialect")
|
||||||
openai_dialect: Final = (
|
openai_dialect: Final = (
|
||||||
stamped_dialect
|
stamped_dialect
|
||||||
|
|
@ -236,8 +243,10 @@ class AnthropicCacheControlHook(CustomPromptManagement):
|
||||||
if carry_unmatched
|
if carry_unmatched
|
||||||
else tuple(message_points)
|
else tuple(message_points)
|
||||||
)
|
)
|
||||||
reserved_blocks: Final = (
|
stamped_external: Final = injection_points[0].get(EXTERNAL_BREAKPOINTS_STAMP)
|
||||||
1 if not openai_dialect and any(p.get("location") == "tool_config" for p in remaining_points) else 0
|
external_breakpoints: Final = stamped_external if isinstance(stamped_external, int) else 0
|
||||||
|
reserved_blocks: Final = AnthropicCacheControlHook._blocks_reserved_outside_messages(
|
||||||
|
remaining_points, external_breakpoints, openai_dialect
|
||||||
)
|
)
|
||||||
breakpoints_before: Final = AnthropicCacheControlHook.count_request_cache_breakpoints(processed_messages)
|
breakpoints_before: Final = AnthropicCacheControlHook.count_request_cache_breakpoints(processed_messages)
|
||||||
processed_messages = self._apply_message_injections(
|
processed_messages = self._apply_message_injections(
|
||||||
|
|
@ -254,14 +263,19 @@ class AnthropicCacheControlHook(CustomPromptManagement):
|
||||||
|
|
||||||
# Points this pass did not place: non-message ones for the provider transform, and
|
# Points this pass did not place: non-message ones for the provider transform, and
|
||||||
# the deferred role-targeted ones. Deferring is what reaches the Responses API's
|
# the deferred role-targeted ones. Deferring is what reaches the Responses API's
|
||||||
# `instructions`, which is only a system message once the bridge builds one. The
|
# `instructions`, which is only a system message once the bridge builds one. A later
|
||||||
# judged stamp is what makes it safe: the next pass must not re-judge points
|
# pass re-applies them safely: a target that already carries a mark is skipped and
|
||||||
# against messages this pass already marked (see `_should_stand_down`).
|
# the census counts every mark on the wire, litellm's own included.
|
||||||
carried_points: Final[Sequence[CacheControlInjectionPoint]] = (*remaining_points, *carried_message_points)
|
carried_points: Final[Sequence[CacheControlInjectionPoint]] = (
|
||||||
|
*AnthropicCacheControlHook._points_with_a_slot_left(
|
||||||
|
remaining_points,
|
||||||
|
AnthropicCacheControlHook.count_request_cache_breakpoints(processed_messages) + external_breakpoints,
|
||||||
|
openai_dialect,
|
||||||
|
),
|
||||||
|
*carried_message_points,
|
||||||
|
)
|
||||||
if carried_points:
|
if carried_points:
|
||||||
non_default_params["cache_control_injection_points"] = AnthropicCacheControlHook._stamped_as_judged(
|
non_default_params["cache_control_injection_points"] = list(carried_points)
|
||||||
carried_points
|
|
||||||
)
|
|
||||||
|
|
||||||
return model, processed_messages, non_default_params
|
return model, processed_messages, non_default_params
|
||||||
|
|
||||||
|
|
@ -296,6 +310,72 @@ class AnthropicCacheControlHook(CustomPromptManagement):
|
||||||
)
|
)
|
||||||
return system_blocks + sum(AnthropicCacheControlHook._count_cache_control_blocks(msg) for msg in messages)
|
return system_blocks + sum(AnthropicCacheControlHook._count_cache_control_blocks(msg) for msg in messages)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def count_external_cache_breakpoints(
|
||||||
|
tools: Iterable[object] | None, cache_control: object = None, request_kwargs: object = None
|
||||||
|
) -> int:
|
||||||
|
"""Client breakpoints outside messages and system that the provider cap still counts.
|
||||||
|
|
||||||
|
A tool carries its mark at the top level (Anthropic shape) or under ``function``
|
||||||
|
(OpenAI shape). A top-level ``cache_control`` is Anthropic's automatic caching,
|
||||||
|
which places one breakpoint of its own on top of the explicit ones. The
|
||||||
|
``extra_body`` envelope of ``request_kwargs`` is merged over the request on the
|
||||||
|
wire, so a ``tools`` or ``cache_control`` it carries replaces the direct value
|
||||||
|
and is counted in its place. Callers pass only the tools whose mark reaches the
|
||||||
|
provider on their path.
|
||||||
|
"""
|
||||||
|
extra_body: Final = (
|
||||||
|
_validated_object_mapping(AnthropicCacheControlHook._request_value(request_kwargs, "extra_body")) or {}
|
||||||
|
)
|
||||||
|
wire_cache_control: Final = extra_body.get("cache_control", cache_control)
|
||||||
|
wire_tools: Final = _validated_object_list(extra_body["tools"]) if "tools" in extra_body else tools
|
||||||
|
tool_blocks: Final = sum(1 for tool in wire_tools or () if _tool_carries_cache_breakpoint(tool))
|
||||||
|
envelope_blocks: Final = AnthropicCacheControlHook.count_request_cache_breakpoints(
|
||||||
|
_validated_object_list(extra_body.get("messages")) or (), extra_body.get("system")
|
||||||
|
)
|
||||||
|
return int(wire_cache_control is not None) + tool_blocks + envelope_blocks
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def count_external_cache_breakpoints_on_messages_route(
|
||||||
|
tools: Iterable[object] | None, cache_control: object, request_kwargs: object
|
||||||
|
) -> int:
|
||||||
|
"""The /v1/messages census before the route splits.
|
||||||
|
|
||||||
|
The native messages transforms drop the ``extra_body`` envelope while the
|
||||||
|
chat bridge merges it, so the cap reserves for whichever census is larger
|
||||||
|
rather than letting an envelope that unmarks a direct tool free a slot the
|
||||||
|
provider still counts.
|
||||||
|
"""
|
||||||
|
return max(
|
||||||
|
AnthropicCacheControlHook.count_external_cache_breakpoints(tools, cache_control),
|
||||||
|
AnthropicCacheControlHook.count_external_cache_breakpoints(tools, cache_control, request_kwargs),
|
||||||
|
)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _blocks_reserved_outside_messages(
|
||||||
|
remaining_points: Sequence[CacheControlInjectionPoint], external_breakpoints: int, openai_dialect: bool
|
||||||
|
) -> int:
|
||||||
|
"""Slots of the provider cap that the message census cannot see.
|
||||||
|
|
||||||
|
The client's breakpoints on tools and its automatic top-level ``cache_control``
|
||||||
|
are already on the wire, and a ``tool_config`` point becomes one more cachePoint
|
||||||
|
in the Bedrock converse transform. OpenAI's cap counts only its own block markers.
|
||||||
|
"""
|
||||||
|
if openai_dialect:
|
||||||
|
return 0
|
||||||
|
tool_config_blocks: Final = 1 if any(p.get("location") == "tool_config" for p in remaining_points) else 0
|
||||||
|
return external_breakpoints + tool_config_blocks
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _points_with_a_slot_left(
|
||||||
|
remaining_points: Sequence[CacheControlInjectionPoint], breakpoints_on_wire: int, openai_dialect: bool
|
||||||
|
) -> tuple[CacheControlInjectionPoint, ...]:
|
||||||
|
"""A ``tool_config`` point becomes a cachePoint the Bedrock converse transform never
|
||||||
|
counts against the cap, so it is forwarded only while the wire still has a slot."""
|
||||||
|
if openai_dialect or breakpoints_on_wire < MAX_CACHE_CONTROL_BLOCKS:
|
||||||
|
return tuple(remaining_points)
|
||||||
|
return tuple(point for point in remaining_points if point.get("location") != "tool_config")
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _apply_message_injections(
|
def _apply_message_injections(
|
||||||
points: Sequence[CacheControlMessageInjectionPoint],
|
points: Sequence[CacheControlMessageInjectionPoint],
|
||||||
|
|
@ -476,11 +556,16 @@ class AnthropicCacheControlHook(CustomPromptManagement):
|
||||||
def apply_to_anthropic_messages_request(
|
def apply_to_anthropic_messages_request(
|
||||||
messages: list[dict],
|
messages: list[dict],
|
||||||
system: str | list | None,
|
system: str | list | None,
|
||||||
injection_points: list[CacheControlInjectionPoint],
|
injection_points: Sequence[CacheControlInjectionPoint],
|
||||||
openai_dialect: bool = False,
|
openai_dialect: bool = False,
|
||||||
|
external_breakpoints: int = 0,
|
||||||
) -> tuple[list[dict], str | list | None, list[CacheControlInjectionPoint]]:
|
) -> tuple[list[dict], str | list | None, list[CacheControlInjectionPoint]]:
|
||||||
"""Apply cache control injection for the Anthropic-native v1/messages endpoint.
|
"""Apply cache control injection for the Anthropic-native v1/messages endpoint.
|
||||||
|
|
||||||
|
``external_breakpoints`` is the client's breakpoint count outside ``messages`` and
|
||||||
|
``system`` (see ``count_external_cache_breakpoints``); it shrinks the budget so
|
||||||
|
the request never exceeds the provider cap.
|
||||||
|
|
||||||
Returns (messages, system, remaining_non_message_points).
|
Returns (messages, system, remaining_non_message_points).
|
||||||
"""
|
"""
|
||||||
if not injection_points:
|
if not injection_points:
|
||||||
|
|
@ -489,22 +574,17 @@ class AnthropicCacheControlHook(CustomPromptManagement):
|
||||||
processed_messages: list[dict] = copy.deepcopy(messages)
|
processed_messages: list[dict] = copy.deepcopy(messages)
|
||||||
processed_system = copy.deepcopy(system) if system is not None else None
|
processed_system = copy.deepcopy(system) if system is not None else None
|
||||||
|
|
||||||
message_points: Final[list[CacheControlMessageInjectionPoint]] = []
|
role_points: Final = tuple(
|
||||||
system_points: Final[list[CacheControlMessageInjectionPoint]] = []
|
cast(CacheControlMessageInjectionPoint, point)
|
||||||
remaining_points: Final[list[CacheControlInjectionPoint]] = []
|
for point in injection_points
|
||||||
|
if point.get("location") == "message"
|
||||||
|
)
|
||||||
|
system_points: Final = tuple(point for point in role_points if point.get("role") == "system")
|
||||||
|
message_points: Final = tuple(point for point in role_points if point.get("role") != "system")
|
||||||
|
remaining_points: Final = tuple(point for point in injection_points if point.get("location") != "message")
|
||||||
|
|
||||||
for point in injection_points:
|
reserved_blocks: Final = AnthropicCacheControlHook._blocks_reserved_outside_messages(
|
||||||
if point.get("location") == "message":
|
remaining_points, external_breakpoints, openai_dialect
|
||||||
msg_point = cast(CacheControlMessageInjectionPoint, point)
|
|
||||||
if msg_point.get("role") == "system":
|
|
||||||
system_points.append(msg_point)
|
|
||||||
else:
|
|
||||||
message_points.append(msg_point)
|
|
||||||
else:
|
|
||||||
remaining_points.append(point)
|
|
||||||
|
|
||||||
reserved_blocks: Final = (
|
|
||||||
1 if not openai_dialect and any(p.get("location") == "tool_config" for p in remaining_points) else 0
|
|
||||||
)
|
)
|
||||||
max_blocks: Final = MAX_CACHE_CONTROL_BLOCKS - reserved_blocks
|
max_blocks: Final = MAX_CACHE_CONTROL_BLOCKS - reserved_blocks
|
||||||
|
|
||||||
|
|
@ -541,8 +621,14 @@ class AnthropicCacheControlHook(CustomPromptManagement):
|
||||||
max_blocks=max_blocks - system_blocks,
|
max_blocks=max_blocks - system_blocks,
|
||||||
openai_dialect=openai_dialect,
|
openai_dialect=openai_dialect,
|
||||||
)
|
)
|
||||||
|
forwarded_points: Final = AnthropicCacheControlHook._points_with_a_slot_left(
|
||||||
|
remaining_points,
|
||||||
|
AnthropicCacheControlHook.count_request_cache_breakpoints(processed_messages, processed_system)
|
||||||
|
+ external_breakpoints,
|
||||||
|
openai_dialect,
|
||||||
|
)
|
||||||
|
|
||||||
return processed_messages, processed_system, remaining_points
|
return processed_messages, processed_system, list(forwarded_points)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _default_control() -> ChatCompletionCachedContent:
|
def _default_control() -> ChatCompletionCachedContent:
|
||||||
|
|
@ -559,31 +645,26 @@ class AnthropicCacheControlHook(CustomPromptManagement):
|
||||||
return ChatCompletionCachedContent(type="ephemeral")
|
return ChatCompletionCachedContent(type="ephemeral")
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _stamped_as_judged(points: Sequence[CacheControlInjectionPoint]) -> Sequence[Mapping[str, object]]:
|
def _stamped_for_prompt_hook(
|
||||||
"""Mark written-back points as having passed the client cache_control judgment.
|
|
||||||
|
|
||||||
Builds copies because config-owned point dicts are shared across
|
|
||||||
requests; mutating them would leak the stamp into future requests.
|
|
||||||
"""
|
|
||||||
return AnthropicCacheControlHook._stamped(points, "_litellm_judged", True)
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def _judged_configured_points(
|
|
||||||
points: Sequence[CacheControlInjectionPoint],
|
points: Sequence[CacheControlInjectionPoint],
|
||||||
messages: list[AllMessageValues],
|
external_breakpoints: int,
|
||||||
tools: list[object] | None,
|
|
||||||
cache_control: object,
|
|
||||||
model: str,
|
model: str,
|
||||||
custom_llm_provider: str | None,
|
custom_llm_provider: str | None,
|
||||||
api_base: object,
|
api_base: object,
|
||||||
prompt_cache_options: object,
|
prompt_cache_options: object,
|
||||||
request_kwargs: object,
|
) -> Sequence[Mapping[str, object]]:
|
||||||
) -> Sequence[Mapping[str, object]] | None:
|
"""Carry onto the points what the prompt-management hook never receives.
|
||||||
if AnthropicCacheControlHook._should_stand_down(points, messages, None, tools, cache_control, request_kwargs):
|
|
||||||
return None
|
The hook sees neither the tools nor the request kwargs, so the target dialect
|
||||||
return AnthropicCacheControlHook._stamped_with_dialect(
|
and the client's breakpoint count outside the message list ride on the points.
|
||||||
|
Builds copies because config-owned point dicts are shared across requests.
|
||||||
|
"""
|
||||||
|
with_dialect: Final = AnthropicCacheControlHook._stamped_with_dialect(
|
||||||
points, model, custom_llm_provider, api_base, prompt_cache_options
|
points, model, custom_llm_provider, api_base, prompt_cache_options
|
||||||
)
|
)
|
||||||
|
if external_breakpoints == 0:
|
||||||
|
return with_dialect
|
||||||
|
return AnthropicCacheControlHook._stamped(with_dialect, EXTERNAL_BREAKPOINTS_STAMP, external_breakpoints)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _stamped_with_dialect(
|
def _stamped_with_dialect(
|
||||||
|
|
@ -604,35 +685,9 @@ class AnthropicCacheControlHook(CustomPromptManagement):
|
||||||
)
|
)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _stamped(
|
def _stamped(points: Sequence[Mapping[str, object]], key: str, value: object) -> Sequence[Mapping[str, object]]:
|
||||||
points: Sequence[CacheControlInjectionPoint], key: str, value: object
|
|
||||||
) -> Sequence[Mapping[str, object]]:
|
|
||||||
return [{**point, key: value} for point in points]
|
return [{**point, key: value} for point in points]
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def _should_stand_down(
|
|
||||||
points: Sequence[CacheControlInjectionPoint],
|
|
||||||
messages: list[AllMessageValues],
|
|
||||||
system: str | list | None,
|
|
||||||
tools: list | None,
|
|
||||||
cache_control: object = None,
|
|
||||||
request_kwargs: object = None,
|
|
||||||
) -> bool:
|
|
||||||
"""Whether configured injection points must yield to client-set cache_control.
|
|
||||||
|
|
||||||
Points that a prior pass over this request already judged and wrote
|
|
||||||
back carry the internal judged stamp; any re-entry (acompletion
|
|
||||||
re-entering completion, the async-to-sync /v1/messages dispatch,
|
|
||||||
interceptor sub-calls reusing the request kwargs) must not re-judge
|
|
||||||
them, because by then the messages carry litellm's own injected marks
|
|
||||||
and the judgment would misread those as client breakpoints.
|
|
||||||
"""
|
|
||||||
if all(point.get("_litellm_judged") for point in points):
|
|
||||||
return False
|
|
||||||
return AnthropicCacheControlHook._request_has_cache_control(
|
|
||||||
messages, system, tools, cache_control, request_kwargs
|
|
||||||
)
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _request_has_cache_control(
|
def _request_has_cache_control(
|
||||||
messages: list[AllMessageValues],
|
messages: list[AllMessageValues],
|
||||||
|
|
@ -640,28 +695,24 @@ class AnthropicCacheControlHook(CustomPromptManagement):
|
||||||
tools: list | None = None,
|
tools: list | None = None,
|
||||||
cache_control: object = None,
|
cache_control: object = None,
|
||||||
request_kwargs: object = None,
|
request_kwargs: object = None,
|
||||||
|
on_messages_route: bool = False,
|
||||||
) -> bool:
|
) -> bool:
|
||||||
"""Client breakpoints own caching in both the request and its extra_body envelope."""
|
"""Return True if the request already carries any client-supplied cache_control.
|
||||||
bodies: Final = (
|
|
||||||
{"messages": messages, "system": system, "tools": tools, "cache_control": cache_control},
|
Only the automatic defaults stand down on it: a client that marks its own
|
||||||
_validated_object_mapping(AnthropicCacheControlHook._request_value(request_kwargs, "extra_body")) or {},
|
breakpoints (Claude Code does) has a caching strategy the defaults would
|
||||||
)
|
clash with, whether the marks sit in the request or in its ``extra_body``
|
||||||
return any(
|
envelope. Configured injection points are an explicit instruction and are
|
||||||
body.get("cache_control") is not None
|
applied alongside the client's marks, bounded by the provider cap.
|
||||||
or AnthropicCacheControlHook.count_request_cache_breakpoints(
|
"""
|
||||||
_validated_object_list(body.get("messages")) or (), body.get("system")
|
external_breakpoints: Final = (
|
||||||
|
AnthropicCacheControlHook.count_external_cache_breakpoints_on_messages_route(
|
||||||
|
tools, cache_control, request_kwargs
|
||||||
)
|
)
|
||||||
> 0
|
if on_messages_route
|
||||||
or any(
|
else AnthropicCacheControlHook.count_external_cache_breakpoints(tools, cache_control, request_kwargs)
|
||||||
AnthropicCacheControlHook._request_value(tool, "cache_control") is not None
|
|
||||||
or AnthropicCacheControlHook._request_value(
|
|
||||||
AnthropicCacheControlHook._request_value(tool, "function"), "cache_control"
|
|
||||||
)
|
|
||||||
is not None
|
|
||||||
for tool in (_validated_object_list(body.get("tools")) or ())
|
|
||||||
)
|
|
||||||
for body in bodies
|
|
||||||
)
|
)
|
||||||
|
return AnthropicCacheControlHook.count_request_cache_breakpoints(messages, system) + external_breakpoints > 0
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_default_injection_points(
|
def get_default_injection_points(
|
||||||
|
|
@ -673,6 +724,7 @@ class AnthropicCacheControlHook(CustomPromptManagement):
|
||||||
enable_prompt_caching: bool | None = None,
|
enable_prompt_caching: bool | None = None,
|
||||||
cache_control: object = None,
|
cache_control: object = None,
|
||||||
request_kwargs: object = None,
|
request_kwargs: object = None,
|
||||||
|
on_messages_route: bool = False,
|
||||||
) -> list[CacheControlInjectionPoint]:
|
) -> list[CacheControlInjectionPoint]:
|
||||||
"""Default breakpoints when ``litellm.enable_anthropic_prompt_caching`` is on.
|
"""Default breakpoints when ``litellm.enable_anthropic_prompt_caching`` is on.
|
||||||
|
|
||||||
|
|
@ -693,7 +745,9 @@ class AnthropicCacheControlHook(CustomPromptManagement):
|
||||||
if not supports_anthropic_cache_control(model, custom_llm_provider):
|
if not supports_anthropic_cache_control(model, custom_llm_provider):
|
||||||
return []
|
return []
|
||||||
|
|
||||||
if AnthropicCacheControlHook._request_has_cache_control(messages, system, tools, cache_control, request_kwargs):
|
if AnthropicCacheControlHook._request_has_cache_control(
|
||||||
|
messages, system, tools, cache_control, request_kwargs, on_messages_route
|
||||||
|
):
|
||||||
return []
|
return []
|
||||||
|
|
||||||
if is_claude_code_one_shot_subagent_request(
|
if is_claude_code_one_shot_subagent_request(
|
||||||
|
|
@ -769,34 +823,30 @@ class AnthropicCacheControlHook(CustomPromptManagement):
|
||||||
) -> None:
|
) -> None:
|
||||||
"""For /chat/completions: resolve the injection points the request should carry.
|
"""For /chat/completions: resolve the injection points the request should carry.
|
||||||
|
|
||||||
Configured injection points win over the automatic defaults, but stand
|
Configured injection points win over the automatic defaults and are applied
|
||||||
down entirely when the client already marked its own cache_control
|
even when the client marked its own cache_control elsewhere in the request;
|
||||||
breakpoints (messages or tools): injecting alongside them clashes with
|
the provider's four-block cap bounds them, counting the client's marks on
|
||||||
the client's caching strategy and can exceed the provider's four-block
|
messages, tools and the top-level ``cache_control``. Only the defaults stand
|
||||||
limit. The judgment happens once per request; points a prior pass
|
down on client marks. Seeding the param lets the existing prompt-management
|
||||||
wrote back carry the judged stamp and are never re-judged (see
|
gate and the AnthropicCacheControlHook run unchanged.
|
||||||
``_should_stand_down``). Seeding the param lets the existing
|
|
||||||
prompt-management gate and the AnthropicCacheControlHook run
|
|
||||||
unchanged.
|
|
||||||
"""
|
"""
|
||||||
import litellm
|
import litellm
|
||||||
|
|
||||||
if non_default_params.get("cache_control_injection_points"):
|
configured: Final = non_default_params.get("cache_control_injection_points")
|
||||||
judged: Final = AnthropicCacheControlHook._judged_configured_points(
|
if configured:
|
||||||
non_default_params["cache_control_injection_points"],
|
tools_keeping_marks: Final = tuple(
|
||||||
messages,
|
tool for tool in tools or () if not _chat_transform_drops_tool_cache_control(tool)
|
||||||
tools,
|
)
|
||||||
non_default_params.get("cache_control"),
|
non_default_params["cache_control_injection_points"] = AnthropicCacheControlHook._stamped_for_prompt_hook(
|
||||||
|
configured,
|
||||||
|
AnthropicCacheControlHook.count_external_cache_breakpoints(
|
||||||
|
tools_keeping_marks, non_default_params.get("cache_control"), non_default_params
|
||||||
|
),
|
||||||
model,
|
model,
|
||||||
custom_llm_provider,
|
custom_llm_provider,
|
||||||
api_base,
|
api_base,
|
||||||
non_default_params.get("prompt_cache_options"),
|
non_default_params.get("prompt_cache_options"),
|
||||||
non_default_params,
|
|
||||||
)
|
)
|
||||||
if judged is None:
|
|
||||||
non_default_params.pop("cache_control_injection_points")
|
|
||||||
else:
|
|
||||||
non_default_params["cache_control_injection_points"] = judged
|
|
||||||
return
|
return
|
||||||
points: Final = AnthropicCacheControlHook.get_default_injection_points(
|
points: Final = AnthropicCacheControlHook.get_default_injection_points(
|
||||||
messages=messages,
|
messages=messages,
|
||||||
|
|
@ -897,15 +947,14 @@ class AnthropicCacheControlHook(CustomPromptManagement):
|
||||||
) -> tuple[list[dict], str | list | None]:
|
) -> tuple[list[dict], str | list | None]:
|
||||||
"""Extract cache_control_injection_points from kwargs and apply if present.
|
"""Extract cache_control_injection_points from kwargs and apply if present.
|
||||||
|
|
||||||
Configured points stand down entirely when the client already marked
|
Configured points are applied even when the client marked its own
|
||||||
its own cache_control breakpoints anywhere in the request. The
|
cache_control elsewhere in the request, bounded by the provider cap,
|
||||||
judgment happens once per request; points a prior pass wrote back
|
which counts the client's marks on messages, system, tools and the
|
||||||
carry the judged stamp and are never re-judged (see
|
top-level ``cache_control``. When none are configured but
|
||||||
``_should_stand_down``). When none are configured but
|
|
||||||
``litellm.enable_anthropic_prompt_caching`` or the per-request
|
``litellm.enable_anthropic_prompt_caching`` or the per-request
|
||||||
``enable_prompt_caching`` kwarg (stamped from key metadata) is on,
|
``enable_prompt_caching`` kwarg (stamped from key metadata) is on,
|
||||||
synthesize default breakpoints for the native /v1/messages path. Pops
|
synthesize default breakpoints for the native /v1/messages path; those
|
||||||
both keys from kwargs;
|
defaults alone stand down on client marks. Pops both keys from kwargs;
|
||||||
if remaining (non-message) points exist they are written back so
|
if remaining (non-message) points exist they are written back so
|
||||||
downstream transforms can handle them.
|
downstream transforms can handle them.
|
||||||
"""
|
"""
|
||||||
|
|
@ -917,13 +966,8 @@ class AnthropicCacheControlHook(CustomPromptManagement):
|
||||||
configured: Final = cast( # cast-ok: kwargs is untyped; this key only holds the documented injection-point list
|
configured: Final = cast( # cast-ok: kwargs is untyped; this key only holds the documented injection-point list
|
||||||
list[CacheControlInjectionPoint] | None, kwargs.pop("cache_control_injection_points", None)
|
list[CacheControlInjectionPoint] | None, kwargs.pop("cache_control_injection_points", None)
|
||||||
)
|
)
|
||||||
if configured and AnthropicCacheControlHook._should_stand_down(
|
injection_points: Final[Sequence[CacheControlInjectionPoint]] = configured or (
|
||||||
configured, typed_messages, system, tools, cache_control, kwargs
|
AnthropicCacheControlHook.get_default_injection_points(
|
||||||
):
|
|
||||||
return messages, system
|
|
||||||
injection_points: list[CacheControlInjectionPoint] = configured or []
|
|
||||||
if not injection_points and model is not None:
|
|
||||||
injection_points = AnthropicCacheControlHook.get_default_injection_points(
|
|
||||||
messages=typed_messages,
|
messages=typed_messages,
|
||||||
system=system,
|
system=system,
|
||||||
tools=tools,
|
tools=tools,
|
||||||
|
|
@ -932,7 +976,11 @@ class AnthropicCacheControlHook(CustomPromptManagement):
|
||||||
enable_prompt_caching=enable_prompt_caching,
|
enable_prompt_caching=enable_prompt_caching,
|
||||||
cache_control=cache_control,
|
cache_control=cache_control,
|
||||||
request_kwargs=kwargs,
|
request_kwargs=kwargs,
|
||||||
|
on_messages_route=True,
|
||||||
)
|
)
|
||||||
|
if model is not None
|
||||||
|
else ()
|
||||||
|
)
|
||||||
if not injection_points:
|
if not injection_points:
|
||||||
return messages, system
|
return messages, system
|
||||||
|
|
||||||
|
|
@ -945,6 +993,9 @@ class AnthropicCacheControlHook(CustomPromptManagement):
|
||||||
system=system,
|
system=system,
|
||||||
injection_points=injection_points,
|
injection_points=injection_points,
|
||||||
openai_dialect=openai_dialect,
|
openai_dialect=openai_dialect,
|
||||||
|
external_breakpoints=AnthropicCacheControlHook.count_external_cache_breakpoints_on_messages_route(
|
||||||
|
tools, cache_control, kwargs
|
||||||
|
),
|
||||||
)
|
)
|
||||||
breakpoints_added: Final = (
|
breakpoints_added: Final = (
|
||||||
AnthropicCacheControlHook.count_request_cache_breakpoints(messages, system) - breakpoints_before
|
AnthropicCacheControlHook.count_request_cache_breakpoints(messages, system) - breakpoints_before
|
||||||
|
|
@ -953,7 +1004,7 @@ class AnthropicCacheControlHook(CustomPromptManagement):
|
||||||
if openai_dialect and breakpoints_added > 0:
|
if openai_dialect and breakpoints_added > 0:
|
||||||
kwargs.setdefault("prompt_cache_options", PromptCacheOptions(mode="explicit"))
|
kwargs.setdefault("prompt_cache_options", PromptCacheOptions(mode="explicit"))
|
||||||
if remaining:
|
if remaining:
|
||||||
kwargs["cache_control_injection_points"] = AnthropicCacheControlHook._stamped_as_judged(remaining)
|
kwargs["cache_control_injection_points"] = remaining
|
||||||
return messages, system
|
return messages, system
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
|
|
||||||
|
|
@ -561,6 +561,7 @@ class OpenTelemetryV2(CustomLogger):
|
||||||
time_to_first_chunk_seconds=call.time_to_first_chunk_seconds,
|
time_to_first_chunk_seconds=call.time_to_first_chunk_seconds,
|
||||||
request_route=request_root_http_route(),
|
request_route=request_root_http_route(),
|
||||||
trace=call.trace,
|
trace=call.trace,
|
||||||
|
session_id=call.session_id,
|
||||||
)
|
)
|
||||||
end_time_ns: Final = to_ns(end_time)
|
end_time_ns: Final = to_ns(end_time)
|
||||||
if carrier is not None and carrier.span is not None:
|
if carrier is not None and carrier.span is not None:
|
||||||
|
|
|
||||||
|
|
@ -43,6 +43,7 @@ class GenAIMapper:
|
||||||
GenAI.OPERATION_NAME: lambda d: d.operation.value,
|
GenAI.OPERATION_NAME: lambda d: d.operation.value,
|
||||||
GenAI.PROVIDER_NAME: lambda d: d.provider or None,
|
GenAI.PROVIDER_NAME: lambda d: d.provider or None,
|
||||||
GenAI.OUTPUT_TYPE: lambda d: d.output_type.value if d.output_type else None,
|
GenAI.OUTPUT_TYPE: lambda d: d.output_type.value if d.output_type else None,
|
||||||
|
GenAI.CONVERSATION_ID: lambda d: d.session_id,
|
||||||
GenAI.REQUEST_MODEL: lambda d: d.request_model or None,
|
GenAI.REQUEST_MODEL: lambda d: d.request_model or None,
|
||||||
GenAI.REQUEST_TEMPERATURE: lambda d: d.request_params.temperature,
|
GenAI.REQUEST_TEMPERATURE: lambda d: d.request_params.temperature,
|
||||||
GenAI.REQUEST_TOP_P: lambda d: d.request_params.top_p,
|
GenAI.REQUEST_TOP_P: lambda d: d.request_params.top_p,
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ from dataclasses import dataclass, field
|
||||||
from types import MappingProxyType
|
from types import MappingProxyType
|
||||||
from typing import TYPE_CHECKING, Any, Final, cast
|
from typing import TYPE_CHECKING, Any, Final, cast
|
||||||
|
|
||||||
from litellm.constants import LITELLM_LOGGING_NO_UPSTREAM_LLM_CALL
|
from litellm.constants import LITELLM_LOGGING_NO_UPSTREAM_LLM_CALL, SESSION_ID_GENERATED_METADATA_KEY
|
||||||
from litellm.integrations.otel.model.semconv import resolve_operation
|
from litellm.integrations.otel.model.semconv import resolve_operation
|
||||||
from litellm.integrations.otel.model.trace_controls import TraceControls, caller_trace_controls
|
from litellm.integrations.otel.model.trace_controls import TraceControls, caller_trace_controls
|
||||||
from litellm.integrations.otel.model.utils import as_str, as_str_mapping, to_seconds
|
from litellm.integrations.otel.model.utils import as_str, as_str_mapping, to_seconds
|
||||||
|
|
@ -226,6 +226,7 @@ class LLMCallEvent:
|
||||||
provisional_span_name: str
|
provisional_span_name: str
|
||||||
time_to_first_chunk_seconds: float | None
|
time_to_first_chunk_seconds: float | None
|
||||||
trace: TraceControls
|
trace: TraceControls
|
||||||
|
session_id: str | None
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_dict(cls, kwargs: Mapping[str, Any]) -> LLMCallEvent:
|
def from_dict(cls, kwargs: Mapping[str, Any]) -> LLMCallEvent:
|
||||||
|
|
@ -233,6 +234,7 @@ class LLMCallEvent:
|
||||||
payload: Final = cast("StandardLoggingPayload", raw_payload) if raw_payload else None
|
payload: Final = cast("StandardLoggingPayload", raw_payload) if raw_payload else None
|
||||||
operation: Final = resolve_operation(as_str(kwargs.get("call_type")))
|
operation: Final = resolve_operation(as_str(kwargs.get("call_type")))
|
||||||
model: Final = as_str(kwargs.get("model")) or ""
|
model: Final = as_str(kwargs.get("model")) or ""
|
||||||
|
trace: Final = caller_trace_controls(kwargs)
|
||||||
return cls(
|
return cls(
|
||||||
call_id=_call_id(payload, kwargs),
|
call_id=_call_id(payload, kwargs),
|
||||||
payload=payload,
|
payload=payload,
|
||||||
|
|
@ -242,10 +244,40 @@ class LLMCallEvent:
|
||||||
upstream_started=kwargs.get("api_call_start_time") is not None,
|
upstream_started=kwargs.get("api_call_start_time") is not None,
|
||||||
provisional_span_name=f"{operation.value} {model}".strip(),
|
provisional_span_name=f"{operation.value} {model}".strip(),
|
||||||
time_to_first_chunk_seconds=time_to_first_chunk_seconds(kwargs),
|
time_to_first_chunk_seconds=time_to_first_chunk_seconds(kwargs),
|
||||||
trace=caller_trace_controls(kwargs),
|
trace=trace,
|
||||||
|
session_id=caller_session_id(kwargs, trace),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def caller_session_id(kwargs: Mapping[str, object], trace: TraceControls) -> str | None:
|
||||||
|
"""The conversation id the caller sent (``litellm_session_id``, else the
|
||||||
|
``session_id`` trace control); ``None`` when the request carried none.
|
||||||
|
|
||||||
|
``get_litellm_params`` back-fills ``litellm_session_id`` from ``metadata.trace_id``
|
||||||
|
(which the proxy stamps with the OTel trace id) and ``missing_session_id: generate``
|
||||||
|
mints one into the body; neither is a caller conversation, so both are ignored,
|
||||||
|
while a ``langfuse_session_id`` header still counts under the generate policy.
|
||||||
|
``StandardLoggingPayload.session_id`` is never read: the payload drops the
|
||||||
|
generated marker, so a replayed minted id would pass for a caller's."""
|
||||||
|
params: Final[Mapping[str, object]] = as_str_mapping(kwargs.get("litellm_params")) or MappingProxyType({})
|
||||||
|
bodies: Final = tuple(
|
||||||
|
metadata
|
||||||
|
for key in ("metadata", "litellm_metadata")
|
||||||
|
if (metadata := as_str_mapping(params.get(key))) is not None
|
||||||
|
)
|
||||||
|
from_body: Final = tuple(session for body in bodies if (session := as_str(body.get("session_id"))))
|
||||||
|
minted: Final = frozenset(
|
||||||
|
session
|
||||||
|
for body in bodies
|
||||||
|
if body.get(SESSION_ID_GENERATED_METADATA_KEY) and (session := as_str(body.get("session_id")))
|
||||||
|
)
|
||||||
|
if minted:
|
||||||
|
return next((session for session in (trace.session_id, *from_body) if session and session not in minted), None)
|
||||||
|
explicit: Final = as_str(params.get("litellm_session_id"))
|
||||||
|
echoes_trace_id: Final = explicit is not None and any(as_str(body.get("trace_id")) == explicit for body in bodies)
|
||||||
|
return (None if echoes_trace_id else explicit) or trace.session_id or None
|
||||||
|
|
||||||
|
|
||||||
def time_to_first_chunk_seconds(kwargs: Mapping[str, Any]) -> float | None:
|
def time_to_first_chunk_seconds(kwargs: Mapping[str, Any]) -> float | None:
|
||||||
"""Seconds from the upstream request being issued (``api_call_start_time``)
|
"""Seconds from the upstream request being issued (``api_call_start_time``)
|
||||||
to the first streamed chunk (``completion_start_time``); ``None`` for
|
to the first streamed chunk (``completion_start_time``); ``None`` for
|
||||||
|
|
|
||||||
|
|
@ -407,6 +407,7 @@ class LLMCallSpanData:
|
||||||
call_type: str | None = None
|
call_type: str | None = None
|
||||||
request_route: str | None = None
|
request_route: str | None = None
|
||||||
trace: TraceControls = field(default_factory=TraceControls)
|
trace: TraceControls = field(default_factory=TraceControls)
|
||||||
|
session_id: str | None = None
|
||||||
embedding_output: EmbeddingOutput | None = None
|
embedding_output: EmbeddingOutput | None = None
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|
@ -417,6 +418,7 @@ class LLMCallSpanData:
|
||||||
time_to_first_chunk_seconds: float | None = None,
|
time_to_first_chunk_seconds: float | None = None,
|
||||||
request_route: str | None = None,
|
request_route: str | None = None,
|
||||||
trace: TraceControls | None = None,
|
trace: TraceControls | None = None,
|
||||||
|
session_id: str | None = None,
|
||||||
) -> LLMCallSpanData:
|
) -> LLMCallSpanData:
|
||||||
params: Final = cast(Mapping[str, object], payload.get("model_parameters") or {})
|
params: Final = cast(Mapping[str, object], payload.get("model_parameters") or {})
|
||||||
# The single parse of the request's metadata — the request-vs-provider
|
# The single parse of the request's metadata — the request-vs-provider
|
||||||
|
|
@ -463,6 +465,7 @@ class LLMCallSpanData:
|
||||||
call_type=call_type or None,
|
call_type=call_type or None,
|
||||||
request_route=request_route or context.identity.request_route,
|
request_route=request_route or context.identity.request_route,
|
||||||
trace=trace or TraceControls(),
|
trace=trace or TraceControls(),
|
||||||
|
session_id=session_id or None,
|
||||||
embedding_output=embedding_output if capture_content else None,
|
embedding_output=embedding_output if capture_content else None,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2553,6 +2553,7 @@ class PrometheusLogger(CustomLogger):
|
||||||
from litellm.litellm_core_utils.litellm_logging import (
|
from litellm.litellm_core_utils.litellm_logging import (
|
||||||
StandardLoggingPayloadSetup,
|
StandardLoggingPayloadSetup,
|
||||||
)
|
)
|
||||||
|
from litellm.proxy.litellm_pre_call_utils import LiteLLMProxyRequestSetup
|
||||||
|
|
||||||
status_code: Final = self._extract_status_code(exception=original_exception)
|
status_code: Final = self._extract_status_code(exception=original_exception)
|
||||||
|
|
||||||
|
|
@ -2571,7 +2572,9 @@ class PrometheusLogger(CustomLogger):
|
||||||
end_user=user_api_key_dict.end_user_id,
|
end_user=user_api_key_dict.end_user_id,
|
||||||
user=user_api_key_dict.user_id,
|
user=user_api_key_dict.user_id,
|
||||||
user_email=user_api_key_dict.user_email,
|
user_email=user_api_key_dict.user_email,
|
||||||
hashed_api_key=None if status_code == 401 else user_api_key_dict.api_key,
|
hashed_api_key=None
|
||||||
|
if status_code == 401
|
||||||
|
else LiteLLMProxyRequestSetup.get_logged_api_key(user_api_key_dict),
|
||||||
api_key_alias=user_api_key_dict.key_alias,
|
api_key_alias=user_api_key_dict.key_alias,
|
||||||
team=user_api_key_dict.team_id,
|
team=user_api_key_dict.team_id,
|
||||||
team_alias=user_api_key_dict.team_alias,
|
team_alias=user_api_key_dict.team_alias,
|
||||||
|
|
|
||||||
|
|
@ -1638,7 +1638,7 @@ class WebSearchInterceptionLogger(CustomLogger):
|
||||||
return { # mutable-ok: litellm's metadata channel is a plain dict its logging path reads and enriches
|
return { # mutable-ok: litellm's metadata channel is a plain dict its logging path reads and enriches
|
||||||
**user_api_key_metadata,
|
**user_api_key_metadata,
|
||||||
"model_group": search_tool_name,
|
"model_group": search_tool_name,
|
||||||
"user_api_key": user_api_key_auth.api_key,
|
"user_api_key": LiteLLMProxyRequestSetup.get_logged_api_key(user_api_key_auth),
|
||||||
"user_api_key_auth": user_api_key_auth,
|
"user_api_key_auth": user_api_key_auth,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -610,6 +610,9 @@ class Logging(LiteLLMLoggingBaseClass):
|
||||||
self.truncated_messages_for_logging: str | list | dict | None = None # mutable-ok: logged messages shape
|
self.truncated_messages_for_logging: str | list | dict | None = None # mutable-ok: logged messages shape
|
||||||
## TIME TO FIRST TOKEN LOGGING ##
|
## TIME TO FIRST TOKEN LOGGING ##
|
||||||
self.completion_start_time: datetime.datetime | None = None
|
self.completion_start_time: datetime.datetime | None = None
|
||||||
|
# The model the proxy shows the client on streamed chunks. The logged streamed response carries it
|
||||||
|
# once that response is priced, the same way a non-streamed response is logged
|
||||||
|
self.client_facing_stream_model: str | None = None
|
||||||
self._llm_caching_handler: LLMCachingHandler | None = None
|
self._llm_caching_handler: LLMCachingHandler | None = None
|
||||||
|
|
||||||
# INITIAL LITELLM_PARAMS
|
# INITIAL LITELLM_PARAMS
|
||||||
|
|
@ -2279,6 +2282,15 @@ class Logging(LiteLLMLoggingBaseClass):
|
||||||
setattr(result, "usage", transformed_usage)
|
setattr(result, "usage", transformed_usage)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
def _with_client_facing_stream_model(
|
||||||
|
self,
|
||||||
|
response: ModelResponse | TextCompletionResponse | ResponsesAPIResponse | InteractionsAPIResponse,
|
||||||
|
) -> ModelResponse | TextCompletionResponse | ResponsesAPIResponse | InteractionsAPIResponse:
|
||||||
|
model: Final = self.client_facing_stream_model
|
||||||
|
if model is None or getattr(response, "model", None) in (None, model):
|
||||||
|
return response
|
||||||
|
return response.model_copy(update={"model": model})
|
||||||
|
|
||||||
def _success_handler_helper_fn(
|
def _success_handler_helper_fn(
|
||||||
self,
|
self,
|
||||||
result=None,
|
result=None,
|
||||||
|
|
@ -2592,9 +2604,11 @@ class Logging(LiteLLMLoggingBaseClass):
|
||||||
result=complete_streaming_response
|
result=complete_streaming_response
|
||||||
)
|
)
|
||||||
self._merge_hidden_params_from_response_into_metadata(complete_streaming_response)
|
self._merge_hidden_params_from_response_into_metadata(complete_streaming_response)
|
||||||
|
logged_streaming_response: Final = self._with_client_facing_stream_model(complete_streaming_response)
|
||||||
|
self.model_call_details["complete_streaming_response"] = logged_streaming_response
|
||||||
## STANDARDIZED LOGGING PAYLOAD
|
## STANDARDIZED LOGGING PAYLOAD
|
||||||
self.model_call_details["standard_logging_object"] = self._build_standard_logging_payload(
|
self.model_call_details["standard_logging_object"] = self._build_standard_logging_payload(
|
||||||
complete_streaming_response, start_time, end_time
|
logged_streaming_response, start_time, end_time
|
||||||
)
|
)
|
||||||
standard_logging_payload: Final[StandardLoggingPayload | None] = self.model_call_details.get(
|
standard_logging_payload: Final[StandardLoggingPayload | None] = self.model_call_details.get(
|
||||||
"standard_logging_object"
|
"standard_logging_object"
|
||||||
|
|
@ -3130,10 +3144,13 @@ class Logging(LiteLLMLoggingBaseClass):
|
||||||
|
|
||||||
await self._prepare_baseline_cache_estimate(complete_streaming_response)
|
await self._prepare_baseline_cache_estimate(complete_streaming_response)
|
||||||
|
|
||||||
|
logged_streaming_response: Final = self._with_client_facing_stream_model(complete_streaming_response)
|
||||||
|
self.model_call_details["async_complete_streaming_response"] = logged_streaming_response
|
||||||
|
|
||||||
## STANDARDIZED LOGGING PAYLOAD
|
## STANDARDIZED LOGGING PAYLOAD
|
||||||
try:
|
try:
|
||||||
self.model_call_details["standard_logging_object"] = self._build_standard_logging_payload(
|
self.model_call_details["standard_logging_object"] = self._build_standard_logging_payload(
|
||||||
complete_streaming_response, start_time, end_time
|
logged_streaming_response, start_time, end_time
|
||||||
)
|
)
|
||||||
except Exception: # noqa: BLE001 # payload build must never block later callbacks (slot release)
|
except Exception: # noqa: BLE001 # payload build must never block later callbacks (slot release)
|
||||||
verbose_logger.exception(
|
verbose_logger.exception(
|
||||||
|
|
|
||||||
|
|
@ -1504,8 +1504,11 @@ class CustomStreamWrapper:
|
||||||
|
|
||||||
self.tool_call = True
|
self.tool_call = True
|
||||||
|
|
||||||
if hasattr(chunk, "usage") and chunk.usage is not None:
|
chunk_usage: Final = getattr(chunk, "usage", None)
|
||||||
model_response.usage = chunk.usage
|
if isinstance(chunk_usage, Usage):
|
||||||
|
model_response.usage = chunk_usage
|
||||||
|
elif isinstance(chunk_usage, BaseModel):
|
||||||
|
model_response.usage = Usage(**chunk_usage.model_dump())
|
||||||
|
|
||||||
## RETURN ARG
|
## RETURN ARG
|
||||||
result: Final = self.return_processed_chunk_logic(
|
result: Final = self.return_processed_chunk_logic(
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,8 @@ from litellm.types.llms.openai import (
|
||||||
AllMessageValues,
|
AllMessageValues,
|
||||||
ChatCompletionDocumentObject,
|
ChatCompletionDocumentObject,
|
||||||
ChatCompletionNamedToolChoiceParam,
|
ChatCompletionNamedToolChoiceParam,
|
||||||
|
ChatCompletionRedactedThinkingBlock,
|
||||||
|
ChatCompletionThinkingBlock,
|
||||||
ChatCompletionToolParam,
|
ChatCompletionToolParam,
|
||||||
OpenAIMessageContentListBlock,
|
OpenAIMessageContentListBlock,
|
||||||
)
|
)
|
||||||
|
|
@ -854,6 +856,8 @@ def _count_content_list(
|
||||||
content_list: str
|
content_list: str
|
||||||
| Iterable[
|
| Iterable[
|
||||||
OpenAIMessageContentListBlock
|
OpenAIMessageContentListBlock
|
||||||
|
| ChatCompletionThinkingBlock
|
||||||
|
| ChatCompletionRedactedThinkingBlock
|
||||||
| AnthropicMessagesTextParam
|
| AnthropicMessagesTextParam
|
||||||
| AnthropicMessagesImageParam
|
| AnthropicMessagesImageParam
|
||||||
| AnthropicMessagesDocumentParam
|
| AnthropicMessagesDocumentParam
|
||||||
|
|
@ -898,9 +902,9 @@ def _count_content_list(
|
||||||
use_default_image_token_count,
|
use_default_image_token_count,
|
||||||
default_token_count,
|
default_token_count,
|
||||||
)
|
)
|
||||||
elif c["type"] == "thinking":
|
elif c["type"] in ("thinking", "redacted_thinking"):
|
||||||
# Claude extended thinking content block
|
# Claude extended thinking content block
|
||||||
# Count the thinking text and skip signature (opaque signature blob)
|
# Count the thinking text and skip the opaque blobs (signature, redacted data)
|
||||||
thinking_text = str(c.get("thinking", ""))
|
thinking_text = str(c.get("thinking", ""))
|
||||||
if thinking_text:
|
if thinking_text:
|
||||||
num_tokens += count_function(thinking_text)
|
num_tokens += count_function(thinking_text)
|
||||||
|
|
@ -920,7 +924,8 @@ def _count_content_list(
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
f"Invalid content item type: {content_type}. "
|
f"Invalid content item type: {content_type}. "
|
||||||
f"Expected str or dict with 'type' field "
|
f"Expected str or dict with 'type' field "
|
||||||
f"(text, image_url, image, document, file, tool_use, tool_result, thinking, tool_reference)."
|
f"(text, image_url, image, document, file, tool_use, tool_result, thinking, redacted_thinking, "
|
||||||
|
f"tool_reference)."
|
||||||
)
|
)
|
||||||
return num_tokens
|
return num_tokens
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ if TYPE_CHECKING:
|
||||||
from litellm.router import Router
|
from litellm.router import Router
|
||||||
|
|
||||||
# Anthropic-only keys already mapped by the translator; strip on extra_kwargs re-merge.
|
# Anthropic-only keys already mapped by the translator; strip on extra_kwargs re-merge.
|
||||||
ANTHROPIC_ONLY_REQUEST_KEYS: Final[frozenset[str]] = frozenset({"output_config"})
|
ANTHROPIC_ONLY_REQUEST_KEYS: Final[frozenset[str]] = frozenset({"output_config", "safeguards"})
|
||||||
|
|
||||||
_AnthropicMessages: TypeAlias = "list[dict[str, object]]"
|
_AnthropicMessages: TypeAlias = "list[dict[str, object]]"
|
||||||
_AnthropicSystem: TypeAlias = "str | list[dict[str, object]] | None"
|
_AnthropicSystem: TypeAlias = "str | list[dict[str, object]] | None"
|
||||||
|
|
|
||||||
|
|
@ -79,10 +79,14 @@ class AnthropicMessagesConfig(BaseAnthropicMessagesConfig):
|
||||||
"speed",
|
"speed",
|
||||||
"output_config",
|
"output_config",
|
||||||
"reasoning_effort",
|
"reasoning_effort",
|
||||||
|
"safeguards",
|
||||||
# TODO: Add Anthropic `metadata` support
|
# TODO: Add Anthropic `metadata` support
|
||||||
# "metadata",
|
# "metadata",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
def should_filter_anthropic_beta_headers(self) -> bool:
|
||||||
|
return self._resolved_provider != "anthropic"
|
||||||
|
|
||||||
def _remove_scope_from_cache_control(self, anthropic_messages_request: dict) -> None:
|
def _remove_scope_from_cache_control(self, anthropic_messages_request: dict) -> None:
|
||||||
"""
|
"""
|
||||||
Remove `scope` field from cache_control blocks.
|
Remove `scope` field from cache_control blocks.
|
||||||
|
|
|
||||||
|
|
@ -2,14 +2,18 @@
|
||||||
Azure Anthropic messages transformation config - extends AnthropicMessagesConfig with Azure authentication
|
Azure Anthropic messages transformation config - extends AnthropicMessagesConfig with Azure authentication
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from collections.abc import Mapping
|
||||||
from typing import Any, Final
|
from typing import Any, Final
|
||||||
|
|
||||||
from litellm.llms.anthropic.experimental_pass_through.messages.transformation import (
|
from litellm.llms.anthropic.experimental_pass_through.messages.transformation import (
|
||||||
AnthropicMessagesConfig,
|
AnthropicMessagesConfig,
|
||||||
)
|
)
|
||||||
from litellm.llms.azure.common_utils import BaseAzureLLM
|
from litellm.llms.azure.common_utils import BaseAzureLLM
|
||||||
|
from litellm.types.llms.anthropic import ANTHROPIC_BETA_HEADER_VALUES
|
||||||
from litellm.types.router import GenericLiteLLMParams
|
from litellm.types.router import GenericLiteLLMParams
|
||||||
|
|
||||||
|
DANGEROUS_TOOL_USE_BETA: Final = ANTHROPIC_BETA_HEADER_VALUES.DANGEROUS_TOOL_USE_2026_09_03.value
|
||||||
|
|
||||||
|
|
||||||
class AzureAnthropicMessagesConfig(AnthropicMessagesConfig):
|
class AzureAnthropicMessagesConfig(AnthropicMessagesConfig):
|
||||||
"""
|
"""
|
||||||
|
|
@ -71,7 +75,7 @@ class AzureAnthropicMessagesConfig(AnthropicMessagesConfig):
|
||||||
messages=messages,
|
messages=messages,
|
||||||
)
|
)
|
||||||
|
|
||||||
return headers, api_base
|
return _with_dangerous_tool_use_beta_for_safeguards(headers, optional_params), api_base
|
||||||
|
|
||||||
def get_complete_url(
|
def get_complete_url(
|
||||||
self,
|
self,
|
||||||
|
|
@ -164,3 +168,14 @@ class AzureAnthropicMessagesConfig(AnthropicMessagesConfig):
|
||||||
self._normalize_system_role_messages(anthropic_messages_request, model=model)
|
self._normalize_system_role_messages(anthropic_messages_request, model=model)
|
||||||
self._remove_scope_from_cache_control(anthropic_messages_request)
|
self._remove_scope_from_cache_control(anthropic_messages_request)
|
||||||
return anthropic_messages_request
|
return anthropic_messages_request
|
||||||
|
|
||||||
|
|
||||||
|
def _with_dangerous_tool_use_beta_for_safeguards(
|
||||||
|
headers: Mapping[str, str], optional_params: Mapping[str, object]
|
||||||
|
) -> dict[str, str]:
|
||||||
|
if optional_params.get("safeguards") is None:
|
||||||
|
return dict(headers)
|
||||||
|
existing: Final = ",".join(value for key, value in headers.items() if key.lower() == "anthropic-beta")
|
||||||
|
betas: Final = {piece.strip() for piece in existing.split(",") if piece.strip()}
|
||||||
|
others: Final = {key: value for key, value in headers.items() if key.lower() != "anthropic-beta"}
|
||||||
|
return {**others, "anthropic-beta": ",".join(sorted(betas | {DANGEROUS_TOOL_USE_BETA}))}
|
||||||
|
|
|
||||||
|
|
@ -530,6 +530,9 @@ class AmazonAnthropicClaudeMessagesConfig(
|
||||||
if anthropic_model_info.is_eager_input_streaming_used(tools):
|
if anthropic_model_info.is_eager_input_streaming_used(tools):
|
||||||
beta_set.add(ANTHROPIC_FINE_GRAINED_TOOL_STREAMING_BETA_HEADER)
|
beta_set.add(ANTHROPIC_FINE_GRAINED_TOOL_STREAMING_BETA_HEADER)
|
||||||
|
|
||||||
|
if anthropic_messages_optional_request_params.get("safeguards") is not None:
|
||||||
|
beta_set.add(ANTHROPIC_BETA_HEADER_VALUES.DANGEROUS_TOOL_USE_2026_09_03.value)
|
||||||
|
|
||||||
self._filter_context_management_for_bedrock_invoke(
|
self._filter_context_management_for_bedrock_invoke(
|
||||||
anthropic_messages_request=anthropic_messages_request,
|
anthropic_messages_request=anthropic_messages_request,
|
||||||
beta_set=beta_set,
|
beta_set=beta_set,
|
||||||
|
|
@ -759,9 +762,7 @@ class AmazonAnthropicClaudeMessagesConfig(
|
||||||
aws_decoder: Final = AmazonAnthropicClaudeMessagesStreamDecoder(
|
aws_decoder: Final = AmazonAnthropicClaudeMessagesStreamDecoder(
|
||||||
model=model,
|
model=model,
|
||||||
)
|
)
|
||||||
completion_stream: Final = aws_decoder.aiter_bytes(
|
completion_stream: Final = aws_decoder.aiter_bytes(httpx_response.aiter_bytes())
|
||||||
httpx_response.aiter_bytes(chunk_size=aws_decoder.DEFAULT_CHUNK_SIZE)
|
|
||||||
)
|
|
||||||
# Convert decoded Bedrock events to Server-Sent Events expected by Anthropic clients.
|
# Convert decoded Bedrock events to Server-Sent Events expected by Anthropic clients.
|
||||||
return self.bedrock_sse_wrapper(
|
return self.bedrock_sse_wrapper(
|
||||||
completion_stream=completion_stream,
|
completion_stream=completion_stream,
|
||||||
|
|
@ -908,16 +909,6 @@ class AmazonAnthropicClaudeMessagesConfig(
|
||||||
|
|
||||||
|
|
||||||
class AmazonAnthropicClaudeMessagesStreamDecoder(AWSEventStreamDecoder):
|
class AmazonAnthropicClaudeMessagesStreamDecoder(AWSEventStreamDecoder):
|
||||||
def __init__(
|
|
||||||
self,
|
|
||||||
model: str,
|
|
||||||
) -> None:
|
|
||||||
"""
|
|
||||||
Iterator to return Bedrock invoke response in anthropic /messages format
|
|
||||||
"""
|
|
||||||
super().__init__(model=model)
|
|
||||||
self.DEFAULT_CHUNK_SIZE = 1024
|
|
||||||
|
|
||||||
def _chunk_parser(self, chunk_data: dict) -> GChunk | ModelResponseStream | dict:
|
def _chunk_parser(self, chunk_data: dict) -> GChunk | ModelResponseStream | dict:
|
||||||
"""
|
"""
|
||||||
Parse the chunk data into anthropic /messages format
|
Parse the chunk data into anthropic /messages format
|
||||||
|
|
|
||||||
|
|
@ -108,6 +108,9 @@ class VertexAIPartnerModelsAnthropicMessagesConfig(AnthropicMessagesConfig, Vert
|
||||||
if anthropic_model_info.is_tool_search_used(tools):
|
if anthropic_model_info.is_tool_search_used(tools):
|
||||||
beta_values.add(get_tool_search_beta_header("vertex_ai"))
|
beta_values.add(get_tool_search_beta_header("vertex_ai"))
|
||||||
|
|
||||||
|
if optional_params.get("safeguards") is not None:
|
||||||
|
beta_values.add(ANTHROPIC_BETA_HEADER_VALUES.DANGEROUS_TOOL_USE_2026_09_03.value)
|
||||||
|
|
||||||
if beta_values:
|
if beta_values:
|
||||||
headers["anthropic-beta"] = ",".join(beta_values)
|
headers["anthropic-beta"] = ",".join(beta_values)
|
||||||
|
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +1,4 @@
|
||||||
:HL["/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","style"]
|
:HL["/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","style"]
|
||||||
:HL["/litellm-asset-prefix/_next/static/chunks/3146e697tym4_.css","style"]
|
:HL["/litellm-asset-prefix/_next/static/chunks/3146e697tym4_.css","style"]
|
||||||
:HL["/litellm-asset-prefix/_next/static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
:HL["/litellm-asset-prefix/_next/static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
||||||
0:{"tree":{"name":"","param":null,"prefetchHints":4176,"slots":{"children":{"name":"(dashboard)","param":null,"prefetchHints":4192,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":4256,"slots":null}}}}},"staleTime":300,"buildId":"kXnLzJ6ylsRPmgSkCkCKM"}
|
0:{"tree":{"name":"","param":null,"prefetchHints":4176,"slots":{"children":{"name":"(dashboard)","param":null,"prefetchHints":4192,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":4256,"slots":null}}}}},"staleTime":300,"buildId":"RvBoD6No6gfcqg-cP5_LO"}
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -16,7 +16,7 @@ f:I[363178,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litel
|
||||||
6:X
|
6:X
|
||||||
e:X
|
e:X
|
||||||
e:C
|
e:C
|
||||||
0:{"buildId":"kXnLzJ6ylsRPmgSkCkCKM","data":[{"rsc":["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null,["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"isPartial":"$@5","staleTime":"$6","varyParams":null},{"rsc":["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L7",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L8",null,{"children":["$","$3",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"LiteLLM Dashboard"}],["$","meta","1",{"name":"description","content":"LiteLLM Proxy Admin UI"}],["$","link","2",{"rel":"icon","href":"/favicon.ico?favicon.3arlap5n8tyzg.ico","sizes":"48x48","type":"image/x-icon"}],["$","link","3",{"rel":"icon","href":"/get_favicon"}],["$","$L9","4",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":"$@a","staleTime":"$6","varyParams":null},{"rsc":["$","$1","c",{"children":[null,["$","$Lb",null,{"parallelRouterKey":"children","template":["$","$Lc",null,{}]}]]}],"isPartial":"$@d","staleTime":"$6","varyParams":"$e"},{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","precedence":"next"}],["$","link","1",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/chunks/3146e697tym4_.css","precedence":"next"}],["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js","async":true}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"inter_5972bc34-module__OU16Qa__className","children":["$","$Lf",null,{"attribute":"class","defaultTheme":"light","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L10",null,{"children":["$","$L11",null,{"children":[["$","$L12",null,{"children":["$","$Lb",null,{"parallelRouterKey":"children","template":["$","$Lc",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:data:0:rsc:props:children:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:data:0:rsc:props:children:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:data:0:rsc:props:children:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:data:0:rsc:props:children:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],[]]}]}],["$","$L13",null,{}]]}]}]}]}]}]]}],"isPartial":"$@14","staleTime":"$6","varyParams":null}],"isUpgradeableISRFallback":false,"a":"$@15","rootVaryParams":null,"needsRuntimeRequest":"$@16"}
|
0:{"buildId":"RvBoD6No6gfcqg-cP5_LO","data":[{"rsc":["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null,["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"isPartial":"$@5","staleTime":"$6","varyParams":null},{"rsc":["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L7",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L8",null,{"children":["$","$3",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"LiteLLM Dashboard"}],["$","meta","1",{"name":"description","content":"LiteLLM Proxy Admin UI"}],["$","link","2",{"rel":"icon","href":"/favicon.ico?favicon.3arlap5n8tyzg.ico","sizes":"48x48","type":"image/x-icon"}],["$","link","3",{"rel":"icon","href":"/get_favicon"}],["$","$L9","4",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":"$@a","staleTime":"$6","varyParams":null},{"rsc":["$","$1","c",{"children":[null,["$","$Lb",null,{"parallelRouterKey":"children","template":["$","$Lc",null,{}]}]]}],"isPartial":"$@d","staleTime":"$6","varyParams":"$e"},{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","precedence":"next"}],["$","link","1",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/chunks/3146e697tym4_.css","precedence":"next"}],["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js","async":true}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"inter_5972bc34-module__OU16Qa__className","children":["$","$Lf",null,{"attribute":"class","defaultTheme":"light","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L10",null,{"children":["$","$L11",null,{"children":[["$","$L12",null,{"children":["$","$Lb",null,{"parallelRouterKey":"children","template":["$","$Lc",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:data:0:rsc:props:children:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:data:0:rsc:props:children:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:data:0:rsc:props:children:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:data:0:rsc:props:children:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],[]]}]}],["$","$L13",null,{}]]}]}]}]}]}]]}],"isPartial":"$@14","staleTime":"$6","varyParams":null}],"isUpgradeableISRFallback":false,"a":"$@15","rootVaryParams":null,"needsRuntimeRequest":"$@16"}
|
||||||
4:null
|
4:null
|
||||||
6:300
|
6:300
|
||||||
16:true
|
16:true
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
:HL["/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","style"]
|
:HL["/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","style"]
|
||||||
:HL["/litellm-asset-prefix/_next/static/chunks/3146e697tym4_.css","style"]
|
:HL["/litellm-asset-prefix/_next/static/chunks/3146e697tym4_.css","style"]
|
||||||
0:{"tree":{"name":"","param":null,"prefetchHints":4176,"slots":{"children":{"name":"/_not-found","param":null,"prefetchHints":4192,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":4256,"slots":null}}}}},"staleTime":300,"buildId":"kXnLzJ6ylsRPmgSkCkCKM"}
|
0:{"tree":{"name":"","param":null,"prefetchHints":4176,"slots":{"children":{"name":"/_not-found","param":null,"prefetchHints":4192,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":4256,"slots":null}}}}},"staleTime":300,"buildId":"RvBoD6No6gfcqg-cP5_LO"}
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -14,7 +14,7 @@ f:I[339756,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litel
|
||||||
a:X
|
a:X
|
||||||
12:X
|
12:X
|
||||||
12:C
|
12:C
|
||||||
0:{"buildId":"kXnLzJ6ylsRPmgSkCkCKM","data":[{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/034i32t0-7tdv.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/02erlqrgtvdvz.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/1wc_s6k4n6kyj.js","async":true}],["$","script","script-3",{"src":"/litellm-asset-prefix/_next/static/chunks/3fj8wylwf-stx.js","async":true}],["$","script","script-4",{"src":"/litellm-asset-prefix/_next/static/chunks/3jyuhlymn08un.js","async":true}],["$","script","script-5",{"src":"/litellm-asset-prefix/_next/static/chunks/1t7m5lyrljbza.js","async":true}],["$","script","script-6",{"src":"/litellm-asset-prefix/_next/static/chunks/0rq646fx4-bql.js","async":true}],["$","script","script-7",{"src":"/litellm-asset-prefix/_next/static/chunks/0x88jgebq4fjq.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"isPartial":"$@9","staleTime":"$a","varyParams":null},{"rsc":["$","$1","h",{"children":[null,["$","$Lb",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$Lc",null,{"children":["$","$7",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"LiteLLM Dashboard"}],["$","meta","1",{"name":"description","content":"LiteLLM Proxy Admin UI"}],["$","link","2",{"rel":"icon","href":"/favicon.ico?favicon.3arlap5n8tyzg.ico","sizes":"48x48","type":"image/x-icon"}],["$","link","3",{"rel":"icon","href":"/get_favicon"}],["$","$Ld","4",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":"$@e","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[null,["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}]}]]}],"isPartial":"$@11","staleTime":"$a","varyParams":"$12"},{"rsc":["$","$1","c",{"children":[[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/1kabwy23ggmhn.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/2riseu9p5tv2u.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/2dsu84-anah7m.js","async":true}],["$","script","script-3",{"src":"/litellm-asset-prefix/_next/static/chunks/2wi6ubg_xifzg.js","async":true}],["$","script","script-4",{"src":"/litellm-asset-prefix/_next/static/chunks/0eh6yvm8qswse.js","async":true}],["$","script","script-5",{"src":"/litellm-asset-prefix/_next/static/chunks/0aoel7yrv88fp.js","async":true}],["$","script","script-6",{"src":"/litellm-asset-prefix/_next/static/chunks/0uo3fyy_3adzw.js","async":true}],["$","script","script-7",{"src":"/litellm-asset-prefix/_next/static/chunks/14hu41xvpzmuj.js","async":true}],["$","script","script-8",{"src":"/litellm-asset-prefix/_next/static/chunks/1dmuabgwpu2jq.js","async":true}]],["$","$L13",null,{"Component":"$14","slots":{"children":["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]},"serverProvidedParams":{"params":"$0:data:0:rsc:props:children:0:props:serverProvidedParams:params","promises":["$@15"]}}]]}],"isPartial":"$@16","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","precedence":"next"}],"$L17","$L18","$L19","$L1a"],"$L1b"]}],"isPartial":"$@1c","staleTime":"$a","varyParams":null}],"isUpgradeableISRFallback":false,"a":"$@1d","rootVaryParams":null,"needsRuntimeRequest":"$@1e"}
|
0:{"buildId":"RvBoD6No6gfcqg-cP5_LO","data":[{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/034i32t0-7tdv.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/02erlqrgtvdvz.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/1wc_s6k4n6kyj.js","async":true}],["$","script","script-3",{"src":"/litellm-asset-prefix/_next/static/chunks/3fj8wylwf-stx.js","async":true}],["$","script","script-4",{"src":"/litellm-asset-prefix/_next/static/chunks/3jyuhlymn08un.js","async":true}],["$","script","script-5",{"src":"/litellm-asset-prefix/_next/static/chunks/1t7m5lyrljbza.js","async":true}],["$","script","script-6",{"src":"/litellm-asset-prefix/_next/static/chunks/0rq646fx4-bql.js","async":true}],["$","script","script-7",{"src":"/litellm-asset-prefix/_next/static/chunks/0x88jgebq4fjq.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"isPartial":"$@9","staleTime":"$a","varyParams":null},{"rsc":["$","$1","h",{"children":[null,["$","$Lb",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$Lc",null,{"children":["$","$7",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"LiteLLM Dashboard"}],["$","meta","1",{"name":"description","content":"LiteLLM Proxy Admin UI"}],["$","link","2",{"rel":"icon","href":"/favicon.ico?favicon.3arlap5n8tyzg.ico","sizes":"48x48","type":"image/x-icon"}],["$","link","3",{"rel":"icon","href":"/get_favicon"}],["$","$Ld","4",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":"$@e","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[null,["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}]}]]}],"isPartial":"$@11","staleTime":"$a","varyParams":"$12"},{"rsc":["$","$1","c",{"children":[[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/1kabwy23ggmhn.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/2riseu9p5tv2u.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/2dsu84-anah7m.js","async":true}],["$","script","script-3",{"src":"/litellm-asset-prefix/_next/static/chunks/2wi6ubg_xifzg.js","async":true}],["$","script","script-4",{"src":"/litellm-asset-prefix/_next/static/chunks/0eh6yvm8qswse.js","async":true}],["$","script","script-5",{"src":"/litellm-asset-prefix/_next/static/chunks/0aoel7yrv88fp.js","async":true}],["$","script","script-6",{"src":"/litellm-asset-prefix/_next/static/chunks/0uo3fyy_3adzw.js","async":true}],["$","script","script-7",{"src":"/litellm-asset-prefix/_next/static/chunks/14hu41xvpzmuj.js","async":true}],["$","script","script-8",{"src":"/litellm-asset-prefix/_next/static/chunks/1dmuabgwpu2jq.js","async":true}]],["$","$L13",null,{"Component":"$14","slots":{"children":["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]},"serverProvidedParams":{"params":"$0:data:0:rsc:props:children:0:props:serverProvidedParams:params","promises":["$@15"]}}]]}],"isPartial":"$@16","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","precedence":"next"}],"$L17","$L18","$L19","$L1a"],"$L1b"]}],"isPartial":"$@1c","staleTime":"$a","varyParams":null}],"isUpgradeableISRFallback":false,"a":"$@1d","rootVaryParams":null,"needsRuntimeRequest":"$@1e"}
|
||||||
1f:I[363178,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"ThemeProvider"]
|
1f:I[363178,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"ThemeProvider"]
|
||||||
20:I[12985,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"NuqsAdapter"]
|
20:I[12985,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"NuqsAdapter"]
|
||||||
21:I[867271,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"default"]
|
21:I[867271,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"default"]
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +1,4 @@
|
||||||
:HL["/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","style"]
|
:HL["/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","style"]
|
||||||
:HL["/litellm-asset-prefix/_next/static/chunks/3146e697tym4_.css","style"]
|
:HL["/litellm-asset-prefix/_next/static/chunks/3146e697tym4_.css","style"]
|
||||||
:HL["/litellm-asset-prefix/_next/static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
:HL["/litellm-asset-prefix/_next/static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
||||||
0:{"tree":{"name":"","param":null,"prefetchHints":4176,"slots":{"children":{"name":"(dashboard)","param":null,"prefetchHints":4192,"slots":{"children":{"name":"access-groups","param":null,"prefetchHints":4192,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":4256,"slots":null}}}}}}},"staleTime":300,"buildId":"kXnLzJ6ylsRPmgSkCkCKM"}
|
0:{"tree":{"name":"","param":null,"prefetchHints":4176,"slots":{"children":{"name":"(dashboard)","param":null,"prefetchHints":4192,"slots":{"children":{"name":"access-groups","param":null,"prefetchHints":4192,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":4256,"slots":null}}}}}}},"staleTime":300,"buildId":"RvBoD6No6gfcqg-cP5_LO"}
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -14,7 +14,7 @@ f:I[339756,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litel
|
||||||
a:X
|
a:X
|
||||||
12:X
|
12:X
|
||||||
12:C
|
12:C
|
||||||
0:{"buildId":"kXnLzJ6ylsRPmgSkCkCKM","data":[{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/12_-wfvirgolu.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/0r0nhtsbxio43.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/02erlqrgtvdvz.js","async":true}],["$","script","script-3",{"src":"/litellm-asset-prefix/_next/static/chunks/1wc_s6k4n6kyj.js","async":true}],["$","script","script-4",{"src":"/litellm-asset-prefix/_next/static/chunks/0x88jgebq4fjq.js","async":true}],["$","script","script-5",{"src":"/litellm-asset-prefix/_next/static/chunks/1t7m5lyrljbza.js","async":true}],["$","script","script-6",{"src":"/litellm-asset-prefix/_next/static/chunks/0__ufucx2g6ui.js","async":true}],["$","script","script-7",{"src":"/litellm-asset-prefix/_next/static/chunks/11c-g4jel910l.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"isPartial":"$@9","staleTime":"$a","varyParams":null},{"rsc":["$","$1","h",{"children":[null,["$","$Lb",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$Lc",null,{"children":["$","$7",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"LiteLLM Dashboard"}],["$","meta","1",{"name":"description","content":"LiteLLM Proxy Admin UI"}],["$","link","2",{"rel":"icon","href":"/favicon.ico?favicon.3arlap5n8tyzg.ico","sizes":"48x48","type":"image/x-icon"}],["$","link","3",{"rel":"icon","href":"/get_favicon"}],["$","$Ld","4",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":"$@e","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[null,["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}]}]]}],"isPartial":"$@11","staleTime":"$a","varyParams":"$12"},{"rsc":["$","$1","c",{"children":[[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/1kabwy23ggmhn.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/2riseu9p5tv2u.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/2dsu84-anah7m.js","async":true}],["$","script","script-3",{"src":"/litellm-asset-prefix/_next/static/chunks/2wi6ubg_xifzg.js","async":true}],["$","script","script-4",{"src":"/litellm-asset-prefix/_next/static/chunks/0eh6yvm8qswse.js","async":true}],["$","script","script-5",{"src":"/litellm-asset-prefix/_next/static/chunks/0aoel7yrv88fp.js","async":true}],["$","script","script-6",{"src":"/litellm-asset-prefix/_next/static/chunks/0uo3fyy_3adzw.js","async":true}],["$","script","script-7",{"src":"/litellm-asset-prefix/_next/static/chunks/14hu41xvpzmuj.js","async":true}],["$","script","script-8",{"src":"/litellm-asset-prefix/_next/static/chunks/1dmuabgwpu2jq.js","async":true}]],["$","$L13",null,{"Component":"$14","slots":{"children":["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]},"serverProvidedParams":{"params":"$0:data:0:rsc:props:children:0:props:serverProvidedParams:params","promises":["$@15"]}}]]}],"isPartial":"$@16","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","precedence":"next"}],"$L17","$L18","$L19","$L1a"],"$L1b"]}],"isPartial":"$@1c","staleTime":"$a","varyParams":null}],"isUpgradeableISRFallback":false,"a":"$@1d","rootVaryParams":null,"needsRuntimeRequest":"$@1e"}
|
0:{"buildId":"RvBoD6No6gfcqg-cP5_LO","data":[{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/12_-wfvirgolu.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/0r0nhtsbxio43.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/02erlqrgtvdvz.js","async":true}],["$","script","script-3",{"src":"/litellm-asset-prefix/_next/static/chunks/1wc_s6k4n6kyj.js","async":true}],["$","script","script-4",{"src":"/litellm-asset-prefix/_next/static/chunks/0x88jgebq4fjq.js","async":true}],["$","script","script-5",{"src":"/litellm-asset-prefix/_next/static/chunks/1t7m5lyrljbza.js","async":true}],["$","script","script-6",{"src":"/litellm-asset-prefix/_next/static/chunks/0__ufucx2g6ui.js","async":true}],["$","script","script-7",{"src":"/litellm-asset-prefix/_next/static/chunks/11c-g4jel910l.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"isPartial":"$@9","staleTime":"$a","varyParams":null},{"rsc":["$","$1","h",{"children":[null,["$","$Lb",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$Lc",null,{"children":["$","$7",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"LiteLLM Dashboard"}],["$","meta","1",{"name":"description","content":"LiteLLM Proxy Admin UI"}],["$","link","2",{"rel":"icon","href":"/favicon.ico?favicon.3arlap5n8tyzg.ico","sizes":"48x48","type":"image/x-icon"}],["$","link","3",{"rel":"icon","href":"/get_favicon"}],["$","$Ld","4",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":"$@e","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[null,["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}]}]]}],"isPartial":"$@11","staleTime":"$a","varyParams":"$12"},{"rsc":["$","$1","c",{"children":[[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/1kabwy23ggmhn.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/2riseu9p5tv2u.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/2dsu84-anah7m.js","async":true}],["$","script","script-3",{"src":"/litellm-asset-prefix/_next/static/chunks/2wi6ubg_xifzg.js","async":true}],["$","script","script-4",{"src":"/litellm-asset-prefix/_next/static/chunks/0eh6yvm8qswse.js","async":true}],["$","script","script-5",{"src":"/litellm-asset-prefix/_next/static/chunks/0aoel7yrv88fp.js","async":true}],["$","script","script-6",{"src":"/litellm-asset-prefix/_next/static/chunks/0uo3fyy_3adzw.js","async":true}],["$","script","script-7",{"src":"/litellm-asset-prefix/_next/static/chunks/14hu41xvpzmuj.js","async":true}],["$","script","script-8",{"src":"/litellm-asset-prefix/_next/static/chunks/1dmuabgwpu2jq.js","async":true}]],["$","$L13",null,{"Component":"$14","slots":{"children":["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]},"serverProvidedParams":{"params":"$0:data:0:rsc:props:children:0:props:serverProvidedParams:params","promises":["$@15"]}}]]}],"isPartial":"$@16","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","precedence":"next"}],"$L17","$L18","$L19","$L1a"],"$L1b"]}],"isPartial":"$@1c","staleTime":"$a","varyParams":null}],"isUpgradeableISRFallback":false,"a":"$@1d","rootVaryParams":null,"needsRuntimeRequest":"$@1e"}
|
||||||
1f:I[363178,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"ThemeProvider"]
|
1f:I[363178,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"ThemeProvider"]
|
||||||
20:I[12985,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"NuqsAdapter"]
|
20:I[12985,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"NuqsAdapter"]
|
||||||
21:I[867271,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"default"]
|
21:I[867271,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"default"]
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +1,4 @@
|
||||||
:HL["/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","style"]
|
:HL["/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","style"]
|
||||||
:HL["/litellm-asset-prefix/_next/static/chunks/3146e697tym4_.css","style"]
|
:HL["/litellm-asset-prefix/_next/static/chunks/3146e697tym4_.css","style"]
|
||||||
:HL["/litellm-asset-prefix/_next/static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
:HL["/litellm-asset-prefix/_next/static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
||||||
0:{"tree":{"name":"","param":null,"prefetchHints":4176,"slots":{"children":{"name":"(dashboard)","param":null,"prefetchHints":4192,"slots":{"children":{"name":"admin-panel","param":null,"prefetchHints":4192,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":4256,"slots":null}}}}}}},"staleTime":300,"buildId":"kXnLzJ6ylsRPmgSkCkCKM"}
|
0:{"tree":{"name":"","param":null,"prefetchHints":4176,"slots":{"children":{"name":"(dashboard)","param":null,"prefetchHints":4192,"slots":{"children":{"name":"admin-panel","param":null,"prefetchHints":4192,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":4256,"slots":null}}}}}}},"staleTime":300,"buildId":"RvBoD6No6gfcqg-cP5_LO"}
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1,6 +1,6 @@
|
||||||
1:"$Sreact.fragment"
|
1:"$Sreact.fragment"
|
||||||
2:I[347257,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"ClientPageRoot"]
|
2:I[347257,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"ClientPageRoot"]
|
||||||
3:I[298805,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js","/litellm-asset-prefix/_next/static/chunks/1kabwy23ggmhn.js","/litellm-asset-prefix/_next/static/chunks/2riseu9p5tv2u.js","/litellm-asset-prefix/_next/static/chunks/2dsu84-anah7m.js","/litellm-asset-prefix/_next/static/chunks/2wi6ubg_xifzg.js","/litellm-asset-prefix/_next/static/chunks/0eh6yvm8qswse.js","/litellm-asset-prefix/_next/static/chunks/0aoel7yrv88fp.js","/litellm-asset-prefix/_next/static/chunks/0uo3fyy_3adzw.js","/litellm-asset-prefix/_next/static/chunks/14hu41xvpzmuj.js","/litellm-asset-prefix/_next/static/chunks/1dmuabgwpu2jq.js","/litellm-asset-prefix/_next/static/chunks/2ak23etir_a-u.js","/litellm-asset-prefix/_next/static/chunks/02erlqrgtvdvz.js","/litellm-asset-prefix/_next/static/chunks/0rq646fx4-bql.js","/litellm-asset-prefix/_next/static/chunks/1wc_s6k4n6kyj.js","/litellm-asset-prefix/_next/static/chunks/3fj8wylwf-stx.js","/litellm-asset-prefix/_next/static/chunks/2dfd44r3wlgbs.js","/litellm-asset-prefix/_next/static/chunks/0vpn3th7sn4vf.js","/litellm-asset-prefix/_next/static/chunks/37ku8zflc54x3.js","/litellm-asset-prefix/_next/static/chunks/0xl3regan_n7s.js","/litellm-asset-prefix/_next/static/chunks/2p1uu5emx8nf4.js","/litellm-asset-prefix/_next/static/chunks/0i--ursme41qh.js","/litellm-asset-prefix/_next/static/chunks/2h_4-n4rgy99r.js","/litellm-asset-prefix/_next/static/chunks/0x88jgebq4fjq.js","/litellm-asset-prefix/_next/static/chunks/0n3xjld_n2chp.js","/litellm-asset-prefix/_next/static/chunks/0ui61y5hgz0ck.js","/litellm-asset-prefix/_next/static/chunks/1t7m5lyrljbza.js","/litellm-asset-prefix/_next/static/chunks/033urjy22ackz.js"],"default"]
|
3:I[298805,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js","/litellm-asset-prefix/_next/static/chunks/1kabwy23ggmhn.js","/litellm-asset-prefix/_next/static/chunks/2riseu9p5tv2u.js","/litellm-asset-prefix/_next/static/chunks/2dsu84-anah7m.js","/litellm-asset-prefix/_next/static/chunks/2wi6ubg_xifzg.js","/litellm-asset-prefix/_next/static/chunks/0eh6yvm8qswse.js","/litellm-asset-prefix/_next/static/chunks/0aoel7yrv88fp.js","/litellm-asset-prefix/_next/static/chunks/0uo3fyy_3adzw.js","/litellm-asset-prefix/_next/static/chunks/14hu41xvpzmuj.js","/litellm-asset-prefix/_next/static/chunks/1dmuabgwpu2jq.js","/litellm-asset-prefix/_next/static/chunks/2ak23etir_a-u.js","/litellm-asset-prefix/_next/static/chunks/02erlqrgtvdvz.js","/litellm-asset-prefix/_next/static/chunks/0rq646fx4-bql.js","/litellm-asset-prefix/_next/static/chunks/1wc_s6k4n6kyj.js","/litellm-asset-prefix/_next/static/chunks/3fj8wylwf-stx.js","/litellm-asset-prefix/_next/static/chunks/2dfd44r3wlgbs.js","/litellm-asset-prefix/_next/static/chunks/0vpn3th7sn4vf.js","/litellm-asset-prefix/_next/static/chunks/37ku8zflc54x3.js","/litellm-asset-prefix/_next/static/chunks/0xl3regan_n7s.js","/litellm-asset-prefix/_next/static/chunks/2p1uu5emx8nf4.js","/litellm-asset-prefix/_next/static/chunks/0i--ursme41qh.js","/litellm-asset-prefix/_next/static/chunks/189toy031xroj.js","/litellm-asset-prefix/_next/static/chunks/0x88jgebq4fjq.js","/litellm-asset-prefix/_next/static/chunks/0n3xjld_n2chp.js","/litellm-asset-prefix/_next/static/chunks/0ui61y5hgz0ck.js","/litellm-asset-prefix/_next/static/chunks/1t7m5lyrljbza.js","/litellm-asset-prefix/_next/static/chunks/033urjy22ackz.js"],"default"]
|
||||||
6:I[897367,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"OutletBoundary"]
|
6:I[897367,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"OutletBoundary"]
|
||||||
7:"$Sreact.suspense"
|
7:"$Sreact.suspense"
|
||||||
b:I[897367,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"ViewportBoundary"]
|
b:I[897367,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"ViewportBoundary"]
|
||||||
|
|
@ -13,7 +13,7 @@ f:I[339756,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litel
|
||||||
a:X
|
a:X
|
||||||
12:X
|
12:X
|
||||||
12:C
|
12:C
|
||||||
0:{"buildId":"kXnLzJ6ylsRPmgSkCkCKM","data":[{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/2ak23etir_a-u.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/02erlqrgtvdvz.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/0rq646fx4-bql.js","async":true}],["$","script","script-3",{"src":"/litellm-asset-prefix/_next/static/chunks/1wc_s6k4n6kyj.js","async":true}],["$","script","script-4",{"src":"/litellm-asset-prefix/_next/static/chunks/3fj8wylwf-stx.js","async":true}],["$","script","script-5",{"src":"/litellm-asset-prefix/_next/static/chunks/2dfd44r3wlgbs.js","async":true}],["$","script","script-6",{"src":"/litellm-asset-prefix/_next/static/chunks/0vpn3th7sn4vf.js","async":true}],["$","script","script-7",{"src":"/litellm-asset-prefix/_next/static/chunks/37ku8zflc54x3.js","async":true}],["$","script","script-8",{"src":"/litellm-asset-prefix/_next/static/chunks/0xl3regan_n7s.js","async":true}],["$","script","script-9",{"src":"/litellm-asset-prefix/_next/static/chunks/2p1uu5emx8nf4.js","async":true}],["$","script","script-10",{"src":"/litellm-asset-prefix/_next/static/chunks/0i--ursme41qh.js","async":true}],["$","script","script-11",{"src":"/litellm-asset-prefix/_next/static/chunks/2h_4-n4rgy99r.js","async":true}],["$","script","script-12",{"src":"/litellm-asset-prefix/_next/static/chunks/0x88jgebq4fjq.js","async":true}],["$","script","script-13",{"src":"/litellm-asset-prefix/_next/static/chunks/0n3xjld_n2chp.js","async":true}],["$","script","script-14",{"src":"/litellm-asset-prefix/_next/static/chunks/0ui61y5hgz0ck.js","async":true}],["$","script","script-15",{"src":"/litellm-asset-prefix/_next/static/chunks/1t7m5lyrljbza.js","async":true}],["$","script","script-16",{"src":"/litellm-asset-prefix/_next/static/chunks/033urjy22ackz.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"isPartial":"$@9","staleTime":"$a","varyParams":null},{"rsc":["$","$1","h",{"children":[null,["$","$Lb",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$Lc",null,{"children":["$","$7",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"LiteLLM Dashboard"}],["$","meta","1",{"name":"description","content":"LiteLLM Proxy Admin UI"}],["$","link","2",{"rel":"icon","href":"/favicon.ico?favicon.3arlap5n8tyzg.ico","sizes":"48x48","type":"image/x-icon"}],["$","link","3",{"rel":"icon","href":"/get_favicon"}],["$","$Ld","4",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":"$@e","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[null,["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}]}]]}],"isPartial":"$@11","staleTime":"$a","varyParams":"$12"},{"rsc":["$","$1","c",{"children":[[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/1kabwy23ggmhn.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/2riseu9p5tv2u.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/2dsu84-anah7m.js","async":true}],["$","script","script-3",{"src":"/litellm-asset-prefix/_next/static/chunks/2wi6ubg_xifzg.js","async":true}],["$","script","script-4",{"src":"/litellm-asset-prefix/_next/static/chunks/0eh6yvm8qswse.js","async":true}],["$","script","script-5",{"src":"/litellm-asset-prefix/_next/static/chunks/0aoel7yrv88fp.js","async":true}],["$","script","script-6",{"src":"/litellm-asset-prefix/_next/static/chunks/0uo3fyy_3adzw.js","async":true}],["$","script","script-7",{"src":"/litellm-asset-prefix/_next/static/chunks/14hu41xvpzmuj.js","async":true}],["$","script","script-8",{"src":"/litellm-asset-prefix/_next/static/chunks/1dmuabgwpu2jq.js","async":true}]],["$","$L13",null,{"Component":"$14","slots":{"children":["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":"$L15"}]],[]]}]},"serverProvidedParams":{"params":"$0:data:0:rsc:props:children:0:props:serverProvidedParams:params","promises":["$@16"]}}]]}],"isPartial":"$@17","staleTime":"$a","varyParams":null},{"rsc":"$L18","isPartial":"$@19","staleTime":"$a","varyParams":null}],"isUpgradeableISRFallback":false,"a":"$@1a","rootVaryParams":null,"needsRuntimeRequest":"$@1b"}
|
0:{"buildId":"RvBoD6No6gfcqg-cP5_LO","data":[{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/2ak23etir_a-u.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/02erlqrgtvdvz.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/0rq646fx4-bql.js","async":true}],["$","script","script-3",{"src":"/litellm-asset-prefix/_next/static/chunks/1wc_s6k4n6kyj.js","async":true}],["$","script","script-4",{"src":"/litellm-asset-prefix/_next/static/chunks/3fj8wylwf-stx.js","async":true}],["$","script","script-5",{"src":"/litellm-asset-prefix/_next/static/chunks/2dfd44r3wlgbs.js","async":true}],["$","script","script-6",{"src":"/litellm-asset-prefix/_next/static/chunks/0vpn3th7sn4vf.js","async":true}],["$","script","script-7",{"src":"/litellm-asset-prefix/_next/static/chunks/37ku8zflc54x3.js","async":true}],["$","script","script-8",{"src":"/litellm-asset-prefix/_next/static/chunks/0xl3regan_n7s.js","async":true}],["$","script","script-9",{"src":"/litellm-asset-prefix/_next/static/chunks/2p1uu5emx8nf4.js","async":true}],["$","script","script-10",{"src":"/litellm-asset-prefix/_next/static/chunks/0i--ursme41qh.js","async":true}],["$","script","script-11",{"src":"/litellm-asset-prefix/_next/static/chunks/189toy031xroj.js","async":true}],["$","script","script-12",{"src":"/litellm-asset-prefix/_next/static/chunks/0x88jgebq4fjq.js","async":true}],["$","script","script-13",{"src":"/litellm-asset-prefix/_next/static/chunks/0n3xjld_n2chp.js","async":true}],["$","script","script-14",{"src":"/litellm-asset-prefix/_next/static/chunks/0ui61y5hgz0ck.js","async":true}],["$","script","script-15",{"src":"/litellm-asset-prefix/_next/static/chunks/1t7m5lyrljbza.js","async":true}],["$","script","script-16",{"src":"/litellm-asset-prefix/_next/static/chunks/033urjy22ackz.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"isPartial":"$@9","staleTime":"$a","varyParams":null},{"rsc":["$","$1","h",{"children":[null,["$","$Lb",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$Lc",null,{"children":["$","$7",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"LiteLLM Dashboard"}],["$","meta","1",{"name":"description","content":"LiteLLM Proxy Admin UI"}],["$","link","2",{"rel":"icon","href":"/favicon.ico?favicon.3arlap5n8tyzg.ico","sizes":"48x48","type":"image/x-icon"}],["$","link","3",{"rel":"icon","href":"/get_favicon"}],["$","$Ld","4",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":"$@e","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[null,["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}]}]]}],"isPartial":"$@11","staleTime":"$a","varyParams":"$12"},{"rsc":["$","$1","c",{"children":[[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/1kabwy23ggmhn.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/2riseu9p5tv2u.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/2dsu84-anah7m.js","async":true}],["$","script","script-3",{"src":"/litellm-asset-prefix/_next/static/chunks/2wi6ubg_xifzg.js","async":true}],["$","script","script-4",{"src":"/litellm-asset-prefix/_next/static/chunks/0eh6yvm8qswse.js","async":true}],["$","script","script-5",{"src":"/litellm-asset-prefix/_next/static/chunks/0aoel7yrv88fp.js","async":true}],["$","script","script-6",{"src":"/litellm-asset-prefix/_next/static/chunks/0uo3fyy_3adzw.js","async":true}],["$","script","script-7",{"src":"/litellm-asset-prefix/_next/static/chunks/14hu41xvpzmuj.js","async":true}],["$","script","script-8",{"src":"/litellm-asset-prefix/_next/static/chunks/1dmuabgwpu2jq.js","async":true}]],["$","$L13",null,{"Component":"$14","slots":{"children":["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":"$L15"}]],[]]}]},"serverProvidedParams":{"params":"$0:data:0:rsc:props:children:0:props:serverProvidedParams:params","promises":["$@16"]}}]]}],"isPartial":"$@17","staleTime":"$a","varyParams":null},{"rsc":"$L18","isPartial":"$@19","staleTime":"$a","varyParams":null}],"isUpgradeableISRFallback":false,"a":"$@1a","rootVaryParams":null,"needsRuntimeRequest":"$@1b"}
|
||||||
1c:I[363178,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"ThemeProvider"]
|
1c:I[363178,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"ThemeProvider"]
|
||||||
1d:I[12985,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"NuqsAdapter"]
|
1d:I[12985,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"NuqsAdapter"]
|
||||||
1e:I[867271,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"default"]
|
1e:I[867271,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"default"]
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +1,4 @@
|
||||||
:HL["/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","style"]
|
:HL["/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","style"]
|
||||||
:HL["/litellm-asset-prefix/_next/static/chunks/3146e697tym4_.css","style"]
|
:HL["/litellm-asset-prefix/_next/static/chunks/3146e697tym4_.css","style"]
|
||||||
:HL["/litellm-asset-prefix/_next/static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
:HL["/litellm-asset-prefix/_next/static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
||||||
0:{"tree":{"name":"","param":null,"prefetchHints":4176,"slots":{"children":{"name":"(dashboard)","param":null,"prefetchHints":4192,"slots":{"children":{"name":"agents","param":null,"prefetchHints":4192,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":4256,"slots":null}}}}}}},"staleTime":300,"buildId":"kXnLzJ6ylsRPmgSkCkCKM"}
|
0:{"tree":{"name":"","param":null,"prefetchHints":4176,"slots":{"children":{"name":"(dashboard)","param":null,"prefetchHints":4192,"slots":{"children":{"name":"agents","param":null,"prefetchHints":4192,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":4256,"slots":null}}}}}}},"staleTime":300,"buildId":"RvBoD6No6gfcqg-cP5_LO"}
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1,6 +1,6 @@
|
||||||
1:"$Sreact.fragment"
|
1:"$Sreact.fragment"
|
||||||
2:I[347257,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"ClientPageRoot"]
|
2:I[347257,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"ClientPageRoot"]
|
||||||
3:I[973095,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js","/litellm-asset-prefix/_next/static/chunks/1kabwy23ggmhn.js","/litellm-asset-prefix/_next/static/chunks/2riseu9p5tv2u.js","/litellm-asset-prefix/_next/static/chunks/2dsu84-anah7m.js","/litellm-asset-prefix/_next/static/chunks/2wi6ubg_xifzg.js","/litellm-asset-prefix/_next/static/chunks/0eh6yvm8qswse.js","/litellm-asset-prefix/_next/static/chunks/0aoel7yrv88fp.js","/litellm-asset-prefix/_next/static/chunks/0uo3fyy_3adzw.js","/litellm-asset-prefix/_next/static/chunks/14hu41xvpzmuj.js","/litellm-asset-prefix/_next/static/chunks/1dmuabgwpu2jq.js","/litellm-asset-prefix/_next/static/chunks/42l1q3sduwm1n.js","/litellm-asset-prefix/_next/static/chunks/02erlqrgtvdvz.js","/litellm-asset-prefix/_next/static/chunks/2gbkayw_yh5ii.js","/litellm-asset-prefix/_next/static/chunks/1wc_s6k4n6kyj.js","/litellm-asset-prefix/_next/static/chunks/0rq646fx4-bql.js","/litellm-asset-prefix/_next/static/chunks/1x_b27185ie7w.js","/litellm-asset-prefix/_next/static/chunks/3q0srap0rd2s2.js","/litellm-asset-prefix/_next/static/chunks/2p1uu5emx8nf4.js","/litellm-asset-prefix/_next/static/chunks/1t7m5lyrljbza.js","/litellm-asset-prefix/_next/static/chunks/2h_4-n4rgy99r.js","/litellm-asset-prefix/_next/static/chunks/3fj8wylwf-stx.js","/litellm-asset-prefix/_next/static/chunks/0x88jgebq4fjq.js","/litellm-asset-prefix/_next/static/chunks/033urjy22ackz.js","/litellm-asset-prefix/_next/static/chunks/0n3xjld_n2chp.js","/litellm-asset-prefix/_next/static/chunks/0ui61y5hgz0ck.js","/litellm-asset-prefix/_next/static/chunks/0xl3regan_n7s.js"],"default"]
|
3:I[973095,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js","/litellm-asset-prefix/_next/static/chunks/1kabwy23ggmhn.js","/litellm-asset-prefix/_next/static/chunks/2riseu9p5tv2u.js","/litellm-asset-prefix/_next/static/chunks/2dsu84-anah7m.js","/litellm-asset-prefix/_next/static/chunks/2wi6ubg_xifzg.js","/litellm-asset-prefix/_next/static/chunks/0eh6yvm8qswse.js","/litellm-asset-prefix/_next/static/chunks/0aoel7yrv88fp.js","/litellm-asset-prefix/_next/static/chunks/0uo3fyy_3adzw.js","/litellm-asset-prefix/_next/static/chunks/14hu41xvpzmuj.js","/litellm-asset-prefix/_next/static/chunks/1dmuabgwpu2jq.js","/litellm-asset-prefix/_next/static/chunks/42l1q3sduwm1n.js","/litellm-asset-prefix/_next/static/chunks/02erlqrgtvdvz.js","/litellm-asset-prefix/_next/static/chunks/2gbkayw_yh5ii.js","/litellm-asset-prefix/_next/static/chunks/1wc_s6k4n6kyj.js","/litellm-asset-prefix/_next/static/chunks/0rq646fx4-bql.js","/litellm-asset-prefix/_next/static/chunks/1x_b27185ie7w.js","/litellm-asset-prefix/_next/static/chunks/3q0srap0rd2s2.js","/litellm-asset-prefix/_next/static/chunks/2p1uu5emx8nf4.js","/litellm-asset-prefix/_next/static/chunks/1t7m5lyrljbza.js","/litellm-asset-prefix/_next/static/chunks/189toy031xroj.js","/litellm-asset-prefix/_next/static/chunks/3fj8wylwf-stx.js","/litellm-asset-prefix/_next/static/chunks/0x88jgebq4fjq.js","/litellm-asset-prefix/_next/static/chunks/033urjy22ackz.js","/litellm-asset-prefix/_next/static/chunks/0n3xjld_n2chp.js","/litellm-asset-prefix/_next/static/chunks/0ui61y5hgz0ck.js","/litellm-asset-prefix/_next/static/chunks/0xl3regan_n7s.js"],"default"]
|
||||||
6:I[897367,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"OutletBoundary"]
|
6:I[897367,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"OutletBoundary"]
|
||||||
7:"$Sreact.suspense"
|
7:"$Sreact.suspense"
|
||||||
b:I[897367,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"ViewportBoundary"]
|
b:I[897367,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"ViewportBoundary"]
|
||||||
|
|
@ -13,7 +13,7 @@ f:I[339756,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litel
|
||||||
a:X
|
a:X
|
||||||
12:X
|
12:X
|
||||||
12:C
|
12:C
|
||||||
0:{"buildId":"kXnLzJ6ylsRPmgSkCkCKM","data":[{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/42l1q3sduwm1n.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/02erlqrgtvdvz.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/2gbkayw_yh5ii.js","async":true}],["$","script","script-3",{"src":"/litellm-asset-prefix/_next/static/chunks/1wc_s6k4n6kyj.js","async":true}],["$","script","script-4",{"src":"/litellm-asset-prefix/_next/static/chunks/0rq646fx4-bql.js","async":true}],["$","script","script-5",{"src":"/litellm-asset-prefix/_next/static/chunks/1x_b27185ie7w.js","async":true}],["$","script","script-6",{"src":"/litellm-asset-prefix/_next/static/chunks/3q0srap0rd2s2.js","async":true}],["$","script","script-7",{"src":"/litellm-asset-prefix/_next/static/chunks/2p1uu5emx8nf4.js","async":true}],["$","script","script-8",{"src":"/litellm-asset-prefix/_next/static/chunks/1t7m5lyrljbza.js","async":true}],["$","script","script-9",{"src":"/litellm-asset-prefix/_next/static/chunks/2h_4-n4rgy99r.js","async":true}],["$","script","script-10",{"src":"/litellm-asset-prefix/_next/static/chunks/3fj8wylwf-stx.js","async":true}],["$","script","script-11",{"src":"/litellm-asset-prefix/_next/static/chunks/0x88jgebq4fjq.js","async":true}],["$","script","script-12",{"src":"/litellm-asset-prefix/_next/static/chunks/033urjy22ackz.js","async":true}],["$","script","script-13",{"src":"/litellm-asset-prefix/_next/static/chunks/0n3xjld_n2chp.js","async":true}],["$","script","script-14",{"src":"/litellm-asset-prefix/_next/static/chunks/0ui61y5hgz0ck.js","async":true}],["$","script","script-15",{"src":"/litellm-asset-prefix/_next/static/chunks/0xl3regan_n7s.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"isPartial":"$@9","staleTime":"$a","varyParams":null},{"rsc":["$","$1","h",{"children":[null,["$","$Lb",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$Lc",null,{"children":["$","$7",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"LiteLLM Dashboard"}],["$","meta","1",{"name":"description","content":"LiteLLM Proxy Admin UI"}],["$","link","2",{"rel":"icon","href":"/favicon.ico?favicon.3arlap5n8tyzg.ico","sizes":"48x48","type":"image/x-icon"}],["$","link","3",{"rel":"icon","href":"/get_favicon"}],["$","$Ld","4",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":"$@e","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[null,["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}]}]]}],"isPartial":"$@11","staleTime":"$a","varyParams":"$12"},{"rsc":["$","$1","c",{"children":[[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/1kabwy23ggmhn.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/2riseu9p5tv2u.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/2dsu84-anah7m.js","async":true}],["$","script","script-3",{"src":"/litellm-asset-prefix/_next/static/chunks/2wi6ubg_xifzg.js","async":true}],["$","script","script-4",{"src":"/litellm-asset-prefix/_next/static/chunks/0eh6yvm8qswse.js","async":true}],["$","script","script-5",{"src":"/litellm-asset-prefix/_next/static/chunks/0aoel7yrv88fp.js","async":true}],["$","script","script-6",{"src":"/litellm-asset-prefix/_next/static/chunks/0uo3fyy_3adzw.js","async":true}],["$","script","script-7",{"src":"/litellm-asset-prefix/_next/static/chunks/14hu41xvpzmuj.js","async":true}],["$","script","script-8",{"src":"/litellm-asset-prefix/_next/static/chunks/1dmuabgwpu2jq.js","async":true}]],["$","$L13",null,{"Component":"$14","slots":{"children":["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":"$L15"}]],[]]}]},"serverProvidedParams":{"params":"$0:data:0:rsc:props:children:0:props:serverProvidedParams:params","promises":["$@16"]}}]]}],"isPartial":"$@17","staleTime":"$a","varyParams":null},{"rsc":"$L18","isPartial":"$@19","staleTime":"$a","varyParams":null}],"isUpgradeableISRFallback":false,"a":"$@1a","rootVaryParams":null,"needsRuntimeRequest":"$@1b"}
|
0:{"buildId":"RvBoD6No6gfcqg-cP5_LO","data":[{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/42l1q3sduwm1n.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/02erlqrgtvdvz.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/2gbkayw_yh5ii.js","async":true}],["$","script","script-3",{"src":"/litellm-asset-prefix/_next/static/chunks/1wc_s6k4n6kyj.js","async":true}],["$","script","script-4",{"src":"/litellm-asset-prefix/_next/static/chunks/0rq646fx4-bql.js","async":true}],["$","script","script-5",{"src":"/litellm-asset-prefix/_next/static/chunks/1x_b27185ie7w.js","async":true}],["$","script","script-6",{"src":"/litellm-asset-prefix/_next/static/chunks/3q0srap0rd2s2.js","async":true}],["$","script","script-7",{"src":"/litellm-asset-prefix/_next/static/chunks/2p1uu5emx8nf4.js","async":true}],["$","script","script-8",{"src":"/litellm-asset-prefix/_next/static/chunks/1t7m5lyrljbza.js","async":true}],["$","script","script-9",{"src":"/litellm-asset-prefix/_next/static/chunks/189toy031xroj.js","async":true}],["$","script","script-10",{"src":"/litellm-asset-prefix/_next/static/chunks/3fj8wylwf-stx.js","async":true}],["$","script","script-11",{"src":"/litellm-asset-prefix/_next/static/chunks/0x88jgebq4fjq.js","async":true}],["$","script","script-12",{"src":"/litellm-asset-prefix/_next/static/chunks/033urjy22ackz.js","async":true}],["$","script","script-13",{"src":"/litellm-asset-prefix/_next/static/chunks/0n3xjld_n2chp.js","async":true}],["$","script","script-14",{"src":"/litellm-asset-prefix/_next/static/chunks/0ui61y5hgz0ck.js","async":true}],["$","script","script-15",{"src":"/litellm-asset-prefix/_next/static/chunks/0xl3regan_n7s.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"isPartial":"$@9","staleTime":"$a","varyParams":null},{"rsc":["$","$1","h",{"children":[null,["$","$Lb",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$Lc",null,{"children":["$","$7",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"LiteLLM Dashboard"}],["$","meta","1",{"name":"description","content":"LiteLLM Proxy Admin UI"}],["$","link","2",{"rel":"icon","href":"/favicon.ico?favicon.3arlap5n8tyzg.ico","sizes":"48x48","type":"image/x-icon"}],["$","link","3",{"rel":"icon","href":"/get_favicon"}],["$","$Ld","4",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":"$@e","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[null,["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}]}]]}],"isPartial":"$@11","staleTime":"$a","varyParams":"$12"},{"rsc":["$","$1","c",{"children":[[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/1kabwy23ggmhn.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/2riseu9p5tv2u.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/2dsu84-anah7m.js","async":true}],["$","script","script-3",{"src":"/litellm-asset-prefix/_next/static/chunks/2wi6ubg_xifzg.js","async":true}],["$","script","script-4",{"src":"/litellm-asset-prefix/_next/static/chunks/0eh6yvm8qswse.js","async":true}],["$","script","script-5",{"src":"/litellm-asset-prefix/_next/static/chunks/0aoel7yrv88fp.js","async":true}],["$","script","script-6",{"src":"/litellm-asset-prefix/_next/static/chunks/0uo3fyy_3adzw.js","async":true}],["$","script","script-7",{"src":"/litellm-asset-prefix/_next/static/chunks/14hu41xvpzmuj.js","async":true}],["$","script","script-8",{"src":"/litellm-asset-prefix/_next/static/chunks/1dmuabgwpu2jq.js","async":true}]],["$","$L13",null,{"Component":"$14","slots":{"children":["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":"$L15"}]],[]]}]},"serverProvidedParams":{"params":"$0:data:0:rsc:props:children:0:props:serverProvidedParams:params","promises":["$@16"]}}]]}],"isPartial":"$@17","staleTime":"$a","varyParams":null},{"rsc":"$L18","isPartial":"$@19","staleTime":"$a","varyParams":null}],"isUpgradeableISRFallback":false,"a":"$@1a","rootVaryParams":null,"needsRuntimeRequest":"$@1b"}
|
||||||
1c:I[363178,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"ThemeProvider"]
|
1c:I[363178,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"ThemeProvider"]
|
||||||
1d:I[12985,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"NuqsAdapter"]
|
1d:I[12985,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"NuqsAdapter"]
|
||||||
1e:I[867271,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"default"]
|
1e:I[867271,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"default"]
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +1,4 @@
|
||||||
:HL["/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","style"]
|
:HL["/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","style"]
|
||||||
:HL["/litellm-asset-prefix/_next/static/chunks/3146e697tym4_.css","style"]
|
:HL["/litellm-asset-prefix/_next/static/chunks/3146e697tym4_.css","style"]
|
||||||
:HL["/litellm-asset-prefix/_next/static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
:HL["/litellm-asset-prefix/_next/static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
||||||
0:{"tree":{"name":"","param":null,"prefetchHints":4176,"slots":{"children":{"name":"(dashboard)","param":null,"prefetchHints":4192,"slots":{"children":{"name":"api-keys","param":null,"prefetchHints":4192,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":4256,"slots":null}}}}}}},"staleTime":300,"buildId":"kXnLzJ6ylsRPmgSkCkCKM"}
|
0:{"tree":{"name":"","param":null,"prefetchHints":4176,"slots":{"children":{"name":"(dashboard)","param":null,"prefetchHints":4192,"slots":{"children":{"name":"api-keys","param":null,"prefetchHints":4192,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":4256,"slots":null}}}}}}},"staleTime":300,"buildId":"RvBoD6No6gfcqg-cP5_LO"}
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -15,7 +15,7 @@ f:I[339756,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litel
|
||||||
a:X
|
a:X
|
||||||
12:X
|
12:X
|
||||||
12:C
|
12:C
|
||||||
0:{"buildId":"kXnLzJ6ylsRPmgSkCkCKM","data":[{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/0xsuy-8_q50ub.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/3m3rxvigp6yiy.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/44p4cs0gfsy-h.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"isPartial":"$@9","staleTime":"$a","varyParams":null},{"rsc":["$","$1","h",{"children":[null,["$","$Lb",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$Lc",null,{"children":["$","$7",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"LiteLLM Dashboard"}],["$","meta","1",{"name":"description","content":"LiteLLM Proxy Admin UI"}],["$","link","2",{"rel":"icon","href":"/favicon.ico?favicon.3arlap5n8tyzg.ico","sizes":"48x48","type":"image/x-icon"}],["$","link","3",{"rel":"icon","href":"/get_favicon"}],["$","$Ld","4",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":"$@e","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[null,["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}]}]]}],"isPartial":"$@11","staleTime":"$a","varyParams":"$12"},{"rsc":["$","$1","c",{"children":[[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/1kabwy23ggmhn.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/2riseu9p5tv2u.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/2dsu84-anah7m.js","async":true}],["$","script","script-3",{"src":"/litellm-asset-prefix/_next/static/chunks/2wi6ubg_xifzg.js","async":true}],["$","script","script-4",{"src":"/litellm-asset-prefix/_next/static/chunks/0eh6yvm8qswse.js","async":true}],["$","script","script-5",{"src":"/litellm-asset-prefix/_next/static/chunks/0aoel7yrv88fp.js","async":true}],["$","script","script-6",{"src":"/litellm-asset-prefix/_next/static/chunks/0uo3fyy_3adzw.js","async":true}],["$","script","script-7",{"src":"/litellm-asset-prefix/_next/static/chunks/14hu41xvpzmuj.js","async":true}],["$","script","script-8",{"src":"/litellm-asset-prefix/_next/static/chunks/1dmuabgwpu2jq.js","async":true}]],["$","$L13",null,{"Component":"$14","slots":{"children":["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]},"serverProvidedParams":{"params":"$0:data:0:rsc:props:children:0:props:serverProvidedParams:params","promises":["$@15"]}}]]}],"isPartial":"$@16","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","precedence":"next"}],["$","link","1",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/chunks/3146e697tym4_.css","precedence":"next"}],["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js","async":true}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":"$L17"}]]}],"isPartial":"$@18","staleTime":"$a","varyParams":null}],"isUpgradeableISRFallback":false,"a":"$@19","rootVaryParams":null,"needsRuntimeRequest":"$@1a"}
|
0:{"buildId":"RvBoD6No6gfcqg-cP5_LO","data":[{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/0xsuy-8_q50ub.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/3m3rxvigp6yiy.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/44p4cs0gfsy-h.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"isPartial":"$@9","staleTime":"$a","varyParams":null},{"rsc":["$","$1","h",{"children":[null,["$","$Lb",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$Lc",null,{"children":["$","$7",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"LiteLLM Dashboard"}],["$","meta","1",{"name":"description","content":"LiteLLM Proxy Admin UI"}],["$","link","2",{"rel":"icon","href":"/favicon.ico?favicon.3arlap5n8tyzg.ico","sizes":"48x48","type":"image/x-icon"}],["$","link","3",{"rel":"icon","href":"/get_favicon"}],["$","$Ld","4",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":"$@e","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[null,["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}]}]]}],"isPartial":"$@11","staleTime":"$a","varyParams":"$12"},{"rsc":["$","$1","c",{"children":[[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/1kabwy23ggmhn.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/2riseu9p5tv2u.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/2dsu84-anah7m.js","async":true}],["$","script","script-3",{"src":"/litellm-asset-prefix/_next/static/chunks/2wi6ubg_xifzg.js","async":true}],["$","script","script-4",{"src":"/litellm-asset-prefix/_next/static/chunks/0eh6yvm8qswse.js","async":true}],["$","script","script-5",{"src":"/litellm-asset-prefix/_next/static/chunks/0aoel7yrv88fp.js","async":true}],["$","script","script-6",{"src":"/litellm-asset-prefix/_next/static/chunks/0uo3fyy_3adzw.js","async":true}],["$","script","script-7",{"src":"/litellm-asset-prefix/_next/static/chunks/14hu41xvpzmuj.js","async":true}],["$","script","script-8",{"src":"/litellm-asset-prefix/_next/static/chunks/1dmuabgwpu2jq.js","async":true}]],["$","$L13",null,{"Component":"$14","slots":{"children":["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]},"serverProvidedParams":{"params":"$0:data:0:rsc:props:children:0:props:serverProvidedParams:params","promises":["$@15"]}}]]}],"isPartial":"$@16","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","precedence":"next"}],["$","link","1",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/chunks/3146e697tym4_.css","precedence":"next"}],["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js","async":true}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":"$L17"}]]}],"isPartial":"$@18","staleTime":"$a","varyParams":null}],"isUpgradeableISRFallback":false,"a":"$@19","rootVaryParams":null,"needsRuntimeRequest":"$@1a"}
|
||||||
1b:I[363178,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"ThemeProvider"]
|
1b:I[363178,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"ThemeProvider"]
|
||||||
1c:I[12985,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"NuqsAdapter"]
|
1c:I[12985,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"NuqsAdapter"]
|
||||||
1d:I[867271,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"default"]
|
1d:I[867271,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"default"]
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +1,4 @@
|
||||||
:HL["/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","style"]
|
:HL["/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","style"]
|
||||||
:HL["/litellm-asset-prefix/_next/static/chunks/3146e697tym4_.css","style"]
|
:HL["/litellm-asset-prefix/_next/static/chunks/3146e697tym4_.css","style"]
|
||||||
:HL["/litellm-asset-prefix/_next/static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
:HL["/litellm-asset-prefix/_next/static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
||||||
0:{"tree":{"name":"","param":null,"prefetchHints":4176,"slots":{"children":{"name":"(dashboard)","param":null,"prefetchHints":4192,"slots":{"children":{"name":"api-reference","param":null,"prefetchHints":4192,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":4256,"slots":null}}}}}}},"staleTime":300,"buildId":"kXnLzJ6ylsRPmgSkCkCKM"}
|
0:{"tree":{"name":"","param":null,"prefetchHints":4176,"slots":{"children":{"name":"(dashboard)","param":null,"prefetchHints":4192,"slots":{"children":{"name":"api-reference","param":null,"prefetchHints":4192,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":4256,"slots":null}}}}}}},"staleTime":300,"buildId":"RvBoD6No6gfcqg-cP5_LO"}
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -14,7 +14,7 @@ f:I[339756,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litel
|
||||||
a:X
|
a:X
|
||||||
12:X
|
12:X
|
||||||
12:C
|
12:C
|
||||||
0:{"buildId":"kXnLzJ6ylsRPmgSkCkCKM","data":[{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/02erlqrgtvdvz.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/3fj8wylwf-stx.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/1wc_s6k4n6kyj.js","async":true}],["$","script","script-3",{"src":"/litellm-asset-prefix/_next/static/chunks/41k0j0bj-1r2j.js","async":true}],["$","script","script-4",{"src":"/litellm-asset-prefix/_next/static/chunks/0x88jgebq4fjq.js","async":true}],["$","script","script-5",{"src":"/litellm-asset-prefix/_next/static/chunks/1t7m5lyrljbza.js","async":true}],["$","script","script-6",{"src":"/litellm-asset-prefix/_next/static/chunks/0rq646fx4-bql.js","async":true}],["$","script","script-7",{"src":"/litellm-asset-prefix/_next/static/chunks/3m3rxvigp6yiy.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"isPartial":"$@9","staleTime":"$a","varyParams":null},{"rsc":["$","$1","h",{"children":[null,["$","$Lb",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$Lc",null,{"children":["$","$7",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"LiteLLM Dashboard"}],["$","meta","1",{"name":"description","content":"LiteLLM Proxy Admin UI"}],["$","link","2",{"rel":"icon","href":"/favicon.ico?favicon.3arlap5n8tyzg.ico","sizes":"48x48","type":"image/x-icon"}],["$","link","3",{"rel":"icon","href":"/get_favicon"}],["$","$Ld","4",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":"$@e","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[null,["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}]}]]}],"isPartial":"$@11","staleTime":"$a","varyParams":"$12"},{"rsc":["$","$1","c",{"children":[[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/1kabwy23ggmhn.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/2riseu9p5tv2u.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/2dsu84-anah7m.js","async":true}],["$","script","script-3",{"src":"/litellm-asset-prefix/_next/static/chunks/2wi6ubg_xifzg.js","async":true}],["$","script","script-4",{"src":"/litellm-asset-prefix/_next/static/chunks/0eh6yvm8qswse.js","async":true}],["$","script","script-5",{"src":"/litellm-asset-prefix/_next/static/chunks/0aoel7yrv88fp.js","async":true}],["$","script","script-6",{"src":"/litellm-asset-prefix/_next/static/chunks/0uo3fyy_3adzw.js","async":true}],["$","script","script-7",{"src":"/litellm-asset-prefix/_next/static/chunks/14hu41xvpzmuj.js","async":true}],["$","script","script-8",{"src":"/litellm-asset-prefix/_next/static/chunks/1dmuabgwpu2jq.js","async":true}]],["$","$L13",null,{"Component":"$14","slots":{"children":["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]},"serverProvidedParams":{"params":"$0:data:0:rsc:props:children:0:props:serverProvidedParams:params","promises":["$@15"]}}]]}],"isPartial":"$@16","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","precedence":"next"}],"$L17","$L18","$L19","$L1a"],"$L1b"]}],"isPartial":"$@1c","staleTime":"$a","varyParams":null}],"isUpgradeableISRFallback":false,"a":"$@1d","rootVaryParams":null,"needsRuntimeRequest":"$@1e"}
|
0:{"buildId":"RvBoD6No6gfcqg-cP5_LO","data":[{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/02erlqrgtvdvz.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/3fj8wylwf-stx.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/1wc_s6k4n6kyj.js","async":true}],["$","script","script-3",{"src":"/litellm-asset-prefix/_next/static/chunks/41k0j0bj-1r2j.js","async":true}],["$","script","script-4",{"src":"/litellm-asset-prefix/_next/static/chunks/0x88jgebq4fjq.js","async":true}],["$","script","script-5",{"src":"/litellm-asset-prefix/_next/static/chunks/1t7m5lyrljbza.js","async":true}],["$","script","script-6",{"src":"/litellm-asset-prefix/_next/static/chunks/0rq646fx4-bql.js","async":true}],["$","script","script-7",{"src":"/litellm-asset-prefix/_next/static/chunks/3m3rxvigp6yiy.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"isPartial":"$@9","staleTime":"$a","varyParams":null},{"rsc":["$","$1","h",{"children":[null,["$","$Lb",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$Lc",null,{"children":["$","$7",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"LiteLLM Dashboard"}],["$","meta","1",{"name":"description","content":"LiteLLM Proxy Admin UI"}],["$","link","2",{"rel":"icon","href":"/favicon.ico?favicon.3arlap5n8tyzg.ico","sizes":"48x48","type":"image/x-icon"}],["$","link","3",{"rel":"icon","href":"/get_favicon"}],["$","$Ld","4",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":"$@e","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[null,["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}]}]]}],"isPartial":"$@11","staleTime":"$a","varyParams":"$12"},{"rsc":["$","$1","c",{"children":[[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/1kabwy23ggmhn.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/2riseu9p5tv2u.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/2dsu84-anah7m.js","async":true}],["$","script","script-3",{"src":"/litellm-asset-prefix/_next/static/chunks/2wi6ubg_xifzg.js","async":true}],["$","script","script-4",{"src":"/litellm-asset-prefix/_next/static/chunks/0eh6yvm8qswse.js","async":true}],["$","script","script-5",{"src":"/litellm-asset-prefix/_next/static/chunks/0aoel7yrv88fp.js","async":true}],["$","script","script-6",{"src":"/litellm-asset-prefix/_next/static/chunks/0uo3fyy_3adzw.js","async":true}],["$","script","script-7",{"src":"/litellm-asset-prefix/_next/static/chunks/14hu41xvpzmuj.js","async":true}],["$","script","script-8",{"src":"/litellm-asset-prefix/_next/static/chunks/1dmuabgwpu2jq.js","async":true}]],["$","$L13",null,{"Component":"$14","slots":{"children":["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]},"serverProvidedParams":{"params":"$0:data:0:rsc:props:children:0:props:serverProvidedParams:params","promises":["$@15"]}}]]}],"isPartial":"$@16","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","precedence":"next"}],"$L17","$L18","$L19","$L1a"],"$L1b"]}],"isPartial":"$@1c","staleTime":"$a","varyParams":null}],"isUpgradeableISRFallback":false,"a":"$@1d","rootVaryParams":null,"needsRuntimeRequest":"$@1e"}
|
||||||
1f:I[363178,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"ThemeProvider"]
|
1f:I[363178,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"ThemeProvider"]
|
||||||
20:I[12985,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"NuqsAdapter"]
|
20:I[12985,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"NuqsAdapter"]
|
||||||
21:I[867271,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"default"]
|
21:I[867271,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"default"]
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +1,4 @@
|
||||||
:HL["/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","style"]
|
:HL["/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","style"]
|
||||||
:HL["/litellm-asset-prefix/_next/static/chunks/3146e697tym4_.css","style"]
|
:HL["/litellm-asset-prefix/_next/static/chunks/3146e697tym4_.css","style"]
|
||||||
:HL["/litellm-asset-prefix/_next/static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
:HL["/litellm-asset-prefix/_next/static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
||||||
0:{"tree":{"name":"","param":null,"prefetchHints":4176,"slots":{"children":{"name":"(dashboard)","param":null,"prefetchHints":4192,"slots":{"children":{"name":"budgets","param":null,"prefetchHints":4192,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":4256,"slots":null}}}}}}},"staleTime":300,"buildId":"kXnLzJ6ylsRPmgSkCkCKM"}
|
0:{"tree":{"name":"","param":null,"prefetchHints":4176,"slots":{"children":{"name":"(dashboard)","param":null,"prefetchHints":4192,"slots":{"children":{"name":"budgets","param":null,"prefetchHints":4192,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":4256,"slots":null}}}}}}},"staleTime":300,"buildId":"RvBoD6No6gfcqg-cP5_LO"}
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -15,7 +15,7 @@ f:I[339756,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litel
|
||||||
a:X
|
a:X
|
||||||
12:X
|
12:X
|
||||||
12:C
|
12:C
|
||||||
0:{"buildId":"kXnLzJ6ylsRPmgSkCkCKM","data":[{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/0h6b6ooi-yfmn.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/38pnn2juwdhu0.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/0n3xjld_n2chp.js","async":true}],["$","script","script-3",{"src":"/litellm-asset-prefix/_next/static/chunks/0xl3regan_n7s.js","async":true}],["$","script","script-4",{"src":"/litellm-asset-prefix/_next/static/chunks/11vytukfj5_7x.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"isPartial":"$@9","staleTime":"$a","varyParams":null},{"rsc":["$","$1","h",{"children":[null,["$","$Lb",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$Lc",null,{"children":["$","$7",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"LiteLLM Dashboard"}],["$","meta","1",{"name":"description","content":"LiteLLM Proxy Admin UI"}],["$","link","2",{"rel":"icon","href":"/favicon.ico?favicon.3arlap5n8tyzg.ico","sizes":"48x48","type":"image/x-icon"}],["$","link","3",{"rel":"icon","href":"/get_favicon"}],["$","$Ld","4",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":"$@e","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[null,["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}]}]]}],"isPartial":"$@11","staleTime":"$a","varyParams":"$12"},{"rsc":["$","$1","c",{"children":[[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/1kabwy23ggmhn.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/2riseu9p5tv2u.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/2dsu84-anah7m.js","async":true}],["$","script","script-3",{"src":"/litellm-asset-prefix/_next/static/chunks/2wi6ubg_xifzg.js","async":true}],["$","script","script-4",{"src":"/litellm-asset-prefix/_next/static/chunks/0eh6yvm8qswse.js","async":true}],["$","script","script-5",{"src":"/litellm-asset-prefix/_next/static/chunks/0aoel7yrv88fp.js","async":true}],["$","script","script-6",{"src":"/litellm-asset-prefix/_next/static/chunks/0uo3fyy_3adzw.js","async":true}],["$","script","script-7",{"src":"/litellm-asset-prefix/_next/static/chunks/14hu41xvpzmuj.js","async":true}],["$","script","script-8",{"src":"/litellm-asset-prefix/_next/static/chunks/1dmuabgwpu2jq.js","async":true}]],["$","$L13",null,{"Component":"$14","slots":{"children":["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]},"serverProvidedParams":{"params":"$0:data:0:rsc:props:children:0:props:serverProvidedParams:params","promises":["$@15"]}}]]}],"isPartial":"$@16","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","precedence":"next"}],["$","link","1",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/chunks/3146e697tym4_.css","precedence":"next"}],["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","async":true}],"$L17"],"$L18"]}],"isPartial":"$@19","staleTime":"$a","varyParams":null}],"isUpgradeableISRFallback":false,"a":"$@1a","rootVaryParams":null,"needsRuntimeRequest":"$@1b"}
|
0:{"buildId":"RvBoD6No6gfcqg-cP5_LO","data":[{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/0h6b6ooi-yfmn.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/38pnn2juwdhu0.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/0n3xjld_n2chp.js","async":true}],["$","script","script-3",{"src":"/litellm-asset-prefix/_next/static/chunks/0xl3regan_n7s.js","async":true}],["$","script","script-4",{"src":"/litellm-asset-prefix/_next/static/chunks/11vytukfj5_7x.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"isPartial":"$@9","staleTime":"$a","varyParams":null},{"rsc":["$","$1","h",{"children":[null,["$","$Lb",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$Lc",null,{"children":["$","$7",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"LiteLLM Dashboard"}],["$","meta","1",{"name":"description","content":"LiteLLM Proxy Admin UI"}],["$","link","2",{"rel":"icon","href":"/favicon.ico?favicon.3arlap5n8tyzg.ico","sizes":"48x48","type":"image/x-icon"}],["$","link","3",{"rel":"icon","href":"/get_favicon"}],["$","$Ld","4",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":"$@e","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[null,["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}]}]]}],"isPartial":"$@11","staleTime":"$a","varyParams":"$12"},{"rsc":["$","$1","c",{"children":[[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/1kabwy23ggmhn.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/2riseu9p5tv2u.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/2dsu84-anah7m.js","async":true}],["$","script","script-3",{"src":"/litellm-asset-prefix/_next/static/chunks/2wi6ubg_xifzg.js","async":true}],["$","script","script-4",{"src":"/litellm-asset-prefix/_next/static/chunks/0eh6yvm8qswse.js","async":true}],["$","script","script-5",{"src":"/litellm-asset-prefix/_next/static/chunks/0aoel7yrv88fp.js","async":true}],["$","script","script-6",{"src":"/litellm-asset-prefix/_next/static/chunks/0uo3fyy_3adzw.js","async":true}],["$","script","script-7",{"src":"/litellm-asset-prefix/_next/static/chunks/14hu41xvpzmuj.js","async":true}],["$","script","script-8",{"src":"/litellm-asset-prefix/_next/static/chunks/1dmuabgwpu2jq.js","async":true}]],["$","$L13",null,{"Component":"$14","slots":{"children":["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]},"serverProvidedParams":{"params":"$0:data:0:rsc:props:children:0:props:serverProvidedParams:params","promises":["$@15"]}}]]}],"isPartial":"$@16","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","precedence":"next"}],["$","link","1",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/chunks/3146e697tym4_.css","precedence":"next"}],["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","async":true}],"$L17"],"$L18"]}],"isPartial":"$@19","staleTime":"$a","varyParams":null}],"isUpgradeableISRFallback":false,"a":"$@1a","rootVaryParams":null,"needsRuntimeRequest":"$@1b"}
|
||||||
1c:I[363178,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"ThemeProvider"]
|
1c:I[363178,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"ThemeProvider"]
|
||||||
1d:I[12985,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"NuqsAdapter"]
|
1d:I[12985,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"NuqsAdapter"]
|
||||||
1e:I[867271,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"default"]
|
1e:I[867271,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"default"]
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +1,4 @@
|
||||||
:HL["/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","style"]
|
:HL["/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","style"]
|
||||||
:HL["/litellm-asset-prefix/_next/static/chunks/3146e697tym4_.css","style"]
|
:HL["/litellm-asset-prefix/_next/static/chunks/3146e697tym4_.css","style"]
|
||||||
:HL["/litellm-asset-prefix/_next/static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
:HL["/litellm-asset-prefix/_next/static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
||||||
0:{"tree":{"name":"","param":null,"prefetchHints":4176,"slots":{"children":{"name":"(dashboard)","param":null,"prefetchHints":4192,"slots":{"children":{"name":"caching","param":null,"prefetchHints":4192,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":4256,"slots":null}}}}}}},"staleTime":300,"buildId":"kXnLzJ6ylsRPmgSkCkCKM"}
|
0:{"tree":{"name":"","param":null,"prefetchHints":4176,"slots":{"children":{"name":"(dashboard)","param":null,"prefetchHints":4192,"slots":{"children":{"name":"caching","param":null,"prefetchHints":4192,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":4256,"slots":null}}}}}}},"staleTime":300,"buildId":"RvBoD6No6gfcqg-cP5_LO"}
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +1,4 @@
|
||||||
:HL["/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","style"]
|
:HL["/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","style"]
|
||||||
:HL["/litellm-asset-prefix/_next/static/chunks/3146e697tym4_.css","style"]
|
:HL["/litellm-asset-prefix/_next/static/chunks/3146e697tym4_.css","style"]
|
||||||
:HL["/litellm-asset-prefix/_next/static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
:HL["/litellm-asset-prefix/_next/static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
||||||
0:{"tree":{"name":"","param":null,"prefetchHints":4176,"slots":{"children":{"name":"chat","param":null,"prefetchHints":4192,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":4256,"slots":null}}}}},"staleTime":300,"buildId":"kXnLzJ6ylsRPmgSkCkCKM"}
|
0:{"tree":{"name":"","param":null,"prefetchHints":4176,"slots":{"children":{"name":"chat","param":null,"prefetchHints":4192,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":4256,"slots":null}}}}},"staleTime":300,"buildId":"RvBoD6No6gfcqg-cP5_LO"}
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ f:I[92825,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litell
|
||||||
:HL["/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","style"]
|
:HL["/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","style"]
|
||||||
:HL["/litellm-asset-prefix/_next/static/chunks/3146e697tym4_.css","style"]
|
:HL["/litellm-asset-prefix/_next/static/chunks/3146e697tym4_.css","style"]
|
||||||
a:X
|
a:X
|
||||||
0:{"buildId":"kXnLzJ6ylsRPmgSkCkCKM","data":[{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/0ao344k1l0l2h.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/0aoel7yrv88fp.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/0r2no56zz5i7e.js","async":true}],["$","script","script-3",{"src":"/litellm-asset-prefix/_next/static/chunks/3m3rxvigp6yiy.js","async":true}],["$","script","script-4",{"src":"/litellm-asset-prefix/_next/static/chunks/181hmzmh2pbea.js","async":true}],["$","script","script-5",{"src":"/litellm-asset-prefix/_next/static/chunks/14hu41xvpzmuj.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"isPartial":"$@9","staleTime":"$a","varyParams":null},{"rsc":["$","$1","h",{"children":[null,["$","$Lb",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$Lc",null,{"children":["$","$7",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"LiteLLM Dashboard"}],["$","meta","1",{"name":"description","content":"LiteLLM Proxy Admin UI"}],["$","link","2",{"rel":"icon","href":"/favicon.ico?favicon.3arlap5n8tyzg.ico","sizes":"48x48","type":"image/x-icon"}],["$","link","3",{"rel":"icon","href":"/get_favicon"}],["$","$Ld","4",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":"$@e","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/3i2jjt28jqmvd.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/3us1a7skurxn9.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/1oxlvxfixu1qd.js","async":true}],["$","script","script-3",{"src":"/litellm-asset-prefix/_next/static/chunks/0eh6yvm8qswse.js","async":true}],["$","script","script-4",{"src":"/litellm-asset-prefix/_next/static/chunks/1vcdhrlx_53q_.js","async":true}],["$","script","script-5",{"src":"/litellm-asset-prefix/_next/static/chunks/2wi6ubg_xifzg.js","async":true}]],["$","$Lf",null,{"Component":"$10","slots":{"children":["$","$L11",null,{"parallelRouterKey":"children","template":["$","$L12",null,{}]}]},"serverProvidedParams":{"params":"$0:data:0:rsc:props:children:0:props:serverProvidedParams:params","promises":["$@13"]}}]]}],"isPartial":"$@14","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","precedence":"next"}],["$","link","1",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/chunks/3146e697tym4_.css","precedence":"next"}],["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js","async":true}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"inter_5972bc34-module__OU16Qa__className","children":["$","$L15",null,{"attribute":"class","defaultTheme":"light","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L16",null,{"children":["$","$L17",null,{"children":[["$","$L18",null,{"children":["$","$L11",null,{"parallelRouterKey":"children","template":["$","$L12",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],"$L19"]}]}]],[]]}]}],"$L1a"]}]}]}]}]}]]}],"isPartial":"$@1b","staleTime":"$a","varyParams":null}],"isUpgradeableISRFallback":false,"a":"$@1c","rootVaryParams":null,"needsRuntimeRequest":"$@1d"}
|
0:{"buildId":"RvBoD6No6gfcqg-cP5_LO","data":[{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/0ao344k1l0l2h.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/0aoel7yrv88fp.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/0r2no56zz5i7e.js","async":true}],["$","script","script-3",{"src":"/litellm-asset-prefix/_next/static/chunks/3m3rxvigp6yiy.js","async":true}],["$","script","script-4",{"src":"/litellm-asset-prefix/_next/static/chunks/181hmzmh2pbea.js","async":true}],["$","script","script-5",{"src":"/litellm-asset-prefix/_next/static/chunks/14hu41xvpzmuj.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"isPartial":"$@9","staleTime":"$a","varyParams":null},{"rsc":["$","$1","h",{"children":[null,["$","$Lb",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$Lc",null,{"children":["$","$7",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"LiteLLM Dashboard"}],["$","meta","1",{"name":"description","content":"LiteLLM Proxy Admin UI"}],["$","link","2",{"rel":"icon","href":"/favicon.ico?favicon.3arlap5n8tyzg.ico","sizes":"48x48","type":"image/x-icon"}],["$","link","3",{"rel":"icon","href":"/get_favicon"}],["$","$Ld","4",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":"$@e","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/3i2jjt28jqmvd.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/3us1a7skurxn9.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/1oxlvxfixu1qd.js","async":true}],["$","script","script-3",{"src":"/litellm-asset-prefix/_next/static/chunks/0eh6yvm8qswse.js","async":true}],["$","script","script-4",{"src":"/litellm-asset-prefix/_next/static/chunks/1vcdhrlx_53q_.js","async":true}],["$","script","script-5",{"src":"/litellm-asset-prefix/_next/static/chunks/2wi6ubg_xifzg.js","async":true}]],["$","$Lf",null,{"Component":"$10","slots":{"children":["$","$L11",null,{"parallelRouterKey":"children","template":["$","$L12",null,{}]}]},"serverProvidedParams":{"params":"$0:data:0:rsc:props:children:0:props:serverProvidedParams:params","promises":["$@13"]}}]]}],"isPartial":"$@14","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","precedence":"next"}],["$","link","1",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/chunks/3146e697tym4_.css","precedence":"next"}],["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js","async":true}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"inter_5972bc34-module__OU16Qa__className","children":["$","$L15",null,{"attribute":"class","defaultTheme":"light","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L16",null,{"children":["$","$L17",null,{"children":[["$","$L18",null,{"children":["$","$L11",null,{"parallelRouterKey":"children","template":["$","$L12",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],"$L19"]}]}]],[]]}]}],"$L1a"]}]}]}]}]}]]}],"isPartial":"$@1b","staleTime":"$a","varyParams":null}],"isUpgradeableISRFallback":false,"a":"$@1c","rootVaryParams":null,"needsRuntimeRequest":"$@1d"}
|
||||||
1e:I[713354,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"Toaster"]
|
1e:I[713354,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js"],"Toaster"]
|
||||||
4:{}
|
4:{}
|
||||||
5:"$0:data:0:rsc:props:children:0:props:serverProvidedParams:params"
|
5:"$0:data:0:rsc:props:children:0:props:serverProvidedParams:params"
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +1,4 @@
|
||||||
:HL["/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","style"]
|
:HL["/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","style"]
|
||||||
:HL["/litellm-asset-prefix/_next/static/chunks/3146e697tym4_.css","style"]
|
:HL["/litellm-asset-prefix/_next/static/chunks/3146e697tym4_.css","style"]
|
||||||
:HL["/litellm-asset-prefix/_next/static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
:HL["/litellm-asset-prefix/_next/static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
||||||
0:{"tree":{"name":"","param":null,"prefetchHints":4176,"slots":{"children":{"name":"chat","param":null,"prefetchHints":4192,"slots":{"children":{"name":"api-keys","param":null,"prefetchHints":4192,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":4256,"slots":null}}}}}}},"staleTime":300,"buildId":"kXnLzJ6ylsRPmgSkCkCKM"}
|
0:{"tree":{"name":"","param":null,"prefetchHints":4176,"slots":{"children":{"name":"chat","param":null,"prefetchHints":4192,"slots":{"children":{"name":"api-keys","param":null,"prefetchHints":4192,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":4256,"slots":null}}}}}}},"staleTime":300,"buildId":"RvBoD6No6gfcqg-cP5_LO"}
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ f:I[339756,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litel
|
||||||
a:X
|
a:X
|
||||||
12:X
|
12:X
|
||||||
12:C
|
12:C
|
||||||
0:{"buildId":"kXnLzJ6ylsRPmgSkCkCKM","data":[{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/2x67yv10f53lq.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"isPartial":"$@9","staleTime":"$a","varyParams":null},{"rsc":["$","$1","h",{"children":[null,["$","$Lb",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$Lc",null,{"children":["$","$7",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"LiteLLM Dashboard"}],["$","meta","1",{"name":"description","content":"LiteLLM Proxy Admin UI"}],["$","link","2",{"rel":"icon","href":"/favicon.ico?favicon.3arlap5n8tyzg.ico","sizes":"48x48","type":"image/x-icon"}],["$","link","3",{"rel":"icon","href":"/get_favicon"}],["$","$Ld","4",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":"$@e","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[null,["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}]}]]}],"isPartial":"$@11","staleTime":"$a","varyParams":"$12"},{"rsc":["$","$1","c",{"children":[[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/3i2jjt28jqmvd.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/3us1a7skurxn9.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/1oxlvxfixu1qd.js","async":true}],["$","script","script-3",{"src":"/litellm-asset-prefix/_next/static/chunks/0eh6yvm8qswse.js","async":true}],["$","script","script-4",{"src":"/litellm-asset-prefix/_next/static/chunks/1vcdhrlx_53q_.js","async":true}],["$","script","script-5",{"src":"/litellm-asset-prefix/_next/static/chunks/2wi6ubg_xifzg.js","async":true}]],["$","$L13",null,{"Component":"$14","slots":{"children":["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}]}]},"serverProvidedParams":{"params":"$0:data:0:rsc:props:children:0:props:serverProvidedParams:params","promises":["$@15"]}}]]}],"isPartial":"$@16","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","precedence":"next"}],["$","link","1",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/chunks/3146e697tym4_.css","precedence":"next"}],["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js","async":true}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"inter_5972bc34-module__OU16Qa__className","children":["$","$L17",null,{"attribute":"class","defaultTheme":"light","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L18",null,{"children":["$","$L19",null,{"children":[["$","$L1a",null,{"children":["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}],["$","$L1b",null,{}]]}]}]}]}]}]]}],"isPartial":"$@1c","staleTime":"$a","varyParams":null}],"isUpgradeableISRFallback":false,"a":"$@1d","rootVaryParams":null,"needsRuntimeRequest":"$@1e"}
|
0:{"buildId":"RvBoD6No6gfcqg-cP5_LO","data":[{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/2x67yv10f53lq.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"isPartial":"$@9","staleTime":"$a","varyParams":null},{"rsc":["$","$1","h",{"children":[null,["$","$Lb",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$Lc",null,{"children":["$","$7",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"LiteLLM Dashboard"}],["$","meta","1",{"name":"description","content":"LiteLLM Proxy Admin UI"}],["$","link","2",{"rel":"icon","href":"/favicon.ico?favicon.3arlap5n8tyzg.ico","sizes":"48x48","type":"image/x-icon"}],["$","link","3",{"rel":"icon","href":"/get_favicon"}],["$","$Ld","4",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":"$@e","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[null,["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}]}]]}],"isPartial":"$@11","staleTime":"$a","varyParams":"$12"},{"rsc":["$","$1","c",{"children":[[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/3i2jjt28jqmvd.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/3us1a7skurxn9.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/1oxlvxfixu1qd.js","async":true}],["$","script","script-3",{"src":"/litellm-asset-prefix/_next/static/chunks/0eh6yvm8qswse.js","async":true}],["$","script","script-4",{"src":"/litellm-asset-prefix/_next/static/chunks/1vcdhrlx_53q_.js","async":true}],["$","script","script-5",{"src":"/litellm-asset-prefix/_next/static/chunks/2wi6ubg_xifzg.js","async":true}]],["$","$L13",null,{"Component":"$14","slots":{"children":["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}]}]},"serverProvidedParams":{"params":"$0:data:0:rsc:props:children:0:props:serverProvidedParams:params","promises":["$@15"]}}]]}],"isPartial":"$@16","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","precedence":"next"}],["$","link","1",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/chunks/3146e697tym4_.css","precedence":"next"}],["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js","async":true}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"inter_5972bc34-module__OU16Qa__className","children":["$","$L17",null,{"attribute":"class","defaultTheme":"light","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L18",null,{"children":["$","$L19",null,{"children":[["$","$L1a",null,{"children":["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}],["$","$L1b",null,{}]]}]}]}]}]}]]}],"isPartial":"$@1c","staleTime":"$a","varyParams":null}],"isUpgradeableISRFallback":false,"a":"$@1d","rootVaryParams":null,"needsRuntimeRequest":"$@1e"}
|
||||||
4:{}
|
4:{}
|
||||||
5:"$0:data:0:rsc:props:children:0:props:serverProvidedParams:params"
|
5:"$0:data:0:rsc:props:children:0:props:serverProvidedParams:params"
|
||||||
8:null
|
8:null
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +1,4 @@
|
||||||
:HL["/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","style"]
|
:HL["/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","style"]
|
||||||
:HL["/litellm-asset-prefix/_next/static/chunks/3146e697tym4_.css","style"]
|
:HL["/litellm-asset-prefix/_next/static/chunks/3146e697tym4_.css","style"]
|
||||||
:HL["/litellm-asset-prefix/_next/static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
:HL["/litellm-asset-prefix/_next/static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
||||||
0:{"tree":{"name":"","param":null,"prefetchHints":4176,"slots":{"children":{"name":"chat","param":null,"prefetchHints":4192,"slots":{"children":{"name":"credentials","param":null,"prefetchHints":4192,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":4256,"slots":null}}}}}}},"staleTime":300,"buildId":"kXnLzJ6ylsRPmgSkCkCKM"}
|
0:{"tree":{"name":"","param":null,"prefetchHints":4176,"slots":{"children":{"name":"chat","param":null,"prefetchHints":4192,"slots":{"children":{"name":"credentials","param":null,"prefetchHints":4192,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":4256,"slots":null}}}}}}},"staleTime":300,"buildId":"RvBoD6No6gfcqg-cP5_LO"}
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ f:I[339756,["/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","/litel
|
||||||
a:X
|
a:X
|
||||||
12:X
|
12:X
|
||||||
12:C
|
12:C
|
||||||
0:{"buildId":"kXnLzJ6ylsRPmgSkCkCKM","data":[{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/1ikkshw7_p1qe.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"isPartial":"$@9","staleTime":"$a","varyParams":null},{"rsc":["$","$1","h",{"children":[null,["$","$Lb",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$Lc",null,{"children":["$","$7",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"LiteLLM Dashboard"}],["$","meta","1",{"name":"description","content":"LiteLLM Proxy Admin UI"}],["$","link","2",{"rel":"icon","href":"/favicon.ico?favicon.3arlap5n8tyzg.ico","sizes":"48x48","type":"image/x-icon"}],["$","link","3",{"rel":"icon","href":"/get_favicon"}],["$","$Ld","4",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":"$@e","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[null,["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}]}]]}],"isPartial":"$@11","staleTime":"$a","varyParams":"$12"},{"rsc":["$","$1","c",{"children":[[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/3i2jjt28jqmvd.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/3us1a7skurxn9.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/1oxlvxfixu1qd.js","async":true}],["$","script","script-3",{"src":"/litellm-asset-prefix/_next/static/chunks/0eh6yvm8qswse.js","async":true}],["$","script","script-4",{"src":"/litellm-asset-prefix/_next/static/chunks/1vcdhrlx_53q_.js","async":true}],["$","script","script-5",{"src":"/litellm-asset-prefix/_next/static/chunks/2wi6ubg_xifzg.js","async":true}]],["$","$L13",null,{"Component":"$14","slots":{"children":["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}]}]},"serverProvidedParams":{"params":"$0:data:0:rsc:props:children:0:props:serverProvidedParams:params","promises":["$@15"]}}]]}],"isPartial":"$@16","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","precedence":"next"}],["$","link","1",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/chunks/3146e697tym4_.css","precedence":"next"}],["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js","async":true}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"inter_5972bc34-module__OU16Qa__className","children":["$","$L17",null,{"attribute":"class","defaultTheme":"light","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L18",null,{"children":["$","$L19",null,{"children":[["$","$L1a",null,{"children":["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}],["$","$L1b",null,{}]]}]}]}]}]}]]}],"isPartial":"$@1c","staleTime":"$a","varyParams":null}],"isUpgradeableISRFallback":false,"a":"$@1d","rootVaryParams":null,"needsRuntimeRequest":"$@1e"}
|
0:{"buildId":"RvBoD6No6gfcqg-cP5_LO","data":[{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/1ikkshw7_p1qe.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"isPartial":"$@9","staleTime":"$a","varyParams":null},{"rsc":["$","$1","h",{"children":[null,["$","$Lb",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$Lc",null,{"children":["$","$7",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"LiteLLM Dashboard"}],["$","meta","1",{"name":"description","content":"LiteLLM Proxy Admin UI"}],["$","link","2",{"rel":"icon","href":"/favicon.ico?favicon.3arlap5n8tyzg.ico","sizes":"48x48","type":"image/x-icon"}],["$","link","3",{"rel":"icon","href":"/get_favicon"}],["$","$Ld","4",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":"$@e","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[null,["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}]}]]}],"isPartial":"$@11","staleTime":"$a","varyParams":"$12"},{"rsc":["$","$1","c",{"children":[[["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/3i2jjt28jqmvd.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/3us1a7skurxn9.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/1oxlvxfixu1qd.js","async":true}],["$","script","script-3",{"src":"/litellm-asset-prefix/_next/static/chunks/0eh6yvm8qswse.js","async":true}],["$","script","script-4",{"src":"/litellm-asset-prefix/_next/static/chunks/1vcdhrlx_53q_.js","async":true}],["$","script","script-5",{"src":"/litellm-asset-prefix/_next/static/chunks/2wi6ubg_xifzg.js","async":true}]],["$","$L13",null,{"Component":"$14","slots":{"children":["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}]}]},"serverProvidedParams":{"params":"$0:data:0:rsc:props:children:0:props:serverProvidedParams:params","promises":["$@15"]}}]]}],"isPartial":"$@16","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/chunks/1kid9zr1--h6y.css","precedence":"next"}],["$","link","1",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/chunks/3146e697tym4_.css","precedence":"next"}],["$","script","script-0",{"src":"/litellm-asset-prefix/_next/static/chunks/1kpvojzxb_2ce.js","async":true}],["$","script","script-1",{"src":"/litellm-asset-prefix/_next/static/chunks/28fzwmvhc4sv1.js","async":true}],["$","script","script-2",{"src":"/litellm-asset-prefix/_next/static/chunks/1xkrmcontg-7s.js","async":true}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"inter_5972bc34-module__OU16Qa__className","children":["$","$L17",null,{"attribute":"class","defaultTheme":"light","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L18",null,{"children":["$","$L19",null,{"children":[["$","$L1a",null,{"children":["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}],["$","$L1b",null,{}]]}]}]}]}]}]]}],"isPartial":"$@1c","staleTime":"$a","varyParams":null}],"isUpgradeableISRFallback":false,"a":"$@1d","rootVaryParams":null,"needsRuntimeRequest":"$@1e"}
|
||||||
4:{}
|
4:{}
|
||||||
5:"$0:data:0:rsc:props:children:0:props:serverProvidedParams:params"
|
5:"$0:data:0:rsc:props:children:0:props:serverProvidedParams:params"
|
||||||
8:null
|
8:null
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue