omnifocus-mcp-server 1.0.7 → 1.2.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 (46) hide show
  1. package/README.md +3 -2
  2. package/dist/omnifocus/client.d.ts +6 -3
  3. package/dist/omnifocus/client.d.ts.map +1 -1
  4. package/dist/omnifocus/client.js +10 -7
  5. package/dist/omnifocus/client.js.map +1 -1
  6. package/dist/omnifocus/executor.d.ts +11 -0
  7. package/dist/omnifocus/executor.d.ts.map +1 -1
  8. package/dist/omnifocus/executor.js +40 -14
  9. package/dist/omnifocus/executor.js.map +1 -1
  10. package/dist/omnifocus/scripts/database.d.ts +7 -0
  11. package/dist/omnifocus/scripts/database.d.ts.map +1 -1
  12. package/dist/omnifocus/scripts/database.js +35 -11
  13. package/dist/omnifocus/scripts/database.js.map +1 -1
  14. package/dist/omnifocus/scripts/perspectives.d.ts +1 -2
  15. package/dist/omnifocus/scripts/perspectives.d.ts.map +1 -1
  16. package/dist/omnifocus/scripts/perspectives.js +4 -10
  17. package/dist/omnifocus/scripts/perspectives.js.map +1 -1
  18. package/dist/omnifocus/scripts/projects.d.ts.map +1 -1
  19. package/dist/omnifocus/scripts/projects.js +6 -3
  20. package/dist/omnifocus/scripts/projects.js.map +1 -1
  21. package/dist/omnifocus/scripts/tasks.d.ts +1 -1
  22. package/dist/omnifocus/scripts/tasks.d.ts.map +1 -1
  23. package/dist/omnifocus/scripts/tasks.js +28 -15
  24. package/dist/omnifocus/scripts/tasks.js.map +1 -1
  25. package/dist/omnifocus/serializers.d.ts +2 -2
  26. package/dist/omnifocus/serializers.d.ts.map +1 -1
  27. package/dist/omnifocus/serializers.js +15 -0
  28. package/dist/omnifocus/serializers.js.map +1 -1
  29. package/dist/server.d.ts.map +1 -1
  30. package/dist/server.js +10 -0
  31. package/dist/server.js.map +1 -1
  32. package/dist/tools/database.d.ts.map +1 -1
  33. package/dist/tools/database.js +12 -0
  34. package/dist/tools/database.js.map +1 -1
  35. package/dist/tools/perspectives.d.ts.map +1 -1
  36. package/dist/tools/perspectives.js +2 -5
  37. package/dist/tools/perspectives.js.map +1 -1
  38. package/dist/tools/projects.d.ts.map +1 -1
  39. package/dist/tools/projects.js +2 -0
  40. package/dist/tools/projects.js.map +1 -1
  41. package/dist/tools/tasks.d.ts.map +1 -1
  42. package/dist/tools/tasks.js +25 -5
  43. package/dist/tools/tasks.js.map +1 -1
  44. package/dist/types/omnifocus.d.ts +14 -4
  45. package/dist/types/omnifocus.d.ts.map +1 -1
  46. package/package.json +1 -1
@@ -15,6 +15,8 @@ const taskFilterLogicFn = `
15
15
  var _dueBefore = args.dueBefore ? new Date(args.dueBefore) : null;
16
16
  var _deferAfter = args.deferAfter ? new Date(args.deferAfter) : null;
17
17
  var _deferBefore = args.deferBefore ? new Date(args.deferBefore) : null;
18
+ var _plannedAfter = args.plannedAfter ? new Date(args.plannedAfter) : null;
19
+ var _plannedBefore = args.plannedBefore ? new Date(args.plannedBefore) : null;
18
20
  var _searchQuery = args.search ? args.search.toLowerCase() : null;
19
21
 
20
22
  var tasks = source.filter(function(t) {
@@ -33,9 +35,9 @@ const taskFilterLogicFn = `
33
35
  if (t.taskStatus === Task.Status.Completed || t.taskStatus === Task.Status.Dropped) return false;
34
36
  }
35
37
 
36
- // Filter by flagged
37
- if (args.flagged === true && !t.flagged) return false;
38
- if (args.flagged === false && t.flagged) return false;
38
+ // Match effectiveFlagged so children of a flagged project surface (mirrors OmniFocus's Flagged perspective).
39
+ if (args.flagged === true && !t.effectiveFlagged) return false;
40
+ if (args.flagged === false && t.effectiveFlagged) return false;
39
41
 
40
42
  // Filter by available
41
43
  if (args.available === true && t.taskStatus !== Task.Status.Available) return false;
@@ -58,13 +60,17 @@ const taskFilterLogicFn = `
58
60
  }
59
61
  }
60
62
 
61
- // Filter by due date range
62
- if (_dueAfter && (!t.dueDate || t.dueDate < _dueAfter)) return false;
63
- if (_dueBefore && (!t.dueDate || t.dueDate > _dueBefore)) return false;
63
+ // Match effectiveDueDate so tasks inheriting a project's due date are included.
64
+ if (_dueAfter && (!t.effectiveDueDate || t.effectiveDueDate < _dueAfter)) return false;
65
+ if (_dueBefore && (!t.effectiveDueDate || t.effectiveDueDate > _dueBefore)) return false;
64
66
 
65
- // Filter by defer date range
66
- if (_deferAfter && (!t.deferDate || t.deferDate < _deferAfter)) return false;
67
- if (_deferBefore && (!t.deferDate || t.deferDate > _deferBefore)) return false;
67
+ // Match effectiveDeferDate so tasks inheriting a project's defer date are included.
68
+ if (_deferAfter && (!t.effectiveDeferDate || t.effectiveDeferDate < _deferAfter)) return false;
69
+ if (_deferBefore && (!t.effectiveDeferDate || t.effectiveDeferDate > _deferBefore)) return false;
70
+
71
+ // Match effectivePlannedDate so tasks inheriting a project's planned date are included.
72
+ if (_plannedAfter && (!t.effectivePlannedDate || t.effectivePlannedDate < _plannedAfter)) return false;
73
+ if (_plannedBefore && (!t.effectivePlannedDate || t.effectivePlannedDate > _plannedBefore)) return false;
68
74
 
69
75
  // Filter by search query
70
76
  if (_searchQuery) {
@@ -125,7 +131,7 @@ export function buildGetTaskScript(args) {
125
131
  })()`;
