76 lines
1.9 KiB
Go
76 lines
1.9 KiB
Go
package main
|
|
|
|
import (
|
|
"embed"
|
|
_ "embed"
|
|
"log"
|
|
"log/slog"
|
|
|
|
"engimind/internal/chat"
|
|
"engimind/internal/config"
|
|
"engimind/internal/parser"
|
|
"engimind/internal/project"
|
|
"engimind/internal/vector"
|
|
|
|
"github.com/wailsapp/wails/v3/pkg/application"
|
|
)
|
|
|
|
//go:embed all:frontend/dist
|
|
var assets embed.FS
|
|
|
|
func main() {
|
|
// --- Initialize services ---
|
|
configSvc := config.NewConfigService()
|
|
if err := configSvc.Init(); err != nil {
|
|
log.Fatalf("failed to init config: %v", err)
|
|
}
|
|
|
|
projectSvc := project.NewProjectService()
|
|
projectSvc.SetGlobalDB(configSvc.GetDB())
|
|
|
|
parseSvc := parser.NewParseService()
|
|
embeddingSvc := vector.NewEmbeddingService()
|
|
|
|
ragSvc := vector.NewRAGService(embeddingSvc, nil) // RAG store is dynamically initialized later when used
|
|
chatSvc := chat.NewChatService(configSvc, projectSvc, ragSvc)
|
|
|
|
_ = parseSvc // Used for file import
|
|
|
|
slog.Info("EngiMind services initialized")
|
|
|
|
// --- Create Wails app ---
|
|
app := application.New(application.Options{
|
|
Name: "EngiMind",
|
|
Description: "Engineering AI Collaboration Space",
|
|
Services: []application.Service{
|
|
application.NewService(configSvc),
|
|
application.NewService(projectSvc),
|
|
application.NewService(parseSvc),
|
|
application.NewService(chatSvc),
|
|
},
|
|
Assets: application.AssetOptions{
|
|
Handler: application.AssetFileServerFS(assets),
|
|
},
|
|
Mac: application.MacOptions{
|
|
ApplicationShouldTerminateAfterLastWindowClosed: true,
|
|
},
|
|
})
|
|
|
|
app.Window.NewWithOptions(application.WebviewWindowOptions{
|
|
Title: "EngiMind — 工程 AI 协作空间",
|
|
Width: 1600,
|
|
Height: 960,
|
|
Mac: application.MacWindow{
|
|
InvisibleTitleBarHeight: 50,
|
|
Backdrop: application.MacBackdropTranslucent,
|
|
TitleBar: application.MacTitleBarHiddenInset,
|
|
},
|
|
BackgroundColour: application.NewRGB(255, 255, 255),
|
|
URL: "/",
|
|
})
|
|
|
|
if err := app.Run(); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|