@keplog/cli 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 (54) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +495 -0
  3. package/bin/keplog +2 -0
  4. package/dist/commands/delete.d.ts +3 -0
  5. package/dist/commands/delete.d.ts.map +1 -0
  6. package/dist/commands/delete.js +158 -0
  7. package/dist/commands/delete.js.map +1 -0
  8. package/dist/commands/init.d.ts +3 -0
  9. package/dist/commands/init.d.ts.map +1 -0
  10. package/dist/commands/init.js +131 -0
  11. package/dist/commands/init.js.map +1 -0
  12. package/dist/commands/issues.d.ts +3 -0
  13. package/dist/commands/issues.d.ts.map +1 -0
  14. package/dist/commands/issues.js +543 -0
  15. package/dist/commands/issues.js.map +1 -0
  16. package/dist/commands/list.d.ts +3 -0
  17. package/dist/commands/list.d.ts.map +1 -0
  18. package/dist/commands/list.js +104 -0
  19. package/dist/commands/list.js.map +1 -0
  20. package/dist/commands/releases.d.ts +3 -0
  21. package/dist/commands/releases.d.ts.map +1 -0
  22. package/dist/commands/releases.js +100 -0
  23. package/dist/commands/releases.js.map +1 -0
  24. package/dist/commands/upload.d.ts +3 -0
  25. package/dist/commands/upload.d.ts.map +1 -0
  26. package/dist/commands/upload.js +76 -0
  27. package/dist/commands/upload.js.map +1 -0
  28. package/dist/index.d.ts +3 -0
  29. package/dist/index.d.ts.map +1 -0
  30. package/dist/index.js +28 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/lib/config.d.ts +57 -0
  33. package/dist/lib/config.d.ts.map +1 -0
  34. package/dist/lib/config.js +155 -0
  35. package/dist/lib/config.js.map +1 -0
  36. package/dist/lib/uploader.d.ts +11 -0
  37. package/dist/lib/uploader.d.ts.map +1 -0
  38. package/dist/lib/uploader.js +171 -0
  39. package/dist/lib/uploader.js.map +1 -0
  40. package/jest.config.js +16 -0
  41. package/package.json +58 -0
  42. package/src/commands/delete.ts +186 -0
  43. package/src/commands/init.ts +137 -0
  44. package/src/commands/issues.ts +695 -0
  45. package/src/commands/list.ts +124 -0
  46. package/src/commands/releases.ts +122 -0
  47. package/src/commands/upload.ts +76 -0
  48. package/src/index.ts +31 -0
  49. package/src/lib/config.ts +138 -0
  50. package/src/lib/uploader.ts +168 -0
  51. package/tests/README.md +380 -0
  52. package/tests/config.test.ts +397 -0
  53. package/tests/uploader.test.ts +524 -0
  54. package/tsconfig.json +20 -0
