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
+56
View File
@@ -0,0 +1,56 @@
package system_setting
import "github.com/QuantumNous/new-api/common"
const (
DefaultTaskArtifactInvalidRateLimitPerMinute = 60
DefaultTaskArtifactGlobalConcurrency = 128
DefaultTaskArtifactIPConcurrency = 64
DefaultTaskArtifactObjectConcurrency = 16
)
const (
TaskArtifactInvalidRateLimitEnv = "TASK_ARTIFACT_INVALID_RATE_LIMIT_PER_MINUTE"
TaskArtifactGlobalLimitEnv = "TASK_ARTIFACT_GLOBAL_CONCURRENCY"
TaskArtifactIPLimitEnv = "TASK_ARTIFACT_IP_CONCURRENCY"
TaskArtifactObjectLimitEnv = "TASK_ARTIFACT_OBJECT_CONCURRENCY"
)
type TaskArtifactAccessLimits struct {
InvalidRatePerMinute int
GlobalConcurrency int
IPConcurrency int
ObjectConcurrency int
}
func positiveTaskArtifactLimit(env string, defaultValue int) int {
value := common.GetEnvOrDefault(env, defaultValue)
if value <= 0 {
common.SysError(env + " must be positive; using default")
return defaultValue
}
return value
}
// LoadTaskArtifactAccessLimits reads startup configuration. Invalid and
// non-positive values safely fall back to the documented defaults.
func LoadTaskArtifactAccessLimits() TaskArtifactAccessLimits {
return TaskArtifactAccessLimits{
InvalidRatePerMinute: positiveTaskArtifactLimit(
TaskArtifactInvalidRateLimitEnv,
DefaultTaskArtifactInvalidRateLimitPerMinute,
),
GlobalConcurrency: positiveTaskArtifactLimit(
TaskArtifactGlobalLimitEnv,
DefaultTaskArtifactGlobalConcurrency,
),
IPConcurrency: positiveTaskArtifactLimit(
TaskArtifactIPLimitEnv,
DefaultTaskArtifactIPConcurrency,
),
ObjectConcurrency: positiveTaskArtifactLimit(
TaskArtifactObjectLimitEnv,
DefaultTaskArtifactObjectConcurrency,
),
}
}