@codingfactory/task-engine-client 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/README.md +53 -0
  2. package/dist/components/dashboard/MyStatsWidget.vue.d.ts +10 -0
  3. package/dist/components/dashboard/MyTasksToday.vue.d.ts +10 -0
  4. package/dist/components/dashboard/OverdueTracker.vue.d.ts +10 -0
  5. package/dist/components/dashboard/TaskDashboard.vue.d.ts +20 -0
  6. package/dist/components/dashboard/TaskHealthAlerts.vue.d.ts +18 -0
  7. package/dist/components/dashboard/TeamActivityFeed.vue.d.ts +11 -0
  8. package/dist/components/dashboard/UpcomingThisWeek.vue.d.ts +10 -0
  9. package/dist/components/dashboard/WidgetGrid.vue.d.ts +25 -0
  10. package/dist/components/index.d.ts +29 -0
  11. package/dist/components/list/TaskBoardView.vue.d.ts +21 -0
  12. package/dist/components/list/TaskBulkActionBar.vue.d.ts +20 -0
  13. package/dist/components/list/TaskCalendarView.vue.d.ts +11 -0
  14. package/dist/components/list/TaskFilterBar.vue.d.ts +15 -0
  15. package/dist/components/list/TaskListView.vue.d.ts +39 -0
  16. package/dist/components/list/TaskSavedFilterTabs.vue.d.ts +13 -0
  17. package/dist/components/recurrence/RecurringTemplateForm.vue.d.ts +17 -0
  18. package/dist/components/recurrence/RecurringTemplateList.vue.d.ts +25 -0
  19. package/dist/components/shared/TaskEntityWidget.vue.d.ts +20 -0
  20. package/dist/components/shared/TaskNotificationToast.vue.d.ts +16 -0
  21. package/dist/components/shared/TaskPriorityIcon.vue.d.ts +7 -0
  22. package/dist/components/shared/TaskQuickCreate.vue.d.ts +17 -0
  23. package/dist/components/task/EscalationActions.vue.d.ts +22 -0
  24. package/dist/components/task/EscalationBadge.vue.d.ts +9 -0
  25. package/dist/components/task/TaskCard.vue.d.ts +14 -0
  26. package/dist/components/task/TaskChecklist.vue.d.ts +17 -0
  27. package/dist/components/task/TaskComments.vue.d.ts +17 -0
  28. package/dist/components/task/TaskDetail.vue.d.ts +47 -0
  29. package/dist/components/task/TaskForm.vue.d.ts +21 -0
  30. package/dist/components/task/TaskStatusBadge.vue.d.ts +6 -0
  31. package/dist/components/task/TaskTimeline.vue.d.ts +11 -0
  32. package/dist/composables/index.d.ts +7 -0
  33. package/dist/composables/useTaskDashboard.d.ts +504 -0
  34. package/dist/composables/useTaskDetail.d.ts +207 -0
  35. package/dist/composables/useTaskFilters.d.ts +38 -0
  36. package/dist/composables/useTaskNotificationFeed.d.ts +47 -0
  37. package/dist/composables/useTaskPresence.d.ts +22 -0
  38. package/dist/composables/useTaskSavedFilters.d.ts +47 -0
  39. package/dist/composables/useTaskWebSocket.d.ts +31 -0
  40. package/dist/index.cjs +1 -0
  41. package/dist/index.d.ts +5 -0
  42. package/dist/index.js +5163 -0
  43. package/dist/services/index.d.ts +1 -0
  44. package/dist/services/taskApi.d.ts +12 -0
  45. package/dist/stores/index.d.ts +2 -0
  46. package/dist/stores/taskListStore.d.ts +179 -0
  47. package/dist/stores/taskStore.d.ts +2294 -0
  48. package/dist/task-engine-client.css +1 -0
  49. package/dist/types/index.d.ts +700 -0
  50. package/dist/utils/index.d.ts +3 -0
  51. package/dist/utils/recurrence.d.ts +25 -0
  52. package/dist/utils/taskDisplay.d.ts +14 -0
  53. package/package.json +74 -0
