zele 0.3.0 → 0.3.5

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 (157) hide show
  1. package/README.md +1 -1
  2. package/bin/zele +27 -0
  3. package/dist/api-utils.d.ts +51 -2
  4. package/dist/api-utils.js +89 -3
  5. package/dist/api-utils.js.map +1 -1
  6. package/dist/auth.d.ts +27 -6
  7. package/dist/auth.js +185 -129
  8. package/dist/auth.js.map +1 -1
  9. package/dist/calendar-client.d.ts +16 -9
  10. package/dist/calendar-client.js +163 -59
  11. package/dist/calendar-client.js.map +1 -1
  12. package/dist/cli.js +26 -1
  13. package/dist/cli.js.map +1 -1
  14. package/dist/commands/attachment.js +17 -15
  15. package/dist/commands/attachment.js.map +1 -1
  16. package/dist/commands/auth-cmd.js +20 -9
  17. package/dist/commands/auth-cmd.js.map +1 -1
  18. package/dist/commands/calendar.js +67 -78
  19. package/dist/commands/calendar.js.map +1 -1
  20. package/dist/commands/draft.js +25 -18
  21. package/dist/commands/draft.js.map +1 -1
  22. package/dist/commands/label.js +33 -45
  23. package/dist/commands/label.js.map +1 -1
  24. package/dist/commands/mail-actions.js +11 -13
  25. package/dist/commands/mail-actions.js.map +1 -1
  26. package/dist/commands/mail.js +112 -126
  27. package/dist/commands/mail.js.map +1 -1
  28. package/dist/commands/profile.js +18 -21
  29. package/dist/commands/profile.js.map +1 -1
  30. package/dist/commands/watch.js +33 -261
  31. package/dist/commands/watch.js.map +1 -1
  32. package/dist/db.js +12 -13
  33. package/dist/db.js.map +1 -1
  34. package/dist/generated/browser.d.ts +12 -27
  35. package/dist/generated/client.d.ts +13 -28
  36. package/dist/generated/client.js +1 -1
  37. package/dist/generated/commonInputTypes.d.ts +90 -26
  38. package/dist/generated/enums.d.ts +0 -4
  39. package/dist/generated/enums.js +0 -3
  40. package/dist/generated/enums.js.map +1 -1
  41. package/dist/generated/internal/class.d.ts +22 -55
  42. package/dist/generated/internal/class.js +12 -4
  43. package/dist/generated/internal/class.js.map +1 -1
  44. package/dist/generated/internal/prismaNamespace.d.ts +272 -511
  45. package/dist/generated/internal/prismaNamespace.js +54 -66
  46. package/dist/generated/internal/prismaNamespace.js.map +1 -1
  47. package/dist/generated/internal/prismaNamespaceBrowser.d.ts +60 -74
  48. package/dist/generated/internal/prismaNamespaceBrowser.js +50 -62
  49. package/dist/generated/internal/prismaNamespaceBrowser.js.map +1 -1
  50. package/dist/generated/models/Account.d.ts +1637 -0
  51. package/dist/generated/models/Account.js +2 -0
  52. package/dist/generated/models/Account.js.map +1 -0
  53. package/dist/generated/models/CalendarList.d.ts +1161 -0
  54. package/dist/generated/models/CalendarList.js +2 -0
  55. package/dist/generated/models/CalendarList.js.map +1 -0
  56. package/dist/generated/models/Label.d.ts +1161 -0
  57. package/dist/generated/models/Label.js +2 -0
  58. package/dist/generated/models/Label.js.map +1 -0
  59. package/dist/generated/models/Profile.d.ts +1269 -0
  60. package/dist/generated/models/Profile.js +2 -0
  61. package/dist/generated/models/Profile.js.map +1 -0
  62. package/dist/generated/models/SyncState.d.ts +1130 -0
  63. package/dist/generated/models/SyncState.js +2 -0
  64. package/dist/generated/models/SyncState.js.map +1 -0
  65. package/dist/generated/models/Thread.d.ts +1608 -0
  66. package/dist/generated/models/Thread.js +2 -0
  67. package/dist/generated/models/Thread.js.map +1 -0
  68. package/dist/generated/models.d.ts +6 -9
  69. package/dist/gmail-client.d.ts +119 -94
  70. package/dist/gmail-client.js +862 -322
  71. package/dist/gmail-client.js.map +1 -1
  72. package/dist/mail-tui.d.ts +1 -0
  73. package/dist/mail-tui.js +517 -0
  74. package/dist/mail-tui.js.map +1 -0
  75. package/dist/output.d.ts +6 -0
  76. package/dist/output.js +124 -11
  77. package/dist/output.js.map +1 -1
  78. package/package.json +39 -11
  79. package/schema.prisma +81 -113
  80. package/src/api-utils.ts +103 -5
  81. package/src/auth.ts +224 -143
  82. package/src/calendar-client.ts +196 -89
  83. package/src/cli.ts +30 -1
  84. package/src/commands/attachment.ts +18 -19
  85. package/src/commands/auth-cmd.ts +19 -9
  86. package/src/commands/calendar.ts +42 -85
  87. package/src/commands/draft.ts +19 -22
  88. package/src/commands/label.ts +21 -57
  89. package/src/commands/mail-actions.ts +11 -19
  90. package/src/commands/mail.ts +102 -147
  91. package/src/commands/profile.ts +12 -28
  92. package/src/commands/watch.ts +37 -304
  93. package/src/db.ts +13 -16
  94. package/src/generated/browser.ts +49 -0
  95. package/src/generated/client.ts +71 -0
  96. package/src/generated/commonInputTypes.ts +332 -0
  97. package/src/generated/enums.ts +17 -0
  98. package/src/generated/internal/class.ts +250 -0
  99. package/src/generated/internal/prismaNamespace.ts +1198 -0
  100. package/src/generated/internal/prismaNamespaceBrowser.ts +169 -0
  101. package/src/generated/models/Account.ts +1848 -0
  102. package/src/generated/models/CalendarList.ts +1331 -0
  103. package/src/generated/models/Label.ts +1331 -0
  104. package/src/generated/models/Profile.ts +1439 -0
  105. package/src/generated/models/SyncState.ts +1300 -0
  106. package/src/generated/models/Thread.ts +1787 -0
  107. package/src/generated/models.ts +17 -0
  108. package/src/gmail-client.test.ts +59 -0
  109. package/src/gmail-client.ts +1034 -429
  110. package/src/mail-tui.tsx +1061 -0
  111. package/src/output.test.ts +1093 -0
  112. package/src/output.ts +128 -13
  113. package/src/schema.sql +58 -68
  114. package/src/test-fixtures/email-html/safe-claude-event.html +28 -0
  115. package/src/test-fixtures/email-html/safe-product-announcement.html +25 -0
  116. package/src/test-fixtures/email-html/safe-tracked-links.html +27 -0
  117. package/src/test-fixtures/email-html-snapshots/safe-claude-event.html.md +9 -0
  118. package/src/test-fixtures/email-html-snapshots/safe-product-announcement.html.md +13 -0
  119. package/src/test-fixtures/email-html-snapshots/safe-tracked-links.html.md +7 -0
  120. package/AGENTS.md +0 -26
  121. package/CHANGELOG.md +0 -43
  122. package/dist/generated/models/accounts.d.ts +0 -2000
  123. package/dist/generated/models/accounts.js +0 -2
  124. package/dist/generated/models/accounts.js.map +0 -1
  125. package/dist/generated/models/calendar_events.d.ts +0 -1433
  126. package/dist/generated/models/calendar_events.js +0 -2
  127. package/dist/generated/models/calendar_events.js.map +0 -1
  128. package/dist/generated/models/calendar_lists.d.ts +0 -1131
  129. package/dist/generated/models/calendar_lists.js +0 -2
  130. package/dist/generated/models/calendar_lists.js.map +0 -1
  131. package/dist/generated/models/label_counts.d.ts +0 -1131
  132. package/dist/generated/models/label_counts.js +0 -2
  133. package/dist/generated/models/label_counts.js.map +0 -1
  134. package/dist/generated/models/labels.d.ts +0 -1131
  135. package/dist/generated/models/labels.js +0 -2
  136. package/dist/generated/models/labels.js.map +0 -1
  137. package/dist/generated/models/profiles.d.ts +0 -1131
  138. package/dist/generated/models/profiles.js +0 -2
  139. package/dist/generated/models/profiles.js.map +0 -1
  140. package/dist/generated/models/sync_states.d.ts +0 -1107
  141. package/dist/generated/models/sync_states.js +0 -2
  142. package/dist/generated/models/sync_states.js.map +0 -1
  143. package/dist/generated/models/thread_lists.d.ts +0 -1404
  144. package/dist/generated/models/thread_lists.js +0 -2
  145. package/dist/generated/models/thread_lists.js.map +0 -1
  146. package/dist/generated/models/threads.d.ts +0 -1247
  147. package/dist/generated/models/threads.js +0 -2
  148. package/dist/generated/models/threads.js.map +0 -1
  149. package/dist/gmail-cache.d.ts +0 -60
  150. package/dist/gmail-cache.js +0 -264
  151. package/dist/gmail-cache.js.map +0 -1
  152. package/docs/gogcli-gmail-implementation.md +0 -599
  153. package/scripts/test-device-code-clients.ts +0 -186
  154. package/scripts/test-micropython-scopes.ts +0 -72
  155. package/scripts/test-oauth-clients.ts +0 -257
  156. package/src/gmail-cache.ts +0 -339
  157. package/tsconfig.json +0 -16
