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.`