@atlastodo/shared 0.0.0-stage → 0.1.11-rc.7

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 (67) hide show
  1. package/LICENSE +661 -0
  2. package/dist/activity.d.ts +23 -0
  3. package/dist/avatarColor.d.ts +15 -0
  4. package/dist/boardMove.d.ts +14 -0
  5. package/dist/bugReport.d.ts +47 -0
  6. package/dist/calendar.d.ts +23 -0
  7. package/dist/comments.d.ts +14 -0
  8. package/dist/countdown.d.ts +14 -0
  9. package/dist/cursor.d.ts +6 -0
  10. package/dist/dataTransfer.d.ts +19 -0
  11. package/dist/duplicateProject.d.ts +19 -0
  12. package/dist/duplicateSection.d.ts +15 -0
  13. package/dist/filterQuery.d.ts +64 -0
  14. package/dist/focus.d.ts +17 -0
  15. package/dist/format.d.ts +30 -0
  16. package/dist/fuzzy.d.ts +14 -0
  17. package/dist/grouping.d.ts +24 -0
  18. package/dist/habitGroups.d.ts +46 -0
  19. package/dist/habitSchedule.d.ts +4 -0
  20. package/dist/habits.d.ts +115 -0
  21. package/dist/hotkeys.d.ts +50 -0
  22. package/dist/i18n.d.ts +14796 -0
  23. package/dist/ids.d.ts +7 -0
  24. package/dist/importTicktick.d.ts +34 -0
  25. package/dist/importTodoist.d.ts +60 -0
  26. package/dist/index.d.ts +62 -0
  27. package/dist/index.js +21446 -0
  28. package/dist/members.d.ts +26 -0
  29. package/dist/planDay.d.ts +31 -0
  30. package/dist/pomodoro.d.ts +49 -0
  31. package/dist/priority.d.ts +2 -0
  32. package/dist/projectMapper.d.ts +15 -0
  33. package/dist/projectStyle.d.ts +14 -0
  34. package/dist/projectTree.d.ts +40 -0
  35. package/dist/quickAddLexicons.d.ts +64 -0
  36. package/dist/quickAddLexiconsWire.d.ts +11 -0
  37. package/dist/quickAddParse.d.ts +44 -0
  38. package/dist/quickSchedule.d.ts +9 -0
  39. package/dist/rank.d.ts +9 -0
  40. package/dist/recurrence.d.ts +60 -0
  41. package/dist/regions.d.ts +6 -0
  42. package/dist/reminderSchedule.d.ts +42 -0
  43. package/dist/reminders.d.ts +28 -0
  44. package/dist/reorder.d.ts +21 -0
  45. package/dist/sectionMapper.d.ts +8 -0
  46. package/dist/sectionOps.d.ts +5 -0
  47. package/dist/serverUrl.d.ts +12 -0
  48. package/dist/smartLists.d.ts +11 -0
  49. package/dist/stats.d.ts +28 -0
  50. package/dist/swipe.d.ts +29 -0
  51. package/dist/taskClipboard.d.ts +19 -0
  52. package/dist/taskListTree.d.ts +33 -0
  53. package/dist/taskMapper.d.ts +3 -0
  54. package/dist/taskOps.d.ts +49 -0
  55. package/dist/taskSearch.d.ts +11 -0
  56. package/dist/taskTree.d.ts +53 -0
  57. package/dist/theme.d.ts +14 -0
  58. package/dist/toast.d.ts +26 -0
  59. package/dist/trash.d.ts +24 -0
  60. package/dist/views.d.ts +8 -0
  61. package/dist/zonedTime.d.ts +30 -0
  62. package/package.json +55 -4
  63. package/test-vectors/filter_vectors.json +1613 -0
  64. package/test-vectors/quick_add_vectors.json +1656 -0
  65. package/test-vectors/recurrence_vectors.json +779 -0
  66. package/test-vectors/task_rules_vectors.json +729 -0
  67. package/README.md +0 -3