package/dist/auth.js CHANGED
@@ -1,26 +1,20 @@
1
1
  // OAuth2 authentication module for zele.
2
2
  // Multi-account support: tokens are stored in the Prisma-managed SQLite DB
3
- // (accounts table) keyed by email. Supports login (browser OAuth), per-account
4
- // token refresh, and helpers to get authenticated GmailClient instances for
5
- // one or all accounts.
6
- // Migration: on first use, if legacy ~/.zele/tokens.json exists, it is
7
- // imported into the DB and renamed to tokens.json.bak.
3
+ // (accounts table) keyed by (email, app_id). Supports login (browser OAuth),
4
+ // per-account token refresh, and helpers to get authenticated GmailClient
5
+ // instances for one or all accounts.
6
+ // app_id is the Google OAuth client ID used during login, enabling future
7
+ // support for multiple OAuth apps per email.
8
8
  import http from 'node:http';
9
9
  import readline from 'node:readline';
10
- import fs from 'node:fs';
11
- import path from 'node:path';
12
- import os from 'node:os';
10
+ import { spawn } from 'node:child_process';
13
11
  import { OAuth2Client } from 'google-auth-library';
14
12
  import fkill from 'fkill';
15
13
  import pc from 'picocolors';
16
14
  import { getPrisma } from './db.js';
