feat(task): replace built-in task adaptors with a sandboxed JS plugin system (#7076)

This commit is contained in:
Calcium-Ion
2026-08-29 18:51:57 +08:00
committed by GitHub
parent 7037ac15bd
commit eb48396d5f
336 changed files with 52333 additions and 6369 deletions
+20 -1
View File
@@ -3,6 +3,7 @@ package router
import (
"github.com/QuantumNous/new-api/controller"
"github.com/QuantumNous/new-api/middleware"
"github.com/QuantumNous/new-api/service/authz"
// Import oauth package to register providers via init()
_ "github.com/QuantumNous/new-api/oauth"
@@ -231,6 +232,23 @@ func SetApiRouter(router *gin.Engine) {
ratioSyncRoute.GET("/channels", controller.GetSyncableChannels)
ratioSyncRoute.POST("/fetch", controller.FetchUpstreamRatios)
}
taskPluginRoute := apiRouter.Group("/plugin/task")
taskPluginRoute.Use(middleware.RootAuth())
{
taskPluginRoute.GET("", controller.ListTaskPlugins)
taskPluginRoute.POST("", controller.UploadTaskPlugin)
taskPluginRoute.PUT("", controller.UploadTaskPlugin)
taskPluginRoute.GET("/runtime/status", controller.GetTaskPluginRuntime)
taskPluginRoute.GET("/marketplace/sources", controller.GetTaskPluginMarketplaceSources)
taskPluginRoute.PUT("/marketplace/sources", controller.UpdateTaskPluginMarketplaceSources)
taskPluginRoute.GET("/:key", controller.GetTaskPlugin)
taskPluginRoute.GET("/:key/versions", controller.GetTaskPluginVersions)
taskPluginRoute.POST("/:key/activate", controller.ActivateTaskPlugin)
taskPluginRoute.POST("/:key/status", controller.SetTaskPluginStatus)
taskPluginRoute.POST("/:key/dryrun", controller.DryRunTaskPlugin)
taskPluginRoute.DELETE("/:key/versions/:version", controller.DeleteTaskPluginVersion)
}
apiRouter.GET("/task_plugin_options", middleware.AdminAuth(), middleware.RequirePermission(authz.TaskPluginBind), controller.GetTaskPluginOptions)
registerChannelRoutes(apiRouter)
registerAuthzRoutes(apiRouter)
tokenRoute := apiRouter.Group("/token")
@@ -327,7 +345,8 @@ func SetApiRouter(router *gin.Engine) {
taskRoute := apiRouter.Group("/task")
{
taskRoute.GET("/self", middleware.UserAuth(), controller.GetUserTask)
taskRoute.GET("/", middleware.AdminAuth(), controller.GetAllTask)
taskRoute.GET("", middleware.AdminAuth(), controller.GetAllTask)
taskRoute.GET("/:task_id/artifacts", middleware.UserAuth(), controller.GetDashboardTaskArtifacts)
}
vendorRoute := apiRouter.Group("/vendors")