zele 0.1.3 → 0.2.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 (64) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +112 -0
  3. package/dist/api-utils.d.ts +6 -0
  4. package/dist/api-utils.js +52 -0
  5. package/dist/api-utils.js.map +1 -0
  6. package/dist/auth.d.ts +16 -0
  7. package/dist/auth.js +74 -5
  8. package/dist/auth.js.map +1 -1
  9. package/dist/calendar-client.d.ts +135 -0
  10. package/dist/calendar-client.js +498 -0
  11. package/dist/calendar-client.js.map +1 -0
  12. package/dist/calendar-time.d.ts +24 -0
  13. package/dist/calendar-time.js +245 -0
  14. package/dist/calendar-time.js.map +1 -0
  15. package/dist/cli.js +5 -3
  16. package/dist/cli.js.map +1 -1
  17. package/dist/commands/auth-cmd.js +5 -5
  18. package/dist/commands/auth-cmd.js.map +1 -1
  19. package/dist/commands/calendar.d.ts +2 -0
  20. package/dist/commands/calendar.js +563 -0
  21. package/dist/commands/calendar.js.map +1 -0
  22. package/dist/generated/browser.d.ts +10 -0
  23. package/dist/generated/client.d.ts +10 -0
  24. package/dist/generated/internal/class.d.ts +22 -0
  25. package/dist/generated/internal/class.js +2 -2
  26. package/dist/generated/internal/class.js.map +1 -1
  27. package/dist/generated/internal/prismaNamespace.d.ts +174 -1
  28. package/dist/generated/internal/prismaNamespace.js +21 -0
  29. package/dist/generated/internal/prismaNamespace.js.map +1 -1
  30. package/dist/generated/internal/prismaNamespaceBrowser.d.ts +23 -0
  31. package/dist/generated/internal/prismaNamespaceBrowser.js +21 -0
  32. package/dist/generated/internal/prismaNamespaceBrowser.js.map +1 -1
  33. package/dist/generated/models/accounts.d.ts +281 -0
  34. package/dist/generated/models/calendar_events.d.ts +1433 -0
  35. package/dist/generated/models/calendar_events.js +2 -0
  36. package/dist/generated/models/calendar_events.js.map +1 -0
  37. package/dist/generated/models/calendar_lists.d.ts +1131 -0
  38. package/dist/generated/models/calendar_lists.js +2 -0
  39. package/dist/generated/models/calendar_lists.js.map +1 -0
  40. package/dist/generated/models.d.ts +2 -0
  41. package/dist/gmail-cache.d.ts +22 -0
  42. package/dist/gmail-cache.js +76 -0
  43. package/dist/gmail-cache.js.map +1 -1
  44. package/dist/gmail-client.js +1 -48
  45. package/dist/gmail-client.js.map +1 -1
  46. package/dist/output.d.ts +11 -0
  47. package/dist/output.js +42 -0
  48. package/dist/output.js.map +1 -1
  49. package/package.json +4 -2
  50. package/schema.prisma +39 -6
  51. package/scripts/test-device-code-clients.ts +186 -0
  52. package/scripts/test-micropython-scopes.ts +72 -0
  53. package/scripts/test-oauth-clients.ts +257 -0
  54. package/src/api-utils.ts +60 -0
  55. package/src/auth.ts +92 -5
  56. package/src/calendar-client.ts +758 -0
  57. package/src/calendar-time.ts +299 -0
  58. package/src/cli.ts +5 -3
  59. package/src/commands/auth-cmd.ts +5 -5
  60. package/src/commands/calendar.ts +634 -0
  61. package/src/gmail-cache.ts +96 -0
  62. package/src/gmail-client.ts +1 -57
  63. package/src/output.ts +51 -0
  64. package/src/schema.sql +22 -0
