You've already forked agentic-coding-workflow
TTY
This commit is contained in:
@@ -44,6 +44,7 @@ type Config struct {
|
||||
Acp AcpConfig `mapstructure:"acp"`
|
||||
MCP MCPConfig `mapstructure:"mcp"`
|
||||
Run RunConfig `mapstructure:"run"`
|
||||
Terminal TerminalConfig `mapstructure:"terminal"`
|
||||
}
|
||||
|
||||
// HTTPConfig 描述 HTTP 服务监听参数。
|
||||
@@ -215,6 +216,18 @@ type RunConfig struct {
|
||||
EnvWhitelist []string `mapstructure:"env_whitelist"`
|
||||
}
|
||||
|
||||
// TerminalConfig 控制仅限管理员的网页端终端模块:开关、启动的 shell、并发会话上限、
|
||||
// 整组终止宽限,以及透传给 shell 的宿主环境变量白名单(沿用 RunConfig 的安全取舍)。
|
||||
type TerminalConfig struct {
|
||||
Enabled bool `mapstructure:"enabled"`
|
||||
Shell string `mapstructure:"shell"`
|
||||
MaxSessions int `mapstructure:"max_sessions"`
|
||||
KillGrace time.Duration `mapstructure:"kill_grace"`
|
||||
// EnvWhitelist 是允许透传给交互式 shell 的环境变量名白名单。
|
||||
// APP_MASTER_KEY、DB DSN、git 凭据等敏感变量绝不应出现在此名单中。
|
||||
EnvWhitelist []string `mapstructure:"env_whitelist"`
|
||||
}
|
||||
|
||||
// MCPConfig 控制 MCP 模块的开关、对外 URL(注入 ACP 子进程 env)、system token TTL 与速率限制。
|
||||
type MCPConfig struct {
|
||||
Enabled bool `mapstructure:"enabled"`
|
||||
@@ -311,6 +324,18 @@ func Load(configFile string) (*Config, error) {
|
||||
"SystemRoot", "TEMP", "TMP", "USERPROFILE", "APPDATA", "LOCALAPPDATA",
|
||||
"PATHEXT", "ComSpec", "NUMBER_OF_PROCESSORS",
|
||||
})
|
||||
v.SetDefault("terminal.enabled", true)
|
||||
v.SetDefault("terminal.shell", "/bin/bash") // Windows 开发环境经 APP_TERMINAL_SHELL 覆盖
|
||||
v.SetDefault("terminal.max_sessions", 5)
|
||||
v.SetDefault("terminal.kill_grace", "5s")
|
||||
// 透传 PATH/HOME/TERM + npm 全局安装所需(NPM_CONFIG_PREFIX 指向持久卷),
|
||||
// 以便容器内 `npm i -g <acp-cli>` 可用。敏感变量不在名单内。
|
||||
v.SetDefault("terminal.env_whitelist", []string{
|
||||
"PATH", "HOME", "LANG", "LC_ALL", "TZ", "USER", "SHELL", "TERM",
|
||||
"NPM_CONFIG_PREFIX", "NODE_PATH", "NODE_ENV",
|
||||
"SystemRoot", "TEMP", "TMP", "USERPROFILE", "APPDATA", "LOCALAPPDATA",
|
||||
"PATHEXT", "ComSpec", "NUMBER_OF_PROCESSORS",
|
||||
})
|
||||
|
||||
if configFile != "" {
|
||||
v.SetConfigFile(configFile)
|
||||
|
||||
Reference in New Issue
Block a user