126
132
  }
127
133
  export function buildCreateTaskScript(args) {
128
- validateDateArgs(args, ["deferDate", "dueDate"]);
134
+ validateDateArgs(args, ["deferDate", "dueDate", "plannedDate"]);
129
135
  const argsJson = JSON.stringify(args);
130
136
  return `(() => {
131
137
  var args = JSON.parse(${JSON.stringify(argsJson)});
@@ -137,6 +143,7 @@ export function buildCreateTaskScript(args) {
137
143
  if (args.flagged !== undefined) task.flagged = args.flagged;
138
144
  if (args.deferDate) task.deferDate = new Date(args.deferDate);
139
145
  if (args.dueDate) task.dueDate = new Date(args.dueDate);
146
+ if (args.plannedDate) task.plannedDate = new Date(args.plannedDate);
140
147
  if (args.estimatedMinutes !== undefined) task.estimatedMinutes = args.estimatedMinutes;
141
148
  if (args.completedByChildren !== undefined) task.completedByChildren = args.completedByChildren;
142
149
 
@@ -172,7 +179,7 @@ export function buildCreateTaskScript(args) {
172
179
  })()`;
173
180
  }
174
181
  export function buildUpdateTaskScript(args) {
175
- validateDateArgs(args, ["deferDate", "dueDate"]);
182
+ validateDateArgs(args, ["deferDate", "dueDate", "plannedDate"]);
176
183
  const argsJson = JSON.stringify(args);
177
184
  return `(() => {
178
185
  var args = JSON.parse(${JSON.stringify(argsJson)});
@@ -186,6 +193,7 @@ export function buildUpdateTaskScript(args) {
186
193
  if (args.flagged !== undefined) task.flagged = args.flagged;
187
194
  if (args.deferDate !== undefined) task.deferDate = args.deferDate ? new Date(args.deferDate) : null;
188
195
  if (args.dueDate !== undefined) task.dueDate = args.dueDate ? new Date(args.dueDate) : null;
196
+ if (args.plannedDate !== undefined) task.plannedDate = args.plannedDate ? new Date(args.plannedDate) : null;
189
197
  if (args.estimatedMinutes !== undefined) task.estimatedMinutes = args.estimatedMinutes;
190
198
  if (args.sequential !== undefined) task.sequential = args.sequential;
191
199
  if (args.completedByChildren !== undefined) task.completedByChildren = args.completedByChildren;
@@ -202,15 +210,19 @@ export function buildUpdateTaskScript(args) {
202
210
  return JSON.stringify(serializeTask(task));
203
211
  })()`;
204
212
  }