@@ -0,0 +1,245 @@
1
+ // Time parsing utilities for calendar commands.
2
+ // Resolves human-friendly time expressions (today, tomorrow, monday, +1h)
3
+ // into RFC3339 timestamps in the user's calendar timezone.
4
+ // All relative expressions are resolved against the calendar timezone, not system time.
5
+ // ---------------------------------------------------------------------------
6
+ // Weekday lookup
7
+ // ---------------------------------------------------------------------------
8
+ const WEEKDAYS = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];
9
+ function findNextWeekday(name, from, tz) {
10
+ const target = WEEKDAYS.indexOf(name.toLowerCase());
11
+ if (target === -1)
12
+ throw new Error(`Unknown weekday: ${name}`);
13
+ const current = getWeekdayInTz(from, tz);
14
+ let daysAhead = target - current;
15
+ if (daysAhead <= 0)
16
+ daysAhead += 7;
17
+ const result = new Date(from);
18
+ result.setDate(result.getDate() + daysAhead);
19
+ return result;
20
+ }
21
+ function getWeekdayInTz(date, tz) {
22
+ const str = date.toLocaleDateString('en-US', { timeZone: tz, weekday: 'short' });
23
+ const map = { Sun: 0, Mon: 1, Tue: 2, Wed: 3, Thu: 4, Fri: 5, Sat: 6 };
24
+ return map[str] ?? 0;
25
+ }
26
+ // ---------------------------------------------------------------------------
27
+ // Timezone helpers
28
+ // ---------------------------------------------------------------------------
29
+ /** Get current date/time components in a specific timezone */
30
+ function nowInTz(tz) {
31
+ const now = new Date();
32
+ const parts = new Intl.DateTimeFormat('en-US', {
33
+ timeZone: tz,
34
+ year: 'numeric',
35
+ month: '2-digit',
36
+ day: '2-digit',
37
+ hour: '2-digit',
38
+ minute: '2-digit',
39
+ hour12: false,
40
+ }).formatToParts(now);
41
+ const get = (type) => Number(parts.find((p) => p.type === type)?.value ?? 0);
42
+ return {
43
+ year: get('year'),
44
+ month: get('month'),
45
+ day: get('day'),
46
+ hour: get('hour'),
47
+ minute: get('minute'),
48
+ };
49
+ }
50
+ /** Build an RFC3339 timestamp for a date in the given timezone.
51
+ * Strategy: create a UTC Date near the target local time, then use Intl to find
52
+ * the actual offset at that moment in the target timezone. This correctly handles
53
+ * DST transitions because we compute the offset at the actual wall-clock time. */
54
+ function dateToRfc3339(year, month, day, hour, minute, tz) {
55
+ // Step 1: Approximate UTC time (assume offset is 0 initially)
56
+ const approxUtc = new Date(Date.UTC(year, month - 1, day, hour, minute));
57
+ // Step 2: Get the offset at this approximate time
58
+ const offset1 = getTimezoneOffset(approxUtc, tz);
59
+ // Step 3: Refine: the actual UTC instant for "year-month-day hour:minute in tz"
60
+ // is approximately approxUtc - offset1
61
+ const refinedUtc = new Date(approxUtc.getTime() - offset1 * 60000);
62
+ // Step 4: Get the offset at the refined time (handles DST boundary correctly)
63
+ const offset2 = getTimezoneOffset(refinedUtc, tz);
64
+ const pad = (n) => String(n).padStart(2, '0');
65
+ return `${year}-${pad(month)}-${pad(day)}T${pad(hour)}:${pad(minute)}:00${formatOffset(offset2)}`;
66
+ }
67
+ function getTimezoneOffset(utcDate, tz) {
68
+ // Returns offset in minutes (positive = ahead of UTC, e.g. UTC+5:30 = 330)
69
+ // Uses Intl.DateTimeFormat to get the actual local time components at the given UTC instant
70
+ const parts = new Intl.DateTimeFormat('en-US', {
71
+ timeZone: tz,
72
+ year: 'numeric',
73
+ month: '2-digit',
74
+ day: '2-digit',
75
+ hour: '2-digit',
76
+ minute: '2-digit',
77
+ second: '2-digit',
78
+ hour12: false,
79
+ }).formatToParts(utcDate);
80
+ const get = (type) => Number(parts.find((p) => p.type === type)?.value ?? 0);
81
+ const localTime = Date.UTC(get('year'), get('month') - 1, get('day'), get('hour'), get('minute'), get('second'));
82
+ return (localTime - utcDate.getTime()) / 60000;
83
+ }
84
+ function formatOffset(offsetMinutes) {
85
+ const sign = offsetMinutes >= 0 ? '+' : '-';
86
+ const abs = Math.abs(offsetMinutes);
87
+ const hours = Math.floor(abs / 60);
88
+ const mins = abs % 60;
89
+ return `${sign}${String(hours).padStart(2, '0')}:${String(mins).padStart(2, '0')}`;
90
+ }
91
+ // ---------------------------------------------------------------------------
92
+ // Duration parsing (for --to "+1h", "+30m", "+2d")
93
+ // ---------------------------------------------------------------------------
94
+ const DURATION_RE = /^\+(\d+)(m|h|d|w)$/;
95
+ export function parseDuration(input) {
96
+ const match = DURATION_RE.exec(input);
97
+ if (!match)
98
+ return null;
99
+ const value = Number(match[1]);
100
+ switch (match[2]) {
101
+ case 'm': return value * 60 * 1000;
102
+ case 'h': return value * 60 * 60 * 1000;
103
+ case 'd': return value * 24 * 60 * 60 * 1000;
104
+ case 'w': return value * 7 * 24 * 60 * 60 * 1000;
105
+ default: return null;
106
+ }
107
+ }
108
+ // ---------------------------------------------------------------------------
109
+ // Time expression parsing
110
+ // ---------------------------------------------------------------------------
111
+ /** Check if a string looks like a date-only value (YYYY-MM-DD) */
112
+ export function isDateOnly(input) {
113
+ return /^\d{4}-\d{2}-\d{2}$/.test(input);
114
+ }
115
+ /** Parse a time expression into an RFC3339 string */
116
+ export function parseTimeExpression(input, tz) {
117
+ const trimmed = input.trim().toLowerCase();
118
+ // Already RFC3339
119
+ if (/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}/.test(input)) {
120
+ // If it has timezone offset, use as-is
121
+ if (/[+-]\d{2}:\d{2}$/.test(input) || input.endsWith('Z')) {
122
+ return input;
123
+ }
124
+ // Otherwise interpret in calendar timezone
125
+ const [datePart, timePart] = input.split('T');
126
+ const [year, month, day] = datePart.split('-').map(Number);
127
+ const [hour, minute] = timePart.split(':').map(Number);
128
+ return dateToRfc3339(year, month, day, hour, minute, tz);
129
+ }
130
+ // Date only: YYYY-MM-DD — convert to start-of-day RFC3339 in calendar timezone
131
+ // Callers that need date-only (all-day events) should check isDateOnly() before calling this.
132
+ if (isDateOnly(input)) {
133
+ const [year, month, day] = input.split('-').map(Number);
134
+ return dateToRfc3339(year, month, day, 0, 0, tz);
135
+ }
136
+ // Relative duration from now: +1h, +30m, +2d, +1w
137
+ const durationMs = parseDuration(input.trim());
138
+ if (durationMs !== null) {
139
+ const n = nowInTz(tz);
140
+ const nowRfc = dateToRfc3339(n.year, n.month, n.day, n.hour, n.minute, tz);
141
+ return new Date(new Date(nowRfc).getTime() + durationMs).toISOString();
142
+ }
143
+ const { year, month, day } = nowInTz(tz);
144
+ switch (trimmed) {
145
+ case 'now': {
146
+ const n = nowInTz(tz);
147
+ return dateToRfc3339(n.year, n.month, n.day, n.hour, n.minute, tz);
148
+ }
149
+ case 'today':
150
+ return dateToRfc3339(year, month, day, 0, 0, tz);
151
+ case 'tomorrow': {
152
+ const t = new Date(year, month - 1, day + 1);
153
+ return dateToRfc3339(t.getFullYear(), t.getMonth() + 1, t.getDate(), 0, 0, tz);
154
+ }
155
+ case 'yesterday': {
156
+ const y = new Date(year, month - 1, day - 1);
157
+ return dateToRfc3339(y.getFullYear(), y.getMonth() + 1, y.getDate(), 0, 0, tz);
158
+ }
159
+ }
160
+ // Weekday names: monday, next tuesday, etc.
161
+ const nextMatch = trimmed.match(/^(?:next\s+)?(\w+)$/);
162
+ if (nextMatch && WEEKDAYS.includes(nextMatch[1])) {
163
+ const now = new Date();
164
+ const target = findNextWeekday(nextMatch[1], now, tz);
165
+ const parts = new Intl.DateTimeFormat('en-US', {
166
+ timeZone: tz,
167
+ year: 'numeric',
168
+ month: '2-digit',
169
+ day: '2-digit',
170
+ }).formatToParts(target);
171
+ const get = (type) => Number(parts.find((p) => p.type === type)?.value ?? 0);
172
+ return dateToRfc3339(get('year'), get('month'), get('day'), 0, 0, tz);
173
+ }
174
+ throw new Error(`Cannot parse time expression: "${input}"`);
175
+ }
176
+ /**
177
+ * Resolve time range from command options.
178
+ * Convenience flags (--today, --tomorrow, --week, --days) take priority over --from/--to.
179
+ * Default: next 7 days from now.
180
+ */
181
+ export function resolveTimeRange(opts, tz) {
182
+ const { year, month, day } = nowInTz(tz);
183
+ if (opts.today) {
184
+ return {
185
+ timeMin: dateToRfc3339(year, month, day, 0, 0, tz),
186
+ timeMax: dateToRfc3339(year, month, day, 23, 59, tz),
187
+ };
188
+ }
189
+ if (opts.tomorrow) {
190
+ const t = new Date(year, month - 1, day + 1);
191
+ return {
192
+ timeMin: dateToRfc3339(t.getFullYear(), t.getMonth() + 1, t.getDate(), 0, 0, tz),
193
+ timeMax: dateToRfc3339(t.getFullYear(), t.getMonth() + 1, t.getDate(), 23, 59, tz),
194
+ };
195
+ }
196
+ if (opts.week) {
197
+ const weekStartDay = WEEKDAYS.indexOf((opts.weekStart ?? 'monday').toLowerCase());
198
+ const currentDay = getWeekdayInTz(new Date(), tz);
199
+ let daysBack = currentDay - weekStartDay;
200
+ if (daysBack < 0)
201
+ daysBack += 7;
202
+ const start = new Date(year, month - 1, day - daysBack);
203
+ const end = new Date(start.getFullYear(), start.getMonth(), start.getDate() + 6);
204
+ return {
205
+ timeMin: dateToRfc3339(start.getFullYear(), start.getMonth() + 1, start.getDate(), 0, 0, tz),
206
+ timeMax: dateToRfc3339(end.getFullYear(), end.getMonth() + 1, end.getDate(), 23, 59, tz),
207
+ };
208
+ }
209
+ if (opts.days && opts.days > 0) {
210
+ const end = new Date(year, month - 1, day + opts.days - 1);
211
+ return {
212
+ timeMin: dateToRfc3339(year, month, day, 0, 0, tz),
213
+ timeMax: dateToRfc3339(end.getFullYear(), end.getMonth() + 1, end.getDate(), 23, 59, tz),
214
+ };
215
+ }
216
+ // Explicit --from / --to
217
+ if (opts.from || opts.to) {
218
+ const fromStr = opts.from ? parseTimeExpression(opts.from, tz) : dateToRfc3339(year, month, day, 0, 0, tz);
219
+ let toStr;
220
+ if (opts.to) {
221
+ // Check if --to is a duration relative to --from
222
+ const durationMs = parseDuration(opts.to);
223
+ if (durationMs !== null) {
224
+ const fromDate = new Date(fromStr);
225
+ toStr = new Date(fromDate.getTime() + durationMs).toISOString();
226
+ }
227
+ else {
228
+ toStr = parseTimeExpression(opts.to, tz);
229
+ }
230
+ }
231
+ else {
232
+ // Default to 7 days from --from
233
+ const fromDate = new Date(fromStr);
234
+ toStr = new Date(fromDate.getTime() + 7 * 24 * 60 * 60 * 1000).toISOString();
235
+ }
236
+ return { timeMin: fromStr, timeMax: toStr };
237
+ }
238
+ // Default: next 7 days
239
+ const end = new Date(year, month - 1, day + 7);
240
+ return {
241
+ timeMin: dateToRfc3339(year, month, day, 0, 0, tz),
242
+ timeMax: dateToRfc3339(end.getFullYear(), end.getMonth() + 1, end.getDate(), 0, 0, tz),
243
+ };
244
+ }
245
+ //# sourceMappingURL=calendar-time.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar-time.js","sourceRoot":"","sources":["../src/calendar-time.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -11,26 +11,28 @@ import { registerDraftCommands } from './commands/draft.js';
11
11
  import { registerLabelCommands } from './commands/label.js';
