diff --git a/.gitignore b/.gitignore index 0908e34db..eb4139039 100644 --- a/.gitignore +++ b/.gitignore @@ -55,6 +55,7 @@ next-env.d.ts # tooling & logs .cursor/ .claude/ +.codex/ .serena/ !src/app/dashboard/logs/ !src/app/settings/logs/ diff --git a/CHANGELOG.md b/CHANGELOG.md index 9db4073d7..7031d534b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,49 @@ --- +## [v0.3.42](https://github.com/ding113/claude-code-hub/releases/tag/v0.3.42) - 2026-01-07 + +### 新增 + +- Session 详情页重设计,改进布局和用户体验 (f52a2651) +- 供应商级别参数覆写审计功能,支持 Codex reasoning/text/parallel_tool_calls 覆写 (#557, #536) +- 供应商查询缓存功能,支持缓存开关配置,默认启用 (#554, #556) [@hank9999](https://github.com/hank9999) +- Gemini 非流式错误规则 (#547) [@Kevin Cui](https://github.com/kevin-cui-tw) +- Anthropic Warmup 请求拦截功能 (#525) +- tool_use missing tool_result 错误规则 (#550, #551) +- Codex reasoning effort mismatch 错误规则 (#544) + +### 优化 + +- 供应商保存异步架构重构,提升保存性能 (54bada89) +- 拆分 unified-edit-dialog 为专用对话框组件,改善代码结构 (#539) [@NieiR](https://github.com/NieiR) +- Session Messages 提升内容阈值并支持导出完整请求 (#537) +- 管理后台 UI 改进 (#538) [@miraserver](https://github.com/miraserver) + +### 修复 + +- 修复 SessionStats 组件日期类型问题 (57ac4d6d) +- 修复 CodeDisplay 组件缺少 className prop (c622705b) +- 修复 /v1/responses 和 /v1/chat/completions 未使用 GuardPipeline 的问题 (#552) +- 修复添加新供应商后列表未刷新的问题 (#546) [@NieiR](https://github.com/NieiR) +- 补齐 system_settings 缺失列 (17014402) +- 修复供应商总限额编辑、生效和重置逻辑 (#535) +- 修复 Key 清除到期时间使用空字符串传参问题 (#534) +- 修复 my-usage 今日统计与只读 API 自助查询 (#532) +- 修复清除用户/Key 到期时间后保存不生效的问题 (#533) +- 修复用户限额未设置时 Key 限额仍生效的问题 (#531) +- 修复供应商搜索框重复清除按钮 (af17948d) +- 修复 CodeRabbit webhook 反馈问题 (#527) + +### 其他 + +- 为 available-models 工具函数添加单元测试 (#528) [@NieiR](https://github.com/NieiR) +- 更新使用文档中 Codex 模型配置 (#545) +- 更新 AGENT 指导文档 (cc32b47b) +- 重新生成 blocked_by 索引迁移 (3250f210) + +--- + ## [v0.3.41](https://github.com/ding113/claude-code-hub/releases/tag/v0.3.41) - 2026-01-03 ### 新增 diff --git a/drizzle/0000_legal_brother_voodoo.sql b/drizzle/0000_legal_brother_voodoo.sql index 0cbf85069..3110d0007 100644 --- a/drizzle/0000_legal_brother_voodoo.sql +++ b/drizzle/0000_legal_brother_voodoo.sql @@ -1,4 +1,4 @@ -CREATE TABLE "keys" ( +CREATE TABLE IF NOT EXISTS "keys" ( "id" serial PRIMARY KEY NOT NULL, "user_id" integer NOT NULL, "key" varchar NOT NULL, @@ -14,7 +14,7 @@ CREATE TABLE "keys" ( "deleted_at" timestamp with time zone ); --> statement-breakpoint -CREATE TABLE "message_request" ( +CREATE TABLE IF NOT EXISTS "message_request" ( "id" serial PRIMARY KEY NOT NULL, "provider_id" integer NOT NULL, "user_id" integer NOT NULL, @@ -35,7 +35,7 @@ CREATE TABLE "message_request" ( "deleted_at" timestamp with time zone ); --> statement-breakpoint -CREATE TABLE "model_prices" ( +CREATE TABLE IF NOT EXISTS "model_prices" ( "id" serial PRIMARY KEY NOT NULL, "model_name" varchar NOT NULL, "price_data" jsonb NOT NULL, @@ -43,7 +43,7 @@ CREATE TABLE "model_prices" ( "updated_at" timestamp with time zone DEFAULT now() ); --> statement-breakpoint -CREATE TABLE "providers" ( +CREATE TABLE IF NOT EXISTS "providers" ( "id" serial PRIMARY KEY NOT NULL, "name" varchar NOT NULL, "description" text, @@ -69,7 +69,7 @@ CREATE TABLE "providers" ( "deleted_at" timestamp with time zone ); --> statement-breakpoint -CREATE TABLE "system_settings" ( +CREATE TABLE IF NOT EXISTS "system_settings" ( "id" serial PRIMARY KEY NOT NULL, "site_title" varchar(128) DEFAULT 'Claude Code Hub' NOT NULL, "allow_global_usage_view" boolean DEFAULT true NOT NULL, @@ -77,7 +77,7 @@ CREATE TABLE "system_settings" ( "updated_at" timestamp with time zone DEFAULT now() ); --> statement-breakpoint -CREATE TABLE "users" ( +CREATE TABLE IF NOT EXISTS "users" ( "id" serial PRIMARY KEY NOT NULL, "name" varchar NOT NULL, "description" text, @@ -90,23 +90,23 @@ CREATE TABLE "users" ( "deleted_at" timestamp with time zone ); --> statement-breakpoint -CREATE INDEX "idx_keys_user_id" ON "keys" USING btree ("user_id");--> statement-breakpoint -CREATE INDEX "idx_keys_created_at" ON "keys" USING btree ("created_at");--> statement-breakpoint -CREATE INDEX "idx_keys_deleted_at" ON "keys" USING btree ("deleted_at");--> statement-breakpoint -CREATE INDEX "idx_message_request_user_date_cost" ON "message_request" USING btree ("user_id","created_at","cost_usd") WHERE "message_request"."deleted_at" IS NULL;--> statement-breakpoint -CREATE INDEX "idx_message_request_user_query" ON "message_request" USING btree ("user_id","created_at") WHERE "message_request"."deleted_at" IS NULL;--> statement-breakpoint -CREATE INDEX "idx_message_request_provider_id" ON "message_request" USING btree ("provider_id");--> statement-breakpoint -CREATE INDEX "idx_message_request_user_id" ON "message_request" USING btree ("user_id");--> statement-breakpoint -CREATE INDEX "idx_message_request_key" ON "message_request" USING btree ("key");--> statement-breakpoint -CREATE INDEX "idx_message_request_created_at" ON "message_request" USING btree ("created_at");--> statement-breakpoint -CREATE INDEX "idx_message_request_deleted_at" ON "message_request" USING btree ("deleted_at");--> statement-breakpoint -CREATE INDEX "idx_model_prices_latest" ON "model_prices" USING btree ("model_name","created_at" DESC NULLS LAST);--> statement-breakpoint -CREATE INDEX "idx_model_prices_model_name" ON "model_prices" USING btree ("model_name");--> statement-breakpoint -CREATE INDEX "idx_model_prices_created_at" ON "model_prices" USING btree ("created_at" DESC NULLS LAST);--> statement-breakpoint -CREATE INDEX "idx_providers_enabled_priority" ON "providers" USING btree ("is_enabled","priority","weight") WHERE "providers"."deleted_at" IS NULL;--> statement-breakpoint -CREATE INDEX "idx_providers_group" ON "providers" USING btree ("group_tag") WHERE "providers"."deleted_at" IS NULL;--> statement-breakpoint -CREATE INDEX "idx_providers_created_at" ON "providers" USING btree ("created_at");--> statement-breakpoint -CREATE INDEX "idx_providers_deleted_at" ON "providers" USING btree ("deleted_at");--> statement-breakpoint -CREATE INDEX "idx_users_active_role_sort" ON "users" USING btree ("deleted_at","role","id") WHERE "users"."deleted_at" IS NULL;--> statement-breakpoint -CREATE INDEX "idx_users_created_at" ON "users" USING btree ("created_at");--> statement-breakpoint -CREATE INDEX "idx_users_deleted_at" ON "users" USING btree ("deleted_at"); \ No newline at end of file +CREATE INDEX IF NOT EXISTS "idx_keys_user_id" ON "keys" USING btree ("user_id");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "idx_keys_created_at" ON "keys" USING btree ("created_at");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "idx_keys_deleted_at" ON "keys" USING btree ("deleted_at");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "idx_message_request_user_date_cost" ON "message_request" USING btree ("user_id","created_at","cost_usd") WHERE "message_request"."deleted_at" IS NULL;--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "idx_message_request_user_query" ON "message_request" USING btree ("user_id","created_at") WHERE "message_request"."deleted_at" IS NULL;--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "idx_message_request_provider_id" ON "message_request" USING btree ("provider_id");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "idx_message_request_user_id" ON "message_request" USING btree ("user_id");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "idx_message_request_key" ON "message_request" USING btree ("key");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "idx_message_request_created_at" ON "message_request" USING btree ("created_at");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "idx_message_request_deleted_at" ON "message_request" USING btree ("deleted_at");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "idx_model_prices_latest" ON "model_prices" USING btree ("model_name","created_at" DESC NULLS LAST);--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "idx_model_prices_model_name" ON "model_prices" USING btree ("model_name");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "idx_model_prices_created_at" ON "model_prices" USING btree ("created_at" DESC NULLS LAST);--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "idx_providers_enabled_priority" ON "providers" USING btree ("is_enabled","priority","weight") WHERE "providers"."deleted_at" IS NULL;--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "idx_providers_group" ON "providers" USING btree ("group_tag") WHERE "providers"."deleted_at" IS NULL;--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "idx_providers_created_at" ON "providers" USING btree ("created_at");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "idx_providers_deleted_at" ON "providers" USING btree ("deleted_at");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "idx_users_active_role_sort" ON "users" USING btree ("deleted_at","role","id") WHERE "users"."deleted_at" IS NULL;--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "idx_users_created_at" ON "users" USING btree ("created_at");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "idx_users_deleted_at" ON "users" USING btree ("deleted_at"); diff --git a/drizzle/0001_ambiguous_bromley.sql b/drizzle/0001_ambiguous_bromley.sql index f250f1190..5dd5c13d1 100644 --- a/drizzle/0001_ambiguous_bromley.sql +++ b/drizzle/0001_ambiguous_bromley.sql @@ -1,2 +1,2 @@ -ALTER TABLE "message_request" ADD COLUMN "session_id" varchar(64);--> statement-breakpoint -CREATE INDEX "idx_message_request_session_id" ON "message_request" USING btree ("session_id") WHERE "message_request"."deleted_at" IS NULL; \ No newline at end of file +ALTER TABLE "message_request" ADD COLUMN IF NOT EXISTS "session_id" varchar(64);--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "idx_message_request_session_id" ON "message_request" USING btree ("session_id") WHERE "message_request"."deleted_at" IS NULL; diff --git a/drizzle/0003_outstanding_centennial.sql b/drizzle/0003_outstanding_centennial.sql index 48b027653..0da7dcde9 100644 --- a/drizzle/0003_outstanding_centennial.sql +++ b/drizzle/0003_outstanding_centennial.sql @@ -1,4 +1,4 @@ -CREATE TABLE "sensitive_words" ( +CREATE TABLE IF NOT EXISTS "sensitive_words" ( "id" serial PRIMARY KEY NOT NULL, "word" varchar(255) NOT NULL, "match_type" varchar(20) DEFAULT 'contains' NOT NULL, @@ -8,7 +8,7 @@ CREATE TABLE "sensitive_words" ( "updated_at" timestamp with time zone DEFAULT now() ); --> statement-breakpoint -ALTER TABLE "message_request" ADD COLUMN "blocked_by" varchar(50);--> statement-breakpoint -ALTER TABLE "message_request" ADD COLUMN "blocked_reason" text;--> statement-breakpoint -CREATE INDEX "idx_sensitive_words_enabled" ON "sensitive_words" USING btree ("is_enabled","match_type");--> statement-breakpoint -CREATE INDEX "idx_sensitive_words_created_at" ON "sensitive_words" USING btree ("created_at"); \ No newline at end of file +ALTER TABLE "message_request" ADD COLUMN IF NOT EXISTS "blocked_by" varchar(50);--> statement-breakpoint +ALTER TABLE "message_request" ADD COLUMN IF NOT EXISTS "blocked_reason" text;--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "idx_sensitive_words_enabled" ON "sensitive_words" USING btree ("is_enabled","match_type");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "idx_sensitive_words_created_at" ON "sensitive_words" USING btree ("created_at"); diff --git a/drizzle/0004_dazzling_starbolt.sql b/drizzle/0004_dazzling_starbolt.sql index 3b6c5fb18..66af518f1 100644 --- a/drizzle/0004_dazzling_starbolt.sql +++ b/drizzle/0004_dazzling_starbolt.sql @@ -1 +1 @@ -ALTER TABLE "message_request" ADD COLUMN "cost_multiplier" numeric(10, 4); \ No newline at end of file +ALTER TABLE "message_request" ADD COLUMN IF NOT EXISTS "cost_multiplier" numeric(10, 4); diff --git a/drizzle/0005_true_raza.sql b/drizzle/0005_true_raza.sql index 6d6e42bbe..675df515e 100644 --- a/drizzle/0005_true_raza.sql +++ b/drizzle/0005_true_raza.sql @@ -1,3 +1,3 @@ -ALTER TABLE "message_request" ADD COLUMN "original_model" varchar(128);--> statement-breakpoint -ALTER TABLE "message_request" ADD COLUMN "user_agent" varchar(512);--> statement-breakpoint -ALTER TABLE "message_request" ADD COLUMN "messages_count" integer; \ No newline at end of file +ALTER TABLE "message_request" ADD COLUMN IF NOT EXISTS "original_model" varchar(128);--> statement-breakpoint +ALTER TABLE "message_request" ADD COLUMN IF NOT EXISTS "user_agent" varchar(512);--> statement-breakpoint +ALTER TABLE "message_request" ADD COLUMN IF NOT EXISTS "messages_count" integer; diff --git a/drizzle/0006_lame_matthew_murdock.sql b/drizzle/0006_lame_matthew_murdock.sql index 2a40f7ffb..54abed108 100644 --- a/drizzle/0006_lame_matthew_murdock.sql +++ b/drizzle/0006_lame_matthew_murdock.sql @@ -1,4 +1,4 @@ -CREATE TABLE "provider_schedule_logs" ( +CREATE TABLE IF NOT EXISTS "provider_schedule_logs" ( "id" serial PRIMARY KEY NOT NULL, "execution_time" timestamp with time zone NOT NULL, "executed_by" varchar(50) NOT NULL, @@ -11,21 +11,21 @@ CREATE TABLE "provider_schedule_logs" ( "created_at" timestamp with time zone DEFAULT now() ); --> statement-breakpoint -ALTER TABLE "providers" ADD COLUMN "base_weight" integer;--> statement-breakpoint -ALTER TABLE "providers" ADD COLUMN "base_priority" integer;--> statement-breakpoint -ALTER TABLE "providers" ADD COLUMN "last_schedule_time" timestamp with time zone;--> statement-breakpoint -ALTER TABLE "system_settings" ADD COLUMN "enable_auto_schedule" boolean DEFAULT false NOT NULL;--> statement-breakpoint -ALTER TABLE "system_settings" ADD COLUMN "schedule_time" varchar(5) DEFAULT '02:00';--> statement-breakpoint -ALTER TABLE "system_settings" ADD COLUMN "min_sample_size" integer DEFAULT 10;--> statement-breakpoint -ALTER TABLE "system_settings" ADD COLUMN "schedule_window_hours" integer DEFAULT 24;--> statement-breakpoint -ALTER TABLE "system_settings" ADD COLUMN "enable_realtime_schedule" boolean DEFAULT false NOT NULL;--> statement-breakpoint -ALTER TABLE "system_settings" ADD COLUMN "schedule_interval_seconds" integer DEFAULT 30;--> statement-breakpoint -ALTER TABLE "system_settings" ADD COLUMN "exploration_rate" integer DEFAULT 15;--> statement-breakpoint -ALTER TABLE "system_settings" ADD COLUMN "circuit_recovery_weight_percent" integer DEFAULT 30;--> statement-breakpoint -ALTER TABLE "system_settings" ADD COLUMN "circuit_recovery_observation_count" integer DEFAULT 10;--> statement-breakpoint -ALTER TABLE "system_settings" ADD COLUMN "max_weight_adjustment_percent" integer DEFAULT 10;--> statement-breakpoint -ALTER TABLE "system_settings" ADD COLUMN "short_term_window_minutes" integer DEFAULT 60;--> statement-breakpoint -ALTER TABLE "system_settings" ADD COLUMN "medium_term_window_minutes" integer DEFAULT 360;--> statement-breakpoint -ALTER TABLE "system_settings" ADD COLUMN "long_term_window_minutes" integer DEFAULT 1440;--> statement-breakpoint -CREATE INDEX "idx_schedule_logs_execution_time" ON "provider_schedule_logs" USING btree ("execution_time" DESC NULLS LAST);--> statement-breakpoint -CREATE INDEX "idx_schedule_logs_created_at" ON "provider_schedule_logs" USING btree ("created_at" DESC NULLS LAST); \ No newline at end of file +ALTER TABLE "providers" ADD COLUMN IF NOT EXISTS "base_weight" integer;--> statement-breakpoint +ALTER TABLE "providers" ADD COLUMN IF NOT EXISTS "base_priority" integer;--> statement-breakpoint +ALTER TABLE "providers" ADD COLUMN IF NOT EXISTS "last_schedule_time" timestamp with time zone;--> statement-breakpoint +ALTER TABLE "system_settings" ADD COLUMN IF NOT EXISTS "enable_auto_schedule" boolean DEFAULT false NOT NULL;--> statement-breakpoint +ALTER TABLE "system_settings" ADD COLUMN IF NOT EXISTS "schedule_time" varchar(5) DEFAULT '02:00';--> statement-breakpoint +ALTER TABLE "system_settings" ADD COLUMN IF NOT EXISTS "min_sample_size" integer DEFAULT 10;--> statement-breakpoint +ALTER TABLE "system_settings" ADD COLUMN IF NOT EXISTS "schedule_window_hours" integer DEFAULT 24;--> statement-breakpoint +ALTER TABLE "system_settings" ADD COLUMN IF NOT EXISTS "enable_realtime_schedule" boolean DEFAULT false NOT NULL;--> statement-breakpoint +ALTER TABLE "system_settings" ADD COLUMN IF NOT EXISTS "schedule_interval_seconds" integer DEFAULT 30;--> statement-breakpoint +ALTER TABLE "system_settings" ADD COLUMN IF NOT EXISTS "exploration_rate" integer DEFAULT 15;--> statement-breakpoint +ALTER TABLE "system_settings" ADD COLUMN IF NOT EXISTS "circuit_recovery_weight_percent" integer DEFAULT 30;--> statement-breakpoint +ALTER TABLE "system_settings" ADD COLUMN IF NOT EXISTS "circuit_recovery_observation_count" integer DEFAULT 10;--> statement-breakpoint +ALTER TABLE "system_settings" ADD COLUMN IF NOT EXISTS "max_weight_adjustment_percent" integer DEFAULT 10;--> statement-breakpoint +ALTER TABLE "system_settings" ADD COLUMN IF NOT EXISTS "short_term_window_minutes" integer DEFAULT 60;--> statement-breakpoint +ALTER TABLE "system_settings" ADD COLUMN IF NOT EXISTS "medium_term_window_minutes" integer DEFAULT 360;--> statement-breakpoint +ALTER TABLE "system_settings" ADD COLUMN IF NOT EXISTS "long_term_window_minutes" integer DEFAULT 1440;--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "idx_schedule_logs_execution_time" ON "provider_schedule_logs" USING btree ("execution_time" DESC NULLS LAST);--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "idx_schedule_logs_created_at" ON "provider_schedule_logs" USING btree ("created_at" DESC NULLS LAST); diff --git a/drizzle/0007_lazy_post.sql b/drizzle/0007_lazy_post.sql index 70891c2b1..64bbf56a8 100644 --- a/drizzle/0007_lazy_post.sql +++ b/drizzle/0007_lazy_post.sql @@ -1,17 +1,17 @@ -DROP TABLE "provider_schedule_logs" CASCADE;--> statement-breakpoint -ALTER TABLE "providers" DROP COLUMN "base_weight";--> statement-breakpoint -ALTER TABLE "providers" DROP COLUMN "base_priority";--> statement-breakpoint -ALTER TABLE "providers" DROP COLUMN "last_schedule_time";--> statement-breakpoint -ALTER TABLE "system_settings" DROP COLUMN "enable_auto_schedule";--> statement-breakpoint -ALTER TABLE "system_settings" DROP COLUMN "schedule_time";--> statement-breakpoint -ALTER TABLE "system_settings" DROP COLUMN "min_sample_size";--> statement-breakpoint -ALTER TABLE "system_settings" DROP COLUMN "schedule_window_hours";--> statement-breakpoint -ALTER TABLE "system_settings" DROP COLUMN "enable_realtime_schedule";--> statement-breakpoint -ALTER TABLE "system_settings" DROP COLUMN "schedule_interval_seconds";--> statement-breakpoint -ALTER TABLE "system_settings" DROP COLUMN "exploration_rate";--> statement-breakpoint -ALTER TABLE "system_settings" DROP COLUMN "circuit_recovery_weight_percent";--> statement-breakpoint -ALTER TABLE "system_settings" DROP COLUMN "circuit_recovery_observation_count";--> statement-breakpoint -ALTER TABLE "system_settings" DROP COLUMN "max_weight_adjustment_percent";--> statement-breakpoint -ALTER TABLE "system_settings" DROP COLUMN "short_term_window_minutes";--> statement-breakpoint -ALTER TABLE "system_settings" DROP COLUMN "medium_term_window_minutes";--> statement-breakpoint -ALTER TABLE "system_settings" DROP COLUMN "long_term_window_minutes"; \ No newline at end of file +DROP TABLE IF EXISTS "provider_schedule_logs" CASCADE;--> statement-breakpoint +ALTER TABLE "providers" DROP COLUMN IF EXISTS "base_weight";--> statement-breakpoint +ALTER TABLE "providers" DROP COLUMN IF EXISTS "base_priority";--> statement-breakpoint +ALTER TABLE "providers" DROP COLUMN IF EXISTS "last_schedule_time";--> statement-breakpoint +ALTER TABLE "system_settings" DROP COLUMN IF EXISTS "enable_auto_schedule";--> statement-breakpoint +ALTER TABLE "system_settings" DROP COLUMN IF EXISTS "schedule_time";--> statement-breakpoint +ALTER TABLE "system_settings" DROP COLUMN IF EXISTS "min_sample_size";--> statement-breakpoint +ALTER TABLE "system_settings" DROP COLUMN IF EXISTS "schedule_window_hours";--> statement-breakpoint +ALTER TABLE "system_settings" DROP COLUMN IF EXISTS "enable_realtime_schedule";--> statement-breakpoint +ALTER TABLE "system_settings" DROP COLUMN IF EXISTS "schedule_interval_seconds";--> statement-breakpoint +ALTER TABLE "system_settings" DROP COLUMN IF EXISTS "exploration_rate";--> statement-breakpoint +ALTER TABLE "system_settings" DROP COLUMN IF EXISTS "circuit_recovery_weight_percent";--> statement-breakpoint +ALTER TABLE "system_settings" DROP COLUMN IF EXISTS "circuit_recovery_observation_count";--> statement-breakpoint +ALTER TABLE "system_settings" DROP COLUMN IF EXISTS "max_weight_adjustment_percent";--> statement-breakpoint +ALTER TABLE "system_settings" DROP COLUMN IF EXISTS "short_term_window_minutes";--> statement-breakpoint +ALTER TABLE "system_settings" DROP COLUMN IF EXISTS "medium_term_window_minutes";--> statement-breakpoint +ALTER TABLE "system_settings" DROP COLUMN IF EXISTS "long_term_window_minutes"; diff --git a/drizzle/0008_talented_molten_man.sql b/drizzle/0008_talented_molten_man.sql index 714aee6fe..a58408591 100644 --- a/drizzle/0008_talented_molten_man.sql +++ b/drizzle/0008_talented_molten_man.sql @@ -1 +1 @@ -ALTER TABLE "keys" ADD COLUMN "can_login_web_ui" boolean DEFAULT true; \ No newline at end of file +ALTER TABLE "keys" ADD COLUMN IF NOT EXISTS "can_login_web_ui" boolean DEFAULT true; diff --git a/drizzle/0009_many_amazoness.sql b/drizzle/0009_many_amazoness.sql index 2a4ba0775..d8a6b6bf4 100644 --- a/drizzle/0009_many_amazoness.sql +++ b/drizzle/0009_many_amazoness.sql @@ -1 +1 @@ -ALTER TABLE "providers" ADD COLUMN "allowed_models" jsonb DEFAULT 'null'::jsonb; \ No newline at end of file +ALTER TABLE "providers" ADD COLUMN IF NOT EXISTS "allowed_models" jsonb DEFAULT 'null'::jsonb; diff --git a/drizzle/0010_unusual_bloodscream.sql b/drizzle/0010_unusual_bloodscream.sql index 1e71575a5..122649de3 100644 --- a/drizzle/0010_unusual_bloodscream.sql +++ b/drizzle/0010_unusual_bloodscream.sql @@ -1,5 +1,5 @@ -ALTER TABLE "system_settings" ADD COLUMN "currency_display" varchar(10) DEFAULT 'USD' NOT NULL;--> statement-breakpoint -ALTER TABLE "system_settings" ADD COLUMN "enable_auto_cleanup" boolean DEFAULT false;--> statement-breakpoint -ALTER TABLE "system_settings" ADD COLUMN "cleanup_retention_days" integer DEFAULT 30;--> statement-breakpoint -ALTER TABLE "system_settings" ADD COLUMN "cleanup_schedule" varchar(50) DEFAULT '0 2 * * *';--> statement-breakpoint -ALTER TABLE "system_settings" ADD COLUMN "cleanup_batch_size" integer DEFAULT 10000; \ No newline at end of file +ALTER TABLE "system_settings" ADD COLUMN IF NOT EXISTS "currency_display" varchar(10) DEFAULT 'USD' NOT NULL;--> statement-breakpoint +ALTER TABLE "system_settings" ADD COLUMN IF NOT EXISTS "enable_auto_cleanup" boolean DEFAULT false;--> statement-breakpoint +ALTER TABLE "system_settings" ADD COLUMN IF NOT EXISTS "cleanup_retention_days" integer DEFAULT 30;--> statement-breakpoint +ALTER TABLE "system_settings" ADD COLUMN IF NOT EXISTS "cleanup_schedule" varchar(50) DEFAULT '0 2 * * *';--> statement-breakpoint +ALTER TABLE "system_settings" ADD COLUMN IF NOT EXISTS "cleanup_batch_size" integer DEFAULT 10000; diff --git a/drizzle/0011_charming_ben_parker.sql b/drizzle/0011_charming_ben_parker.sql index 0a41d6f54..3cf9e387b 100644 --- a/drizzle/0011_charming_ben_parker.sql +++ b/drizzle/0011_charming_ben_parker.sql @@ -1 +1 @@ -ALTER TABLE "providers" ADD COLUMN "join_claude_pool" boolean DEFAULT false; \ No newline at end of file +ALTER TABLE "providers" ADD COLUMN IF NOT EXISTS "join_claude_pool" boolean DEFAULT false; diff --git a/drizzle/0012_elite_iron_patriot.sql b/drizzle/0012_elite_iron_patriot.sql index bb9167987..5efc8d56c 100644 --- a/drizzle/0012_elite_iron_patriot.sql +++ b/drizzle/0012_elite_iron_patriot.sql @@ -1,3 +1,3 @@ -ALTER TABLE "providers" ADD COLUMN "circuit_breaker_failure_threshold" integer DEFAULT 5;--> statement-breakpoint -ALTER TABLE "providers" ADD COLUMN "circuit_breaker_open_duration" integer DEFAULT 1800000;--> statement-breakpoint -ALTER TABLE "providers" ADD COLUMN "circuit_breaker_half_open_success_threshold" integer DEFAULT 2; \ No newline at end of file +ALTER TABLE "providers" ADD COLUMN IF NOT EXISTS "circuit_breaker_failure_threshold" integer DEFAULT 5;--> statement-breakpoint +ALTER TABLE "providers" ADD COLUMN IF NOT EXISTS "circuit_breaker_open_duration" integer DEFAULT 1800000;--> statement-breakpoint +ALTER TABLE "providers" ADD COLUMN IF NOT EXISTS "circuit_breaker_half_open_success_threshold" integer DEFAULT 2; diff --git a/drizzle/0014_overconfident_mongu.sql b/drizzle/0014_overconfident_mongu.sql index f63df3c4d..eefaf98c7 100644 --- a/drizzle/0014_overconfident_mongu.sql +++ b/drizzle/0014_overconfident_mongu.sql @@ -1,2 +1,2 @@ -ALTER TABLE "providers" ADD COLUMN "proxy_url" varchar(512);--> statement-breakpoint -ALTER TABLE "providers" ADD COLUMN "proxy_fallback_to_direct" boolean DEFAULT false; \ No newline at end of file +ALTER TABLE "providers" ADD COLUMN IF NOT EXISTS "proxy_url" varchar(512);--> statement-breakpoint +ALTER TABLE "providers" ADD COLUMN IF NOT EXISTS "proxy_fallback_to_direct" boolean DEFAULT false; diff --git a/drizzle/0015_narrow_gunslinger.sql b/drizzle/0015_narrow_gunslinger.sql index 11e1b3827..2c9329ec4 100644 --- a/drizzle/0015_narrow_gunslinger.sql +++ b/drizzle/0015_narrow_gunslinger.sql @@ -1,2 +1,2 @@ -ALTER TABLE "providers" ADD COLUMN "codex_instructions_strategy" varchar(20) DEFAULT 'auto';--> statement-breakpoint -ALTER TABLE "system_settings" ADD COLUMN "enable_client_version_check" boolean DEFAULT false NOT NULL; \ No newline at end of file +ALTER TABLE "providers" ADD COLUMN IF NOT EXISTS "codex_instructions_strategy" varchar(20) DEFAULT 'auto';--> statement-breakpoint +ALTER TABLE "system_settings" ADD COLUMN IF NOT EXISTS "enable_client_version_check" boolean DEFAULT false NOT NULL; diff --git a/drizzle/0016_curious_paladin.sql b/drizzle/0016_curious_paladin.sql index 18317f8cf..83dc79be1 100644 --- a/drizzle/0016_curious_paladin.sql +++ b/drizzle/0016_curious_paladin.sql @@ -1,2 +1,2 @@ -ALTER TABLE "providers" ADD COLUMN "website_url" text;--> statement-breakpoint -ALTER TABLE "providers" ADD COLUMN "favicon_url" text; \ No newline at end of file +ALTER TABLE "providers" ADD COLUMN IF NOT EXISTS "website_url" text;--> statement-breakpoint +ALTER TABLE "providers" ADD COLUMN IF NOT EXISTS "favicon_url" text; diff --git a/drizzle/0017_sudden_bruce_banner.sql b/drizzle/0017_sudden_bruce_banner.sql index 88de78e67..ddaa5efd6 100644 --- a/drizzle/0017_sudden_bruce_banner.sql +++ b/drizzle/0017_sudden_bruce_banner.sql @@ -1,2 +1,2 @@ -ALTER TABLE "message_request" ADD COLUMN "endpoint" varchar(256);--> statement-breakpoint +ALTER TABLE "message_request" ADD COLUMN IF NOT EXISTS "endpoint" varchar(256);--> statement-breakpoint CREATE INDEX IF NOT EXISTS "idx_message_request_endpoint" ON "message_request" USING btree ("endpoint") WHERE "message_request"."deleted_at" IS NULL; diff --git a/drizzle/0019_far_whirlwind.sql b/drizzle/0019_far_whirlwind.sql index 596f886eb..96ba5b374 100644 --- a/drizzle/0019_far_whirlwind.sql +++ b/drizzle/0019_far_whirlwind.sql @@ -1,3 +1,3 @@ -ALTER TABLE "providers" ADD COLUMN "first_byte_timeout_streaming_ms" integer DEFAULT 30000 NOT NULL;--> statement-breakpoint -ALTER TABLE "providers" ADD COLUMN "streaming_idle_timeout_ms" integer DEFAULT 10000 NOT NULL;--> statement-breakpoint -ALTER TABLE "providers" ADD COLUMN "request_timeout_non_streaming_ms" integer DEFAULT 600000 NOT NULL; \ No newline at end of file +ALTER TABLE "providers" ADD COLUMN IF NOT EXISTS "first_byte_timeout_streaming_ms" integer DEFAULT 30000 NOT NULL;--> statement-breakpoint +ALTER TABLE "providers" ADD COLUMN IF NOT EXISTS "streaming_idle_timeout_ms" integer DEFAULT 10000 NOT NULL;--> statement-breakpoint +ALTER TABLE "providers" ADD COLUMN IF NOT EXISTS "request_timeout_non_streaming_ms" integer DEFAULT 600000 NOT NULL; diff --git a/drizzle/0021_broad_black_panther.sql b/drizzle/0021_broad_black_panther.sql index 4dfe8289d..b67d2b927 100644 --- a/drizzle/0021_broad_black_panther.sql +++ b/drizzle/0021_broad_black_panther.sql @@ -1,2 +1,2 @@ -ALTER TABLE "error_rules" ADD COLUMN "override_response" jsonb;--> statement-breakpoint -ALTER TABLE "error_rules" ADD COLUMN "override_status_code" integer; \ No newline at end of file +ALTER TABLE "error_rules" ADD COLUMN IF NOT EXISTS "override_response" jsonb;--> statement-breakpoint +ALTER TABLE "error_rules" ADD COLUMN IF NOT EXISTS "override_status_code" integer; diff --git a/drizzle/0022_strange_next_avengers.sql b/drizzle/0022_strange_next_avengers.sql index 2a655ce4e..3b289b52c 100644 --- a/drizzle/0022_strange_next_avengers.sql +++ b/drizzle/0022_strange_next_avengers.sql @@ -1 +1 @@ -ALTER TABLE "system_settings" ADD COLUMN "verbose_provider_error" boolean DEFAULT false NOT NULL; \ No newline at end of file +ALTER TABLE "system_settings" ADD COLUMN IF NOT EXISTS "verbose_provider_error" boolean DEFAULT false NOT NULL; diff --git a/drizzle/0023_even_mentor.sql b/drizzle/0023_even_mentor.sql index f588e41cf..b27b5af65 100644 --- a/drizzle/0023_even_mentor.sql +++ b/drizzle/0023_even_mentor.sql @@ -1 +1 @@ -ALTER TABLE "users" ADD COLUMN "tags" jsonb DEFAULT '[]'::jsonb; \ No newline at end of file +ALTER TABLE "users" ADD COLUMN IF NOT EXISTS "tags" jsonb DEFAULT '[]'::jsonb; diff --git a/drizzle/0025_add_http2_setting.sql b/drizzle/0025_add_http2_setting.sql index aecb703c7..b0494bada 100644 --- a/drizzle/0025_add_http2_setting.sql +++ b/drizzle/0025_add_http2_setting.sql @@ -1 +1 @@ -ALTER TABLE "system_settings" ADD COLUMN "enable_http2" boolean DEFAULT false NOT NULL; \ No newline at end of file +ALTER TABLE "system_settings" ADD COLUMN IF NOT EXISTS "enable_http2" boolean DEFAULT false NOT NULL; diff --git a/drizzle/0027_happy_sharon_carter.sql b/drizzle/0027_happy_sharon_carter.sql index 9f111d8ac..902c3cdf2 100644 --- a/drizzle/0027_happy_sharon_carter.sql +++ b/drizzle/0027_happy_sharon_carter.sql @@ -1 +1 @@ -ALTER TABLE "providers" ADD COLUMN "max_retry_attempts" integer; \ No newline at end of file +ALTER TABLE "providers" ADD COLUMN IF NOT EXISTS "max_retry_attempts" integer; diff --git a/drizzle/0030_unusual_goliath.sql b/drizzle/0030_unusual_goliath.sql index 70dcdfb7a..9b6a2913e 100644 --- a/drizzle/0030_unusual_goliath.sql +++ b/drizzle/0030_unusual_goliath.sql @@ -1 +1 @@ -ALTER TABLE "keys" ADD COLUMN "provider_group" varchar(50); \ No newline at end of file +ALTER TABLE "keys" ADD COLUMN IF NOT EXISTS "provider_group" varchar(50); diff --git a/drizzle/0031_rare_roxanne_simpson.sql b/drizzle/0031_rare_roxanne_simpson.sql index 2b93c9a1c..53264bfe8 100644 --- a/drizzle/0031_rare_roxanne_simpson.sql +++ b/drizzle/0031_rare_roxanne_simpson.sql @@ -1,5 +1,5 @@ -ALTER TABLE "keys" ADD COLUMN "cache_ttl_preference" varchar(10);--> statement-breakpoint -ALTER TABLE "message_request" ADD COLUMN "cache_creation_5m_input_tokens" integer;--> statement-breakpoint -ALTER TABLE "message_request" ADD COLUMN "cache_creation_1h_input_tokens" integer;--> statement-breakpoint -ALTER TABLE "message_request" ADD COLUMN "cache_ttl_applied" varchar(10);--> statement-breakpoint -ALTER TABLE "providers" ADD COLUMN "cache_ttl_preference" varchar(10); \ No newline at end of file +ALTER TABLE "keys" ADD COLUMN IF NOT EXISTS "cache_ttl_preference" varchar(10);--> statement-breakpoint +ALTER TABLE "message_request" ADD COLUMN IF NOT EXISTS "cache_creation_5m_input_tokens" integer;--> statement-breakpoint +ALTER TABLE "message_request" ADD COLUMN IF NOT EXISTS "cache_creation_1h_input_tokens" integer;--> statement-breakpoint +ALTER TABLE "message_request" ADD COLUMN IF NOT EXISTS "cache_ttl_applied" varchar(10);--> statement-breakpoint +ALTER TABLE "providers" ADD COLUMN IF NOT EXISTS "cache_ttl_preference" varchar(10); diff --git a/drizzle/0032_add_request_sequence.sql b/drizzle/0032_add_request_sequence.sql index f8e07676f..a76cc9553 100644 --- a/drizzle/0032_add_request_sequence.sql +++ b/drizzle/0032_add_request_sequence.sql @@ -1,2 +1,2 @@ -ALTER TABLE "message_request" ADD COLUMN "request_sequence" integer DEFAULT 1;--> statement-breakpoint -CREATE INDEX IF NOT EXISTS "idx_message_request_session_seq" ON "message_request" USING btree ("session_id","request_sequence") WHERE "message_request"."deleted_at" IS NULL; \ No newline at end of file +ALTER TABLE "message_request" ADD COLUMN IF NOT EXISTS "request_sequence" integer DEFAULT 1;--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "idx_message_request_session_seq" ON "message_request" USING btree ("session_id","request_sequence") WHERE "message_request"."deleted_at" IS NULL; diff --git a/drizzle/0033_preserve_client_ip.sql b/drizzle/0033_preserve_client_ip.sql index d0a7fbb19..5aed63768 100644 --- a/drizzle/0033_preserve_client_ip.sql +++ b/drizzle/0033_preserve_client_ip.sql @@ -1 +1 @@ -ALTER TABLE "providers" ADD COLUMN "preserve_client_ip" boolean NOT NULL DEFAULT false; +ALTER TABLE "providers" ADD COLUMN IF NOT EXISTS "preserve_client_ip" boolean NOT NULL DEFAULT false; diff --git a/drizzle/0034_add-context-1m-support.sql b/drizzle/0034_add-context-1m-support.sql index d3d92f56e..d3b66e951 100644 --- a/drizzle/0034_add-context-1m-support.sql +++ b/drizzle/0034_add-context-1m-support.sql @@ -1,2 +1,2 @@ -ALTER TABLE "message_request" ADD COLUMN "context_1m_applied" boolean DEFAULT false;--> statement-breakpoint -ALTER TABLE "providers" ADD COLUMN "context_1m_preference" varchar(20); \ No newline at end of file +ALTER TABLE "message_request" ADD COLUMN IF NOT EXISTS "context_1m_applied" boolean DEFAULT false;--> statement-breakpoint +ALTER TABLE "providers" ADD COLUMN IF NOT EXISTS "context_1m_preference" varchar(20); diff --git a/drizzle/0035_blushing_fabian_cortez.sql b/drizzle/0035_blushing_fabian_cortez.sql index acdaefe82..15793b584 100644 --- a/drizzle/0035_blushing_fabian_cortez.sql +++ b/drizzle/0035_blushing_fabian_cortez.sql @@ -1 +1 @@ -ALTER TABLE "users" ADD COLUMN "allowed_clients" jsonb DEFAULT '[]'::jsonb; \ No newline at end of file +ALTER TABLE "users" ADD COLUMN IF NOT EXISTS "allowed_clients" jsonb DEFAULT '[]'::jsonb; diff --git a/drizzle/0038_aberrant_bucky.sql b/drizzle/0038_aberrant_bucky.sql index 6aa5a710b..134d84bcc 100644 --- a/drizzle/0038_aberrant_bucky.sql +++ b/drizzle/0038_aberrant_bucky.sql @@ -1,2 +1,2 @@ -ALTER TABLE "message_request" ADD COLUMN "error_stack" text;--> statement-breakpoint -ALTER TABLE "message_request" ADD COLUMN "error_cause" text; \ No newline at end of file +ALTER TABLE "message_request" ADD COLUMN IF NOT EXISTS "error_stack" text;--> statement-breakpoint +ALTER TABLE "message_request" ADD COLUMN IF NOT EXISTS "error_cause" text; diff --git a/drizzle/0040_bored_venus.sql b/drizzle/0040_bored_venus.sql index 07be939e1..40d8b7944 100644 --- a/drizzle/0040_bored_venus.sql +++ b/drizzle/0040_bored_venus.sql @@ -1 +1 @@ -ALTER TABLE "message_request" ADD COLUMN "ttfb_ms" integer; \ No newline at end of file +ALTER TABLE "message_request" ADD COLUMN IF NOT EXISTS "ttfb_ms" integer; diff --git a/drizzle/0041_sticky_jackal.sql b/drizzle/0041_sticky_jackal.sql index 1d138ea7c..90b1b7663 100644 --- a/drizzle/0041_sticky_jackal.sql +++ b/drizzle/0041_sticky_jackal.sql @@ -1,4 +1,4 @@ -ALTER TABLE "request_filters" ADD COLUMN "binding_type" varchar(20) DEFAULT 'global' NOT NULL;--> statement-breakpoint -ALTER TABLE "request_filters" ADD COLUMN "provider_ids" jsonb;--> statement-breakpoint -ALTER TABLE "request_filters" ADD COLUMN "group_tags" jsonb;--> statement-breakpoint -CREATE INDEX IF NOT EXISTS "idx_request_filters_binding" ON "request_filters" USING btree ("is_enabled","binding_type"); \ No newline at end of file +ALTER TABLE "request_filters" ADD COLUMN IF NOT EXISTS "binding_type" varchar(20) DEFAULT 'global' NOT NULL;--> statement-breakpoint +ALTER TABLE "request_filters" ADD COLUMN IF NOT EXISTS "provider_ids" jsonb;--> statement-breakpoint +ALTER TABLE "request_filters" ADD COLUMN IF NOT EXISTS "group_tags" jsonb;--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "idx_request_filters_binding" ON "request_filters" USING btree ("is_enabled","binding_type"); diff --git a/drizzle/0044_uneven_donald_blake.sql b/drizzle/0044_uneven_donald_blake.sql index ba16c7112..926e52f18 100644 --- a/drizzle/0044_uneven_donald_blake.sql +++ b/drizzle/0044_uneven_donald_blake.sql @@ -1 +1 @@ -ALTER TABLE "system_settings" ADD COLUMN "intercept_anthropic_warmup_requests" boolean DEFAULT false NOT NULL; +ALTER TABLE "system_settings" ADD COLUMN IF NOT EXISTS "intercept_anthropic_warmup_requests" boolean DEFAULT false NOT NULL; diff --git a/drizzle/0045_mushy_human_torch.sql b/drizzle/0045_mushy_human_torch.sql index 1c3537b32..d4a6de789 100644 --- a/drizzle/0045_mushy_human_torch.sql +++ b/drizzle/0045_mushy_human_torch.sql @@ -1,2 +1,2 @@ -ALTER TABLE "providers" ADD COLUMN "limit_total_usd" numeric(10, 2);--> statement-breakpoint -ALTER TABLE "providers" ADD COLUMN "total_cost_reset_at" timestamp with time zone; +ALTER TABLE "providers" ADD COLUMN IF NOT EXISTS "limit_total_usd" numeric(10, 2);--> statement-breakpoint +ALTER TABLE "providers" ADD COLUMN IF NOT EXISTS "total_cost_reset_at" timestamp with time zone; diff --git a/drizzle/0046_woozy_dark_phoenix.sql b/drizzle/0046_woozy_dark_phoenix.sql index cf47784b3..62549b179 100644 --- a/drizzle/0046_woozy_dark_phoenix.sql +++ b/drizzle/0046_woozy_dark_phoenix.sql @@ -1,4 +1,4 @@ -ALTER TABLE "providers" ADD COLUMN "codex_reasoning_effort_preference" varchar(20);--> statement-breakpoint -ALTER TABLE "providers" ADD COLUMN "codex_reasoning_summary_preference" varchar(20);--> statement-breakpoint -ALTER TABLE "providers" ADD COLUMN "codex_text_verbosity_preference" varchar(10);--> statement-breakpoint -ALTER TABLE "providers" ADD COLUMN "codex_parallel_tool_calls_preference" varchar(10); +ALTER TABLE "providers" ADD COLUMN IF NOT EXISTS "codex_reasoning_effort_preference" varchar(20);--> statement-breakpoint +ALTER TABLE "providers" ADD COLUMN IF NOT EXISTS "codex_reasoning_summary_preference" varchar(20);--> statement-breakpoint +ALTER TABLE "providers" ADD COLUMN IF NOT EXISTS "codex_text_verbosity_preference" varchar(10);--> statement-breakpoint +ALTER TABLE "providers" ADD COLUMN IF NOT EXISTS "codex_parallel_tool_calls_preference" varchar(10); diff --git a/drizzle/0049_shocking_ultimatum.sql b/drizzle/0049_shocking_ultimatum.sql index 6a37f923f..42c58a963 100644 --- a/drizzle/0049_shocking_ultimatum.sql +++ b/drizzle/0049_shocking_ultimatum.sql @@ -1 +1 @@ -ALTER TABLE "message_request" ADD COLUMN "special_settings" jsonb; \ No newline at end of file +ALTER TABLE "message_request" ADD COLUMN IF NOT EXISTS "special_settings" jsonb; diff --git a/drizzle/0050_flippant_jack_flag.sql b/drizzle/0050_flippant_jack_flag.sql index 505093d5f..027b9c3f5 100644 --- a/drizzle/0050_flippant_jack_flag.sql +++ b/drizzle/0050_flippant_jack_flag.sql @@ -1,2 +1,2 @@ -ALTER TABLE "system_settings" ADD COLUMN "enable_response_fixer" boolean DEFAULT true NOT NULL;--> statement-breakpoint -ALTER TABLE "system_settings" ADD COLUMN "response_fixer_config" jsonb DEFAULT '{"fixTruncatedJson":true,"fixSseFormat":true,"fixEncoding":true,"maxJsonDepth":200,"maxFixSize":1048576}'::jsonb; \ No newline at end of file +ALTER TABLE "system_settings" ADD COLUMN IF NOT EXISTS "enable_response_fixer" boolean DEFAULT true NOT NULL;--> statement-breakpoint +ALTER TABLE "system_settings" ADD COLUMN IF NOT EXISTS "response_fixer_config" jsonb DEFAULT '{"fixTruncatedJson":true,"fixSseFormat":true,"fixEncoding":true,"maxJsonDepth":200,"maxFixSize":1048576}'::jsonb; diff --git a/drizzle/0051_silent_maelstrom.sql b/drizzle/0051_silent_maelstrom.sql index 987702efd..cbcda452a 100644 --- a/drizzle/0051_silent_maelstrom.sql +++ b/drizzle/0051_silent_maelstrom.sql @@ -1 +1 @@ -ALTER TABLE "system_settings" ADD COLUMN "enable_thinking_signature_rectifier" boolean DEFAULT true NOT NULL; \ No newline at end of file +ALTER TABLE "system_settings" ADD COLUMN IF NOT EXISTS "enable_thinking_signature_rectifier" boolean DEFAULT true NOT NULL; diff --git a/drizzle/0052_model_price_source.sql b/drizzle/0052_model_price_source.sql index 5075e48f4..21b44c2f9 100644 --- a/drizzle/0052_model_price_source.sql +++ b/drizzle/0052_model_price_source.sql @@ -1,2 +1,2 @@ -ALTER TABLE "model_prices" ADD COLUMN "source" varchar(20) DEFAULT 'litellm' NOT NULL;--> statement-breakpoint -CREATE INDEX IF NOT EXISTS "idx_model_prices_source" ON "model_prices" USING btree ("source"); \ No newline at end of file +ALTER TABLE "model_prices" ADD COLUMN IF NOT EXISTS "source" varchar(20) DEFAULT 'litellm' NOT NULL;--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "idx_model_prices_source" ON "model_prices" USING btree ("source"); diff --git a/src/app/[locale]/dashboard/logs/_components/virtualized-logs-table.tsx b/src/app/[locale]/dashboard/logs/_components/virtualized-logs-table.tsx index 2638493fe..ae1c1d717 100644 --- a/src/app/[locale]/dashboard/logs/_components/virtualized-logs-table.tsx +++ b/src/app/[locale]/dashboard/logs/_components/virtualized-logs-table.tsx @@ -310,9 +310,8 @@ export function VirtualizedLogsTable({ : null; const actualCostMultiplier = successfulProvider?.costMultiplier ?? log.costMultiplier; - const hasCostBadge = - !!actualCostMultiplier && - parseFloat(String(actualCostMultiplier)) !== 1.0; + const multiplier = Number(actualCostMultiplier); + const hasCostBadge = Number.isFinite(multiplier) && multiplier !== 1; return ( <> @@ -332,12 +331,12 @@ export function VirtualizedLogsTable({ 1.0 + multiplier > 1 ? "text-xs bg-orange-50 text-orange-700 border-orange-200 dark:bg-orange-950/30 dark:text-orange-300 dark:border-orange-800 shrink-0" : "text-xs bg-green-50 text-green-700 border-green-200 dark:bg-green-950/30 dark:text-green-300 dark:border-green-800 shrink-0" } > - x{parseFloat(String(actualCostMultiplier)).toFixed(2)} + x{multiplier.toFixed(2)} )} > @@ -346,26 +345,34 @@ export function VirtualizedLogsTable({ {log.providerChain && log.providerChain.length > 0 && - formatProviderSummary(log.providerChain, tChain) && ( - - - - - {formatProviderSummary(log.providerChain, tChain)} - - - - - {formatProviderSummary(log.providerChain, tChain)} - - - - - )} + (() => { + const providerSummary = formatProviderSummary( + log.providerChain, + tChain + ); + if (!providerSummary) return null; + + return ( + + + + + {providerSummary} + + + + + {providerSummary} + + + + + ); + })()} )}
- {formatProviderSummary(log.providerChain, tChain)} -
+ {providerSummary} +