@doist/todoist-cli 1.42.0 → 1.43.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 (77) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/commands/reminder/get.d.ts +7 -0
  3. package/dist/commands/reminder/get.d.ts.map +1 -0
  4. package/dist/commands/reminder/get.js +19 -0
  5. package/dist/commands/reminder/get.js.map +1 -0
  6. package/dist/commands/reminder/helpers.d.ts +5 -1
  7. package/dist/commands/reminder/helpers.d.ts.map +1 -1
  8. package/dist/commands/reminder/helpers.js +37 -0
  9. package/dist/commands/reminder/helpers.js.map +1 -1
  10. package/dist/commands/reminder/index.d.ts.map +1 -1
  11. package/dist/commands/reminder/index.js +15 -0
  12. package/dist/commands/reminder/index.js.map +1 -1
  13. package/dist/commands/reminder/location/add.d.ts +12 -0
  14. package/dist/commands/reminder/location/add.d.ts.map +1 -0
  15. package/dist/commands/reminder/location/add.js +60 -0
  16. package/dist/commands/reminder/location/add.js.map +1 -0
  17. package/dist/commands/reminder/location/delete.d.ts +7 -0
  18. package/dist/commands/reminder/location/delete.d.ts.map +1 -0
  19. package/dist/commands/reminder/location/delete.js +23 -0
  20. package/dist/commands/reminder/location/delete.js.map +1 -0
  21. package/dist/commands/reminder/location/get.d.ts +7 -0
  22. package/dist/commands/reminder/location/get.d.ts.map +1 -0
  23. package/dist/commands/reminder/location/get.js +18 -0
  24. package/dist/commands/reminder/location/get.js.map +1 -0
  25. package/dist/commands/reminder/location/index.d.ts +3 -0
  26. package/dist/commands/reminder/location/index.d.ts.map +1 -0
  27. package/dist/commands/reminder/location/index.js +72 -0
  28. package/dist/commands/reminder/location/index.js.map +1 -0
  29. package/dist/commands/reminder/location/update.d.ts +12 -0
  30. package/dist/commands/reminder/location/update.d.ts.map +1 -0
  31. package/dist/commands/reminder/location/update.js +45 -0
  32. package/dist/commands/reminder/location/update.js.map +1 -0
  33. package/dist/commands/workspace/activity.d.ts +9 -0
  34. package/dist/commands/workspace/activity.d.ts.map +1 -0
  35. package/dist/commands/workspace/activity.js +93 -0
  36. package/dist/commands/workspace/activity.js.map +1 -0
  37. package/dist/commands/workspace/create.d.ts +14 -0
  38. package/dist/commands/workspace/create.d.ts.map +1 -0
  39. package/dist/commands/workspace/create.js +58 -0
  40. package/dist/commands/workspace/create.js.map +1 -0
  41. package/dist/commands/workspace/delete.d.ts +5 -0
  42. package/dist/commands/workspace/delete.d.ts.map +1 -0
  43. package/dist/commands/workspace/delete.js +31 -0
  44. package/dist/commands/workspace/delete.js.map +1 -0
  45. package/dist/commands/workspace/helpers.d.ts +24 -1
  46. package/dist/commands/workspace/helpers.d.ts.map +1 -1
  47. package/dist/commands/workspace/helpers.js +113 -1
  48. package/dist/commands/workspace/helpers.js.map +1 -1
  49. package/dist/commands/workspace/index.d.ts.map +1 -1
  50. package/dist/commands/workspace/index.js +115 -1
  51. package/dist/commands/workspace/index.js.map +1 -1
  52. package/dist/commands/workspace/update.d.ts +15 -0
  53. package/dist/commands/workspace/update.d.ts.map +1 -0
  54. package/dist/commands/workspace/update.js +75 -0
  55. package/dist/commands/workspace/update.js.map +1 -0
  56. package/dist/commands/workspace/user-tasks.d.ts +9 -0
  57. package/dist/commands/workspace/user-tasks.d.ts.map +1 -0
  58. package/dist/commands/workspace/user-tasks.js +77 -0
  59. package/dist/commands/workspace/user-tasks.js.map +1 -0
  60. package/dist/lib/api/core.d.ts.map +1 -1
  61. package/dist/lib/api/core.js +13 -0
  62. package/dist/lib/api/core.js.map +1 -1
  63. package/dist/lib/api/reminders.d.ts +21 -0
  64. package/dist/lib/api/reminders.d.ts.map +1 -1
  65. package/dist/lib/api/reminders.js +37 -1
  66. package/dist/lib/api/reminders.js.map +1 -1
  67. package/dist/lib/errors.d.ts +1 -1
  68. package/dist/lib/errors.d.ts.map +1 -1
  69. package/dist/lib/errors.js.map +1 -1
  70. package/dist/lib/permissions.d.ts.map +1 -1
  71. package/dist/lib/permissions.js +4 -0
  72. package/dist/lib/permissions.js.map +1 -1
  73. package/dist/lib/skills/content.d.ts +1 -1
  74. package/dist/lib/skills/content.d.ts.map +1 -1
  75. package/dist/lib/skills/content.js +13 -1
  76. package/dist/lib/skills/content.js.map +1 -1
  77. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## [1.43.0](https://github.com/Doist/todoist-cli/compare/v1.42.0...v1.43.0) (2026-04-12)