205
- export function buildCompleteTaskScript(id) {
206
- const argsJson = JSON.stringify({ id });
213
+ export function buildCompleteTaskScript(id, completionDate) {
214
+ const argsJson = JSON.stringify({ id, completionDate: completionDate ?? null });
207
215
  return `(() => {
208
216
  var args = JSON.parse(${JSON.stringify(argsJson)});
209
217
  ${serializeTaskFn}
210
218
 
211
219
  var task = byId(flattenedTasks, args.id);
212
220
  if (!task) throw new Error("Task not found: " + args.id);
213
- task.markComplete();
221
+ if (args.completionDate) {
222
+ task.markComplete(new Date(args.completionDate));
223
+ } else {
224
+ task.markComplete();
225
+ }
214
226
  return JSON.stringify(serializeTask(task));
215
227
  })()`;
216
228
  }
@@ -443,7 +455,7 @@ export function buildRemoveTaskNotificationScript(taskId, notificationId) {
443
455
  export function buildBatchCreateTasksScript(args) {
444
456
  function validateBatchTaskDates(tasks) {
445
457
  for (const task of tasks) {
446
- validateDateArgs(task, ["deferDate", "dueDate"]);
458
+ validateDateArgs(task, ["deferDate", "dueDate", "plannedDate"]);
447
459
  if (Array.isArray(task.children)) {
448
460
  validateBatchTaskDates(task.children);
449
461
  }
@@ -473,6 +485,7 @@ export function buildBatchCreateTasksScript(args) {
473
485
  if (item.flagged !== undefined) task.flagged = item.flagged;
474
486
  if (item.deferDate) task.deferDate = new Date(item.deferDate);
475
487
  if (item.dueDate) task.dueDate = new Date(item.dueDate);
488
+ if (item.plannedDate) task.plannedDate = new Date(item.plannedDate);
476
489
  if (item.estimatedMinutes !== undefined) task.estimatedMinutes = item.estimatedMinutes;
477
490
  if (item.completedByChildren !== undefined) task.completedByChildren = item.completedByChildren;
478
491
 
@@ -1 +1 @@
1
- {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../../src/omnifocus/scripts/tasks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../../src/omnifocus/scripts/tasks.ts"],"names":[],"mappings":"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"}
@@ -4,9 +4,9 @@
4
4
  *
5
5
  * Maps are hoisted outside serializer functions to avoid re-allocation per call.
6
6
  */
7
- export declare const serializeTaskFn = "\nvar _taskMethodMap = {};\n_taskMethodMap[Task.RepetitionMethod.Fixed] = \"fixed\";\n_taskMethodMap[Task.RepetitionMethod.StartAfterCompletion] = \"startAfterCompletion\";\n_taskMethodMap[Task.RepetitionMethod.DueAfterCompletion] = \"dueAfterCompletion\";\n\nfunction serializeTask(task) {\n var rr = null;\n if (task.repetitionRule) {\n rr = {\n ruleString: task.repetitionRule.ruleString,\n method: _taskMethodMap[task.repetitionRule.method] || \"fixed\"\n };\n }\n var cp = task.containingProject;\n return {\n id: task.id.primaryKey,\n name: task.name,\n note: task.note,\n url: \"omnifocus:///task/\" + task.id.primaryKey,\n flagged: task.flagged,\n completed: task.taskStatus === Task.Status.Completed,\n dropped: task.taskStatus === Task.Status.Dropped,\n deferDate: task.deferDate ? task.deferDate.toISOString() : null,\n dueDate: task.dueDate ? task.dueDate.toISOString() : null,\n completionDate: task.completionDate ? task.completionDate.toISOString() : null,\n droppedDate: task.droppedDate ? task.droppedDate.toISOString() : null,\n added: task.added ? task.added.toISOString() : null,\n modified: task.modified ? task.modified.toISOString() : null,\n effectiveDueDate: task.effectiveDueDate ? task.effectiveDueDate.toISOString() : null,\n effectiveDeferDate: task.effectiveDeferDate ? task.effectiveDeferDate.toISOString() : null,\n effectiveFlagged: task.effectiveFlagged,\n estimatedMinutes: task.estimatedMinutes,\n containingProjectId: cp ? cp.id.primaryKey : null,\n containingProjectName: cp ? cp.name : null,\n parentTaskId: task.parent ? (task.parent.id ? task.parent.id.primaryKey : null) : null,\n tags: task.tags.map(function(t) { return { id: t.id.primaryKey, name: t.name }; }),\n hasChildren: task.hasChildren,\n sequential: task.sequential,\n completedByChildren: task.completedByChildren,\n inInbox: task.inInbox,\n repetitionRule: rr\n };\n}";
7
+ export declare const serializeTaskFn = "\nvar _taskMethodMap = {};\n_taskMethodMap[Task.RepetitionMethod.Fixed] = \"fixed\";\n_taskMethodMap[Task.RepetitionMethod.StartAfterCompletion] = \"startAfterCompletion\";\n_taskMethodMap[Task.RepetitionMethod.DueAfterCompletion] = \"dueAfterCompletion\";\n\nvar _taskStatusMap = {};\n_taskStatusMap[Task.Status.Available] = \"available\";\n_taskStatusMap[Task.Status.Blocked] = \"blocked\";\n_taskStatusMap[Task.Status.Completed] = \"completed\";\n_taskStatusMap[Task.Status.Dropped] = \"dropped\";\n_taskStatusMap[Task.Status.Next] = \"next\";\n_taskStatusMap[Task.Status.DueSoon] = \"dueSoon\";\n_taskStatusMap[Task.Status.Overdue] = \"overdue\";\n\nfunction serializeTask(task) {\n var rr = null;\n if (task.repetitionRule) {\n rr = {\n ruleString: task.repetitionRule.ruleString,\n method: _taskMethodMap[task.repetitionRule.method] || \"fixed\"\n };\n }\n var cp = task.containingProject;\n return {\n id: task.id.primaryKey,\n name: task.name,\n note: task.note,\n url: \"omnifocus:///task/\" + task.id.primaryKey,\n flagged: task.flagged,\n completed: task.taskStatus === Task.Status.Completed,\n dropped: task.taskStatus === Task.Status.Dropped,\n taskStatus: _taskStatusMap[task.taskStatus] || \"unknown\",\n deferDate: task.deferDate ? task.deferDate.toISOString() : null,\n dueDate: task.dueDate ? task.dueDate.toISOString() : null,\n plannedDate: task.plannedDate ? task.plannedDate.toISOString() : null,\n completionDate: task.completionDate ? task.completionDate.toISOString() : null,\n droppedDate: task.droppedDate ? task.droppedDate.toISOString() : null,\n added: task.added ? task.added.toISOString() : null,\n modified: task.modified ? task.modified.toISOString() : null,\n effectiveDueDate: task.effectiveDueDate ? task.effectiveDueDate.toISOString() : null,\n effectiveDeferDate: task.effectiveDeferDate ? task.effectiveDeferDate.toISOString() : null,\n effectivePlannedDate: task.effectivePlannedDate ? task.effectivePlannedDate.toISOString() : null,\n effectiveFlagged: task.effectiveFlagged,\n effectivelyCompleted: task.effectivelyCompleted,\n effectivelyDropped: task.effectivelyDropped,\n estimatedMinutes: task.estimatedMinutes,\n containingProjectId: cp ? cp.id.primaryKey : null,\n containingProjectName: cp ? cp.name : null,\n parentTaskId: task.parent ? (task.parent.id ? task.parent.id.primaryKey : null) : null,\n tags: task.tags.map(function(t) { return { id: t.id.primaryKey, name: t.name }; }),\n hasChildren: task.hasChildren,\n sequential: task.sequential,\n completedByChildren: task.completedByChildren,\n inInbox: task.inInbox,\n repetitionRule: rr\n };\n}";
8
8
  export declare const serializeTaskWithChildrenFn = "\nfunction serializeTaskWithChildren(task, depth, maxDepth) {\n var result = serializeTask(task);\n result.children = [];\n if (task.hasChildren && (maxDepth === 0 || depth < maxDepth)) {\n var kids = task.children;\n for (var i = 0; i < kids.length; i++) {\n result.children.push(serializeTaskWithChildren(kids[i], depth + 1, maxDepth));\n }\n }\n return result;\n}";
9
- export declare const serializeProjectFn = "\nvar _projectStatusMap = {};\n_projectStatusMap[Project.Status.Active] = \"active\";\n_projectStatusMap[Project.Status.OnHold] = \"onHold\";\n_projectStatusMap[Project.Status.Done] = \"done\";\n_projectStatusMap[Project.Status.Dropped] = \"dropped\";\n\nfunction serializeProject(project) {\n var ri = null;\n if (project.reviewInterval) {\n ri = { steps: project.reviewInterval.steps, unit: project.reviewInterval.unit + \"\" };\n }\n\n var ft = project.flattenedTasks;\n return {\n id: project.id.primaryKey,\n name: project.name,\n note: project.note,\n url: \"omnifocus:///task/\" + project.id.primaryKey,\n status: _projectStatusMap[project.status] || \"active\",\n flagged: project.flagged,\n completed: project.status === Project.Status.Done,\n deferDate: project.deferDate ? project.deferDate.toISOString() : null,\n dueDate: project.dueDate ? project.dueDate.toISOString() : null,\n completionDate: project.completionDate ? project.completionDate.toISOString() : null,\n droppedDate: project.droppedDate ? project.droppedDate.toISOString() : null,\n added: project.task.added ? project.task.added.toISOString() : null,\n modified: project.task.modified ? project.task.modified.toISOString() : null,\n estimatedMinutes: project.estimatedMinutes,\n containingFolderId: project.parentFolder ? project.parentFolder.id.primaryKey : null,\n containingFolderName: project.parentFolder ? project.parentFolder.name : null,\n tags: project.task.tags.map(function(t) { return { id: t.id.primaryKey, name: t.name }; }),\n sequential: project.sequential,\n singleActionList: project.containsSingletonActions,\n completedByChildren: project.completedByChildren,\n taskCount: ft.length,\n remainingTaskCount: ft.filter(function(t) { return t.taskStatus === Task.Status.Available || t.taskStatus === Task.Status.Blocked; }).length,\n lastReviewDate: project.lastReviewDate ? project.lastReviewDate.toISOString() : null,\n nextReviewDate: project.nextReviewDate ? project.nextReviewDate.toISOString() : null,\n reviewInterval: ri\n };\n}";
9
+ export declare const serializeProjectFn = "\nvar _projectStatusMap = {};\n_projectStatusMap[Project.Status.Active] = \"active\";\n_projectStatusMap[Project.Status.OnHold] = \"onHold\";\n_projectStatusMap[Project.Status.Done] = \"done\";\n_projectStatusMap[Project.Status.Dropped] = \"dropped\";\n\nfunction serializeProject(project) {\n var ri = null;\n if (project.reviewInterval) {\n ri = { steps: project.reviewInterval.steps, unit: project.reviewInterval.unit + \"\" };\n }\n\n var ft = project.flattenedTasks;\n return {\n id: project.id.primaryKey,\n name: project.name,\n note: project.note,\n url: \"omnifocus:///task/\" + project.id.primaryKey,\n status: _projectStatusMap[project.status] || \"active\",\n flagged: project.flagged,\n completed: project.status === Project.Status.Done,\n deferDate: project.deferDate ? project.deferDate.toISOString() : null,\n dueDate: project.dueDate ? project.dueDate.toISOString() : null,\n plannedDate: project.plannedDate ? project.plannedDate.toISOString() : null,\n completionDate: project.completionDate ? project.completionDate.toISOString() : null,\n droppedDate: project.droppedDate ? project.droppedDate.toISOString() : null,\n added: project.task.added ? project.task.added.toISOString() : null,\n modified: project.task.modified ? project.task.modified.toISOString() : null,\n estimatedMinutes: project.estimatedMinutes,\n containingFolderId: project.parentFolder ? project.parentFolder.id.primaryKey : null,\n containingFolderName: project.parentFolder ? project.parentFolder.name : null,\n tags: project.task.tags.map(function(t) { return { id: t.id.primaryKey, name: t.name }; }),\n sequential: project.sequential,\n singleActionList: project.containsSingletonActions,\n completedByChildren: project.completedByChildren,\n taskCount: ft.length,\n remainingTaskCount: ft.filter(function(t) { return t.taskStatus === Task.Status.Available || t.taskStatus === Task.Status.Blocked; }).length,\n lastReviewDate: project.lastReviewDate ? project.lastReviewDate.toISOString() : null,\n nextReviewDate: project.nextReviewDate ? project.nextReviewDate.toISOString() : null,\n reviewInterval: ri\n };\n}";
10
10
  export declare const serializeFolderFn = "\nfunction serializeFolder(folder) {\n var statusVal = \"active\";\n if (folder.status === Folder.Status.Dropped) statusVal = \"dropped\";\n return {\n id: folder.id.primaryKey,\n name: folder.name,\n url: \"omnifocus:///folder/\" + folder.id.primaryKey,\n status: statusVal,\n parentFolderId: folder.parent && folder.parent.constructor === Folder ? folder.parent.id.primaryKey : null,\n childFolderIds: folder.folders.map(function(f) { return f.id.primaryKey; }),\n projectIds: folder.projects.map(function(p) { return p.id.primaryKey; }),\n projectCount: folder.flattenedProjects.length,\n folderCount: folder.folders.length\n };\n}";
11
11
  export declare const serializeFolderWithChildrenFn = "\nfunction serializeFolderWithChildren(folder, depth, maxDepth) {\n var result = serializeFolder(folder);\n result.childFolders = [];\n result.projects = folder.projects.map(function(p) { return serializeProject(p); });\n if (maxDepth === 0 || depth < maxDepth) {\n result.childFolders = folder.folders.map(function(f) { return serializeFolderWithChildren(f, depth + 1, maxDepth); });\n }\n return result;\n}";
12
12
  export declare const serializeTagFn = "\nvar _tagStatusMap = {};\n_tagStatusMap[Tag.Status.Active] = \"active\";\n_tagStatusMap[Tag.Status.OnHold] = \"onHold\";\n_tagStatusMap[Tag.Status.Dropped] = \"dropped\";\n\nfunction serializeTag(tag) {\n return {\n id: tag.id.primaryKey,\n name: tag.name,\n url: \"omnifocus:///tag/\" + tag.id.primaryKey,\n status: _tagStatusMap[tag.status] || \"active\",\n parentTagId: tag.parent && tag.parent.constructor === Tag ? tag.parent.id.primaryKey : null,\n childTagIds: tag.children.map(function(c) { return c.id.primaryKey; }),\n allowsNextAction: tag.allowsNextAction,\n availableTaskCount: tag.availableTasks.length,\n remainingTaskCount: tag.remainingTasks.length\n };\n}";
@@ -1 +1 @@
1
- {"version":3,"file":"serializers.d.ts","sourceRoot":"","sources":["../../src/omnifocus/serializers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,eAAe,07DA2C1B,CAAC;AAEH,eAAO,MAAM,2BAA2B,sYAWtC,CAAC;AAEH,eAAO,MAAM,kBAAkB,ukEAyC7B,CAAC;AAEH,eAAO,MAAM,iBAAiB,8pBAe5B,CAAC;AAEH,eAAO,MAAM,6BAA6B,saASxC,CAAC;AAEH,eAAO,MAAM,cAAc,osBAkBzB,CAAC;AAEH,eAAO,MAAM,0BAA0B,wTAQrC,CAAC;AAEH,eAAO,MAAM,sBAAsB,wIAMjC,CAAC;AAEH,eAAO,MAAM,2BAA2B,s1BAsBtC,CAAC"}
1
+ {"version":3,"file":"serializers.d.ts","sourceRoot":"","sources":["../../src/omnifocus/serializers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,eAAe,gqFAyD1B,CAAC;AAEH,eAAO,MAAM,2BAA2B,sYAWtC,CAAC;AAEH,eAAO,MAAM,kBAAkB,ypEA0C7B,CAAC;AAEH,eAAO,MAAM,iBAAiB,8pBAe5B,CAAC;AAEH,eAAO,MAAM,6BAA6B,saASxC,CAAC;AAEH,eAAO,MAAM,cAAc,osBAkBzB,CAAC;AAEH,eAAO,MAAM,0BAA0B,wTAQrC,CAAC;AAEH,eAAO,MAAM,sBAAsB,wIAMjC,CAAC;AAEH,eAAO,MAAM,2BAA2B,s1BAsBtC,CAAC"}
@@ -10,6 +10,15 @@ _taskMethodMap[Task.RepetitionMethod.Fixed] = "fixed";
10
10
  _taskMethodMap[Task.RepetitionMethod.StartAfterCompletion] = "startAfterCompletion";
11
11
  _taskMethodMap[Task.RepetitionMethod.DueAfterCompletion] = "dueAfterCompletion";
12
12
 
13
+ var _taskStatusMap = {};
14
+ _taskStatusMap[Task.Status.Available] = "available";
15
+ _taskStatusMap[Task.Status.Blocked] = "blocked";
16
+ _taskStatusMap[Task.Status.Completed] = "completed";
17
+ _taskStatusMap[Task.Status.Dropped] = "dropped";
18
+ _taskStatusMap[Task.Status.Next] = "next";
19
+ _taskStatusMap[Task.Status.DueSoon] = "dueSoon";
20
+ _taskStatusMap[Task.Status.Overdue] = "overdue";
21
+
13
22
  function serializeTask(task) {
14
23
  var rr = null;
15
24
  if (task.repetitionRule) {
@@ -27,15 +36,20 @@ function serializeTask(task) {
27
36
  flagged: task.flagged,
28
37
  completed: task.taskStatus === Task.Status.Completed,
29
38
  dropped: task.taskStatus === Task.Status.Dropped,
39
+ taskStatus: _taskStatusMap[task.taskStatus] || "unknown",
30
40
  deferDate: task.deferDate ? task.deferDate.toISOString() : null,
31
41
  dueDate: task.dueDate ? task.dueDate.toISOString() : null,
42
+ plannedDate: task.plannedDate ? task.plannedDate.toISOString() : null,
32
43
  completionDate: task.completionDate ? task.completionDate.toISOString() : null,
33
44
  droppedDate: task.droppedDate ? task.droppedDate.toISOString() : null,
34
45
  added: task.added ? task.added.toISOString() : null,
35
46
  modified: task.modified ? task.modified.toISOString() : null,
36
47
  effectiveDueDate: task.effectiveDueDate ? task.effectiveDueDate.toISOString() : null,
37
48
  effectiveDeferDate: task.effectiveDeferDate ? task.effectiveDeferDate.toISOString() : null,
49
+ effectivePlannedDate: task.effectivePlannedDate ? task.effectivePlannedDate.toISOString() : null,
38
50
  effectiveFlagged: task.effectiveFlagged,
51
+ effectivelyCompleted: task.effectivelyCompleted,
52
+ effectivelyDropped: task.effectivelyDropped,
39
53
  estimatedMinutes: task.estimatedMinutes,
40
54
  containingProjectId: cp ? cp.id.primaryKey : null,
41
55
  containingProjectName: cp ? cp.name : null,
@@ -84,6 +98,7 @@ function serializeProject(project) {
84
98
  completed: project.status === Project.Status.Done,
85
99
  deferDate: project.deferDate ? project.deferDate.toISOString() : null,
86
100
  dueDate: project.dueDate ? project.dueDate.toISOString() : null,
101
+ plannedDate: project.plannedDate ? project.plannedDate.toISOString() : null,
87
102
  completionDate: project.completionDate ? project.completionDate.toISOString() : null,
88
103
  droppedDate: project.droppedDate ? project.droppedDate.toISOString() : null,
89
104
  added: project.task.added ? project.task.added.toISOString() : null,
@@ -1 +1 @@
1
- {"version":3,"file":"serializers.js","sourceRoot":"","sources":["../../src/omnifocus/serializers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2C7B,CAAC;AAEH,MAAM,CAAC,MAAM,2BAA2B,GAAG;;;;;;;;;;;EAWzC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyChC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;EAe/B,CAAC;AAEH,MAAM,CAAC,MAAM,6BAA6B,GAAG;;;;;;;;;EAS3C,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;EAkB5B,CAAC;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG;;;;;;;;EAQxC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;EAMpC,CAAC;AAEH,MAAM,CAAC,MAAM,2BAA2B,GAAG;;;;;;;;;;;;;;;;;;;;;;EAsBzC,CAAC"}
1
+ {"version":3,"file":"serializers.js","sourceRoot":"","sources":["../../src/omnifocus/serializers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyD7B,CAAC;AAEH,MAAM,CAAC,MAAM,2BAA2B,GAAG;;;;;;;;;;;EAWzC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0ChC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;EAe/B,CAAC;AAEH,MAAM,CAAC,MAAM,6BAA6B,GAAG;;;;;;;;;EAS3C,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;EAkB5B,CAAC;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG;;;;;;;;EAQxC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;EAMpC,CAAC;AAEH,MAAM,CAAC,MAAM,2BAA2B,GAAG;;;;;;;;;;;;;;;;;;;;;;EAsBzC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAQxD,wBAAgB,YAAY,IAAI;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,eAAe,CAAA;CAAE,CAY7E"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAiBxD,wBAAgB,YAAY,IAAI;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,eAAe,CAAA;CAAE,CAiB7E"}
package/dist/server.js CHANGED
@@ -6,10 +6,20 @@ import { registerResources } from "./resources.js";
6
6
  import { registerPrompts } from "./prompts.js";
7
7
  const require = createRequire(import.meta.url);
8
8
  const { version } = require("../package.json");
9
+ const SERVER_INSTRUCTIONS = `OmniFocus MCP server. Reads and mutates the local OmniFocus database via Omni Automation; mutations are local-only until OmniFocus syncs.
10
+
11
+ Sync discipline:
12
+ - After ANY chain of mutations (creating, updating, completing, deleting, moving tasks/projects/folders/tags), call sync_database ONCE at the end of the chain to push changes to OmniSync and propagate them to other devices.
13
+ - This applies especially after batch_create_tasks, batch_complete_tasks, batch_delete_tasks, or any sequence of multiple individual mutations.
14
+ - Do NOT call sync_database after every single mutation — sync once at the end. Multiple back-to-back syncs are wasteful.
15
+ - Read-only operations (list_*, get_*, search, dump_database, get_*_summary) do NOT need a sync afterward.
16
+ - The batch_* tools also accept an optional 'sync: true' parameter as a shortcut that auto-syncs after the batch completes.`;
9
17
  export function createServer() {
10
18
  const server = new McpServer({
11
19
  name: "omnifocus-mcp-server",
12
20
  version,
21
+ }, {
22
+ instructions: SERVER_INSTRUCTIONS,
13
23
  });
14
24
  const client = new OmniFocusClient();
15
25
  registerAllTools(server, client);
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAEtE,MAAM,UAAU,YAAY;IAC1B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,sBAAsB;QAC5B,OAAO;KACR,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,eAAe,CAAC,MAAM,CAAC,CAAC;IAExB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAEtE,MAAM,mBAAmB,GAAG;;;;;;;4HAOgG,CAAC;AAE7H,MAAM,UAAU,YAAY;IAC1B,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B;QACE,IAAI,EAAE,sBAAsB;QAC5B,OAAO;KACR,EACD;QACE,YAAY,EAAE,mBAAmB;KAClC,CACF,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,eAAe,CAAC,MAAM,CAAC,CAAC;IAExB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC5B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/tools/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,CA2EtF"}
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/tools/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,CA4FtF"}
@@ -56,5 +56,17 @@ export function registerDatabaseTools(server, client) {
56
56
  return { content: [{ type: "text", text: message }], isError: true };
57
57
  }
58
58
  });
59
+ server.tool("sync_database", "Trigger an OmniFocus sync to push local changes to OmniSync and pull updates from other devices. CALL THIS ONCE at the end of any session that mutated data — especially after batch_create_tasks, batch_complete_tasks, batch_delete_tasks, or any sequence of multiple create/update/delete/move operations. Do NOT call after every individual mutation; sync once at the end of the chain. Returns immediately while sync runs in the background.", {}, async () => {
60
+ try {
61
+ const result = await client.syncDatabase();
62
+ return {
63
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
64
+ };
65
+ }
66
+ catch (error) {
67
+ const { message } = formatMcpError(error);
68
+ return { content: [{ type: "text", text: message }], isError: true };
69
+ }
70
+ });
59
71
  }
60
72
  //# sourceMappingURL=database.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/tools/database.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/tools/database.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"perspectives.d.ts","sourceRoot":"","sources":["../../src/tools/perspectives.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,CAmCzF"}
1
+ {"version":3,"file":"perspectives.d.ts","sourceRoot":"","sources":["../../src/tools/perspectives.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,CAgCzF"}
@@ -1,12 +1,9 @@
1
1
  import { z } from "zod";
2
2
  import { formatMcpError } from "../utils/errors.js";
3
3
  export function registerPerspectiveTools(server, client) {
4
- server.tool("list_perspectives", "List perspectives in OmniFocus. Only custom perspectives are available; built-in perspectives (Inbox, Projects, Tags, Forecast, Flagged, Review, Nearby) cannot be accessed via the API. Use dedicated tools instead (e.g. get_inbox_tasks, get_flagged_tasks, get_review_queue, list_projects, list_tags, or list_tasks with date filters for Forecast).", {
5
- includeBuiltIn: z.boolean().optional().describe("Include custom perspectives whose names match built-in perspective names (default true). Note: actual built-in perspectives are not available via the API."),
6
- includeCustom: z.boolean().optional().describe("Include custom perspectives (default true)"),
7
- }, async (args) => {
4
+ server.tool("list_perspectives", "List custom perspectives in OmniFocus. Built-in perspectives (Inbox, Projects, Tags, Forecast, Flagged, Review, Nearby) are not enumerable via the API use dedicated tools instead (get_inbox_tasks, get_flagged_tasks, get_review_queue, list_projects, list_tags, or list_tasks with date filters for Forecast).", {}, async () => {
8
5
  try {
9
- const perspectives = await client.listPerspectives(args);
6
+ const perspectives = await client.listPerspectives();
10
7
  return { content: [{ type: "text", text: JSON.stringify(perspectives, null, 2) }] };
11
8
  }
12
9
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"perspectives.js","sourceRoot":"","sources":["../../src/tools/perspectives.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,UAAU,wBAAwB,CAAC,MAAiB,EAAE,MAAuB;IACjF,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,2VAA2V,EAC3V;QACE,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4JAA4J,CAAC;QAC7M,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;KAC7F,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACzD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC/F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,EAAE,OAAO,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;YAC1C,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAChF,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,kJAAkJ,EAClJ;QACE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;KAClD,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;YACrD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACxF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,EAAE,OAAO,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;YAC1C,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAChF,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"perspectives.js","sourceRoot":"","sources":["../../src/tools/perspectives.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,UAAU,wBAAwB,CAAC,MAAiB,EAAE,MAAuB;IACjF,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,sTAAsT,EACtT,EAAE,EACF,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,gBAAgB,EAAE,CAAC;YACrD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC/F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,EAAE,OAAO,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;YAC1C,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAChF,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,kJAAkJ,EAClJ;QACE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;KAClD,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;YACrD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACxF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,EAAE,OAAO,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;YAC1C,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAChF,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,CAiOrF"}
1
+ {"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,CAmOrF"}
@@ -40,6 +40,7 @@ export function registerProjectTools(server, client) {
40
40
  completedByChildren: z.boolean().optional().describe("Auto-complete when all children are completed"),
41
41
  deferDate: z.string().optional().describe("Defer date (ISO 8601)"),
42
42
  dueDate: z.string().optional().describe("Due date (ISO 8601)"),
43
+ plannedDate: z.string().optional().describe("Planned date (ISO 8601)"),
43
44
  flagged: z.boolean().optional().describe("Whether to flag the project"),
44
45
  tags: z.array(z.string()).optional().describe("Tag names to apply"),
45
46
  reviewInterval: z
@@ -69,6 +70,7 @@ export function registerProjectTools(server, client) {
69
70
  completedByChildren: z.boolean().optional().describe("Auto-complete when all children are completed"),
70
71
  deferDate: z.string().nullable().optional().describe("New defer date (ISO 8601) or null to clear"),
71
72
  dueDate: z.string().nullable().optional().describe("New due date (ISO 8601) or null to clear"),
73
+ plannedDate: z.string().nullable().optional().describe("New planned date (ISO 8601) or null to clear"),
72
74
  flagged: z.boolean().optional().describe("New flagged status"),
73
75
  reviewInterval: z
74
76
  .object({
@@ -1 +1 @@
1
- {"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/tools/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAuBzD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,CAkclF"}
1
+ {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/tools/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAwBzD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,CAkdlF"}
@@ -10,6 +10,7 @@ const batchTaskItemSchema = z.lazy(() => z.object({
10
10
  flagged: z.boolean().optional().describe("Whether to flag"),
11
11
  deferDate: z.string().optional().describe("Defer date (ISO 8601)"),
12
12
  dueDate: z.string().optional().describe("Due date (ISO 8601)"),
13
+ plannedDate: z.string().optional().describe("Planned date (ISO 8601)"),
13
14
  estimatedMinutes: z.number().min(0).optional().describe("Estimated duration in minutes"),
14
15
  completedByChildren: z.boolean().optional().describe("Auto-complete when children complete"),
15
16
  tags: z.array(z.string()).optional().describe("Tag names"),
@@ -29,6 +30,8 @@ export function registerTaskTools(server, client) {
29
30
  dueBefore: z.string().optional().describe("Filter tasks due before this ISO date"),
30
31
  deferAfter: z.string().optional().describe("Filter tasks deferred after this ISO date"),
31
32
  deferBefore: z.string().optional().describe("Filter tasks deferred before this ISO date"),
33
+ plannedAfter: z.string().optional().describe("Filter tasks planned after this ISO date"),
34
+ plannedBefore: z.string().optional().describe("Filter tasks planned before this ISO date"),
32
35
  search: z.string().optional().describe("Full-text search in task name and note"),
33
36
  taskStatus: z.enum(["available", "remaining", "completed", "dropped"]).optional().describe("Filter by task status"),
34
37
  limit: z.number().min(1).max(1000).optional().describe("Maximum results (default 100)"),
@@ -63,6 +66,7 @@ export function registerTaskTools(server, client) {
63
66
  flagged: z.boolean().optional().describe("Whether to flag the task"),
64
67
  deferDate: z.string().optional().describe("Defer date (ISO 8601)"),
65
68
  dueDate: z.string().optional().describe("Due date (ISO 8601)"),
69
+ plannedDate: z.string().optional().describe("Planned date (ISO 8601)"),
66
70
  estimatedMinutes: z.number().min(0).optional().describe("Estimated duration in minutes"),
67
71
  completedByChildren: z.boolean().optional().describe("Auto-complete when all children are completed"),
68
72
  projectId: z.string().optional().describe("Project ID to add task to"),
@@ -86,6 +90,7 @@ export function registerTaskTools(server, client) {
86
90
  flagged: z.boolean().optional().describe("New flagged status"),
87
91
  deferDate: z.string().nullable().optional().describe("New defer date (ISO 8601) or null to clear"),
88
92
  dueDate: z.string().nullable().optional().describe("New due date (ISO 8601) or null to clear"),
93
+ plannedDate: z.string().nullable().optional().describe("New planned date (ISO 8601) or null to clear"),
89
94
  estimatedMinutes: z.number().min(0).nullable().optional().describe("New estimated minutes or null to clear"),
90
95
  sequential: z.boolean().optional().describe("Whether subtasks must be completed in order"),
91
96
  completedByChildren: z.boolean().optional().describe("Auto-complete when all children are completed"),
@@ -105,9 +110,13 @@ export function registerTaskTools(server, client) {
105
110
  });
106
111
  server.tool("complete_task", "Mark a task as completed", {
107
112
  id: z.string().describe("The task ID to complete"),
108
- }, async ({ id }) => {
113
+ completionDate: z
114
+ .string()
115
+ .optional()
116
+ .describe("Optional ISO 8601 completion date to backdate the completion (defaults to now)"),
117
+ }, async ({ id, completionDate }) => {
109
118
  try {
110
- const task = await client.completeTask(id);
119
+ const task = await client.completeTask(id, completionDate);
111
120
  return { content: [{ type: "text", text: JSON.stringify(task, null, 2) }] };
112
121
  }
113
122
  catch (error) {
@@ -257,9 +266,12 @@ export function registerTaskTools(server, client) {
257
266
  projectId: z.string().optional().describe("Project ID to add tasks to"),
258
267
  projectName: z.string().optional().describe("Project name to add tasks to"),
259
268
  parentTaskId: z.string().optional().describe("Parent task ID for subtasks"),
260
- }, async (args) => {
269
+ sync: z.boolean().optional().describe("Trigger an OmniFocus sync after the batch completes (default false). Skips on error."),
270
+ }, async ({ sync, ...args }) => {
261
271
  try {
262
272
  const tasks = await client.batchCreateTasks(args);
273
+ if (sync)
274
+ await client.syncDatabase();
263
275
  return { content: [{ type: "text", text: JSON.stringify(tasks, null, 2) }] };
264
276
  }
265
277
  catch (error) {
@@ -306,9 +318,12 @@ export function registerTaskTools(server, client) {
306
318
  });
307
319
  server.tool("batch_delete_tasks", "Delete multiple tasks at once. More efficient than deleting one by one.", {
308
320
  taskIds: z.array(z.string()).min(1).describe("Array of task IDs to delete"),
309
- }, async (args) => {
321
+ sync: z.boolean().optional().describe("Trigger an OmniFocus sync after the batch completes (default false). Skips on error."),
322
+ }, async ({ sync, ...args }) => {
310
323
  try {
311
324
  const results = await client.batchDeleteTasks(args);
325
+ if (sync)
326
+ await client.syncDatabase();
312
327
  return { content: [{ type: "text", text: JSON.stringify(results, null, 2) }] };
313
328
  }
314
329
  catch (error) {
@@ -318,9 +333,12 @@ export function registerTaskTools(server, client) {
318
333
  });
319
334
  server.tool("batch_complete_tasks", "Complete multiple tasks at once. More efficient than completing one by one.", {
320
335
  taskIds: z.array(z.string()).min(1).describe("Array of task IDs to complete"),
321
- }, async (args) => {
336
+ sync: z.boolean().optional().describe("Trigger an OmniFocus sync after the batch completes (default false). Skips on error."),
337
+ }, async ({ sync, ...args }) => {
322
338
  try {
323
339
  const results = await client.batchCompleteTasks(args);
340
+ if (sync)
341
+ await client.syncDatabase();
324
342
  return { content: [{ type: "text", text: JSON.stringify(results, null, 2) }] };
325
343
  }
326
344
  catch (error) {
@@ -340,6 +358,8 @@ export function registerTaskTools(server, client) {
340
358
  dueBefore: z.string().optional().describe("Filter tasks due before this ISO date"),
341
359
  deferAfter: z.string().optional().describe("Filter tasks deferred after this ISO date"),
342
360
  deferBefore: z.string().optional().describe("Filter tasks deferred before this ISO date"),
361
+ plannedAfter: z.string().optional().describe("Filter tasks planned after this ISO date"),
362
+ plannedBefore: z.string().optional().describe("Filter tasks planned before this ISO date"),
343
363
  search: z.string().optional().describe("Full-text search in task name and note"),
344
364
  taskStatus: z.enum(["available", "remaining", "completed", "dropped"]).optional().describe("Filter by task status"),
345
365
  }, async (args) => {