12
12
  import { registerAttachmentCommands } from './commands/attachment.js';
13
13
  import { registerProfileCommands } from './commands/profile.js';
14
+ import { registerCalendarCommands } from './commands/calendar.js';
14
15
  const cli = goke('zele');
15
16
  // ---------------------------------------------------------------------------
16
17
  // Global options
17
18
  // ---------------------------------------------------------------------------
18
19
  cli.option('--account <account>', z.array(z.string()).describe('Filter by email account (repeatable)'));
19
20
  // ---------------------------------------------------------------------------
20
- // Register all command modules
21
+ // Register all command modules (auth first so login/logout/whoami appear at top of --help)
21
22
  // ---------------------------------------------------------------------------
22
23
  registerAuthCommands(cli);
24
+ registerProfileCommands(cli);
23
25
  registerMailCommands(cli);
24
26
  registerMailActionCommands(cli);
25
27
  registerDraftCommands(cli);
26
28
  registerLabelCommands(cli);
27
29
  registerAttachmentCommands(cli);
28
- registerProfileCommands(cli);
30
+ registerCalendarCommands(cli);
29
31
  // ---------------------------------------------------------------------------
30
32
  // Help & version
31
33
  // ---------------------------------------------------------------------------
32
34
  cli.help();
33
- cli.version('0.1.3');
35
+ cli.version('0.2.0');
34
36
  // ---------------------------------------------------------------------------
