2026-05-05 11:23:04 +08:00
|
|
|
package main
|
|
|
|
|
|
|
|
|
|
import (
|
2026-05-05 11:37:19 +08:00
|
|
|
"context"
|
2026-05-05 11:23:04 +08:00
|
|
|
"log"
|
|
|
|
|
|
|
|
|
|
"eino-test/config"
|
2026-05-05 11:37:19 +08:00
|
|
|
"eino-test/internal/agent"
|
|
|
|
|
"eino-test/internal/api"
|
|
|
|
|
"eino-test/internal/embedding"
|
|
|
|
|
"eino-test/internal/index"
|
|
|
|
|
"eino-test/internal/rag"
|
2026-05-05 11:23:04 +08:00
|
|
|
"eino-test/internal/store"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
|
cfg := config.Load()
|
2026-05-05 11:37:19 +08:00
|
|
|
ctx := context.Background()
|
|
|
|
|
|
2026-05-05 11:23:04 +08:00
|
|
|
noteStore := store.NewMemoryNoteStore()
|
2026-05-05 11:37:19 +08:00
|
|
|
embedder, err := embedding.NewEmbedder(ctx, cfg.OpenAIAPIKey, cfg.OpenAIBaseURL, cfg.OpenAIEmbedModel)
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Fatalf("Failed to create embedder: %v", err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
vectorIdx := index.NewInMemoryVectorIndex()
|
|
|
|
|
pipeline := rag.NewRAGPipeline(noteStore, embedder, vectorIdx)
|
|
|
|
|
|
|
|
|
|
if err := pipeline.IndexAllFromDir(ctx, cfg.DataDir); err != nil {
|
|
|
|
|
log.Printf("Warning: failed to index notes: %v", err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
supervisorAgent, err := agent.NewSupervisorAgent(ctx, cfg, pipeline)
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Fatalf("Failed to create supervisor agent: %v", err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
router := api.NewRouter(cfg, pipeline, supervisorAgent)
|
2026-05-05 11:23:04 +08:00
|
|
|
|
2026-05-05 11:37:19 +08:00
|
|
|
log.Printf("Server starting on port %s", cfg.Port)
|
|
|
|
|
if err := router.Run(":" + cfg.Port); err != nil {
|
|
|
|
|
log.Fatalf("Failed to start server: %v", err)
|
|
|
|
|
}
|
2026-05-05 11:23:04 +08:00
|
|
|
}
|