Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
349f247
Sync specific file from GitLab to GitHub
QinYuuuu Nov 7, 2025
59d0997
Sync files from GitLab commit 0cf2834dc612020961ce52a1696d641c70c4d04…
QinYuuuu Nov 7, 2025
23e1d26
Sync files from GitLab commit 0cf2834dc612020961ce52a1696d641c70c4d04…
QinYuuuu Nov 7, 2025
9cc32f5
Sync files from GitLab commit 0cf2834dc612020961ce52a1696d641c70c4d04…
QinYuuuu Nov 7, 2025
a1de4f6
Sync files from GitLab commit 0cf2834dc612020961ce52a1696d641c70c4d04…
QinYuuuu Nov 7, 2025
0071ef3
Sync files from GitLab commit 0cf2834dc612020961ce52a1696d641c70c4d04…
QinYuuuu Nov 7, 2025
6da9241
Sync files from GitLab commit 0cf2834dc612020961ce52a1696d641c70c4d04…
QinYuuuu Nov 7, 2025
486270e
Sync files from GitLab commit 0cf2834dc612020961ce52a1696d641c70c4d04…
QinYuuuu Nov 7, 2025
324f411
Sync files from GitLab commit 0cf2834dc612020961ce52a1696d641c70c4d04…
QinYuuuu Nov 7, 2025
c6d941b
Sync files from GitLab commit 0cf2834dc612020961ce52a1696d641c70c4d04…
QinYuuuu Nov 7, 2025
ba54f77
Sync builder/store/database/user.go from GitLab project 44 commit f5f…
QinYuuuu Nov 7, 2025
7ad37ea
Sync api/handler/agent.go from GitLab commit 08e5cd32a7a799cc7f1ed853…
QinYuuuu Nov 7, 2025
08c2703
Sync files from GitLab commit edc0d674da71282f3ee70ba9f58080e9a4098ca…
QinYuuuu Nov 7, 2025
71d96bf
Sync files from GitLab commit edc0d674da71282f3ee70ba9f58080e9a4098ca…
QinYuuuu Nov 7, 2025
f1dc42d
Sync files from GitLab commit edc0d674da71282f3ee70ba9f58080e9a4098ca…
QinYuuuu Nov 7, 2025
9b8e019
Sync files from GitLab commit edc0d674da71282f3ee70ba9f58080e9a4098ca…
QinYuuuu Nov 7, 2025
3c7a5b8
Sync files from GitLab commit edc0d674da71282f3ee70ba9f58080e9a4098ca…
QinYuuuu Nov 7, 2025
381e4f2
Sync files from GitLab commit edc0d674da71282f3ee70ba9f58080e9a4098ca…
QinYuuuu Nov 7, 2025
79b722f
Sync specified files from GitLab project 44 at commit ed4edda6e278350…
QinYuuuu Nov 7, 2025
2957ea7
Sync specified files from GitLab project 44 at commit ed4edda6e278350…
QinYuuuu Nov 7, 2025
5b5aa21
Sync specified files from GitLab project 44 at commit ed4edda6e278350…
QinYuuuu Nov 7, 2025
7ced66a
Sync specified files from GitLab project 44 commit 026ae7f6e9caf6e2fe…
QinYuuuu Nov 7, 2025
e9cb35c
Sync specified files from GitLab project 44 commit 026ae7f6e9caf6e2fe…
QinYuuuu Nov 7, 2025
4e085c2
Sync selected files from GitLab commit 7ce45109a7c16ddfaeb4f76e7e7a2d…
QinYuuuu Nov 7, 2025
a450615
Sync selected files from GitLab commit 7ce45109a7c16ddfaeb4f76e7e7a2d…
QinYuuuu Nov 7, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 24 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,26 +1,46 @@
# Binaries
bin

.vscode
.zed
.idea
.trae

.DS_Store
.envrc
.idea/

.codesouler
/gitea
/pgdata
minio_data
local_only
/jetstream
.env
*.sh
memory
docker-compose-leida.yml
run_account_local.sh
run_callback_local.sh
run_deploy_runner_local.sh
run_rproxy_local.sh
run_server_local.sh
run_user_local.sh
run_aigateway_local.sh
run_server_my_local.sh
run_payment_local.sh
cmd/csghub-server/__debug_*
run_dataviewer_local.sh
run_notification_local.sh
local.toml
loki-config.yml

