From 084ed0151869e4b91abab29ea6e2a87d5ecec97f Mon Sep 17 00:00:00 2001 From: yuneng-jiang Date: Wed, 10 Dec 2025 20:53:13 -0800 Subject: [PATCH] proxy extras and migration --- ...tellm_proxy_extras-0.4.13-py3-none-any.whl | Bin 0 -> 42218 bytes .../dist/litellm_proxy_extras-0.4.13.tar.gz | Bin 0 -> 19313 bytes .../migration.sql | 45 ++++++++++++++++++ 3 files changed, 45 insertions(+) create mode 100644 litellm-proxy-extras/dist/litellm_proxy_extras-0.4.13-py3-none-any.whl create mode 100644 litellm-proxy-extras/dist/litellm_proxy_extras-0.4.13.tar.gz create mode 100644 litellm-proxy-extras/litellm_proxy_extras/migrations/20251210205007_add_daily_agent_spend_table/migration.sql diff --git a/litellm-proxy-extras/dist/litellm_proxy_extras-0.4.13-py3-none-any.whl b/litellm-proxy-extras/dist/litellm_proxy_extras-0.4.13-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..ff270dd9c3745e00f8a10385fbe2140f90b11bc1 GIT binary patch literal 42218 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 literal 0 HcmV?d00001 diff --git a/litellm-proxy-extras/dist/litellm_proxy_extras-0.4.13.tar.gz b/litellm-proxy-extras/dist/litellm_proxy_extras-0.4.13.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..92b6ab7ef2ac716499109b4b97184c03e621aa2f GIT binary patch literal 19313 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 QbN`?J2ll!GMgSlK0El@bi~s-t literal 0 HcmV?d00001 diff --git a/litellm-proxy-extras/litellm_proxy_extras/migrations/20251210205007_add_daily_agent_spend_table/migration.sql b/litellm-proxy-extras/litellm_proxy_extras/migrations/20251210205007_add_daily_agent_spend_table/migration.sql new file mode 100644 index 0000000000..964904c14c --- /dev/null +++ b/litellm-proxy-extras/litellm_proxy_extras/migrations/20251210205007_add_daily_agent_spend_table/migration.sql @@ -0,0 +1,45 @@ +-- AlterTable +ALTER TABLE "LiteLLM_SpendLogs" ADD COLUMN "agent_id" TEXT; + +-- CreateTable +CREATE TABLE "LiteLLM_DailyAgentSpend" ( + "id" TEXT NOT NULL, + "agent_id" TEXT, + "date" TEXT NOT NULL, + "api_key" TEXT NOT NULL, + "model" TEXT, + "model_group" TEXT, + "custom_llm_provider" TEXT, + "mcp_namespaced_tool_name" TEXT, + "prompt_tokens" BIGINT NOT NULL DEFAULT 0, + "completion_tokens" BIGINT NOT NULL DEFAULT 0, + "cache_read_input_tokens" BIGINT NOT NULL DEFAULT 0, + "cache_creation_input_tokens" BIGINT NOT NULL DEFAULT 0, + "spend" DOUBLE PRECISION NOT NULL DEFAULT 0.0, + "api_requests" BIGINT NOT NULL DEFAULT 0, + "successful_requests" BIGINT NOT NULL DEFAULT 0, + "failed_requests" BIGINT NOT NULL DEFAULT 0, + "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "LiteLLM_DailyAgentSpend_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE INDEX "LiteLLM_DailyAgentSpend_date_idx" ON "LiteLLM_DailyAgentSpend"("date"); + +-- CreateIndex +CREATE INDEX "LiteLLM_DailyAgentSpend_agent_id_idx" ON "LiteLLM_DailyAgentSpend"("agent_id"); + +-- CreateIndex +CREATE INDEX "LiteLLM_DailyAgentSpend_api_key_idx" ON "LiteLLM_DailyAgentSpend"("api_key"); + +-- CreateIndex +CREATE INDEX "LiteLLM_DailyAgentSpend_model_idx" ON "LiteLLM_DailyAgentSpend"("model"); + +-- CreateIndex +CREATE INDEX "LiteLLM_DailyAgentSpend_mcp_namespaced_tool_name_idx" ON "LiteLLM_DailyAgentSpend"("mcp_namespaced_tool_name"); + +-- CreateIndex +CREATE UNIQUE INDEX "LiteLLM_DailyAgentSpend_agent_id_date_api_key_model_custom__key" ON "LiteLLM_DailyAgentSpend"("agent_id", "date", "api_key", "model", "custom_llm_provider", "mcp_namespaced_tool_name"); +