omnifocus-mcp-server 1.0.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 (107) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +165 -0
  3. package/dist/config.d.ts +20 -0
  4. package/dist/config.d.ts.map +1 -0
  5. package/dist/config.js +20 -0
  6. package/dist/config.js.map +1 -0
  7. package/dist/index.d.ts +3 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +24 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/omnifocus/cache.d.ts +26 -0
  12. package/dist/omnifocus/cache.d.ts.map +1 -0
  13. package/dist/omnifocus/cache.js +68 -0
  14. package/dist/omnifocus/cache.js.map +1 -0
  15. package/dist/omnifocus/client.d.ts +84 -0
  16. package/dist/omnifocus/client.d.ts.map +1 -0
  17. package/dist/omnifocus/client.js +340 -0
  18. package/dist/omnifocus/client.js.map +1 -0
  19. package/dist/omnifocus/executor.d.ts +11 -0
  20. package/dist/omnifocus/executor.d.ts.map +1 -0
  21. package/dist/omnifocus/executor.js +62 -0
  22. package/dist/omnifocus/executor.js.map +1 -0
  23. package/dist/omnifocus/scripts/database.d.ts +6 -0
  24. package/dist/omnifocus/scripts/database.d.ts.map +1 -0
  25. package/dist/omnifocus/scripts/database.js +161 -0
  26. package/dist/omnifocus/scripts/database.js.map +1 -0
  27. package/dist/omnifocus/scripts/folders.d.ts +7 -0
  28. package/dist/omnifocus/scripts/folders.d.ts.map +1 -0
  29. package/dist/omnifocus/scripts/folders.js +73 -0
  30. package/dist/omnifocus/scripts/folders.js.map +1 -0
  31. package/dist/omnifocus/scripts/perspectives.d.ts +4 -0
  32. package/dist/omnifocus/scripts/perspectives.d.ts.map +1 -0
  33. package/dist/omnifocus/scripts/perspectives.js +62 -0
  34. package/dist/omnifocus/scripts/perspectives.js.map +1 -0
  35. package/dist/omnifocus/scripts/projects.d.ts +13 -0
  36. package/dist/omnifocus/scripts/projects.d.ts.map +1 -0
  37. package/dist/omnifocus/scripts/projects.js +235 -0
  38. package/dist/omnifocus/scripts/projects.js.map +1 -0
  39. package/dist/omnifocus/scripts/tags.d.ts +7 -0
  40. package/dist/omnifocus/scripts/tags.d.ts.map +1 -0
  41. package/dist/omnifocus/scripts/tags.js +91 -0
  42. package/dist/omnifocus/scripts/tags.js.map +1 -0
  43. package/dist/omnifocus/scripts/tasks.d.ts +23 -0
  44. package/dist/omnifocus/scripts/tasks.d.ts.map +1 -0
  45. package/dist/omnifocus/scripts/tasks.js +560 -0
  46. package/dist/omnifocus/scripts/tasks.js.map +1 -0
  47. package/dist/omnifocus/serializers.d.ts +16 -0
  48. package/dist/omnifocus/serializers.d.ts.map +1 -0
  49. package/dist/omnifocus/serializers.js +181 -0
  50. package/dist/omnifocus/serializers.js.map +1 -0
  51. package/dist/prompts.d.ts +3 -0
  52. package/dist/prompts.d.ts.map +1 -0
  53. package/dist/prompts.js +49 -0
  54. package/dist/prompts.js.map +1 -0
  55. package/dist/resources.d.ts +4 -0
  56. package/dist/resources.d.ts.map +1 -0
  57. package/dist/resources.js +48 -0
  58. package/dist/resources.js.map +1 -0
  59. package/dist/server.d.ts +7 -0
  60. package/dist/server.d.ts.map +1 -0
  61. package/dist/server.js +20 -0
  62. package/dist/server.js.map +1 -0
  63. package/dist/tools/database.d.ts +4 -0
  64. package/dist/tools/database.d.ts.map +1 -0
  65. package/dist/tools/database.js +60 -0
  66. package/dist/tools/database.js.map +1 -0
  67. package/dist/tools/folders.d.ts +4 -0
  68. package/dist/tools/folders.d.ts.map +1 -0
  69. package/dist/tools/folders.js +67 -0
  70. package/dist/tools/folders.js.map +1 -0
  71. package/dist/tools/index.d.ts +4 -0
  72. package/dist/tools/index.d.ts.map +1 -0
  73. package/dist/tools/index.js +15 -0
  74. package/dist/tools/index.js.map +1 -0
  75. package/dist/tools/perspectives.d.ts +4 -0
  76. package/dist/tools/perspectives.d.ts.map +1 -0
  77. package/dist/tools/perspectives.js +30 -0
  78. package/dist/tools/perspectives.js.map +1 -0
  79. package/dist/tools/projects.d.ts +4 -0
  80. package/dist/tools/projects.d.ts.map +1 -0
  81. package/dist/tools/projects.js +175 -0
  82. package/dist/tools/projects.js.map +1 -0
  83. package/dist/tools/tags.d.ts +4 -0
  84. package/dist/tools/tags.d.ts.map +1 -0
  85. package/dist/tools/tags.js +70 -0
  86. package/dist/tools/tags.js.map +1 -0
  87. package/dist/tools/tasks.d.ts +4 -0
  88. package/dist/tools/tasks.d.ts.map +1 -0
  89. package/dist/tools/tasks.js +356 -0
  90. package/dist/tools/tasks.js.map +1 -0
  91. package/dist/types/omnifocus.d.ts +313 -0
  92. package/dist/types/omnifocus.d.ts.map +1 -0
  93. package/dist/types/omnifocus.js +3 -0
  94. package/dist/types/omnifocus.js.map +1 -0
  95. package/dist/utils/dates.d.ts +23 -0
  96. package/dist/utils/dates.d.ts.map +1 -0
  97. package/dist/utils/dates.js +44 -0
  98. package/dist/utils/dates.js.map +1 -0
  99. package/dist/utils/errors.d.ts +25 -0
  100. package/dist/utils/errors.d.ts.map +1 -0
  101. package/dist/utils/errors.js +76 -0
  102. package/dist/utils/errors.js.map +1 -0
  103. package/dist/utils/logger.d.ts +7 -0
  104. package/dist/utils/logger.d.ts.map +1 -0
  105. package/dist/utils/logger.js +30 -0
  106. package/dist/utils/logger.js.map +1 -0
  107. package/package.json +53 -0