.data
/data
*/*/_api_test/
redis/dump.rdb
run_server_local.sh

**/loki-data/
**/tempo-data/
docs/swagger.json
docs/swagger.yaml
docs/docs.go
pgdata15/

42 changes: 31 additions & 11 deletions aigateway/router/aigateway.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ package router
import (
"fmt"

"opencsg.com/csghub-server/builder/instrumentation"

"github.com/gin-contrib/cors"
"github.com/gin-gonic/gin"
"opencsg.com/csghub-server/aigateway/handler"
"opencsg.com/csghub-server/api/middleware"
Expand All @@ -11,36 +14,53 @@ import (

func NewRouter(config *config.Config) (*gin.Engine, error) {
r := gin.New()
r.Use(gin.Recovery())
r.Use(middleware.Log(config))
middleware.SetInfraMiddleware(r, config, instrumentation.Aigateway)
r.Use(cors.New(cors.Config{
AllowCredentials: true,
AllowHeaders: []string{"*"},
AllowMethods: []string{"*"},
AllowAllOrigins: true,
}))
//to access model,fintune with any kind of tokens in auth header
r.Use(middleware.Authenticator(config))
mustLogin := middleware.MustLogin()
middlewareCollection := middleware.MiddlewareCollection{}
middlewareCollection.Auth.NeedLogin = middleware.MustLogin()
middlewareCollection.Auth.NeedPhoneVerified = middleware.NeedPhoneVerified(config)

v1Group := r.Group("/v1")

openAIhandler, err := handler.NewOpenAIHandlerFromConfig(config)
if err != nil {
return nil, fmt.Errorf("error creating openai handler :%w", err)
}
v1Group.GET("/models", mustLogin, openAIhandler.ListModels)
v1Group.GET("/models/:model", mustLogin, openAIhandler.GetModel)
v1Group.POST("/chat/completions", mustLogin, openAIhandler.Chat)
v1Group.POST("/embeddings", mustLogin, openAIhandler.Embedding)
v1Group.GET("/models", middlewareCollection.Auth.NeedLogin, openAIhandler.ListModels)
v1Group.GET("/models/:model", middlewareCollection.Auth.NeedLogin, openAIhandler.GetModel)
v1Group.POST("/chat/completions", middlewareCollection.Auth.NeedLogin, openAIhandler.Chat)
v1Group.POST("/embeddings", middlewareCollection.Auth.NeedLogin, openAIhandler.Embedding)

mcpProxy, err := handler.NewMCPProxyHandler(config)
if err != nil {
return nil, fmt.Errorf("error creating mcp proxy handler :%w", err)
}
CreateMCPRoute(v1Group, mcpProxy)
createMCPRoute(v1Group, mcpProxy)

agentProxy, err := handler.NewAgentProxyHandler(config)
if err != nil {
return nil, fmt.Errorf("error creating agent proxy handler :%w", err)
}
createAgentRoute(v1Group, agentProxy, middlewareCollection)
return r, nil
}

func CreateMCPRoute(v1Group *gin.RouterGroup, mcpProxy handler.MCPProxyHandler) {
func createMCPRoute(v1Group *gin.RouterGroup, mcpProxy handler.MCPProxyHandler) {
mcpGroup := v1Group.Group("mcp")
mcpGroup.GET("/servers", mcpProxy.List)

// todo: enable mcp server proxy later
// mcpGroup.GET("/:servicename/sse", mcpProxy.ProxyToApi("/sse"))
// mcpGroup.Any("/:servicename/messages/", mcpProxy.ProxyToApi("/messages/"))
mcpGroup.Any("/:servicename/*any", mcpProxy.ProxyToApi(""))
}

func createAgentRoute(v1Group *gin.RouterGroup, agentProxy handler.AgentProxyHandler, middlewareCollection middleware.MiddlewareCollection) {
agentGroup := v1Group.Group("/agent", middlewareCollection.Auth.NeedPhoneVerified)
agentGroup.Any("/:type/*any", agentProxy.ProxyToApi("/api/v1%s", "any"))
}
Loading
Loading