2
+
3
+ ### Features
4
+
5
+ * add location reminder commands and single-reminder get ([#254](https://github.com/Doist/todoist-cli/issues/254)) ([cc807e9](https://github.com/Doist/todoist-cli/commit/cc807e952e37df1478a01e8cd6868df5b848048a))
6
+ * add workspace CRUD and reporting commands ([#255](https://github.com/Doist/todoist-cli/issues/255)) ([26ec672](https://github.com/Doist/todoist-cli/commit/26ec67215c84f68b1b86ebcb1368e38e7003c6de))
7
+
1
8
  ## [1.42.0](https://github.com/Doist/todoist-cli/compare/v1.41.0...v1.42.0) (2026-04-11)
2
9
 
3
10
  ### Features
@@ -0,0 +1,7 @@
1
+ interface GetOptions {
2
+ json?: boolean;
3
+ full?: boolean;
4
+ }
5
+ export declare function getReminderCmd(reminderId: string, options: GetOptions): Promise<void>;
6
+ export {};
7
+ //# sourceMappingURL=get.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../src/commands/reminder/get.ts"],"names":[],"mappings":"AAMA,UAAU,UAAU;IAChB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,IAAI,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,wBAAsB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB3F"}
@@ -0,0 +1,19 @@
1
+ import chalk from 'chalk';
2
+ import { getReminderById } from '../../lib/api/reminders.js';
3
+ import { formatJson } from '../../lib/output.js';
4
+ import { lenientIdRef } from '../../lib/refs.js';
5
+ import { formatReminderTime } from './helpers.js';
6
+ export async function getReminderCmd(reminderId, options) {
7
+ const id = lenientIdRef(reminderId, 'reminder');
8
+ const reminder = await getReminderById(id);
9
+ if (options.json) {
10
+ console.log(formatJson(reminder, 'reminder', options.full));
11
+ return;
12
+ }
13
+ const idStr = chalk.dim(reminder.id);
14
+ const type = chalk.cyan('[time]');
15
+ const time = formatReminderTime(reminder);
16
+ console.log(`${idStr} ${type} ${time}`);
17
+ console.log(chalk.dim(`Task: ${reminder.itemId}`));
18
+ }
19
+ //# sourceMappingURL=get.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/commands/reminder/get.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAOjD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,UAAkB,EAAE,OAAmB;IACxE,MAAM,EAAE,GAAG,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;IAC/C,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,EAAE,CAAC,CAAA;IAE1C,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;QAC3D,OAAM;IACV,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IACpC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACjC,MAAM,IAAI,GAAG,kBAAkB,CAC3B,QAIC,CACJ,CAAA;IACD,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,CAAC,CAAA;IACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;AACtD,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { LocationReminder, Reminder } from '@doist/todoist-sdk';
1
+ import { type LocationReminder, type LocationTrigger, type Reminder } from '@doist/todoist-sdk';
2
2
  import type { ReminderDue } from '../../lib/api/reminders.js';
3
3
  export type ReminderTypeFilter = 'time' | 'location';
4
4
  interface ReminderLike {
@@ -11,5 +11,9 @@ interface ReminderLike {
11
11
  export declare function formatReminderTime(reminder: ReminderLike): string;
12
12
  export declare function formatLocationReminderRow(reminder: LocationReminder): string;
13
13
  export declare function parseDateTime(value: string): ReminderDue;
14
+ export declare function parseTrigger(value: string): LocationTrigger;
15
+ export declare function parseLat(value: string): string;
16
+ export declare function parseLong(value: string): string;
17
+ export declare function parseRadius(value: string): number;
14
18
  export {};
15
19
  //# sourceMappingURL=helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/commands/reminder/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAI7D,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,UAAU,CAAA;AAEpD,UAAU,YAAY;IAClB,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,GAAG,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CACzB;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAYjE;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CAG5E;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAsBxD"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/commands/reminder/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,QAAQ,EAChB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAI7D,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,UAAU,CAAA;AAEpD,UAAU,YAAY;IAClB,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,GAAG,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CACzB;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAYjE;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CAG5E;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAsBxD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CAO3D;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAS9C;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ/C;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQjD"}
@@ -1,3 +1,4 @@
1
+ import { LOCATION_TRIGGERS, } from '@doist/todoist-sdk';
1
2
  import { formatDuration } from '../../lib/duration.js';
2
3
  import { CliError } from '../../lib/errors.js';
3
4
  export function formatReminderTime(reminder) {
@@ -36,4 +37,40 @@ export function parseDateTime(value) {
36
37
  'Examples: 2024-01-15 10:00, 2024-01-15T10:00:00, 2024-01-15',
37
38
  ]);
38
39
  }
40
+ export function parseTrigger(value) {
41
+ if (!LOCATION_TRIGGERS.includes(value)) {
42
+ throw new CliError('INVALID_TRIGGER', `Invalid trigger: "${value}"`, [
43
+ `Must be one of: ${LOCATION_TRIGGERS.join(', ')}`,
44
+ ]);
45
+ }
46
+ return value;
47
+ }
48
+ export function parseLat(value) {
49
+ const n = Number(value);
50
+ if (!Number.isFinite(n) || n < -90 || n > 90) {
51
+ throw new CliError('INVALID_LAT', `Invalid latitude: "${value}"`, [
52
+ 'Latitude must be a number between -90 and 90',
53
+ ]);
54
+ }
55
+ // Pass through the original string — the SDK expects a string
56
+ return value;
57
+ }
58
+ export function parseLong(value) {
59
+ const n = Number(value);
60
+ if (!Number.isFinite(n) || n < -180 || n > 180) {
61
+ throw new CliError('INVALID_LONG', `Invalid longitude: "${value}"`, [
62
+ 'Longitude must be a number between -180 and 180',
63
+ ]);
64
+ }
65
+ return value;
66
+ }
67
+ export function parseRadius(value) {
68
+ const n = Number(value);
69
+ if (!Number.isFinite(n) || !Number.isInteger(n) || n <= 0) {
70
+ throw new CliError('INVALID_RADIUS', `Invalid radius: "${value}"`, [
71
+ 'Radius must be a positive integer (meters)',
72
+ ]);
73
+ }
74
+ return n;
75
+ }
39
76
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/commands/reminder/helpers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAU9C,MAAM,UAAU,kBAAkB,CAAC,QAAsB;IACrD,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,IAAI,QAAQ,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC;QAChE,OAAO,GAAG,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAA;IAChE,CAAC;IACD,IAAI,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAA;QAC9B,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAA;QACtD,CAAC;QACD,OAAO,MAAM,IAAI,EAAE,CAAA;IACvB,CAAC;IACD,OAAO,cAAc,CAAA;AACzB,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,QAA0B;IAChE,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAA;IAC5E,OAAO,GAAG,QAAQ,CAAC,IAAI,KAAK,OAAO,QAAQ,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,OAAO,MAAM,QAAQ,CAAC,MAAM,GAAG,CAAA;AAC1G,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAa;IACvC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAE5B,kCAAkC;IAClC,IAAI,gCAAgC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACjD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;IAC5B,CAAC;IAED,iCAAiC;IACjC,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAA;IACzE,IAAI,UAAU,EAAE,CAAC;QACb,OAAO,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAA;IAC3D,CAAC;IAED,wBAAwB;IACxB,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;IAC5B,CAAC;IAED,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,6BAA6B,KAAK,GAAG,EAAE;QAC1E,6DAA6D;KAChE,CAAC,CAAA;AACN,CAAC"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/commands/reminder/helpers.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/reminder/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAUnC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqG9D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/reminder/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAYnC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoH9D"}
@@ -2,7 +2,9 @@ import { CURSOR_DESCRIPTION } from '../../lib/constants.js';
2
2
  import { CliError } from '../../lib/errors.js';
3
3
  import { addReminder } from './add.js';
4
4
  import { deleteReminderCmd } from './delete.js';
5
+ import { getReminderCmd } from './get.js';
5
6
  import { listReminders } from './list.js';
7
+ import { registerLocationReminderCommand } from './location/index.js';
6
8
  import { updateReminderCmd } from './update.js';
7
9
  export function registerReminderCommand(program) {
8
10
  const reminder = program.command('reminder').description('Manage task reminders');
@@ -73,5 +75,18 @@ export function registerReminderCommand(program) {
73
75
  }
74
76
  return deleteReminderCmd(id, options);
75
77
  });
78
+ const getCmd = reminder
79
+ .command('get [id]')
80
+ .description('Get a single time-based reminder by ID')
81
+ .option('--json', 'Output as JSON')
82
+ .option('--full', 'Include all fields in JSON output')
83
+ .action((id, options) => {
84
+ if (!id) {
85
+ getCmd.help();
86
+ return;
87
+ }
88
+ return getReminderCmd(id, options);
89
+ });
90
+ registerLocationReminderCommand(reminder);
76
91
  }
77
92
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/reminder/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/reminder/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ interface AddOptions {
2
+ name?: string;
3
+ lat?: string;
4
+ long?: string;
5
+ trigger?: string;
6
+ radius?: string;
7
+ json?: boolean;
8
+ dryRun?: boolean;
9
+ }
10
+ export declare function addLocationReminderCmd(taskRef: string, options: AddOptions): Promise<void>;
11
+ export {};
12
+ //# sourceMappingURL=add.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../../src/commands/reminder/location/add.ts"],"names":[],"mappings":"AAeA,UAAU,UAAU;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAyDhG"}
@@ -0,0 +1,60 @@
1
+ import chalk from 'chalk';
2
+ import { getApi } from '../../../lib/api/core.js';
3
+ import { addLocationReminder as apiAddLocationReminder } from '../../../lib/api/reminders.js';
4
+ import { CliError } from '../../../lib/errors.js';
5
+ import { isQuiet } from '../../../lib/global-args.js';
6
+ import { formatJson, printDryRun } from '../../../lib/output.js';
7
+ import { resolveTaskRef } from '../../../lib/refs.js';
8
+ import { formatLocationReminderRow, parseLat, parseLong, parseRadius, parseTrigger, } from '../helpers.js';
9
+ export async function addLocationReminderCmd(taskRef, options) {
10
+ if (!options.name) {
11
+ throw new CliError('MISSING_NAME', 'Must specify --name');
12
+ }
13
+ if (!options.lat) {
14
+ throw new CliError('MISSING_LAT', 'Must specify --lat');
15
+ }
16
+ if (!options.long) {
17
+ throw new CliError('MISSING_LONG', 'Must specify --long');
18
+ }
19
+ if (!options.trigger) {
20
+ throw new CliError('MISSING_TRIGGER', 'Must specify --trigger', [
21
+ 'Use --trigger on_enter or --trigger on_leave',
22
+ ]);
23
+ }
24
+ const lat = parseLat(options.lat);
25
+ const long = parseLong(options.long);
26
+ const trigger = parseTrigger(options.trigger);
27
+ const radius = options.radius !== undefined ? parseRadius(options.radius) : undefined;
28
+ const api = await getApi();
29
+ const task = await resolveTaskRef(api, taskRef);
30
+ if (options.dryRun) {
31
+ printDryRun('add location reminder', {
32
+ Task: task.content,
33
+ Name: options.name,
34
+ Lat: lat,
35
+ Long: long,
36
+ Trigger: trigger,
37
+ Radius: radius !== undefined ? `${radius}m` : undefined,
38
+ });
39
+ return;
40
+ }
41
+ const reminder = await apiAddLocationReminder({
42
+ taskId: task.id,
43
+ name: options.name,
44
+ locLat: lat,
45
+ locLong: long,
46
+ locTrigger: trigger,
47
+ radius,
48
+ });
49
+ if (options.json) {
50
+ console.log(formatJson(reminder, 'location-reminder'));
51
+ return;
52
+ }
53
+ if (isQuiet()) {
54
+ console.log(reminder.id);
55
+ return;
56
+ }
57
+ console.log(`Added location reminder: ${formatLocationReminderRow(reminder)}`);
58
+ console.log(chalk.dim(`ID: ${reminder.id}`));
59
+ }
60
+ //# sourceMappingURL=add.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../../../src/commands/reminder/location/add.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ interface DeleteOptions {
2
+ yes?: boolean;
3
+ dryRun?: boolean;
4
+ }
5
+ export declare function deleteLocationReminderCmd(reminderId: string, options: DeleteOptions): Promise<void>;
6
+ export {};
7
+ //# sourceMappingURL=delete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../../src/commands/reminder/location/delete.ts"],"names":[],"mappings":"AASA,UAAU,aAAa;IACnB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,MAAM,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,wBAAsB,yBAAyB,CAC3C,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,aAAa,GACvB,OAAO,CAAC,IAAI,CAAC,CAmBf"}
@@ -0,0 +1,23 @@
1
+ import { deleteLocationReminder as apiDeleteLocationReminder, getLocationReminderById, } from '../../../lib/api/reminders.js';
2
+ import { isQuiet } from '../../../lib/global-args.js';
3
+ import { printDryRun } from '../../../lib/output.js';
4
+ import { lenientIdRef } from '../../../lib/refs.js';
5
+ import { formatLocationReminderRow } from '../helpers.js';
6
+ export async function deleteLocationReminderCmd(reminderId, options) {
7
+ const id = lenientIdRef(reminderId, 'reminder');
8
+ const reminder = await getLocationReminderById(id);
9
+ const detail = formatLocationReminderRow(reminder);
10
+ if (options.dryRun) {
11
+ printDryRun('delete location reminder', { Reminder: detail });
12
+ return;
13
+ }
14
+ if (!options.yes) {
15
+ console.log(`Would delete location reminder: ${detail}`);
16
+ console.log('Use --yes to confirm.');
17
+ return;
18
+ }
19
+ await apiDeleteLocationReminder(id);
20
+ if (!isQuiet())
21
+ console.log(`Deleted location reminder: ${detail} (id:${id})`);
22
+ }
23
+ //# sourceMappingURL=delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../../src/commands/reminder/location/delete.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,sBAAsB,IAAI,yBAAyB,EACnD,uBAAuB,GAC1B,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAA;AAOzD,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC3C,UAAkB,EAClB,OAAsB;IAEtB,MAAM,EAAE,GAAG,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;IAE/C,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,EAAE,CAAC,CAAA;IAClD,MAAM,MAAM,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAA;IAElD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACjB,WAAW,CAAC,0BAA0B,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;QAC7D,OAAM;IACV,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,mCAAmC,MAAM,EAAE,CAAC,CAAA;QACxD,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;QACpC,OAAM;IACV,CAAC;IAED,MAAM,yBAAyB,CAAC,EAAE,CAAC,CAAA;IACnC,IAAI,CAAC,OAAO,EAAE;QAAE,OAAO,CAAC,GAAG,CAAC,8BAA8B,MAAM,QAAQ,EAAE,GAAG,CAAC,CAAA;AAClF,CAAC"}
@@ -0,0 +1,7 @@
1
+ interface GetOptions {
2
+ json?: boolean;
3
+ full?: boolean;
4
+ }
5
+ export declare function getLocationReminderCmd(reminderId: string, options: GetOptions): Promise<void>;
6
+ export {};
7
+ //# sourceMappingURL=get.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../src/commands/reminder/location/get.ts"],"names":[],"mappings":"AAMA,UAAU,UAAU;IAChB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,IAAI,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,wBAAsB,sBAAsB,CACxC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,UAAU,GACpB,OAAO,CAAC,IAAI,CAAC,CAaf"}
@@ -0,0 +1,18 @@
1
+ import chalk from 'chalk';
2
+ import { getLocationReminderById } from '../../../lib/api/reminders.js';
3
+ import { formatJson } from '../../../lib/output.js';
4
+ import { lenientIdRef } from '../../../lib/refs.js';
5
+ import { formatLocationReminderRow } from '../helpers.js';
6
+ export async function getLocationReminderCmd(reminderId, options) {
7
+ const id = lenientIdRef(reminderId, 'reminder');
8
+ const reminder = await getLocationReminderById(id);
9
+ if (options.json) {
10
+ console.log(formatJson(reminder, 'location-reminder', options.full));
11
+ return;
12
+ }
13
+ const idStr = chalk.dim(reminder.id);
14
+ const type = chalk.magenta('[location]');
15
+ console.log(`${idStr} ${type} ${formatLocationReminderRow(reminder)}`);
16
+ console.log(chalk.dim(`Task: ${reminder.itemId}`));
17
+ }
18
+ //# sourceMappingURL=get.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../src/commands/reminder/location/get.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAA;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAA;AAOzD,MAAM,CAAC,KAAK,UAAU,sBAAsB,CACxC,UAAkB,EAClB,OAAmB;IAEnB,MAAM,EAAE,GAAG,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;IAC/C,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,EAAE,CAAC,CAAA;IAElD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,mBAAmB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;QACpE,OAAM;IACV,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IACpC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;IACxC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,KAAK,IAAI,IAAI,yBAAyB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IACvE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;AACtD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerLocationReminderCommand(reminder: Command): void;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/reminder/location/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAOxC,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAsFvE"}
@@ -0,0 +1,72 @@
1
+ import { CliError } from '../../../lib/errors.js';
2
+ import { addLocationReminderCmd } from './add.js';
3
+ import { deleteLocationReminderCmd } from './delete.js';
4
+ import { getLocationReminderCmd } from './get.js';
5
+ import { updateLocationReminderCmd } from './update.js';
6
+ export function registerLocationReminderCommand(reminder) {
7
+ const location = reminder.command('location').description('Manage location-based reminders');
8
+ const addCmd = location
9
+ .command('add [task]')
10
+ .description('Add a location reminder to a task')
11
+ .option('--task <ref>', 'Task reference (name or id:xxx)')
12
+ .option('--name <name>', 'Human-readable location name')
13
+ .option('--lat <latitude>', 'Latitude (-90 to 90)')
14
+ .option('--long <longitude>', 'Longitude (-180 to 180)')
15
+ .option('--trigger <trigger>', 'Trigger condition (on_enter or on_leave)')
16
+ .option('--radius <meters>', 'Radius in meters (positive integer)')
17
+ .option('--json', 'Output the created reminder as JSON')
18
+ .option('--dry-run', 'Preview what would happen without executing')
19
+ .action((taskArg, options) => {
20
+ if (taskArg && options.task) {
21
+ throw new CliError('CONFLICTING_OPTIONS', 'Cannot specify task both as argument and --task flag');
22
+ }
23
+ const task = taskArg || options.task;
24
+ if (!task) {
25
+ addCmd.help();
26
+ return;
27
+ }
28
+ return addLocationReminderCmd(task, options);
29
+ });
30
+ const updateCmd = location
31
+ .command('update [id]')
32
+ .description('Update a location reminder')
33
+ .option('--name <name>', 'Human-readable location name')
34
+ .option('--lat <latitude>', 'Latitude (-90 to 90)')
35
+ .option('--long <longitude>', 'Longitude (-180 to 180)')
36
+ .option('--trigger <trigger>', 'Trigger condition (on_enter or on_leave)')
37
+ .option('--radius <meters>', 'Radius in meters (positive integer)')
38
+ .option('--json', 'Output the updated reminder as JSON')
39
+ .option('--dry-run', 'Preview what would happen without executing')
40
+ .action((id, options) => {
41
+ if (!id) {
42
+ updateCmd.help();
43
+ return;
44
+ }
45
+ return updateLocationReminderCmd(id, options);
46
+ });
47
+ const deleteCmd = location
48
+ .command('delete [id]')
49
+ .description('Delete a location reminder')
50
+ .option('--yes', 'Confirm deletion')
51
+ .option('--dry-run', 'Preview what would happen without executing')
52
+ .action((id, options) => {
53
+ if (!id) {
54
+ deleteCmd.help();
55
+ return;
56
+ }
57
+ return deleteLocationReminderCmd(id, options);
58
+ });
59
+ const getCmd = location
60
+ .command('get [id]')
61
+ .description('Get a single location reminder by ID')
62
+ .option('--json', 'Output as JSON')
63
+ .option('--full', 'Include all fields in JSON output')
64
+ .action((id, options) => {
65
+ if (!id) {
66
+ getCmd.help();
67
+ return;
68
+ }
69
+ return getLocationReminderCmd(id, options);
70
+ });
71
+ }
72
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/reminder/location/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ interface UpdateOptions {
2
+ name?: string;
3
+ lat?: string;
4
+ long?: string;
5
+ trigger?: string;
6
+ radius?: string;
7
+ json?: boolean;
8
+ dryRun?: boolean;
9
+ }
10
+ export declare function updateLocationReminderCmd(reminderId: string, options: UpdateOptions): Promise<void>;
11
+ export {};
12
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../../src/commands/reminder/location/update.ts"],"names":[],"mappings":"AAgBA,UAAU,aAAa;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,wBAAsB,yBAAyB,CAC3C,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,aAAa,GACvB,OAAO,CAAC,IAAI,CAAC,CAsCf"}
@@ -0,0 +1,45 @@
1
+ import { updateLocationReminder as apiUpdateLocationReminder, } from '../../../lib/api/reminders.js';
2
+ import { CliError } from '../../../lib/errors.js';
3
+ import { isQuiet } from '../../../lib/global-args.js';
4
+ import { formatJson, printDryRun } from '../../../lib/output.js';
5
+ import { lenientIdRef } from '../../../lib/refs.js';
6
+ import { formatLocationReminderRow, parseLat, parseLong, parseRadius, parseTrigger, } from '../helpers.js';
7
+ export async function updateLocationReminderCmd(reminderId, options) {
8
+ const id = lenientIdRef(reminderId, 'reminder');
9
+ const args = {};
10
+ if (options.name !== undefined)
11
+ args.name = options.name;
12
+ if (options.lat !== undefined)
13
+ args.locLat = parseLat(options.lat);
14
+ if (options.long !== undefined)
15
+ args.locLong = parseLong(options.long);
16
+ if (options.trigger !== undefined)
17
+ args.locTrigger = parseTrigger(options.trigger);
18
+ if (options.radius !== undefined)
19
+ args.radius = parseRadius(options.radius);
20
+ if (Object.keys(args).length === 0) {
21
+ throw new CliError('MISSING_UPDATE', 'Must specify at least one field to update', [
22
+ 'Available: --name, --lat, --long, --trigger, --radius',
23
+ ]);
24
+ }
25
+ if (options.dryRun) {
26
+ printDryRun('update location reminder', {
27
+ ID: id,
28
+ Name: args.name,
29
+ Lat: args.locLat,
30
+ Long: args.locLong,
31
+ Trigger: args.locTrigger,
32
+ Radius: args.radius !== undefined ? `${args.radius}m` : undefined,
33
+ });
34
+ return;
35
+ }
36
+ const reminder = await apiUpdateLocationReminder(id, args);
37
+ if (options.json) {
38
+ console.log(formatJson(reminder, 'location-reminder'));
39
+ return;
40
+ }
41
+ if (!isQuiet()) {
42
+ console.log(`Updated location reminder: ${formatLocationReminderRow(reminder)} (id:${id})`);
43
+ }
44
+ }
45
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/commands/reminder/location/update.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,sBAAsB,IAAI,yBAAyB,GAEtD,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EACH,yBAAyB,EACzB,QAAQ,EACR,SAAS,EACT,WAAW,EACX,YAAY,GACf,MAAM,eAAe,CAAA;AAYtB,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC3C,UAAkB,EAClB,OAAsB;IAEtB,MAAM,EAAE,GAAG,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;IAE/C,MAAM,IAAI,GAA+B,EAAE,CAAA;IAC3C,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;QAAE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;IACxD,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS;QAAE,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAClE,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;QAAE,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACtE,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;QAAE,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAClF,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;QAAE,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAE3E,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,QAAQ,CAAC,gBAAgB,EAAE,2CAA2C,EAAE;YAC9E,uDAAuD;SAC1D,CAAC,CAAA;IACN,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACjB,WAAW,CAAC,0BAA0B,EAAE;YACpC,EAAE,EAAE,EAAE;YACN,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG,EAAE,IAAI,CAAC,MAAM;YAChB,IAAI,EAAE,IAAI,CAAC,OAAO;YAClB,OAAO,EAAE,IAAI,CAAC,UAAU;YACxB,MAAM,EAAE,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,SAAS;SACpE,CAAC,CAAA;QACF,OAAM;IACV,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,yBAAyB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;IAE1D,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAA;QACtD,OAAM;IACV,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,8BAA8B,yBAAyB,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;IAC/F,CAAC;AACL,CAAC"}
@@ -0,0 +1,9 @@
1
+ export interface WorkspaceActivityOptions {
2
+ userIds?: string;
3
+ projectIds?: string;
4
+ json?: boolean;
5
+ ndjson?: boolean;
6
+ full?: boolean;
7
+ }
8
+ export declare function showWorkspaceActivity(ref: string, options: WorkspaceActivityOptions): Promise<void>;
9
+ //# sourceMappingURL=activity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../../../src/commands/workspace/activity.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,wBAAwB;IACrC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,wBAAsB,qBAAqB,CACvC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,wBAAwB,GAClC,OAAO,CAAC,IAAI,CAAC,CA+Ef"}
@@ -0,0 +1,93 @@
1
+ import chalk from 'chalk';
2
+ import { getApi } from '../../lib/api/core.js';
3
+ import { lenientIdRef, resolveWorkspaceRef } from '../../lib/refs.js';
4
+ export async function showWorkspaceActivity(ref, options) {
5
+ const workspace = await resolveWorkspaceRef(ref);
6
+ const api = await getApi();
7
+ const userIds = options.userIds
8
+ ? options.userIds
9
+ .split(',')
10
+ .map((id) => id.trim())
11
+ .filter(Boolean)
12
+ .join(',')
13
+ : undefined;
14
+ const projectIds = options.projectIds
15
+ ? options.projectIds
16
+ .split(',')
17
+ .map((id) => lenientIdRef(id.trim(), 'project'))
18
+ .join(',')
19
+ : undefined;
20
+ const response = await api.getWorkspaceMembersActivity({
21
+ workspaceId: workspace.id,
22
+ userIds,
23
+ projectIds,
24
+ });
25
+ const members = response.members;
26
+ // When --full, enrich with workspace user details for each member.
27
+ let userMap = null;
28
+ if (options.full || (!options.json && !options.ndjson)) {
29
+ userMap = await buildUserMap(workspace.id);
30
+ }
31
+ if (options.json) {
32
+ const output = options.full
33
+ ? members.map((m) => ({
34
+ ...m,
35
+ fullName: userMap?.get(m.userId)?.fullName ?? null,
36
+ email: userMap?.get(m.userId)?.userEmail ?? null,
37
+ }))
38
+ : members;
39
+ // `nextCursor: null` matches the shape used by other list/report
40
+ // commands so generic JSON consumers can treat all collections
41
+ // uniformly.
42
+ console.log(JSON.stringify({ results: output, nextCursor: null }, null, 2));
43
+ return;
44
+ }
45
+ if (options.ndjson) {
46
+ for (const m of members) {
47
+ const output = options.full
48
+ ? {
49
+ ...m,
50
+ fullName: userMap?.get(m.userId)?.fullName ?? null,
51
+ email: userMap?.get(m.userId)?.userEmail ?? null,
52
+ }
53
+ : m;
54
+ console.log(JSON.stringify(output));
55
+ }
56
+ return;
57
+ }
58
+ console.log(chalk.bold(`Members activity for ${workspace.name}:`));
59
+ console.log('');
60
+ if (members.length === 0) {
61
+ console.log(chalk.dim('(no activity)'));
62
+ return;
63
+ }
64
+ for (const m of members) {
65
+ const info = userMap?.get(m.userId);
66
+ const name = info ? `${info.fullName} <${info.userEmail}>` : `id:${m.userId}`;
67
+ const assigned = `${m.tasksAssigned} assigned`;
68
+ const overdue = m.tasksOverdue > 0
69
+ ? chalk.red(`${m.tasksOverdue} overdue`)
70
+ : chalk.dim(`${m.tasksOverdue} overdue`);
71
+ console.log(`${name} ${chalk.dim(assigned)} ${overdue}`);
72
+ }
73
+ }
74
+ async function buildUserMap(workspaceId) {
75
+ const api = await getApi();
76
+ const map = new Map();
77
+ let cursor;
78
+ while (true) {
79
+ const response = await api.getWorkspaceUsers({
80
+ workspaceId,
81
+ cursor,
82
+ limit: 200,
83
+ });
84
+ for (const user of response.workspaceUsers) {
85
+ map.set(user.userId, user);
86
+ }
87
+ if (!response.hasMore || !response.nextCursor)
88
+ break;
89
+ cursor = response.nextCursor;
90
+ }
91
+ return map;
92
+ }
93
+ //# sourceMappingURL=activity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity.js","sourceRoot":"","sources":["../../../src/commands/workspace/activity.ts"],"names":[],"mappings":"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"}