-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathtask.actions.ts
More file actions
161 lines (152 loc) · 4.27 KB
/
Copy pathtask.actions.ts
File metadata and controls
161 lines (152 loc) · 4.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.
import { defineAction } from '@objectstack/spec/ui';
/** Mark Task as Complete */
export const CompleteTaskAction = defineAction({
name: 'complete_task',
label: 'Mark Complete',
objectName: 'todo_task',
icon: 'check-circle',
type: 'script',
target: 'completeTask',
locations: ['record_header', 'list_item'],
successMessage: 'Task marked as complete!',
refreshAfter: true,
ai: {
exposed: true,
description: 'Mark a todo task as complete. Use when the user says a task is done or finished.',
},
});
/** Mark Task as In Progress */
export const StartTaskAction = defineAction({
name: 'start_task',
label: 'Start Task',
objectName: 'todo_task',
icon: 'play-circle',
type: 'script',
target: 'startTask',
locations: ['record_header', 'list_item'],
successMessage: 'Task started!',
refreshAfter: true,
ai: {
exposed: true,
description: 'Mark a todo task as in progress. Use when the user says they are starting or working on a task.',
},
});
/** Defer Task */
export const DeferTaskAction = defineAction({
name: 'defer_task',
label: 'Defer Task',
objectName: 'todo_task',
icon: 'clock',
type: 'modal',
target: 'defer_task_modal',
locations: ['record_header'],
params: [
{
name: 'new_due_date',
label: 'New Due Date',
type: 'date',
required: true,
},
{
name: 'reason',
label: 'Reason for Deferral',
type: 'textarea',
required: false,
}
],
successMessage: 'Task deferred successfully!',
refreshAfter: true,
});
/** Set Reminder */
export const SetReminderAction = defineAction({
name: 'set_reminder',
label: 'Set Reminder',
objectName: 'todo_task',
icon: 'bell',
type: 'modal',
target: 'set_reminder_modal',
locations: ['record_header', 'list_item'],
params: [
{
name: 'reminder_date',
label: 'Reminder Date/Time',
type: 'datetime',
required: true,
}
],
successMessage: 'Reminder set!',
refreshAfter: true,
});
/** Clone Task */
export const CloneTaskAction = defineAction({
name: 'clone_task',
label: 'Clone Task',
objectName: 'todo_task',
icon: 'copy',
type: 'script',
target: 'cloneTask',
locations: ['record_header'],
successMessage: 'Task cloned successfully!',
refreshAfter: true,
ai: {
exposed: true,
description: 'Duplicate an existing todo task, copying its fields into a new task record.',
},
});
/** Mass Complete Tasks */
export const MassCompleteTasksAction = defineAction({
name: 'mass_complete',
label: 'Complete Selected',
objectName: 'todo_task',
icon: 'check-square',
type: 'script',
target: 'massCompleteTasks',
locations: ['list_toolbar'],
successMessage: 'Selected tasks marked as complete!',
refreshAfter: true,
ai: {
exposed: true,
description: 'Mark all currently selected todo tasks as complete in one bulk operation.',
},
});
/** Delete Completed Tasks */
export const DeleteCompletedAction = defineAction({
name: 'delete_completed',
label: 'Delete Completed',
objectName: 'todo_task',
icon: 'trash-2',
type: 'script',
target: 'deleteCompletedTasks',
locations: ['list_toolbar'],
// Destructive + irreversible — flag as danger so Studio paints it red
// and the AI tool runtime routes through the HITL approval queue when
// `enableActionApproval` is on.
variant: 'danger',
confirmText: 'Permanently delete all completed tasks? This cannot be undone.',
successMessage: 'Completed tasks deleted!',
refreshAfter: true,
ai: {
exposed: true,
description:
'Permanently delete every completed todo task. Destructive and irreversible — only after the user confirms.',
// confirmText + variant:'danger' default this to requiring HITL approval;
// it registers only when enableActionApproval is on, then routes to the queue.
},
});
/** Export Tasks to CSV */
export const ExportToCsvAction = defineAction({
name: 'export_csv',
label: 'Export to CSV',
objectName: 'todo_task',
icon: 'download',
type: 'script',
target: 'exportTasksToCSV',
locations: ['list_toolbar'],
successMessage: 'Export completed!',
refreshAfter: false,
ai: {
exposed: true,
description: 'Export the current list of todo tasks to a downloadable CSV file.',
},
});