@@ -671,11 +671,27 @@ func protoToSession(s proto.Session) session.Session {
671 PromptTokens: s.PromptTokens,
671 PromptTokens: s.PromptTokens,
672 CompletionTokens: s.CompletionTokens,
672 CompletionTokens: s.CompletionTokens,
673 Cost: s.Cost,
673 Cost: s.Cost,
674+ Todos: protoToTodos(s.Todos),
674 CreatedAt: s.CreatedAt,
675 CreatedAt: s.CreatedAt,
675 UpdatedAt: s.UpdatedAt,
676 UpdatedAt: s.UpdatedAt,
680+func protoToTodos(todos []proto.Todo) []session.Todo {
681+ if len(todos) == 0 {
684+ out := make([]session.Todo, len(todos))
685+ for i, t := range todos {
686+ out[i] = session.Todo{
688+ Status: session.TodoStatus(t.Status),
689+ ActiveForm: t.ActiveForm,
679func protoToFile(f proto.File) history.File {
695func protoToFile(f proto.File) history.File {
680 return history.File{
696 return history.File{
681 ID: f.ID,
697 ID: f.ID,
@@ -770,7 +786,23 @@ func sessionToProto(s session.Session) proto.Session {
770 PromptTokens: s.PromptTokens,
786 PromptTokens: s.PromptTokens,
771 CompletionTokens: s.CompletionTokens,
787 CompletionTokens: s.CompletionTokens,
772 Cost: s.Cost,
788 Cost: s.Cost,
789+ Todos: todosToProto(s.Todos),
773 CreatedAt: s.CreatedAt,
790 CreatedAt: s.CreatedAt,
774 UpdatedAt: s.UpdatedAt,
791 UpdatedAt: s.UpdatedAt,
795+func todosToProto(todos []session.Todo) []proto.Todo {
796+ if len(todos) == 0 {
799+ out := make([]proto.Todo, len(todos))
800+ for i, t := range todos {
801+ out[i] = proto.Todo{
803+ Status: string(t.Status),
804+ ActiveForm: t.ActiveForm,