prose.go

  1// SPDX-FileCopyrightText: Amolith <amolith@secluded.site>
  2//
  3// SPDX-License-Identifier: AGPL-3.0-or-later
  4
  5package tasks
  6
  7// CreateToolDescription describes the create_task tool for LLMs.
  8const CreateToolDescription = `Creates a new task in Lunatask.
  9WORKFLOW: First read the areas resource to identify valid area_id and goal_id values,
 10then use get_timestamp if scheduling the task. Only include optional parameters if
 11the user indicates or hints at them. Try to interpret speech-to-text input that
 12may not be entirely accurate.`
 13
 14// UpdateToolDescription describes the update_task tool for LLMs.
 15const UpdateToolDescription = `Updates an existing task. Only provided fields will be updated.
 16WORKFLOW: Read the areas resource first if changing area/goal,
 17then use get_timestamp if changing schedule. Only include parameters that are being changed.
 18Empty strings will clear existing values for text fields.`
 19
 20// DeleteToolDescription describes the delete_task tool for LLMs.
 21const DeleteToolDescription = `Permanently deletes an existing task from Lunatask.
 22This action cannot be undone.`
 23
 24// ParamTaskID describes the task_id parameter.
 25const ParamTaskID = `ID of the task to update.`
 26
 27// ParamDeleteTaskID describes the task_id parameter for delete.
 28const ParamDeleteTaskID = `ID of the task to delete.
 29This must be a valid task ID from an existing task in Lunatask.`
 30
 31// ParamAreaID describes the area_id parameter for create.
 32const ParamAreaID = `Area ID in which to create the task.
 33Must be a valid area_id from the areas resource.`
 34
 35// ParamUpdateAreaID describes the area_id parameter for update.
 36const ParamUpdateAreaID = `New Area ID for the task.
 37Must be a valid area_id from the areas resource.
 38Only include if moving the task to a different area.
 39If omitted, the task will remain in its current area.`
 40
 41// ParamGoalID describes the goal_id parameter for create.
 42const ParamGoalID = `Optional goal ID to associate the task with.
 43Must be a valid goal_id from the areas resource that belongs to the specified area.
 44Only include if the task relates to a specific goal.`
 45
 46// ParamUpdateGoalID describes the goal_id parameter for update.
 47const ParamUpdateGoalID = `New Goal ID for the task.
 48Must be a valid goal_id from the areas resource that belongs to the task's area
 49(current or new). Only include if changing the goal association.`
 50
 51// ParamName describes the name parameter.
 52const ParamName = `Plain text task name using sentence case.`
 53
 54// ParamUpdateName describes the name parameter for update.
 55const ParamUpdateName = `New plain text task name using sentence case.
 56Sending an empty string WILL clear the name.`
 57
 58// ParamNote describes the note parameter for create.
 59const ParamNote = `Additional details or notes for the task, using Markdown formatting.
 60Include any extra context, requirements, or information provided by the user
 61that doesn't fit in the task name.`
 62
 63// ParamUpdateNote describes the note parameter for update.
 64const ParamUpdateNote = `New note for the task, using Markdown formatting.
 65Sending an empty string WILL clear the existing note.
 66Only include if changing the task notes.`
 67
 68// ParamEstimate describes the estimate parameter for create.
 69const ParamEstimate = `Estimated completion time in minutes (0-720, max 12 hours).
 70Only include if user mentions a time estimate like '30 minutes' (pass 30)
 71or '2 hours' (pass 120). Omit if no estimate is provided.`
 72
 73// ParamUpdateEstimate describes the estimate parameter for update.
 74const ParamUpdateEstimate = `New estimated completion time in minutes (0-720, max 12 hours).
 75Only include if user mentions changing the time estimate.
 76Note: update_task has a lower maximum than create_task.`
 77
 78// ParamPriority describes the priority parameter for create.
 79const ParamPriority = `Task priority level.
 80Valid values: 'lowest', 'low', 'neutral', 'high', 'highest'.
 81Only include if user explicitly mentions priority or urgency.
 82Omit for normal tasks.`
 83
 84// ParamUpdatePriority describes the priority parameter for update.
 85const ParamUpdatePriority = `New task priority level.
 86Valid values: 'lowest', 'low', 'neutral', 'high', 'highest'.
 87Only include if user wants to change the priority.`
 88
 89// ParamMotivation describes the motivation parameter for create.
 90const ParamMotivation = `Level of importance for the task.
 91Valid values: 'must' (critical/required), 'should' (important), 'want' (nice-to-have).
 92Only include if the user's language suggests strong obligation
 93('I need to', 'I have to') vs preference ('I'd like to', 'I want to').`
 94
 95// ParamUpdateMotivation describes the motivation parameter for update.
 96const ParamUpdateMotivation = `New level of importance for the task.
 97Valid values: 'must' (critical/required), 'should' (important), 'want' (nice-to-have),
 98or empty string to clear. Only include if changing the motivation level.`
 99
100// ParamEisenhower describes the eisenhower parameter for create.
101const ParamEisenhower = `Eisenhower Matrix quadrant for task prioritization.
102Valid values: 'do-now' (urgent+important), 'delegate' (urgent, not important),
103'do-later' (important, not urgent), 'eliminate' (neither), 'uncategorized'.
104Only include for areas which the user has indicated follow the Eisenhower workflow.`
105
106// ParamUpdateEisenhower describes the eisenhower parameter for update.
107const ParamUpdateEisenhower = `New Eisenhower Matrix quadrant for task prioritization.
108Valid values: 'do-now' (urgent+important), 'delegate' (urgent, not important),
109'do-later' (important, not urgent), 'eliminate' (neither), 'uncategorized'.
110Only include for areas which the user has indicated follow the Eisenhower workflow.`
111
112// ParamStatus describes the status parameter for create.
113const ParamStatus = `Initial task status.
114Valid values: 'later' (someday/backlog), 'next' (upcoming/soon),
115'started' (in progress), 'waiting' (blocked), 'completed' (finished).
116Infer from context: 'working on' = 'started', 'soon'/'upcoming' = 'next',
117'blocked'/'waiting for' = 'waiting'.
118Omit for normal new tasks (defaults to appropriate status).`
119
120// ParamUpdateStatus describes the status parameter for update.
121const ParamUpdateStatus = `New task status.
122Valid values: 'later' (someday/backlog), 'next' (upcoming/soon),
123'started' (in progress), 'waiting' (blocked), 'completed' (finished),
124or empty string to clear. Only include if changing the task status.`
125
126// ParamScheduledOn describes the scheduled_on parameter for create.
127const ParamScheduledOn = `Scheduled date/time for the task.
128Must use the formatted timestamp returned by get_timestamp tool.
129Only include if user specifies when the task should be done.`
130
131// ParamUpdateScheduledOn describes the scheduled_on parameter for update.
132const ParamUpdateScheduledOn = `New scheduled date/time for the task.
133Must use the formatted timestamp returned by get_timestamp tool.
134Sending an empty string might clear the scheduled date.
135Only include if changing the schedule.`