@@ -0,0 +1,340 @@
1
+ import { runOmniJSJson } from "./executor.js";
2
+ import { Cache } from "./cache.js";
3
+ import { config } from "../config.js";
4
+ import { buildDatabaseSummaryScript, buildSearchScript, buildDumpDatabaseScript, buildSaveDatabaseScript } from "./scripts/database.js";
5
+ import { buildListFoldersScript, buildGetFolderScript, buildCreateFolderScript, buildUpdateFolderScript, buildDeleteFolderScript } from "./scripts/folders.js";
6
+ import { buildListTagsScript, buildGetTagScript, buildCreateTagScript, buildUpdateTagScript, buildDeleteTagScript } from "./scripts/tags.js";
7
+ import { buildListPerspectivesScript, buildGetPerspectiveTasksScript } from "./scripts/perspectives.js";
8
+ import { buildListProjectsScript, buildGetProjectScript, buildCreateProjectScript, buildUpdateProjectScript, buildCompleteProjectScript, buildDropProjectScript, buildMoveProjectScript, buildDeleteProjectScript, buildGetReviewQueueScript, buildMarkReviewedScript, buildGetProjectTasksScript, } from "./scripts/projects.js";
9
+ import { buildListTasksScript, buildGetTaskScript, buildCreateTaskScript, buildUpdateTaskScript, buildCompleteTaskScript, buildUncompleteTaskScript, buildDropTaskScript, buildDeleteTaskScript, buildMoveTasksScript, buildDuplicateTasksScript, buildSetTaskTagsScript, buildAddTaskNotificationScript, buildAppendTaskNoteScript, buildConvertTaskToProjectScript, buildGetTodayCompletedTasksScript, buildListTaskNotificationsScript, buildRemoveTaskNotificationScript, buildBatchCreateTasksScript, buildBatchDeleteTasksScript, buildBatchCompleteTasksScript, buildGetTaskCountScript, } from "./scripts/tasks.js";
10
+ export class OmniFocusClient {
11
+ cache = new Cache();
12
+ invalidateAfterMutation(...prefixes) {
13
+ for (const prefix of prefixes)
14
+ this.cache.invalidatePrefix(prefix);
15
+ }
16
+ // ─── Database ──────────────────────────────────────────────────────
17
+ async getDatabaseSummary() {
18
+ const cacheKey = "database:summary";
19
+ const cached = this.cache.get(cacheKey);
20
+ if (cached)
21
+ return cached;
22
+ const result = await runOmniJSJson(buildDatabaseSummaryScript());
23
+ this.cache.set(cacheKey, result, config.cacheTTL.database);
24
+ return result;
25
+ }
26
+ async search(query, limit = 50) {
27
+ const cacheKey = `database:search:${query}:${limit}`;
28
+ const cached = this.cache.get(cacheKey);
29
+ if (cached)
30
+ return cached;
31
+ const result = await runOmniJSJson(buildSearchScript(query, limit));
32
+ this.cache.set(cacheKey, result, config.cacheTTL.database);
33
+ return result;
34
+ }
35
+ async dumpDatabase(args = {}) {
36
+ return runOmniJSJson(buildDumpDatabaseScript(args));
37
+ }
38
+ async saveDatabase() {
39
+ return runOmniJSJson(buildSaveDatabaseScript());
40
+ }
41
+ // ─── Tasks ─────────────────────────────────────────────────────────
42
+ async listTasks(args = {}) {
43
+ const cacheKey = `tasks:list:${JSON.stringify(args)}`;
44
+ const cached = this.cache.get(cacheKey);
45
+ if (cached)
46
+ return cached;
47
+ const result = await runOmniJSJson(buildListTasksScript(args));
48
+ this.cache.set(cacheKey, result, config.cacheTTL.tasks);
49
+ return result;
50
+ }
51
+ async getTask(idOrArgs) {
52
+ const args = typeof idOrArgs === "string" ? { id: idOrArgs } : idOrArgs;
53
+ const cacheKey = `tasks:get:${JSON.stringify(args)}`;
54
+ const cached = this.cache.get(cacheKey);
55
+ if (cached)
56
+ return cached;
57
+ const result = await runOmniJSJson(buildGetTaskScript(args));
58
+ this.cache.set(cacheKey, result, config.cacheTTL.tasks);
59
+ return result;
60
+ }
61
+ async createTask(args) {
62
+ const result = await runOmniJSJson(buildCreateTaskScript(args));
63
+ this.invalidateAfterMutation("tasks:", "database:");
64
+ return result;
65
+ }
66
+ async updateTask(args) {
67
+ const result = await runOmniJSJson(buildUpdateTaskScript(args));
68
+ this.invalidateAfterMutation("tasks:");
69
+ return result;
70
+ }
71
+ async completeTask(id) {
72
+ const result = await runOmniJSJson(buildCompleteTaskScript(id));
73
+ this.invalidateAfterMutation("tasks:", "projects:", "database:");
74
+ return result;
75
+ }
76
+ async uncompleteTask(id) {
77
+ const result = await runOmniJSJson(buildUncompleteTaskScript(id));
78
+ this.invalidateAfterMutation("tasks:", "projects:", "database:");
79
+ return result;
80
+ }
81
+ async dropTask(id) {
82
+ const result = await runOmniJSJson(buildDropTaskScript(id));
83
+ this.invalidateAfterMutation("tasks:", "projects:", "database:");
84
+ return result;
85
+ }
86
+ async deleteTask(id) {
87
+ const result = await runOmniJSJson(buildDeleteTaskScript(id));
88
+ this.invalidateAfterMutation("tasks:", "projects:", "database:");
89
+ return result;
90
+ }
91
+ async moveTasks(args) {
92
+ const result = await runOmniJSJson(buildMoveTasksScript(args));
93
+ this.invalidateAfterMutation("tasks:", "projects:");
94
+ return result;
95
+ }
96
+ async duplicateTasks(args) {
97
+ const result = await runOmniJSJson(buildDuplicateTasksScript(args));
98
+ this.invalidateAfterMutation("tasks:", "projects:", "database:");
99
+ return result;
100
+ }
101
+ async setTaskTags(args) {
102
+ const result = await runOmniJSJson(buildSetTaskTagsScript(args));
103
+ this.invalidateAfterMutation("tasks:", "tags:");
104
+ return result;
105
+ }
106
+ async addTaskNotification(args) {
107
+ const result = await runOmniJSJson(buildAddTaskNotificationScript(args));
108
+ this.invalidateAfterMutation("tasks:");
109
+ return result;
110
+ }
111
+ async appendTaskNote(taskId, text) {
112
+ const result = await runOmniJSJson(buildAppendTaskNoteScript(taskId, text));
113
+ this.invalidateAfterMutation("tasks:");
114
+ return result;
115
+ }
116
+ async convertTaskToProject(taskId) {
117
+ const result = await runOmniJSJson(buildConvertTaskToProjectScript(taskId));
118
+ this.invalidateAfterMutation("tasks:", "projects:", "database:");
119
+ return result;
120
+ }
121
+ async getTodayCompletedTasks() {
122
+ const cacheKey = "tasks:todayCompleted";
123
+ const cached = this.cache.get(cacheKey);
124
+ if (cached)
125
+ return cached;
126
+ const result = await runOmniJSJson(buildGetTodayCompletedTasksScript());
127
+ this.cache.set(cacheKey, result, config.cacheTTL.tasks);
128
+ return result;
129
+ }
130
+ async listTaskNotifications(taskId) {
131
+ const cacheKey = `tasks:notifications:${taskId}`;
132
+ const cached = this.cache.get(cacheKey);
133
+ if (cached)
134
+ return cached;
135
+ const result = await runOmniJSJson(buildListTaskNotificationsScript(taskId));
136
+ this.cache.set(cacheKey, result, config.cacheTTL.tasks);
137
+ return result;
138
+ }
139
+ async removeTaskNotification(taskId, notificationId) {
140
+ const result = await runOmniJSJson(buildRemoveTaskNotificationScript(taskId, notificationId));
141
+ this.invalidateAfterMutation("tasks:");
142
+ return result;
143
+ }
144
+ async batchCreateTasks(args) {
145
+ const result = await runOmniJSJson(buildBatchCreateTasksScript(args));
146
+ this.invalidateAfterMutation("tasks:", "projects:", "database:");
147
+ return result;
148
+ }
149
+ async batchDeleteTasks(args) {
150
+ const result = await runOmniJSJson(buildBatchDeleteTasksScript(args));
151
+ this.invalidateAfterMutation("tasks:", "projects:", "database:");
152
+ return result;
153
+ }
154
+ async batchCompleteTasks(args) {
155
+ const result = await runOmniJSJson(buildBatchCompleteTasksScript(args));
156
+ this.invalidateAfterMutation("tasks:", "projects:", "database:");
157
+ return result;
158
+ }
159
+ async getTaskCount(args = {}) {
160
+ const cacheKey = `tasks:count:${JSON.stringify(args)}`;
161
+ const cached = this.cache.get(cacheKey);
162
+ if (cached)
163
+ return cached;
164
+ const result = await runOmniJSJson(buildGetTaskCountScript(args));
165
+ this.cache.set(cacheKey, result, config.cacheTTL.tasks);
166
+ return result;
167
+ }
168
+ // ─── Projects ─────────────────────────────────────────────────────
169
+ async listProjects(args = {}) {
170
+ const cacheKey = `projects:list:${JSON.stringify(args)}`;
171
+ const cached = this.cache.get(cacheKey);
172
+ if (cached)
173
+ return cached;
174
+ const result = await runOmniJSJson(buildListProjectsScript(args));
175
+ this.cache.set(cacheKey, result, config.cacheTTL.projects);
176
+ return result;
177
+ }
178
+ async getProject(idOrName) {
179
+ const cacheKey = `projects:get:${idOrName}`;
180
+ const cached = this.cache.get(cacheKey);
181
+ if (cached)
182
+ return cached;
183
+ const result = await runOmniJSJson(buildGetProjectScript(idOrName));
184
+ this.cache.set(cacheKey, result, config.cacheTTL.projects);
185
+ return result;
186
+ }
187
+ async createProject(args) {
188
+ const result = await runOmniJSJson(buildCreateProjectScript(args));
189
+ this.invalidateAfterMutation("projects:", "folders:", "database:");
190
+ return result;
191
+ }
192
+ async updateProject(args) {
193
+ const result = await runOmniJSJson(buildUpdateProjectScript(args));
194
+ this.invalidateAfterMutation("projects:");
195
+ return result;
196
+ }
197
+ async completeProject(id) {
198
+ const result = await runOmniJSJson(buildCompleteProjectScript(id));
199
+ this.invalidateAfterMutation("projects:", "tasks:", "database:");
200
+ return result;
201
+ }
202
+ async dropProject(id) {
203
+ const result = await runOmniJSJson(buildDropProjectScript(id));
204
+ this.invalidateAfterMutation("projects:", "tasks:", "database:");
205
+ return result;
206
+ }
207
+ async moveProject(projectId, folderId) {
208
+ const result = await runOmniJSJson(buildMoveProjectScript(projectId, folderId));
209
+ this.invalidateAfterMutation("projects:", "folders:");
210
+ return result;
211
+ }
212
+ async deleteProject(id) {
213
+ const result = await runOmniJSJson(buildDeleteProjectScript(id));
214
+ this.invalidateAfterMutation("projects:", "tasks:", "folders:", "database:");
215
+ return result;
216
+ }
217
+ async getReviewQueue() {
218
+ const cacheKey = "projects:reviewQueue";
219
+ const cached = this.cache.get(cacheKey);
220
+ if (cached)
221
+ return cached;
222
+ const result = await runOmniJSJson(buildGetReviewQueueScript());
223
+ this.cache.set(cacheKey, result, config.cacheTTL.projects);
224
+ return result;
225
+ }
226
+ async markReviewed(id) {
227
+ const result = await runOmniJSJson(buildMarkReviewedScript(id));
228
+ this.invalidateAfterMutation("projects:");
229
+ return result;
230
+ }
231
+ async getProjectTasks(args) {
232
+ const cacheKey = `projects:tasks:${JSON.stringify(args)}`;
233
+ const cached = this.cache.get(cacheKey);
234
+ if (cached)
235
+ return cached;
236
+ const result = await runOmniJSJson(buildGetProjectTasksScript(args));
237
+ this.cache.set(cacheKey, result, config.cacheTTL.tasks);
238
+ return result;
239
+ }
240
+ // ─── Folders ──────────────────────────────────────────────────────
241
+ async listFolders() {
242
+ const cacheKey = "folders:list";
243
+ const cached = this.cache.get(cacheKey);
244
+ if (cached)
245
+ return cached;
246
+ const result = await runOmniJSJson(buildListFoldersScript());
247
+ this.cache.set(cacheKey, result, config.cacheTTL.folders);
248
+ return result;
249
+ }
250
+ async getFolder(id) {
251
+ const cacheKey = `folders:get:${id}`;
252
+ const cached = this.cache.get(cacheKey);
253
+ if (cached)
254
+ return cached;
255
+ const result = await runOmniJSJson(buildGetFolderScript(id));
256
+ this.cache.set(cacheKey, result, config.cacheTTL.folders);
257
+ return result;
258
+ }
259
+ async createFolder(args) {
260
+ const result = await runOmniJSJson(buildCreateFolderScript(args));
261
+ this.invalidateAfterMutation("folders:", "database:");
262
+ return result;
263
+ }
264
+ async updateFolder(args) {
265
+ const result = await runOmniJSJson(buildUpdateFolderScript(args));
266
+ this.invalidateAfterMutation("folders:");
267
+ return result;
268
+ }
269
+ async deleteFolder(id) {
270
+ const result = await runOmniJSJson(buildDeleteFolderScript(id));
271
+ this.invalidateAfterMutation("folders:", "projects:", "database:");
272
+ return result;
273
+ }
274
+ // ─── Tags ─────────────────────────────────────────────────────────
275
+ async listTags() {
276
+ const cacheKey = "tags:list";
277
+ const cached = this.cache.get(cacheKey);
278
+ if (cached)
279
+ return cached;
280
+ const result = await runOmniJSJson(buildListTagsScript());
281
+ this.cache.set(cacheKey, result, config.cacheTTL.tags);
282
+ return result;
283
+ }
284
+ async getTag(id) {
285
+ const cacheKey = `tags:get:${id}`;
286
+ const cached = this.cache.get(cacheKey);
287
+ if (cached)
288
+ return cached;
289
+ const result = await runOmniJSJson(buildGetTagScript(id));
290
+ this.cache.set(cacheKey, result, config.cacheTTL.tags);
291
+ return result;
292
+ }
293
+ async createTag(args) {
294
+ const result = await runOmniJSJson(buildCreateTagScript(args));
295
+ this.invalidateAfterMutation("tags:", "database:");
296
+ return result;
297
+ }
298
+ async updateTag(args) {
299
+ const result = await runOmniJSJson(buildUpdateTagScript(args));
300
+ this.invalidateAfterMutation("tags:");
301
+ return result;
302
+ }
303
+ async deleteTag(id) {
304
+ const result = await runOmniJSJson(buildDeleteTagScript(id));
305
+ this.invalidateAfterMutation("tags:", "tasks:", "database:");
306
+ return result;
307
+ }
308
+ // ─── Perspectives ─────────────────────────────────────────────────
309
+ async listPerspectives(args = {}) {
310
+ const cacheKey = `perspectives:list:${JSON.stringify(args)}`;
311
+ const cached = this.cache.get(cacheKey);
312
+ if (cached)
313
+ return cached;
314
+ const result = await runOmniJSJson(buildListPerspectivesScript(args));
315
+ this.cache.set(cacheKey, result, config.cacheTTL.perspectives);
316
+ return result;
317
+ }
318
+ async getPerspectiveTasks(name) {
319
+ const cacheKey = `perspectives:tasks:${name}`;
320
+ const cached = this.cache.get(cacheKey);
321
+ if (cached)
322
+ return cached;
323
+ const result = await runOmniJSJson(buildGetPerspectiveTasksScript(name));
324
+ this.cache.set(cacheKey, result, config.cacheTTL.tasks);
325
+ return result;
326
+ }
327
+ // ─── Cache management ─────────────────────────────────────────────
328
+ invalidateCache(prefix) {
329
+ if (prefix) {
330
+ this.cache.invalidatePrefix(prefix);
331
+ }
332
+ else {
333
+ this.cache.invalidateAll();
334
+ }
335
+ }
336
+ destroy() {
337
+ this.cache.destroy();
338
+ }
339
+ }
340
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/omnifocus/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Executes an OmniJS script inside OmniFocus via osascript JXA bridge.
3
+ * Returns the raw stdout string.
4
+ * Calls are serialized via a mutex to prevent concurrent Apple Events races.
5
+ */
6
+ export declare function runOmniJS(omniScript: string): Promise<string>;
7
+ /**
8
+ * Executes an OmniJS script and parses the result as JSON.
9
+ */
10
+ export declare function runOmniJSJson<T>(omniScript: string): Promise<T>;
11
+ //# sourceMappingURL=executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/omnifocus/executor.ts"],"names":[],"mappings":"AAmBA;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA8BnE;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAUrE"}
@@ -0,0 +1,62 @@
1
+ import { execFile } from "node:child_process";
2
+ import { promisify } from "node:util";
3
+ import { config } from "../config.js";
4
+ import { parseExecutorError } from "../utils/errors.js";
5
+ import { logger } from "../utils/logger.js";
6
+ const execFileAsync = promisify(execFile);
7
+ /** OmniJS helper functions prepended to every script */
8
+ const OMNIJS_PRELUDE = `function byId(collection, id) {
9
+ for (var i = 0; i < collection.length; i++) {
10
+ if (collection[i].id && collection[i].id.primaryKey === id) return collection[i];
11
+ }
12
+ return null;
13
+ }`;
14
+ /** Promise-based mutex: serializes osascript calls to avoid Apple Events races */
15
+ let pending = Promise.resolve();
16
+ /**
17
+ * Executes an OmniJS script inside OmniFocus via osascript JXA bridge.
18
+ * Returns the raw stdout string.
19
+ * Calls are serialized via a mutex to prevent concurrent Apple Events races.
20
+ */
21
+ export async function runOmniJS(omniScript) {
22
+ const execute = async () => {
23
+ const fullScript = OMNIJS_PRELUDE + '\n' + omniScript;
24
+ const jxaScript = `(() => {
25
+ const app = Application("OmniFocus");
26
+ return app.evaluateJavascript(${JSON.stringify(fullScript)});
27
+ })()`;
28
+ logger.debug("Executing OmniJS script", { scriptLength: omniScript.length });
29
+ try {
30
+ const { stdout } = await execFileAsync("osascript", ["-l", "JavaScript", "-e", jxaScript], {
31
+ timeout: config.executorTimeout,
32
+ maxBuffer: config.maxBuffer,
33
+ });
34
+ return stdout.trim();
35
+ }
36
+ catch (error) {
37
+ const execError = error;
38
+ const stderr = execError.stderr || "";
39
+ const exitCode = execError.killed ? null : (execError.code ?? 1);
40
+ logger.error("OmniJS execution failed", { stderr, exitCode });
41
+ logger.debug("Failed script preview", { script: omniScript.substring(0, 500) });
42
+ throw parseExecutorError(stderr, exitCode);
43
+ }
44
+ };
45
+ pending = pending.then(execute, execute);
46
+ return pending;
47
+ }
48
+ /**
49
+ * Executes an OmniJS script and parses the result as JSON.
50
+ */
51
+ export async function runOmniJSJson(omniScript) {
52
+ const raw = await runOmniJS(omniScript);
53
+ try {
54
+ return JSON.parse(raw);
55
+ }
56
+ catch (parseError) {
57
+ const parseMessage = parseError instanceof Error ? parseError.message : String(parseError);
58
+ logger.error("Failed to parse OmniJS JSON response", { raw: raw.substring(0, 500), parseError: parseMessage });
59
+ throw new Error(`Failed to parse OmniFocus response as JSON (${parseMessage}): ${raw.substring(0, 200)}`);
60
+ }
61
+ }
62
+ //# sourceMappingURL=executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/omnifocus/executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { DumpDatabaseArgs } from "../../types/omnifocus.js";
2
+ export declare function buildDatabaseSummaryScript(): string;
3
+ export declare function buildSearchScript(query: string, limit: number): string;
4
+ export declare function buildDumpDatabaseScript(args?: DumpDatabaseArgs): string;
5
+ export declare function buildSaveDatabaseScript(): string;
6
+ //# sourceMappingURL=database.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../../src/omnifocus/scripts/database.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,wBAAgB,0BAA0B,IAAI,MAAM,CA2BnD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CA2CtE;AAED,wBAAgB,uBAAuB,CAAC,IAAI,GAAE,gBAAqB,GAAG,MAAM,CAgF3E;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAKhD"}
@@ -0,0 +1,161 @@
1
+ import { serializeTaskFn, serializeTaskWithChildrenFn, serializeProjectFn, serializeFolderFn, serializeFolderWithChildrenFn, serializeTagFn, serializeTagWithChildrenFn, serializePerspectiveFn } from "../serializers.js";
2
+ export function buildDatabaseSummaryScript() {
3
+ return `(() => {
4
+ var inboxItems = inbox.filter(function(t) { return t.taskStatus === Task.Status.Available; });
5
+ var projects = flattenedProjects.filter(function(p) { return p.status === Project.Status.Active; });
6
+ var tagsList = flattenedTags;
7
+ var folders = flattenedFolders;
8
+
9
+ var now = new Date();
10
+ var soon = new Date(now.getTime() + 3 * 24 * 60 * 60 * 1000);
11
+
12
+ var allTasks = flattenedTasks;
13
+ var available = allTasks.filter(function(t) { return t.taskStatus === Task.Status.Available; });
14
+ var dueSoon = available.filter(function(t) { return t.dueDate && t.dueDate <= soon && t.dueDate >= now; });
15
+ var overdue = available.filter(function(t) { return t.dueDate && t.dueDate < now; });
16
+ var flagged = available.filter(function(t) { return t.flagged; });
17
+
18
+ return JSON.stringify({
19
+ inboxCount: inboxItems.length,
20
+ projectCount: projects.length,
21
+ tagCount: tagsList.length,
22
+ folderCount: folders.length,
23
+ availableTaskCount: available.length,
24
+ dueSoonTaskCount: dueSoon.length,
25
+ overdueTaskCount: overdue.length,
26
+ flaggedTaskCount: flagged.length
27
+ });
28
+ })()`;
29
+ }
30
+ export function buildSearchScript(query, limit) {
31
+ const argsJson = JSON.stringify({ query, limit });
32
+ return `(() => {
33
+ var args = JSON.parse(${JSON.stringify(argsJson)});
34
+ var query = args.query.toLowerCase();
35
+ var limit = args.limit;
36
+
37
+ var results = [];
38
+
39
+ var tasks = flattenedTasks;
40
+ for (var i = 0; i < tasks.length && results.length < limit; i++) {
41
+ var t = tasks[i];
42
+ if (t.name.toLowerCase().indexOf(query) !== -1 || (t.note || "").toLowerCase().indexOf(query) !== -1) {
43
+ results.push({ type: "task", id: t.id.primaryKey, name: t.name, note: (t.note || "").substring(0, 200) });
44
+ }
45
+ }
46
+
47
+ var projects = flattenedProjects;
48
+ for (var i = 0; i < projects.length && results.length < limit; i++) {
49
+ var p = projects[i];
50
+ if (p.name.toLowerCase().indexOf(query) !== -1 || (p.note || "").toLowerCase().indexOf(query) !== -1) {
51
+ results.push({ type: "project", id: p.id.primaryKey, name: p.name, note: (p.note || "").substring(0, 200) });
52
+ }
53
+ }
54
+
55
+ var folders = flattenedFolders;
56
+ for (var i = 0; i < folders.length && results.length < limit; i++) {
57
+ var f = folders[i];
58
+ if (f.name.toLowerCase().indexOf(query) !== -1) {
59
+ results.push({ type: "folder", id: f.id.primaryKey, name: f.name });
60
+ }
61
+ }
62
+
63
+ var tags = flattenedTags;
64
+ for (var i = 0; i < tags.length && results.length < limit; i++) {
65
+ var tg = tags[i];
66
+ if (tg.name.toLowerCase().indexOf(query) !== -1) {
67
+ results.push({ type: "tag", id: tg.id.primaryKey, name: tg.name });
68
+ }
69
+ }
70
+
71
+ return JSON.stringify(results.slice(0, limit));
72
+ })()`;
73
+ }
74
+ export function buildDumpDatabaseScript(args = {}) {
75
+ const argsJson = JSON.stringify(args);
76
+ return `(() => {
77
+ var args = JSON.parse(${JSON.stringify(argsJson)});
78
+ ${serializeTaskFn}
79
+ ${serializeTaskWithChildrenFn}
80
+ ${serializeProjectFn}
81
+ ${serializeFolderFn}
82
+ ${serializeFolderWithChildrenFn}
83
+ ${serializeTagFn}
84
+ ${serializeTagWithChildrenFn}
85
+ ${serializePerspectiveFn}
86
+
87
+ var maxDepth = args.maxDepth || 0;
88
+ var includeCompleted = args.includeCompleted || false;
89
+
90
+ var hideRecurringDuplicates = args.hideRecurringDuplicates || false;
91
+
92
+ // Inbox tasks
93
+ var inboxTasks = inbox.slice();
94
+ if (!includeCompleted) {
95
+ inboxTasks = inboxTasks.filter(function(t) { return t.taskStatus !== Task.Status.Completed && t.taskStatus !== Task.Status.Dropped; });
96
+ }
97
+ if (hideRecurringDuplicates) {
98
+ var now2 = new Date();
99
+ inboxTasks = inboxTasks.filter(function(t) {
100
+ if (!t.repetitionRule) return true;
101
+ return !t.deferDate || t.deferDate <= now2;
102
+ });
103
+ }
104
+ var inboxSerialized = inboxTasks.map(function(t) { return serializeTaskWithChildren(t, 0, maxDepth); });
105
+
106
+ // Projects
107
+ var projects = flattenedProjects.slice();
108
+ if (!includeCompleted) {
109
+ projects = projects.filter(function(p) { return p.status !== Project.Status.Done && p.status !== Project.Status.Dropped; });
110
+ }
111
+ var projectsSerialized = projects.map(serializeProject);
112
+
113
+ // Folders (top-level with recursive children)
114
+ var topFolders = Array.from(library).filter(function(x) { return x instanceof Folder; });
115
+ var foldersSerialized = topFolders.map(function(f) { return serializeFolderWithChildren(f, 0, maxDepth); });
116
+
117
+ // Tags (top-level with recursive children)
118
+ var topTags = tags.slice();
119
+ var tagsSerialized = topTags.map(function(t) { return serializeTagWithChildren(t, 0, maxDepth); });
120
+
121
+ // Perspectives
122
+ var perspectives = Perspective.Custom.all.slice();
123
+ var perspectivesSerialized = perspectives.map(serializePerspective);
124
+
125
+ // Summary
126
+ var now = new Date();
127
+ var soon = new Date(now.getTime() + 3 * 24 * 60 * 60 * 1000);
128
+ var allTasks = flattenedTasks;
129
+ var available = allTasks.filter(function(t) { return t.taskStatus === Task.Status.Available; });
130
+ var dueSoon = available.filter(function(t) { return t.dueDate && t.dueDate <= soon && t.dueDate >= now; });
131
+ var overdue = available.filter(function(t) { return t.dueDate && t.dueDate < now; });
132
+ var flagged = available.filter(function(t) { return t.flagged; });
133
+
134
+ var summary = {
135
+ inboxCount: inbox.filter(function(t) { return t.taskStatus === Task.Status.Available; }).length,
136
+ projectCount: flattenedProjects.filter(function(p) { return p.status === Project.Status.Active; }).length,
137
+ tagCount: flattenedTags.length,
138
+ folderCount: flattenedFolders.length,
139
+ availableTaskCount: available.length,
140
+ dueSoonTaskCount: dueSoon.length,
141
+ overdueTaskCount: overdue.length,
142
+ flaggedTaskCount: flagged.length
143
+ };
144
+
145
+ return JSON.stringify({
146
+ inbox: inboxSerialized,
147
+ projects: projectsSerialized,
148
+ folders: foldersSerialized,
149
+ tags: tagsSerialized,
150
+ perspectives: perspectivesSerialized,
151
+ summary: summary
152
+ });
153
+ })()`;
154
+ }
155
+ export function buildSaveDatabaseScript() {
156
+ return `(() => {
157
+ document.save();
158
+ return JSON.stringify({ saved: true });
159
+ })()`;
160
+ }
161
+ //# sourceMappingURL=database.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../../../src/omnifocus/scripts/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,cAAc,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAG3N,MAAM,UAAU,0BAA0B;IACxC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;KAyBJ,CAAC;AACN,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAa,EAAE,KAAa;IAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAClD,OAAO;0BACiB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAuC7C,CAAC;AACN,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAyB,EAAE;IACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACtC,OAAO;0BACiB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;IAC9C,eAAe;IACf,2BAA2B;IAC3B,kBAAkB;IAClB,iBAAiB;IACjB,6BAA6B;IAC7B,cAAc;IACd,0BAA0B;IAC1B,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAoErB,CAAC;AACN,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO;;;KAGJ,CAAC;AACN,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { CreateFolderArgs, UpdateFolderArgs } from "../../types/omnifocus.js";
2
+ export declare function buildListFoldersScript(): string;
3
+ export declare function buildGetFolderScript(id: string): string;
4
+ export declare function buildCreateFolderScript(args: CreateFolderArgs): string;
5
+ export declare function buildUpdateFolderScript(args: UpdateFolderArgs): string;
6
+ export declare function buildDeleteFolderScript(id: string): string;
7
+ //# sourceMappingURL=folders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"folders.d.ts","sourceRoot":"","sources":["../../../src/omnifocus/scripts/folders.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEnF,wBAAgB,sBAAsB,IAAI,MAAM,CAO/C;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAYvD;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAmBtE;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAkBtE;AAED,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAU1D"}