@doist/todoist-cli 1.32.0 → 1.34.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 +12 -0
- package/README.md +18 -2
- package/dist/commands/auth/index.d.ts.map +1 -1
- package/dist/commands/auth/index.js +4 -1
- package/dist/commands/auth/index.js.map +1 -1
- package/dist/commands/auth/login.d.ts +3 -1
- package/dist/commands/auth/login.d.ts.map +1 -1
- package/dist/commands/auth/login.js +7 -4
- package/dist/commands/auth/login.js.map +1 -1
- package/dist/commands/auth/status.d.ts.map +1 -1
- package/dist/commands/auth/status.js +20 -2
- package/dist/commands/auth/status.js.map +1 -1
- package/dist/commands/auth/token.js +1 -1
- package/dist/commands/auth/token.js.map +1 -1
- package/dist/commands/reminder/helpers.d.ts +13 -2
- package/dist/commands/reminder/helpers.d.ts.map +1 -1
- package/dist/commands/reminder/helpers.js +5 -1
- 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 +11 -6
- package/dist/commands/reminder/index.js.map +1 -1
- package/dist/commands/reminder/list.d.ts +10 -1
- package/dist/commands/reminder/list.d.ts.map +1 -1
- package/dist/commands/reminder/list.js +68 -8
- package/dist/commands/reminder/list.js.map +1 -1
- package/dist/lib/api/core.d.ts.map +1 -1
- package/dist/lib/api/core.js +47 -42
- package/dist/lib/api/core.js.map +1 -1
- package/dist/lib/api/uploads.d.ts.map +1 -1
- package/dist/lib/api/uploads.js +2 -0
- package/dist/lib/api/uploads.js.map +1 -1
- package/dist/lib/auth.d.ts +12 -1
- package/dist/lib/auth.d.ts.map +1 -1
- package/dist/lib/auth.js +44 -4
- package/dist/lib/auth.js.map +1 -1
- package/dist/lib/oauth.d.ts +5 -1
- package/dist/lib/oauth.d.ts.map +1 -1
- package/dist/lib/oauth.js +5 -3
- package/dist/lib/oauth.js.map +1 -1
- package/dist/lib/output.d.ts +1 -1
- package/dist/lib/output.d.ts.map +1 -1
- package/dist/lib/output.js +15 -0
- package/dist/lib/output.js.map +1 -1
- package/dist/lib/permissions.d.ts +6 -0
- package/dist/lib/permissions.d.ts.map +1 -0
- package/dist/lib/permissions.js +79 -0
- package/dist/lib/permissions.js.map +1 -0
- 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 +15 -6
- package/dist/lib/skills/content.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
## [1.34.0](https://github.com/Doist/todoist-cli/compare/v1.33.0...v1.34.0) (2026-03-31)
|
|
2
|
+
|
|
3
|
+
### Features
|
|
4
|
+
|
|
5
|
+
* add read-only OAuth mode for safe autonomous tool use ([#205](https://github.com/Doist/todoist-cli/issues/205)) ([446756b](https://github.com/Doist/todoist-cli/commit/446756b59f4a4060427afa0e55014bd3de35c857))
|
|
6
|
+
|
|
7
|
+
## [1.33.0](https://github.com/Doist/todoist-cli/compare/v1.32.0...v1.33.0) (2026-03-30)
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* enhance reminder list with REST API and location reminders ([#199](https://github.com/Doist/todoist-cli/issues/199)) ([73ecbfa](https://github.com/Doist/todoist-cli/commit/73ecbfa44efd482af93b034337d055e391b15c62))
|
|
12
|
+
|
|
1
13
|
## [1.32.0](https://github.com/Doist/todoist-cli/compare/v1.31.1...v1.32.0) (2026-03-30)
|
|
2
14
|
|
|
3
15
|
### Features
|
package/README.md
CHANGED
|
@@ -72,6 +72,14 @@ This opens your browser to authenticate with Todoist. Once approved, the token i
|
|
|
72
72
|
|
|
73
73
|
If secure storage is unavailable, the CLI warns and falls back to `~/.config/todoist-cli/config.json`. Existing plaintext tokens are migrated automatically the next time the CLI reads them successfully from the config file.
|
|
74
74
|
|
|
75
|
+
For a read-only OAuth token (scope `data:read`), run:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
td auth login --read-only
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
In read-only mode, commands that change Todoist data (create/update/delete/complete/move/archive, etc.) are blocked by the CLI.
|
|
82
|
+
|
|
75
83
|
### Alternative methods
|
|
76
84
|
|
|
77
85
|
**Manual token:** Get your API token from [Todoist Settings > Integrations > Developer](https://todoist.com/app/settings/integrations/developer):
|
|
@@ -88,11 +96,19 @@ export TODOIST_API_TOKEN="your-token"
|
|
|
88
96
|
|
|
89
97
|
`TODOIST_API_TOKEN` always takes priority over the stored token.
|
|
90
98
|
|
|
99
|
+
Note: externally provided tokens (`TODOIST_API_TOKEN` or `td auth token`) are treated as unknown scope and assumed write-capable. The CLI cannot currently auto-detect OAuth scope for these tokens.
|
|
100
|
+
|
|
91
101
|
### Auth commands
|
|
92
102
|
|
|
93
103
|
```bash
|
|
94
|
-
td auth status # check if authenticated
|
|
95
|
-
td auth logout # remove saved token
|
|
104
|
+
td auth status # check if authenticated + mode (read-only/read-write/unknown)
|
|
105
|
+
td auth logout # remove saved token and auth metadata
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
To switch back to normal write access, re-run:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
td auth login
|
|
96
112
|
```
|
|
97
113
|
|
|
98
114
|
## Usage
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkB1D"}
|
|
@@ -4,7 +4,10 @@ import { showStatus } from './status.js';
|
|
|
4
4
|
import { loginWithToken } from './token.js';
|
|
5
5
|
export function registerAuthCommand(program) {
|
|
6
6
|
const auth = program.command('auth').description('Manage authentication');
|
|
7
|
-
auth.command('login')
|
|
7
|
+
auth.command('login')
|
|
8
|
+
.description('Authenticate with Todoist via OAuth')
|
|
9
|
+
.option('--read-only', 'Authenticate with read-only scope (data:read)')
|
|
10
|
+
.action(loginWithOAuth);
|
|
8
11
|
auth.command('token [token]')
|
|
9
12
|
.description('Save API token for CLI authentication')
|
|
10
13
|
.action(loginWithToken);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/auth/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAE3C,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAA;IAEzE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/auth/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAE3C,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAA;IAEzE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,qCAAqC,CAAC;SAClD,MAAM,CAAC,aAAa,EAAE,+CAA+C,CAAC;SACtE,MAAM,CAAC,cAAc,CAAC,CAAA;IAE3B,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,uCAAuC,CAAC;SACpD,MAAM,CAAC,cAAc,CAAC,CAAA;IAE3B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,oCAAoC,CAAC;SACjD,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,UAAU,CAAC,CAAA;IAEvB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,mCAAmC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AAC1F,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/login.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/login.ts"],"names":[],"mappings":"AAaA,wBAAsB,cAAc,CAAC,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BxF"}
|
|
@@ -2,15 +2,15 @@ import chalk from 'chalk';
|
|
|
2
2
|
import open from 'open';
|
|
3
3
|
import { saveApiToken } from '../../lib/auth.js';
|
|
4
4
|
import { startCallbackServer } from '../../lib/oauth-server.js';
|
|
5
|
-
import { buildAuthorizationUrl, exchangeCodeForToken } from '../../lib/oauth.js';
|
|
5
|
+
import { READ_ONLY_SCOPES, READ_WRITE_SCOPES, buildAuthorizationUrl, exchangeCodeForToken, } from '../../lib/oauth.js';
|
|
6
6
|
import { generateCodeChallenge, generateCodeVerifier, generateState } from '../../lib/pkce.js';
|
|
7
7
|
import { logTokenStorageResult } from './helpers.js';
|
|
8
|
-
export async function loginWithOAuth() {
|
|
8
|
+
export async function loginWithOAuth(options = {}) {
|
|
9
9
|
const codeVerifier = generateCodeVerifier();
|
|
10
10
|
const codeChallenge = generateCodeChallenge(codeVerifier);
|
|
11
11
|
const state = generateState();
|
|
12
12
|
console.log('Opening browser for Todoist authorization...');
|
|
13
|
-
const authUrl = buildAuthorizationUrl(codeChallenge, state);
|
|
13
|
+
const authUrl = buildAuthorizationUrl(codeChallenge, state, { readOnly: options.readOnly });
|
|
14
14
|
const { promise: callbackPromise, cleanup } = startCallbackServer(state);
|
|
15
15
|
try {
|
|
16
16
|
await open(authUrl);
|
|
@@ -18,7 +18,10 @@ export async function loginWithOAuth() {
|
|
|
18
18
|
const code = await callbackPromise;
|
|
19
19
|
console.log(chalk.dim('Exchanging code for token...'));
|
|
20
20
|
const accessToken = await exchangeCodeForToken(code, codeVerifier);
|
|
21
|
-
const result = await saveApiToken(accessToken
|
|
21
|
+
const result = await saveApiToken(accessToken, {
|
|
22
|
+
authMode: options.readOnly ? 'read-only' : 'read-write',
|
|
23
|
+
authScope: options.readOnly ? READ_ONLY_SCOPES : READ_WRITE_SCOPES,
|
|
24
|
+
});
|
|
22
25
|
console.log(chalk.green('✓'), 'Successfully logged in!');
|
|
23
26
|
logTokenStorageResult(result, 'Token stored securely in the system credential manager');
|
|
24
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/commands/auth/login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAC/D,OAAO,
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/commands/auth/login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAC/D,OAAO,EACH,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,GACvB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAC9F,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAEpD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,UAAkC,EAAE;IACrE,MAAM,YAAY,GAAG,oBAAoB,EAAE,CAAA;IAC3C,MAAM,aAAa,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAA;IACzD,MAAM,KAAK,GAAG,aAAa,EAAE,CAAA;IAE7B,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAA;IAE3D,MAAM,OAAO,GAAG,qBAAqB,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC3F,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAA;IAExE,IAAI,CAAC;QACD,MAAM,IAAI,CAAC,OAAO,CAAC,CAAA;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAA;QAEtD,MAAM,IAAI,GAAG,MAAM,eAAe,CAAA;QAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAA;QAEtD,MAAM,WAAW,GAAG,MAAM,oBAAoB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;QAClE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,WAAW,EAAE;YAC3C,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY;YACvD,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,iBAAiB;SACrE,CAAC,CAAA;QAEF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,yBAAyB,CAAC,CAAA;QACxD,qBAAqB,CAAC,MAAM,EAAE,wDAAwD,CAAC,CAAA;IAC3F,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,EAAE,CAAA;QACT,MAAM,KAAK,CAAA;IACf,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/status.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/status.ts"],"names":[],"mappings":"AAcA,wBAAsB,UAAU,CAAC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+C3E"}
|
|
@@ -1,17 +1,35 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import { getApi } from '../../lib/api/core.js';
|
|
3
|
-
import { NoTokenError } from '../../lib/auth.js';
|
|
3
|
+
import { NoTokenError, getAuthMetadata } from '../../lib/auth.js';
|
|
4
|
+
function formatAuthMode(authMode, authScope) {
|
|
5
|
+
if (authMode === 'read-only') {
|
|
6
|
+
return `read-only (OAuth scope ${authScope ?? 'data:read'})`;
|
|
7
|
+
}
|
|
8
|
+
if (authMode === 'read-write') {
|
|
9
|
+
return 'read-write';
|
|
10
|
+
}
|
|
11
|
+
return 'unknown (manual token or env var; assuming write access)';
|
|
12
|
+
}
|
|
4
13
|
export async function showStatus(options) {
|
|
5
14
|
try {
|
|
6
15
|
const api = await getApi();
|
|
7
16
|
const user = await api.getUser();
|
|
17
|
+
const metadata = await getAuthMetadata();
|
|
18
|
+
const modeLabel = formatAuthMode(metadata.authMode, metadata.authScope);
|
|
8
19
|
if (options.json) {
|
|
9
|
-
console.log(JSON.stringify({
|
|
20
|
+
console.log(JSON.stringify({
|
|
21
|
+
id: user.id,
|
|
22
|
+
email: user.email,
|
|
23
|
+
fullName: user.fullName,
|
|
24
|
+
authMode: metadata.authMode,
|
|
25
|
+
authScope: metadata.authScope,
|
|
26
|
+
}, null, 2));
|
|
10
27
|
}
|
|
11
28
|
else {
|
|
12
29
|
console.log(chalk.green('✓'), 'Authenticated');
|
|
13
30
|
console.log(` Email: ${user.email}`);
|
|
14
31
|
console.log(` Name: ${user.fullName}`);
|
|
32
|
+
console.log(` Mode: ${modeLabel}`);
|
|
15
33
|
}
|
|
16
34
|
}
|
|
17
35
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/commands/auth/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/commands/auth/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAiB,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEhF,SAAS,cAAc,CAAC,QAAkB,EAAE,SAAkB;IAC1D,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;QAC3B,OAAO,0BAA0B,SAAS,IAAI,WAAW,GAAG,CAAA;IAChE,CAAC;IACD,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;QAC5B,OAAO,YAAY,CAAA;IACvB,CAAC;IACD,OAAO,0DAA0D,CAAA;AACrE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAA2B;IACxD,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAA;QAC1B,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,CAAA;QAChC,MAAM,QAAQ,GAAG,MAAM,eAAe,EAAE,CAAA;QACxC,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAA;QAEvE,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CACP,IAAI,CAAC,SAAS,CACV;gBACI,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,SAAS,EAAE,QAAQ,CAAC,SAAS;aAChC,EACD,IAAI,EACJ,CAAC,CACJ,CACJ,CAAA;QACL,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,eAAe,CAAC,CAAA;YAC9C,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;YACrC,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;YACxC,OAAO,CAAC,GAAG,CAAC,YAAY,SAAS,EAAE,CAAC,CAAA;QACxC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,WAAW,GAAG,KAAK,YAAY,YAAY,CAAA;QACjD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,WAAW,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;gBACpE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;YACxB,CAAC;iBAAM,CAAC;gBACJ,MAAM,KAAK,CAAA;YACf,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,IAAI,WAAW,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAA;gBAC9C,OAAO,CAAC,GAAG,CACP,KAAK,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAC9E,CAAA;YACL,CAAC;iBAAM,CAAC;gBACJ,MAAM,KAAK,CAAA;YACf,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC"}
|
|
@@ -10,7 +10,7 @@ export async function loginWithToken(token) {
|
|
|
10
10
|
return;
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
|
-
const result = await saveApiToken(token.trim());
|
|
13
|
+
const result = await saveApiToken(token.trim(), { authMode: 'unknown' });
|
|
14
14
|
console.log(chalk.green('✓'), 'API token saved successfully!');
|
|
15
15
|
logTokenStorageResult(result, 'Token stored securely in the system credential manager');
|
|
16
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/commands/auth/token.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAEvE,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAc;IAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,KAAK,GAAG,MAAM,iBAAiB,CAAC,aAAa,CAAC,CAAA;QAC9C,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,mBAAmB,CAAC,CAAA;YACvD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;YACpB,OAAM;QACV,CAAC;IACL,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/commands/auth/token.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAEvE,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAc;IAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,KAAK,GAAG,MAAM,iBAAiB,CAAC,aAAa,CAAC,CAAA;QAC9C,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,mBAAmB,CAAC,CAAA;YACvD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;YACpB,OAAM;QACV,CAAC;IACL,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAA;IACxE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,+BAA+B,CAAC,CAAA;IAC9D,qBAAqB,CAAC,MAAM,EAAE,wDAAwD,CAAC,CAAA;AAC3F,CAAC"}
|
|
@@ -1,4 +1,15 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
1
|
+
import type { LocationReminder, Reminder } from '@doist/todoist-api-typescript';
|
|
2
|
+
import type { ReminderDue } from '../../lib/api/reminders.js';
|
|
3
|
+
export type ReminderTypeFilter = 'time' | 'location';
|
|
4
|
+
interface ReminderLike {
|
|
5
|
+
type: Reminder['type'];
|
|
6
|
+
minuteOffset?: number;
|
|
7
|
+
due?: {
|
|
8
|
+
date: string;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export declare function formatReminderTime(reminder: ReminderLike): string;
|
|
12
|
+
export declare function formatLocationReminderRow(reminder: LocationReminder): string;
|
|
3
13
|
export declare function parseDateTime(value: string): ReminderDue;
|
|
14
|
+
export {};
|
|
4
15
|
//# 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,QAAQ,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;
|
|
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,+BAA+B,CAAA;AAC/E,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,CAwBxD"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { formatDuration } from '../../lib/duration.js';
|
|
2
2
|
import { formatError } from '../../lib/output.js';
|
|
3
3
|
export function formatReminderTime(reminder) {
|
|
4
|
-
if (reminder.minuteOffset != null) {
|
|
4
|
+
if (reminder.type === 'relative' && reminder.minuteOffset != null) {
|
|
5
5
|
return `${formatDuration(reminder.minuteOffset)} before due`;
|
|
6
6
|
}
|
|
7
7
|
if (reminder.due?.date) {
|
|
@@ -13,6 +13,10 @@ export function formatReminderTime(reminder) {
|
|
|
13
13
|
}
|
|
14
14
|
return 'unknown time';
|
|
15
15
|
}
|
|
16
|
+
export function formatLocationReminderRow(reminder) {
|
|
17
|
+
const trigger = reminder.locTrigger === 'on_enter' ? 'on enter' : 'on leave';
|
|
18
|
+
return `${reminder.name} (${trigger}) at ${reminder.locLat},${reminder.locLong} r=${reminder.radius}m`;
|
|
19
|
+
}
|
|
16
20
|
export function parseDateTime(value) {
|
|
17
21
|
const trimmed = value.trim();
|
|
18
22
|
// ISO format: 2024-01-15T10:00:00
|
|
@@ -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":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAUjD,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,KAAK,CACX,WAAW,CAAC,kBAAkB,EAAE,6BAA6B,KAAK,GAAG,EAAE;QACnE,6DAA6D;KAChE,CAAC,CACL,CAAA;AACL,CAAC"}
|
|
@@ -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;AAQnC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+F9D"}
|
|
@@ -4,10 +4,19 @@ import { listReminders } from './list.js';
|
|
|
4
4
|
import { updateReminderCmd } from './update.js';
|
|
5
5
|
export function registerReminderCommand(program) {
|
|
6
6
|
const reminder = program.command('reminder').description('Manage task reminders');
|
|
7
|
-
|
|
7
|
+
reminder
|
|
8
8
|
.command('list [task]')
|
|
9
|
-
.description('List reminders
|
|
9
|
+
.description('List reminders (optionally filtered by task, or reminder type)')
|
|
10
10
|
.option('--task <ref>', 'Task reference (name or id:xxx)')
|
|
11
|
+
.option('--type <type>', 'Filter by type (time or location)', (v) => {
|
|
12
|
+
if (v !== 'time' && v !== 'location') {
|
|
13
|
+
throw new Error("--type must be 'time' or 'location'");
|
|
14
|
+
}
|
|
15
|
+
return v;
|
|
16
|
+
})
|
|
17
|
+
.option('--limit <n>', 'Limit number of results')
|
|
18
|
+
.option('--cursor <cursor>', 'Continue from cursor')
|
|
19
|
+
.option('--all', 'Fetch all results (no limit)')
|
|
11
20
|
.option('--json', 'Output as JSON')
|
|
12
21
|
.option('--ndjson', 'Output as newline-delimited JSON')
|
|
13
22
|
.option('--full', 'Include all fields in JSON output')
|
|
@@ -16,10 +25,6 @@ export function registerReminderCommand(program) {
|
|
|
16
25
|
throw new Error('Cannot specify task both as argument and --task flag');
|
|
17
26
|
}
|
|
18
27
|
const task = taskArg || options.task;
|
|
19
|
-
if (!task) {
|
|
20
|
-
listCmd.help();
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
28
|
return listReminders(task, options);
|
|
24
29
|
});
|
|
25
30
|
const addCmd = reminder
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/reminder/index.ts"],"names":[],"mappings":"AAEA,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":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAE/C,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACpD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAA;IAEjF,QAAQ;SACH,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,gEAAgE,CAAC;SAC7E,MAAM,CAAC,cAAc,EAAE,iCAAiC,CAAC;SACzD,MAAM,CAAC,eAAe,EAAE,mCAAmC,EAAE,CAAC,CAAS,EAAE,EAAE;QACxE,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,UAAU,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;QAC1D,CAAC;QACD,OAAO,CAAuB,CAAA;IAClC,CAAC,CAAC;SACD,MAAM,CAAC,aAAa,EAAE,yBAAyB,CAAC;SAChD,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC;SACnD,MAAM,CAAC,OAAO,EAAE,8BAA8B,CAAC;SAC/C,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,UAAU,EAAE,kCAAkC,CAAC;SACtD,MAAM,CAAC,QAAQ,EAAE,mCAAmC,CAAC;SACrD,MAAM,CACH,CACI,OAA2B,EAC3B,OAMC,EACH,EAAE;QACA,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;QAC3E,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAA;QACpC,OAAO,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACvC,CAAC,CACJ,CAAA;IAEL,MAAM,MAAM,GAAG,QAAQ;SAClB,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CAAC,0BAA0B,CAAC;SACvC,MAAM,CAAC,cAAc,EAAE,iCAAiC,CAAC;SACzD,MAAM,CAAC,qBAAqB,EAAE,iCAAiC,CAAC;SAChE,MAAM,CAAC,iBAAiB,EAAE,wCAAwC,CAAC;SACnE,MAAM,CAAC,QAAQ,EAAE,qCAAqC,CAAC;SACvD,MAAM,CAAC,WAAW,EAAE,6CAA6C,CAAC;SAClE,MAAM,CACH,CACI,OAA2B,EAC3B,OAMC,EACH,EAAE;QACA,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;QAC3E,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAA;QACpC,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,MAAM,CAAC,IAAI,EAAE,CAAA;YACb,OAAM;QACV,CAAC;QACD,OAAO,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACrC,CAAC,CACJ,CAAA;IAEL,MAAM,SAAS,GAAG,QAAQ;SACrB,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,mBAAmB,CAAC;SAChC,MAAM,CAAC,qBAAqB,EAAE,iCAAiC,CAAC;SAChE,MAAM,CAAC,iBAAiB,EAAE,wCAAwC,CAAC;SACnE,MAAM,CAAC,WAAW,EAAE,6CAA6C,CAAC;SAClE,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE;QACpB,IAAI,CAAC,EAAE,EAAE,CAAC;YACN,SAAS,CAAC,IAAI,EAAE,CAAA;YAChB,OAAM;QACV,CAAC;QACD,OAAO,iBAAiB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;IAEN,MAAM,SAAS,GAAG,QAAQ;SACrB,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,mBAAmB,CAAC;SAChC,MAAM,CAAC,OAAO,EAAE,kBAAkB,CAAC;SACnC,MAAM,CAAC,WAAW,EAAE,6CAA6C,CAAC;SAClE,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE;QACpB,IAAI,CAAC,EAAE,EAAE,CAAC;YACN,SAAS,CAAC,IAAI,EAAE,CAAA;YAChB,OAAM;QACV,CAAC;QACD,OAAO,iBAAiB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;AACV,CAAC"}
|
|
@@ -1,3 +1,12 @@
|
|
|
1
1
|
import type { PaginatedViewOptions } from '../../lib/options.js';
|
|
2
|
-
|
|
2
|
+
import { type ReminderTypeFilter } from './helpers.js';
|
|
3
|
+
interface ListOptions extends PaginatedViewOptions {
|
|
4
|
+
task?: string;
|
|
5
|
+
type?: ReminderTypeFilter;
|
|
6
|
+
limit?: string;
|
|
7
|
+
cursor?: string;
|
|
8
|
+
all?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare function listReminders(taskRef: string | undefined, options: ListOptions): Promise<void>;
|
|
11
|
+
export {};
|
|
3
12
|
//# sourceMappingURL=list.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/reminder/list.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/reminder/list.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAIhE,OAAO,EACH,KAAK,kBAAkB,EAG1B,MAAM,cAAc,CAAA;AAErB,UAAU,WAAY,SAAQ,oBAAoB;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,kBAAkB,CAAA;IACzB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,wBAAsB,aAAa,CAC/B,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,EAAE,WAAW,GACrB,OAAO,CAAC,IAAI,CAAC,CA6Gf"}
|
|
@@ -1,29 +1,89 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import { getApi } from '../../lib/api/core.js';
|
|
3
|
-
import { getTaskReminders } from '../../lib/api/reminders.js';
|
|
4
3
|
import { formatPaginatedJson, formatPaginatedNdjson } from '../../lib/output.js';
|
|
4
|
+
import { paginate } from '../../lib/pagination.js';
|
|
5
5
|
import { resolveTaskRef } from '../../lib/refs.js';
|
|
6
|
-
import { formatReminderTime } from './helpers.js';
|
|
6
|
+
import { formatLocationReminderRow, formatReminderTime, } from './helpers.js';
|
|
7
7
|
export async function listReminders(taskRef, options) {
|
|
8
8
|
const api = await getApi();
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
if (options.cursor && !options.type) {
|
|
10
|
+
throw new Error('--cursor requires --type (time or location) to identify the endpoint');
|
|
11
|
+
}
|
|
12
|
+
let taskId;
|
|
13
|
+
if (taskRef) {
|
|
14
|
+
const task = await resolveTaskRef(api, taskRef);
|
|
15
|
+
taskId = task.id;
|
|
16
|
+
}
|
|
17
|
+
const targetLimit = options.all
|
|
18
|
+
? Number.MAX_SAFE_INTEGER
|
|
19
|
+
: options.limit
|
|
20
|
+
? parseInt(options.limit, 10)
|
|
21
|
+
: 200;
|
|
22
|
+
const args = taskId ? { taskId } : {};
|
|
23
|
+
const fetchTime = !options.type || options.type === 'time';
|
|
24
|
+
const fetchLocation = !options.type || options.type === 'location';
|
|
25
|
+
const emptyResult = { results: [], nextCursor: null };
|
|
26
|
+
const [timeResult, locationResult] = await Promise.all([
|
|
27
|
+
fetchTime
|
|
28
|
+
? paginate(async (cursor, limit) => {
|
|
29
|
+
const resp = await api.getReminders({ ...args, cursor, limit });
|
|
30
|
+
return { results: resp.results, nextCursor: resp.nextCursor };
|
|
31
|
+
}, { limit: targetLimit, startCursor: options.cursor })
|
|
32
|
+
: emptyResult,
|
|
33
|
+
fetchLocation
|
|
34
|
+
? paginate(async (cursor, limit) => {
|
|
35
|
+
const resp = await api.getLocationReminders({ ...args, cursor, limit });
|
|
36
|
+
return { results: resp.results, nextCursor: resp.nextCursor };
|
|
37
|
+
}, { limit: targetLimit, startCursor: options.cursor })
|
|
38
|
+
: emptyResult,
|
|
39
|
+
]);
|
|
40
|
+
// When fetching both types, apply the limit across the merged results
|
|
41
|
+
let reminders = timeResult.results;
|
|
42
|
+
let locationReminders = locationResult.results;
|
|
43
|
+
if (fetchTime && fetchLocation) {
|
|
44
|
+
const total = reminders.length + locationReminders.length;
|
|
45
|
+
if (total > targetLimit) {
|
|
46
|
+
const combined = [
|
|
47
|
+
...reminders.map((r) => ({ kind: 'time', item: r })),
|
|
48
|
+
...locationReminders.map((r) => ({ kind: 'location', item: r })),
|
|
49
|
+
].slice(0, targetLimit);
|
|
50
|
+
reminders = combined.filter((c) => c.kind === 'time').map((c) => c.item);
|
|
51
|
+
locationReminders = combined.filter((c) => c.kind === 'location').map((c) => c.item);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
const nextCursor = timeResult.nextCursor || locationResult.nextCursor;
|
|
11
55
|
if (options.json) {
|
|
12
|
-
|
|
56
|
+
const allResults = [...reminders, ...locationReminders];
|
|
57
|
+
console.log(formatPaginatedJson({ results: allResults, nextCursor }, 'reminder', options.full));
|
|
13
58
|
return;
|
|
14
59
|
}
|
|
15
60
|
if (options.ndjson) {
|
|
16
|
-
|
|
61
|
+
const timeNdjson = formatPaginatedNdjson({ results: reminders, nextCursor: timeResult.nextCursor }, 'reminder', options.full);
|
|
62
|
+
const locationNdjson = formatPaginatedNdjson({ results: locationReminders, nextCursor: locationResult.nextCursor }, 'location-reminder', options.full);
|
|
63
|
+
const parts = [timeNdjson, locationNdjson].filter(Boolean);
|
|
64
|
+
if (parts.length > 0) {
|
|
65
|
+
console.log(parts.join('\n'));
|
|
66
|
+
}
|
|
17
67
|
return;
|
|
18
68
|
}
|
|
19
|
-
if (reminders.length === 0) {
|
|
69
|
+
if (reminders.length === 0 && locationReminders.length === 0) {
|
|
20
70
|
console.log('No reminders.');
|
|
21
71
|
return;
|
|
22
72
|
}
|
|
73
|
+
const showTask = !taskId;
|
|
23
74
|
for (const reminder of reminders) {
|
|
24
75
|
const id = chalk.dim(reminder.id);
|
|
76
|
+
const type = chalk.cyan('[time]');
|
|
25
77
|
const time = formatReminderTime(reminder);
|
|
26
|
-
|
|
78
|
+
const task = showTask ? chalk.dim(` (task:${reminder.itemId})`) : '';
|
|
79
|
+
console.log(`${id} ${type} ${time}${task}`);
|
|
80
|
+
}
|
|
81
|
+
for (const loc of locationReminders) {
|
|
82
|
+
const id = chalk.dim(loc.id);
|
|
83
|
+
const type = chalk.magenta('[location]');
|
|
84
|
+
const detail = formatLocationReminderRow(loc);
|
|
85
|
+
const task = showTask ? chalk.dim(` (task:${loc.itemId})`) : '';
|
|
86
|
+
console.log(`${id} ${type} ${detail}${task}`);
|
|
27
87
|
}
|
|
28
88
|
}
|
|
29
89
|
//# sourceMappingURL=list.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/reminder/list.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/reminder/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/lib/api/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,eAAe,EACf,OAAO,EACP,IAAI,EACJ,UAAU,EACV,IAAI,EACJ,gBAAgB,EAChB,KAAK,OAAO,EACf,MAAM,+BAA+B,CAAA;
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/lib/api/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,eAAe,EACf,OAAO,EACP,IAAI,EACJ,UAAU,EACV,IAAI,EACJ,gBAAgB,EAChB,KAAK,OAAO,EACf,MAAM,+BAA+B,CAAA;AA4JtC,wBAAsB,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC,CAOlD;AAED,MAAM,MAAM,OAAO,GAAG,eAAe,GAAG,gBAAgB,CAAA;AAExD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,gBAAgB,CAEhF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,eAAe,CAE9E;AAID,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAMxD;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAED,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUvE;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,MAAM,CAOnF;AAED,wBAAsB,cAAc,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,OAAO,GACrB,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAEjF;AAED,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA"}
|
package/dist/lib/api/core.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createCommand, TodoistApi, } from '@doist/todoist-api-typescript';
|
|
2
2
|
import { getApiToken } from '../auth.js';
|
|
3
|
+
import { ensureWriteAllowed, isMutatingApiMethod, isMutatingSyncPayload } from '../permissions.js';
|
|
3
4
|
import { getProgressTracker } from '../progress.js';
|
|
4
5
|
import { withSpinner } from '../spinner.js';
|
|
5
6
|
let apiClient = null;
|
|
@@ -51,54 +52,58 @@ const API_SPINNER_MESSAGES = {
|
|
|
51
52
|
createProjectFromTemplate: { text: 'Creating project from template...', color: 'green' },
|
|
52
53
|
importTemplateIntoProject: { text: 'Importing template...', color: 'green' },
|
|
53
54
|
importTemplateFromId: { text: 'Importing template...', color: 'green' },
|
|
55
|
+
getReminders: { text: 'Loading reminders...', color: 'blue' },
|
|
56
|
+
getLocationReminders: { text: 'Loading location reminders...', color: 'blue' },
|
|
54
57
|
};
|
|
55
58
|
function createSpinnerWrappedApi(api) {
|
|
56
59
|
return new Proxy(api, {
|
|
57
60
|
get(target, property, receiver) {
|
|
58
61
|
const originalMethod = Reflect.get(target, property, receiver);
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
let cursor = null;
|
|
67
|
-
if (args.length > 0 && typeof args[0] === 'object' && args[0] !== null) {
|
|
68
|
-
const options = args[0];
|
|
69
|
-
if ('cursor' in options && typeof options.cursor === 'string') {
|
|
70
|
-
cursor = options.cursor;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
// Emit progress event for API call start
|
|
74
|
-
if (progressTracker.isEnabled()) {
|
|
75
|
-
progressTracker.emitApiCall(property, cursor);
|
|
76
|
-
}
|
|
77
|
-
const result = originalMethod.apply(target, args);
|
|
78
|
-
// If the method returns a Promise, wrap it with spinner and progress tracking
|
|
79
|
-
if (result && typeof result.then === 'function') {
|
|
80
|
-
const wrappedPromise = result
|
|
81
|
-
.then((response) => {
|
|
82
|
-
// Emit progress event for successful response
|
|
83
|
-
if (progressTracker.isEnabled()) {
|
|
84
|
-
analyzeAndEmitApiResponse(progressTracker, response);
|
|
85
|
-
}
|
|
86
|
-
return response;
|
|
87
|
-
})
|
|
88
|
-
.catch((error) => {
|
|
89
|
-
// Emit progress event for error
|
|
90
|
-
if (progressTracker.isEnabled()) {
|
|
91
|
-
progressTracker.emitError(error.name || 'API_ERROR', error.message);
|
|
92
|
-
}
|
|
93
|
-
throw error;
|
|
94
|
-
});
|
|
95
|
-
return withSpinner(spinnerConfig, () => wrappedPromise);
|
|
96
|
-
}
|
|
97
|
-
return result;
|
|
98
|
-
};
|
|
99
|
-
}
|
|
62
|
+
if (typeof originalMethod !== 'function' || typeof property !== 'string') {
|
|
63
|
+
return originalMethod;
|
|
64
|
+
}
|
|
65
|
+
const spinnerConfig = API_SPINNER_MESSAGES[property];
|
|
66
|
+
const needsPermissionCheck = property === 'sync' || isMutatingApiMethod(property);
|
|
67
|
+
if (!spinnerConfig && !needsPermissionCheck) {
|
|
68
|
+
return originalMethod;
|
|
100
69
|
}
|
|
101
|
-
return
|
|
70
|
+
return async (...args) => {
|
|
71
|
+
const isMutating = (property === 'sync' && isMutatingSyncPayload(args)) ||
|
|
72
|
+
(property !== 'sync' && isMutatingApiMethod(property));
|
|
73
|
+
if (isMutating) {
|
|
74
|
+
await ensureWriteAllowed();
|
|
75
|
+
}
|
|
76
|
+
const progressTracker = getProgressTracker();
|
|
77
|
+
let cursor = null;
|
|
78
|
+
if (args.length > 0 && typeof args[0] === 'object' && args[0] !== null) {
|
|
79
|
+
const options = args[0];
|
|
80
|
+
if ('cursor' in options && typeof options.cursor === 'string') {
|
|
81
|
+
cursor = options.cursor;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
if (progressTracker.isEnabled()) {
|
|
85
|
+
progressTracker.emitApiCall(property, cursor);
|
|
86
|
+
}
|
|
87
|
+
const callApi = async () => {
|
|
88
|
+
const response = await originalMethod.apply(target, args);
|
|
89
|
+
if (progressTracker.isEnabled()) {
|
|
90
|
+
analyzeAndEmitApiResponse(progressTracker, response);
|
|
91
|
+
}
|
|
92
|
+
return response;
|
|
93
|
+
};
|
|
94
|
+
try {
|
|
95
|
+
if (spinnerConfig) {
|
|
96
|
+
return await withSpinner(spinnerConfig, callApi);
|
|
97
|
+
}
|
|
98
|
+
return await callApi();
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
if (progressTracker.isEnabled()) {
|
|
102
|
+
progressTracker.emitError(error.name || 'API_ERROR', error.message);
|
|
103
|
+
}
|
|
104
|
+
throw error;
|
|
105
|
+
}
|
|
106
|
+
};
|
|
102
107
|
},
|
|
103
108
|
});
|
|
104
109
|
}
|
package/dist/lib/api/core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/lib/api/core.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/lib/api/core.ts"],"names":[],"mappings":"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"}
|