@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.
- package/CHANGELOG.md +7 -0
- package/dist/commands/reminder/get.d.ts +7 -0
- package/dist/commands/reminder/get.d.ts.map +1 -0
- package/dist/commands/reminder/get.js +19 -0
- package/dist/commands/reminder/get.js.map +1 -0
- package/dist/commands/reminder/helpers.d.ts +5 -1
- package/dist/commands/reminder/helpers.d.ts.map +1 -1
- package/dist/commands/reminder/helpers.js +37 -0
- package/dist/commands/reminder/helpers.js.map +1 -1
- package/dist/commands/reminder/index.d.ts.map +1 -1
- package/dist/commands/reminder/index.js +15 -0
- package/dist/commands/reminder/index.js.map +1 -1
- package/dist/commands/reminder/location/add.d.ts +12 -0
- package/dist/commands/reminder/location/add.d.ts.map +1 -0
- package/dist/commands/reminder/location/add.js +60 -0
- package/dist/commands/reminder/location/add.js.map +1 -0
- package/dist/commands/reminder/location/delete.d.ts +7 -0
- package/dist/commands/reminder/location/delete.d.ts.map +1 -0
- package/dist/commands/reminder/location/delete.js +23 -0
- package/dist/commands/reminder/location/delete.js.map +1 -0
- package/dist/commands/reminder/location/get.d.ts +7 -0
- package/dist/commands/reminder/location/get.d.ts.map +1 -0
- package/dist/commands/reminder/location/get.js +18 -0
- package/dist/commands/reminder/location/get.js.map +1 -0
- package/dist/commands/reminder/location/index.d.ts +3 -0
- package/dist/commands/reminder/location/index.d.ts.map +1 -0
- package/dist/commands/reminder/location/index.js +72 -0
- package/dist/commands/reminder/location/index.js.map +1 -0
- package/dist/commands/reminder/location/update.d.ts +12 -0
- package/dist/commands/reminder/location/update.d.ts.map +1 -0
- package/dist/commands/reminder/location/update.js +45 -0
- package/dist/commands/reminder/location/update.js.map +1 -0
- package/dist/commands/workspace/activity.d.ts +9 -0
- package/dist/commands/workspace/activity.d.ts.map +1 -0
- package/dist/commands/workspace/activity.js +93 -0
- package/dist/commands/workspace/activity.js.map +1 -0
- package/dist/commands/workspace/create.d.ts +14 -0
- package/dist/commands/workspace/create.d.ts.map +1 -0
- package/dist/commands/workspace/create.js +58 -0
- package/dist/commands/workspace/create.js.map +1 -0
- package/dist/commands/workspace/delete.d.ts +5 -0
- package/dist/commands/workspace/delete.d.ts.map +1 -0
- package/dist/commands/workspace/delete.js +31 -0
- package/dist/commands/workspace/delete.js.map +1 -0
- package/dist/commands/workspace/helpers.d.ts +24 -1
- package/dist/commands/workspace/helpers.d.ts.map +1 -1
- package/dist/commands/workspace/helpers.js +113 -1
- package/dist/commands/workspace/helpers.js.map +1 -1
- package/dist/commands/workspace/index.d.ts.map +1 -1
- package/dist/commands/workspace/index.js +115 -1
- package/dist/commands/workspace/index.js.map +1 -1
- package/dist/commands/workspace/update.d.ts +15 -0
- package/dist/commands/workspace/update.d.ts.map +1 -0
- package/dist/commands/workspace/update.js +75 -0
- package/dist/commands/workspace/update.js.map +1 -0
- package/dist/commands/workspace/user-tasks.d.ts +9 -0
- package/dist/commands/workspace/user-tasks.d.ts.map +1 -0
- package/dist/commands/workspace/user-tasks.js +77 -0
- package/dist/commands/workspace/user-tasks.js.map +1 -0
- package/dist/lib/api/core.d.ts.map +1 -1
- package/dist/lib/api/core.js +13 -0
- package/dist/lib/api/core.js.map +1 -1
- package/dist/lib/api/reminders.d.ts +21 -0
- package/dist/lib/api/reminders.d.ts.map +1 -1
- package/dist/lib/api/reminders.js +37 -1
- package/dist/lib/api/reminders.js.map +1 -1
- package/dist/lib/errors.d.ts +1 -1
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/permissions.d.ts.map +1 -1
- package/dist/lib/permissions.js +4 -0
- package/dist/lib/permissions.js.map +1 -1
- package/dist/lib/skills/content.d.ts +1 -1
- package/dist/lib/skills/content.d.ts.map +1 -1
- package/dist/lib/skills/content.js +13 -1
- package/dist/lib/skills/content.js.map +1 -1
- 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 @@
|
|
|
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
|
|
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,
|
|
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":"
|
|
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;
|
|
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":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAE9C,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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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"}
|