@@ -671,11 +671,27 @@ func protoToSession(s proto.Session) session.Session {
671671 PromptTokens: s.PromptTokens,
672672 CompletionTokens: s.CompletionTokens,
673673 Cost: s.Cost,
674+ Todos: protoToTodos(s.Todos),
674675 CreatedAt: s.CreatedAt,
675676 UpdatedAt: s.UpdatedAt,
676677 }
677678}
678679
680+func protoToTodos(todos []proto.Todo) []session.Todo {
681+ if len(todos) == 0 {
682+ return nil
683+ }
684+ out := make([]session.Todo, len(todos))
685+ for i, t := range todos {
686+ out[i] = session.Todo{
687+ Content: t.Content,
688+ Status: session.TodoStatus(t.Status),
689+ ActiveForm: t.ActiveForm,
690+ }
691+ }
692+ return out
693+}
694+
679695func protoToFile(f proto.File) history.File {
680696 return history.File{
681697 ID: f.ID,
@@ -770,7 +786,23 @@ func sessionToProto(s session.Session) proto.Session {
770786 PromptTokens: s.PromptTokens,
771787 CompletionTokens: s.CompletionTokens,
772788 Cost: s.Cost,
789+ Todos: todosToProto(s.Todos),
773790 CreatedAt: s.CreatedAt,
774791 UpdatedAt: s.UpdatedAt,
775792 }
776793}
794+
795+func todosToProto(todos []session.Todo) []proto.Todo {
796+ if len(todos) == 0 {
797+ return nil
798+ }
799+ out := make([]proto.Todo, len(todos))
800+ for i, t := range todos {
801+ out[i] = proto.Todo{
802+ Content: t.Content,
803+ Status: string(t.Status),
804+ ActiveForm: t.ActiveForm,
805+ }
806+ }
807+ return out
808+}