35
37
  // Parse & run
36
38
  // ---------------------------------------------------------------------------
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,kCAAkC;AAClC,0EAA0E;AAC1E,wEAAwE;AAExE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAA;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AAE/D,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;AAExB,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,GAAG,CAAC,MAAM,CACR,qBAAqB,EACrB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,sCAAsC,CAAC,CACrE,CAAA;AAED,8EAA8E;AAC9E,+BAA+B;AAC/B,8EAA8E;AAE9E,oBAAoB,CAAC,GAAG,CAAC,CAAA;AACzB,oBAAoB,CAAC,GAAG,CAAC,CAAA;AACzB,0BAA0B,CAAC,GAAG,CAAC,CAAA;AAC/B,qBAAqB,CAAC,GAAG,CAAC,CAAA;AAC1B,qBAAqB,CAAC,GAAG,CAAC,CAAA;AAC1B,0BAA0B,CAAC,GAAG,CAAC,CAAA;AAC/B,uBAAuB,CAAC,GAAG,CAAC,CAAA;AAE5B,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,GAAG,CAAC,IAAI,EAAE,CAAA;AACV,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;AAEpB,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E,GAAG,CAAC,KAAK,EAAE,CAAA"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,kCAAkC;AAClC,0EAA0E;AAC1E,wEAAwE;AAExE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAA;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAA;AAEjE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;AAExB,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,GAAG,CAAC,MAAM,CACR,qBAAqB,EACrB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,sCAAsC,CAAC,CACrE,CAAA;AAED,8EAA8E;AAC9E,2FAA2F;AAC3F,8EAA8E;AAE9E,oBAAoB,CAAC,GAAG,CAAC,CAAA;AACzB,uBAAuB,CAAC,GAAG,CAAC,CAAA;AAC5B,oBAAoB,CAAC,GAAG,CAAC,CAAA;AACzB,0BAA0B,CAAC,GAAG,CAAC,CAAA;AAC/B,qBAAqB,CAAC,GAAG,CAAC,CAAA;AAC1B,qBAAqB,CAAC,GAAG,CAAC,CAAA;AAC1B,0BAA0B,CAAC,GAAG,CAAC,CAAA;AAC/B,wBAAwB,CAAC,GAAG,CAAC,CAAA;AAE7B,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,GAAG,CAAC,IAAI,EAAE,CAAA;AACV,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;AAEpB,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E,GAAG,CAAC,KAAK,EAAE,CAAA"}
@@ -1,17 +1,17 @@
1
- // Auth commands: login, logout, status.
1
+ // Auth commands: login, logout, whoami.
2
2
  // Manages OAuth2 authentication for zele.
