@stephendolan/omnifocus-cli 1.0.1 → 1.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.
@@ -1,4 +1,4 @@
1
- import type { Task, Project, TaskFilters, ProjectFilters, CreateTaskOptions, UpdateTaskOptions, CreateProjectOptions, Perspective } from '../types.js';
1
+ import type { Task, Project, TaskFilters, ProjectFilters, CreateTaskOptions, UpdateTaskOptions, CreateProjectOptions, UpdateProjectOptions, Perspective, Tag, TagListOptions, TagStats, TaskStats, ProjectStats, CreateTagOptions, UpdateTagOptions } from '../types.js';
2
2
  export declare class OmniFocus {
3
3
  private readonly PROJECT_STATUS_MAP;
4
4
  private readonly OMNI_HELPERS;
@@ -8,12 +8,15 @@ export declare class OmniFocus {
8
8
  private buildTaskFilters;
9
9
  private buildProjectFilters;
10
10
  private buildTaskUpdates;
11
+ private buildTagUpdates;
12
+ private buildProjectUpdates;
11
13
  listTasks(filters?: TaskFilters): Promise<Task[]>;
12
14
  createTask(options: CreateTaskOptions): Promise<Task>;
13
15
  updateTask(idOrName: string, options: UpdateTaskOptions): Promise<Task>;
14
16
  deleteTask(idOrName: string): Promise<void>;
15
17
  listProjects(filters?: ProjectFilters): Promise<Project[]>;
16
18
  createProject(options: CreateProjectOptions): Promise<Project>;
19
+ updateProject(idOrName: string, options: UpdateProjectOptions): Promise<Project>;
17
20
  deleteProject(idOrName: string): Promise<void>;
18
21
  listInboxTasks(): Promise<Task[]>;
19
22
  getInboxCount(): Promise<number>;
@@ -22,5 +25,14 @@ export declare class OmniFocus {
22
25
  getProject(idOrName: string): Promise<Project>;
23
26
  listPerspectives(): Promise<Perspective[]>;
24
27
  getPerspectiveTasks(perspectiveName: string): Promise<Task[]>;
28
+ listTags(options?: TagListOptions): Promise<Tag[]>;
29
+ private sortTags;
30
+ getTagStats(): Promise<TagStats>;
31
+ createTag(options: CreateTagOptions): Promise<Tag>;
32
+ getTag(idOrName: string): Promise<Tag>;
33
+ updateTag(idOrName: string, options: UpdateTagOptions): Promise<Tag>;
34
+ deleteTag(idOrName: string): Promise<void>;
35
+ getTaskStats(): Promise<TaskStats>;
36
+ getProjectStats(): Promise<ProjectStats>;
25
37
  }
26
38
  //# sourceMappingURL=omnifocus.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"omnifocus.d.ts","sourceRoot":"","sources":["../../src/lib/omnifocus.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,IAAI,EACJ,OAAO,EACP,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,WAAW,EACZ,MAAM,aAAa,CAAC;AAIrB,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAIxB;IAEX,OAAO,CAAC,QAAQ,CAAC,YAAY,CAyF3B;YAEY,UAAU;IA6BxB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,gBAAgB;IA+BxB,OAAO,CAAC,mBAAmB;IAqB3B,OAAO,CAAC,gBAAgB;IA2ClB,SAAS,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAiBrD,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBrD,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAcvE,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW3C,YAAY,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAiB9D,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAuB9D,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW9C,cAAc,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAIjC,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAKhC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IA2B3C,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAaxC,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAa9C,gBAAgB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAuB1C,mBAAmB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;CAwDpE"}
1
+ {"version":3,"file":"omnifocus.d.ts","sourceRoot":"","sources":["../../src/lib/omnifocus.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,IAAI,EACJ,OAAO,EACP,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,WAAW,EACX,GAAG,EACH,cAAc,EACd,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,aAAa,CAAC;AAIrB,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAIxB;IAEX,OAAO,CAAC,QAAQ,CAAC,YAAY,CAqL3B;YAEY,UAAU;IA6BxB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,gBAAgB;IA+BxB,OAAO,CAAC,mBAAmB;IAqB3B,OAAO,CAAC,gBAAgB;IA2CxB,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,mBAAmB;IA4BrB,SAAS,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAiBrD,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBrD,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAcvE,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW3C,YAAY,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAiB9D,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAuB9D,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAchF,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW9C,cAAc,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAIjC,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAKhC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IA2B3C,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAaxC,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAa9C,gBAAgB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAuB1C,mBAAmB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAyD7D,QAAQ,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IA8B5D,OAAO,CAAC,QAAQ;IAeV,WAAW,IAAI,OAAO,CAAC,QAAQ,CAAC;IAiDhC,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC;IAoBlD,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAatC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC;IAcpE,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW1C,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC;IAiElC,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC;CAiE/C"}
@@ -67,6 +67,46 @@ export class OmniFocus {
67
67
  throw new Error("Project not found: " + idOrName);
68
68
  }
69
69
 
70
+ function getTagPath(tag) {
71
+ const parts = [tag.name];
72
+ let current = tag.parent;
73
+ while (current) {
74
+ parts.unshift(current.name);
75
+ current = current.parent;
76
+ }
77
+ return parts.join('/');
78
+ }
79
+
80
+ function findTag(idOrName) {
81
+ for (const tag of flattenedTags) {
82
+ if (tag.id.primaryKey === idOrName) {
83
+ return tag;
84
+ }
85
+ }
86
+
87
+ if (idOrName.includes('/')) {
88
+ for (const tag of flattenedTags) {
89
+ if (getTagPath(tag) === idOrName) {
90
+ return tag;
91
+ }
92
+ }
93
+ throw new Error("Tag not found: " + idOrName);
94
+ }
95
+
96
+ const matches = flattenedTags.filter(tag => tag.name === idOrName);
97
+
98
+ if (matches.length === 0) {
99
+ throw new Error("Tag not found: " + idOrName);
100
+ }
101
+
102
+ if (matches.length > 1) {
103
+ const paths = matches.map(getTagPath);
104
+ throw new Error("Multiple tags found with name '" + idOrName + "'. Please use full path:\\n " + paths.join('\\n ') + "\\nOr use tag ID: " + matches.map(t => t.id.primaryKey).join(', '));
105
+ }
106
+
107
+ return matches[0];
108
+ }
109
+
70
110
  function findByName(collection, name, typeName) {
71
111
  for (const item of collection) {
72
112
  if (item.name === name) {
@@ -78,7 +118,7 @@ export class OmniFocus {
78
118
 
79
119
  function assignTags(target, tagNames) {
80
120
  for (const tagName of tagNames) {
81
- const tag = findByName(flattenedTags, tagName, "Tag");
121
+ const tag = findTag(tagName);
82
122
  target.addTag(tag);
83
123
  }
84
124
  }
@@ -88,16 +128,68 @@ export class OmniFocus {
88
128
  assignTags(target, tagNames);
89
129
  }
90
130
 
91
- function projectStatusToString(status) {
92
- if (status === Project.Status.Active) return 'active';
93
- if (status === Project.Status.OnHold) return 'on hold';
131
+ function statusToString(status, StatusEnum) {
132
+ if (status === StatusEnum.Active) return 'active';
133
+ if (status === StatusEnum.OnHold) return 'on hold';
94
134
  return 'dropped';
95
135
  }
96
136
 
97
- function stringToProjectStatus(str) {
98
- if (str === 'active') return Project.Status.Active;
99
- if (str === 'on hold') return Project.Status.OnHold;
100
- return Project.Status.Dropped;
137
+ function stringToStatus(str, StatusEnum) {
138
+ if (str === 'active') return StatusEnum.Active;
139
+ if (str === 'on hold') return StatusEnum.OnHold;
140
+ return StatusEnum.Dropped;
141
+ }
142
+
143
+ const projectStatusToString = (status) => statusToString(status, Project.Status);
144
+ const tagStatusToString = (status) => statusToString(status, Tag.Status);
145
+ const stringToProjectStatus = (str) => stringToStatus(str, Project.Status);
146
+ const stringToTagStatus = (str) => stringToStatus(str, Tag.Status);
147
+
148
+ function computeTopItems(items, keyFn, topN = 5) {
149
+ return items
150
+ .sort((a, b) => b[keyFn] - a[keyFn])
151
+ .slice(0, topN)
152
+ .map(item => ({ name: item.name, [keyFn]: item[keyFn] }));
153
+ }
154
+
155
+ function computeAverage(total, count) {
156
+ return count > 0 ? Math.round((total / count) * 10) / 10 : 0;
157
+ }
158
+
159
+ function serializeTag(tag, activeOnly = false) {
160
+ const tasks = tag.tasks;
161
+ const remainingTasks = tag.remainingTasks;
162
+ const includedTasks = activeOnly ? remainingTasks : tasks;
163
+
164
+ const dates = [];
165
+ if (tag.added) dates.push(tag.added);
166
+ if (tag.modified) dates.push(tag.modified);
167
+
168
+ for (const task of includedTasks) {
169
+ if (task.added) dates.push(task.added);
170
+ if (task.modified) dates.push(task.modified);
171
+ if (!activeOnly && task.completionDate) dates.push(task.completionDate);
172
+ if (!activeOnly && task.effectiveCompletionDate) dates.push(task.effectiveCompletionDate);
173
+ }
174
+
175
+ const lastActivity = dates.length > 0
176
+ ? dates.reduce((latest, current) => current > latest ? current : latest)
177
+ : null;
178
+
179
+ return {
180
+ id: tag.id.primaryKey,
181
+ name: tag.name,
182
+ taskCount: includedTasks.length,
183
+ remainingTaskCount: remainingTasks.length,
184
+ added: tag.added ? tag.added.toISOString() : null,
185
+ modified: tag.modified ? tag.modified.toISOString() : null,
186
+ lastActivity: lastActivity ? lastActivity.toISOString() : null,
187
+ active: tag.active,
188
+ status: tagStatusToString(tag.status),
189
+ parent: tag.parent ? tag.parent.name : null,
190
+ children: tag.children.map(c => c.name),
191
+ allowsNextAction: tag.allowsNextAction
192
+ };
101
193
  }
102
194
  `;
103
195
  async executeJXA(script, timeoutMs = 30000) {
@@ -221,6 +313,41 @@ export class OmniFocus {
221
313
  }
222
314
  return updates.join('\n ');
223
315
  }
316
+ buildTagUpdates(options) {
317
+ const updates = [];
318
+ if (options.name !== undefined) {
319
+ updates.push(`tag.name = "${this.escapeString(options.name)}";`);
320
+ }
321
+ if (options.status !== undefined) {
322
+ updates.push(`tag.status = stringToTagStatus("${options.status}");`);
323
+ }
324
+ return updates.join('\n ');
325
+ }
326
+ buildProjectUpdates(options) {
327
+ const updates = [];
328
+ if (options.name !== undefined) {
329
+ updates.push(`project.name = "${this.escapeString(options.name)}";`);
330
+ }
331
+ if (options.note !== undefined) {
332
+ updates.push(`project.note = "${this.escapeString(options.note)}";`);
333
+ }
334
+ if (options.sequential !== undefined) {
335
+ updates.push(`project.sequential = ${options.sequential};`);
336
+ }
337
+ if (options.status !== undefined) {
338
+ updates.push(`project.status = stringToProjectStatus("${options.status}");`);
339
+ }
340
+ if (options.folder !== undefined && options.folder) {
341
+ updates.push(`
342
+ const targetFolder = findByName(flattenedFolders, "${this.escapeString(options.folder)}", "Folder");
343
+ moveProjects([project], targetFolder);
344
+ `);
345
+ }
346
+ if (options.tags !== undefined) {
347
+ updates.push(`replaceTagsOn(project, ${JSON.stringify(options.tags)});`);
348
+ }
349
+ return updates.join('\n ');
350
+ }
224
351
  async listTasks(filters = {}) {
225
352
  const omniScript = `
226
353
  ${this.OMNI_HELPERS}
@@ -314,6 +441,18 @@ export class OmniFocus {
314
441
  const output = await this.executeJXA(this.wrapOmniScript(omniScript));
315
442
  return JSON.parse(output);
316
443
  }
444
+ async updateProject(idOrName, options) {
445
+ const omniScript = `
446
+ ${this.OMNI_HELPERS}
447
+ (() => {
448
+ const project = findProject("${this.escapeString(idOrName)}");
449
+ ${this.buildProjectUpdates(options)}
450
+ return JSON.stringify(serializeProject(project));
451
+ })();
452
+ `;
453
+ const output = await this.executeJXA(this.wrapOmniScript(omniScript));
454
+ return JSON.parse(output);
455
+ }
317
456
  async deleteProject(idOrName) {
318
457
  const omniScript = `
319
458
  ${this.OMNI_HELPERS}
@@ -453,5 +592,271 @@ export class OmniFocus {
453
592
  const output = await this.executeJXA(this.wrapOmniScript(omniScript), 60000);
454
593
  return JSON.parse(output);
455
594
  }
595
+ async listTags(options = {}) {
596
+ const omniScript = `
597
+ ${this.OMNI_HELPERS}
598
+ (() => {
599
+ const results = [];
600
+ const now = new Date();
601
+ const activeOnly = ${!!options.activeOnly};
602
+
603
+ for (const tag of flattenedTags) {
604
+ const serialized = serializeTag(tag, activeOnly);
605
+ results.push(serialized);
606
+ }
607
+
608
+ ${options.unusedDays ? `
609
+ const cutoffDate = new Date(now.getTime() - (${options.unusedDays} * 24 * 60 * 60 * 1000));
610
+ const filtered = results.filter(tag => {
611
+ if (!tag.lastActivity) return true;
612
+ return new Date(tag.lastActivity) < cutoffDate;
613
+ });
614
+ return JSON.stringify(filtered);
615
+ ` : 'return JSON.stringify(results);'}
616
+ })();
617
+ `;
618
+ const output = await this.executeJXA(this.wrapOmniScript(omniScript));
619
+ const tags = JSON.parse(output);
620
+ return this.sortTags(tags, options.sortBy);
621
+ }
622
+ sortTags(tags, sortBy = 'name') {
623
+ const sortFns = {
624
+ usage: (a, b) => b.taskCount - a.taskCount,
625
+ activity: (a, b) => {
626
+ if (!a.lastActivity && !b.lastActivity)
627
+ return 0;
628
+ if (!a.lastActivity)
629
+ return 1;
630
+ if (!b.lastActivity)
631
+ return -1;
632
+ return new Date(b.lastActivity).getTime() - new Date(a.lastActivity).getTime();
633
+ },
634
+ name: (a, b) => a.name.localeCompare(b.name)
635
+ };
636
+ return tags.sort(sortFns[sortBy] || sortFns.name);
637
+ }
638
+ async getTagStats() {
639
+ const omniScript = `
640
+ ${this.OMNI_HELPERS}
641
+ (() => {
642
+ const allTags = [];
643
+ for (const tag of flattenedTags) {
644
+ allTags.push(serializeTag(tag));
645
+ }
646
+
647
+ const activeTags = allTags.filter(t => t.active);
648
+ const tagsWithTasks = allTags.filter(t => t.taskCount > 0);
649
+ const unusedTags = allTags.filter(t => t.taskCount === 0);
650
+
651
+ const totalTasks = tagsWithTasks.reduce((sum, t) => sum + t.taskCount, 0);
652
+ const avgTasksPerTag = computeAverage(totalTasks, tagsWithTasks.length);
653
+
654
+ const mostUsedTags = computeTopItems(allTags, 'taskCount');
655
+ const leastUsedTags = computeTopItems(
656
+ tagsWithTasks.map(t => ({ ...t, taskCount: -t.taskCount })),
657
+ 'taskCount'
658
+ ).map(t => ({ name: t.name, taskCount: -t.taskCount }));
659
+
660
+ const now = new Date();
661
+ const thirtyDaysAgo = new Date(now.getTime() - (30 * 24 * 60 * 60 * 1000));
662
+ const staleTags = allTags
663
+ .filter(t => t.lastActivity && new Date(t.lastActivity) < thirtyDaysAgo)
664
+ .map(t => ({
665
+ name: t.name,
666
+ daysSinceActivity: Math.floor((now - new Date(t.lastActivity)) / (24 * 60 * 60 * 1000))
667
+ }))
668
+ .sort((a, b) => b.daysSinceActivity - a.daysSinceActivity);
669
+
670
+ return JSON.stringify({
671
+ totalTags: allTags.length,
672
+ activeTags: activeTags.length,
673
+ tagsWithTasks: tagsWithTasks.length,
674
+ unusedTags: unusedTags.length,
675
+ avgTasksPerTag,
676
+ mostUsedTags,
677
+ leastUsedTags,
678
+ staleTags
679
+ });
680
+ })();
681
+ `;
682
+ const output = await this.executeJXA(this.wrapOmniScript(omniScript));
683
+ return JSON.parse(output);
684
+ }
685
+ async createTag(options) {
686
+ const omniScript = `
687
+ ${this.OMNI_HELPERS}
688
+ (() => {
689
+ ${options.parent
690
+ ? `const parentTag = findTag("${this.escapeString(options.parent)}");
691
+ const tag = new Tag("${this.escapeString(options.name)}", parentTag);`
692
+ : `const tag = new Tag("${this.escapeString(options.name)}", tags.beginning);`}
693
+
694
+ ${options.status ? `tag.status = stringToTagStatus("${options.status}");` : ''}
695
+
696
+ return JSON.stringify(serializeTag(tag));
697
+ })();
698
+ `;
699
+ const output = await this.executeJXA(this.wrapOmniScript(omniScript));
700
+ return JSON.parse(output);
701
+ }
702
+ async getTag(idOrName) {
703
+ const omniScript = `
704
+ ${this.OMNI_HELPERS}
705
+ (() => {
706
+ const tag = findTag("${this.escapeString(idOrName)}");
707
+ return JSON.stringify(serializeTag(tag));
708
+ })();
709
+ `;
710
+ const output = await this.executeJXA(this.wrapOmniScript(omniScript));
711
+ return JSON.parse(output);
712
+ }
713
+ async updateTag(idOrName, options) {
714
+ const omniScript = `
715
+ ${this.OMNI_HELPERS}
716
+ (() => {
717
+ const tag = findTag("${this.escapeString(idOrName)}");
718
+ ${this.buildTagUpdates(options)}
719
+ return JSON.stringify(serializeTag(tag));
720
+ })();
721
+ `;
722
+ const output = await this.executeJXA(this.wrapOmniScript(omniScript));
723
+ return JSON.parse(output);
724
+ }
725
+ async deleteTag(idOrName) {
726
+ const omniScript = `
727
+ ${this.OMNI_HELPERS}
728
+ (() => {
729
+ deleteObject(findTag("${this.escapeString(idOrName)}"));
730
+ })();
731
+ `;
732
+ await this.executeJXA(this.wrapOmniScript(omniScript));
733
+ }
734
+ async getTaskStats() {
735
+ const omniScript = `
736
+ ${this.OMNI_HELPERS}
737
+ (() => {
738
+ const allTasks = Array.from(flattenedTasks);
739
+ const now = new Date();
740
+
741
+ const activeTasks = allTasks.filter(t => !t.completed && !t.dropped);
742
+ const completedTasks = allTasks.filter(t => t.completed);
743
+ const flaggedTasks = activeTasks.filter(t => t.flagged);
744
+ const overdueActiveTasks = activeTasks.filter(t => t.dueDate && t.dueDate < now);
745
+
746
+ const tasksWithEstimates = allTasks.filter(t => t.estimatedMinutes && t.estimatedMinutes > 0);
747
+ const totalEstimatedMinutes = tasksWithEstimates.reduce((sum, t) => sum + (t.estimatedMinutes || 0), 0);
748
+ const avgEstimatedMinutes = tasksWithEstimates.length > 0
749
+ ? Math.round(totalEstimatedMinutes / tasksWithEstimates.length)
750
+ : null;
751
+
752
+ const totalNonDropped = allTasks.filter(t => !t.dropped).length;
753
+ const completionRate = totalNonDropped > 0
754
+ ? Math.round((completedTasks.length / totalNonDropped) * 100)
755
+ : 0;
756
+
757
+ const projectCounts = {};
758
+ for (const task of allTasks) {
759
+ if (task.dropped) continue;
760
+ const projectName = task.containingProject ? task.containingProject.name : 'Inbox';
761
+ projectCounts[projectName] = (projectCounts[projectName] || 0) + 1;
762
+ }
763
+ const tasksByProject = computeTopItems(
764
+ Object.entries(projectCounts).map(([name, count]) => ({ name, taskCount: count })),
765
+ 'taskCount'
766
+ );
767
+
768
+ const tagCounts = {};
769
+ for (const task of allTasks) {
770
+ if (task.dropped) continue;
771
+ for (const tag of task.tags) {
772
+ tagCounts[tag.name] = (tagCounts[tag.name] || 0) + 1;
773
+ }
774
+ }
775
+ const tasksByTag = computeTopItems(
776
+ Object.entries(tagCounts).map(([name, count]) => ({ name, taskCount: count })),
777
+ 'taskCount'
778
+ );
779
+
780
+ return JSON.stringify({
781
+ totalTasks: allTasks.length,
782
+ activeTasks: activeTasks.length,
783
+ completedTasks: completedTasks.length,
784
+ flaggedTasks: flaggedTasks.length,
785
+ overdueActiveTasks: overdueActiveTasks.length,
786
+ avgEstimatedMinutes,
787
+ tasksWithEstimates: tasksWithEstimates.length,
788
+ completionRate,
789
+ tasksByProject,
790
+ tasksByTag
791
+ });
792
+ })();
793
+ `;
794
+ const output = await this.executeJXA(this.wrapOmniScript(omniScript));
795
+ return JSON.parse(output);
796
+ }
797
+ async getProjectStats() {
798
+ const omniScript = `
799
+ ${this.OMNI_HELPERS}
800
+ (() => {
801
+ const allProjects = Array.from(flattenedProjects);
802
+
803
+ const activeProjects = allProjects.filter(p => p.status === Project.Status.Active);
804
+ const onHoldProjects = allProjects.filter(p => p.status === Project.Status.OnHold);
805
+ const droppedProjects = allProjects.filter(p => p.status === Project.Status.Dropped);
806
+ const sequentialProjects = allProjects.filter(p => p.sequential);
807
+ const parallelProjects = allProjects.filter(p => !p.sequential);
808
+
809
+ const nonDroppedProjects = allProjects.filter(p => p.status !== Project.Status.Dropped);
810
+
811
+ const totalTasks = nonDroppedProjects.reduce((sum, p) => sum + p.flattenedTasks.length, 0);
812
+ const totalRemaining = nonDroppedProjects.reduce((sum, p) => {
813
+ return sum + p.flattenedTasks.filter(t => !t.completed).length;
814
+ }, 0);
815
+
816
+ const avgTasksPerProject = computeAverage(totalTasks, nonDroppedProjects.length);
817
+ const avgRemainingPerProject = computeAverage(totalRemaining, nonDroppedProjects.length);
818
+
819
+ const completionRates = nonDroppedProjects
820
+ .filter(p => p.flattenedTasks.length > 0)
821
+ .map(p => {
822
+ const total = p.flattenedTasks.length;
823
+ const completed = p.flattenedTasks.filter(t => t.completed).length;
824
+ return (completed / total) * 100;
825
+ });
826
+
827
+ const avgCompletionRate = completionRates.length > 0
828
+ ? Math.round(completionRates.reduce((sum, rate) => sum + rate, 0) / completionRates.length)
829
+ : 0;
830
+
831
+ const projectsWithMostTasks = computeTopItems(
832
+ nonDroppedProjects.map(p => ({ name: p.name, taskCount: p.flattenedTasks.length })),
833
+ 'taskCount'
834
+ );
835
+
836
+ const projectsWithMostRemaining = computeTopItems(
837
+ nonDroppedProjects
838
+ .map(p => ({ name: p.name, remainingCount: p.flattenedTasks.filter(t => !t.completed).length }))
839
+ .filter(p => p.remainingCount > 0),
840
+ 'remainingCount'
841
+ );
842
+
843
+ return JSON.stringify({
844
+ totalProjects: allProjects.length,
845
+ activeProjects: activeProjects.length,
846
+ onHoldProjects: onHoldProjects.length,
847
+ droppedProjects: droppedProjects.length,
848
+ sequentialProjects: sequentialProjects.length,
849
+ parallelProjects: parallelProjects.length,
850
+ avgTasksPerProject,
851
+ avgRemainingPerProject,
852
+ avgCompletionRate,
853
+ projectsWithMostTasks,
854
+ projectsWithMostRemaining
855
+ });
856
+ })();
857
+ `;
858
+ const output = await this.executeJXA(this.wrapOmniScript(omniScript));
859
+ return JSON.parse(output);
860
+ }
456
861
  }
457
862
  //# sourceMappingURL=omnifocus.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"omnifocus.js","sourceRoot":"","sources":["../../src/lib/omnifocus.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"omnifocus.js","sourceRoot":"","sources":["../../src/lib/omnifocus.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -63,8 +63,100 @@ export interface CreateProjectOptions {
63
63
  tags?: string[];
64
64
  status?: 'active' | 'on hold' | 'dropped';
65
65
  }
66
+ export interface UpdateProjectOptions {
67
+ name?: string;
68
+ note?: string;
69
+ folder?: string;
70
+ sequential?: boolean;
71
+ tags?: string[];
72
+ status?: 'active' | 'on hold' | 'dropped';
73
+ }
66
74
  export interface Perspective {
67
75
  id: string;
68
76
  name: string;
69
77
  }
78
+ export interface Tag {
79
+ id: string;
80
+ name: string;
81
+ taskCount: number;
82
+ remainingTaskCount: number;
83
+ added: string | null;
84
+ modified: string | null;
85
+ lastActivity: string | null;
86
+ active: boolean;
87
+ status: 'active' | 'on hold' | 'dropped';
88
+ parent: string | null;
89
+ children: string[];
90
+ allowsNextAction: boolean;
91
+ }
92
+ export interface TagListOptions {
93
+ unusedDays?: number;
94
+ sortBy?: 'name' | 'usage' | 'activity';
95
+ activeOnly?: boolean;
96
+ }
97
+ export interface TagStats {
98
+ totalTags: number;
99
+ activeTags: number;
100
+ tagsWithTasks: number;
101
+ unusedTags: number;
102
+ avgTasksPerTag: number;
103
+ mostUsedTags: Array<{
104
+ name: string;
105
+ taskCount: number;
106
+ }>;
107
+ leastUsedTags: Array<{
108
+ name: string;
109
+ taskCount: number;
110
+ }>;
111
+ staleTags: Array<{
112
+ name: string;
113
+ daysSinceActivity: number;
114
+ }>;
115
+ }
116
+ export interface TaskStats {
117
+ totalTasks: number;
118
+ activeTasks: number;
119
+ completedTasks: number;
120
+ flaggedTasks: number;
121
+ overdueActiveTasks: number;
122
+ avgEstimatedMinutes: number | null;
123
+ tasksWithEstimates: number;
124
+ completionRate: number;
125
+ tasksByProject: Array<{
126
+ name: string;
127
+ taskCount: number;
128
+ }>;
129
+ tasksByTag: Array<{
130
+ name: string;
131
+ taskCount: number;
132
+ }>;
133
+ }
134
+ export interface ProjectStats {
135
+ totalProjects: number;
136
+ activeProjects: number;
137
+ onHoldProjects: number;
138
+ droppedProjects: number;
139
+ sequentialProjects: number;
140
+ parallelProjects: number;
141
+ avgTasksPerProject: number;
142
+ avgRemainingPerProject: number;
143
+ avgCompletionRate: number;
144
+ projectsWithMostTasks: Array<{
145
+ name: string;
146
+ taskCount: number;
147
+ }>;
148
+ projectsWithMostRemaining: Array<{
149
+ name: string;
150
+ remainingCount: number;
151
+ }>;
152
+ }
153
+ export interface CreateTagOptions {
154
+ name: string;
155
+ parent?: string;
156
+ status?: 'active' | 'on hold' | 'dropped';
157
+ }
158
+ export interface UpdateTagOptions {
159
+ name?: string;
160
+ status?: 'active' | 'on hold' | 'dropped';
161
+ }
70
162
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IACzC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;CAC3C;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}