17
15
  import { GmailClient } from './gmail-client.js';
18
16
  import { CalendarClient } from './calendar-client.js';
19
- // ---------------------------------------------------------------------------
20
- // Config
21
- // ---------------------------------------------------------------------------
22
- const ZELE_DIR = path.join(os.homedir(), '.zele');
23
- const LEGACY_TOKENS_FILE = path.join(ZELE_DIR, 'tokens.json');
17
+ import * as errore from 'errore';
24
18
  // ---------------------------------------------------------------------------
25
19
  // Known open-source Google OAuth clients (Desktop app type).
26
20
  // All support localhost + OOB redirects. All have Gmail, Calendar, Drive,
@@ -35,80 +29,75 @@ const OAUTH_CLIENTS = {
35
29
  thunderbird: {
36
30
  clientId: '406964657835-aq8lmia8j95dhl1a2bvharmfk3t1hgqj.apps.googleusercontent.com',
37
31
  clientSecret: 'kSmqreRr0qwBWJgbf5Y-PjSU',
32
+ redirectPort: 8089,
38
33
  },
39
34
  // GNOME Online Accounts — used by Evolution, GNOME Calendar, Nautilus (Drive).
40
35
  // Source: github.com/GNOME/gnome-online-accounts/blob/master/meson_options.txt
41
36
  gnome: {
42
37
  clientId: '44438659992-7kgjeitenc16ssihbtdjbgguch7ju55s.apps.googleusercontent.com',
43
38
  clientSecret: '-gMLuQyDiI0XrQS_vx_mhuYF',
39
+ redirectPort: 8089,
44
40
  },
45
41
  // KDE KAccounts — used by KMail, KOrganizer, Kontact.
46
42
  // Source: github.com/KDE/kaccounts-providers google.provider.in
47
43
  kde: {
48
44
  clientId: '317066460457-pkpkedrvt2ldq6g2hj1egfka2n7vpuoo.apps.googleusercontent.com',
49
45
  clientSecret: 'Y8eFAaWfcanV3amZdDvtbYUq',
46
+ redirectPort: 8089,
50
47
  },
51
48
  };
52
49
  const ACTIVE_CLIENT = OAUTH_CLIENTS.thunderbird;
53
50
  const CLIENT_ID = process.env.ZELE_CLIENT_ID ?? ACTIVE_CLIENT.clientId;
54
51
  const CLIENT_SECRET = process.env.ZELE_CLIENT_SECRET ?? ACTIVE_CLIENT.clientSecret;
55
- const REDIRECT_PORT = 8089;
56
52
  const SCOPES = [
57
53
  'https://mail.google.com/', // Gmail (full)
58
54
  'https://www.googleapis.com/auth/calendar', // Calendar (full)
59
55
  'https://www.googleapis.com/auth/userinfo.email', // Email identity
60
56
  ];
61
57
  // ---------------------------------------------------------------------------
62
- // OAuth2 client factory
58
+ // OAuth client resolution
63
59
  // ---------------------------------------------------------------------------