3
3
  // Supports multiple accounts: login adds accounts, logout removes one.
4
4
  import { login, logout, listAccounts, getAuthStatuses } from '../auth.js';
5
5
  import * as out from '../output.js';
6
6
  export function registerAuthCommands(cli) {
7
7
  cli
8
- .command('auth login', 'Authenticate with Google (opens browser)')
8
+ .command('login', 'Authenticate with Google (opens browser)')
9
9
  .action(async () => {
10
10
  const { email } = await login();
11
11
  out.success(`Authenticated as ${email}`);
12
12
  });
13
13
  cli
14
- .command('auth logout [email]', 'Remove stored credentials for an account')
14
+ .command('logout [email]', 'Remove stored credentials for an account')
15
15
  .option('--force', 'Skip confirmation')
16
16
  .action(async (email, options) => {
17
17
  const accounts = await listAccounts();
@@ -54,11 +54,11 @@ export function registerAuthCommands(cli) {
54
54
  out.success(`Credentials removed for ${targetEmail}`);
55
55
  });
56
56
  cli
57
- .command('auth status', 'Show authentication status')
57
+ .command('whoami', 'Show authenticated accounts')
58
58
  .action(async () => {
59
59
  const statuses = await getAuthStatuses();
60
60
  if (statuses.length === 0) {
61
- out.hint('Not authenticated. Run: zele auth login');
61
+ out.hint('Not authenticated. Run: zele login');
62
62
  return;
63
63
  }
64
64
  out.printList(statuses.map((s) => ({
@@ -1 +1 @@
1
- {"version":3,"file":"auth-cmd.js","sourceRoot":"","sources":["../../src/commands/auth-cmd.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth-cmd.js","sourceRoot":"","sources":["../../src/commands/auth-cmd.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { Goke } from 'goke';
2
+ export declare function registerCalendarCommands(cli: Goke): void;