package main import ( "fmt" "log" "go.temporal.io/sdk/client" "go.temporal.io/sdk/worker" "github.com/rockliang/poimen/workflows/action" "github.com/rockliang/poimen/workflows/internal/config" "github.com/rockliang/poimen/workflows/statemachine" ) func main() { // Load configuration cfg, err := config.LoadConfig() if err != nil { log.Fatalf("failed to load config: %v", err) } // Connect to Temporal c, err := client.Dial(client.Options{ HostPort: cfg.Temporal.HostPort, Namespace: cfg.Temporal.Namespace, }) if err != nil { log.Fatalf("failed to connect to temporal: %v", err) } defer c.Close() // Create worker w := worker.New(c, "default", worker.Options{}) if w == nil { log.Fatalf("failed to create worker") } // Register all workflows w.RegisterWorkflow(statemachine.OrchestratorWorkflow) w.RegisterWorkflow(statemachine.TaskUnitWorkflow) // Register all activities w.RegisterActivity(action.CloneRepoActivity) w.RegisterActivity(action.GitWorktreeAddActivity) w.RegisterActivity(action.GitCommitActivity) w.RegisterActivity(action.GitPushActivity) w.RegisterActivity(action.GitSquashMergeActivity) w.RegisterActivity(action.GitDiffActivity) w.RegisterActivity(action.PrepareSkillsActivity) w.RegisterActivity(action.PlanningActivity) w.RegisterActivity(action.ImplementerActivity) w.RegisterActivity(action.JudgeActivity) // Integration and lessons activities - register when fully tested // w.RegisterActivity(action.RunIntegrationTestActivity) // w.RegisterActivity(action.UpdateLessonsActivity) // w.RegisterActivity(action.ReadLessonsActivity) // Run worker fmt.Println("Starting worker on queue 'default'...") if err := w.Run(worker.InterruptCh()); err != nil { log.Fatalf("worker failed: %v", err) } }