@doist/todoist-cli 1.57.0 → 1.58.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 (58) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/commands/auth/login.d.ts.map +1 -1
  3. package/dist/commands/auth/login.js +11 -3
  4. package/dist/commands/auth/login.js.map +1 -1
  5. package/dist/commands/auth/status.d.ts.map +1 -1
  6. package/dist/commands/auth/status.js +34 -6
  7. package/dist/commands/auth/status.js.map +1 -1
  8. package/dist/commands/auth/token.d.ts.map +1 -1
  9. package/dist/commands/auth/token.js +14 -3
  10. package/dist/commands/auth/token.js.map +1 -1
  11. package/dist/commands/user/index.d.ts +3 -0
  12. package/dist/commands/user/index.d.ts.map +1 -0
  13. package/dist/commands/user/index.js +19 -0
  14. package/dist/commands/user/index.js.map +1 -0
  15. package/dist/commands/user/list.d.ts +5 -0
  16. package/dist/commands/user/list.d.ts.map +1 -0
  17. package/dist/commands/user/list.js +32 -0
  18. package/dist/commands/user/list.js.map +1 -0
  19. package/dist/commands/user/use.d.ts +2 -0
  20. package/dist/commands/user/use.d.ts.map +1 -0
  21. package/dist/commands/user/use.js +17 -0
  22. package/dist/commands/user/use.js.map +1 -0
  23. package/dist/index.js +37 -2
  24. package/dist/index.js.map +1 -1
  25. package/dist/lib/api/core.d.ts.map +1 -1
  26. package/dist/lib/api/core.js +8 -3
  27. package/dist/lib/api/core.js.map +1 -1
  28. package/dist/lib/auth.d.ts +71 -9
  29. package/dist/lib/auth.d.ts.map +1 -1
  30. package/dist/lib/auth.js +348 -156
  31. package/dist/lib/auth.js.map +1 -1
  32. package/dist/lib/config.d.ts +24 -3
  33. package/dist/lib/config.d.ts.map +1 -1
  34. package/dist/lib/config.js +83 -3
  35. package/dist/lib/config.js.map +1 -1
  36. package/dist/lib/global-args.d.ts +9 -0
  37. package/dist/lib/global-args.d.ts.map +1 -1
  38. package/dist/lib/global-args.js +52 -0
  39. package/dist/lib/global-args.js.map +1 -1
  40. package/dist/lib/migrate-auth.d.ts +23 -0
  41. package/dist/lib/migrate-auth.d.ts.map +1 -0
  42. package/dist/lib/migrate-auth.js +145 -0
  43. package/dist/lib/migrate-auth.js.map +1 -0
  44. package/dist/lib/secure-store.d.ts +15 -1
  45. package/dist/lib/secure-store.d.ts.map +1 -1
  46. package/dist/lib/secure-store.js +22 -7
  47. package/dist/lib/secure-store.js.map +1 -1
  48. package/dist/lib/skills/content.d.ts +1 -1
  49. package/dist/lib/skills/content.d.ts.map +1 -1
  50. package/dist/lib/skills/content.js +16 -2
  51. package/dist/lib/skills/content.js.map +1 -1
  52. package/dist/lib/users.d.ts +33 -0
  53. package/dist/lib/users.d.ts.map +1 -0
  54. package/dist/lib/users.js +83 -0
  55. package/dist/lib/users.js.map +1 -0
  56. package/dist/postinstall.js +2 -0
  57. package/dist/postinstall.js.map +1 -1
  58. package/package.json +4 -4
