@stephendolan/omnifocus-cli 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 (47) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +321 -0
  3. package/dist/commands/inbox.d.ts +3 -0
  4. package/dist/commands/inbox.d.ts.map +1 -0
  5. package/dist/commands/inbox.js +31 -0
  6. package/dist/commands/inbox.js.map +1 -0
  7. package/dist/commands/perspective.d.ts +3 -0
  8. package/dist/commands/perspective.d.ts.map +1 -0
  9. package/dist/commands/perspective.js +23 -0
  10. package/dist/commands/perspective.js.map +1 -0
  11. package/dist/commands/project.d.ts +3 -0
  12. package/dist/commands/project.d.ts.map +1 -0
  13. package/dist/commands/project.js +58 -0
  14. package/dist/commands/project.js.map +1 -0
  15. package/dist/commands/search.d.ts +3 -0
  16. package/dist/commands/search.d.ts.map +1 -0
  17. package/dist/commands/search.js +14 -0
  18. package/dist/commands/search.js.map +1 -0
  19. package/dist/commands/task.d.ts +3 -0
  20. package/dist/commands/task.d.ts.map +1 -0
  21. package/dist/commands/task.js +96 -0
  22. package/dist/commands/task.js.map +1 -0
  23. package/dist/index.d.ts +3 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +19 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/lib/command-utils.d.ts +4 -0
  28. package/dist/lib/command-utils.d.ts.map +1 -0
  29. package/dist/lib/command-utils.js +22 -0
  30. package/dist/lib/command-utils.js.map +1 -0
  31. package/dist/lib/display.d.ts +12 -0
  32. package/dist/lib/display.d.ts.map +1 -0
  33. package/dist/lib/display.js +168 -0
  34. package/dist/lib/display.js.map +1 -0
  35. package/dist/lib/filters.d.ts +14 -0
  36. package/dist/lib/filters.d.ts.map +1 -0
  37. package/dist/lib/filters.js +48 -0
  38. package/dist/lib/filters.js.map +1 -0
  39. package/dist/lib/omnifocus.d.ts +26 -0
  40. package/dist/lib/omnifocus.d.ts.map +1 -0
  41. package/dist/lib/omnifocus.js +457 -0
  42. package/dist/lib/omnifocus.js.map +1 -0
  43. package/dist/types.d.ts +70 -0
  44. package/dist/types.d.ts.map +1 -0
  45. package/dist/types.js +2 -0
  46. package/dist/types.js.map +1 -0
  47. package/package.json +41 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,321 @@