@@ -0,0 +1,543 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.issuesCommand = void 0;
7
+ const commander_1 = require("commander");
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const ora_1 = __importDefault(require("ora"));
10
+ const config_js_1 = require("../lib/config.js");
11
+ // List subcommand
12
+ const listSubcommand = new commander_1.Command('list')
13
+ .description('List issues for a project')
14
+ .option('-p, --project-id <id>', 'Project ID (overrides config)')
15
+ .option('-k, --api-key <key>', 'API key (overrides config)')
16
+ .option('-u, --api-url <url>', 'API URL (overrides config)')
17
+ .option('-s, --status <status>', 'Filter by status (open, in_progress, resolved, ignored)', 'open')
18
+ .option('-l, --limit <number>', 'Number of issues to fetch', '50')
19
+ .option('--offset <number>', 'Offset for pagination', '0')
20
+ .option('--from <date>', 'Filter from date (YYYY-MM-DD)')
21
+ .option('--to <date>', 'Filter to date (YYYY-MM-DD)')
22
+ .option('-f, --format <format>', 'Output format (table, json)', 'table')
23
+ .action(async (options) => {
24
+ try {
25
+ // Read config from file
26
+ const config = config_js_1.ConfigManager.getConfig();
27
+ const projectId = options.projectId || config.projectId;
28
+ const apiKey = options.apiKey || config.apiKey;
29
+ const apiUrl = options.apiUrl || config.apiUrl || 'https://api.keplog.com';
30
+ // Validate required parameters
31
+ if (!projectId) {
32
+ console.error(chalk_1.default.red('\nāœ— Error: Project ID is required\n'));
33
+ console.log('Options:');
34
+ console.log(' 1. Run: keplog init (recommended)');
35
+ console.log(' 2. Use flag: --project-id=<your-project-id>');
36
+ console.log(' 3. Set env: KEPLOG_PROJECT_ID=<your-project-id>\n');
37
+ process.exit(1);
38
+ }
39
+ if (!apiKey) {
40
+ console.error(chalk_1.default.red('\nāœ— Error: API key is required\n'));
41
+ console.log('Options:');
42
+ console.log(' 1. Run: keplog init (recommended)');
43
+ console.log(' 2. Use flag: --api-key=<your-api-key>');
44
+ console.log(' 3. Set env: KEPLOG_API_KEY=<your-api-key>\n');
45
+ process.exit(1);
46
+ }
47
+ console.log(chalk_1.default.bold.cyan('\nšŸ› Keplog Issues - List\n'));
48
+ console.log(`Project ID: ${chalk_1.default.gray(projectId)}`);
49
+ console.log(`Status: ${chalk_1.default.yellow(options.status)}`);
50
+ console.log(`Limit: ${chalk_1.default.gray(options.limit)}\n`);
51
+ const spinner = (0, ora_1.default)('Fetching issues...').start();
52
+ // Build query parameters
53
+ const params = new URLSearchParams({
54
+ status: options.status,
55
+ limit: options.limit,
56
+ offset: options.offset,
57
+ });
58
+ if (options.from) {
59
+ params.append('date_from', options.from);
60
+ }
61
+ if (options.to) {
62
+ params.append('date_to', options.to);
63
+ }
64
+ // Fetch issues from API (CLI endpoint)
65
+ const url = `${apiUrl}/api/v1/cli/projects/${projectId}/issues?${params.toString()}`;
66
+ const response = await fetch(url, {
67
+ method: 'GET',
68
+ headers: {
69
+ 'X-API-Key': apiKey,
70
+ },
71
+ });
72
+ if (!response.ok) {
73
+ const error = await response.json();
74
+ spinner.fail(chalk_1.default.red('Failed to fetch issues'));
75
+ console.error(chalk_1.default.red(`\nāœ— Error: ${error.error || 'Unknown error'}\n`));
76
+ process.exit(1);
77
+ }
78
+ const data = await response.json();
79
+ spinner.succeed(chalk_1.default.green('Issues fetched'));
80
+ // Display results
81
+ if (!data.issues || data.issues.length === 0) {
82
+ if (options.format === 'json') {
83
+ console.log(JSON.stringify({ issues: [] }, null, 2));
84
+ }
85
+ else {
86
+ console.log(chalk_1.default.yellow('\nNo issues found.\n'));
87
+ }
88
+ return;
89
+ }
90
+ // JSON format output
91
+ if (options.format === 'json') {
92
+ console.log(JSON.stringify(data, null, 2));
93
+ return;
94
+ }
95
+ // Table format output
96
+ console.log(chalk_1.default.bold(`\nšŸ“‹ Found ${chalk_1.default.cyan(data.issues.length)} issue${data.issues.length !== 1 ? 's' : ''}\n`));
97
+ // Display table header
98
+ const idWidth = 10;
99
+ const titleWidth = 50;
100
+ const statusWidth = 12;
101
+ const levelWidth = 10;
102
+ const occWidth = 8;
103
+ const lastSeenWidth = 20;
104
+ console.log(chalk_1.default.gray('ID'.padEnd(idWidth) +
105
+ 'TITLE'.padEnd(titleWidth) +
106
+ 'STATUS'.padEnd(statusWidth) +
107
+ 'LEVEL'.padEnd(levelWidth) +
108
+ 'COUNT'.padEnd(occWidth) +
109
+ 'LAST SEEN'));
110
+ console.log(chalk_1.default.gray('─'.repeat(idWidth + titleWidth + statusWidth + levelWidth + occWidth + lastSeenWidth)));
111
+ // Display issues
112
+ for (const issue of data.issues) {
113
+ const shortId = issue.id.substring(0, 8);
114
+ const title = truncate(issue.title, titleWidth - 2);
115
+ const statusText = issue.status.padEnd(statusWidth);
116
+ const levelText = issue.level.padEnd(levelWidth);
117
+ const count = issue.occurrences.toString().padEnd(occWidth);
118
+ const lastSeen = formatDate(issue.last_seen);
119
+ console.log(chalk_1.default.white(shortId.padEnd(idWidth)) +
120
+ title.padEnd(titleWidth) +
121
+ colorStatus(statusText) +
122
+ colorLevel(levelText) +
123
+ chalk_1.default.cyan(count) +
124
+ chalk_1.default.gray(lastSeen));
125
+ }
126
+ console.log(chalk_1.default.gray(`\nShowing ${data.issues.length} issue${data.issues.length !== 1 ? 's' : ''} (offset: ${options.offset})\n`));
127
+ console.log(chalk_1.default.dim('View details: keplog issues show <issue-id>\n'));
128
+ }
129
+ catch (error) {
130
+ console.error(chalk_1.default.red(`\nāœ— Error: ${error.message}\n`));
131
+ process.exit(1);
132
+ }
133
+ });
134
+ // Show subcommand
135
+ const showSubcommand = new commander_1.Command('show')
136
+ .description('Show detailed information about an issue')
137
+ .argument('<issue-id>', 'Issue ID to display (short or full UUID)')
138
+ .option('-p, --project-id <id>', 'Project ID (overrides config)')
139
+ .option('-k, --api-key <key>', 'API key (overrides config)')
140
+ .option('-u, --api-url <url>', 'API URL (overrides config)')
141
+ .option('--show-minified', 'Show minified stack trace (if source maps available)')
142
+ .option('-f, --format <format>', 'Output format (pretty, json)', 'pretty')
143
+ .action(async (issueId, options) => {
144
+ try {
145
+ // Read config from file
146
+ const config = config_js_1.ConfigManager.getConfig();
147
+ const projectId = options.projectId || config.projectId;
148
+ const apiKey = options.apiKey || config.apiKey;
149
+ const apiUrl = options.apiUrl || config.apiUrl || 'https://api.keplog.com';
150
+ // Validate required parameters
151
+ if (!apiKey) {
152
+ console.error(chalk_1.default.red('\nāœ— Error: API key is required\n'));
153
+ console.log('Options:');
154
+ console.log(' 1. Run: keplog init (recommended)');
155
+ console.log(' 2. Use flag: --api-key=<your-api-key>');
156
+ console.log(' 3. Set env: KEPLOG_API_KEY=<your-api-key>\n');
157
+ process.exit(1);
158
+ }
159
+ console.log(chalk_1.default.bold.cyan('\nšŸ› Keplog Issue Details\n'));
160
+ let fullIssueId = issueId;
161
+ // If issue ID is short (8 chars), fetch full UUID from list
162
+ if (issueId.length === 8) {
163
+ if (!projectId) {
164
+ console.error(chalk_1.default.red('\nāœ— Error: Project ID is required for short issue IDs\n'));
165
+ console.log('Options:');
166
+ console.log(' 1. Run: keplog init (recommended)');
167
+ console.log(' 2. Use flag: --project-id=<your-project-id>');
168
+ console.log(' 3. Use full UUID instead of short ID\n');
169
+ process.exit(1);
170
+ }
171
+ const spinner = (0, ora_1.default)('Resolving short issue ID...').start();
172
+ // Fetch issues to find the full UUID
173
+ const listUrl = `${apiUrl}/api/v1/cli/projects/${projectId}/issues?limit=1000`;
174
+ const listResponse = await fetch(listUrl, {
175
+ method: 'GET',
176
+ headers: {
177
+ 'X-API-Key': apiKey,
178
+ },
179
+ });
180
+ if (!listResponse.ok) {
181
+ spinner.fail(chalk_1.default.red('Failed to resolve issue ID'));
182
+ console.error(chalk_1.default.red(`\nāœ— Error: Could not fetch issues list\n`));
183
+ process.exit(1);
184
+ }
185
+ const listData = await listResponse.json();
186
+ const matchingIssue = listData.issues.find(issue => issue.id.startsWith(issueId));
187
+ if (!matchingIssue) {
188
+ spinner.fail(chalk_1.default.red('Issue not found'));
189
+ console.error(chalk_1.default.red(`\nāœ— Error: No issue found with ID starting with '${issueId}'\n`));
190
+ process.exit(1);
191
+ }
192
+ fullIssueId = matchingIssue.id;
193
+ spinner.succeed(chalk_1.default.green(`Resolved to ${fullIssueId}`));
194
+ }
195
+ const spinner = (0, ora_1.default)('Fetching issue details...').start();
196
+ // Fetch issue from API (CLI endpoint)
197
+ const url = `${apiUrl}/api/v1/cli/issues/${fullIssueId}`;
198
+ const response = await fetch(url, {
199
+ method: 'GET',
200
+ headers: {
201
+ 'X-API-Key': apiKey,
202
+ },
203
+ });
204
+ if (!response.ok) {
205
+ const error = await response.json();
206
+ spinner.fail(chalk_1.default.red('Failed to fetch issue'));
207
+ console.error(chalk_1.default.red(`\nāœ— Error: ${error.error || 'Unknown error'}\n`));
208
+ process.exit(1);
209
+ }
210
+ const data = await response.json();
211
+ const issue = data.issue;
212
+ // Merge latest_event data into issue if available
213
+ if (data.latest_event) {
214
+ issue.stack_trace = data.latest_event.stack_trace;
215
+ issue.context = data.latest_event.context;
216
+ issue.mapped_stack_trace = data.latest_event.mapped_stack_trace;
217
+ }
218
+ spinner.succeed(chalk_1.default.green('Issue fetched'));
219
+ // JSON format output
220
+ if (options.format === 'json') {
221
+ console.log(JSON.stringify(data, null, 2));
222
+ return;
223
+ }
224
+ // Display issue details
225
+ console.log(chalk_1.default.bold(`\nšŸ“Œ ${issue.title}\n`));
226
+ console.log(`${chalk_1.default.gray('ID:')} ${chalk_1.default.white(issue.id)}`);
227
+ console.log(`${chalk_1.default.gray('Status:')} ${colorStatus(issue.status)}`);
228
+ console.log(`${chalk_1.default.gray('Level:')} ${colorLevel(issue.level)}`);
229
+ console.log(`${chalk_1.default.gray('Occurrences:')} ${chalk_1.default.cyan(issue.occurrences)}`);
230
+ console.log(`${chalk_1.default.gray('First Seen:')} ${chalk_1.default.white(formatDateLong(issue.first_seen))}`);
231
+ console.log(`${chalk_1.default.gray('Last Seen:')} ${chalk_1.default.white(formatDateLong(issue.last_seen))}`);
232
+ // Display environment and version from latest event
233
+ if (data.latest_event?.environment) {
234
+ console.log(`${chalk_1.default.gray('Environment:')} ${chalk_1.default.cyan(data.latest_event.environment)}`);
235
+ }
236
+ if (data.latest_event?.release_version) {
237
+ console.log(`${chalk_1.default.gray('Version:')} ${chalk_1.default.cyan(data.latest_event.release_version)}`);
238
+ }
239
+ if (issue.assigned_user_name) {
240
+ console.log(`${chalk_1.default.gray('Assigned To:')} ${chalk_1.default.white(issue.assigned_user_name)}`);
241
+ }
242
+ else if (issue.assigned_team_name) {
243
+ console.log(`${chalk_1.default.gray('Assigned To:')} ${chalk_1.default.white(issue.assigned_team_name)} ${chalk_1.default.dim('(team)')}`);
244
+ }
245
+ if (issue.snoozed_until) {
246
+ console.log(`${chalk_1.default.gray('Snoozed:')} ${chalk_1.default.yellow('Until ' + formatDateLong(issue.snoozed_until))}`);
247
+ }
248
+ // Display source-mapped stack trace if available
249
+ const hasMappedTrace = issue.mapped_stack_trace?.frames && issue.mapped_stack_trace.frames.length > 0;
250
+ const showOriginal = hasMappedTrace && !options.showMinified;
251
+ if (showOriginal) {
252
+ console.log(chalk_1.default.bold.green('\nāœ“ Source Maps Applied'));
253
+ if (issue.mapped_stack_trace?.release) {
254
+ console.log(chalk_1.default.gray(`Release: ${issue.mapped_stack_trace.release}`));
255
+ }
256
+ console.log(chalk_1.default.bold('\nšŸ“š Stack Trace (Original Source):\n'));
257
+ for (const frame of issue.mapped_stack_trace.frames) {
258
+ if (frame.mapped && frame.source_filename) {
259
+ // Source-mapped frame
260
+ console.log(chalk_1.default.green(' āœ“ [MAPPED]'));
261
+ console.log(` ${chalk_1.default.white(frame.source_function || 'anonymous')}`);
262
+ console.log(chalk_1.default.gray(` ${frame.source_filename}:${frame.source_line_number}:${frame.source_column || 0}`));
263
+ // Show source code if available
264
+ if (frame.source_code) {
265
+ console.log(chalk_1.default.dim('\n Source Code:'));
266
+ // Pre-context
267
+ if (frame.pre_context && frame.pre_context.length > 0) {
268
+ const startLine = (frame.source_line_number || 0) - frame.pre_context.length;
269
+ frame.pre_context.forEach((line, i) => {
270
+ const lineNum = startLine + i;
271
+ console.log(chalk_1.default.gray(` ${String(lineNum).padStart(4)} │ ${line}`));
272
+ });
273
+ }
274
+ // Error line
275
+ console.log(chalk_1.default.red(` → ${String(frame.source_line_number).padStart(4)} │ ${frame.source_code}`));
276
+ // Post-context
277
+ if (frame.post_context && frame.post_context.length > 0) {
278
+ frame.post_context.forEach((line, i) => {
279
+ const lineNum = (frame.source_line_number || 0) + i + 1;
280
+ console.log(chalk_1.default.gray(` ${String(lineNum).padStart(4)} │ ${line}`));
281
+ });
282
+ }
283
+ console.log('');
284
+ }
285
+ }
286
+ else {
287
+ // Unmapped frame
288
+ console.log(chalk_1.default.yellow(' ā—‹'));
289
+ console.log(` ${chalk_1.default.white(frame.function || 'anonymous')}`);
290
+ console.log(chalk_1.default.gray(` ${frame.filename || 'unknown'}:${frame.line_number || 0}`));
291
+ }
292
+ console.log('');
293
+ }
294
+ }
295
+ else if (issue.context?.frames && issue.context.frames.length > 0) {
296
+ // Laravel/PHP style frames
297
+ console.log(chalk_1.default.bold('\nšŸ“š Stack Trace:\n'));
298
+ for (const frame of issue.context.frames) {
299
+ const funcName = frame.class
300
+ ? `${frame.class}${frame.type || '::'}${frame.function}`
301
+ : (frame.function || 'anonymous');
302
+ console.log(chalk_1.default.white(` ${funcName}`));
303
+ console.log(chalk_1.default.gray(` ${frame.file || 'unknown'}:${frame.line || '?'}`));
304
+ // Show code snippet if available
305
+ if (frame.code_snippet) {
306
+ const lines = Object.entries(frame.code_snippet).sort((a, b) => parseInt(a[0]) - parseInt(b[0]));
307
+ if (lines.length > 0) {
308
+ console.log(chalk_1.default.dim('\n Code:'));
309
+ for (const [lineNum, code] of lines) {
310
+ const isErrorLine = parseInt(lineNum) === frame.line;
311
+ if (isErrorLine) {
312
+ console.log(chalk_1.default.red(`→ ${lineNum.padStart(4)} │ ${code}`));
313
+ }
314
+ else {
315
+ console.log(chalk_1.default.gray(` ${lineNum.padStart(4)} │ ${code}`));
316
+ }
317
+ }
318
+ console.log('');
319
+ }
320
+ }
321
+ console.log('');
322
+ }
323
+ }
324
+ else if (issue.stack_trace) {
325
+ // Plain text stack trace
326
+ console.log(chalk_1.default.bold('\nšŸ“š Stack Trace:\n'));
327
+ console.log(chalk_1.default.gray(issue.stack_trace));
328
+ }
329
+ else {
330
+ // No stack trace available
331
+ console.log(chalk_1.default.bold('\nšŸ“š Stack Trace:\n'));
332
+ console.log(chalk_1.default.yellow(' No stack trace available for this issue.\n'));
333
+ }
334
+ if (hasMappedTrace && !showOriginal) {
335
+ console.log(chalk_1.default.dim('\nšŸ’” Tip: Remove --show-minified to see original source code\n'));
336
+ }
337
+ console.log('');
338
+ }
339
+ catch (error) {
340
+ console.error(chalk_1.default.red(`\nāœ— Error: ${error.message}\n`));
341
+ process.exit(1);
342
+ }
343
+ });
344
+ // Events subcommand
345
+ const eventsSubcommand = new commander_1.Command('events')
346
+ .description('List all events for an issue')
347
+ .argument('<issue-id>', 'Issue ID (short or full UUID)')
348
+ .option('-p, --project-id <id>', 'Project ID (overrides config)')
349
+ .option('-k, --api-key <key>', 'API key (overrides config)')
350
+ .option('-u, --api-url <url>', 'API URL (overrides config)')
351
+ .option('-l, --limit <number>', 'Number of events to fetch', '50')
352
+ .option('--offset <number>', 'Offset for pagination', '0')
353
+ .option('-f, --format <format>', 'Output format (table, json)', 'table')
354
+ .action(async (issueId, options) => {
355
+ try {
356
+ // Read config from file
357
+ const config = config_js_1.ConfigManager.getConfig();
358
+ const projectId = options.projectId || config.projectId;
359
+ const apiKey = options.apiKey || config.apiKey;
360
+ const apiUrl = options.apiUrl || config.apiUrl || 'https://api.keplog.com';
361
+ // Validate required parameters
362
+ if (!apiKey) {
363
+ console.error(chalk_1.default.red('\nāœ— Error: API key is required\n'));
364
+ console.log('Options:');
365
+ console.log(' 1. Run: keplog init (recommended)');
366
+ console.log(' 2. Use flag: --api-key=<your-api-key>');
367
+ console.log(' 3. Set env: KEPLOG_API_KEY=<your-api-key>\n');
368
+ process.exit(1);
369
+ }
370
+ let fullIssueId = issueId;
371
+ // If issue ID is short (8 chars), fetch full UUID from list
372
+ if (issueId.length === 8) {
373
+ if (!projectId) {
374
+ console.error(chalk_1.default.red('\nāœ— Error: Project ID is required for short issue IDs\n'));
375
+ console.log('Options:');
376
+ console.log(' 1. Run: keplog init (recommended)');
377
+ console.log(' 2. Use flag: --project-id=<your-project-id>');
378
+ console.log(' 3. Use full UUID instead of short ID\n');
379
+ process.exit(1);
380
+ }
381
+ const spinner = (0, ora_1.default)('Resolving short issue ID...').start();
382
+ // Fetch issues to find the full UUID
383
+ const listUrl = `${apiUrl}/api/v1/cli/projects/${projectId}/issues?limit=1000`;
384
+ const listResponse = await fetch(listUrl, {
385
+ method: 'GET',
386
+ headers: {
387
+ 'X-API-Key': apiKey,
388
+ },
389
+ });
390
+ if (!listResponse.ok) {
391
+ spinner.fail(chalk_1.default.red('Failed to resolve issue ID'));
392
+ console.error(chalk_1.default.red(`\nāœ— Error: Could not fetch issues list\n`));
393
+ process.exit(1);
394
+ }
395
+ const listData = await listResponse.json();
396
+ const matchingIssue = listData.issues.find(issue => issue.id.startsWith(issueId));
397
+ if (!matchingIssue) {
398
+ spinner.fail(chalk_1.default.red('Issue not found'));
399
+ console.error(chalk_1.default.red(`\nāœ— Error: No issue found with ID starting with '${issueId}'\n`));
400
+ process.exit(1);
401
+ }
402
+ fullIssueId = matchingIssue.id;
403
+ spinner.succeed(chalk_1.default.green(`Resolved to ${fullIssueId}`));
404
+ }
405
+ const spinner = (0, ora_1.default)('Fetching issue events...').start();
406
+ // Build query parameters
407
+ const params = new URLSearchParams({
408
+ limit: options.limit,
409
+ offset: options.offset,
410
+ });
411
+ // Fetch events from API (CLI endpoint)
412
+ const url = `${apiUrl}/api/v1/cli/issues/${fullIssueId}/events?${params.toString()}`;
413
+ const response = await fetch(url, {
414
+ method: 'GET',
415
+ headers: {
416
+ 'X-API-Key': apiKey,
417
+ },
418
+ });
419
+ if (!response.ok) {
420
+ const error = await response.json();
421
+ spinner.fail(chalk_1.default.red('Failed to fetch events'));
422
+ console.error(chalk_1.default.red(`\nāœ— Error: ${error.error || 'Unknown error'}\n`));
423
+ process.exit(1);
424
+ }
425
+ const data = await response.json();
426
+ spinner.succeed(chalk_1.default.green('Events fetched'));
427
+ if (!data.events || data.events.length === 0) {
428
+ if (options.format === 'json') {
429
+ console.log(JSON.stringify({ events: [], issue: data.issue }, null, 2));
430
+ }
431
+ else {
432
+ console.log(chalk_1.default.yellow('\nNo events found for this issue.\n'));
433
+ }
434
+ return;
435
+ }
436
+ // JSON format output
437
+ if (options.format === 'json') {
438
+ console.log(JSON.stringify(data, null, 2));
439
+ return;
440
+ }
441
+ // Table format output
442
+ console.log(chalk_1.default.bold.cyan('\nšŸ› Issue Events\n'));
443
+ console.log(`${chalk_1.default.gray('Issue:')} ${chalk_1.default.white(data.issue.title)}`);
444
+ console.log(`${chalk_1.default.gray('ID:')} ${chalk_1.default.white(fullIssueId)}\n`);
445
+ console.log(chalk_1.default.bold(`šŸ“‹ Found ${chalk_1.default.cyan(data.events.length)} event${data.events.length !== 1 ? 's' : ''}\n`));
446
+ // Display events
447
+ for (let i = 0; i < data.events.length; i++) {
448
+ const event = data.events[i];
449
+ console.log(chalk_1.default.bold(`\n${i + 1}. Event ${chalk_1.default.gray(event.id.substring(0, 8))}`));
450
+ console.log(` ${chalk_1.default.gray('Timestamp:')} ${formatDateLong(event.timestamp)}`);
451
+ if (event.environment) {
452
+ console.log(` ${chalk_1.default.gray('Environment:')} ${chalk_1.default.cyan(event.environment)}`);
453
+ }
454
+ if (event.release_version) {
455
+ console.log(` ${chalk_1.default.gray('Version:')} ${chalk_1.default.cyan(event.release_version)}`);
456
+ }
457
+ // Show context data if available
458
+ if (event.context && Object.keys(event.context).length > 0) {
459
+ console.log(` ${chalk_1.default.gray('Context:')}`);
460
+ const contextKeys = Object.keys(event.context).filter(k => k !== 'frames');
461
+ if (contextKeys.length > 0) {
462
+ for (const key of contextKeys.slice(0, 5)) {
463
+ const value = event.context[key];
464
+ const valueStr = typeof value === 'object' ? JSON.stringify(value).substring(0, 50) + '...' : String(value).substring(0, 50);
465
+ console.log(` ${chalk_1.default.dim(key)}: ${chalk_1.default.white(valueStr)}`);
466
+ }
467
+ if (contextKeys.length > 5) {
468
+ console.log(chalk_1.default.dim(` ... and ${contextKeys.length - 5} more fields`));
469
+ }
470
+ }
471
+ }
472
+ console.log(chalk_1.default.gray(' ─'.repeat(40)));
473
+ }
474
+ console.log(chalk_1.default.gray(`\nShowing ${data.events.length} event${data.events.length !== 1 ? 's' : ''} (offset: ${options.offset})`));
475
+ console.log(chalk_1.default.dim('View full details: keplog issues show <issue-id> --format json\n'));
476
+ }
477
+ catch (error) {
478
+ console.error(chalk_1.default.red(`\nāœ— Error: ${error.message}\n`));
479
+ process.exit(1);
480
+ }
481
+ });
482
+ // Main issues command
483
+ exports.issuesCommand = new commander_1.Command('issues')
484
+ .description('Manage and view issues')
485
+ .addCommand(listSubcommand)
486
+ .addCommand(showSubcommand)
487
+ .addCommand(eventsSubcommand);
488
+ // Helper functions
489
+ function truncate(str, maxLength) {
490
+ if (str.length <= maxLength)
491
+ return str;
492
+ return str.substring(0, maxLength - 3) + '...';
493
+ }
494
+ function colorStatus(status) {
495
+ switch (status) {
496
+ case 'open':
497
+ return chalk_1.default.red(status);
498
+ case 'in_progress':
499
+ return chalk_1.default.yellow(status);
500
+ case 'resolved':
501
+ return chalk_1.default.green(status);
502
+ case 'ignored':
503
+ return chalk_1.default.gray(status);
504
+ default:
505
+ return chalk_1.default.white(status);
506
+ }
507
+ }
508
+ function colorLevel(level) {
509
+ switch (level) {
510
+ case 'critical':
511
+ return chalk_1.default.red.bold(level);
512
+ case 'error':
513
+ return chalk_1.default.red(level);
514
+ case 'warning':
515
+ return chalk_1.default.yellow(level);
516
+ case 'info':
517
+ return chalk_1.default.blue(level);
518
+ default:
519
+ return chalk_1.default.white(level);
520
+ }
521
+ }
522
+ function formatDate(dateStr) {
523
+ const date = new Date(dateStr);
524
+ const now = new Date();
525
+ const diff = now.getTime() - date.getTime();
526
+ const minutes = Math.floor(diff / 60000);
527
+ const hours = Math.floor(diff / 3600000);
528
+ const days = Math.floor(diff / 86400000);
529
+ if (minutes < 1)
530
+ return 'just now';
531
+ if (minutes < 60)
532
+ return `${minutes}m ago`;
533
+ if (hours < 24)
534
+ return `${hours}h ago`;
535
+ if (days < 7)
536
+ return `${days}d ago`;
537
+ return date.toLocaleDateString();
538
+ }
539
+ function formatDateLong(dateStr) {
540
+ const date = new Date(dateStr);
541
+ return date.toLocaleString();
542
+ }
543
+ //# sourceMappingURL=issues.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issues.js","sourceRoot":"","sources":["../../src/commands/issues.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const listCommand: Command;
3
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC,eAAO,MAAM,WAAW,SAkGpB,CAAC"}