@ofocus/sdk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/README.md +80 -0
  2. package/api-report/ofocus-sdk.api.md +564 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/applescript.d.ts +30 -0
  5. package/dist/applescript.d.ts.map +1 -0
  6. package/dist/applescript.js +142 -0
  7. package/dist/applescript.js.map +1 -0
  8. package/dist/commands/batch.d.ts +23 -0
  9. package/dist/commands/batch.d.ts.map +1 -0
  10. package/dist/commands/batch.js +324 -0
  11. package/dist/commands/batch.js.map +1 -0
  12. package/dist/commands/complete.d.ts +14 -0
  13. package/dist/commands/complete.d.ts.map +1 -0
  14. package/dist/commands/complete.js +37 -0
  15. package/dist/commands/complete.js.map +1 -0
  16. package/dist/commands/create-project.d.ts +6 -0
  17. package/dist/commands/create-project.d.ts.map +1 -0
  18. package/dist/commands/create-project.js +124 -0
  19. package/dist/commands/create-project.js.map +1 -0
  20. package/dist/commands/drop.d.ts +26 -0
  21. package/dist/commands/drop.d.ts.map +1 -0
  22. package/dist/commands/drop.js +62 -0
  23. package/dist/commands/drop.js.map +1 -0
  24. package/dist/commands/folders.d.ts +10 -0
  25. package/dist/commands/folders.d.ts.map +1 -0
  26. package/dist/commands/folders.js +150 -0
  27. package/dist/commands/folders.js.map +1 -0
  28. package/dist/commands/inbox.d.ts +6 -0
  29. package/dist/commands/inbox.d.ts.map +1 -0
  30. package/dist/commands/inbox.js +124 -0
  31. package/dist/commands/inbox.js.map +1 -0
  32. package/dist/commands/perspectives.d.ts +20 -0
  33. package/dist/commands/perspectives.d.ts.map +1 -0
  34. package/dist/commands/perspectives.js +166 -0
  35. package/dist/commands/perspectives.js.map +1 -0
  36. package/dist/commands/projects.d.ts +6 -0
  37. package/dist/commands/projects.d.ts.map +1 -0
  38. package/dist/commands/projects.js +113 -0
  39. package/dist/commands/projects.js.map +1 -0
  40. package/dist/commands/repetition.d.ts +17 -0
  41. package/dist/commands/repetition.d.ts.map +1 -0
  42. package/dist/commands/repetition.js +59 -0
  43. package/dist/commands/repetition.js.map +1 -0
  44. package/dist/commands/review.d.ts +10 -0
  45. package/dist/commands/review.d.ts.map +1 -0
  46. package/dist/commands/review.js +132 -0
  47. package/dist/commands/review.js.map +1 -0
  48. package/dist/commands/search.d.ts +6 -0
  49. package/dist/commands/search.d.ts.map +1 -0
  50. package/dist/commands/search.js +150 -0
  51. package/dist/commands/search.js.map +1 -0
  52. package/dist/commands/subtasks.d.ts +14 -0
  53. package/dist/commands/subtasks.d.ts.map +1 -0
  54. package/dist/commands/subtasks.js +370 -0
  55. package/dist/commands/subtasks.js.map +1 -0
  56. package/dist/commands/tags-crud.d.ts +22 -0
  57. package/dist/commands/tags-crud.d.ts.map +1 -0
  58. package/dist/commands/tags-crud.js +187 -0
  59. package/dist/commands/tags-crud.js.map +1 -0
  60. package/dist/commands/tags.d.ts +6 -0
  61. package/dist/commands/tags.d.ts.map +1 -0
  62. package/dist/commands/tags.js +61 -0
  63. package/dist/commands/tags.js.map +1 -0
  64. package/dist/commands/tasks.d.ts +6 -0
  65. package/dist/commands/tasks.d.ts.map +1 -0
  66. package/dist/commands/tasks.js +160 -0
  67. package/dist/commands/tasks.js.map +1 -0
  68. package/dist/commands/update.d.ts +6 -0
  69. package/dist/commands/update.d.ts.map +1 -0
  70. package/dist/commands/update.js +179 -0
  71. package/dist/commands/update.js.map +1 -0
  72. package/dist/errors.d.ts +38 -0
  73. package/dist/errors.d.ts.map +1 -0
  74. package/dist/errors.js +77 -0
  75. package/dist/errors.js.map +1 -0
  76. package/dist/escape.d.ts +6 -0
  77. package/dist/escape.d.ts.map +1 -0
  78. package/dist/escape.js +8 -0
  79. package/dist/escape.js.map +1 -0
  80. package/dist/index.d.ts +30 -0
  81. package/dist/index.d.ts.map +1 -0
  82. package/dist/index.js +36 -0
  83. package/dist/index.js.map +1 -0
  84. package/dist/ofocus-sdk.d.ts +608 -0
  85. package/dist/result.d.ts +15 -0
  86. package/dist/result.d.ts.map +1 -0
  87. package/dist/result.js +29 -0
  88. package/dist/result.js.map +1 -0
  89. package/dist/types.d.ts +228 -0
  90. package/dist/types.d.ts.map +1 -0
  91. package/dist/types.js +2 -0
  92. package/dist/types.js.map +1 -0
  93. package/dist/validation.d.ts +57 -0
  94. package/dist/validation.d.ts.map +1 -0
  95. package/dist/validation.js +172 -0
  96. package/dist/validation.js.map +1 -0
  97. package/docs/index.md +30 -0
  98. package/docs/sdk.addtoinbox.md +68 -0
  99. package/docs/sdk.applescriptresult.data.md +11 -0
  100. package/docs/sdk.applescriptresult.error.md +11 -0
  101. package/docs/sdk.applescriptresult.md +92 -0
  102. package/docs/sdk.applescriptresult.success.md +11 -0
  103. package/docs/sdk.clierror.code.md +11 -0
  104. package/docs/sdk.clierror.details.md +11 -0
  105. package/docs/sdk.clierror.md +92 -0
  106. package/docs/sdk.clierror.message.md +11 -0
  107. package/docs/sdk.clioutput.data.md +11 -0
  108. package/docs/sdk.clioutput.error.md +11 -0
  109. package/docs/sdk.clioutput.md +90 -0
  110. package/docs/sdk.clioutput.success.md +11 -0
  111. package/docs/sdk.commandinfo.description.md +11 -0
  112. package/docs/sdk.commandinfo.md +90 -0
  113. package/docs/sdk.commandinfo.name.md +11 -0
  114. package/docs/sdk.commandinfo.usage.md +11 -0
  115. package/docs/sdk.completeresult.completed.md +11 -0
  116. package/docs/sdk.completeresult.md +90 -0
  117. package/docs/sdk.completeresult.taskid.md +11 -0
  118. package/docs/sdk.completeresult.taskname.md +11 -0
  119. package/docs/sdk.completetask.md +52 -0
  120. package/docs/sdk.createerror.md +82 -0
  121. package/docs/sdk.errorcode.md +24 -0
  122. package/docs/sdk.escapeapplescript.md +52 -0
  123. package/docs/sdk.failure.md +52 -0
  124. package/docs/sdk.failuremessage.md +52 -0
  125. package/docs/sdk.inboxoptions.defer.md +11 -0
  126. package/docs/sdk.inboxoptions.due.md +11 -0
  127. package/docs/sdk.inboxoptions.flag.md +11 -0
  128. package/docs/sdk.inboxoptions.md +134 -0
  129. package/docs/sdk.inboxoptions.note.md +11 -0
  130. package/docs/sdk.inboxoptions.tags.md +11 -0
  131. package/docs/sdk.jsonhelpers.md +13 -0
  132. package/docs/sdk.md +471 -0
  133. package/docs/sdk.ofperspective.id.md +11 -0
  134. package/docs/sdk.ofperspective.md +73 -0
  135. package/docs/sdk.ofperspective.name.md +11 -0
  136. package/docs/sdk.ofproject.folderid.md +11 -0
  137. package/docs/sdk.ofproject.foldername.md +11 -0
  138. package/docs/sdk.ofproject.id.md +11 -0
  139. package/docs/sdk.ofproject.md +192 -0
  140. package/docs/sdk.ofproject.name.md +11 -0
  141. package/docs/sdk.ofproject.note.md +11 -0
  142. package/docs/sdk.ofproject.remainingtaskcount.md +11 -0
  143. package/docs/sdk.ofproject.sequential.md +11 -0
  144. package/docs/sdk.ofproject.status.md +11 -0
  145. package/docs/sdk.ofproject.taskcount.md +11 -0
  146. package/docs/sdk.oftag.availabletaskcount.md +11 -0
  147. package/docs/sdk.oftag.id.md +11 -0
  148. package/docs/sdk.oftag.md +124 -0
  149. package/docs/sdk.oftag.name.md +11 -0
  150. package/docs/sdk.oftag.parentid.md +11 -0
  151. package/docs/sdk.oftag.parentname.md +11 -0
  152. package/docs/sdk.oftask.completed.md +11 -0
  153. package/docs/sdk.oftask.completiondate.md +11 -0
  154. package/docs/sdk.oftask.deferdate.md +11 -0
  155. package/docs/sdk.oftask.duedate.md +11 -0
  156. package/docs/sdk.oftask.flagged.md +11 -0
  157. package/docs/sdk.oftask.id.md +11 -0
  158. package/docs/sdk.oftask.md +226 -0
  159. package/docs/sdk.oftask.name.md +11 -0
  160. package/docs/sdk.oftask.note.md +11 -0
  161. package/docs/sdk.oftask.projectid.md +11 -0
  162. package/docs/sdk.oftask.projectname.md +11 -0
  163. package/docs/sdk.oftask.tags.md +11 -0
  164. package/docs/sdk.omnifocusscript.md +52 -0
  165. package/docs/sdk.omnifocusscriptwithhelpers.md +52 -0
  166. package/docs/sdk.parseapplescripterror.md +52 -0
  167. package/docs/sdk.projectqueryoptions.folder.md +11 -0
  168. package/docs/sdk.projectqueryoptions.md +96 -0
  169. package/docs/sdk.projectqueryoptions.sequential.md +11 -0
  170. package/docs/sdk.projectqueryoptions.status.md +11 -0
  171. package/docs/sdk.queryprojects.md +54 -0
  172. package/docs/sdk.querytags.md +54 -0
  173. package/docs/sdk.querytasks.md +54 -0
  174. package/docs/sdk.runapplescript.md +52 -0
  175. package/docs/sdk.runapplescriptfile.md +68 -0
  176. package/docs/sdk.success.md +52 -0
  177. package/docs/sdk.tagqueryoptions.md +58 -0
  178. package/docs/sdk.tagqueryoptions.parent.md +11 -0
  179. package/docs/sdk.taskqueryoptions.available.md +11 -0
  180. package/docs/sdk.taskqueryoptions.completed.md +11 -0
  181. package/docs/sdk.taskqueryoptions.dueafter.md +11 -0
  182. package/docs/sdk.taskqueryoptions.duebefore.md +11 -0
  183. package/docs/sdk.taskqueryoptions.flagged.md +11 -0
  184. package/docs/sdk.taskqueryoptions.md +172 -0
  185. package/docs/sdk.taskqueryoptions.project.md +11 -0
  186. package/docs/sdk.taskqueryoptions.tag.md +11 -0
  187. package/docs/sdk.taskupdateoptions.defer.md +11 -0
  188. package/docs/sdk.taskupdateoptions.due.md +11 -0
  189. package/docs/sdk.taskupdateoptions.flag.md +11 -0
  190. package/docs/sdk.taskupdateoptions.md +172 -0
  191. package/docs/sdk.taskupdateoptions.note.md +11 -0
  192. package/docs/sdk.taskupdateoptions.project.md +11 -0
  193. package/docs/sdk.taskupdateoptions.tags.md +11 -0
  194. package/docs/sdk.taskupdateoptions.title.md +11 -0
  195. package/docs/sdk.updatetask.md +66 -0
  196. package/docs/sdk.validatedatestring.md +54 -0
  197. package/docs/sdk.validateid.md +66 -0
  198. package/docs/sdk.validateprojectname.md +52 -0
  199. package/docs/sdk.validatetags.md +52 -0
  200. package/package.json +51 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tags.js","sourceRoot":"","sources":["../../src/commands/tags.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EACL,cAAc,EACd,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAE3B;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,UAA2B,EAAE;IAE7B,MAAM,MAAM,GAAG;;;;;;;QAOT,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE;QAChD,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;QAC3B,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,EAAE;QACjE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,iCAAiC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC,CAAC,EAAE;QACxH,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;QAC/B,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA4B3C,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;;;;GAInC,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,cAAc,CACjC,0BAA0B,CAAC,MAAM,CAAC,CACnC,CAAC;IAEF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,OAAO,CACZ,MAAM,CAAC,KAAK;YACV,WAAW,CAAC,SAAS,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAC/D,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AACpC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { CliOutput, TaskQueryOptions, OFTask } from "../types.js";
