package main import ( "flag" "os" "github.com/ltylab/ai-agent/internal/conf" "github.com/ltylab/ai-agent/internal/log" "github.com/ltylab/ai-agent/internal/server" "github.com/gin-gonic/gin" ) func main() { listen := flag.String("listen", conf.DefaultListen, "http listen address") agentsDir := flag.String("agents", conf.DefaultAgentsDir, "directory to store agent configurations") logLevel := flag.String("level", conf.DefaultLogLevel, "log level (dbg, inf, wrn, err)") msgLogPath := flag.String("msglog", conf.DefaultMsgLogPath, "audit log path") model := flag.String("model", conf.DefaultGoogleAIModel, "Google AI model (gemini-1.5-flash, gemini-2.0-flash-exp)") flag.Parse() server.GoogleAIKey = os.Getenv("GOOGLE_AI_KEY") if server.GoogleAIKey == "" { log.T("main").Errf("GOOGLE_AI_KEY environment variable is not set") os.Exit(1) } server.GoogleAIModel = *model log.Setup(log.LogLevel(log.ParseLogLevel(*logLevel))) log.T("main").Inff("AI-Agent version %s, %s mode (build %s)", conf.BuildVersion, conf.BuildMode, conf.BuildTime) log.T("main").Inff("%s", conf.PackageCopyright) log.SetupGin1() if conf.BuildMode == "release" { gin.SetMode(gin.ReleaseMode) } engine := gin.New() engine.Use(gin.Recovery()) log.SetupGin2(engine) server.Setup(engine, *agentsDir, *msgLogPath) log.T("main").Inff("Starting server on %s", *listen) err := engine.Run(*listen) if err != nil { log.T("main").Errf("Server error: %v", err) os.Exit(1) } }