Files
AI-Writie-Assistant/main.go
T
2026-04-07 17:35:09 +08:00

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)
}
}