2
+ /**
3
+ * Query tasks from OmniFocus with optional filters.
4
+ */
5
+ export declare function queryTasks(options?: TaskQueryOptions): Promise<CliOutput<OFTask[]>>;
6
+ //# sourceMappingURL=tasks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/commands/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAavE;;GAEG;AACH,wBAAsB,UAAU,CAC9B,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAmK9B"}
@@ -0,0 +1,160 @@
1
+ import { success, failure } from "../result.js";
2
+ import { ErrorCode, createError } from "../errors.js";
3
+ import { validateDateString, validateProjectName, } from "../validation.js";
4
+ import { escapeAppleScript } from "../escape.js";
5
+ import { runAppleScript, omniFocusScriptWithHelpers, } from "../applescript.js";
6
+ /**
7
+ * Query tasks from OmniFocus with optional filters.
8
+ */
9
+ export async function queryTasks(options = {}) {
10
+ // Validate inputs
11
+ if (options.dueBefore !== undefined) {
12
+ const dateError = validateDateString(options.dueBefore);
13
+ if (dateError)
14
+ return failure(dateError);
15
+ }
16
+ if (options.dueAfter !== undefined) {
17
+ const dateError = validateDateString(options.dueAfter);
18
+ if (dateError)
19
+ return failure(dateError);
20
+ }
21
+ const projectError = validateProjectName(options.project);
22
+ if (projectError)
23
+ return failure(projectError);
24
+ // Build filter conditions
25
+ const conditions = [];
26
+ if (options.completed === true) {
27
+ conditions.push("completed is true");
28
+ }
29
+ else if (options.completed === false) {
30
+ conditions.push("completed is false");
31
+ }
32
+ if (options.flagged === true) {
33
+ conditions.push("flagged is true");
34
+ }
35
+ if (options.available === true) {
36
+ conditions.push("completed is false");
37
+ conditions.push("effectively dropped is false");
38
+ conditions.push("blocked is false");
39
+ }
40
+ // Project filter handled separately in script
41
+ // Tag filter handled separately in script
42
+ // Date filters handled separately in script
43
+ const whereClause = conditions.length > 0 ? `where ${conditions.join(" and ")}` : "";
44
+ const script = `
45
+ set output to "["
46
+ set isFirst to true
47
+
48
+ set allTasks to flattened tasks ${whereClause}
49
+
50
+ repeat with t in allTasks
51
+ -- Apply additional filters
52
+ set shouldInclude to true
53
+
54
+ ${options.project ? `-- Filter by project (inbox tasks have no containing project)` : ""}
55
+ ${options.project ? `try` : ""}
56
+ ${options.project ? ` if name of containing project of t is not "${escapeAppleScript(options.project)}" then set shouldInclude to false` : ""}
57
+ ${options.project ? `on error` : ""}
58
+ ${options.project ? ` set shouldInclude to false` : ""}
59
+ ${options.project ? `end try` : ""}
60
+
61
+ ${options.tag ? `-- Filter by tag` : ""}
62
+ ${options.tag ? `if shouldInclude then` : ""}
63
+ ${options.tag ? ` set hasTag to false` : ""}
64
+ ${options.tag ? ` repeat with tg in tags of t` : ""}
65
+ ${options.tag ? ` if name of tg is "${escapeAppleScript(options.tag)}" then set hasTag to true` : ""}
66
+ ${options.tag ? ` end repeat` : ""}
67
+ ${options.tag ? ` if not hasTag then set shouldInclude to false` : ""}
68
+ ${options.tag ? `end if` : ""}
69
+
70
+ ${options.dueBefore ? `-- Filter by due before` : ""}
71
+ ${options.dueBefore ? `if shouldInclude then` : ""}
72
+ ${options.dueBefore ? ` try` : ""}
73
+ ${options.dueBefore ? ` set taskDue to due date of t` : ""}
74
+ ${options.dueBefore ? ` if taskDue > date "${options.dueBefore}" then set shouldInclude to false` : ""}
75
+ ${options.dueBefore ? ` on error` : ""}
76
+ ${options.dueBefore ? ` set shouldInclude to false` : ""}
77
+ ${options.dueBefore ? ` end try` : ""}
78
+ ${options.dueBefore ? `end if` : ""}
79
+
80
+ ${options.dueAfter ? `-- Filter by due after` : ""}
81
+ ${options.dueAfter ? `if shouldInclude then` : ""}
82
+ ${options.dueAfter ? ` try` : ""}
83
+ ${options.dueAfter ? ` set taskDue to due date of t` : ""}
84
+ ${options.dueAfter ? ` if taskDue < date "${options.dueAfter}" then set shouldInclude to false` : ""}
85
+ ${options.dueAfter ? ` on error` : ""}
86
+ ${options.dueAfter ? ` set shouldInclude to false` : ""}
87
+ ${options.dueAfter ? ` end try` : ""}
88
+ ${options.dueAfter ? `end if` : ""}
89
+
90
+ if shouldInclude then
91
+ if not isFirst then set output to output & ","
92
+ set isFirst to false
93
+
94
+ set taskId to id of t
95
+ set taskName to name of t
96
+ set taskNote to note of t
97
+ set taskFlagged to flagged of t
98
+ set taskCompleted to completed of t
99
+
100
+ set dueStr to ""
101
+ try
102
+ set dueStr to (due date of t) as string
103
+ end try
104
+
105
+ set deferStr to ""
106
+ try
107
+ set deferStr to (defer date of t) as string
108
+ end try
109
+
110
+ set completionStr to ""
111
+ try
112
+ set completionStr to (completion date of t) as string
113
+ end try
114
+
115
+ set projId to ""
116
+ set projName to ""
117
+ try
118
+ set proj to containing project of t
119
+ set projId to id of proj
120
+ set projName to name of proj
121
+ end try
122
+
123
+ set tagNames to {}
124
+ repeat with tg in tags of t
125
+ set end of tagNames to name of tg
126
+ end repeat
127
+
128
+ set estMinutes to 0
129
+ try
130
+ set estMinutes to estimated minutes of t
131
+ if estMinutes is missing value then set estMinutes to 0
132
+ end try
133
+
134
+ set output to output & "{" & ¬
135
+ "\\"id\\": \\"" & taskId & "\\"," & ¬
136
+ "\\"name\\": \\"" & (my escapeJson(taskName)) & "\\"," & ¬
137
+ "\\"note\\": " & (my jsonString(taskNote)) & "," & ¬
138
+ "\\"flagged\\": " & taskFlagged & "," & ¬
139
+ "\\"completed\\": " & taskCompleted & "," & ¬
140
+ "\\"dueDate\\": " & (my jsonString(dueStr)) & "," & ¬
141
+ "\\"deferDate\\": " & (my jsonString(deferStr)) & "," & ¬
142
+ "\\"completionDate\\": " & (my jsonString(completionStr)) & "," & ¬
143
+ "\\"projectId\\": " & (my jsonString(projId)) & "," & ¬
144
+ "\\"projectName\\": " & (my jsonString(projName)) & "," & ¬
145
+ "\\"tags\\": " & (my jsonArray(tagNames)) & "," & ¬
146
+ "\\"estimatedMinutes\\": " & estMinutes & ¬
147
+ "}"
148
+ end if
149
+ end repeat
150
+
151
+ return output & "]"
152
+ `;
153
+ const result = await runAppleScript(omniFocusScriptWithHelpers(script));
154
+ if (!result.success) {
155
+ return failure(result.error ??
156
+ createError(ErrorCode.UNKNOWN_ERROR, "Failed to query tasks"));
157
+ }
158
+ return success(result.data ?? []);
159
+ }
160
+ //# sourceMappingURL=tasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/commands/tasks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { CliOutput, TaskUpdateOptions, OFTask } from "../types.js";
2
+ /**
3
+ * Update properties of an existing task in OmniFocus.
4
+ */
5
+ export declare function updateTask(taskId: string, options: TaskUpdateOptions): Promise<CliOutput<OFTask>>;
6
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAqBxE;;GAEG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAiM5B"}
@@ -0,0 +1,179 @@
1
+ import { success, failure } from "../result.js";
2
+ import { ErrorCode, createError } from "../errors.js";
3
+ import { validateId, validateDateString, validateTags, validateProjectName, validateEstimatedMinutes, validateRepetitionRule, } from "../validation.js";
4
+ import { escapeAppleScript } from "../escape.js";
5
+ import { runAppleScript, omniFocusScriptWithHelpers, } from "../applescript.js";
6
+ import { buildRepetitionRuleScript, buildClearRepetitionScript, } from "./repetition.js";
7
+ /**
8
+ * Update properties of an existing task in OmniFocus.
9
+ */
10
+ export async function updateTask(taskId, options) {
11
+ // Validate inputs
12
+ const idError = validateId(taskId, "task");
13
+ if (idError)
14
+ return failure(idError);
15
+ if (options.due !== undefined && options.due !== "") {
16
+ const dueError = validateDateString(options.due);
17
+ if (dueError)
18
+ return failure(dueError);
19
+ }
20
+ if (options.defer !== undefined && options.defer !== "") {
21
+ const deferError = validateDateString(options.defer);
22
+ if (deferError)
23
+ return failure(deferError);
24
+ }
25
+ const tagsError = validateTags(options.tags);
26
+ if (tagsError)
27
+ return failure(tagsError);
28
+ const projectError = validateProjectName(options.project);
29
+ if (projectError)
30
+ return failure(projectError);
31
+ const estimateError = validateEstimatedMinutes(options.estimatedMinutes);
32
+ if (estimateError)
33
+ return failure(estimateError);
34
+ const repeatError = validateRepetitionRule(options.repeat);
35
+ if (repeatError)
36
+ return failure(repeatError);
37
+ // Build the update statements
38
+ const updates = [];
39
+ if (options.title !== undefined) {
40
+ updates.push(`set name of theTask to "${escapeAppleScript(options.title)}"`);
41
+ }
42
+ if (options.note !== undefined) {
43
+ updates.push(`set note of theTask to "${escapeAppleScript(options.note)}"`);
44
+ }
45
+ if (options.flag !== undefined) {
46
+ updates.push("set flagged of theTask to " + String(options.flag));
47
+ }
48
+ if (options.due !== undefined) {
49
+ if (options.due === "") {
50
+ updates.push(`set due date of theTask to missing value`);
51
+ }
52
+ else {
53
+ updates.push(`set due date of theTask to date "${options.due}"`);
54
+ }
55
+ }
56
+ if (options.defer !== undefined) {
57
+ if (options.defer === "") {
58
+ updates.push(`set defer date of theTask to missing value`);
59
+ }
60
+ else {
61
+ updates.push(`set defer date of theTask to date "${options.defer}"`);
62
+ }
63
+ }
64
+ if (options.project !== undefined) {
65
+ if (options.project === "") {
66
+ updates.push(`set containing project of theTask to missing value`);
67
+ }
68
+ else {
69
+ updates.push(`set theProject to first flattened project whose name is "${escapeAppleScript(options.project)}"`);
70
+ updates.push(`move theTask to end of tasks of theProject`);
71
+ }
72
+ }
73
+ if (options.estimatedMinutes !== undefined) {
74
+ updates.push(`set estimated minutes of theTask to ${String(options.estimatedMinutes)}`);
75
+ }
76
+ if (options.clearEstimate === true) {
77
+ updates.push(`set estimated minutes of theTask to missing value`);
78
+ }
79
+ const updateScript = updates.join("\n ");
80
+ // Handle repetition rule
81
+ let repetitionScript = "";
82
+ if (options.clearRepeat === true) {
83
+ repetitionScript = buildClearRepetitionScript("theTask");
84
+ }
85
+ else if (options.repeat !== undefined) {
86
+ repetitionScript = buildRepetitionRuleScript("theTask", options.repeat);
87
+ }
88
+ // Handle tags - clear and re-add
89
+ let tagScript = "";
90
+ if (options.tags !== undefined) {
91
+ tagScript = `
92
+ -- Clear existing tags
93
+ repeat with existingTag in (tags of theTask)
94
+ remove existingTag from tags of theTask
95
+ end repeat
96
+ `;
97
+ for (const tagName of options.tags) {
98
+ tagScript += `
99
+ try
100
+ set theTag to first flattened tag whose name is "${escapeAppleScript(tagName)}"
101
+ add theTag to tags of theTask
102
+ end try
103
+ `;
104
+ }
105
+ }
106
+ const script = `
107
+ set theTask to first flattened task whose id is "${escapeAppleScript(taskId)}"
108
+
109
+ ${updateScript}
110
+ ${tagScript}
111
+ ${repetitionScript}
112
+
113
+ -- Return updated task info
114
+ set taskId to id of theTask
115
+ set taskName to name of theTask
116
+ set taskNote to note of theTask
117
+ set taskFlagged to flagged of theTask
118
+ set taskCompleted to completed of theTask
119
+
120
+ set dueStr to ""
121
+ try
122
+ set dueStr to (due date of theTask) as string
123
+ end try
124
+
125
+ set deferStr to ""
126
+ try
127
+ set deferStr to (defer date of theTask) as string
128
+ end try
129
+
130
+ set completionStr to ""
131
+ try
132
+ set completionStr to (completion date of theTask) as string
133
+ end try
134
+
135
+ set projId to ""
136
+ set projName to ""
137
+ try
138
+ set proj to containing project of theTask
139
+ set projId to id of proj
140
+ set projName to name of proj
141
+ end try
142
+
143
+ set tagNames to {}
144
+ repeat with t in tags of theTask
145
+ set end of tagNames to name of t
146
+ end repeat
147
+
148
+ set estMinutes to 0
149
+ try
150
+ set estMinutes to estimated minutes of theTask
151
+ if estMinutes is missing value then set estMinutes to 0
152
+ end try
153
+
154
+ return "{" & ¬
155
+ "\\"id\\": \\"" & taskId & "\\"," & ¬
156
+ "\\"name\\": \\"" & (my escapeJson(taskName)) & "\\"," & ¬
157
+ "\\"note\\": " & (my jsonString(taskNote)) & "," & ¬
158
+ "\\"flagged\\": " & taskFlagged & "," & ¬
159
+ "\\"completed\\": " & taskCompleted & "," & ¬
160
+ "\\"dueDate\\": " & (my jsonString(dueStr)) & "," & ¬
161
+ "\\"deferDate\\": " & (my jsonString(deferStr)) & "," & ¬
162
+ "\\"completionDate\\": " & (my jsonString(completionStr)) & "," & ¬
163
+ "\\"projectId\\": " & (my jsonString(projId)) & "," & ¬
164
+ "\\"projectName\\": " & (my jsonString(projName)) & "," & ¬
165
+ "\\"tags\\": " & (my jsonArray(tagNames)) & "," & ¬
166
+ "\\"estimatedMinutes\\": " & estMinutes & ¬
167
+ "}"
168
+ `;
169
+ const result = await runAppleScript(omniFocusScriptWithHelpers(script));
170
+ if (!result.success) {
171
+ return failure(result.error ??
172
+ createError(ErrorCode.UNKNOWN_ERROR, "Failed to update task"));
173
+ }
174
+ if (result.data === undefined) {
175
+ return failure(createError(ErrorCode.UNKNOWN_ERROR, "No task data returned"));
176
+ }
177
+ return success(result.data);
178
+ }
179
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Error codes for semantic error handling.
3
+ */
4
+ export declare const ErrorCode: {
5
+ readonly TASK_NOT_FOUND: "TASK_NOT_FOUND";
6
+ readonly PROJECT_NOT_FOUND: "PROJECT_NOT_FOUND";
7
+ readonly TAG_NOT_FOUND: "TAG_NOT_FOUND";
8
+ readonly FOLDER_NOT_FOUND: "FOLDER_NOT_FOUND";
9
+ readonly PERSPECTIVE_NOT_FOUND: "PERSPECTIVE_NOT_FOUND";
10
+ readonly DUPLICATE_NAME: "DUPLICATE_NAME";
11
+ readonly OMNIFOCUS_NOT_RUNNING: "OMNIFOCUS_NOT_RUNNING";
12
+ readonly INVALID_DATE_FORMAT: "INVALID_DATE_FORMAT";
13
+ readonly INVALID_ID_FORMAT: "INVALID_ID_FORMAT";
14
+ readonly INVALID_REPETITION_RULE: "INVALID_REPETITION_RULE";
15
+ readonly APPLESCRIPT_ERROR: "APPLESCRIPT_ERROR";
16
+ readonly JSON_PARSE_ERROR: "JSON_PARSE_ERROR";
17
+ readonly VALIDATION_ERROR: "VALIDATION_ERROR";
18
+ readonly UNKNOWN_ERROR: "UNKNOWN_ERROR";
19
+ };
20
+ export type ErrorCode = (typeof ErrorCode)[keyof typeof ErrorCode];
21
+ /**
22
+ * Structured error representation for CLI output.
23
+ */
24
+ export interface CliError {
25
+ code: ErrorCode;
26
+ message: string;
27
+ details?: string;
28
+ }
29
+ /**
30
+ * Create a CliError with the given code and message.
31
+ */
32
+ export declare function createError(code: ErrorCode, message: string, details?: string): CliError;
33
+ /**
34
+ * Parse an AppleScript error message into a structured CliError.
35
+ * Detects common error patterns and maps them to appropriate error codes.
36
+ */
37
+ export declare function parseAppleScriptError(rawError: string): CliError;
38
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;CAeZ,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,GACf,QAAQ,CAEV;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAoGhE"}
package/dist/errors.js ADDED
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Error codes for semantic error handling.
3
+ */
4
+ export const ErrorCode = {
5
+ TASK_NOT_FOUND: "TASK_NOT_FOUND",
6
+ PROJECT_NOT_FOUND: "PROJECT_NOT_FOUND",
7
+ TAG_NOT_FOUND: "TAG_NOT_FOUND",
8
+ FOLDER_NOT_FOUND: "FOLDER_NOT_FOUND",
9
+ PERSPECTIVE_NOT_FOUND: "PERSPECTIVE_NOT_FOUND",
10
+ DUPLICATE_NAME: "DUPLICATE_NAME",
11
+ OMNIFOCUS_NOT_RUNNING: "OMNIFOCUS_NOT_RUNNING",
12
+ INVALID_DATE_FORMAT: "INVALID_DATE_FORMAT",
13
+ INVALID_ID_FORMAT: "INVALID_ID_FORMAT",
14
+ INVALID_REPETITION_RULE: "INVALID_REPETITION_RULE",
15
+ APPLESCRIPT_ERROR: "APPLESCRIPT_ERROR",
16
+ JSON_PARSE_ERROR: "JSON_PARSE_ERROR",
17
+ VALIDATION_ERROR: "VALIDATION_ERROR",
18
+ UNKNOWN_ERROR: "UNKNOWN_ERROR",
19
+ };
20
+ /**
21
+ * Create a CliError with the given code and message.
22
+ */
23
+ export function createError(code, message, details) {
24
+ return details !== undefined ? { code, message, details } : { code, message };
25
+ }
26
+ /**
27
+ * Parse an AppleScript error message into a structured CliError.
28
+ * Detects common error patterns and maps them to appropriate error codes.
29
+ */
30
+ export function parseAppleScriptError(rawError) {
31
+ const errorLower = rawError.toLowerCase();
32
+ // OmniFocus not running
33
+ if (errorLower.includes("application isn't running") ||
34
+ errorLower.includes("connection is invalid") ||
35
+ errorLower.includes("not running")) {
36
+ return createError(ErrorCode.OMNIFOCUS_NOT_RUNNING, "OmniFocus is not running", rawError);
37
+ }
38
+ // Task not found
39
+ if (errorLower.includes("can't get first flattened task") ||
40
+ errorLower.includes("no task") ||
41
+ (errorLower.includes("task") && errorLower.includes("doesn't exist"))) {
42
+ return createError(ErrorCode.TASK_NOT_FOUND, "Task not found", rawError);
43
+ }
44
+ // Project not found
45
+ if (errorLower.includes("can't get first flattened project") ||
46
+ errorLower.includes("no project") ||
47
+ (errorLower.includes("project") && errorLower.includes("doesn't exist"))) {
48
+ return createError(ErrorCode.PROJECT_NOT_FOUND, "Project not found", rawError);
49
+ }
50
+ // Tag not found
51
+ if (errorLower.includes("can't get first flattened tag") ||
52
+ errorLower.includes("no tag") ||
53
+ (errorLower.includes("tag") && errorLower.includes("doesn't exist"))) {
54
+ return createError(ErrorCode.TAG_NOT_FOUND, "Tag not found", rawError);
55
+ }
56
+ // Folder not found
57
+ if (errorLower.includes("can't get first flattened folder") ||
58
+ errorLower.includes("can't get folder") ||
59
+ errorLower.includes("no folder") ||
60
+ (errorLower.includes("folder") && errorLower.includes("doesn't exist"))) {
61
+ return createError(ErrorCode.FOLDER_NOT_FOUND, "Folder not found", rawError);
62
+ }
63
+ // Perspective not found
64
+ if (errorLower.includes("can't get perspective") ||
65
+ errorLower.includes("no perspective") ||
66
+ (errorLower.includes("perspective") && errorLower.includes("doesn't exist"))) {
67
+ return createError(ErrorCode.PERSPECTIVE_NOT_FOUND, "Perspective not found", rawError);
68
+ }
69
+ // Invalid date
70
+ if (errorLower.includes("can't make") &&
71
+ errorLower.includes("into type date")) {
72
+ return createError(ErrorCode.INVALID_DATE_FORMAT, "Invalid date format", rawError);
73
+ }
74
+ // Generic AppleScript error
75
+ return createError(ErrorCode.APPLESCRIPT_ERROR, "AppleScript execution failed", rawError);
76
+ }
77
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Escape a string for safe use in AppleScript double-quoted strings.
3
+ * Handles backslashes and double quotes.
4
+ */
5
+ export declare function escapeAppleScript(str: string): string;
6
+ //# sourceMappingURL=escape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escape.d.ts","sourceRoot":"","sources":["../src/escape.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAErD"}
package/dist/escape.js ADDED
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Escape a string for safe use in AppleScript double-quoted strings.
3
+ * Handles backslashes and double quotes.
4
+ */
5
+ export function escapeAppleScript(str) {
6
+ return str.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
7
+ }
8
+ //# sourceMappingURL=escape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escape.js","sourceRoot":"","sources":["../src/escape.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACzD,CAAC"}
@@ -0,0 +1,30 @@
1
+ export type { CliOutput, CliError, CommandInfo, OFTask, OFProject, OFTag, OFPerspective, OFFolder, OFTaskWithChildren, InboxOptions, TaskQueryOptions, ProjectQueryOptions, TagQueryOptions, TaskUpdateOptions, CreateProjectOptions, CreateFolderOptions, FolderQueryOptions, CreateTagOptions, UpdateTagOptions, SubtaskQueryOptions, BatchResult, RepetitionRule, SearchOptions, ReviewResult, } from "./types.js";
2
+ export { ErrorCode, createError, parseAppleScriptError } from "./errors.js";
3
+ export type { ErrorCode as ErrorCodeType } from "./errors.js";
4
+ export { success, failure, failureMessage } from "./result.js";
5
+ export { escapeAppleScript } from "./escape.js";
6
+ export { validateId, validateDateString, validateTags, validateProjectName, validateFolderName, validateTagName, validateRepetitionRule, validateEstimatedMinutes, validateSearchQuery, } from "./validation.js";
7
+ export { runAppleScript, runAppleScriptFile, omniFocusScript, omniFocusScriptWithHelpers, jsonHelpers, } from "./applescript.js";
8
+ export type { AppleScriptResult } from "./applescript.js";
9
+ export { addToInbox } from "./commands/inbox.js";
10
+ export { queryTasks } from "./commands/tasks.js";
11
+ export { queryProjects } from "./commands/projects.js";
12
+ export { queryTags } from "./commands/tags.js";
13
+ export { completeTask } from "./commands/complete.js";
14
+ export type { CompleteResult } from "./commands/complete.js";
15
+ export { updateTask } from "./commands/update.js";
16
+ export { createProject } from "./commands/create-project.js";
17
+ export { createFolder, queryFolders } from "./commands/folders.js";
18
+ export { dropTask, deleteTask } from "./commands/drop.js";
19
+ export type { DropResult, DeleteResult } from "./commands/drop.js";
20
+ export { createTag, updateTag, deleteTag } from "./commands/tags-crud.js";
21
+ export type { DeleteTagResult } from "./commands/tags-crud.js";
22
+ export { createSubtask, querySubtasks, moveTaskToParent, } from "./commands/subtasks.js";
23
+ export { completeTasks, updateTasks, deleteTasks, } from "./commands/batch.js";
24
+ export type { BatchCompleteItem, BatchDeleteItem, } from "./commands/batch.js";
25
+ export { buildRRule, buildRepetitionRuleScript } from "./commands/repetition.js";
26
+ export { searchTasks } from "./commands/search.js";
27
+ export { listPerspectives, queryPerspective } from "./commands/perspectives.js";
28
+ export type { PerspectiveQueryOptions } from "./commands/perspectives.js";
29
+ export { reviewProject, queryProjectsForReview } from "./commands/review.js";
30
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,SAAS,EACT,QAAQ,EACR,WAAW,EACX,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EACb,QAAQ,EACR,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,WAAW,EACX,cAAc,EACd,aAAa,EACb,YAAY,GACb,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC5E,YAAY,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,aAAa,CAAC;AAG9D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,0BAA0B,EAC1B,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG1D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGlD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGnE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC1D,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGnE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAC1E,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D,OAAO,EACL,aAAa,EACb,aAAa,EACb,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,aAAa,EACb,WAAW,EACX,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,iBAAiB,EACjB,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,UAAU,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAGjF,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGnD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAChF,YAAY,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAG1E,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,36 @@
1
+ // Error handling
2
+ export { ErrorCode, createError, parseAppleScriptError } from "./errors.js";
3
+ // Result helpers
4
+ export { success, failure, failureMessage } from "./result.js";
5
+ // Utilities
6
+ export { escapeAppleScript } from "./escape.js";
7
+ export { validateId, validateDateString, validateTags, validateProjectName, validateFolderName, validateTagName, validateRepetitionRule, validateEstimatedMinutes, validateSearchQuery, } from "./validation.js";
8
+ // AppleScript utilities
9
+ export { runAppleScript, runAppleScriptFile, omniFocusScript, omniFocusScriptWithHelpers, jsonHelpers, } from "./applescript.js";
10
+ // Commands
11
+ export { addToInbox } from "./commands/inbox.js";
12
+ export { queryTasks } from "./commands/tasks.js";
13
+ export { queryProjects } from "./commands/projects.js";
14
+ export { queryTags } from "./commands/tags.js";
15
+ export { completeTask } from "./commands/complete.js";
16
+ export { updateTask } from "./commands/update.js";
17
+ // Phase 1: Projects & Folders
18
+ export { createProject } from "./commands/create-project.js";
19
+ export { createFolder, queryFolders } from "./commands/folders.js";
20
+ // Phase 1: Drop/Delete Tasks
21
+ export { dropTask, deleteTask } from "./commands/drop.js";
22
+ // Phase 1: Tags CRUD
23
+ export { createTag, updateTag, deleteTag } from "./commands/tags-crud.js";
24
+ // Phase 2: Subtasks
25
+ export { createSubtask, querySubtasks, moveTaskToParent, } from "./commands/subtasks.js";
26
+ // Phase 3: Batch Operations
27
+ export { completeTasks, updateTasks, deleteTasks, } from "./commands/batch.js";
28
+ // Phase 3: Repetition helpers
29
+ export { buildRRule, buildRepetitionRuleScript } from "./commands/repetition.js";
30
+ // Phase 4: Search
31
+ export { searchTasks } from "./commands/search.js";
32
+ // Phase 4: Perspectives
33
+ export { listPerspectives, queryPerspective } from "./commands/perspectives.js";
34
+ // Phase 4: Review
35
+ export { reviewProject, queryProjectsForReview } from "./commands/review.js";
36
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA4BA,iBAAiB;AACjB,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAG5E,iBAAiB;AACjB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE/D,YAAY;AACZ,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AAEzB,wBAAwB;AACxB,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,0BAA0B,EAC1B,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAG1B,WAAW;AACX,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,8BAA8B;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAEnE,6BAA6B;AAC7B,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAG1D,qBAAqB;AACrB,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAG1E,oBAAoB;AACpB,OAAO,EACL,aAAa,EACb,aAAa,EACb,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAEhC,4BAA4B;AAC5B,OAAO,EACL,aAAa,EACb,WAAW,EACX,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAM7B,8BAA8B;AAC9B,OAAO,EAAE,UAAU,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAEjF,kBAAkB;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,wBAAwB;AACxB,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAGhF,kBAAkB;AAClB,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC"}