package main import ( "fmt" "github.com/flosch/pongo2" "github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2/middleware/logger" "github.com/gofiber/template/django/v3" ) var userTmpl *pongo2.Template var botTmpl *pongo2.Template var selectBtnTmpl *pongo2.Template var sseChanel *FiberSSEChannel func main() { botTmpl = pongo2.Must(pongo2.FromFile("views/partials/message-bot.html")) userTmpl = pongo2.Must(pongo2.FromFile("views/partials/message-user.html")) selectBtnTmpl = pongo2.Must(pongo2.FromFile("views/partials/model-selection-btn.html")) // Import HTML using django engine/template engine := django.New("./views", ".html") // Create new Fiber instance. Can use any framework. I use fiber for speed and simplicity app := fiber.New(fiber.Config{ Views: engine, AppName: "JADE 2.0", EnablePrintRoutes: true, }) sse := NewSSE(app, "/sse") sseChanel = sse.CreateChannel("sse", "") // Add default logger app.Use(logger.New()) // Add static files app.Static("/", "./static") // Main routes app.Get("/", ChatPageHandler) app.Get("/loadChat", LoadChatHandler) // Chat routes app.Post("/deleteMessage", DeleteMessageHandler) app.Get("/generatePlaceholder", GeneratePlaceholderHandler) app.Get("/generateMultipleMessages", GenerateMultipleMessagesHandler) app.Get("/messageContent", GetMessageContentHandler) app.Get("/editMessageForm", GetEditMessageFormHandler) app.Post("/redoMessage", RedoMessageHandler) app.Post("/clearChat", ClearChatHandler) // Settings routes app.Post("/addKeys", addKeys) // Popovers app.Get("/loadModelSelection", LoadModelSelectionHandler) app.Get("/loadUsageKPI", LoadUsageKPIHandler) app.Get("/loadKeys", LoadKeysHandler) app.Get("/loadSettings", LoadSettingsHandler) // Authentication app.Get("/signin", handleUiSignIn) app.Get("/signout", handleSignOut) app.Get("/callback", handleCallback) app.Get("/callbackSignup", handleCallbackSignup) app.Get("/test", func(c *fiber.Ctx) error { fmt.Println("Hello from test") return c.SendString("") }) app.Get("/empty", func(c *fiber.Ctx) error { return c.SendString("") }) // Start server app.Listen(":8080") } func addKeys(c *fiber.Ctx) error { openaiKey := c.FormValue("openai_key") anthropicKey := c.FormValue("anthropic_key") mistralKey := c.FormValue("mistral_key") groqKey := c.FormValue("groq_key") var Exists bool // Handle OpenAI key if openaiKey != "" { // Check if the OpenAI key already exists err := edgeClient.QuerySingle(edgeCtx, ` select exists ( select global currentUser.setting.keys filter .company.name = "openai" AND .key = $0 ); `, &Exists, openaiKey) if err != nil { fmt.Println("Error in edgedb.QuerySingle: in addOpenaiKey: ", err) return c.SendString("") } if Exists { fmt.Println("OpenAI key already exists") return c.SendString("") } if !TestOpenaiKey(openaiKey) { fmt.Println("Invalid OpenAI API Key") return c.SendString("Invalid OpenAI API Key\n") } // Check if the company key already exists err = edgeClient.QuerySingle(edgeCtx, ` select exists ( select global currentUser.setting.keys filter .company.name = "openai" ); `, &Exists) if err != nil { fmt.Println("Error in edgedb.QuerySingle: in addOpenaiKey") fmt.Println(err) } if Exists { fmt.Println("Company key already exists") err = edgeClient.Execute(edgeCtx, ` UPDATE Key filter .company.name = $0 AND .key = $1 SET { key := $1, } `, "openai", openaiKey) if err != nil { fmt.Println("Error in edgedb.QuerySingle: in addOpenaiKey") fmt.Println(err) } } else { err = edgeClient.Execute(edgeCtx, ` UPDATE global currentUser.setting SET { keys += ( INSERT Key { company := $0, key := $1, name := $2, } ) }`, "openai", openaiKey, "OpenAI API Key") if err != nil { fmt.Println("Error in edgedb.QuerySingle: in addOpenaiKey") fmt.Println(err) } } } // Handle Anthropic key if anthropicKey != "" { // Check if the OpenAI key already exists err := edgeClient.QuerySingle(edgeCtx, ` select exists ( select global currentUser.setting.keys filter .company.name = "anthropic" AND .key = $0 ); `, &Exists, openaiKey) if err != nil { fmt.Println("Error in edgedb.QuerySingle: in addAnthropicKey: ", err) return c.SendString("") } if Exists { fmt.Println("Anthropic key already exists") return c.SendString("") } if !TestAnthropicKey(anthropicKey) { fmt.Println("Invalid Anthropic API Key") return c.SendString("Invalid Anthropic API Key\n") } // Check if the company key already exists err = edgeClient.QuerySingle(edgeCtx, ` select exists ( select global currentUser.setting.keys filter .company.name = "anthropic" ); `, &Exists) if err != nil { fmt.Println("Error in edgedb.QuerySingle: in addAnthropicKey") fmt.Println(err) } if Exists { err = edgeClient.Execute(edgeCtx, ` UPDATE Key filter .company.name = "anthropic" AND .key = $0 SET { key := $0, } `, anthropicKey) if err != nil { fmt.Println("Error in edgedb.QuerySingle: in addAnthropicKey") fmt.Println(err) } } else { err = edgeClient.Execute(edgeCtx, ` UPDATE global currentUser.setting SET { keys += ( INSERT Key { company := "anthropic", key := $0, name := "Anthropic API Key", } ) }`, anthropicKey) if err != nil { fmt.Println("Error in edgedb.QuerySingle: in addAnthropicKey") fmt.Println(err) } } } // Handle Mistral key if mistralKey != "" { // Check if the OpenAI key already exists err := edgeClient.QuerySingle(edgeCtx, ` select exists ( select global currentUser.setting.keys filter .company.name = "mistral" AND .key = $0 ); `, &Exists, openaiKey) if err != nil { fmt.Println("Error in edgedb.QuerySingle: in addMistralKey: ", err) return c.SendString("") } if Exists { fmt.Println("Mistral key already exists") return c.SendString("") } if !TestMistralKey(mistralKey) { fmt.Println("Invalid Mistral API Key") return c.SendString("Invalid Mistral API Key\n") } // Check if the company key already exists err = edgeClient.QuerySingle(edgeCtx, ` select exists ( select global currentUser.setting.keys filter .company.name = "mistral" ); `, &Exists) if err != nil { fmt.Println("Error in edgedb.QuerySingle: in addMistralKey") fmt.Println(err) } if Exists { err = edgeClient.Execute(edgeCtx, ` UPDATE Key filter .company.name = "mistral" AND .key = $0 SET { key := $0, } `, mistralKey) if err != nil { fmt.Println("Error in edgedb.QuerySingle: in addMistralKey") fmt.Println(err) } } else { err = edgeClient.Execute(edgeCtx, ` UPDATE global currentUser.setting SET { keys += ( INSERT Key { company := "mistral", key := $0, name := "Mistral API Key", } ) }`, mistralKey) if err != nil { fmt.Println("Error in edgedb.QuerySingle: in addMistralKey") fmt.Println(err) } } } // Handle Groq key if groqKey != "" { // Check if the OpenAI key already exists err := edgeClient.QuerySingle(edgeCtx, ` select exists ( select global currentUser.setting.keys filter .company.name = "groq" AND .key = $0 ); `, &Exists, openaiKey) if err != nil { fmt.Println("Error in edgedb.QuerySingle: in addGroqKey: ", err) return c.SendString("") } if Exists { fmt.Println("Groq key already exists") return c.SendString("") } if !TestGroqKey(groqKey) { fmt.Println("Invalid Groq API Key") return c.SendString("Invalid Groq API Key\n") } // Check if the company key already exists err = edgeClient.QuerySingle(edgeCtx, ` select exists ( select global currentUser.setting.keys filter .company.name = "groq" ); `, &Exists) if err != nil { fmt.Println("Error in edgedb.QuerySingle: in addGroqKey") fmt.Println(err) } if Exists { err = edgeClient.Execute(edgeCtx, ` UPDATE Key filter .company.name = "groq" AND .key = $0 SET { key := $0, } `, groqKey) if err != nil { fmt.Println("Error in edgedb.QuerySingle: in addGroqKey") fmt.Println(err) } } else { err = edgeClient.Execute(edgeCtx, ` UPDATE global currentUser.setting SET { keys += ( INSERT Key { company := "groq", key := $0, name := "Groq API Key", } ) }`, groqKey) if err != nil { fmt.Println("Error in edgedb.QuerySingle: in addGroqKey") fmt.Println(err) } } } return c.SendString("") }