Skip to content
Merged

Dev #897

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
340 commits
Select commit Hold shift + click to select a range
91ff5fe
feat: simplify and unify status management patterns (#840)
nickna Sep 8, 2025
e64badf
feat: improve type safety and eliminate runtime parsing (#841)
nickna Sep 8, 2025
09da35e
feat: extract configuration constants and magic numbers (#842)
nickna Sep 8, 2025
343e3f1
refactor: organize shared media components in dedicated directory (#845)
nickna Sep 8, 2025
efac3be
test: add comprehensive test coverage for Image components (#844)
nickna Sep 8, 2025
471700a
test: fix test failures following media component reorganization
nickna Sep 8, 2025
54fc4fa
feat: add image token calculator and integrate into usage estimation …
nickna Sep 8, 2025
4f0416f
fix: improve type safety in tests and mock implementations
nickna Sep 8, 2025
015f58b
feat: add tokenizer type selection to model creation and editing modals
nickna Sep 8, 2025
dd7933f
Add ToolCostCalculationService for calculating tool usage costs
nickna Sep 8, 2025
3472869
Refactor database migration guide and scripts for PostgreSQL compatib…
nickna Sep 8, 2025
b04befe
fix: re-add health check API endpoint
nickna Sep 8, 2025
d89d9cf
chore: delete outdated files
nickna Sep 8, 2025
b75d212
fix: update Prometheus configuration paths for Grafana integration
nickna Sep 9, 2025
4de33c0
chore: Remove unused files
nickna Sep 9, 2025
5254542
chore: remove obsolete test files for streaming and reasoning UI
nickna Sep 9, 2025
3728916
chore: remove YAGNI scripts
nickna Sep 9, 2025
90fa117
chore: deleting YAGNI scripts
nickna Sep 9, 2025
6f51697
fix: enhance CreateModelModal with model capabilities and token limits
nickna Sep 9, 2025
49871af
Add provider tools management functionality with CRUD operations and …
nickna Sep 9, 2025
d19bc06
Add Cost Observability Troubleshooting Guide with common issues, diag…
nickna Sep 10, 2025
0ae8ffa
feat: add local build commands for TypeScript projects and enhance us…
nickna Sep 10, 2025
b4678d8
Add unit tests for VideoGallery and VideoQueue components
nickna Sep 10, 2025
27e464e
feat: add logging functionality to development startup script
nickna Sep 15, 2025
511cb55
feat: add comprehensive TypeScript error checking script
nickna Sep 15, 2025
69f088a
chore: update dependencies and improve test stability
nickna Nov 4, 2025
6b4e2bf
fix: override vulnerable transitive dependencies from EF Core Design …
nickna Nov 4, 2025
130b9f1
feat: Named Query Filters modernization (.NET 10)
nickna Nov 5, 2025
5412cdc
refactor: replace ToList() with array spread syntax for improved read…
nickna Nov 6, 2025
af3c499
feat: implement Span<T> optimizations for string operations and authe…
nickna Nov 6, 2025
6ccde3c
refactor: replace typeof(TEvent).Name with nameof(TEvent)
nickna Nov 6, 2025
d1e5680
feat(errors): add isServerError type guard for server error detection
nickna Nov 7, 2025
a883d14
Refactor: Remove deprecated constants and types from Core SDK
nickna Nov 7, 2025
af292bc
refactor: update environment variable for Clerk authentication in dev…
nickna Nov 8, 2025
64affac
test: add IgnoreQueryFilters to ensure soft delete verification in Ca…
nickna Nov 8, 2025
511b0d1
chore: remove deprecated deployment and monitoring configurations for…
nickna Nov 8, 2025
e24de38
Add documentation for testing CDN functionality locally and remove ou…
nickna Nov 8, 2025
1dca3cc
refactor: remove unused ConduitError import from FetchConduitAdminClient
nickna Nov 8, 2025
5523582
Remove outdated documentation and plans related to video generation a…
nickna Nov 8, 2025
9324f05
Add runbooks for database connection pool, high error rate, and high …
nickna Nov 8, 2025
66bfca1
Implement provider health monitoring, usage mappings, and SignalR con…
nickna Nov 8, 2025
4ca5e06
Add comprehensive API guides for Conduit Core and features
nickna Nov 8, 2025
76d1504
Add architecture documentation for provider system, real-time streami…
nickna Nov 8, 2025
1d3496d
Add cost observability runbooks and troubleshooting guide; remove vid…
nickna Nov 8, 2025
60070f9
Refactor LLM Client Factory Documentation and Remove Compile-Time Cac…
nickna Nov 9, 2025
b604c39
Remove package.json file and its associated CSS tooling and build setup
nickna Nov 9, 2025
23b0832
chore: Moved unit tests, integration tests, and benchmarks into the T…
nickna Nov 9, 2025
926fb57
chore: organized shell scripts into categorized subdirectories.
nickna Nov 9, 2025
a217a15
chore: renamed ConduitLLM.WebUI to WebAdmin
nickna Nov 9, 2025
c339d13
Chore: Misc. file changes related to WebAdmin directory change.
nickna Nov 9, 2025
31ce231
chore: moved Configuration, Core, Providers, Security projects to Sha…
nickna Nov 11, 2025
eb70ccb
chore: update project references and Dockerfiles to use Shared direct…
nickna Nov 11, 2025
aa995ff
chore: Moved Admin and HTTP services into Services directory
nickna Nov 11, 2025
0605d24
chore: refactor project structure to move Http and Admin services to …
nickna Nov 11, 2025
8075810
chore: update Dockerfiles and scripts for project structure changes a…
nickna Nov 11, 2025
0bf8655
chore: update media storage configuration in .env.example and README …
nickna Nov 11, 2025
8135767
chore: Bumped projects to .NET 10.0 release version.
nickna Nov 11, 2025
c494990
chore: update pre-push hook to correct script paths for lint validation
nickna Nov 11, 2025
a59c821
chore: remove unnecessary shebang and husky script sourcing from pre-…
nickna Nov 11, 2025
ba913a9
chore: update package references across multiple projects to latest s…
nickna Nov 11, 2025
ea1a943
chore: replace Swagger with Scalar for API documentation and update r…
nickna Nov 11, 2025
623e3fc
Add script for detailed extraction of Replicate models
nickna Nov 12, 2025
9398f70
Add SambaNova models SQL generator and model data
nickna Nov 13, 2025
83ec009
chore: update .NET version in README to 10.0
nickna Nov 13, 2025
f073cc5
feat: normalize API key test responses and handle non-testable provid…
nickna Nov 13, 2025
360b5a0
fix: update default TokenizerType in ModelSeriesDto tests to None
nickna Nov 13, 2025
1c77749
test: add retry logic for timing variance in QueueInvalidationAsync test
nickna Nov 13, 2025
0f79fb1
fix: optimize useAdminClient by using useCallback for stable function…
nickna Nov 13, 2025
4c0e0c6
feat: introduce ModelDiscovery cache region and update stale time for…
nickna Nov 13, 2025
b4e3241
refactor: remove legacy cache service implementation and update cachi…
nickna Nov 13, 2025
d095ed7
Add unit tests for LLM cache management and caching client; implement…
nickna Nov 14, 2025
a9d10e9
refactor: update API response handling to use typed RawApiKeyTestResp…
nickna Nov 15, 2025
fc67954
change ModelSeries.TokenizerType default
nickna Nov 15, 2025
d167c02
chore: renamed WebUI references in docs to WebAdmin
nickna Nov 15, 2025
60a7eca
refactor: reorganize CLAUDE.md for improved clarity and structure; up…
nickna Nov 15, 2025
cca9ee6
fix: update default TokenizerType in ModelSeriesDto tests to match DT…
nickna Nov 15, 2025
a06288b
Merge remote-tracking branch 'origin/dev' into claude/fix-dev-todo-01…
claude Nov 16, 2025
4e3dca4
fix: enable embeddingCostPerMillion test assertion in csvHelpers
claude Nov 16, 2025
430f2c1
docs: add comprehensive analysis of issue #824 implementation status
claude Nov 16, 2025
6680ead
feat: implement model provider mapping caching to reduce database load
claude Nov 16, 2025
3431686
Merge branch 'dev' into claude/review-issue-824-01St55LfFoikRgJDpw6y7UsM
claude Nov 16, 2025
1c5faa2
docs: add comprehensive analysis of issue #215 (batch operation frame…
claude Nov 16, 2025
c1c0631
feat: implement batch operation framework with idempotency support (P…
claude Nov 16, 2025
fa85bbf
docs: add comprehensive implementation summary for Phase 1
claude Nov 16, 2025
fcf3a71
feat: complete Phase 2 - batch operation framework controller integra…
claude Nov 16, 2025
85e3308
docs: add Phase 2 completion summary
claude Nov 16, 2025
bb9c14f
docs: document merge conflict resolution and rebase onto dev
claude Nov 16, 2025
83031ba
fix: correct test base class reference for BatchSpendUpdateOperationV…
claude Nov 17, 2025
b858113
fix: resolve ambiguous IVirtualKeyService reference and Dispose overr…
claude Nov 17, 2025
1242490
docs: add test failures resolution documentation
claude Nov 17, 2025
76eb3a2
fix: resolve remaining test compilation errors
claude Nov 17, 2025
b02f884
docs: update test failures resolution with round 2 fixes
claude Nov 17, 2025
9881f55
fix: resolve test failures - make test classes public and fix validat…
claude Nov 17, 2025
0f18a6b
fix: access Error property from BatchItemError object in test
claude Nov 17, 2025
5aad602
fix: remove exception catching from ProcessItemAsync to enable retry …
claude Nov 17, 2025
c3590ec
Delete temporary documents.
nickna Nov 17, 2025
0b995f2
Merge pull request #867 from knnlabs/claude/review-issue-215-01Rpi5RF…
nickna Nov 17, 2025
085ef1e
Merge pull request #864 from knnlabs/claude/fix-dev-todo-01EiVaJv5wBk…
nickna Nov 17, 2025
9f5dd39
fix: add ConduitLLM.Core project reference to ConduitLLM.Configuration
claude Nov 17, 2025
b820154
fix: resolve circular dependency by moving CachedModelProviderMapping…
claude Nov 17, 2025
9e5d68a
feat: enhance SSE error handling for streaming chat (#596)
claude Nov 16, 2025
786da2f
fix: update test file to use new namespace for CachedModelProviderMap…
claude Nov 17, 2025
6ae6920
Merge pull request #865 from knnlabs/claude/review-issue-824-01St55Lf…
nickna Nov 17, 2025
71d2b10
Merge pull request #866 from knnlabs/claude/review-issue-596-01LWQzSn…
nickna Nov 17, 2025
782f7f6
Merge remote-tracking branch 'origin/dev' into claude/review-issue-85…
claude Nov 17, 2025
3d3cb3e
feat: implement refund system for virtual key groups (#853)
claude Nov 17, 2025
7adcca8
fix: add ConduitLLM.Core project reference to ConduitLLM.Configuration
claude Nov 17, 2025
b336f34
fix: resolve circular dependency by moving RefundService to Admin pro…
claude Nov 17, 2025
e4017e7
fix: add missing using directive for IRefundService in RefundService
claude Nov 17, 2025
9dad43b
fix: update VirtualKeyGroupsControllerTests to include IRefundService…
claude Nov 17, 2025
f778aca
Merge pull request #869 from knnlabs/claude/review-issue-853-01MxEa1d…
nickna Nov 17, 2025
363e509
fix: update modelsAvailable type in RawApiKeyTestDetails to string ar…
nickna Nov 15, 2025
3c6dbe9
feat: add clear chat and toggle send history functionality to ChatInp…
nickna Nov 15, 2025
6f2d341
feat: implement streaming options for accurate token usage tracking; …
nickna Nov 16, 2025
3725d7a
fix: resolve CodeQL null reference warnings in test files (issue #787)
claude Nov 17, 2025
b8e0600
fix: use BeAssignableTo for collection type assertions
claude Nov 17, 2025
e2b3bea
Merge pull request #870 from knnlabs/claude/review-issue-787-013eCvfG…
nickna Nov 17, 2025
db2f4dc
feat: implement performance optimizations for gallery components (iss…
claude Nov 17, 2025
9e29e60
fix: implement LoggingSanitizer to prevent log injection attacks (CWE…
claude Nov 17, 2025
1441d43
Merge pull request #872 from knnlabs/claude/implement-issue-846-01RpT…
nickna Nov 17, 2025
6d1a67f
fix: resolve circular dependency by adding LoggingSanitizer to Config…
claude Nov 17, 2025
304ba59
fix: add missing using statements and fix incorrect sed replacements
claude Nov 17, 2025
ee43374
Merge pull request #873 from knnlabs/claude/review-issue-786-01R2bFov…
nickna Nov 17, 2025
5b77bb3
feat: remove provider health monitoring functionality (issue #687)
claude Nov 17, 2025
fdf1cb4
Merge pull request #874 from knnlabs/claude/investigate-issue-687-01Q…
nickna Nov 17, 2025
8838584
chore: complete RabbitMQ metrics migration cleanup (issue #863)
claude Nov 17, 2025
e1db626
Merge pull request #875 from knnlabs/claude/review-issue-863-01GNY4t8…
nickna Nov 17, 2025
0966a97
refactor: remove provider health monitoring functionality and related…
nickna Nov 17, 2025
e8cecfb
refactor: rename WebUI to WebAdmin across the codebase
nickna Nov 17, 2025
62287f4
chore: update Node.js and .NET versions in CI workflows; enhance Dock…
nickna Nov 17, 2025
fa0e217
fix: resolve Node SDK test failures in CI
nickna Nov 17, 2025
0678443
fix: resolve 139 TypeScript ESLint errors in VideoQueue.test.tsx
claude Nov 17, 2025
d98e0a0
fix: resolve 57 TypeScript ESLint errors in ImageSettings.test.tsx (i…
claude Nov 17, 2025
1b8b586
Merge pull request #884 from knnlabs/claude/issue-877-epic-876-01TgE7…
nickna Nov 17, 2025
5874eaf
fix: resolve 112 ESLint errors in VideoGallery.test.tsx (issue #878)
claude Nov 17, 2025
5a11c9b
Merge pull request #885 from knnlabs/claude/issue-879-epic-876-017hfz…
nickna Nov 17, 2025
3bbe26a
fix: resolve TypeScript compilation errors in VideoGallery.test.tsx (…
claude Nov 17, 2025
fe40350
fix: resolve 11 TypeScript ESLint errors in useProviderApi.ts
claude Nov 17, 2025
0267150
fix: eliminate unnecessary type assertion warnings in VideoGallery.te…
claude Nov 17, 2025
60fd177
refactor: replace nested ternary with if-else for clarity
claude Nov 17, 2025
8742f0d
Merge pull request #886 from knnlabs/claude/issue-878-01QDSZk5SE4MTfz…
nickna Nov 17, 2025
4c0bf6d
Merge pull request #887 from knnlabs/claude/issue-880-01211GFhJtRBJCr…
nickna Nov 17, 2025
1672664
fix: enhance error handling in chat streaming logic and SDK adapter
nickna Nov 17, 2025
1d87554
refactor: update provider capabilities and health status structure in…
nickna Nov 17, 2025
07af07f
refactor: simplify message mapping logic and remove redundant variabl…
nickna Nov 17, 2025
fd5424f
feat: partial implementation of external Functions (e.g., Exa, etc.).
nickna Nov 18, 2025
e6ac159
feat: add script to test GitHub Actions workflows locally using 'act'
nickna Nov 19, 2025
7bebe46
feat: Add parameter schema support for function configurations
nickna Nov 19, 2025
51ce075
feat(Tavily): Implement Tavily search client with request and respons…
nickna Nov 19, 2025
5de6f64
feat(Exa): Implement get contents API with request and response model…
nickna Nov 19, 2025
9655c95
Consolidate RAG Function Purposes
nickna Nov 19, 2025
233fa2d
feat: Implement agentic orchestration and function discovery services
nickna Nov 19, 2025
99c2b7a
feat: Enhance chat functionality with tool call support and function …
nickna Nov 19, 2025
7261271
feat: Implement chat layout management with compact mode and modal se…
nickna Nov 19, 2025
876f08e
fix: Skip associations without a provider type - they're not properly…
nickna Nov 19, 2025
202903d
chore: Remove deprecated sql script.
nickna Nov 19, 2025
1866e73
feat: Enhance function calling support in chat interface and SDK adapter
nickna Nov 19, 2025
1c334d9
Refactor Function Credentials to Use Provider Type
nickna Nov 19, 2025
a6f52c6
feat: Handle edge cases for tool calls when no functions are configur…
nickna Nov 20, 2025
f1e74a9
Add function configurations SQL generator and configuration files
nickna Nov 20, 2025
c1f0535
feat: Add function metadata support in chat messages and streaming logic
nickna Nov 20, 2025
8f12302
feat: Add API request metadata to user messages and enhance streaming…
nickna Nov 20, 2025
103dc28
feat: Implement Global Settings Cache Service for Agentic Mode Config…
nickna Nov 20, 2025
b1483b6
feat: Add cost configuration support to function generation script
nickna Nov 20, 2025
2a5e625
fix: Correct virtualization condition in MediaGallery and enhance per…
nickna Nov 20, 2025
7996bd1
refactor: Remove unused DTO imports in FetchFunctionsService and Fetc…
nickna Nov 21, 2025
5fcf692
chore: Update package versions for AWSSDK.S3, Scalar.AspNetCore, and …
nickna Nov 21, 2025
4b91aef
Refactor BatchSpendUpdateOperation and remove deprecated methods
nickna Nov 21, 2025
8f5a0d4
refactor: Improve code quality by removing duplicate using statements…
nickna Nov 21, 2025
6ac8cc3
chore: Update StackExchange.Redis package version to 2.10.1 across mu…
nickna Nov 21, 2025
a7736aa
feat(FunctionCosts): Add new properties and DTOs for enhanced functio…
nickna Nov 21, 2025
fd44a4a
feat(FunctionExecutions): Implement DTO for function execution data a…
nickna Nov 21, 2025
00c8520
feat(SDKChatStreamingAdapter): Enhance message streaming to include r…
nickna Nov 21, 2025
790fe69
feat(Cerebras): Add SQL generator script and model definitions for Ce…
nickna Nov 21, 2025
58a39bd
feat(SystemInfo): Implement discovery cache invalidation via MassTran…
nickna Nov 21, 2025
eab5d6a
feat(Messaging): Add DiscoveryCacheInvalidationHandler for improved c…
nickna Nov 21, 2025
5d09cbf
feat(SDKChatStreamingAdapter): Enhance stream message handling for to…
nickna Nov 21, 2025
f501137
Add integration tests for streaming with tool calls and enhance UI fo…
nickna Nov 22, 2025
9d90ac8
fix(SDKChatStreamingAdapter): Clarify reasoning accumulation logic to…
nickna Nov 22, 2025
d79fd59
feat: Add function discovery caching mechanism
nickna Nov 22, 2025
cd6ab9b
feat: Implement UTC DateTime converters for JSON serialization
nickna Nov 23, 2025
d75b840
Add new model configurations and SQL generation script for Cerebras a…
nickna Nov 23, 2025
cd42687
chore: Remove deprecated Groq SQL generation scripts and models
nickna Nov 23, 2025
0300f9b
chore: Update Npgsql.EntityFrameworkCore.PostgreSQL package version t…
nickna Nov 23, 2025
cf74803
feat: Enhance StreamChatCompletionAsync to support real-time tool exe…
nickna Nov 23, 2025
3c5c1ef
feat: Enhance service registration with detailed logging and improve …
nickna Nov 24, 2025
c02579c
feat: Add Request Logs feature with filtering and detailed view
nickna Nov 25, 2025
1567c93
feat: Add image request tracking and processing in UsageTrackingMiddl…
nickna Nov 25, 2025
0173ff9
feat: Update S3MediaStorageService to enhance R2 compatibility and im…
nickna Nov 25, 2025
c5073ed
feat: Update pricing configuration schemas for Exa and Tavily to clar…
nickna Nov 25, 2025
79bd7ac
Add ProviderType and Purpose fields to FunctionCosts SQL generation
nickna Nov 25, 2025
ad136c9
feat: Enhance model costs API and pricing extraction
nickna Nov 25, 2025
8773fac
feat: Add per-second video pricing extraction and update related output
nickna Nov 25, 2025
2d18373
feat: Add SQL seed and model files to .gitignore
nickna Nov 25, 2025
8c5581a
feat: Add comprehensive Agents Guide and GEMINI guidance documentation
nickna Nov 25, 2025
46ddc9b
feat: add ModelCostPreviewModal and integrate pricing management in M…
nickna Nov 26, 2025
28ad049
feat: implement ID-based model cost lookup and enhance cost calculati…
nickna Nov 26, 2025
f793b17
feat: enhance model cost editor with provider mapping and loading sta…
nickna Nov 26, 2025
3a222bf
feat: implement cost correction for async video/image requests; updat…
nickna Nov 26, 2025
ff9f54c
feat: increase TTL for ephemeral keys to 15 minutes for improved vide…
nickna Nov 26, 2025
5e1e074
feat: enhance UsageTrackingMiddleware to exclude polling/status endpo…
nickna Nov 26, 2025
eb5c2e4
feat: enhance AdjustBalanceAsync method to include transaction detail…
nickna Nov 27, 2025
c43df06
feat: add timeout configuration constants for API requests; update im…
nickna Nov 27, 2025
07b7d68
Refactor: Remove deprecated SignalR navigation state and notification…
nickna Nov 27, 2025
5bc521e
feat: enhance PricingAuditEventDto with detailed properties for bette…
nickna Nov 27, 2025
f8c7255
feat: refactor LLM caching mechanism to utilize GlobalSettingChanged …
nickna Nov 27, 2025
585c21e
feat: refactor model mapping cache invalidation logic; consolidate ev…
nickna Nov 27, 2025
f3d9acc
feat: update cache invalidation handlers to improve clarity in event …
nickna Nov 27, 2025
355a4e3
feat: Add Media Cleanup Service and Retention Policies Management
nickna Nov 28, 2025
f5d5070
feat: update package references to latest versions for improved secur…
nickna Nov 28, 2025
e4deedb
chore: XML code comments
nickna Nov 28, 2025
79c5e76
feat: simplify MediaLifecycleOptions by removing legacy SchedulerMode…
nickna Nov 28, 2025
ff8e1ad
Refactor IP filtering logic and introduce IpAddressHelper utility
nickna Nov 28, 2025
925f5f9
feat: improvements to leader election service.
nickna Nov 28, 2025
173226c
Add audit fields to IpFilters table
nickna Nov 28, 2025
49a097e
refactor: remove PendingModelChangesWarning suppression in production…
nickna Nov 28, 2025
b0e0986
chore: rename ConduitLLM.Http to ConduitLLM.Gateway
nickna Nov 30, 2025
8c170d0
chore: more rename from ConduitLLM.Http to ConduitLLM.Gateway
nickna Nov 30, 2025
a658e21
chore: more rename from ConduitLLM.Http to ConduitLLM.Gateway
nickna Nov 30, 2025
0c800d5
feat: enhance Prometheus metrics endpoint with private network detect…
nickna Dec 1, 2025
60e6279
Add new Grafana dashboards for provider performance, request pipeline…
nickna Dec 1, 2025
5ad419f
Add migration to include Provider fields in RequestLogs and create Po…
nickna Dec 4, 2025
04449c0
feat: add Prometheus recording rules for cost and performance metrics
nickna Dec 4, 2025
a1ae06b
feat: upgrade Next.js from 15.5.3 to 16.0.10
nickna Dec 18, 2025
64f16db
Merge pull request #888 from knnlabs/upgrade/nextjs-16.0.10
nickna Dec 18, 2025
75635d5
feat: add MessagePack protocol support for SignalR with comprehensive…
nickna Dec 18, 2025
81a4f7c
chore: #680
nickna Dec 18, 2025
11db294
chore: remove orphaned getProviderHealth from WebAdmin
nickna Dec 18, 2025
ebfacb9
chore: #684
nickna Dec 19, 2025
f3c3875
chore: remove provider health references from documentation (#680)
nickna Dec 19, 2025
2bb5f62
chore: Test and Document Provider Error Tracking System
nickna Dec 19, 2025
1af32ad
chore: Fix complex test mocking in UsageTrackingMiddlewareTests
nickna Dec 19, 2025
054dfbc
feat: Implement SignalR connection limiting per virtual key Fixes #182
nickna Dec 21, 2025
cb0193c
feat: Move base HTTP client to Common package
nickna Dec 22, 2025
e3a95ef
test: Add unit tests for SignalR hubs (SecureHub, TaskHub, SpendNotif…
nickna Dec 22, 2025
d98ab2a
test: Add unit tests for ResilientEventHandlerBase resilience patterns
nickna Dec 22, 2025
3fb29fc
test: Add SignalR Redis backplane failover and connection lifecycle t…
nickna Dec 22, 2025
8f9712c
fix: Re-enable excluded streaming integration tests and clean up ghos…
nickna Dec 22, 2025
1606641
fix: Add missing Ultravox and ElevenLabs to C# ProviderType enum
nickna Dec 22, 2025
4086100
fix: Update fix-sdk-errors.sh for Core→Gateway rename and add test ex…
nickna Dec 22, 2025
38669db
fix: Resolve 58 TypeScript/ESLint errors in Admin and Gateway SDKs
nickna Dec 22, 2025
e79e2fa
feat(chat): Add retry button to error messages (#894)
nickna Dec 22, 2025
027ff9e
feat(sdk): Add automatic retry for transient streaming errors (#895)
nickna Dec 22, 2025
3acfbaf
feat(webadmin): Add Security Dashboard page (#893)
nickna Dec 22, 2025
6814734
feat(core): Add coordinated connection pool warming (#822)
nickna Dec 22, 2025
e916fbe
feat(sdk): Add circuit breaker for chat streaming failures (#896)
nickna Dec 22, 2025
b292ed9
chore(webadmin): Migrate ESLint to flat config format
nickna Dec 22, 2025
4f17257
fix(webadmin): Resolve 26 ESLint errors across codebase
nickna Dec 22, 2025
1ae15c6
refactor(webadmin): Extract helper functions for nested ternaries
nickna Dec 22, 2025
8efa72c
chore(webadmin): Update Next.js auto-generated config files
nickna Dec 22, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
10 changes: 9 additions & 1 deletion .config/dotnet-tools.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,15 @@
"version": "5.3.11",
"commands": [
"reportgenerator"
]
],
"rollForward": false
},
"dotnet-ef": {
"version": "9.0.8",
"commands": [
"dotnet-ef"
],
"rollForward": false
}
}
}
71 changes: 53 additions & 18 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -43,45 +43,80 @@ CONDUIT_API_BASE_URL=http://api:8080
CONDUIT_ADMIN_API_BASE_URL=http://admin:8080

# ===========================================
# External Service URLs (For WebUI/Clients)
# External Service URLs (For WebAdmin/Clients)
# ===========================================
CONDUIT_API_EXTERNAL_URL=http://localhost:5000
CONDUIT_ADMIN_API_EXTERNAL_URL=http://localhost:5002

# ===========================================
# Media Storage Configuration
# ===========================================
# Storage provider: InMemory, S3
# Option 1: Use configuration path format
# ConduitLLM__Storage__Provider=S3
# Option 2: Use environment variable format (recommended for dev)
# ⚠️ CRITICAL FOR PRODUCTION: Without proper S3 configuration, media files are NEVER
# cleaned up when virtual keys are deleted, leading to unbounded storage costs!
# See docs/operations/deployment/media-cleanup-configuration.md for details.

# Storage provider: InMemory (dev only), S3 (production)
CONDUIT_MEDIA_STORAGE_TYPE=InMemory
CONDUITLLM__MEDIA_BASE_URL=http://localhost:5000

# S3 Configuration (if using S3 provider)
# For development with Cloudflare R2:
# IMPORTANT: Admin API needs the SAME storage configuration as Gateway API
# to enable automatic media cleanup when virtual keys are deleted.

# ===========================================
# S3 Storage Configuration (Production)
# ===========================================
# Both Gateway API and Admin API must have these settings for media cleanup to work!

# Option 1: Simplified format (recommended for Docker)
# CONDUIT_MEDIA_STORAGE_TYPE=S3
# CONDUIT_S3_ENDPOINT=https://YOUR-ENDPOINT
# CONDUIT_S3_ACCESS_KEY_ID=your-access-key
# CONDUIT_S3_SECRET_ACCESS_KEY=your-secret-key
# CONDUIT_S3_BUCKET_NAME=conduit-media
# CONDUIT_S3_REGION=auto

# Option 2: Hierarchical format (for direct .NET configuration)
# CONDUITLLM__STORAGE__PROVIDER=S3
# CONDUITLLM__STORAGE__S3__SERVICEURL=https://YOUR-ENDPOINT
# CONDUITLLM__STORAGE__S3__ACCESSKEY=your-access-key
# CONDUITLLM__STORAGE__S3__SECRETKEY=your-secret-key
# CONDUITLLM__STORAGE__S3__BUCKETNAME=conduit-media
# CONDUITLLM__STORAGE__S3__REGION=auto

# ===========================================
# S3 Provider Examples
# ===========================================

# Cloudflare R2 (recommended - free egress, optimized multipart uploads)
# CONDUIT_MEDIA_STORAGE_TYPE=S3
# CONDUIT_S3_ENDPOINT=https://YOUR-ACCOUNT-ID.r2.cloudflarestorage.com
# CONDUIT_S3_ACCESS_KEY_ID=your-r2-access-key
# CONDUIT_S3_SECRET_ACCESS_KEY=your-r2-secret-key
# CONDUIT_S3_BUCKET_NAME=conduit
# CONDUIT_S3_BUCKET_NAME=conduit-media
# CONDUIT_S3_REGION=auto

# For production with AWS S3:
# AWS S3
# CONDUIT_MEDIA_STORAGE_TYPE=S3
# CONDUIT_S3_ENDPOINT=https://s3.amazonaws.com
# CONDUIT_S3_ACCESS_KEY_ID=your-access-key
# CONDUIT_S3_SECRET_ACCESS_KEY=your-secret-key
# CONDUIT_S3_BUCKET_NAME=conduit-media
# CONDUIT_S3_REGION=us-east-1

# For Cloudflare R2:
# CONDUIT_MEDIA_STORAGE_TYPE=S3
# CONDUIT_S3_ENDPOINT=https://YOUR_ACCOUNT_ID.r2.cloudflarestorage.com
# CONDUIT_S3_ACCESS_KEY_ID=your-r2-access-key
# CONDUIT_S3_SECRET_ACCESS_KEY=your-r2-secret-key
# CONDUIT_S3_BUCKET_NAME=conduit-media
# CONDUIT_S3_REGION=auto
# ===========================================
# Media Lifecycle Management
# ===========================================
# ⚠️ CRITICAL: Enable these for automatic cleanup of orphaned media files

# Auto-cleanup when virtual keys are deleted (recommended for production)
# CONDUITLLM__MEDIAMANAGEMENT__ENABLEAUTOCLEANUP=true

# Periodic cleanup of orphaned media files (recommended for production)
# CONDUITLLM__MEDIAMANAGEMENT__ORPHANCLEANUPENABLED=true

# Verification: Check Admin API logs on startup for:
# ✅ "[MediaLifecycleService] Deleted {Count} media files for virtual key {VirtualKeyId}"
# ❌ "[AdminVirtualKeyService] Media lifecycle service not available" = cleanup NOT working!

# ===========================================
# Performance Tracking
Expand Down Expand Up @@ -145,13 +180,13 @@ CONDUIT_ADMIN_IP_BANNING_ENABLED=false
CONDUIT_ADMIN_FAILED_AUTH_MAX_ATTEMPTS=5
CONDUIT_ADMIN_FAILED_AUTH_BAN_DURATION_MINUTES=30

# Core API Security
# Gateway API Security
CONDUIT_CORE_RATE_LIMITING_ENABLED=true
CONDUIT_CORE_IP_FILTERING_ENABLED=false
CONDUIT_CORE_SECURITY_HEADERS_ENABLED=true

# ===========================================
# WebUI Configuration (Next.js)
# WebAdmin Configuration (Next.js)
# ===========================================
NODE_ENV=production
PORT=3000
Expand Down
12 changes: 6 additions & 6 deletions .github/SETUP_AUTO_VERSIONING.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,13 @@ The workflow automatically runs when:
- **Versions**: `1.1.0-dev.1`, `1.1.0-dev.2`, `1.1.0-dev.3`, etc.
- **NPM Tag**: `@dev`
- **Behavior**: Auto-increments prerelease number, no commits back to repo
- **Install**: `npm install @knn_labs/conduit-core-client@dev`
- **Install**: `npm install @knn_labs/conduit-gateway-client@dev`

#### Master Branch (`origin/master`)
- **Versions**: `1.1.0` → `1.1.1` → `1.1.2` (patch increments by default)
- **NPM Tag**: `@latest`
- **Behavior**: Commits version changes back to repo, publishes to NPM
- **Install**: `npm install @knn_labs/conduit-core-client@latest`
- **Install**: `npm install @knn_labs/conduit-gateway-client@latest`

### Smart Version Detection
The workflow automatically detects version type from commit messages:
Expand Down Expand Up @@ -103,16 +103,16 @@ You can also trigger versioning manually:
### NPM Package Status
```bash
# Check latest dev versions
npm view @knn_labs/conduit-core-client versions --json | jq '.[] | select(test("dev"))'
npm view @knn_labs/conduit-gateway-client versions --json | jq '.[] | select(test("dev"))'

# Check latest stable versions
npm view @knn_labs/conduit-core-client versions --json | jq '.[] | select(test("dev") | not)'
npm view @knn_labs/conduit-gateway-client versions --json | jq '.[] | select(test("dev") | not)'
```

### Installation Commands
The workflow provides installation commands in its output:
- Dev: `npm install @knn_labs/conduit-core-client@dev`
- Stable: `npm install @knn_labs/conduit-core-client@latest`
- Dev: `npm install @knn_labs/conduit-gateway-client@dev`
- Stable: `npm install @knn_labs/conduit-gateway-client@latest`

## 🛠️ Troubleshooting

Expand Down
2 changes: 1 addition & 1 deletion .github/SETUP_DOTNET_VERSIONING.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ The workflow automatically runs when:
✅ **ConduitLLM.Core** - Core interfaces and models
✅ **ConduitLLM.Providers** - LLM provider implementations

❌ **Applications not packaged**: Http, WebUI, Admin, Examples, Tests
❌ **Applications not packaged**: Http, WebAdmin, Admin, Examples, Tests

#### Version Strategy

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ This repository uses a simplified, industry-standard CI/CD pipeline.
- Publishes NPM packages with `next` tag (only from `master`)

**Artifacts produced from `master`:**
- Docker: `ghcr.io/knnlabs/conduit-{webui,http,admin}:latest`
- Docker: `ghcr.io/knnlabs/conduit-{webadmin,http,admin}:latest`
- NPM: `@conduitllm/{admin,core}@next`

### 2. Release (`release.yml`)
Expand All @@ -25,7 +25,7 @@ This repository uses a simplified, industry-standard CI/CD pipeline.
- Publishes versioned NPM packages

**Artifacts produced:**
- Docker: `ghcr.io/knnlabs/conduit-{webui,http,admin}:1.2.3`
- Docker: `ghcr.io/knnlabs/conduit-{webadmin,http,admin}:1.2.3`
- NPM: `@conduitllm/{admin,core}@1.2.3`
- GitHub Release with changelog

Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/archive-2024-08/build-and-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -277,9 +277,9 @@ jobs:
strategy:
matrix:
include:
- service: webui
image: ghcr.io/knnlabs/conduit-webui
dockerfile: ./ConduitLLM.WebUI/Dockerfile
- service: webadmin
image: ghcr.io/knnlabs/conduit-webadmin
dockerfile: ./ConduitLLM.WebAdmin/Dockerfile
- service: http
image: ghcr.io/knnlabs/conduit-http
dockerfile: ./ConduitLLM.Http/Dockerfile
Expand Down Expand Up @@ -363,8 +363,8 @@ jobs:
strategy:
matrix:
include:
- service: webui
image: ghcr.io/knnlabs/conduit-webui
- service: webadmin
image: ghcr.io/knnlabs/conduit-webadmin
- service: http
image: ghcr.io/knnlabs/conduit-http
- service: admin
Expand Down Expand Up @@ -450,6 +450,6 @@ jobs:
echo "Docker images have been successfully built:" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "Images are available at:" >> $GITHUB_STEP_SUMMARY
echo "- 🌐 `ghcr.io/knnlabs/conduit-webui` (linux/amd64)" >> $GITHUB_STEP_SUMMARY
echo "- 🌐 `ghcr.io/knnlabs/conduit-webadmin` (linux/amd64)" >> $GITHUB_STEP_SUMMARY
echo "- 🔌 `ghcr.io/knnlabs/conduit-http` (linux/amd64)" >> $GITHUB_STEP_SUMMARY
echo "- 🛠️ `ghcr.io/knnlabs/conduit-admin` (linux/amd64)" >> $GITHUB_STEP_SUMMARY
4 changes: 2 additions & 2 deletions .github/workflows/archive-2024-08/release-orchestration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ jobs:
EOF

if [[ "${{ steps.parse.outputs.release_docker }}" == "true" ]]; then
echo "- ✅ Docker Images (WebUI, HTTP API, Admin API)" >> release-notes.md
echo "- ✅ Docker Images (WebAdmin, HTTP API, Admin API)" >> release-notes.md
fi

echo "- ℹ️ NPM SDKs: Published separately via automated workflow" >> release-notes.md
Expand All @@ -142,7 +142,7 @@ jobs:

### Docker
\`\`\`bash
docker pull ghcr.io/knnlabs/conduit-webui:v$VERSION
docker pull ghcr.io/knnlabs/conduit-webadmin:v$VERSION
docker pull ghcr.io/knnlabs/conduit-http:v$VERSION
docker pull ghcr.io/knnlabs/conduit-admin:v$VERSION
\`\`\`
Expand Down
75 changes: 57 additions & 18 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ on:

env:
REGISTRY: ghcr.io
DOTNET_VERSION: '9.0.x'
NODE_VERSION: '20'
DOTNET_VERSION: '10.0.x'
NODE_VERSION: '22'

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
Expand All @@ -20,6 +20,29 @@ jobs:
validate:
name: Validate
runs-on: ubuntu-latest
services:
postgres:
image: postgres:16
ports:
- 5432:5432
env:
POSTGRES_USER: conduit
POSTGRES_PASSWORD: conduitpass
POSTGRES_DB: conduitdb
options: >-
--health-cmd "pg_isready -U conduit -d conduitdb"
--health-interval 10s
--health-timeout 5s
--health-retries 5
redis:
image: redis:7-alpine
ports:
- 6379:6379
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- uses: actions/checkout@v4

Expand All @@ -38,31 +61,32 @@ jobs:
SDKs/Node/Admin/package-lock.json
SDKs/Node/Core/package-lock.json
SDKs/Node/Common/package-lock.json
ConduitLLM.WebUI/package-lock.json
WebAdmin/package-lock.json

- name: Validate PostgreSQL migrations
run: ./scripts/migrations/validate-postgresql-syntax.sh

- name: .NET Build & Test
run: |
dotnet restore
dotnet build --no-restore
# Run tests but exclude integration tests and timing-sensitive tests
dotnet test --no-build --verbosity normal --filter "FullyQualifiedName!~IntegrationTests&Category!=TimingSensitive"
env:
TEST_REDIS_CONNECTION: localhost:6379
DATABASE_URL: postgresql://conduit:conduitpass@localhost:5432/conduitdb

- name: NPM Build
run: |
cd SDKs/Node
npm ci
npm run build
npm test -- --silent
npm run test:ci

- name: WebUI Type Check
- name: WebAdmin Lint & Type Check
run: |
cd ConduitLLM.WebUI
cd WebAdmin
npm ci
# Clean any stale .next directory before type checking
rm -rf .next
npm run lint
npm run type-check

# Build Docker images (push only from master)
Expand All @@ -76,15 +100,15 @@ jobs:
strategy:
matrix:
include:
- service: webui
- service: webadmin
context: .
dockerfile: ConduitLLM.WebUI/Dockerfile
dockerfile: WebAdmin/Dockerfile
- service: http
context: .
dockerfile: ConduitLLM.Http/Dockerfile
dockerfile: Services/ConduitLLM.Gateway/Dockerfile
- service: admin
context: .
dockerfile: ConduitLLM.Admin/Dockerfile
dockerfile: Services/ConduitLLM.Admin/Dockerfile

steps:
- uses: actions/checkout@v4
Expand Down Expand Up @@ -150,10 +174,25 @@ jobs:
npm ci
npm run build

# Publish with 'next' tag for continuous releases from master
# Fail fast if any publish fails
cd Common && npm publish --tag next --access public
cd ../Admin && npm publish --tag next --access public
cd ../Core && npm publish --tag next --access public
# Generate unique timestamp suffix for continuous releases
TIMESTAMP=$(date +%s)

# Update version and publish Common first (others depend on it)
cd Common
CURRENT_VERSION=$(node -p "require('./package.json').version")
npm version "${CURRENT_VERSION}-next.${TIMESTAMP}" --no-git-tag-version
npm publish --tag next --access public

# Update version and publish Admin
cd ../Admin
CURRENT_VERSION=$(node -p "require('./package.json').version")
npm version "${CURRENT_VERSION}-next.${TIMESTAMP}" --no-git-tag-version
npm publish --tag next --access public

# Update version and publish Core
cd ../Core
CURRENT_VERSION=$(node -p "require('./package.json').version")
npm version "${CURRENT_VERSION}-next.${TIMESTAMP}" --no-git-tag-version
npm publish --tag next --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
Loading
Loading