@@ -0,0 +1,2294 @@
1
+ import type { EntityTaskSummary, PaginationMeta, Task, TaskAssignedBroadcastPayload, TaskBulkAction, TaskBulkActionResult, TaskChecklistToggledBroadcastPayload, TaskCommentAddedBroadcastPayload, TaskCommentPayload, TaskCompletedBroadcastPayload, TaskCreatedBroadcastPayload, TaskDetail, TaskEscalationSnoozePayload, TaskFilters, TaskMutationPayload, TaskPriority, TaskSavedFilter, TaskStatus, TaskStatusChangedBroadcastPayload, TaskUpdatePayload, TaskUpdatedBroadcastPayload, TemplateInstantiationPayload } from '@/types';
2
+ export declare const useTaskStore: import("pinia").StoreDefinition<"task-engine/tasks", Pick<{
3
+ tasks: import("vue").Ref<{
4
+ id: string;
5
+ tenant_id: string;
6
+ display_number: number;
7
+ display_number_formatted: string;
8
+ title: string;
9
+ description: string | null;
10
+ status: TaskStatus;
11
+ priority: TaskPriority;
12
+ taskable_type: string | null;
13
+ taskable_id: string | null;
14
+ created_by: {
15
+ id: string | number;
16
+ name: string;
17
+ avatar_url?: string;
18
+ } | null;
19
+ primary_assignee: {
20
+ id: string | number;
21
+ name: string;
22
+ avatar_url?: string;
23
+ } | null;
24
+ due_at: string | null;
25
+ completed_at: string | null;
26
+ completed_by: {
27
+ id: string | number;
28
+ name: string;
29
+ avatar_url?: string;
30
+ } | null;
31
+ source: import("@/types").TaskSource;
32
+ source_id: string | null;
33
+ template_item_id?: string | null;
34
+ escalation_policy_id: string | null;
35
+ current_escalation_tier: import("@/types").EscalationTier | null;
36
+ current_escalation_label: string | null;
37
+ next_escalation_at: string | null;
38
+ escalation_acknowledged_at: string | null;
39
+ escalation_snoozed_until: string | null;
40
+ comment_count?: number | null;
41
+ checklist_total?: number | null;
42
+ checklist_completed?: number | null;
43
+ blocker_count?: number | null;
44
+ open_blocker_count?: number | null;
45
+ has_unresolved_blockers?: boolean | null;
46
+ subtask_count?: number | null;
47
+ completed_subtask_count?: number | null;
48
+ completion_rules?: {
49
+ checklist_complete?: boolean;
50
+ comment_required?: boolean;
51
+ attachment_required?: boolean;
52
+ subtasks_complete?: boolean;
53
+ custom_field_required?: string[];
54
+ } | null;
55
+ tags: {
56
+ id: string;
57
+ name: string;
58
+ color: string | null;
59
+ created_at?: string;
60
+ updated_at?: string;
61
+ }[];
62
+ checklist_progress: {
63
+ completed: number;
64
+ total: number;
65
+ };
66
+ is_overdue: boolean;
67
+ is_complete: boolean;
68
+ progress_percentage: number;
69
+ metadata?: Record<string, unknown> | null;
70
+ created_at: string;
71
+ updated_at: string;
72
+ }[], Task[] | {
73
+ id: string;
74
+ tenant_id: string;
75
+ display_number: number;
76
+ display_number_formatted: string;
77
+ title: string;
78
+ description: string | null;
79
+ status: TaskStatus;
80
+ priority: TaskPriority;
81
+ taskable_type: string | null;
82
+ taskable_id: string | null;
83
+ created_by: {
84
+ id: string | number;
85
+ name: string;
86
+ avatar_url?: string;
87
+ } | null;
88
+ primary_assignee: {
89
+ id: string | number;
90
+ name: string;
91
+ avatar_url?: string;
92
+ } | null;
93
+ due_at: string | null;
94
+ completed_at: string | null;
95
+ completed_by: {
96
+ id: string | number;
97
+ name: string;
98
+ avatar_url?: string;
99
+ } | null;
100
+ source: import("@/types").TaskSource;
101
+ source_id: string | null;
102
+ template_item_id?: string | null;
103
+ escalation_policy_id: string | null;
104
+ current_escalation_tier: import("@/types").EscalationTier | null;
105
+ current_escalation_label: string | null;
106
+ next_escalation_at: string | null;
107
+ escalation_acknowledged_at: string | null;
108
+ escalation_snoozed_until: string | null;
109
+ comment_count?: number | null;
110
+ checklist_total?: number | null;
111
+ checklist_completed?: number | null;
112
+ blocker_count?: number | null;
113
+ open_blocker_count?: number | null;
114
+ has_unresolved_blockers?: boolean | null;
115
+ subtask_count?: number | null;
116
+ completed_subtask_count?: number | null;
117
+ completion_rules?: {
118
+ checklist_complete?: boolean;
119
+ comment_required?: boolean;
120
+ attachment_required?: boolean;
121
+ subtasks_complete?: boolean;
122
+ custom_field_required?: string[];
123
+ } | null;
124
+ tags: {
125
+ id: string;
126
+ name: string;
127
+ color: string | null;
128
+ created_at?: string;
129
+ updated_at?: string;
130
+ }[];
131
+ checklist_progress: {
132
+ completed: number;
133
+ total: number;
134
+ };
135
+ is_overdue: boolean;
136
+ is_complete: boolean;
137
+ progress_percentage: number;
138
+ metadata?: Record<string, unknown> | null;
139
+ created_at: string;
140
+ updated_at: string;
141
+ }[]>;
142
+ currentTask: import("vue").Ref<{
143
+ comments: {
144
+ id: string;
145
+ task_id?: string;
146
+ author: {
147
+ id: string | number;
148
+ name: string;
149
+ avatar_url?: string;
150
+ };
151
+ content: string;
152
+ visibility: "team" | "private";
153
+ metadata?: Record<string, unknown> | null;
154
+ created_at: string;
155
+ updated_at?: string | null;
156
+ }[];
157
+ checklist_items: {
158
+ id: string;
159
+ task_id?: string;
160
+ title: string;
161
+ is_completed: boolean;
162
+ completed_at: string | null;
163
+ completed_by: {
164
+ id: string | number;
165
+ name: string;
166
+ avatar_url?: string;
167
+ } | null;
168
+ position: number;
169
+ template_item_id?: string | null;
170
+ }[];
171
+ watchers: {
172
+ id: string | number;
173
+ name: string;
174
+ avatar_url?: string;
175
+ }[];
176
+ relations: {
177
+ id: string;
178
+ type: import("@/types").TaskRelationType;
179
+ related_task: {
180
+ id: string;
181
+ display_number_formatted: string;
182
+ title: string;
183
+ status: TaskStatus;
184
+ priority: TaskPriority;
185
+ } | null;
186
+ created_at?: string | null;
187
+ }[];
188
+ activity_logs: {
189
+ id: string;
190
+ task_id?: string;
191
+ user: {
192
+ id: string | number;
193
+ name: string;
194
+ avatar_url?: string;
195
+ } | null;
196
+ action: string;
197
+ description: string | null;
198
+ changes: Record<string, unknown> | null;
199
+ metadata: Record<string, unknown> | null;
200
+ created_at: string | null;
201
+ }[];
202
+ escalation_policy: {
203
+ id: string;
204
+ tenant_id: string;
205
+ profile_key: string | null;
206
+ name: string;
207
+ description: string | null;
208
+ is_default: boolean;
209
+ tiers: {
210
+ name: import("@/types").EscalationTier;
211
+ label: string;
212
+ offset_hours: number;
213
+ visual: string;
214
+ channels: string[];
215
+ target: "assignee" | "team_lead" | "manager" | "owner";
216
+ cooldown_hours: number;
217
+ color: string;
218
+ }[];
219
+ business_hours_only: boolean;
220
+ quiet_hours_start: string | null;
221
+ quiet_hours_end: string | null;
222
+ timezone: string;
223
+ created_at: string | null;
224
+ updated_at: string | null;
225
+ } | null;
226
+ escalation_events: {
227
+ id: string;
228
+ tenant_id: string;
229
+ task_id: string;
230
+ policy_id: string | null;
231
+ tier_name: import("@/types").EscalationTier | null;
232
+ tier_label: string | null;
233
+ event_type: import("@/types").EscalationEventType;
234
+ target_user_id: string | null;
235
+ target_role: string | null;
236
+ target_user: {
237
+ id: string | number;
238
+ name: string;
239
+ avatar_url?: string;
240
+ } | null;
241
+ channels_used: string[];
242
+ acknowledged_at: string | null;
243
+ acknowledged_by: string | null;
244
+ acknowledged_by_user: {
245
+ id: string | number;
246
+ name: string;
247
+ avatar_url?: string;
248
+ } | null;
249
+ snoozed_until: string | null;
250
+ snooze_reason: string | null;
251
+ blocker_task_id: string | null;
252
+ blocker_task: {
253
+ id: string;
254
+ display_number_formatted: string;
255
+ title: string;
256
+ status: TaskStatus;
257
+ priority: TaskPriority;
258
+ } | null;
259
+ metadata: Record<string, unknown> | null;
260
+ created_at: string | null;
261
+ }[];
262
+ id: string;
263
+ tenant_id: string;
264
+ display_number: number;
265
+ display_number_formatted: string;
266
+ title: string;
267
+ description: string | null;
268
+ status: TaskStatus;
269
+ priority: TaskPriority;
270
+ taskable_type: string | null;
271
+ taskable_id: string | null;
272
+ created_by: {
273
+ id: string | number;
274
+ name: string;
275
+ avatar_url?: string;
276
+ } | null;
277
+ primary_assignee: {
278
+ id: string | number;
279
+ name: string;
280
+ avatar_url?: string;
281
+ } | null;
282
+ due_at: string | null;
283
+ completed_at: string | null;
284
+ completed_by: {
285
+ id: string | number;
286
+ name: string;
287
+ avatar_url?: string;
288
+ } | null;
289
+ source: import("@/types").TaskSource;
290
+ source_id: string | null;
291
+ template_item_id?: string | null;
292
+ escalation_policy_id: string | null;
293
+ current_escalation_tier: import("@/types").EscalationTier | null;
294
+ current_escalation_label: string | null;
295
+ next_escalation_at: string | null;
296
+ escalation_acknowledged_at: string | null;
297
+ escalation_snoozed_until: string | null;
298
+ comment_count?: number | null;
299
+ checklist_total?: number | null;
300
+ checklist_completed?: number | null;
301
+ blocker_count?: number | null;
302
+ open_blocker_count?: number | null;
303
+ has_unresolved_blockers?: boolean | null;
304
+ subtask_count?: number | null;
305
+ completed_subtask_count?: number | null;
306
+ completion_rules?: {
307
+ checklist_complete?: boolean;
308
+ comment_required?: boolean;
309
+ attachment_required?: boolean;
310
+ subtasks_complete?: boolean;
311
+ custom_field_required?: string[];
312
+ } | null;
313
+ tags: {
314
+ id: string;
315
+ name: string;
316
+ color: string | null;
317
+ created_at?: string;
318
+ updated_at?: string;
319
+ }[];
320
+ checklist_progress: {
321
+ completed: number;
322
+ total: number;
323
+ };
324
+ is_overdue: boolean;
325
+ is_complete: boolean;
326
+ progress_percentage: number;
327
+ metadata?: Record<string, unknown> | null;
328
+ created_at: string;
329
+ updated_at: string;
330
+ } | null, TaskDetail | {
331
+ comments: {
332
+ id: string;
333
+ task_id?: string;
334
+ author: {
335
+ id: string | number;
336
+ name: string;
337
+ avatar_url?: string;
338
+ };
339
+ content: string;
340
+ visibility: "team" | "private";
341
+ metadata?: Record<string, unknown> | null;
342
+ created_at: string;
343
+ updated_at?: string | null;
344
+ }[];
345
+ checklist_items: {
346
+ id: string;
347
+ task_id?: string;
348
+ title: string;
349
+ is_completed: boolean;
350
+ completed_at: string | null;
351
+ completed_by: {
352
+ id: string | number;
353
+ name: string;
354
+ avatar_url?: string;
355
+ } | null;
356
+ position: number;
357
+ template_item_id?: string | null;
358
+ }[];
359
+ watchers: {
360
+ id: string | number;
361
+ name: string;
362
+ avatar_url?: string;
363
+ }[];
364
+ relations: {
365
+ id: string;
366
+ type: import("@/types").TaskRelationType;
367
+ related_task: {
368
+ id: string;
369
+ display_number_formatted: string;
370
+ title: string;
371
+ status: TaskStatus;
372
+ priority: TaskPriority;
373
+ } | null;
374
+ created_at?: string | null;
375
+ }[];
376
+ activity_logs: {
377
+ id: string;
378
+ task_id?: string;
379
+ user: {
380
+ id: string | number;
381
+ name: string;
382
+ avatar_url?: string;
383
+ } | null;
384
+ action: string;
385
+ description: string | null;
386
+ changes: Record<string, unknown> | null;
387
+ metadata: Record<string, unknown> | null;
388
+ created_at: string | null;
389
+ }[];
390
+ escalation_policy: {
391
+ id: string;
392
+ tenant_id: string;
393
+ profile_key: string | null;
394
+ name: string;
395
+ description: string | null;
396
+ is_default: boolean;
397
+ tiers: {
398
+ name: import("@/types").EscalationTier;
399
+ label: string;
400
+ offset_hours: number;
401
+ visual: string;
402
+ channels: string[];
403
+ target: "assignee" | "team_lead" | "manager" | "owner";
404
+ cooldown_hours: number;
405
+ color: string;
406
+ }[];
407
+ business_hours_only: boolean;
408
+ quiet_hours_start: string | null;
409
+ quiet_hours_end: string | null;
410
+ timezone: string;
411
+ created_at: string | null;
412
+ updated_at: string | null;
413
+ } | null;
414
+ escalation_events: {
415
+ id: string;
416
+ tenant_id: string;
417
+ task_id: string;
418
+ policy_id: string | null;
419
+ tier_name: import("@/types").EscalationTier | null;
420
+ tier_label: string | null;
421
+ event_type: import("@/types").EscalationEventType;
422
+ target_user_id: string | null;
423
+ target_role: string | null;
424
+ target_user: {
425
+ id: string | number;
426
+ name: string;
427
+ avatar_url?: string;
428
+ } | null;
429
+ channels_used: string[];
430
+ acknowledged_at: string | null;
431
+ acknowledged_by: string | null;
432
+ acknowledged_by_user: {
433
+ id: string | number;
434
+ name: string;
435
+ avatar_url?: string;
436
+ } | null;
437
+ snoozed_until: string | null;
438
+ snooze_reason: string | null;
439
+ blocker_task_id: string | null;
440
+ blocker_task: {
441
+ id: string;
442
+ display_number_formatted: string;
443
+ title: string;
444
+ status: TaskStatus;
445
+ priority: TaskPriority;
446
+ } | null;
447
+ metadata: Record<string, unknown> | null;
448
+ created_at: string | null;
449
+ }[];
450
+ id: string;
451
+ tenant_id: string;
452
+ display_number: number;
453
+ display_number_formatted: string;
454
+ title: string;
455
+ description: string | null;
456
+ status: TaskStatus;
457
+ priority: TaskPriority;
458
+ taskable_type: string | null;
459
+ taskable_id: string | null;
460
+ created_by: {
461
+ id: string | number;
462
+ name: string;
463
+ avatar_url?: string;
464
+ } | null;
465
+ primary_assignee: {
466
+ id: string | number;
467
+ name: string;
468
+ avatar_url?: string;
469
+ } | null;
470
+ due_at: string | null;
471
+ completed_at: string | null;
472
+ completed_by: {
473
+ id: string | number;
474
+ name: string;
475
+ avatar_url?: string;
476
+ } | null;
477
+ source: import("@/types").TaskSource;
478
+ source_id: string | null;
479
+ template_item_id?: string | null;
480
+ escalation_policy_id: string | null;
481
+ current_escalation_tier: import("@/types").EscalationTier | null;
482
+ current_escalation_label: string | null;
483
+ next_escalation_at: string | null;
484
+ escalation_acknowledged_at: string | null;
485
+ escalation_snoozed_until: string | null;
486
+ comment_count?: number | null;
487
+ checklist_total?: number | null;
488
+ checklist_completed?: number | null;
489
+ blocker_count?: number | null;
490
+ open_blocker_count?: number | null;
491
+ has_unresolved_blockers?: boolean | null;
492
+ subtask_count?: number | null;
493
+ completed_subtask_count?: number | null;
494
+ completion_rules?: {
495
+ checklist_complete?: boolean;
496
+ comment_required?: boolean;
497
+ attachment_required?: boolean;
498
+ subtasks_complete?: boolean;
499
+ custom_field_required?: string[];
500
+ } | null;
501
+ tags: {
502
+ id: string;
503
+ name: string;
504
+ color: string | null;
505
+ created_at?: string;
506
+ updated_at?: string;
507
+ }[];
508
+ checklist_progress: {
509
+ completed: number;
510
+ total: number;
511
+ };
512
+ is_overdue: boolean;
513
+ is_complete: boolean;
514
+ progress_percentage: number;
515
+ metadata?: Record<string, unknown> | null;
516
+ created_at: string;
517
+ updated_at: string;
518
+ } | null>;
519
+ entitySummary: import("vue").Ref<{
520
+ total: number;
521
+ open: number;
522
+ overdue: number;
523
+ completed: number;
524
+ recent_tasks: {
525
+ id: string;
526
+ display_number_formatted: string;
527
+ title: string;
528
+ status: TaskStatus;
529
+ priority: TaskPriority;
530
+ }[];
531
+ } | null, EntityTaskSummary | {
532
+ total: number;
533
+ open: number;
534
+ overdue: number;
535
+ completed: number;
536
+ recent_tasks: {
537
+ id: string;
538
+ display_number_formatted: string;
539
+ title: string;
540
+ status: TaskStatus;
541
+ priority: TaskPriority;
542
+ }[];
543
+ } | null>;
544
+ loading: import("vue").Ref<boolean, boolean>;
545
+ error: import("vue").Ref<string | null, string | null>;
546
+ pagination: import("vue").Ref<{
547
+ current_page: number;
548
+ last_page: number;
549
+ per_page: number;
550
+ total: number;
551
+ }, PaginationMeta | {
552
+ current_page: number;
553
+ last_page: number;
554
+ per_page: number;
555
+ total: number;
556
+ }>;
557
+ lastFilters: import("vue").Ref<{
558
+ status?: TaskStatus | TaskStatus[];
559
+ priority?: TaskPriority | TaskPriority[];
560
+ assignee?: string;
561
+ assignee_id?: string;
562
+ created_by?: string;
563
+ watching?: boolean;
564
+ tag?: string;
565
+ overdue?: boolean;
566
+ due_before?: string;
567
+ due_after?: string;
568
+ search?: string;
569
+ taskable_type?: string;
570
+ taskable_id?: string;
571
+ sort?: string;
572
+ page?: number;
573
+ per_page?: number;
574
+ }, TaskFilters | {
575
+ status?: TaskStatus | TaskStatus[];
576
+ priority?: TaskPriority | TaskPriority[];
577
+ assignee?: string;
578
+ assignee_id?: string;
579
+ created_by?: string;
580
+ watching?: boolean;
581
+ tag?: string;
582
+ overdue?: boolean;
583
+ due_before?: string;
584
+ due_after?: string;
585
+ search?: string;
586
+ taskable_type?: string;
587
+ taskable_id?: string;
588
+ sort?: string;
589
+ page?: number;
590
+ per_page?: number;
591
+ }>;
592
+ savedFilters: import("vue").Ref<{
593
+ id: string;
594
+ tenant_id: string;
595
+ user_id: string;
596
+ name: string;
597
+ filters: {
598
+ status?: TaskStatus | TaskStatus[];
599
+ priority?: TaskPriority | TaskPriority[];
600
+ assignee?: string;
601
+ assignee_id?: string;
602
+ created_by?: string;
603
+ watching?: boolean;
604
+ tag?: string;
605
+ overdue?: boolean;
606
+ due_before?: string;
607
+ due_after?: string;
608
+ search?: string;
609
+ taskable_type?: string;
610
+ taskable_id?: string;
611
+ sort?: string;
612
+ page?: number;
613
+ per_page?: number;
614
+ };
615
+ is_default: boolean;
616
+ is_shared: boolean;
617
+ position: number;
618
+ created_at: string | null;
619
+ updated_at: string | null;
620
+ }[], TaskSavedFilter[] | {
621
+ id: string;
622
+ tenant_id: string;
623
+ user_id: string;
624
+ name: string;
625
+ filters: {
626
+ status?: TaskStatus | TaskStatus[];
627
+ priority?: TaskPriority | TaskPriority[];
628
+ assignee?: string;
629
+ assignee_id?: string;
630
+ created_by?: string;
631
+ watching?: boolean;
632
+ tag?: string;
633
+ overdue?: boolean;
634
+ due_before?: string;
635
+ due_after?: string;
636
+ search?: string;
637
+ taskable_type?: string;
638
+ taskable_id?: string;
639
+ sort?: string;
640
+ page?: number;
641
+ per_page?: number;
642
+ };
643
+ is_default: boolean;
644
+ is_shared: boolean;
645
+ position: number;
646
+ created_at: string | null;
647
+ updated_at: string | null;
648
+ }[]>;
649
+ savedFiltersLoading: import("vue").Ref<boolean, boolean>;
650
+ bulkResult: import("vue").Ref<{
651
+ success: string[];
652
+ failed: {
653
+ id: string;
654
+ reason: string;
655
+ }[];
656
+ } | null, TaskBulkActionResult | {
657
+ success: string[];
658
+ failed: {
659
+ id: string;
660
+ reason: string;
661
+ }[];
662
+ } | null>;
663
+ bulkLoading: import("vue").Ref<boolean, boolean>;
664
+ overdueTasks: import("vue").ComputedRef<{
665
+ id: string;
666
+ tenant_id: string;
667
+ display_number: number;
668
+ display_number_formatted: string;
669
+ title: string;
670
+ description: string | null;
671
+ status: TaskStatus;
672
+ priority: TaskPriority;
673
+ taskable_type: string | null;
674
+ taskable_id: string | null;
675
+ created_by: {
676
+ id: string | number;
677
+ name: string;
678
+ avatar_url?: string;
679
+ } | null;
680
+ primary_assignee: {
681
+ id: string | number;
682
+ name: string;
683
+ avatar_url?: string;
684
+ } | null;
685
+ due_at: string | null;
686
+ completed_at: string | null;
687
+ completed_by: {
688
+ id: string | number;
689
+ name: string;
690
+ avatar_url?: string;
691
+ } | null;
692
+ source: import("@/types").TaskSource;
693
+ source_id: string | null;
694
+ template_item_id?: string | null;
695
+ escalation_policy_id: string | null;
696
+ current_escalation_tier: import("@/types").EscalationTier | null;
697
+ current_escalation_label: string | null;
698
+ next_escalation_at: string | null;
699
+ escalation_acknowledged_at: string | null;
700
+ escalation_snoozed_until: string | null;
701
+ comment_count?: number | null;
702
+ checklist_total?: number | null;
703
+ checklist_completed?: number | null;
704
+ blocker_count?: number | null;
705
+ open_blocker_count?: number | null;
706
+ has_unresolved_blockers?: boolean | null;
707
+ subtask_count?: number | null;
708
+ completed_subtask_count?: number | null;
709
+ completion_rules?: {
710
+ checklist_complete?: boolean;
711
+ comment_required?: boolean;
712
+ attachment_required?: boolean;
713
+ subtasks_complete?: boolean;
714
+ custom_field_required?: string[];
715
+ } | null;
716
+ tags: {
717
+ id: string;
718
+ name: string;
719
+ color: string | null;
720
+ created_at?: string;
721
+ updated_at?: string;
722
+ }[];
723
+ checklist_progress: {
724
+ completed: number;
725
+ total: number;
726
+ };
727
+ is_overdue: boolean;
728
+ is_complete: boolean;
729
+ progress_percentage: number;
730
+ metadata?: Record<string, unknown> | null;
731
+ created_at: string;
732
+ updated_at: string;
733
+ }[]>;
734
+ tasksByStatus: import("vue").ComputedRef<Record<TaskStatus, Task[]>>;
735
+ tasksByPriority: import("vue").ComputedRef<Record<TaskPriority, Task[]>>;
736
+ isViewingTask: (taskId: string) => boolean;
737
+ handleTaskCreated: (payload: TaskCreatedBroadcastPayload) => Task;
738
+ handleTaskUpdated: (payload: TaskUpdatedBroadcastPayload) => Task;
739
+ handleStatusChanged: (payload: TaskStatusChangedBroadcastPayload) => Task;
740
+ handleTaskAssigned: (payload: TaskAssignedBroadcastPayload) => Task;
741
+ handleTaskCompleted: (payload: TaskCompletedBroadcastPayload) => Task;
742
+ handleCommentAdded: (payload: TaskCommentAddedBroadcastPayload) => Task;
743
+ handleChecklistToggled: (payload: TaskChecklistToggledBroadcastPayload) => Task;
744
+ fetchTasks: (filters?: TaskFilters) => Promise<void>;
745
+ fetchTask: (id: string) => Promise<TaskDetail>;
746
+ createTask: (payload: TaskMutationPayload) => Promise<TaskDetail>;
747
+ updateTask: (id: string, payload: TaskUpdatePayload) => Promise<TaskDetail>;
748
+ deleteTask: (id: string) => Promise<void>;
749
+ completeTask: (id: string, note?: string) => Promise<TaskDetail>;
750
+ reopenTask: (id: string) => Promise<TaskDetail>;
751
+ cancelTask: (id: string) => Promise<TaskDetail>;
752
+ addComment: (taskId: string, payload: TaskCommentPayload) => Promise<TaskDetail | null>;
753
+ acknowledgeEscalation: (taskId: string) => Promise<TaskDetail | null>;
754
+ snoozeEscalation: (taskId: string, payload: TaskEscalationSnoozePayload) => Promise<TaskDetail | null>;
755
+ addChecklistItem: (taskId: string, title: string) => Promise<TaskDetail | null>;
756
+ toggleChecklistItem: (taskId: string, itemId: string) => Promise<TaskDetail | null>;
757
+ removeChecklistItem: (taskId: string, itemId: string) => Promise<TaskDetail | null>;
758
+ fetchEntityTasks: (type: string, id: string, filters?: TaskFilters) => Promise<void>;
759
+ fetchEntitySummary: (type: string, id: string) => Promise<EntityTaskSummary>;
760
+ instantiateTemplate: (templateId: string, payload: TemplateInstantiationPayload) => Promise<TaskDetail>;
761
+ fetchSavedFilters: () => Promise<TaskSavedFilter[]>;
762
+ createSavedFilter: (payload: Omit<TaskSavedFilter, "id" | "tenant_id" | "user_id" | "created_at" | "updated_at">) => Promise<TaskSavedFilter>;
763
+ updateSavedFilterRecord: (id: string, payload: Partial<Omit<TaskSavedFilter, "id" | "tenant_id" | "user_id" | "created_at" | "updated_at">>) => Promise<TaskSavedFilter>;
764
+ deleteSavedFilterRecord: (id: string) => Promise<void>;
765
+ runBulkAction: (taskIds: string[], action: TaskBulkAction, params?: Record<string, unknown>) => Promise<TaskBulkActionResult>;
766
+ }, "pagination" | "tasks" | "currentTask" | "entitySummary" | "loading" | "error" | "lastFilters" | "savedFilters" | "savedFiltersLoading" | "bulkResult" | "bulkLoading">, Pick<{
767
+ tasks: import("vue").Ref<{
768
+ id: string;
769
+ tenant_id: string;
770
+ display_number: number;
771
+ display_number_formatted: string;
772
+ title: string;
773
+ description: string | null;
774
+ status: TaskStatus;
775
+ priority: TaskPriority;
776
+ taskable_type: string | null;
777
+ taskable_id: string | null;
778
+ created_by: {
779
+ id: string | number;
780
+ name: string;
781
+ avatar_url?: string;
782
+ } | null;
783
+ primary_assignee: {
784
+ id: string | number;
785
+ name: string;
786
+ avatar_url?: string;
787
+ } | null;
788
+ due_at: string | null;
789
+ completed_at: string | null;
790
+ completed_by: {
791
+ id: string | number;
792
+ name: string;
793
+ avatar_url?: string;
794
+ } | null;
795
+ source: import("@/types").TaskSource;
796
+ source_id: string | null;
797
+ template_item_id?: string | null;
798
+ escalation_policy_id: string | null;
799
+ current_escalation_tier: import("@/types").EscalationTier | null;
800
+ current_escalation_label: string | null;
801
+ next_escalation_at: string | null;
802
+ escalation_acknowledged_at: string | null;
803
+ escalation_snoozed_until: string | null;
804
+ comment_count?: number | null;
805
+ checklist_total?: number | null;
806
+ checklist_completed?: number | null;
807
+ blocker_count?: number | null;
808
+ open_blocker_count?: number | null;
809
+ has_unresolved_blockers?: boolean | null;
810
+ subtask_count?: number | null;
811
+ completed_subtask_count?: number | null;
812
+ completion_rules?: {
813
+ checklist_complete?: boolean;
814
+ comment_required?: boolean;
815
+ attachment_required?: boolean;
816
+ subtasks_complete?: boolean;
817
+ custom_field_required?: string[];
818
+ } | null;
819
+ tags: {
820
+ id: string;
821
+ name: string;
822
+ color: string | null;
823
+ created_at?: string;
824
+ updated_at?: string;
825
+ }[];
826
+ checklist_progress: {
827
+ completed: number;
828
+ total: number;
829
+ };
830
+ is_overdue: boolean;
831
+ is_complete: boolean;
832
+ progress_percentage: number;
833
+ metadata?: Record<string, unknown> | null;
834
+ created_at: string;
835
+ updated_at: string;
836
+ }[], Task[] | {
837
+ id: string;
838
+ tenant_id: string;
839
+ display_number: number;
840
+ display_number_formatted: string;
841
+ title: string;
842
+ description: string | null;
843
+ status: TaskStatus;
844
+ priority: TaskPriority;
845
+ taskable_type: string | null;
846
+ taskable_id: string | null;
847
+ created_by: {
848
+ id: string | number;
849
+ name: string;
850
+ avatar_url?: string;
851
+ } | null;
852
+ primary_assignee: {
853
+ id: string | number;
854
+ name: string;
855
+ avatar_url?: string;
856
+ } | null;
857
+ due_at: string | null;
858
+ completed_at: string | null;
859
+ completed_by: {
860
+ id: string | number;
861
+ name: string;
862
+ avatar_url?: string;
863
+ } | null;
864
+ source: import("@/types").TaskSource;
865
+ source_id: string | null;
866
+ template_item_id?: string | null;
867
+ escalation_policy_id: string | null;
868
+ current_escalation_tier: import("@/types").EscalationTier | null;
869
+ current_escalation_label: string | null;
870
+ next_escalation_at: string | null;
871
+ escalation_acknowledged_at: string | null;
872
+ escalation_snoozed_until: string | null;
873
+ comment_count?: number | null;
874
+ checklist_total?: number | null;
875
+ checklist_completed?: number | null;
876
+ blocker_count?: number | null;
877
+ open_blocker_count?: number | null;
878
+ has_unresolved_blockers?: boolean | null;
879
+ subtask_count?: number | null;
880
+ completed_subtask_count?: number | null;
881
+ completion_rules?: {
882
+ checklist_complete?: boolean;
883
+ comment_required?: boolean;
884
+ attachment_required?: boolean;
885
+ subtasks_complete?: boolean;
886
+ custom_field_required?: string[];
887
+ } | null;
888
+ tags: {
889
+ id: string;
890
+ name: string;
891
+ color: string | null;
892
+ created_at?: string;
893
+ updated_at?: string;
894
+ }[];
895
+ checklist_progress: {
896
+ completed: number;
897
+ total: number;
898
+ };
899
+ is_overdue: boolean;
900
+ is_complete: boolean;
901
+ progress_percentage: number;
902
+ metadata?: Record<string, unknown> | null;
903
+ created_at: string;
904
+ updated_at: string;
905
+ }[]>;
906
+ currentTask: import("vue").Ref<{
907
+ comments: {
908
+ id: string;
909
+ task_id?: string;
910
+ author: {
911
+ id: string | number;
912
+ name: string;
913
+ avatar_url?: string;
914
+ };
915
+ content: string;
916
+ visibility: "team" | "private";
917
+ metadata?: Record<string, unknown> | null;
918
+ created_at: string;
919
+ updated_at?: string | null;
920
+ }[];
921
+ checklist_items: {
922
+ id: string;
923
+ task_id?: string;
924
+ title: string;
925
+ is_completed: boolean;
926
+ completed_at: string | null;
927
+ completed_by: {
928
+ id: string | number;
929
+ name: string;
930
+ avatar_url?: string;
931
+ } | null;
932
+ position: number;
933
+ template_item_id?: string | null;
934
+ }[];
935
+ watchers: {
936
+ id: string | number;
937
+ name: string;
938
+ avatar_url?: string;
939
+ }[];
940
+ relations: {
941
+ id: string;
942
+ type: import("@/types").TaskRelationType;
943
+ related_task: {
944
+ id: string;
945
+ display_number_formatted: string;
946
+ title: string;
947
+ status: TaskStatus;
948
+ priority: TaskPriority;
949
+ } | null;
950
+ created_at?: string | null;
951
+ }[];
952
+ activity_logs: {
953
+ id: string;
954
+ task_id?: string;
955
+ user: {
956
+ id: string | number;
957
+ name: string;
958
+ avatar_url?: string;
959
+ } | null;
960
+ action: string;
961
+ description: string | null;
962
+ changes: Record<string, unknown> | null;
963
+ metadata: Record<string, unknown> | null;
964
+ created_at: string | null;
965
+ }[];
966
+ escalation_policy: {
967
+ id: string;
968
+ tenant_id: string;
969
+ profile_key: string | null;
970
+ name: string;
971
+ description: string | null;
972
+ is_default: boolean;
973
+ tiers: {
974
+ name: import("@/types").EscalationTier;
975
+ label: string;
976
+ offset_hours: number;
977
+ visual: string;
978
+ channels: string[];
979
+ target: "assignee" | "team_lead" | "manager" | "owner";
980
+ cooldown_hours: number;
981
+ color: string;
982
+ }[];
983
+ business_hours_only: boolean;
984
+ quiet_hours_start: string | null;
985
+ quiet_hours_end: string | null;
986
+ timezone: string;
987
+ created_at: string | null;
988
+ updated_at: string | null;
989
+ } | null;
990
+ escalation_events: {
991
+ id: string;
992
+ tenant_id: string;
993
+ task_id: string;
994
+ policy_id: string | null;
995
+ tier_name: import("@/types").EscalationTier | null;
996
+ tier_label: string | null;
997
+ event_type: import("@/types").EscalationEventType;
998
+ target_user_id: string | null;
999
+ target_role: string | null;
1000
+ target_user: {
1001
+ id: string | number;
1002
+ name: string;
1003
+ avatar_url?: string;
1004
+ } | null;
1005
+ channels_used: string[];
1006
+ acknowledged_at: string | null;
1007
+ acknowledged_by: string | null;
1008
+ acknowledged_by_user: {
1009
+ id: string | number;
1010
+ name: string;
1011
+ avatar_url?: string;
1012
+ } | null;
1013
+ snoozed_until: string | null;
1014
+ snooze_reason: string | null;
1015
+ blocker_task_id: string | null;
1016
+ blocker_task: {
1017
+ id: string;
1018
+ display_number_formatted: string;
1019
+ title: string;
1020
+ status: TaskStatus;
1021
+ priority: TaskPriority;
1022
+ } | null;
1023
+ metadata: Record<string, unknown> | null;
1024
+ created_at: string | null;
1025
+ }[];
1026
+ id: string;
1027
+ tenant_id: string;
1028
+ display_number: number;
1029
+ display_number_formatted: string;
1030
+ title: string;
1031
+ description: string | null;
1032
+ status: TaskStatus;
1033
+ priority: TaskPriority;
1034
+ taskable_type: string | null;
1035
+ taskable_id: string | null;
1036
+ created_by: {
1037
+ id: string | number;
1038
+ name: string;
1039
+ avatar_url?: string;
1040
+ } | null;
1041
+ primary_assignee: {
1042
+ id: string | number;
1043
+ name: string;
1044
+ avatar_url?: string;
1045
+ } | null;
1046
+ due_at: string | null;
1047
+ completed_at: string | null;
1048
+ completed_by: {
1049
+ id: string | number;
1050
+ name: string;
1051
+ avatar_url?: string;
1052
+ } | null;
1053
+ source: import("@/types").TaskSource;
1054
+ source_id: string | null;
1055
+ template_item_id?: string | null;
1056
+ escalation_policy_id: string | null;
1057
+ current_escalation_tier: import("@/types").EscalationTier | null;
1058
+ current_escalation_label: string | null;
1059
+ next_escalation_at: string | null;
1060
+ escalation_acknowledged_at: string | null;
1061
+ escalation_snoozed_until: string | null;
1062
+ comment_count?: number | null;
1063
+ checklist_total?: number | null;
1064
+ checklist_completed?: number | null;
1065
+ blocker_count?: number | null;
1066
+ open_blocker_count?: number | null;
1067
+ has_unresolved_blockers?: boolean | null;
1068
+ subtask_count?: number | null;
1069
+ completed_subtask_count?: number | null;
1070
+ completion_rules?: {
1071
+ checklist_complete?: boolean;
1072
+ comment_required?: boolean;
1073
+ attachment_required?: boolean;
1074
+ subtasks_complete?: boolean;
1075
+ custom_field_required?: string[];
1076
+ } | null;
1077
+ tags: {
1078
+ id: string;
1079
+ name: string;
1080
+ color: string | null;
1081
+ created_at?: string;
1082
+ updated_at?: string;
1083
+ }[];
1084
+ checklist_progress: {
1085
+ completed: number;
1086
+ total: number;
1087
+ };
1088
+ is_overdue: boolean;
1089
+ is_complete: boolean;
1090
+ progress_percentage: number;
1091
+ metadata?: Record<string, unknown> | null;
1092
+ created_at: string;
1093
+ updated_at: string;
1094
+ } | null, TaskDetail | {
1095
+ comments: {
1096
+ id: string;
1097
+ task_id?: string;
1098
+ author: {
1099
+ id: string | number;
1100
+ name: string;
1101
+ avatar_url?: string;
1102
+ };
1103
+ content: string;
1104
+ visibility: "team" | "private";
1105
+ metadata?: Record<string, unknown> | null;
1106
+ created_at: string;
1107
+ updated_at?: string | null;
1108
+ }[];
1109
+ checklist_items: {
1110
+ id: string;
1111
+ task_id?: string;
1112
+ title: string;
1113
+ is_completed: boolean;
1114
+ completed_at: string | null;
1115
+ completed_by: {
1116
+ id: string | number;
1117
+ name: string;
1118
+ avatar_url?: string;
1119
+ } | null;
1120
+ position: number;
1121
+ template_item_id?: string | null;
1122
+ }[];
1123
+ watchers: {
1124
+ id: string | number;
1125
+ name: string;
1126
+ avatar_url?: string;
1127
+ }[];
1128
+ relations: {
1129
+ id: string;
1130
+ type: import("@/types").TaskRelationType;
1131
+ related_task: {
1132
+ id: string;
1133
+ display_number_formatted: string;
1134
+ title: string;
1135
+ status: TaskStatus;
1136
+ priority: TaskPriority;
1137
+ } | null;
1138
+ created_at?: string | null;
1139
+ }[];
1140
+ activity_logs: {
1141
+ id: string;
1142
+ task_id?: string;
1143
+ user: {
1144
+ id: string | number;
1145
+ name: string;
1146
+ avatar_url?: string;
1147
+ } | null;
1148
+ action: string;
1149
+ description: string | null;
1150
+ changes: Record<string, unknown> | null;
1151
+ metadata: Record<string, unknown> | null;
1152
+ created_at: string | null;
1153
+ }[];
1154
+ escalation_policy: {
1155
+ id: string;
1156
+ tenant_id: string;
1157
+ profile_key: string | null;
1158
+ name: string;
1159
+ description: string | null;
1160
+ is_default: boolean;
1161
+ tiers: {
1162
+ name: import("@/types").EscalationTier;
1163
+ label: string;
1164
+ offset_hours: number;
1165
+ visual: string;
1166
+ channels: string[];
1167
+ target: "assignee" | "team_lead" | "manager" | "owner";
1168
+ cooldown_hours: number;
1169
+ color: string;
1170
+ }[];
1171
+ business_hours_only: boolean;
1172
+ quiet_hours_start: string | null;
1173
+ quiet_hours_end: string | null;
1174
+ timezone: string;
1175
+ created_at: string | null;
1176
+ updated_at: string | null;
1177
+ } | null;
1178
+ escalation_events: {
1179
+ id: string;
1180
+ tenant_id: string;
1181
+ task_id: string;
1182
+ policy_id: string | null;
1183
+ tier_name: import("@/types").EscalationTier | null;
1184
+ tier_label: string | null;
1185
+ event_type: import("@/types").EscalationEventType;
1186
+ target_user_id: string | null;
1187
+ target_role: string | null;
1188
+ target_user: {
1189
+ id: string | number;
1190
+ name: string;
1191
+ avatar_url?: string;
1192
+ } | null;
1193
+ channels_used: string[];
1194
+ acknowledged_at: string | null;
1195
+ acknowledged_by: string | null;
1196
+ acknowledged_by_user: {
1197
+ id: string | number;
1198
+ name: string;
1199
+ avatar_url?: string;
1200
+ } | null;
1201
+ snoozed_until: string | null;
1202
+ snooze_reason: string | null;
1203
+ blocker_task_id: string | null;
1204
+ blocker_task: {
1205
+ id: string;
1206
+ display_number_formatted: string;
1207
+ title: string;
1208
+ status: TaskStatus;
1209
+ priority: TaskPriority;
1210
+ } | null;
1211
+ metadata: Record<string, unknown> | null;
1212
+ created_at: string | null;
1213
+ }[];
1214
+ id: string;
1215
+ tenant_id: string;
1216
+ display_number: number;
1217
+ display_number_formatted: string;
1218
+ title: string;
1219
+ description: string | null;
1220
+ status: TaskStatus;
1221
+ priority: TaskPriority;
1222
+ taskable_type: string | null;
1223
+ taskable_id: string | null;
1224
+ created_by: {
1225
+ id: string | number;
1226
+ name: string;
1227
+ avatar_url?: string;
1228
+ } | null;
1229
+ primary_assignee: {
1230
+ id: string | number;
1231
+ name: string;
1232
+ avatar_url?: string;
1233
+ } | null;
1234
+ due_at: string | null;
1235
+ completed_at: string | null;
1236
+ completed_by: {
1237
+ id: string | number;
1238
+ name: string;
1239
+ avatar_url?: string;
1240
+ } | null;
1241
+ source: import("@/types").TaskSource;
1242
+ source_id: string | null;
1243
+ template_item_id?: string | null;
1244
+ escalation_policy_id: string | null;
1245
+ current_escalation_tier: import("@/types").EscalationTier | null;
1246
+ current_escalation_label: string | null;
1247
+ next_escalation_at: string | null;
1248
+ escalation_acknowledged_at: string | null;
1249
+ escalation_snoozed_until: string | null;
1250
+ comment_count?: number | null;
1251
+ checklist_total?: number | null;
1252
+ checklist_completed?: number | null;
1253
+ blocker_count?: number | null;
1254
+ open_blocker_count?: number | null;
1255
+ has_unresolved_blockers?: boolean | null;
1256
+ subtask_count?: number | null;
1257
+ completed_subtask_count?: number | null;
1258
+ completion_rules?: {
1259
+ checklist_complete?: boolean;
1260
+ comment_required?: boolean;
1261
+ attachment_required?: boolean;
1262
+ subtasks_complete?: boolean;
1263
+ custom_field_required?: string[];
1264
+ } | null;
1265
+ tags: {
1266
+ id: string;
1267
+ name: string;
1268
+ color: string | null;
1269
+ created_at?: string;
1270
+ updated_at?: string;
1271
+ }[];
1272
+ checklist_progress: {
1273
+ completed: number;
1274
+ total: number;
1275
+ };
1276
+ is_overdue: boolean;
1277
+ is_complete: boolean;
1278
+ progress_percentage: number;
1279
+ metadata?: Record<string, unknown> | null;
1280
+ created_at: string;
1281
+ updated_at: string;
1282
+ } | null>;
1283
+ entitySummary: import("vue").Ref<{
1284
+ total: number;
1285
+ open: number;
1286
+ overdue: number;
1287
+ completed: number;
1288
+ recent_tasks: {
1289
+ id: string;
1290
+ display_number_formatted: string;
1291
+ title: string;
1292
+ status: TaskStatus;
1293
+ priority: TaskPriority;
1294
+ }[];
1295
+ } | null, EntityTaskSummary | {
1296
+ total: number;
1297
+ open: number;
1298
+ overdue: number;
1299
+ completed: number;
1300
+ recent_tasks: {
1301
+ id: string;
1302
+ display_number_formatted: string;
1303
+ title: string;
1304
+ status: TaskStatus;
1305
+ priority: TaskPriority;
1306
+ }[];
1307
+ } | null>;
1308
+ loading: import("vue").Ref<boolean, boolean>;
1309
+ error: import("vue").Ref<string | null, string | null>;
1310
+ pagination: import("vue").Ref<{
1311
+ current_page: number;
1312
+ last_page: number;
1313
+ per_page: number;
1314
+ total: number;
1315
+ }, PaginationMeta | {
1316
+ current_page: number;
1317
+ last_page: number;
1318
+ per_page: number;
1319
+ total: number;
1320
+ }>;
1321
+ lastFilters: import("vue").Ref<{
1322
+ status?: TaskStatus | TaskStatus[];
1323
+ priority?: TaskPriority | TaskPriority[];
1324
+ assignee?: string;
1325
+ assignee_id?: string;
1326
+ created_by?: string;
1327
+ watching?: boolean;
1328
+ tag?: string;
1329
+ overdue?: boolean;
1330
+ due_before?: string;
1331
+ due_after?: string;
1332
+ search?: string;
1333
+ taskable_type?: string;
1334
+ taskable_id?: string;
1335
+ sort?: string;
1336
+ page?: number;
1337
+ per_page?: number;
1338
+ }, TaskFilters | {
1339
+ status?: TaskStatus | TaskStatus[];
1340
+ priority?: TaskPriority | TaskPriority[];
1341
+ assignee?: string;
1342
+ assignee_id?: string;
1343
+ created_by?: string;
1344
+ watching?: boolean;
1345
+ tag?: string;
1346
+ overdue?: boolean;
1347
+ due_before?: string;
1348
+ due_after?: string;
1349
+ search?: string;
1350
+ taskable_type?: string;
1351
+ taskable_id?: string;
1352
+ sort?: string;
1353
+ page?: number;
1354
+ per_page?: number;
1355
+ }>;
1356
+ savedFilters: import("vue").Ref<{
1357
+ id: string;
1358
+ tenant_id: string;
1359
+ user_id: string;
1360
+ name: string;
1361
+ filters: {
1362
+ status?: TaskStatus | TaskStatus[];
1363
+ priority?: TaskPriority | TaskPriority[];
1364
+ assignee?: string;
1365
+ assignee_id?: string;
1366
+ created_by?: string;
1367
+ watching?: boolean;
1368
+ tag?: string;
1369
+ overdue?: boolean;
1370
+ due_before?: string;
1371
+ due_after?: string;
1372
+ search?: string;
1373
+ taskable_type?: string;
1374
+ taskable_id?: string;
1375
+ sort?: string;
1376
+ page?: number;
1377
+ per_page?: number;
1378
+ };
1379
+ is_default: boolean;
1380
+ is_shared: boolean;
1381
+ position: number;
1382
+ created_at: string | null;
1383
+ updated_at: string | null;
1384
+ }[], TaskSavedFilter[] | {
1385
+ id: string;
1386
+ tenant_id: string;
1387
+ user_id: string;
1388
+ name: string;
1389
+ filters: {
1390
+ status?: TaskStatus | TaskStatus[];
1391
+ priority?: TaskPriority | TaskPriority[];
1392
+ assignee?: string;
1393
+ assignee_id?: string;
1394
+ created_by?: string;
1395
+ watching?: boolean;
1396
+ tag?: string;
1397
+ overdue?: boolean;
1398
+ due_before?: string;
1399
+ due_after?: string;
1400
+ search?: string;
1401
+ taskable_type?: string;
1402
+ taskable_id?: string;
1403
+ sort?: string;
1404
+ page?: number;
1405
+ per_page?: number;
1406
+ };
1407
+ is_default: boolean;
1408
+ is_shared: boolean;
1409
+ position: number;
1410
+ created_at: string | null;
1411
+ updated_at: string | null;
1412
+ }[]>;
1413
+ savedFiltersLoading: import("vue").Ref<boolean, boolean>;
1414
+ bulkResult: import("vue").Ref<{
1415
+ success: string[];
1416
+ failed: {
1417
+ id: string;
1418
+ reason: string;
1419
+ }[];
1420
+ } | null, TaskBulkActionResult | {
1421
+ success: string[];
1422
+ failed: {
1423
+ id: string;
1424
+ reason: string;
1425
+ }[];
1426
+ } | null>;
1427
+ bulkLoading: import("vue").Ref<boolean, boolean>;
1428
+ overdueTasks: import("vue").ComputedRef<{
1429
+ id: string;
1430
+ tenant_id: string;
1431
+ display_number: number;
1432
+ display_number_formatted: string;
1433
+ title: string;
1434
+ description: string | null;
1435
+ status: TaskStatus;
1436
+ priority: TaskPriority;
1437
+ taskable_type: string | null;
1438
+ taskable_id: string | null;
1439
+ created_by: {
1440
+ id: string | number;
1441
+ name: string;
1442
+ avatar_url?: string;
1443
+ } | null;
1444
+ primary_assignee: {
1445
+ id: string | number;
1446
+ name: string;
1447
+ avatar_url?: string;
1448
+ } | null;
1449
+ due_at: string | null;
1450
+ completed_at: string | null;
1451
+ completed_by: {
1452
+ id: string | number;
1453
+ name: string;
1454
+ avatar_url?: string;
1455
+ } | null;
1456
+ source: import("@/types").TaskSource;
1457
+ source_id: string | null;
1458
+ template_item_id?: string | null;
1459
+ escalation_policy_id: string | null;
1460
+ current_escalation_tier: import("@/types").EscalationTier | null;
1461
+ current_escalation_label: string | null;
1462
+ next_escalation_at: string | null;
1463
+ escalation_acknowledged_at: string | null;
1464
+ escalation_snoozed_until: string | null;
1465
+ comment_count?: number | null;
1466
+ checklist_total?: number | null;
1467
+ checklist_completed?: number | null;
1468
+ blocker_count?: number | null;
1469
+ open_blocker_count?: number | null;
1470
+ has_unresolved_blockers?: boolean | null;
1471
+ subtask_count?: number | null;
1472
+ completed_subtask_count?: number | null;
1473
+ completion_rules?: {
1474
+ checklist_complete?: boolean;
1475
+ comment_required?: boolean;
1476
+ attachment_required?: boolean;
1477
+ subtasks_complete?: boolean;
1478
+ custom_field_required?: string[];
1479
+ } | null;
1480
+ tags: {
1481
+ id: string;
1482
+ name: string;
1483
+ color: string | null;
1484
+ created_at?: string;
1485
+ updated_at?: string;
1486
+ }[];
1487
+ checklist_progress: {
1488
+ completed: number;
1489
+ total: number;
1490
+ };
1491
+ is_overdue: boolean;
1492
+ is_complete: boolean;
1493
+ progress_percentage: number;
1494
+ metadata?: Record<string, unknown> | null;
1495
+ created_at: string;
1496
+ updated_at: string;
1497
+ }[]>;
1498
+ tasksByStatus: import("vue").ComputedRef<Record<TaskStatus, Task[]>>;
1499
+ tasksByPriority: import("vue").ComputedRef<Record<TaskPriority, Task[]>>;
1500
+ isViewingTask: (taskId: string) => boolean;
1501
+ handleTaskCreated: (payload: TaskCreatedBroadcastPayload) => Task;
1502
+ handleTaskUpdated: (payload: TaskUpdatedBroadcastPayload) => Task;
1503
+ handleStatusChanged: (payload: TaskStatusChangedBroadcastPayload) => Task;
1504
+ handleTaskAssigned: (payload: TaskAssignedBroadcastPayload) => Task;
1505
+ handleTaskCompleted: (payload: TaskCompletedBroadcastPayload) => Task;
1506
+ handleCommentAdded: (payload: TaskCommentAddedBroadcastPayload) => Task;
1507
+ handleChecklistToggled: (payload: TaskChecklistToggledBroadcastPayload) => Task;
1508
+ fetchTasks: (filters?: TaskFilters) => Promise<void>;
1509
+ fetchTask: (id: string) => Promise<TaskDetail>;
1510
+ createTask: (payload: TaskMutationPayload) => Promise<TaskDetail>;
1511
+ updateTask: (id: string, payload: TaskUpdatePayload) => Promise<TaskDetail>;
1512
+ deleteTask: (id: string) => Promise<void>;
1513
+ completeTask: (id: string, note?: string) => Promise<TaskDetail>;
1514
+ reopenTask: (id: string) => Promise<TaskDetail>;
1515
+ cancelTask: (id: string) => Promise<TaskDetail>;
1516
+ addComment: (taskId: string, payload: TaskCommentPayload) => Promise<TaskDetail | null>;
1517
+ acknowledgeEscalation: (taskId: string) => Promise<TaskDetail | null>;
1518
+ snoozeEscalation: (taskId: string, payload: TaskEscalationSnoozePayload) => Promise<TaskDetail | null>;
1519
+ addChecklistItem: (taskId: string, title: string) => Promise<TaskDetail | null>;
1520
+ toggleChecklistItem: (taskId: string, itemId: string) => Promise<TaskDetail | null>;
1521
+ removeChecklistItem: (taskId: string, itemId: string) => Promise<TaskDetail | null>;
1522
+ fetchEntityTasks: (type: string, id: string, filters?: TaskFilters) => Promise<void>;
1523
+ fetchEntitySummary: (type: string, id: string) => Promise<EntityTaskSummary>;
1524
+ instantiateTemplate: (templateId: string, payload: TemplateInstantiationPayload) => Promise<TaskDetail>;
1525
+ fetchSavedFilters: () => Promise<TaskSavedFilter[]>;
1526
+ createSavedFilter: (payload: Omit<TaskSavedFilter, "id" | "tenant_id" | "user_id" | "created_at" | "updated_at">) => Promise<TaskSavedFilter>;
1527
+ updateSavedFilterRecord: (id: string, payload: Partial<Omit<TaskSavedFilter, "id" | "tenant_id" | "user_id" | "created_at" | "updated_at">>) => Promise<TaskSavedFilter>;
1528
+ deleteSavedFilterRecord: (id: string) => Promise<void>;
1529
+ runBulkAction: (taskIds: string[], action: TaskBulkAction, params?: Record<string, unknown>) => Promise<TaskBulkActionResult>;
1530
+ }, "overdueTasks" | "tasksByStatus" | "tasksByPriority">, Pick<{
1531
+ tasks: import("vue").Ref<{
1532
+ id: string;
1533
+ tenant_id: string;
1534
+ display_number: number;
1535
+ display_number_formatted: string;
1536
+ title: string;
1537
+ description: string | null;
1538
+ status: TaskStatus;
1539
+ priority: TaskPriority;
1540
+ taskable_type: string | null;
1541
+ taskable_id: string | null;
1542
+ created_by: {
1543
+ id: string | number;
1544
+ name: string;
1545
+ avatar_url?: string;
1546
+ } | null;
1547
+ primary_assignee: {
1548
+ id: string | number;
1549
+ name: string;
1550
+ avatar_url?: string;
1551
+ } | null;
1552
+ due_at: string | null;
1553
+ completed_at: string | null;
1554
+ completed_by: {
1555
+ id: string | number;
1556
+ name: string;
1557
+ avatar_url?: string;
1558
+ } | null;
1559
+ source: import("@/types").TaskSource;
1560
+ source_id: string | null;
1561
+ template_item_id?: string | null;
1562
+ escalation_policy_id: string | null;
1563
+ current_escalation_tier: import("@/types").EscalationTier | null;
1564
+ current_escalation_label: string | null;
1565
+ next_escalation_at: string | null;
1566
+ escalation_acknowledged_at: string | null;
1567
+ escalation_snoozed_until: string | null;
1568
+ comment_count?: number | null;
1569
+ checklist_total?: number | null;
1570
+ checklist_completed?: number | null;
1571
+ blocker_count?: number | null;
1572
+ open_blocker_count?: number | null;
1573
+ has_unresolved_blockers?: boolean | null;
1574
+ subtask_count?: number | null;
1575
+ completed_subtask_count?: number | null;
1576
+ completion_rules?: {
1577
+ checklist_complete?: boolean;
1578
+ comment_required?: boolean;
1579
+ attachment_required?: boolean;
1580
+ subtasks_complete?: boolean;
1581
+ custom_field_required?: string[];
1582
+ } | null;
1583
+ tags: {
1584
+ id: string;
1585
+ name: string;
1586
+ color: string | null;
1587
+ created_at?: string;
1588
+ updated_at?: string;
1589
+ }[];
1590
+ checklist_progress: {
1591
+ completed: number;
1592
+ total: number;
1593
+ };
1594
+ is_overdue: boolean;
1595
+ is_complete: boolean;
1596
+ progress_percentage: number;
1597
+ metadata?: Record<string, unknown> | null;
1598
+ created_at: string;
1599
+ updated_at: string;
1600
+ }[], Task[] | {
1601
+ id: string;
1602
+ tenant_id: string;
1603
+ display_number: number;
1604
+ display_number_formatted: string;
1605
+ title: string;
1606
+ description: string | null;
1607
+ status: TaskStatus;
1608
+ priority: TaskPriority;
1609
+ taskable_type: string | null;
1610
+ taskable_id: string | null;
1611
+ created_by: {
1612
+ id: string | number;
1613
+ name: string;
1614
+ avatar_url?: string;
1615
+ } | null;
1616
+ primary_assignee: {
1617
+ id: string | number;
1618
+ name: string;
1619
+ avatar_url?: string;
1620
+ } | null;
1621
+ due_at: string | null;
1622
+ completed_at: string | null;
1623
+ completed_by: {
1624
+ id: string | number;
1625
+ name: string;
1626
+ avatar_url?: string;
1627
+ } | null;
1628
+ source: import("@/types").TaskSource;
1629
+ source_id: string | null;
1630
+ template_item_id?: string | null;
1631
+ escalation_policy_id: string | null;
1632
+ current_escalation_tier: import("@/types").EscalationTier | null;
1633
+ current_escalation_label: string | null;
1634
+ next_escalation_at: string | null;
1635
+ escalation_acknowledged_at: string | null;
1636
+ escalation_snoozed_until: string | null;
1637
+ comment_count?: number | null;
1638
+ checklist_total?: number | null;
1639
+ checklist_completed?: number | null;
1640
+ blocker_count?: number | null;
1641
+ open_blocker_count?: number | null;
1642
+ has_unresolved_blockers?: boolean | null;
1643
+ subtask_count?: number | null;
1644
+ completed_subtask_count?: number | null;
1645
+ completion_rules?: {
1646
+ checklist_complete?: boolean;
1647
+ comment_required?: boolean;
1648
+ attachment_required?: boolean;
1649
+ subtasks_complete?: boolean;
1650
+ custom_field_required?: string[];
1651
+ } | null;
1652
+ tags: {
1653
+ id: string;
1654
+ name: string;
1655
+ color: string | null;
1656
+ created_at?: string;
1657
+ updated_at?: string;
1658
+ }[];
1659
+ checklist_progress: {
1660
+ completed: number;
1661
+ total: number;
1662
+ };
1663
+ is_overdue: boolean;
1664
+ is_complete: boolean;
1665
+ progress_percentage: number;
1666
+ metadata?: Record<string, unknown> | null;
1667
+ created_at: string;
1668
+ updated_at: string;
1669
+ }[]>;
1670
+ currentTask: import("vue").Ref<{
1671
+ comments: {
1672
+ id: string;
1673
+ task_id?: string;
1674
+ author: {
1675
+ id: string | number;
1676
+ name: string;
1677
+ avatar_url?: string;
1678
+ };
1679
+ content: string;
1680
+ visibility: "team" | "private";
1681
+ metadata?: Record<string, unknown> | null;
1682
+ created_at: string;
1683
+ updated_at?: string | null;
1684
+ }[];
1685
+ checklist_items: {
1686
+ id: string;
1687
+ task_id?: string;
1688
+ title: string;
1689
+ is_completed: boolean;
1690
+ completed_at: string | null;
1691
+ completed_by: {
1692
+ id: string | number;
1693
+ name: string;
1694
+ avatar_url?: string;
1695
+ } | null;
1696
+ position: number;
1697
+ template_item_id?: string | null;
1698
+ }[];
1699
+ watchers: {
1700
+ id: string | number;
1701
+ name: string;
1702
+ avatar_url?: string;
1703
+ }[];
1704
+ relations: {
1705
+ id: string;
1706
+ type: import("@/types").TaskRelationType;
1707
+ related_task: {
1708
+ id: string;
1709
+ display_number_formatted: string;
1710
+ title: string;
1711
+ status: TaskStatus;
1712
+ priority: TaskPriority;
1713
+ } | null;
1714
+ created_at?: string | null;
1715
+ }[];
1716
+ activity_logs: {
1717
+ id: string;
1718
+ task_id?: string;
1719
+ user: {
1720
+ id: string | number;
1721
+ name: string;
1722
+ avatar_url?: string;
1723
+ } | null;
1724
+ action: string;
1725
+ description: string | null;
1726
+ changes: Record<string, unknown> | null;
1727
+ metadata: Record<string, unknown> | null;
1728
+ created_at: string | null;
1729
+ }[];
1730
+ escalation_policy: {
1731
+ id: string;
1732
+ tenant_id: string;
1733
+ profile_key: string | null;
1734
+ name: string;
1735
+ description: string | null;
1736
+ is_default: boolean;
1737
+ tiers: {
1738
+ name: import("@/types").EscalationTier;
1739
+ label: string;
1740
+ offset_hours: number;
1741
+ visual: string;
1742
+ channels: string[];
1743
+ target: "assignee" | "team_lead" | "manager" | "owner";
1744
+ cooldown_hours: number;
1745
+ color: string;
1746
+ }[];
1747
+ business_hours_only: boolean;
1748
+ quiet_hours_start: string | null;
1749
+ quiet_hours_end: string | null;
1750
+ timezone: string;
1751
+ created_at: string | null;
1752
+ updated_at: string | null;
1753
+ } | null;
1754
+ escalation_events: {
1755
+ id: string;
1756
+ tenant_id: string;
1757
+ task_id: string;
1758
+ policy_id: string | null;
1759
+ tier_name: import("@/types").EscalationTier | null;
1760
+ tier_label: string | null;
1761
+ event_type: import("@/types").EscalationEventType;
1762
+ target_user_id: string | null;
1763
+ target_role: string | null;
1764
+ target_user: {
1765
+ id: string | number;
1766
+ name: string;
1767
+ avatar_url?: string;
1768
+ } | null;
1769
+ channels_used: string[];
1770
+ acknowledged_at: string | null;
1771
+ acknowledged_by: string | null;
1772
+ acknowledged_by_user: {
1773
+ id: string | number;
1774
+ name: string;
1775
+ avatar_url?: string;
1776
+ } | null;
1777
+ snoozed_until: string | null;
1778
+ snooze_reason: string | null;
1779
+ blocker_task_id: string | null;
1780
+ blocker_task: {
1781
+ id: string;
1782
+ display_number_formatted: string;
1783
+ title: string;
1784
+ status: TaskStatus;
1785
+ priority: TaskPriority;
1786
+ } | null;
1787
+ metadata: Record<string, unknown> | null;
1788
+ created_at: string | null;
1789
+ }[];
1790
+ id: string;
1791
+ tenant_id: string;
1792
+ display_number: number;
1793
+ display_number_formatted: string;
1794
+ title: string;
1795
+ description: string | null;
1796
+ status: TaskStatus;
1797
+ priority: TaskPriority;
1798
+ taskable_type: string | null;
1799
+ taskable_id: string | null;
1800
+ created_by: {
1801
+ id: string | number;
1802
+ name: string;
1803
+ avatar_url?: string;
1804
+ } | null;
1805
+ primary_assignee: {
1806
+ id: string | number;
1807
+ name: string;
1808
+ avatar_url?: string;
1809
+ } | null;
1810
+ due_at: string | null;
1811
+ completed_at: string | null;
1812
+ completed_by: {
1813
+ id: string | number;
1814
+ name: string;
1815
+ avatar_url?: string;
1816
+ } | null;
1817
+ source: import("@/types").TaskSource;
1818
+ source_id: string | null;
1819
+ template_item_id?: string | null;
1820
+ escalation_policy_id: string | null;
1821
+ current_escalation_tier: import("@/types").EscalationTier | null;
1822
+ current_escalation_label: string | null;
1823
+ next_escalation_at: string | null;
1824
+ escalation_acknowledged_at: string | null;
1825
+ escalation_snoozed_until: string | null;
1826
+ comment_count?: number | null;
1827
+ checklist_total?: number | null;
1828
+ checklist_completed?: number | null;
1829
+ blocker_count?: number | null;
1830
+ open_blocker_count?: number | null;
1831
+ has_unresolved_blockers?: boolean | null;
1832
+ subtask_count?: number | null;
1833
+ completed_subtask_count?: number | null;
1834
+ completion_rules?: {
1835
+ checklist_complete?: boolean;
1836
+ comment_required?: boolean;
1837
+ attachment_required?: boolean;
1838
+ subtasks_complete?: boolean;
1839
+ custom_field_required?: string[];
1840
+ } | null;
1841
+ tags: {
1842
+ id: string;
1843
+ name: string;
1844
+ color: string | null;
1845
+ created_at?: string;
1846
+ updated_at?: string;
1847
+ }[];
1848
+ checklist_progress: {
1849
+ completed: number;
1850
+ total: number;
1851
+ };
1852
+ is_overdue: boolean;
1853
+ is_complete: boolean;
1854
+ progress_percentage: number;
1855
+ metadata?: Record<string, unknown> | null;
1856
+ created_at: string;
1857
+ updated_at: string;
1858
+ } | null, TaskDetail | {
1859
+ comments: {
1860
+ id: string;
1861
+ task_id?: string;
1862
+ author: {
1863
+ id: string | number;
1864
+ name: string;
1865
+ avatar_url?: string;
1866
+ };
1867
+ content: string;
1868
+ visibility: "team" | "private";
1869
+ metadata?: Record<string, unknown> | null;
1870
+ created_at: string;
1871
+ updated_at?: string | null;
1872
+ }[];
1873
+ checklist_items: {
1874
+ id: string;
1875
+ task_id?: string;
1876
+ title: string;
1877
+ is_completed: boolean;
1878
+ completed_at: string | null;
1879
+ completed_by: {
1880
+ id: string | number;
1881
+ name: string;
1882
+ avatar_url?: string;
1883
+ } | null;
1884
+ position: number;
1885
+ template_item_id?: string | null;
1886
+ }[];
1887
+ watchers: {
1888
+ id: string | number;
1889
+ name: string;
1890
+ avatar_url?: string;
1891
+ }[];
1892
+ relations: {
1893
+ id: string;
1894
+ type: import("@/types").TaskRelationType;
1895
+ related_task: {
1896
+ id: string;
1897
+ display_number_formatted: string;
1898
+ title: string;
1899
+ status: TaskStatus;
1900
+ priority: TaskPriority;
1901
+ } | null;
1902
+ created_at?: string | null;
1903
+ }[];
1904
+ activity_logs: {
1905
+ id: string;
1906
+ task_id?: string;
1907
+ user: {
1908
+ id: string | number;
1909
+ name: string;
1910
+ avatar_url?: string;
1911
+ } | null;
1912
+ action: string;
1913
+ description: string | null;
1914
+ changes: Record<string, unknown> | null;
1915
+ metadata: Record<string, unknown> | null;
1916
+ created_at: string | null;
1917
+ }[];
1918
+ escalation_policy: {
1919
+ id: string;
1920
+ tenant_id: string;
1921
+ profile_key: string | null;
1922
+ name: string;
1923
+ description: string | null;
1924
+ is_default: boolean;
1925
+ tiers: {
1926
+ name: import("@/types").EscalationTier;
1927
+ label: string;
1928
+ offset_hours: number;
1929
+ visual: string;
1930
+ channels: string[];
1931
+ target: "assignee" | "team_lead" | "manager" | "owner";
1932
+ cooldown_hours: number;
1933
+ color: string;
1934
+ }[];
1935
+ business_hours_only: boolean;
1936
+ quiet_hours_start: string | null;
1937
+ quiet_hours_end: string | null;
1938
+ timezone: string;
1939
+ created_at: string | null;
1940
+ updated_at: string | null;
1941
+ } | null;
1942
+ escalation_events: {
1943
+ id: string;
1944
+ tenant_id: string;
1945
+ task_id: string;
1946
+ policy_id: string | null;
1947
+ tier_name: import("@/types").EscalationTier | null;
1948
+ tier_label: string | null;
1949
+ event_type: import("@/types").EscalationEventType;
1950
+ target_user_id: string | null;
1951
+ target_role: string | null;
1952
+ target_user: {
1953
+ id: string | number;
1954
+ name: string;
1955
+ avatar_url?: string;
1956
+ } | null;
1957
+ channels_used: string[];
1958
+ acknowledged_at: string | null;
1959
+ acknowledged_by: string | null;
1960
+ acknowledged_by_user: {
1961
+ id: string | number;
1962
+ name: string;
1963
+ avatar_url?: string;
1964
+ } | null;
1965
+ snoozed_until: string | null;
1966
+ snooze_reason: string | null;
1967
+ blocker_task_id: string | null;
1968
+ blocker_task: {
1969
+ id: string;
1970
+ display_number_formatted: string;
1971
+ title: string;
1972
+ status: TaskStatus;
1973
+ priority: TaskPriority;
1974
+ } | null;
1975
+ metadata: Record<string, unknown> | null;
1976
+ created_at: string | null;
1977
+ }[];
1978
+ id: string;
1979
+ tenant_id: string;
1980
+ display_number: number;
1981
+ display_number_formatted: string;
1982
+ title: string;
1983
+ description: string | null;
1984
+ status: TaskStatus;
1985
+ priority: TaskPriority;
1986
+ taskable_type: string | null;
1987
+ taskable_id: string | null;
1988
+ created_by: {
1989
+ id: string | number;
1990
+ name: string;
1991
+ avatar_url?: string;
1992
+ } | null;
1993
+ primary_assignee: {
1994
+ id: string | number;
1995
+ name: string;
1996
+ avatar_url?: string;
1997
+ } | null;
1998
+ due_at: string | null;
1999
+ completed_at: string | null;
2000
+ completed_by: {
2001
+ id: string | number;
2002
+ name: string;
2003
+ avatar_url?: string;
2004
+ } | null;
2005
+ source: import("@/types").TaskSource;
2006
+ source_id: string | null;
2007
+ template_item_id?: string | null;
2008
+ escalation_policy_id: string | null;
2009
+ current_escalation_tier: import("@/types").EscalationTier | null;
2010
+ current_escalation_label: string | null;
2011
+ next_escalation_at: string | null;
2012
+ escalation_acknowledged_at: string | null;
2013
+ escalation_snoozed_until: string | null;
2014
+ comment_count?: number | null;
2015
+ checklist_total?: number | null;
2016
+ checklist_completed?: number | null;
2017
+ blocker_count?: number | null;
2018
+ open_blocker_count?: number | null;
2019
+ has_unresolved_blockers?: boolean | null;
2020
+ subtask_count?: number | null;
2021
+ completed_subtask_count?: number | null;
2022
+ completion_rules?: {
2023
+ checklist_complete?: boolean;
2024
+ comment_required?: boolean;
2025
+ attachment_required?: boolean;
2026
+ subtasks_complete?: boolean;
2027
+ custom_field_required?: string[];
2028
+ } | null;
2029
+ tags: {
2030
+ id: string;
2031
+ name: string;
2032
+ color: string | null;
2033
+ created_at?: string;
2034
+ updated_at?: string;
2035
+ }[];
2036
+ checklist_progress: {
2037
+ completed: number;
2038
+ total: number;
2039
+ };
2040
+ is_overdue: boolean;
2041
+ is_complete: boolean;
2042
+ progress_percentage: number;
2043
+ metadata?: Record<string, unknown> | null;
2044
+ created_at: string;
2045
+ updated_at: string;
2046
+ } | null>;
2047
+ entitySummary: import("vue").Ref<{
2048
+ total: number;
2049
+ open: number;
2050
+ overdue: number;
2051
+ completed: number;
2052
+ recent_tasks: {
2053
+ id: string;
2054
+ display_number_formatted: string;
2055
+ title: string;
2056
+ status: TaskStatus;
2057
+ priority: TaskPriority;
2058
+ }[];
2059
+ } | null, EntityTaskSummary | {
2060
+ total: number;
2061
+ open: number;
2062
+ overdue: number;
2063
+ completed: number;
2064
+ recent_tasks: {
2065
+ id: string;
2066
+ display_number_formatted: string;
2067
+ title: string;
2068
+ status: TaskStatus;
2069
+ priority: TaskPriority;
2070
+ }[];
2071
+ } | null>;
2072
+ loading: import("vue").Ref<boolean, boolean>;
2073
+ error: import("vue").Ref<string | null, string | null>;
2074
+ pagination: import("vue").Ref<{
2075
+ current_page: number;
2076
+ last_page: number;
2077
+ per_page: number;
2078
+ total: number;
2079
+ }, PaginationMeta | {
2080
+ current_page: number;
2081
+ last_page: number;
2082
+ per_page: number;
2083
+ total: number;
2084
+ }>;
2085
+ lastFilters: import("vue").Ref<{
2086
+ status?: TaskStatus | TaskStatus[];
2087
+ priority?: TaskPriority | TaskPriority[];
2088
+ assignee?: string;
2089
+ assignee_id?: string;
2090
+ created_by?: string;
2091
+ watching?: boolean;
2092
+ tag?: string;
2093
+ overdue?: boolean;
2094
+ due_before?: string;
2095
+ due_after?: string;
2096
+ search?: string;
2097
+ taskable_type?: string;
2098
+ taskable_id?: string;
2099
+ sort?: string;
2100
+ page?: number;
2101
+ per_page?: number;
2102
+ }, TaskFilters | {
2103
+ status?: TaskStatus | TaskStatus[];
2104
+ priority?: TaskPriority | TaskPriority[];
2105
+ assignee?: string;
2106
+ assignee_id?: string;
2107
+ created_by?: string;
2108
+ watching?: boolean;
2109
+ tag?: string;
2110
+ overdue?: boolean;
2111
+ due_before?: string;
2112
+ due_after?: string;
2113
+ search?: string;
2114
+ taskable_type?: string;
2115
+ taskable_id?: string;
2116
+ sort?: string;
2117
+ page?: number;
2118
+ per_page?: number;
2119
+ }>;
2120
+ savedFilters: import("vue").Ref<{
2121
+ id: string;
2122
+ tenant_id: string;
2123
+ user_id: string;
2124
+ name: string;
2125
+ filters: {
2126
+ status?: TaskStatus | TaskStatus[];
2127
+ priority?: TaskPriority | TaskPriority[];
2128
+ assignee?: string;
2129
+ assignee_id?: string;
2130
+ created_by?: string;
2131
+ watching?: boolean;
2132
+ tag?: string;
2133
+ overdue?: boolean;
2134
+ due_before?: string;
2135
+ due_after?: string;
2136
+ search?: string;
2137
+ taskable_type?: string;
2138
+ taskable_id?: string;
2139
+ sort?: string;
2140
+ page?: number;
2141
+ per_page?: number;
2142
+ };
2143
+ is_default: boolean;
2144
+ is_shared: boolean;
2145
+ position: number;
2146
+ created_at: string | null;
2147
+ updated_at: string | null;
2148
+ }[], TaskSavedFilter[] | {
2149
+ id: string;
2150
+ tenant_id: string;
2151
+ user_id: string;
2152
+ name: string;
2153
+ filters: {
2154
+ status?: TaskStatus | TaskStatus[];
2155
+ priority?: TaskPriority | TaskPriority[];
2156
+ assignee?: string;
2157
+ assignee_id?: string;
2158
+ created_by?: string;
2159
+ watching?: boolean;
2160
+ tag?: string;
2161
+ overdue?: boolean;
2162
+ due_before?: string;
2163
+ due_after?: string;
2164
+ search?: string;
2165
+ taskable_type?: string;
2166
+ taskable_id?: string;
2167
+ sort?: string;
2168
+ page?: number;
2169
+ per_page?: number;
2170
+ };
2171
+ is_default: boolean;
2172
+ is_shared: boolean;
2173
+ position: number;
2174
+ created_at: string | null;
2175
+ updated_at: string | null;
2176
+ }[]>;
2177
+ savedFiltersLoading: import("vue").Ref<boolean, boolean>;
2178
+ bulkResult: import("vue").Ref<{
2179
+ success: string[];
2180
+ failed: {
2181
+ id: string;
2182
+ reason: string;
2183
+ }[];
2184
+ } | null, TaskBulkActionResult | {
2185
+ success: string[];
2186
+ failed: {
2187
+ id: string;
2188
+ reason: string;
2189
+ }[];
2190
+ } | null>;
2191
+ bulkLoading: import("vue").Ref<boolean, boolean>;
2192
+ overdueTasks: import("vue").ComputedRef<{
2193
+ id: string;
2194
+ tenant_id: string;
2195
+ display_number: number;
2196
+ display_number_formatted: string;
2197
+ title: string;
2198
+ description: string | null;
2199
+ status: TaskStatus;
2200
+ priority: TaskPriority;
2201
+ taskable_type: string | null;
2202
+ taskable_id: string | null;
2203
+ created_by: {
2204
+ id: string | number;
2205
+ name: string;
2206
+ avatar_url?: string;
2207
+ } | null;
2208
+ primary_assignee: {
2209
+ id: string | number;
2210
+ name: string;
2211
+ avatar_url?: string;
2212
+ } | null;
2213
+ due_at: string | null;
2214
+ completed_at: string | null;
2215
+ completed_by: {
2216
+ id: string | number;
2217
+ name: string;
2218
+ avatar_url?: string;
2219
+ } | null;
2220
+ source: import("@/types").TaskSource;
2221
+ source_id: string | null;
2222
+ template_item_id?: string | null;
2223
+ escalation_policy_id: string | null;
2224
+ current_escalation_tier: import("@/types").EscalationTier | null;
2225
+ current_escalation_label: string | null;
2226
+ next_escalation_at: string | null;
2227
+ escalation_acknowledged_at: string | null;
2228
+ escalation_snoozed_until: string | null;
2229
+ comment_count?: number | null;
2230
+ checklist_total?: number | null;
2231
+ checklist_completed?: number | null;
2232
+ blocker_count?: number | null;
2233
+ open_blocker_count?: number | null;
2234
+ has_unresolved_blockers?: boolean | null;
2235
+ subtask_count?: number | null;
2236
+ completed_subtask_count?: number | null;
2237
+ completion_rules?: {
2238
+ checklist_complete?: boolean;
2239
+ comment_required?: boolean;
2240
+ attachment_required?: boolean;
2241
+ subtasks_complete?: boolean;
2242
+ custom_field_required?: string[];
2243
+ } | null;
2244
+ tags: {
2245
+ id: string;
2246
+ name: string;
2247
+ color: string | null;
2248
+ created_at?: string;
2249
+ updated_at?: string;
2250
+ }[];
2251
+ checklist_progress: {
2252
+ completed: number;
2253
+ total: number;
2254
+ };
2255
+ is_overdue: boolean;
2256
+ is_complete: boolean;
2257
+ progress_percentage: number;
2258
+ metadata?: Record<string, unknown> | null;
2259
+ created_at: string;
2260
+ updated_at: string;
2261
+ }[]>;
2262
+ tasksByStatus: import("vue").ComputedRef<Record<TaskStatus, Task[]>>;
2263
+ tasksByPriority: import("vue").ComputedRef<Record<TaskPriority, Task[]>>;
2264
+ isViewingTask: (taskId: string) => boolean;
2265
+ handleTaskCreated: (payload: TaskCreatedBroadcastPayload) => Task;
2266
+ handleTaskUpdated: (payload: TaskUpdatedBroadcastPayload) => Task;
2267
+ handleStatusChanged: (payload: TaskStatusChangedBroadcastPayload) => Task;
2268
+ handleTaskAssigned: (payload: TaskAssignedBroadcastPayload) => Task;
2269
+ handleTaskCompleted: (payload: TaskCompletedBroadcastPayload) => Task;
2270
+ handleCommentAdded: (payload: TaskCommentAddedBroadcastPayload) => Task;
2271
+ handleChecklistToggled: (payload: TaskChecklistToggledBroadcastPayload) => Task;
2272
+ fetchTasks: (filters?: TaskFilters) => Promise<void>;
2273
+ fetchTask: (id: string) => Promise<TaskDetail>;
2274
+ createTask: (payload: TaskMutationPayload) => Promise<TaskDetail>;
2275
+ updateTask: (id: string, payload: TaskUpdatePayload) => Promise<TaskDetail>;
2276
+ deleteTask: (id: string) => Promise<void>;
2277
+ completeTask: (id: string, note?: string) => Promise<TaskDetail>;
2278
+ reopenTask: (id: string) => Promise<TaskDetail>;
2279
+ cancelTask: (id: string) => Promise<TaskDetail>;
2280
+ addComment: (taskId: string, payload: TaskCommentPayload) => Promise<TaskDetail | null>;
2281
+ acknowledgeEscalation: (taskId: string) => Promise<TaskDetail | null>;
2282
+ snoozeEscalation: (taskId: string, payload: TaskEscalationSnoozePayload) => Promise<TaskDetail | null>;
2283
+ addChecklistItem: (taskId: string, title: string) => Promise<TaskDetail | null>;
2284
+ toggleChecklistItem: (taskId: string, itemId: string) => Promise<TaskDetail | null>;
2285
+ removeChecklistItem: (taskId: string, itemId: string) => Promise<TaskDetail | null>;
2286
+ fetchEntityTasks: (type: string, id: string, filters?: TaskFilters) => Promise<void>;
2287
+ fetchEntitySummary: (type: string, id: string) => Promise<EntityTaskSummary>;
2288
+ instantiateTemplate: (templateId: string, payload: TemplateInstantiationPayload) => Promise<TaskDetail>;
2289
+ fetchSavedFilters: () => Promise<TaskSavedFilter[]>;
2290
+ createSavedFilter: (payload: Omit<TaskSavedFilter, "id" | "tenant_id" | "user_id" | "created_at" | "updated_at">) => Promise<TaskSavedFilter>;
2291
+ updateSavedFilterRecord: (id: string, payload: Partial<Omit<TaskSavedFilter, "id" | "tenant_id" | "user_id" | "created_at" | "updated_at">>) => Promise<TaskSavedFilter>;
2292
+ deleteSavedFilterRecord: (id: string) => Promise<void>;
2293
+ runBulkAction: (taskIds: string[], action: TaskBulkAction, params?: Record<string, unknown>) => Promise<TaskBulkActionResult>;
2294
+ }, "isViewingTask" | "handleTaskCreated" | "handleTaskUpdated" | "handleStatusChanged" | "handleTaskAssigned" | "handleTaskCompleted" | "handleCommentAdded" | "handleChecklistToggled" | "fetchTasks" | "fetchTask" | "createTask" | "updateTask" | "deleteTask" | "completeTask" | "reopenTask" | "cancelTask" | "addComment" | "acknowledgeEscalation" | "snoozeEscalation" | "addChecklistItem" | "toggleChecklistItem" | "removeChecklistItem" | "fetchEntityTasks" | "fetchEntitySummary" | "instantiateTemplate" | "fetchSavedFilters" | "createSavedFilter" | "updateSavedFilterRecord" | "deleteSavedFilterRecord" | "runBulkAction">>;