59 lines
2.1 KiB
Go
59 lines
2.1 KiB
Go
// Package link 把 extension.Main 接到产品组合根。
|
|
// 下游自有二进制空白导入本包;基座 internal 不反向依赖它。
|
|
package link
|
|
|
|
import (
|
|
"os"
|
|
|
|
"agent-system-backend/internal/app"
|
|
"agent-system-backend/internal/config"
|
|
"agent-system-backend/pkg/extension"
|
|
)
|
|
|
|
func init() {
|
|
extension.SetRunner(func(opt extension.Options) error {
|
|
appOpt, err := runOptions(opt)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return app.Run(appOpt)
|
|
})
|
|
}
|
|
|
|
// runOptions 在 appOptions 基础上补齐超级管理员凭据,与 cmd/agent-system 同源:
|
|
// 进程环境优先,未设置的键从 AGENT_SYSTEM_ENV_FILE 指向的受保护 dotenv 补齐。
|
|
func runOptions(opt extension.Options) (app.Options, error) {
|
|
appOpt := appOptions(opt)
|
|
authEnabled := config.Resolved{Config: config.Config{AuthMode: opt.AuthMode, StorageDSN: opt.StorageDSN}}.AuthEnabled()
|
|
superAdmin, err := config.LoadSuperAdmin(os.LookupEnv, "", authEnabled)
|
|
if err != nil {
|
|
return app.Options{}, err
|
|
}
|
|
appOpt.SuperAdmin = superAdmin
|
|
return appOpt, nil
|
|
}
|
|
|
|
// appOptions 把产品启动参数映射到基座。执行环境三项产品旗标留空时读环境变量,
|
|
// 与 cmd/agent-system 的 config 键一致,这样 svc 注入环境即可,不必改产品 main。
|
|
func appOptions(opt extension.Options) app.Options {
|
|
return app.Options{
|
|
Addr: opt.Addr, DataDir: opt.DataDir, PluginsDir: opt.PluginsDir, ForceMock: opt.Mock,
|
|
StorageDSN: opt.StorageDSN, ArtifactsDir: opt.ArtifactsDir, AuthMode: opt.AuthMode,
|
|
RequireProjectContext: opt.RequireProjectContext,
|
|
DisableUploadIndexing: opt.DisableUploadIndexing,
|
|
DisableConvCardMirror: opt.DisableConvCardMirror,
|
|
DisableExecTools: opt.DisableExecTools,
|
|
ExecBackend: opt.ExecBackend,
|
|
ExecDepsDir: firstSet(opt.ExecDepsDir, os.Getenv("AGENT_SYSTEM_EXEC_DEPS_DIR")),
|
|
ExecWorkspace: firstSet(opt.ExecWorkspace, os.Getenv("AGENT_SYSTEM_EXEC_WORKSPACE")),
|
|
ExecEnvRoot: firstSet(opt.ExecEnvRoot, os.Getenv("AGENT_SYSTEM_EXEC_ENV_ROOT")),
|
|
}
|
|
}
|
|
|
|
func firstSet(explicit, fromEnv string) string {
|
|
if explicit != "" {
|
|
return explicit
|
|
}
|
|
return fromEnv
|
|
}
|