1
+ # OmniFocus CLI
2
+
3
+ A powerful command-line interface for OmniFocus on macOS, inspired by the GitHub CLI (`gh`).
4
+
5
+ ## Features
6
+
7
+ - 📝 **Task Management** - Create, list, update, and delete tasks
8
+ - 📂 **Project Management** - Manage projects and their organization
9
+ - 📥 **Inbox Management** - View and count inbox items
10
+ - 🔍 **Search** - Full-text search across tasks
11
+ - 🎨 **Beautiful Output** - Color-coded, formatted output with icons
12
+ - ⚡ **Fast** - Direct OmniFocus integration using JXA
13
+
14
+ ## Installation
15
+
16
+ ```bash
17
+ npm install
18
+ npm run build
19
+ npm link
20
+ ```
21
+
22
+ Now you can use the `of` command anywhere in your terminal.
23
+
24
+ ## Usage
25
+
26
+ ### Task Commands
27
+
28
+ #### List Tasks
29
+
30
+ ```bash
31
+ # List all active tasks
32
+ of task list
33
+
34
+ # List flagged tasks only
35
+ of task list --flagged
36
+
37
+ # Filter by project
38
+ of task list --project "Work"
39
+
40
+ # Filter by tag
41
+ of task list --tag "urgent"
42
+
43
+ # Include completed tasks
44
+ of task list --completed
45
+
46
+ # Show verbose details
47
+ of task list -v
48
+ ```
49
+
50
+ #### Create a Task
51
+
52
+ ```bash
53
+ # Simple task to inbox
54
+ of task create "Review pull requests"
55
+
56
+ # Task with project
57
+ of task create "Write documentation" --project "Website"
58
+
59
+ # Task with multiple options
60
+ of task create "Call dentist" \
61
+ --project "Personal" \
62
+ --tag "phone" \
63
+ --due "2024-01-15" \
64
+ --flagged \
65
+ --estimate 15
66
+ ```
67
+
68
+ #### Update a Task
69
+
70
+ ```bash
71
+ # Mark as completed
72
+ of task update "Review pull requests" --complete
73
+
74
+ # Flag a task
75
+ of task update "Call dentist" --flag
76
+
77
+ # Move to different project
78
+ of task update "Write docs" --project "Documentation"
79
+
80
+ # Update multiple properties
81
+ of task update "Email team" \
82
+ --name "Email team about launch" \
83
+ --due "2024-01-20" \
84
+ --flag
85
+ ```
86
+
87
+ #### View Task Details
88
+
89
+ ```bash
90
+ # View by name
91
+ of task view "Review pull requests"
92
+
93
+ # View by ID
94
+ of task view "kXu3B-LZfFH"
95
+ ```
96
+
97
+ #### Delete a Task
98
+
99
+ ```bash
100
+ of task delete "Old task"
101
+ of task rm "Old task" # alias
102
+ ```
103
+
104
+ ### Project Commands
105
+
106
+ #### List Projects
107
+
108
+ ```bash
109
+ # List all active projects
110
+ of project list
111
+
112
+ # Filter by folder
113
+ of project list --folder "Work"
114
+
115
+ # Filter by status
116
+ of project list --status "on hold"
117
+
118
+ # Include dropped projects
119
+ of project list --dropped
120
+
121
+ # Show verbose details
122
+ of project list -v
123
+ ```
124
+
125
+ #### Create a Project
126
+
127
+ ```bash
128
+ # Simple project
129
+ of project create "Website Redesign"
130
+
131
+ # Project with folder and tags
132
+ of project create "Q1 Planning" \
133
+ --folder "Work" \
134
+ --tag "quarterly" \
135
+ --sequential
136
+ ```
137
+
138
+ #### View Project Details
139
+
140
+ ```bash
141
+ of project view "Website Redesign"
142
+ ```
143
+
144
+ #### Delete a Project
145
+
146
+ ```bash
147
+ of project delete "Old Project"
148
+ of project rm "Old Project" # alias
149
+ ```
150
+
151
+ ### Inbox Commands
152
+
153
+ ```bash
154
+ # List inbox items
155
+ of inbox list
156
+
157
+ # Get inbox count
158
+ of inbox count
159
+ ```
160
+
161
+ ### Search
162
+
163
+ ```bash
164
+ # Search for tasks
165
+ of search "documentation"
166
+
167
+ # Show verbose results
168
+ of search "meeting" -v
169
+ ```
170
+
171
+ ## Command Reference
172
+
173
+ ### Global Options
174
+
175
+ - `-h, --help` - Show help for any command
176
+ - `-V, --version` - Show version number
177
+
178
+ ### Task Filters
179
+
180
+ - `-f, --flagged` - Show only flagged tasks
181
+ - `-p, --project <name>` - Filter by project name
182
+ - `-t, --tag <name>` - Filter by tag name
183
+ - `-c, --completed` - Include completed tasks
184
+ - `-v, --verbose` - Show detailed information
185
+
186
+ ### Task Options
187
+
188
+ - `--project <name>` - Assign to project
189
+ - `--note <text>` - Add note
190
+ - `--tag <tags...>` - Add tags (space-separated)
191
+ - `--due <date>` - Set due date (ISO format: YYYY-MM-DD)
192
+ - `--defer <date>` - Set defer date (ISO format)
193
+ - `--flagged` - Flag the task
194
+ - `--estimate <minutes>` - Set time estimate in minutes
195
+
196
+ ### Project Options
197
+
198
+ - `--folder <name>` - Assign to folder
199
+ - `--note <text>` - Add note
200
+ - `--tag <tags...>` - Add tags (space-separated)
201
+ - `--sequential` - Make it a sequential project
202
+ - `--status <status>` - Set status (active, on hold, dropped)
203
+
204
+ ## Output Legend
205
+
206
+ ### Task List
207
+
208
+ - `⭐` - Flagged task
209
+ - `✓` - Completed task
210
+ - `○` - Incomplete task
211
+ - `[Project]` - Project name (cyan)
212
+ - `#tag` - Tags (magenta)
213
+ - `due X ago` - Overdue tasks (red)
214
+ - `due in X` - Upcoming tasks (gray)
215
+ - `[Xh Xm]` - Time estimate (gray)
216
+
217
+ ### Project List
218
+
219
+ - `●` - Status indicator (green=active, yellow=on hold, red=dropped)
220
+ - `(X/Y)` - Remaining/Total tasks
221
+ - `[sequential]` - Sequential project indicator (blue)
222
+ - `[Folder]` - Folder name (cyan)
223
+ - `#tag` - Tags (magenta)
224
+
225
+ ## Examples
226
+
227
+ ### Daily Workflow
228
+
229
+ ```bash
230
+ # Check inbox
231
+ of inbox count
232
+
233
+ # List today's tasks
234
+ of task list --flagged
235
+
236
+ # Add a quick task
237
+ of task create "Buy groceries" --tag "errands"
238
+
239
+ # Review project status
240
+ of project list
241
+ ```
242
+
243
+ ### Weekly Review
244
+
245
+ ```bash
246
+ # Check all projects
247
+ of project list -v
248
+
249
+ # Review flagged items
250
+ of task list --flagged -v
251
+
252
+ # Search for specific topics
253
+ of search "meeting"
254
+ ```
255
+
256
+ ### Task Management
257
+
258
+ ```bash
259
+ # Create a task in a project with details
260
+ of task create "Draft quarterly report" \
261
+ --project "Management" \
262
+ --tag "writing" \
263
+ --due "2024-02-01" \
264
+ --estimate 120 \
265
+ --note "Include metrics from Q4 dashboard"
266
+
267
+ # Complete a task
268
+ of task update "Draft quarterly report" --complete
269
+
270
+ # Reschedule a task
271
+ of task update "Team meeting prep" --due "2024-01-22"
272
+ ```
273
+
274
+ ## Requirements
275
+
276
+ - macOS (OmniFocus is Mac-only)
277
+ - OmniFocus installed and running
278
+ - Node.js 18+
279
+
280
+ ## How It Works
281
+
282
+ The CLI uses JavaScript for Automation (JXA) to communicate directly with OmniFocus via AppleScript. This provides:
283
+
284
+ - Fast, direct access to your OmniFocus data
285
+ - No need for sync or external services
286
+ - Full access to OmniFocus features
287
+ - Real-time updates
288
+
289
+ ## Development
290
+
291
+ ```bash
292
+ # Install dependencies
293
+ npm install
294
+
295
+ # Build TypeScript
296
+ npm run build
297
+
298
+ # Watch mode for development
299
+ npm run dev
300
+
301
+ # Link for local testing
302
+ npm link
303
+ ```
304
+
305
+ ## Troubleshooting
306
+
307
+ ### Permission Issues
308
+
309
+ When you first run a command, macOS will ask for permission to control OmniFocus. Make sure to grant this permission in System Settings > Privacy & Security > Automation.
310
+
311
+ ### Task Not Found
312
+
313
+ Use the exact task name or ID. For IDs, you can get them using the `-v` (verbose) flag with list commands.
314
+
315
+ ### Date Format
316
+
317
+ Use ISO format for dates: `YYYY-MM-DD` or full ISO strings like `2024-01-15T10:00:00`.
318
+
319
+ ## License
320
+
321
+ MIT
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createInboxCommand(): Command;
3
+ //# sourceMappingURL=inbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../../src/commands/inbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,kBAAkB,IAAI,OAAO,CAqC5C"}
@@ -0,0 +1,31 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import { displayTaskList, pluralize } from '../lib/display.js';
4
+ import { executeOmniFocusCommand } from '../lib/command-utils.js';
5
+ export function createInboxCommand() {
6
+ const command = new Command('inbox');
7
+ command.description('Manage OmniFocus inbox');
8
+ command
9
+ .command('list')
10
+ .alias('ls')
11
+ .description('List inbox tasks')
12
+ .option('-v, --verbose', 'Show detailed information')
13
+ .action(async (options) => {
14
+ await executeOmniFocusCommand('Loading inbox...', (of) => of.listInboxTasks(), (tasks) => displayTaskList(tasks, options.verbose), 'Failed to load inbox');
15
+ });
16
+ command
17
+ .command('count')
18
+ .description('Get inbox count')
19
+ .action(async () => {
20
+ await executeOmniFocusCommand('Counting inbox items...', (of) => of.getInboxCount(), (count) => {
21
+ if (count === 0) {
22
+ console.log(chalk.green('✓ Inbox is empty'));
23
+ }
24
+ else {
25
+ console.log(chalk.yellow(`📥 ${pluralize(count, 'item')} in inbox`));
26
+ }
27
+ }, 'Failed to get inbox count');
28
+ });
29
+ return command;
30
+ }
31
+ //# sourceMappingURL=inbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../src/commands/inbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE,MAAM,UAAU,kBAAkB;IAChC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACrC,OAAO,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;IAE9C,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,KAAK,CAAC,IAAI,CAAC;SACX,WAAW,CAAC,kBAAkB,CAAC;SAC/B,MAAM,CAAC,eAAe,EAAE,2BAA2B,CAAC;SACpD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,uBAAuB,CAC3B,kBAAkB,EAClB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,cAAc,EAAE,EAC3B,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,EAClD,sBAAsB,CACvB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,iBAAiB,CAAC;SAC9B,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,uBAAuB,CAC3B,yBAAyB,EACzB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,aAAa,EAAE,EAC1B,CAAC,KAAK,EAAE,EAAE;YACR,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;YACvE,CAAC;QACH,CAAC,EACD,2BAA2B,CAC5B,CAAC;IACJ,CAAC,CAAC,CAAC;IAEL,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createPerspectiveCommand(): Command;
3
+ //# sourceMappingURL=perspective.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"perspective.d.ts","sourceRoot":"","sources":["../../src/commands/perspective.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,wBAAwB,IAAI,OAAO,CA+BlD"}
@@ -0,0 +1,23 @@
1
+ import { Command } from 'commander';
2
+ import { displayTaskList, displayPerspectiveList } from '../lib/display.js';
3
+ import { executeOmniFocusCommand } from '../lib/command-utils.js';
4
+ export function createPerspectiveCommand() {
5
+ const command = new Command('perspective');
6
+ command.description('Manage OmniFocus perspectives');
7
+ command
8
+ .command('list')
9
+ .alias('ls')
10
+ .description('List all perspectives')
11
+ .action(async () => {
12
+ await executeOmniFocusCommand('Loading perspectives...', (of) => of.listPerspectives(), (perspectives) => displayPerspectiveList(perspectives), 'Failed to load perspectives');
13
+ });
14
+ command
15
+ .command('view <name>')
16
+ .description('View tasks in a perspective')
17
+ .option('-v, --verbose', 'Show detailed information')
18
+ .action(async (name, options) => {
19
+ await executeOmniFocusCommand(`Loading perspective "${name}"...`, (of) => of.getPerspectiveTasks(name), (tasks) => displayTaskList(tasks, options.verbose), 'Failed to load perspective');
20
+ });
21
+ return command;
22
+ }
23
+ //# sourceMappingURL=perspective.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"perspective.js","sourceRoot":"","sources":["../../src/commands/perspective.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE,MAAM,UAAU,wBAAwB;IACtC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IAC3C,OAAO,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC;IAErD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,KAAK,CAAC,IAAI,CAAC;SACX,WAAW,CAAC,uBAAuB,CAAC;SACpC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,uBAAuB,CAC3B,yBAAyB,EACzB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,gBAAgB,EAAE,EAC7B,CAAC,YAAY,EAAE,EAAE,CAAC,sBAAsB,CAAC,YAAY,CAAC,EACtD,6BAA6B,CAC9B,CAAC;IACJ,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,6BAA6B,CAAC;SAC1C,MAAM,CAAC,eAAe,EAAE,2BAA2B,CAAC;SACpD,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QAC9B,MAAM,uBAAuB,CAC3B,wBAAwB,IAAI,MAAM,EAClC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,EACpC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,EAClD,4BAA4B,CAC7B,CAAC;IACJ,CAAC,CAAC,CAAC;IAEL,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createProjectCommand(): Command;
3
+ //# sourceMappingURL=project.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/commands/project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,oBAAoB,IAAI,OAAO,CA+E9C"}
@@ -0,0 +1,58 @@
1
+ import { Command } from 'commander';
2
+ import { displayProjectList, displayProjectDetails, displayWithSuccessMessage, displaySuccessMessage } from '../lib/display.js';
3
+ import { executeOmniFocusCommand } from '../lib/command-utils.js';
4
+ export function createProjectCommand() {
5
+ const command = new Command('project');
6
+ command.description('Manage OmniFocus projects');
7
+ command
8
+ .command('list')
9
+ .alias('ls')
10
+ .description('List projects')
11
+ .option('-f, --folder <name>', 'Filter by folder')
12
+ .option('-s, --status <status>', 'Filter by status (active, on hold, dropped)')
13
+ .option('-d, --dropped', 'Include dropped projects')
14
+ .option('-v, --verbose', 'Show detailed information')
15
+ .action(async (options) => {
16
+ await executeOmniFocusCommand('Loading projects...', (of) => {
17
+ const filters = {
18
+ includeDropped: options.dropped,
19
+ ...(options.folder && { folder: options.folder }),
20
+ ...(options.status && { status: options.status }),
21
+ };
22
+ return of.listProjects(filters);
23
+ }, (projects) => displayProjectList(projects, options.verbose), 'Failed to load projects');
24
+ });
25
+ command
26
+ .command('create <name>')
27
+ .description('Create a new project')
28
+ .option('-f, --folder <name>', 'Assign to folder')
29
+ .option('-n, --note <text>', 'Add note')
30
+ .option('-t, --tag <tags...>', 'Add tags')
31
+ .option('-s, --sequential', 'Make it a sequential project')
32
+ .option('--status <status>', 'Set status (active, on hold, dropped)')
33
+ .action(async (name, options) => {
34
+ await executeOmniFocusCommand('Creating project...', (of) => of.createProject({
35
+ name,
36
+ note: options.note,
37
+ folder: options.folder,
38
+ tags: options.tag,
39
+ sequential: options.sequential,
40
+ status: options.status,
41
+ }), (project) => displayWithSuccessMessage('Project created successfully', project, displayProjectDetails), 'Failed to create project');
42
+ });
43
+ command
44
+ .command('delete <idOrName>')
45
+ .alias('rm')
46
+ .description('Delete a project')
47
+ .action(async (idOrName) => {
48
+ await executeOmniFocusCommand('Deleting project...', (of) => of.deleteProject(idOrName), () => displaySuccessMessage('Project deleted successfully'), 'Failed to delete project');
49
+ });
50
+ command
51
+ .command('view <idOrName>')
52
+ .description('View project details')
53
+ .action(async (idOrName) => {
54
+ await executeOmniFocusCommand('Loading project...', (of) => of.getProject(idOrName), (project) => displayProjectDetails(project), 'Failed to load project');
55
+ });
56
+ return command;
57
+ }
58
+ //# sourceMappingURL=project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/commands/project.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createSearchCommand(): Command;
3
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,mBAAmB,IAAI,OAAO,CAgB7C"}
@@ -0,0 +1,14 @@
1
+ import { Command } from 'commander';
2
+ import { displayTaskList } from '../lib/display.js';
3
+ import { executeOmniFocusCommand } from '../lib/command-utils.js';
4
+ export function createSearchCommand() {
5
+ const command = new Command('search');
6
+ command.description('Search tasks by name or note');
7
+ command.argument('<query>', 'Search query');
8
+ command.option('-v, --verbose', 'Show detailed information');
9
+ command.action(async (query, options) => {
10
+ await executeOmniFocusCommand('Searching...', (of) => of.searchTasks(query), (tasks) => displayTaskList(tasks, options.verbose), 'Search failed');
11
+ });
12
+ return command;
13
+ }
14
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE,MAAM,UAAU,mBAAmB;IACjC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtC,OAAO,CAAC,WAAW,CAAC,8BAA8B,CAAC,CAAC;IACpD,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAC5C,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,2BAA2B,CAAC,CAAC;IAE7D,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACtC,MAAM,uBAAuB,CAC3B,cAAc,EACd,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,EAC7B,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,EAClD,eAAe,CAChB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createTaskCommand(): Command;
3
+ //# sourceMappingURL=task.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/commands/task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,iBAAiB,IAAI,OAAO,CA4H3C"}
@@ -0,0 +1,96 @@
1
+ import { Command } from 'commander';
2
+ import { displayTaskList, displayTaskDetails, displayWithSuccessMessage, displaySuccessMessage } from '../lib/display.js';
3
+ import { executeOmniFocusCommand } from '../lib/command-utils.js';
4
+ export function createTaskCommand() {
5
+ const command = new Command('task');
6
+ command.description('Manage OmniFocus tasks');
7
+ command
8
+ .command('list')
9
+ .alias('ls')
10
+ .description('List tasks')
11
+ .option('-f, --flagged', 'Show only flagged tasks')
12
+ .option('-p, --project <name>', 'Filter by project')
13
+ .option('-t, --tag <name>', 'Filter by tag')
14
+ .option('-c, --completed', 'Include completed tasks')
15
+ .option('-v, --verbose', 'Show detailed information')
16
+ .action(async (options) => {
17
+ await executeOmniFocusCommand('Loading tasks...', (of) => {
18
+ const filters = {
19
+ includeCompleted: options.completed,
20
+ ...(options.flagged && { flagged: true }),
21
+ ...(options.project && { project: options.project }),
22
+ ...(options.tag && { tag: options.tag }),
23
+ };
24
+ return of.listTasks(filters);
25
+ }, (tasks) => displayTaskList(tasks, options.verbose), 'Failed to load tasks');
26
+ });
27
+ command
28
+ .command('create <name>')
29
+ .description('Create a new task')
30
+ .option('-p, --project <name>', 'Assign to project')
31
+ .option('-n, --note <text>', 'Add note')
32
+ .option('-t, --tag <tags...>', 'Add tags')
33
+ .option('-d, --due <date>', 'Set due date (ISO format)')
34
+ .option('-D, --defer <date>', 'Set defer date (ISO format)')
35
+ .option('-f, --flagged', 'Flag the task')
36
+ .option('-e, --estimate <minutes>', 'Estimated time in minutes', parseInt)
37
+ .action(async (name, options) => {
38
+ await executeOmniFocusCommand('Creating task...', (of) => of.createTask({
39
+ name,
40
+ note: options.note,
41
+ project: options.project,
42
+ tags: options.tag,
43
+ due: options.due,
44
+ defer: options.defer,
45
+ flagged: options.flagged,
46
+ estimatedMinutes: options.estimate,
47
+ }), (task) => displayWithSuccessMessage('Task created successfully', task, displayTaskDetails), 'Failed to create task');
48
+ });
49
+ command
50
+ .command('update <idOrName>')
51
+ .description('Update an existing task')
52
+ .option('-n, --name <name>', 'New name')
53
+ .option('--note <text>', 'New note')
54
+ .option('-p, --project <name>', 'Move to project')
55
+ .option('-t, --tag <tags...>', 'Replace tags')
56
+ .option('-d, --due <date>', 'Set due date (ISO format)')
57
+ .option('-D, --defer <date>', 'Set defer date (ISO format)')
58
+ .option('-f, --flag', 'Flag the task')
59
+ .option('-F, --unflag', 'Unflag the task')
60
+ .option('-c, --complete', 'Mark as completed')
61
+ .option('-C, --incomplete', 'Mark as incomplete')
62
+ .option('-e, --estimate <minutes>', 'Estimated time in minutes', parseInt)
63
+ .action(async (idOrName, options) => {
64
+ await executeOmniFocusCommand('Updating task...', (of) => {
65
+ const updates = {
66
+ ...(options.name && { name: options.name }),
67
+ ...(options.note !== undefined && { note: options.note }),
68
+ ...(options.project && { project: options.project }),
69
+ ...(options.tag && { tags: options.tag }),
70
+ ...(options.due !== undefined && { due: options.due }),
71
+ ...(options.defer !== undefined && { defer: options.defer }),
72
+ ...(options.flag && { flagged: true }),
73
+ ...(options.unflag && { flagged: false }),
74
+ ...(options.complete && { completed: true }),
75
+ ...(options.incomplete && { completed: false }),
76
+ ...(options.estimate !== undefined && { estimatedMinutes: options.estimate }),
77
+ };
78
+ return of.updateTask(idOrName, updates);
79
+ }, (task) => displayWithSuccessMessage('Task updated successfully', task, displayTaskDetails), 'Failed to update task');
80
+ });
81
+ command
82
+ .command('delete <idOrName>')
83
+ .alias('rm')
84
+ .description('Delete a task')
85
+ .action(async (idOrName) => {
86
+ await executeOmniFocusCommand('Deleting task...', (of) => of.deleteTask(idOrName), () => displaySuccessMessage('Task deleted successfully'), 'Failed to delete task');
87
+ });
88
+ command
89
+ .command('view <idOrName>')
90
+ .description('View task details')
91
+ .action(async (idOrName) => {
92
+ await executeOmniFocusCommand('Loading task...', (of) => of.getTask(idOrName), (task) => displayTaskDetails(task), 'Failed to load task');
93
+ });
94
+ return command;
95
+ }
96
+ //# sourceMappingURL=task.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/commands/task.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}