@@ -0,0 +1,729 @@
1
+ {
2
+ "_doc": "The task rules (packages/shared/src/taskOps.ts). Each scenario seeds a store with `task` (the fields of task 00000000-0000-4000-8000-000000000001) and its `reminders`, then runs `action` at `now` in `tz` as `actor`: `create` with `input`, `update` with `patch` (fields in order), `complete`, `reopen` or `delete`. `expected` lists the field values the action wrote: to the task (`written`; for `create`, the new task), to a spawned next occurrence (`spawned`), and to new activity and reminder entities, in the order written. `<spawned>` and `<created>` stand for the new task's id. `result` is updateTask's or softDeleteTask's return value, or for complete/reopen whether a task was spawned. Asserted by packages/shared/src/rulesVectors.test.ts and crates/atlas-client.",
3
+ "scenarios": [
4
+ {
5
+ "name": "create a plain task",
6
+ "tz": "UTC",
7
+ "now": 1791972000000,
8
+ "actor": "u1",
9
+ "action": "create",
10
+ "input": {
11
+ "title": "Plain"
12
+ },
13
+ "result": null,
14
+ "expected": {
15
+ "written": {
16
+ "title": "Plain",
17
+ "priority": 4,
18
+ "is_completed": false,
19
+ "created_at": 1791972000000,
20
+ "updated_at": 1791972000000
21
+ },
22
+ "spawned": null,
23
+ "activities": [],
24
+ "reminders": []
25
+ }
26
+ },
27
+ {
28
+ "name": "create with every field",
29
+ "tz": "Europe/Copenhagen",
30
+ "now": 1791972000000,
31
+ "actor": "u1",
32
+ "action": "create",
33
+ "input": {
34
+ "title": "Full",
35
+ "notes": "n",
36
+ "priority": 2,
37
+ "project_id": "p1",
38
+ "section_id": "s1",
39
+ "parent_id": "t0",
40
+ "start_at": 1791972000000,
41
+ "due_at": 1792231200000,
42
+ "recurrence": "FREQ=WEEKLY",
43
+ "assignee_id": "u2",
44
+ "estimate_min": 30,
45
+ "label_ids": [
46
+ "l1",
47
+ "l2"
48
+ ],
49
+ "sort_order": 5
50
+ },
51
+ "result": null,
52
+ "expected": {
53
+ "written": {
54
+ "project_id": "p1",
55
+ "section_id": "s1",
56
+ "parent_id": "t0",
57
+ "title": "Full",
58
+ "priority": 2,
59
+ "is_completed": false,
60
+ "created_at": 1791972000000,
61
+ "updated_at": 1791972000000,
62
+ "notes": "n",
63
+ "due_at": 1792231200000,
64
+ "start_at": 1791972000000,
65
+ "recurrence": "FREQ=WEEKLY",
66
+ "assignee_id": "u2",
67
+ "estimate_min": 30,
68
+ "label_ids": [
69
+ "l1",
70
+ "l2"
71
+ ],
72
+ "sort_order": 5
73
+ },
74
+ "spawned": null,
75
+ "activities": [],
76
+ "reminders": []
77
+ }
78
+ },
79
+ {
80
+ "name": "create a monthly task anchors its day",
81
+ "tz": "UTC",
82
+ "now": 1791972000000,
83
+ "actor": null,
84
+ "action": "create",
85
+ "input": {
86
+ "title": "Rent",
87
+ "due_at": 1793437200000,
88
+ "recurrence": "FREQ=MONTHLY"
89
+ },
90
+ "result": null,
91
+ "expected": {
92
+ "written": {
93
+ "title": "Rent",
94
+ "priority": 4,
95
+ "is_completed": false,
96
+ "created_at": 1791972000000,
97
+ "updated_at": 1791972000000,
98
+ "due_at": 1793437200000,
99
+ "recurrence": "FREQ=MONTHLY;BYMONTHDAY=31"
100
+ },
101
+ "spawned": null,
102
+ "activities": [],
103
+ "reminders": []
104
+ }
105
+ },
106
+ {
107
+ "name": "create with empty labels",
108
+ "tz": "UTC",
109
+ "now": 1791972000000,
110
+ "actor": null,
111
+ "action": "create",
112
+ "input": {
113
+ "title": "No labels",
114
+ "label_ids": []
115
+ },
116
+ "result": null,
117
+ "expected": {
118
+ "written": {
119
+ "title": "No labels",
120
+ "priority": 4,
121
+ "is_completed": false,
122
+ "created_at": 1791972000000,
123
+ "updated_at": 1791972000000
124
+ },
125
+ "spawned": null,
126
+ "activities": [],
127
+ "reminders": []
128
+ }
129
+ },
130
+ {
131
+ "name": "complete a one-off task",
132
+ "tz": "UTC",
133
+ "now": 1791972000000,
134
+ "actor": "u1",
135
+ "task": {
136
+ "title": "Once",
137
+ "priority": 4,
138
+ "is_completed": false,
139
+ "created_at": 1,
140
+ "updated_at": 1,
141
+ "due_at": 1791972000000
142
+ },
143
+ "action": "complete",
144
+ "result": false,
145
+ "expected": {
146
+ "written": {
147
+ "is_completed": true,
148
+ "completed_at": 1791972000000
149
+ },
150
+ "spawned": null,
151
+ "activities": [
152
+ {
153
+ "task_id": "00000000-0000-4000-8000-000000000001",
154
+ "actor_id": "u1",
155
+ "kind": "status",
156
+ "to": "completed",
157
+ "created_at": 1791972000000
158
+ }
159
+ ],
160
+ "reminders": []
161
+ }
162
+ },
163
+ {
164
+ "name": "complete without an actor writes no activity",
165
+ "tz": "UTC",
166
+ "now": 1791972000000,
167
+ "actor": null,
168
+ "task": {
169
+ "title": "Once",
170
+ "is_completed": false
171
+ },
172
+ "action": "complete",
173
+ "result": false,
174
+ "expected": {
175
+ "written": {
176
+ "is_completed": true,
177
+ "completed_at": 1791972000000
178
+ },
179
+ "spawned": null,
180
+ "activities": [],
181
+ "reminders": []
182
+ }
183
+ },
184
+ {
185
+ "name": "complete a daily task spawns the next",
186
+ "tz": "Europe/Copenhagen",
187
+ "now": 1791972000000,
188
+ "actor": "u1",
189
+ "task": {
190
+ "title": "Daily",
191
+ "notes": "x",
192
+ "priority": 2,
193
+ "project_id": "p1",
194
+ "is_completed": false,
195
+ "due_at": 1791928740000,
196
+ "start_at": 1791874800000,
197
+ "recurrence": "FREQ=DAILY",
198
+ "label_ids": [
199
+ "l1"
200
+ ],
201
+ "estimate_min": 15,
202
+ "assignee_id": "u2"
203
+ },
204
+ "reminders": [
205
+ {
206
+ "at": 1791921600000,
207
+ "created_at": 1
208
+ },
209
+ {
210
+ "offset_min_before_due": 30,
211
+ "created_at": 1
212
+ }
213
+ ],
214
+ "action": "complete",
215
+ "result": true,
216
+ "expected": {
217
+ "written": {
218
+ "is_completed": true,
219
+ "completed_at": 1791972000000
220
+ },
221
+ "spawned": {
222
+ "project_id": "p1",
223
+ "title": "Daily",
224
+ "priority": 2,
225
+ "is_completed": false,
226
+ "created_at": 1791972000000,
227
+ "updated_at": 1791972000000,
228
+ "notes": "x",
229
+ "due_at": 1792015140000,
230
+ "start_at": 1791961200000,
231
+ "recurrence": "FREQ=DAILY",
232
+ "assignee_id": "u2",
233
+ "estimate_min": 15,
234
+ "label_ids": [
235
+ "l1"
236
+ ]
237
+ },
238
+ "activities": [
239
+ {
240
+ "task_id": "00000000-0000-4000-8000-000000000001",
241
+ "actor_id": "u1",
242
+ "kind": "status",
243
+ "to": "completed",
244
+ "created_at": 1791972000000
245
+ }
246
+ ],
247
+ "reminders": [
248
+ {
249
+ "task_id": "<spawned>",
250
+ "at": 1792008000000,
251
+ "created_at": 1791972000000
252
+ },
253
+ {
254
+ "task_id": "<spawned>",
255
+ "offset_min_before_due": 30,
256
+ "created_at": 1791972000000
257
+ }
258
+ ]
259
+ }
260
+ },
261
+ {
262
+ "name": "complete a monthly task across DST",
263
+ "tz": "Europe/Copenhagen",
264
+ "now": 1791972000000,
265
+ "actor": "u1",
266
+ "task": {
267
+ "title": "Monthly",
268
+ "is_completed": false,
269
+ "due_at": 1792047600000,
270
+ "recurrence": "FREQ=MONTHLY;BYMONTHDAY=15"
271
+ },
272
+ "action": "complete",
273
+ "result": true,
274
+ "expected": {
275
+ "written": {
276
+ "is_completed": true,
277
+ "completed_at": 1791972000000
278
+ },
279
+ "spawned": {
280
+ "title": "Monthly",
281
+ "priority": 4,
282
+ "is_completed": false,
283
+ "created_at": 1791972000000,
284
+ "updated_at": 1791972000000,
285
+ "notes": "",
286
+ "due_at": 1794729600000,
287
+ "recurrence": "FREQ=MONTHLY;BYMONTHDAY=15"
288
+ },
289
+ "activities": [
290
+ {
291
+ "task_id": "00000000-0000-4000-8000-000000000001",
292
+ "actor_id": "u1",
293
+ "kind": "status",
294
+ "to": "completed",
295
+ "created_at": 1791972000000
296
+ }
297
+ ],
298
+ "reminders": []
299
+ }
300
+ },
301
+ {
302
+ "name": "complete after completion re-anchors",
303
+ "tz": "UTC",
304
+ "now": 1791972000000,
305
+ "actor": "u1",
306
+ "task": {
307
+ "title": "Every 3 days",
308
+ "is_completed": false,
309
+ "due_at": 1790845200000,
310
+ "recurrence": "FREQ=DAILY;INTERVAL=3;MODE=COMPLETION"
311
+ },
312
+ "action": "complete",
313
+ "result": true,
314
+ "expected": {
315
+ "written": {
316
+ "is_completed": true,
317
+ "completed_at": 1791972000000
318
+ },
319
+ "spawned": {
320
+ "title": "Every 3 days",
321
+ "priority": 4,
322
+ "is_completed": false,
323
+ "created_at": 1791972000000,
324
+ "updated_at": 1791972000000,
325
+ "notes": "",
326
+ "due_at": 1792227600000,
327
+ "recurrence": "FREQ=DAILY;INTERVAL=3;MODE=COMPLETION"
328
+ },
329
+ "activities": [
330
+ {
331
+ "task_id": "00000000-0000-4000-8000-000000000001",
332
+ "actor_id": "u1",
333
+ "kind": "status",
334
+ "to": "completed",
335
+ "created_at": 1791972000000
336
+ }
337
+ ],
338
+ "reminders": []
339
+ }
340
+ },
341
+ {
342
+ "name": "complete a recurring task without a due date spawns nothing",
343
+ "tz": "UTC",
344
+ "now": 1791972000000,
345
+ "actor": "u1",
346
+ "task": {
347
+ "title": "No due",
348
+ "is_completed": false,
349
+ "recurrence": "FREQ=DAILY"
350
+ },
351
+ "action": "complete",
352
+ "result": false,
353
+ "expected": {
354
+ "written": {
355
+ "is_completed": true,
356
+ "completed_at": 1791972000000
357
+ },
358
+ "spawned": null,
359
+ "activities": [
360
+ {
361
+ "task_id": "00000000-0000-4000-8000-000000000001",
362
+ "actor_id": "u1",
363
+ "kind": "status",
364
+ "to": "completed",
365
+ "created_at": 1791972000000
366
+ }
367
+ ],
368
+ "reminders": []
369
+ }
370
+ },
371
+ {
372
+ "name": "complete a task with an invalid rule spawns nothing",
373
+ "tz": "UTC",
374
+ "now": 1791972000000,
375
+ "actor": "u1",
376
+ "task": {
377
+ "title": "Bad rule",
378
+ "is_completed": false,
379
+ "due_at": 1791972000000,
380
+ "recurrence": "FREQ=SOMETIMES"
381
+ },
382
+ "action": "complete",
383
+ "result": false,
384
+ "expected": {
385
+ "written": {
386
+ "is_completed": true,
387
+ "completed_at": 1791972000000
388
+ },
389
+ "spawned": null,
390
+ "activities": [
391
+ {
392
+ "task_id": "00000000-0000-4000-8000-000000000001",
393
+ "actor_id": "u1",
394
+ "kind": "status",
395
+ "to": "completed",
396
+ "created_at": 1791972000000
397
+ }
398
+ ],
399
+ "reminders": []
400
+ }
401
+ },
402
+ {
403
+ "name": "reopen",
404
+ "tz": "UTC",
405
+ "now": 1791972000000,
406
+ "actor": "u1",
407
+ "task": {
408
+ "title": "Done",
409
+ "is_completed": true,
410
+ "completed_at": 5,
411
+ "due_at": 1791972000000,
412
+ "recurrence": "FREQ=DAILY"
413
+ },
414
+ "action": "reopen",
415
+ "result": false,
416
+ "expected": {
417
+ "written": {
418
+ "is_completed": false,
419
+ "completed_at": null
420
+ },
421
+ "spawned": null,
422
+ "activities": [
423
+ {
424
+ "task_id": "00000000-0000-4000-8000-000000000001",
425
+ "actor_id": "u1",
426
+ "kind": "status",
427
+ "to": "reopened",
428
+ "created_at": 1791972000000
429
+ }
430
+ ],
431
+ "reminders": []
432
+ }
433
+ },
434
+ {
435
+ "name": "delete moves to the trash",
436
+ "tz": "UTC",
437
+ "now": 1791972000000,
438
+ "actor": "u1",
439
+ "task": {
440
+ "title": "Bye"
441
+ },
442
+ "action": "delete",
443
+ "result": true,
444
+ "expected": {
445
+ "written": {
446
+ "deleted_at": 1791972000000
447
+ },
448
+ "spawned": null,
449
+ "activities": [],
450
+ "reminders": []
451
+ }
452
+ },
453
+ {
454
+ "name": "update writes only what changed",
455
+ "tz": "UTC",
456
+ "now": 1791972000000,
457
+ "actor": "u1",
458
+ "task": {
459
+ "title": "Same",
460
+ "notes": "a",
461
+ "priority": 3,
462
+ "due_at": 1791972000000,
463
+ "label_ids": [
464
+ "l1"
465
+ ]
466
+ },
467
+ "action": "update",
468
+ "patch": [
469
+ [
470
+ "notes",
471
+ "b"
472
+ ],
473
+ [
474
+ "title",
475
+ "Same"
476
+ ],
477
+ [
478
+ "priority",
479
+ 3
480
+ ],
481
+ [
482
+ "label_ids",
483
+ [
484
+ "l1"
485
+ ]
486
+ ]
487
+ ],
488
+ "result": true,
489
+ "expected": {
490
+ "written": {
491
+ "notes": "b",
492
+ "label_ids": [
493
+ "l1"
494
+ ],
495
+ "updated_at": 1791972000000
496
+ },
497
+ "spawned": null,
498
+ "activities": [],
499
+ "reminders": []
500
+ }
501
+ },
502
+ {
503
+ "name": "update the due date writes activity",
504
+ "tz": "UTC",
505
+ "now": 1791972000000,
506
+ "actor": "u1",
507
+ "task": {
508
+ "title": "Move",
509
+ "due_at": 1791972000000
510
+ },
511
+ "action": "update",
512
+ "patch": [
513
+ [
514
+ "due_at",
515
+ 1792058400000
516
+ ]
517
+ ],
518
+ "result": true,
519
+ "expected": {
520
+ "written": {
521
+ "due_at": 1792058400000,
522
+ "updated_at": 1791972000000
523
+ },
524
+ "spawned": null,
525
+ "activities": [
526
+ {
527
+ "task_id": "00000000-0000-4000-8000-000000000001",
528
+ "actor_id": "u1",
529
+ "kind": "due",
530
+ "from": "1791972000000",
531
+ "to": "1792058400000",
532
+ "created_at": 1791972000000
533
+ }
534
+ ],
535
+ "reminders": []
536
+ }
537
+ },
538
+ {
539
+ "name": "clear the due date",
540
+ "tz": "UTC",
541
+ "now": 1791972000000,
542
+ "actor": "u1",
543
+ "task": {
544
+ "title": "Clear",
545
+ "due_at": 1791972000000
546
+ },
547
+ "action": "update",
548
+ "patch": [
549
+ [
550
+ "due_at",
551
+ null
552
+ ]
553
+ ],
554
+ "result": true,
555
+ "expected": {
556
+ "written": {
557
+ "due_at": null,
558
+ "updated_at": 1791972000000
559
+ },
560
+ "spawned": null,
561
+ "activities": [
562
+ {
563
+ "task_id": "00000000-0000-4000-8000-000000000001",
564
+ "actor_id": "u1",
565
+ "kind": "due",
566
+ "from": "1791972000000",
567
+ "created_at": 1791972000000
568
+ }
569
+ ],
570
+ "reminders": []
571
+ }
572
+ },
573
+ {
574
+ "name": "set the assignee",
575
+ "tz": "UTC",
576
+ "now": 1791972000000,
577
+ "actor": "u1",
578
+ "task": {
579
+ "title": "Assign",
580
+ "assignee_id": "u2"
581
+ },
582
+ "action": "update",
583
+ "patch": [
584
+ [
585
+ "assignee_id",
586
+ "u3"
587
+ ]
588
+ ],
589
+ "result": true,
590
+ "expected": {
591
+ "written": {
592
+ "assignee_id": "u3",
593
+ "updated_at": 1791972000000
594
+ },
595
+ "spawned": null,
596
+ "activities": [
597
+ {
598
+ "task_id": "00000000-0000-4000-8000-000000000001",
599
+ "actor_id": "u1",
600
+ "kind": "assignee",
601
+ "from": "u2",
602
+ "to": "u3",
603
+ "created_at": 1791972000000
604
+ }
605
+ ],
606
+ "reminders": []
607
+ }
608
+ },
609
+ {
610
+ "name": "a new monthly rule takes the due day",
611
+ "tz": "UTC",
612
+ "now": 1791972000000,
613
+ "actor": "u1",
614
+ "task": {
615
+ "title": "Rule",
616
+ "due_at": 1793437200000
617
+ },
618
+ "action": "update",
619
+ "patch": [
620
+ [
621
+ "recurrence",
622
+ "FREQ=MONTHLY"
623
+ ]
624
+ ],
625
+ "result": true,
626
+ "expected": {
627
+ "written": {
628
+ "recurrence": "FREQ=MONTHLY;BYMONTHDAY=31",
629
+ "updated_at": 1791972000000
630
+ },
631
+ "spawned": null,
632
+ "activities": [],
633
+ "reminders": []
634
+ }
635
+ },
636
+ {
637
+ "name": "a new rule with a new due date",
638
+ "tz": "America/New_York",
639
+ "now": 1791972000000,
640
+ "actor": "u1",
641
+ "task": {
642
+ "title": "Rule",
643
+ "due_at": 1791972000000
644
+ },
645
+ "action": "update",
646
+ "patch": [
647
+ [
648
+ "due_at",
649
+ 1796050800000
650
+ ],
651
+ [
652
+ "recurrence",
653
+ "FREQ=MONTHLY"
654
+ ]
655
+ ],
656
+ "result": true,
657
+ "expected": {
658
+ "written": {
659
+ "due_at": 1796050800000,
660
+ "recurrence": "FREQ=MONTHLY;BYMONTHDAY=30",
661
+ "updated_at": 1791972000000
662
+ },
663
+ "spawned": null,
664
+ "activities": [
665
+ {
666
+ "task_id": "00000000-0000-4000-8000-000000000001",
667
+ "actor_id": "u1",
668
+ "kind": "due",
669
+ "from": "1791972000000",
670
+ "to": "1796050800000",
671
+ "created_at": 1791972000000
672
+ }
673
+ ],
674
+ "reminders": []
675
+ }
676
+ },
677
+ {
678
+ "name": "nothing changed",
679
+ "tz": "UTC",
680
+ "now": 1791972000000,
681
+ "actor": "u1",
682
+ "task": {
683
+ "title": "Same",
684
+ "priority": 2
685
+ },
686
+ "action": "update",
687
+ "patch": [
688
+ [
689
+ "title",
690
+ "Same"
691
+ ],
692
+ [
693
+ "priority",
694
+ 2
695
+ ]
696
+ ],
697
+ "result": false,
698
+ "expected": {
699
+ "written": null,
700
+ "spawned": null,
701
+ "activities": [],
702
+ "reminders": []
703
+ }
704
+ },
705
+ {
706
+ "name": "a locked task is read-only",
707
+ "tz": "UTC",
708
+ "now": 1791972000000,
709
+ "actor": "u1",
710
+ "task": {
711
+ "title": {
712
+ "__enc": 2,
713
+ "kid": "abc",
714
+ "iv": "AAAA",
715
+ "ct": "AAAA"
716
+ },
717
+ "is_completed": false
718
+ },
719
+ "action": "complete",
720
+ "result": false,
721
+ "expected": {
722
+ "written": null,
723
+ "spawned": null,
724
+ "activities": [],
725
+ "reminders": []
726
+ }
727
+ }
728
+ ]
729
+ }