Files
sproutclaw-web/backend/internal/handlers/terminal.go
shumengya 33717d742b feat: 增强聊天 UI 与终端配置
- 重构消息列表、思考块与工具调用块样式
- ChatContext 支持 agent 分段与 markdown 渲染优化
- 后端增加 PI 命令配置与 Web 终端改进
- 新增 run-backend.sh 启动脚本,忽略 backend/dist 构建产物
2026-06-26 13:21:15 +08:00

45 lines
1.0 KiB
Go

package handlers
import (
"net/http"
"runtime"
"github.com/gin-gonic/gin"
"github.com/gorilla/websocket"
"sproutclaw-web/internal/config"
"sproutclaw-web/internal/services"
)
var terminalUpgrader = websocket.Upgrader{
CheckOrigin: func(r *http.Request) bool { return true },
}
// RegisterTerminal registers web terminal routes.
func RegisterTerminal(r *gin.RouterGroup, cfg *config.Config) {
r.GET("/terminal", handleTerminalInfo(cfg))
r.GET("/terminal/ws", handleTerminalWS(cfg))
}
func handleTerminalInfo(cfg *config.Config) gin.HandlerFunc {
return func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"repoRoot": cfg.RepoRoot,
"platform": runtime.GOOS,
})
}
}
func handleTerminalWS(cfg *config.Config) gin.HandlerFunc {
return func(c *gin.Context) {
conn, err := terminalUpgrader.Upgrade(c.Writer, c.Request, nil)
if err != nil {
return
}
defer conn.Close()
if err := services.ServeWebTerminal(conn, cfg.RepoRoot, cfg.AgentDir); err != nil {
_ = conn.WriteJSON(gin.H{"type": "error", "error": err.Error()})
}
}
}