@@ -7,6 +7,9 @@ export interface HelpCenterConfig {
7
7
  export interface WorkspaceConfig {
8
8
  defaultWorkspace?: string;
9
9
  }
10
+ export interface UserConfig {
11
+ defaultUser?: string;
12
+ }
10
13
  /**
11
14
  * Canonical ordered list of login flags. Acts as the single source of truth —
12
15
  * `AuthFlag`, `AUTH_FLAGS` (validation), and the display order of re-login
@@ -16,15 +19,33 @@ export interface WorkspaceConfig {
16
19
  */
17
20
  export declare const AUTH_FLAG_ORDER: readonly ["read-only", "app-management", "backups"];
18
21
  export type AuthFlag = (typeof AUTH_FLAG_ORDER)[number];
19
- export interface Config extends Record<string, unknown> {
20
- api_token?: string;
21
- pendingSecureStoreClear?: boolean;
22
+ /**
23
+ * Per-user record stored in `config.users`. The token itself lives in the OS
24
+ * credential manager under account `user-<id>`; `api_token` only appears here
25
+ * when the credential manager was unavailable at save time (plaintext fallback).
26
+ */
27
+ export interface StoredUser {
28
+ id: string;
29
+ email: string;
22
30
  auth_mode?: AuthMode;
23
31
  auth_scope?: string;
24
32
  auth_flags?: AuthFlag[];
33
+ api_token?: string;
34
+ pendingSecureStoreClear?: boolean;
35
+ }
36
+ export declare const CONFIG_VERSION: 2;
37
+ export interface Config extends Record<string, unknown> {
38
+ config_version?: number;
39
+ user?: UserConfig;
40
+ users?: StoredUser[];
25
41
  update_channel?: UpdateChannel;
26
42
  hc?: HelpCenterConfig;
27
43
  workspace?: WorkspaceConfig;
44
+ api_token?: string;
45
+ pendingSecureStoreClear?: boolean;
46
+ auth_mode?: AuthMode;
47
+ auth_scope?: string;
48
+ auth_flags?: AuthFlag[];
28
49
  }
29
50
  export declare const AUTH_FLAGS: ReadonlySet<AuthFlag>;
30
51
  export declare function readConfig(): Promise<Config>;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,WAAW,QAA2D,CAAA;AAEnF,MAAM,MAAM,QAAQ,GAAG,WAAW,GAAG,YAAY,GAAG,SAAS,CAAA;AAC7D,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,aAAa,CAAA;AAEpD,MAAM,WAAW,gBAAgB;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,eAAe;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,qDAAsD,CAAA;AAClF,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAA;AAEvD,MAAM,WAAW,MAAO,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACnD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,SAAS,CAAC,EAAE,QAAQ,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAA;IACvB,cAAc,CAAC,EAAE,aAAa,CAAA;IAC9B,EAAE,CAAC,EAAE,gBAAgB,CAAA;IACrB,SAAS,CAAC,EAAE,eAAe,CAAA;CAC9B;AAiBD,eAAO,MAAM,UAAU,EAAE,WAAW,CAAC,QAAQ,CAA4B,CAAA;AAGzE,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAQlD;AAED,MAAM,MAAM,gBAAgB,GAAG;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAE1F;;;;GAIG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAoClE;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB/D;AAOD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,CA6FjF"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,WAAW,QAA2D,CAAA;AAEnF,MAAM,MAAM,QAAQ,GAAG,WAAW,GAAG,YAAY,GAAG,SAAS,CAAA;AAC7D,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,aAAa,CAAA;AAEpD,MAAM,WAAW,gBAAgB;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,eAAe;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,MAAM,WAAW,UAAU;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;CACvB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,qDAAsD,CAAA;AAClF,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAA;AAEvD;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,QAAQ,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uBAAuB,CAAC,EAAE,OAAO,CAAA;CACpC;AAED,eAAO,MAAM,cAAc,EAAG,CAAU,CAAA;AAExC,MAAM,WAAW,MAAO,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACnD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAA;IACpB,cAAc,CAAC,EAAE,aAAa,CAAA;IAC9B,EAAE,CAAC,EAAE,gBAAgB,CAAA;IACrB,SAAS,CAAC,EAAE,eAAe,CAAA;IAG3B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,SAAS,CAAC,EAAE,QAAQ,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAA;CAC1B;AAgCD,eAAO,MAAM,UAAU,EAAE,WAAW,CAAC,QAAQ,CAA4B,CAAA;AAGzE,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAQlD;AAED,MAAM,MAAM,gBAAgB,GAAG;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAE1F;;;;GAIG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAoClE;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB/D;AAOD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,CA6KjF"}
@@ -12,15 +12,30 @@ export const CONFIG_PATH = join(homedir(), '.config', 'todoist-cli', 'config.jso
12
12
  * command; everything downstream stays consistent.
13
13
  */
14
14
  export const AUTH_FLAG_ORDER = ['read-only', 'app-management', 'backups'];
15
+ export const CONFIG_VERSION = 2;
15
16
  const KNOWN_CONFIG_KEYS = new Set([
17
+ 'config_version',
18
+ 'user',
19
+ 'users',
20
+ 'update_channel',
21
+ 'hc',
22
+ 'workspace',
23
+ // legacy v1 keys (tolerated until migration runs)
16
24
  'api_token',
17
25
  'pendingSecureStoreClear',
18
26
  'auth_mode',
19
27
  'auth_scope',
20
28
  'auth_flags',
21
- 'update_channel',
22
- 'hc',
23
- 'workspace',
29
+ ]);
30
+ const KNOWN_USER_CONFIG_KEYS = new Set(['defaultUser']);
31
+ const KNOWN_STORED_USER_KEYS = new Set([
32
+ 'id',
33
+ 'email',
34
+ 'auth_mode',
35
+ 'auth_scope',
36
+ 'auth_flags',
37
+ 'api_token',
38
+ 'pendingSecureStoreClear',
24
39
  ]);
25
40
  const KNOWN_HC_CONFIG_KEYS = new Set(['defaultLocale']);
26
41
  const KNOWN_WORKSPACE_CONFIG_KEYS = new Set(['defaultWorkspace']);
@@ -98,6 +113,71 @@ export function validateConfigForDoctor(config) {
98
113
  issues.push(`contains unrecognized key "${key}"`);
99
114
  }
100
115
  }
116
+ if (config.config_version !== undefined &&
117
+ (typeof config.config_version !== 'number' || config.config_version < 1)) {
118
+ issues.push('config_version must be a positive number');
119
+ }
120
+ if (config.user !== undefined) {
121
+ if (!isObject(config.user)) {
122
+ issues.push('user must be an object');
123
+ }
124
+ else {
125
+ for (const key of Object.keys(config.user)) {
126
+ if (!KNOWN_USER_CONFIG_KEYS.has(key)) {
127
+ issues.push(`user contains unrecognized key "${key}"`);
128
+ }
129
+ }
130
+ const defaultUser = config.user.defaultUser;
131
+ if (defaultUser !== undefined && typeof defaultUser !== 'string') {
132
+ issues.push('user.defaultUser must be a string');
133
+ }
134
+ }
135
+ }
136
+ if (config.users !== undefined) {
137
+ if (!Array.isArray(config.users)) {
138
+ issues.push('users must be an array');
139
+ }
140
+ else {
141
+ for (const [i, entry] of config.users.entries()) {
142
+ if (!isObject(entry)) {
143
+ issues.push(`users[${i}] must be an object`);
144
+ continue;
145
+ }
146
+ for (const key of Object.keys(entry)) {
147
+ if (!KNOWN_STORED_USER_KEYS.has(key)) {
148
+ issues.push(`users[${i}] contains unrecognized key "${key}"`);
149
+ }
150
+ }
151
+ if (typeof entry.id !== 'string' || !entry.id) {
152
+ issues.push(`users[${i}].id must be a non-empty string`);
153
+ }
154
+ if (typeof entry.email !== 'string' || !entry.email) {
155
+ issues.push(`users[${i}].email must be a non-empty string`);
156
+ }
157
+ if (entry.auth_mode !== undefined &&
158
+ (typeof entry.auth_mode !== 'string' ||
159
+ !AUTH_MODES.has(entry.auth_mode))) {
160
+ issues.push(`users[${i}].auth_mode must be one of: read-only, read-write, unknown`);
161
+ }
162
+ if (entry.auth_scope !== undefined && typeof entry.auth_scope !== 'string') {
163
+ issues.push(`users[${i}].auth_scope must be a string`);
164
+ }
165
+ if (entry.auth_flags !== undefined) {
166
+ if (!Array.isArray(entry.auth_flags) ||
167
+ !entry.auth_flags.every((flag) => typeof flag === 'string' && AUTH_FLAGS.has(flag))) {
168
+ issues.push(`users[${i}].auth_flags must be an array of: ${AUTH_FLAG_ORDER.join(', ')}`);
169
+ }
170
+ }
171
+ if (entry.api_token !== undefined && typeof entry.api_token !== 'string') {
172
+ issues.push(`users[${i}].api_token must be a string`);
173
+ }
174
+ if (entry.pendingSecureStoreClear !== undefined &&
175
+ typeof entry.pendingSecureStoreClear !== 'boolean') {
176
+ issues.push(`users[${i}].pendingSecureStoreClear must be a boolean`);
177
+ }
178
+ }
179
+ }
180
+ }
101
181
  if (config.api_token !== undefined && typeof config.api_token !== 'string') {
102
182
  issues.push('api_token must be a string');
103
183
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,7 @@ export interface GlobalArgs {
17
17
  noSpinner: boolean;
18
18
  raw: boolean;
19
19
  progressJsonl: string | true | false;
20
+ user: string | undefined;
20
21
  }
21
22
  /**
22
23
  * Parse well-known global flags from an argv array.
@@ -34,5 +35,13 @@ export declare function isAccessible(): boolean;
34
35
  export declare function isRawMode(): boolean;
35
36
  export declare function getVerboseLevel(): GlobalArgs['verbose'];
36
37
  export declare function getProgressJsonlPath(): string | true | false;
38
+ export declare function getRequestedUserRef(): string | undefined;
39
+ /**
40
+ * Remove `--user <ref>` / `--user=<ref>` from an argv array so commander —
41
+ * which has no global-option attachment — never sees the flag at subcommand
42
+ * level. Returns a new array; the original is not mutated. Stops at the `--`
43
+ * terminator so positional args after it are preserved verbatim.
44
+ */
45
+ export declare function stripUserFlag(argv: string[]): string[];
37
46
  export declare function shouldDisableSpinner(): boolean;
38
47
  //# sourceMappingURL=global-args.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"global-args.d.ts","sourceRoot":"","sources":["../../src/lib/global-args.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,EAAE,OAAO,CAAA;IACf,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC1B,UAAU,EAAE,OAAO,CAAA;IACnB,SAAS,EAAE,OAAO,CAAA;IAClB,GAAG,EAAE,OAAO,CAAA;IACZ,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,KAAK,CAAA;CACvC;AAOD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,UAAU,CAgE3D;AAeD,4DAA4D;AAC5D,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAMD,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAED,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED,wBAAgB,OAAO,IAAI,OAAO,CAEjC;AAED,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED,wBAAgB,eAAe,IAAI,UAAU,CAAC,SAAS,CAAC,CAEvD;AAED,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,IAAI,GAAG,KAAK,CAE5D;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAY9C"}
1
+ {"version":3,"file":"global-args.d.ts","sourceRoot":"","sources":["../../src/lib/global-args.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,EAAE,OAAO,CAAA;IACf,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC1B,UAAU,EAAE,OAAO,CAAA;IACnB,SAAS,EAAE,OAAO,CAAA;IAClB,GAAG,EAAE,OAAO,CAAA;IACZ,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,KAAK,CAAA;IACpC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;CAC3B;AAOD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,UAAU,CA4E3D;AAeD,4DAA4D;AAC5D,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAMD,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAED,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED,wBAAgB,OAAO,IAAI,OAAO,CAEjC;AAED,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED,wBAAgB,eAAe,IAAI,UAAU,CAAC,SAAS,CAAC,CAEvD;AAED,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,IAAI,GAAG,KAAK,CAE5D;AAED,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,SAAS,CAExD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CA2BtD;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAY9C"}
@@ -29,6 +29,7 @@ export function parseGlobalArgs(argv) {
29
29
  noSpinner: false,
30
30
  raw: false,
31
31
  progressJsonl: false,
32
+ user: undefined,
32
33
  };
33
34
  for (let i = 0; i < args.length; i++) {
34
35
  const arg = args[i];
@@ -57,6 +58,19 @@ export function parseGlobalArgs(argv) {
57
58
  else if (arg === '--raw') {
58
59
  result.raw = true;
59
60
  }
61
+ else if (arg === '--user' || arg.startsWith('--user=')) {
62
+ if (arg.includes('=')) {
63
+ result.user = arg.slice(arg.indexOf('=') + 1);
64
+ }
65
+ else if (i + 1 < args.length && !args[i + 1].startsWith('-')) {
66
+ // Only consume the next arg as the value when it doesn't look
67
+ // like another flag — `td --user --json ...` should leave
68
+ // `result.user` undefined so commander surfaces a usage error
69
+ // rather than silently swallowing `--json` as the user ref.
70
+ i++;
71
+ result.user = args[i];
72
+ }
73
+ }
60
74
  else if (arg === '--progress-jsonl' || arg.startsWith('--progress-jsonl=')) {
61
75
  if (arg.includes('=')) {
62
76
  // --progress-jsonl=path
@@ -128,6 +142,44 @@ export function getVerboseLevel() {
128
142
  export function getProgressJsonlPath() {
129
143
  return getGlobalArgs().progressJsonl;
130
144
  }
145
+ export function getRequestedUserRef() {
146
+ return getGlobalArgs().user;
147
+ }
148
+ /**
149
+ * Remove `--user <ref>` / `--user=<ref>` from an argv array so commander —
150
+ * which has no global-option attachment — never sees the flag at subcommand
151
+ * level. Returns a new array; the original is not mutated. Stops at the `--`
152
+ * terminator so positional args after it are preserved verbatim.
153
+ */
154
+ export function stripUserFlag(argv) {
155
+ const out = [];
156
+ let stopped = false;
157
+ for (let i = 0; i < argv.length; i++) {
158
+ const arg = argv[i];
159
+ if (stopped) {
160
+ out.push(arg);
161
+ continue;
162
+ }
163
+ if (arg === '--') {
164
+ stopped = true;
165
+ out.push(arg);
166
+ continue;
167
+ }
168
+ if (arg === '--user') {
169
+ // Consume the value too only when it doesn't look like another
170
+ // flag — keeps `td --user --json ...` from also stripping `--json`.
171
+ // Stays in lockstep with `parseGlobalArgs` above.
172
+ if (i + 1 < argv.length && !argv[i + 1].startsWith('-'))
173
+ i++;
174
+ continue;
175
+ }
176
+ if (arg.startsWith('--user=')) {
177
+ continue;
178
+ }
179
+ out.push(arg);
180
+ }
181
+ return out;
182
+ }
131
183
  export function shouldDisableSpinner() {
132
184
  if (process.env.TD_SPINNER === 'false')
133
185
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"global-args.js","sourceRoot":"","sources":["../../src/lib/global-args.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"global-args.js","sourceRoot":"","sources":["../../src/lib/global-args.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * One-time migration of v1 single-user auth state into the v2 multi-user
3
+ * shape. Invoked from `src/postinstall.ts` so existing installs upgrade
4
+ * transparently. Best-effort: any failure (offline, invalid token, keyring
5
+ * unavailable) leaves the v1 state untouched so the runtime fallback in
6
+ * `resolveActiveUser` can keep serving the legacy token until the next
7
+ * upgrade attempt or `td auth login`.
8
+ */
9
+ export interface MigrateAuthResult {
10
+ status: 'already-migrated' | 'no-legacy-state' | 'migrated' | 'skipped';
11
+ reason?: string;
12
+ migratedUserId?: string;
13
+ migratedEmail?: string;
14
+ }
15
+ interface MigrateOptions {
16
+ /** Suppress console output. Postinstall sets this; CLI surfaces use it via warn(). */
17
+ silent?: boolean;
18
+ /** Override fetch (for tests). */
19
+ fetchImpl?: typeof fetch;
20
+ }
21
+ export declare function migrateLegacyAuth(opts?: MigrateOptions): Promise<MigrateAuthResult>;
22
+ export {};
23
+ //# sourceMappingURL=migrate-auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate-auth.d.ts","sourceRoot":"","sources":["../../src/lib/migrate-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAUH,MAAM,WAAW,iBAAiB;IAC9B,MAAM,EAAE,kBAAkB,GAAG,iBAAiB,GAAG,UAAU,GAAG,SAAS,CAAA;IACvE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,aAAa,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,UAAU,cAAc;IACpB,sFAAsF;IACtF,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,kCAAkC;IAClC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CAC3B;AASD,wBAAsB,iBAAiB,CAAC,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAyF7F"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * One-time migration of v1 single-user auth state into the v2 multi-user
3
+ * shape. Invoked from `src/postinstall.ts` so existing installs upgrade
4
+ * transparently. Best-effort: any failure (offline, invalid token, keyring
5
+ * unavailable) leaves the v1 state untouched so the runtime fallback in
6
+ * `resolveActiveUser` can keep serving the legacy token until the next
7
+ * upgrade attempt or `td auth login`.
8
+ */
9
+ import { CONFIG_VERSION, readConfig, writeConfig } from './config.js';
10
+ import { accountForUser, createSecureStore, LEGACY_ACCOUNT_NAME, SecureStoreUnavailableError, } from './secure-store.js';
11
+ const USER_ENDPOINT = 'https://api.todoist.com/api/v1/user';
12
+ export async function migrateLegacyAuth(opts = {}) {
13
+ const fetchImpl = opts.fetchImpl ?? fetch;
14
+ const config = await readConfig();
15
+ // Already on v2 — the presence of `users` is the marker. Empty array still
16
+ // counts as migrated (clean slate after a logout).
17
+ if (Array.isArray(config.users)) {
18
+ return { status: 'already-migrated' };
19
+ }
20
+ const legacyToken = await loadLegacyToken(config);
21
+ if (!legacyToken) {
22
+ // No usable token to migrate. Still write the v2 marker so the runtime
23
+ // resolver doesn't keep looking for one — but only if there's nothing
24
+ // there at all (untouched config file).
25
+ if (config.api_token === undefined &&
26
+ config.auth_mode === undefined &&
27
+ config.auth_scope === undefined &&
28
+ config.auth_flags === undefined &&
29
+ !config.pendingSecureStoreClear) {
30
+ return { status: 'no-legacy-state' };
31
+ }
32
+ // Legacy state exists (e.g., pendingSecureStoreClear) but no token.
33
+ // Clean up to v2 shape.
34
+ try {
35
+ await writeConfig(toV2(stripLegacy(config), []));
36
+ }
37
+ catch (error) {
38
+ return skipped(opts, `failed to clean up legacy config (${describe(error)})`);
39
+ }
40
+ return { status: 'migrated' };
41
+ }
42
+ // Identify the user behind the legacy token via a one-shot REST call —
43
+ // no SDK import to keep postinstall lightweight.
44
+ let user;
45
+ try {
46
+ user = await fetchUser(legacyToken, fetchImpl);
47
+ }
48
+ catch (error) {
49
+ return skipped(opts, `could not identify Todoist user (${describe(error)})`);
50
+ }
51
+ const record = {
52
+ id: user.id,
53
+ email: user.email,
54
+ auth_mode: config.auth_mode,
55
+ auth_scope: config.auth_scope,
56
+ auth_flags: config.auth_flags,
57
+ };
58
+ // Move the token into the per-user keyring slot.
59
+ let storedSecurely = false;
60
+ try {
61
+ const userStore = createSecureStore(accountForUser(user.id));
62
+ await userStore.setSecret(legacyToken);
63
+ storedSecurely = true;
64
+ }
65
+ catch (error) {
66
+ if (!(error instanceof SecureStoreUnavailableError)) {
67
+ return skipped(opts, `failed to write user-scoped credential (${describe(error)})`);
68
+ }
69
+ }
70
+ if (!storedSecurely) {
71
+ record.api_token = legacyToken;
72
+ }
73
+ const next = toV2(stripLegacy(config), [record], user.id);
74
+ try {
75
+ await writeConfig(next);
76
+ }
77
+ catch (error) {
78
+ return skipped(opts, `failed to update config (${describe(error)})`);
79
+ }
80
+ // Clean up the legacy keyring entry — best effort, never fatal.
81
+ try {
82
+ const legacyStore = createSecureStore(LEGACY_ACCOUNT_NAME);
83
+ await legacyStore.deleteSecret();
84
+ }
85
+ catch {
86
+ // ignore
87
+ }
88
+ if (!opts.silent) {
89
+ console.error(`todoist-cli: migrated existing token to multi-user store (${user.email}).`);
90
+ }
91
+ return { status: 'migrated', migratedUserId: user.id, migratedEmail: user.email };
92
+ }
93
+ async function loadLegacyToken(config) {
94
+ if (typeof config.api_token === 'string' && config.api_token.trim()) {
95
+ return config.api_token.trim();
96
+ }
97
+ try {
98
+ const legacyStore = createSecureStore(LEGACY_ACCOUNT_NAME);
99
+ const stored = await legacyStore.getSecret();
100
+ if (stored?.trim())
101
+ return stored.trim();
102
+ }
103
+ catch (error) {
104
+ if (!(error instanceof SecureStoreUnavailableError))
105
+ throw error;
106
+ }
107
+ return null;
108
+ }
109
+ async function fetchUser(token, fetchImpl) {
110
+ const response = await fetchImpl(USER_ENDPOINT, {
111
+ headers: { Authorization: `Bearer ${token}` },
112
+ });
113
+ if (!response.ok) {
114
+ throw new Error(`HTTP ${response.status} ${response.statusText}`);
115
+ }
116
+ const data = (await response.json());
117
+ if (typeof data.id !== 'string' || !data.id) {
118
+ throw new Error('response missing user id');
119
+ }
120
+ if (typeof data.email !== 'string' || !data.email) {
121
+ throw new Error('response missing user email');
122
+ }
123
+ return { id: data.id, email: data.email };
124
+ }
125
+ function toV2(config, users, defaultUserId) {
126
+ const next = { ...config, config_version: CONFIG_VERSION, users };
127
+ if (defaultUserId) {
128
+ next.user = { ...next.user, defaultUser: defaultUserId };
129
+ }
130
+ return next;
131
+ }
132
+ function stripLegacy(config) {
133
+ const { api_token: _t, auth_mode: _m, auth_scope: _s, auth_flags: _f, pendingSecureStoreClear: _p, ...rest } = config;
134
+ return rest;
135
+ }
136
+ function describe(error) {
137
+ return error instanceof Error && error.message ? error.message : String(error);
138
+ }
139
+ function skipped(opts, reason) {
140
+ if (!opts.silent) {
141
+ console.error(`todoist-cli: skipped legacy auth migration — ${reason}.`);
142
+ }
143
+ return { status: 'skipped', reason };
144
+ }
145
+ //# sourceMappingURL=migrate-auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate-auth.js","sourceRoot":"","sources":["../../src/lib/migrate-auth.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,8 @@
1
+ /**
2
+ * Legacy single-user account name. Read once during migration to v2 storage,
3
+ * then deleted. New code should always pass an explicit `user-<id>` account.
4
+ */
5
+ export declare const LEGACY_ACCOUNT_NAME = "api-token";
1
6
  export declare const SECURE_STORE_DESCRIPTION = "system credential manager";
2
7
  export declare class SecureStoreUnavailableError extends Error {
3
8
  constructor(message?: string);
@@ -7,5 +12,14 @@ export interface SecureStore {
7
12
  setSecret(secret: string): Promise<void>;
8
13
  deleteSecret(): Promise<boolean>;
9
14
  }
10
- export declare function createSecureStore(): SecureStore;
15
+ /**
16
+ * Build the keyring account name for a given Todoist user id.
17
+ */
18
+ export declare function accountForUser(userId: string): string;
19
+ /**
20
+ * Create a secure-store handle for a specific keyring account. Pass the result
21
+ * of `accountForUser(id)` for per-user tokens, or `LEGACY_ACCOUNT_NAME` when
22
+ * reading/cleaning up the v1 single-user entry.
23
+ */
24
+ export declare function createSecureStore(account?: string): SecureStore;
11
25
  //# sourceMappingURL=secure-store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"secure-store.d.ts","sourceRoot":"","sources":["../../src/lib/secure-store.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,wBAAwB,8BAA8B,CAAA;AAEnE,qBAAa,2BAA4B,SAAQ,KAAK;gBACtC,OAAO,SAA6C;CAInE;AAED,MAAM,WAAW,WAAW;IACxB,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACnC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxC,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;CACnC;AAED,wBAAgB,iBAAiB,IAAI,WAAW,CA6B/C"}
1
+ {"version":3,"file":"secure-store.d.ts","sourceRoot":"","sources":["../../src/lib/secure-store.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,mBAAmB,cAAc,CAAA;AAE9C,eAAO,MAAM,wBAAwB,8BAA8B,CAAA;AAEnE,qBAAa,2BAA4B,SAAQ,KAAK;gBACtC,OAAO,SAA6C;CAInE;AAED,MAAM,WAAW,WAAW;IACxB,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACnC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxC,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;CACnC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,MAA4B,GAAG,WAAW,CA6BpF"}
@@ -1,5 +1,9 @@
1
1
  const SERVICE_NAME = 'todoist-cli';
2
- const ACCOUNT_NAME = 'api-token';
2
+ /**
3
+ * Legacy single-user account name. Read once during migration to v2 storage,
4
+ * then deleted. New code should always pass an explicit `user-<id>` account.
5
+ */
6
+ export const LEGACY_ACCOUNT_NAME = 'api-token';
3
7
  export const SECURE_STORE_DESCRIPTION = 'system credential manager';
4
8
  export class SecureStoreUnavailableError extends Error {
5
9
  constructor(message = 'System credential storage is unavailable') {
@@ -7,10 +11,21 @@ export class SecureStoreUnavailableError extends Error {
7
11
  this.name = 'SecureStoreUnavailableError';
8
12
  }
9
13
  }
10
- export function createSecureStore() {
14
+ /**
15
+ * Build the keyring account name for a given Todoist user id.
16
+ */
17
+ export function accountForUser(userId) {
18
+ return `user-${userId}`;
19
+ }
20
+ /**
21
+ * Create a secure-store handle for a specific keyring account. Pass the result
22
+ * of `accountForUser(id)` for per-user tokens, or `LEGACY_ACCOUNT_NAME` when
23
+ * reading/cleaning up the v1 single-user entry.
24
+ */
25
+ export function createSecureStore(account = LEGACY_ACCOUNT_NAME) {
11
26
  return {
12
27
  async getSecret() {
13
- const entry = await getEntry();
28
+ const entry = await getEntry(account);
14
29
  try {
15
30
  return (await entry.getPassword()) ?? null;
16
31
  }
@@ -19,7 +34,7 @@ export function createSecureStore() {
19
34
  }
20
35
  },
21
36
  async setSecret(secret) {
22
- const entry = await getEntry();
37
+ const entry = await getEntry(account);
23
38
  try {
24
39
  await entry.setPassword(secret);
25
40
  }
@@ -28,7 +43,7 @@ export function createSecureStore() {
28
43
  }
29
44
  },
30
45
  async deleteSecret() {
31
- const entry = await getEntry();
46
+ const entry = await getEntry(account);
32
47
  try {
33
48
  return await entry.deleteCredential();
34
49
  }
@@ -38,10 +53,10 @@ export function createSecureStore() {
38
53
  },
39
54
  };
40
55
  }
41
- async function getEntry() {
56
+ async function getEntry(account) {
42
57
  try {
43
58
  const { AsyncEntry } = await import('@napi-rs/keyring');
44
- return new AsyncEntry(SERVICE_NAME, ACCOUNT_NAME);
59
+ return new AsyncEntry(SERVICE_NAME, account);
45
60
  }
46
61
  catch (error) {
47
62
  throw toUnavailableError(error);
@@ -1 +1 @@
1
- {"version":3,"file":"secure-store.js","sourceRoot":"","sources":["../../src/lib/secure-store.ts"],"names":[],"mappings":"AAAA,MAAM,YAAY,GAAG,aAAa,CAAA;AAClC,MAAM,YAAY,GAAG,WAAW,CAAA;AAEhC,MAAM,CAAC,MAAM,wBAAwB,GAAG,2BAA2B,CAAA;AAEnE,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IAClD,YAAY,OAAO,GAAG,0CAA0C;QAC5D,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAA;IAC7C,CAAC;CACJ;AAQD,MAAM,UAAU,iBAAiB;IAC7B,OAAO;QACH,KAAK,CAAC,SAAS;YACX,MAAM,KAAK,GAAG,MAAM,QAAQ,EAAE,CAAA;YAC9B,IAAI,CAAC;gBACD,OAAO,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAA;YAC9C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAA;YACnC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,SAAS,CAAC,MAAc;YAC1B,MAAM,KAAK,GAAG,MAAM,QAAQ,EAAE,CAAA;YAC9B,IAAI,CAAC;gBACD,MAAM,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;YACnC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAA;YACnC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,YAAY;YACd,MAAM,KAAK,GAAG,MAAM,QAAQ,EAAE,CAAA;YAC9B,IAAI,CAAC;gBACD,OAAO,MAAM,KAAK,CAAC,gBAAgB,EAAE,CAAA;YACzC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAA;YACnC,CAAC;QACL,CAAC;KACJ,CAAA;AACL,CAAC;AAED,KAAK,UAAU,QAAQ;IACnB,IAAI,CAAC;QACD,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAA;QACvD,OAAO,IAAI,UAAU,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;IACrD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAA;IACnC,CAAC;AACL,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACtC,IAAI,KAAK,YAAY,2BAA2B,EAAE,CAAC;QAC/C,OAAO,KAAK,CAAA;IAChB,CAAC;IAED,MAAM,OAAO,GACT,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,0CAA0C,CAAA;IACvF,OAAO,IAAI,2BAA2B,CAAC,OAAO,CAAC,CAAA;AACnD,CAAC"}
1
+ {"version":3,"file":"secure-store.js","sourceRoot":"","sources":["../../src/lib/secure-store.ts"],"names":[],"mappings":"AAAA,MAAM,YAAY,GAAG,aAAa,CAAA;AAElC;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAA;AAE9C,MAAM,CAAC,MAAM,wBAAwB,GAAG,2BAA2B,CAAA;AAEnE,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IAClD,YAAY,OAAO,GAAG,0CAA0C;QAC5D,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAA;IAC7C,CAAC;CACJ;AAQD;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAc;IACzC,OAAO,QAAQ,MAAM,EAAE,CAAA;AAC3B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAkB,mBAAmB;IACnE,OAAO;QACH,KAAK,CAAC,SAAS;YACX,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAA;YACrC,IAAI,CAAC;gBACD,OAAO,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAA;YAC9C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAA;YACnC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,SAAS,CAAC,MAAc;YAC1B,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAA;YACrC,IAAI,CAAC;gBACD,MAAM,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;YACnC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAA;YACnC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,YAAY;YACd,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAA;YACrC,IAAI,CAAC;gBACD,OAAO,MAAM,KAAK,CAAC,gBAAgB,EAAE,CAAA;YACzC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAA;YACnC,CAAC;QACL,CAAC;KACJ,CAAA;AACL,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,OAAe;IACnC,IAAI,CAAC;QACD,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAA;QACvD,OAAO,IAAI,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IAChD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAA;IACnC,CAAC;AACL,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACtC,IAAI,KAAK,YAAY,2BAA2B,EAAE,CAAC;QAC/C,OAAO,KAAK,CAAA;IAChB,CAAC;IAED,MAAM,OAAO,GACT,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,0CAA0C,CAAA;IACvF,OAAO,IAAI,2BAA2B,CAAC,OAAO,CAAC,CAAA;AACnD,CAAC"}