64
- export function createOAuth2Client() {
65
- return new OAuth2Client({
66
- clientId: CLIENT_ID,
67
- clientSecret: CLIENT_SECRET,
68
- redirectUri: `http://localhost:${REDIRECT_PORT}`,
69
- });
60
+ /**
61
+ * Resolve OAuth credentials and redirect port for a given appId.
62
+ * Looks up the matching entry in OAUTH_CLIENTS by client ID.
63
+ * Falls back to the active client / env vars.
64
+ */
65
+ function resolveOAuthClient(appId) {
66
+ let clientId = CLIENT_ID;
67
+ let clientSecret = CLIENT_SECRET;
68
+ let redirectPort = ACTIVE_CLIENT.redirectPort;
69
+ if (appId) {
70
+ // Look up by client ID value in OAUTH_CLIENTS
71
+ const entry = Object.values(OAUTH_CLIENTS).find((c) => c.clientId === appId);
72
+ if (entry) {
73
+ clientId = entry.clientId;
74
+ clientSecret = entry.clientSecret;
75
+ redirectPort = entry.redirectPort;
76
+ }
77
+ else {
78
+ // Unknown app ID — use it directly (custom client scenario).
79
+ // The caller must have set ZELE_CLIENT_SECRET or the token must
80
+ // already have a refresh_token that works without the secret.
81
+ clientId = appId;
82
+ }
83
+ }
84
+ return { clientId, clientSecret, redirectPort };
70
85
  }
71
86
  // ---------------------------------------------------------------------------
72
- // Legacy migration: tokens.json → DB
87
+ // OAuth2 client factory
73
88
  // ---------------------------------------------------------------------------
74
- async function migrateLegacyTokens() {
75
- if (!fs.existsSync(LEGACY_TOKENS_FILE))
76
- return;
77
- const prisma = await getPrisma();
78
- const count = await prisma.accounts.count();
79
- if (count > 0) {
80
- // DB already has accounts skip migration
81
- return;
82
- }
83
- try {
84
- const data = fs.readFileSync(LEGACY_TOKENS_FILE, 'utf-8');
85
- const tokens = JSON.parse(data);
86
- // We need to discover the email for this token
87
- const oauth2Client = createOAuth2Client();
88
- oauth2Client.setCredentials(tokens);
89
- // Refresh if expired
90
- if (tokens.expiry_date && tokens.expiry_date < Date.now()) {
91
- const { credentials } = await oauth2Client.refreshAccessToken();
92
- oauth2Client.setCredentials(credentials);
93
- Object.assign(tokens, credentials);
94
- }
95
- const client = new GmailClient({ auth: oauth2Client });
96
- const profile = await client.getProfile();
97
- const email = profile.emailAddress;
98
- await prisma.accounts.create({
99
- data: {
100
- email,
101
- tokens: JSON.stringify(tokens),
102
- updated_at: new Date(),
103
- },
104
- });
105
- // Rename old file so we don't migrate again
106
- fs.renameSync(LEGACY_TOKENS_FILE, LEGACY_TOKENS_FILE + '.bak');
107
- process.stderr.write(pc.green(`Migrated legacy tokens for ${email}`) + '\n');
108
- }
109
- catch (err) {
110
- process.stderr.write(pc.yellow(`Warning: legacy token migration failed: ${err}`) + '\n');
111
- }
89
+ /**
90
+ * Create an OAuth2Client. If appId is provided, looks up the matching
91
+ * client credentials from OAUTH_CLIENTS by client ID. Falls back to
92
+ * the active client / env vars.
93
+ */
94
+ export function createOAuth2Client(appId) {
95
+ const { clientId, clientSecret, redirectPort } = resolveOAuthClient(appId);
96
+ return new OAuth2Client({
97
+ clientId,
98
+ clientSecret,
99
+ redirectUri: `http://localhost:${redirectPort}`,
100
+ });
112
101
  }
113
102
  // ---------------------------------------------------------------------------
114
103
  // Browser OAuth flow
@@ -117,41 +106,74 @@ function extractCodeFromInput(input) {
117
106
  const trimmed = input.trim();
118
107
  if (!trimmed)
119
108
  return null;
120
- try {
121
- const url = new URL(trimmed);
109
+ const url = errore.tryFn(() => new URL(trimmed));
110
+ if (!(url instanceof Error)) {
122
111
  const code = url.searchParams.get('code');
123
112
  if (code)
124
113
  return code;
125
114
  }
126
- catch {
127
- // Not a URL
128
- }
129
115
  if (trimmed.length > 10 && !trimmed.includes(' ')) {
130
116
  return trimmed;
131
117
  }
132
118
  return null;
133
119
  }
134
- async function getAuthCodeFromBrowser(oauth2Client) {
120
+ function openUrlInBrowser(url) {
121
+ const command = process.platform === 'darwin'
122
+ ? { bin: 'open', args: [url] }
123
+ : process.platform === 'win32'
124
+ ? { bin: 'cmd', args: ['/c', 'start', '', url] }
125
+ : { bin: 'xdg-open', args: [url] };
126
+ const child = errore.tryFn(() => spawn(command.bin, command.args, {
127
+ detached: true,
128
+ stdio: 'ignore',
129
+ }));
130
+ if (child instanceof Error) {
131
+ return new Error(`Failed to open browser with ${command.bin}`, { cause: child });
132
+ }
133
+ child.unref();
134
+ }
135
+ async function getAuthCodeFromBrowser(oauth2Client, port, options) {
136
+ const openBrowser = options?.openBrowser ?? true;
137
+ const allowManualCodeEntry = options?.allowManualCodeEntry ?? true;
138
+ const showInstructions = options?.showInstructions ?? true;
135
139
  const authUrl = oauth2Client.generateAuthUrl({
136
140
  access_type: 'offline',
137
141
  scope: SCOPES,
138
142
  prompt: 'consent',
139
143
  });
140
- await fkill(`:${REDIRECT_PORT}`, { force: true, silent: true }).catch(() => { });
141
- process.stderr.write('\n' + pc.bold('1.') + ' Open this URL to authorize:\n\n');
142
- process.stderr.write(' ' + pc.cyan(pc.underline(authUrl)) + '\n\n');
143
- process.stderr.write(pc.bold('2.') + ' If running locally, the browser will redirect automatically.\n');
144
- process.stderr.write(pc.dim(' If running remotely, the redirect page won\'t load — that\'s fine.') + '\n');
145
- process.stderr.write(pc.dim(' Just copy the URL from your browser\'s address bar and paste it below.') + '\n\n');
146
- return new Promise((resolve, reject) => {
144
+ await errore.tryAsync({
145
+ try: () => fkill(`:${port}`, { force: true, silent: true }),
146
+ catch: (err) => new Error(String(err), { cause: err }),
147
+ });
148
+ if (showInstructions) {
149
+ console.error('\n' + pc.bold('1.') + ' Open this URL to authorize:\n');
150
+ console.error(' ' + pc.cyan(pc.underline(authUrl)) + '\n');
151
+ console.error(pc.bold('2.') + ' If running locally, the browser will redirect automatically.');
152
+ console.error(pc.dim(' If running remotely, the redirect page won\'t load — that\'s fine.'));
153
+ console.error(pc.dim(' Just copy the URL from your browser\'s address bar and paste it below.') + '\n');
154
+ }
155
+ if (openBrowser) {
156
+ const openResult = openUrlInBrowser(authUrl);
157
+ if (openResult instanceof Error && showInstructions) {
158
+ console.error(pc.yellow(`Could not auto-open browser: ${openResult.message}`));
159
+ console.error(pc.dim('Open the URL above manually.'));
160
+ }
161
+ }
162
+ return new Promise((resolve) => {
147
163
  let resolved = false;
148
164
  let server = null;
149
165
  let rl = null;
166
+ function closeServer() {
167
+ if (server) {
168
+ server.closeAllConnections();
169
+ server.close();
170
+ }
171
+ }
150
172
  function finish(code) {
151
173
  if (resolved)
152
174
  return;
153
175
  resolved = true;
154
- server?.close();
176
+ closeServer();
155
177
  if (rl) {
156
178
  rl.close();
157
179
  process.stdin.unref();
@@ -162,12 +184,12 @@ async function getAuthCodeFromBrowser(oauth2Client) {
162
184
  if (resolved)
163
185
  return;
164
186
  resolved = true;
165
- server?.close();
187
+ closeServer();
166
188
  rl?.close();
167
- reject(err);
189
+ resolve(err);
168
190
  }
169
191
  server = http.createServer((req, res) => {
170
- const url = new URL(req.url, `http://localhost:${REDIRECT_PORT}`);
192
+ const url = new URL(req.url, `http://localhost:${port}`);
171
193
  const code = url.searchParams.get('code');
172
194
  const error = url.searchParams.get('error');
173
195
  if (error) {
@@ -185,8 +207,11 @@ async function getAuthCodeFromBrowser(oauth2Client) {
185
207
  res.writeHead(400, { 'Content-Type': 'text/html' });
186
208
  res.end('<h1>No authorization code received</h1>');
187
209
  });
188
- server.listen(REDIRECT_PORT);
189
- if (process.stdin.isTTY) {
210
+ server.listen(port);
211
+ server.on('error', (err) => {
212
+ fail(new Error(`Failed to start local auth callback server on port ${port}`, { cause: err }));
213
+ });
214
+ if (allowManualCodeEntry && process.stdin.isTTY) {
190
215
  rl = readline.createInterface({ input: process.stdin, output: process.stderr });
191
216
  rl.question(pc.dim('Paste redirect URL here (or wait for auto-redirect): '), (answer) => {
192
217
  const code = extractCodeFromInput(answer);
@@ -194,8 +219,8 @@ async function getAuthCodeFromBrowser(oauth2Client) {
194
219
  finish(code);
195
220
  }
196
221
  else {
197
- process.stderr.write(pc.yellow('Could not extract authorization code from input.') + '\n');
198
- process.stderr.write(pc.dim('Waiting for browser redirect...') + '\n');
222
+ console.error(pc.yellow('Could not extract authorization code from input.'));
223
+ console.error(pc.dim('Waiting for browser redirect...'));
199
224
  }
200
225
  });
201
226
  }
@@ -206,42 +231,72 @@ async function getAuthCodeFromBrowser(oauth2Client) {
206
231
  // ---------------------------------------------------------------------------
207
232
  /**
208
233
  * Run the full browser OAuth flow and save the account to the DB.
209
- * Returns the email and an authenticated GmailClient.
234
+ * Returns either a successful login payload or an Error value.
210
235
  */
211
- export async function login() {
212
- const oauth2Client = createOAuth2Client();
213
- const code = await getAuthCodeFromBrowser(oauth2Client);
214
- process.stderr.write(pc.dim('Got authorization code, exchanging for tokens...') + '\n');
215
- const { tokens } = await oauth2Client.getToken(code);
236
+ export async function login(appId, options) {
237
+ const resolved = resolveOAuthClient(appId);
238
+ const oauth2Client = createOAuth2Client(appId);
239
+ const code = await getAuthCodeFromBrowser(oauth2Client, resolved.redirectPort, options);
240
+ if (code instanceof Error)
241
+ return code;
242
+ if (options?.showInstructions ?? true) {
243
+ console.error(pc.dim('Got authorization code, exchanging for tokens...'));
244
+ }
245
+ const tokenResponse = await errore.tryAsync({
246
+ try: () => oauth2Client.getToken(code),
247
+ catch: (err) => new Error('Failed to exchange authorization code for tokens', { cause: err }),
248
+ });
249
+ if (tokenResponse instanceof Error)
250
+ return tokenResponse;
251
+ const { tokens } = tokenResponse;
216
252
  oauth2Client.setCredentials(tokens);
217
253
  // Discover email
218
254
  const client = new GmailClient({ auth: oauth2Client });
219
255
  const profile = await client.getProfile();
256
+ if (profile instanceof Error)
257
+ return profile;
220
258
  const email = profile.emailAddress;
221
259
  // Upsert account in DB
222
260
  const prisma = await getPrisma();
223
- await prisma.accounts.upsert({
224
- where: { email },
225
- create: { email, tokens: JSON.stringify(tokens), updated_at: new Date() },
226
- update: { tokens: JSON.stringify(tokens), updated_at: new Date() },
261
+ const upsertResult = await errore.tryAsync({
262
+ try: () => prisma.account.upsert({
263
+ where: { email_appId: { email, appId: resolved.clientId } },
264
+ create: {
265
+ email,
266
+ appId: resolved.clientId,
267
+ accountStatus: 'active',
268
+ tokens: JSON.stringify(tokens),
269
+ createdAt: new Date(),
270
+ updatedAt: new Date(),
271
+ },
272
+ update: { tokens: JSON.stringify(tokens), updatedAt: new Date() },
273
+ }),
274
+ catch: (err) => new Error(`Failed to save account ${email}`, { cause: err }),
227
275
  });
228
- return { email, client };
276
+ if (upsertResult instanceof Error)
277
+ return upsertResult;
278
+ return { email, appId: resolved.clientId, client };
229
279
  }
230
280
  // ---------------------------------------------------------------------------
231
281
  // Logout: remove account from DB
232
282
  // ---------------------------------------------------------------------------
233
283
  export async function logout(email) {
234
284
  const prisma = await getPrisma();
235
- await prisma.accounts.delete({ where: { email } });
285
+ // Delete all app_id entries for this email (logout removes all credentials for the email)
286
+ const result = await errore.tryAsync({
287
+ try: () => prisma.account.deleteMany({ where: { email } }),
288
+ catch: (err) => new Error(`Failed to remove credentials for ${email}`, { cause: err }),
289
+ });
290
+ if (result instanceof Error)
291
+ return result;
236
292
  }
237
293
  // ---------------------------------------------------------------------------
238
294
  // Account listing
239
295
  // ---------------------------------------------------------------------------
240
296
  export async function listAccounts() {
241
- await migrateLegacyTokens();
242
297
  const prisma = await getPrisma();
243
- const rows = await prisma.accounts.findMany({ select: { email: true } });
244
- return rows.map((r) => r.email);
298
+ const rows = await prisma.account.findMany({ select: { email: true, appId: true } });
299
+ return rows.map((r) => ({ email: r.email, appId: r.appId }));
245
300
  }
246
301
  // ---------------------------------------------------------------------------
247
302
  // Get authenticated clients
@@ -249,26 +304,29 @@ export async function listAccounts() {
249
304
  /**
250
305
  * Create an authenticated OAuth2Client for a known account.
251
306
  * Loads tokens from DB, refreshes if expired, saves refreshed tokens back.
307
+ * Uses the stored app_id to create the OAuth2 client with the correct credentials.
252
308
  */
253
- async function authenticateAccount(email) {
309
+ async function authenticateAccount(account) {
254
310
  const prisma = await getPrisma();
255
- const row = await prisma.accounts.findUnique({ where: { email } });
311
+ const row = await prisma.account.findUnique({
312
+ where: { email_appId: { email: account.email, appId: account.appId } },
313
+ });
256
314
  if (!row) {
257
- throw new Error(`No account found for ${email}. Run: zele login`);
315
+ throw new Error(`No account found for ${account.email}. Run: zele login`);
258
316
  }
259
317
  const tokens = JSON.parse(row.tokens);
260
- const oauth2Client = createOAuth2Client();
318
+ const oauth2Client = createOAuth2Client(account.appId);
261
319
  oauth2Client.setCredentials(tokens);
262
320
  // Refresh if expired — merge to preserve refresh_token which Google
263
321
  // often omits from refresh responses
264
322
  if (tokens.expiry_date && tokens.expiry_date < Date.now()) {
265
- process.stderr.write(pc.dim(`Token expired for ${email}, refreshing...`) + '\n');
323
+ console.error(pc.dim(`Token expired for ${account.email}, refreshing...`));
266
324
  const { credentials } = await oauth2Client.refreshAccessToken();
267
325
  const merged = { ...tokens, ...credentials };
268
326
  oauth2Client.setCredentials(merged);
269
- await prisma.accounts.update({
270
- where: { email },
271
- data: { tokens: JSON.stringify(merged), updated_at: new Date() },
327
+ await prisma.account.update({
328
+ where: { email_appId: { email: account.email, appId: account.appId } },
329
+ data: { tokens: JSON.stringify(merged), updatedAt: new Date() },
272
330
  });
273
331
  }
274
332
  return oauth2Client;
@@ -278,21 +336,20 @@ async function authenticateAccount(email) {
278
336
  * If no accounts are registered, throws with a helpful message.
279
337
  */
280
338
  export async function getClients(accounts) {
281
- await migrateLegacyTokens();
282
- const allEmails = await listAccounts();
283
- if (allEmails.length === 0) {
339
+ const allAccounts = await listAccounts();
340
+ if (allAccounts.length === 0) {
284
341
  throw new Error('No accounts registered. Run: zele login');
285
342
  }
286
- const emails = accounts && accounts.length > 0
287
- ? allEmails.filter((e) => accounts.includes(e))
288
- : allEmails;
289
- if (emails.length === 0) {
290
- const available = allEmails.join(', ');
343
+ const filtered = accounts && accounts.length > 0
344
+ ? allAccounts.filter((a) => accounts.includes(a.email))
345
+ : allAccounts;
346
+ if (filtered.length === 0) {
347
+ const available = allAccounts.map((a) => a.email).join(', ');
291
348
  throw new Error(`No matching accounts. Available: ${available}`);
292
349
  }
293
- const results = await Promise.all(emails.map(async (email) => {
294
- const auth = await authenticateAccount(email);
295
- return { email, client: new GmailClient({ auth }) };
350
+ const results = await Promise.all(filtered.map(async (account) => {
351
+ const auth = await authenticateAccount(account);
352
+ return { email: account.email, appId: account.appId, client: new GmailClient({ auth, account }) };
296
353
  }));
297
354
  return results;
298
355
  }
@@ -315,24 +372,23 @@ export async function getClient(accounts) {
315
372
  * Get authenticated CalendarClient instances for all accounts (or filtered by email list).
316
373
  */
317
374
  export async function getCalendarClients(accounts) {
318
- await migrateLegacyTokens();
319
- const allEmails = await listAccounts();
320
- if (allEmails.length === 0) {
375
+ const allAccounts = await listAccounts();
376
+ if (allAccounts.length === 0) {
321
377
  throw new Error('No accounts registered. Run: zele login');
322
378
  }
323
- const emails = accounts && accounts.length > 0
324
- ? allEmails.filter((e) => accounts.includes(e))
325
- : allEmails;
326
- if (emails.length === 0) {
327
- const available = allEmails.join(', ');
379
+ const filtered = accounts && accounts.length > 0
380
+ ? allAccounts.filter((a) => accounts.includes(a.email))
381
+ : allAccounts;
382
+ if (filtered.length === 0) {
383
+ const available = allAccounts.map((a) => a.email).join(', ');
328
384
  throw new Error(`No matching accounts. Available: ${available}`);
329
385
  }
330
- const results = await Promise.all(emails.map(async (email) => {
331
- const auth = await authenticateAccount(email);
386
+ const results = await Promise.all(filtered.map(async (account) => {
387
+ const auth = await authenticateAccount(account);
332
388
  const { token } = await auth.getAccessToken();
333
389
  if (!token)
334
- throw new Error(`Failed to get access token for ${email}`);
335
- return { email, client: new CalendarClient({ accessToken: token, email }) };
390
+ throw new Error(`Failed to get access token for ${account.email}`);
391
+ return { email: account.email, appId: account.appId, client: new CalendarClient({ accessToken: token, email: account.email, appId: account.appId }) };
336
392
  }));
337
393
  return results;
338
394
  }
@@ -349,13 +405,13 @@ export async function getCalendarClient(accounts) {
349
405
  throw new Error(`Multiple accounts matched. Specify --account:\n ${emails}`);
350
406
  }
351
407
  export async function getAuthStatuses() {
352
- await migrateLegacyTokens();
353
408
  const prisma = await getPrisma();
354
- const rows = await prisma.accounts.findMany();
409
+ const rows = await prisma.account.findMany();
355
410
  return rows.map((row) => {
356
411
  const tokens = JSON.parse(row.tokens);
357
412
  return {
358
413
  email: row.email,
414
+ appId: row.appId,
359
415
  expiresAt: tokens.expiry_date ? new Date(tokens.expiry_date) : undefined,
360
416
  };
361
417
  });
package/dist/auth.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { AuthError, ApiError, NotFoundError, ParseError, MissingDataError } from './api-utils.js';
1
2
  export interface CalendarListItem {
2
3
  id: string;
3
4
  summary: string;
@@ -57,19 +58,25 @@ export interface FreeBusyResult {
57
58
  export declare class CalendarClient {
58
59
  private headers;
59
60
  private email;
61
+ private appId;
60
62
  private calendarCache;
61
63
  private timezoneCache;
62
- constructor({ accessToken, email }: {
64
+ constructor({ accessToken, email, appId }: {
63
65
  accessToken: string;
64
66
  email: string;
67
+ appId: string;
65
68
  });
66
69
  /** Update the access token (e.g. after refresh) */
67
70
  updateAccessToken(token: string): void;
71
+ private get account();
72
+ private getCachedCalendarList;
73
+ private cacheCalendarListData;
74
+ private invalidateCalendarLists;
68
75
  private fetchDAVCalendars;
69
76
  /** Resolve a calendarId to a DAVCalendar. 'primary' maps to the user's email. */
70
77
  private resolveCalendar;
71
- listCalendars(): Promise<CalendarListItem[]>;
72
- getTimezone(calendarId?: string): Promise<string>;
78
+ listCalendars(): Promise<CalendarListItem[] | AuthError | ApiError>;
79
+ getTimezone(calendarId?: string): Promise<string | AuthError | ApiError | NotFoundError>;
73
80
  listEvents({ calendarId, timeMin, timeMax, query, maxResults, pageToken, }?: {
74
81
  calendarId?: string;
75
82
  timeMin?: string;
@@ -77,11 +84,11 @@ export declare class CalendarClient {
77
84
  query?: string;
78
85
  maxResults?: number;
79
86
  pageToken?: string;
80
- }): Promise<EventListResult>;
87
+ }): Promise<EventListResult | AuthError | ApiError | NotFoundError>;
81
88
  getEvent({ calendarId, eventId, }: {
82
89
  calendarId?: string;
83
90
  eventId: string;
84
- }): Promise<CalendarEvent>;
91
+ }): Promise<CalendarEvent | AuthError | ApiError | NotFoundError>;
85
92
  createEvent({ calendarId, summary, start, end, allDay, description, location, attendees, withMeet, recurrence, reminders, colorId, visibility, transparency, }: {
86
93
  calendarId?: string;
87
94
  summary: string;
@@ -100,7 +107,7 @@ export declare class CalendarClient {
100
107
  colorId?: string;
101
108
  visibility?: string;
102
109
  transparency?: string;
103
- }): Promise<CalendarEvent>;
110
+ }): Promise<CalendarEvent | AuthError | ApiError | NotFoundError | ParseError>;
104
111
  updateEvent({ calendarId, eventId, summary, start, end, allDay, description, location, addAttendees, removeAttendees, withMeet, colorId, visibility, transparency, }: {
105
112
  calendarId?: string;
106
113
  eventId: string;
@@ -116,17 +123,17 @@ export declare class CalendarClient {
116
123
  colorId?: string;
117
124
  visibility?: string;
118
125
  transparency?: string;
119
- }): Promise<CalendarEvent>;
126
+ }): Promise<CalendarEvent | AuthError | ApiError | NotFoundError | MissingDataError | ParseError>;
120
127
  deleteEvent({ calendarId, eventId, }: {
121
128
  calendarId?: string;
122
129
  eventId: string;
123
- }): Promise<void>;
130
+ }): Promise<void | AuthError | ApiError | NotFoundError | MissingDataError>;
124
131
  respondToEvent({ calendarId, eventId, status, comment, }: {
125
132
  calendarId?: string;
126
133
  eventId: string;
127
134
  status: 'accepted' | 'declined' | 'tentative';
128
135
  comment?: string;
129
- }): Promise<CalendarEvent>;
136
+ }): Promise<CalendarEvent | AuthError | ApiError | NotFoundError | MissingDataError | ParseError>;
130
137
  getFreeBusy({ calendarIds, timeMin, timeMax, }: {
131
138
  calendarIds: string[];
132
139
  timeMin: string;