@closedloop-ai/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 (70) hide show
  1. package/dist/__tests__/cli.test.js +37 -0
  2. package/dist/__tests__/cli.test.js.map +1 -0
  3. package/dist/__tests__/config.test.js +33 -0
  4. package/dist/__tests__/config.test.js.map +1 -0
  5. package/dist/__tests__/errors.test.js +109 -0
  6. package/dist/__tests__/errors.test.js.map +1 -0
  7. package/dist/__tests__/setup.js +20 -0
  8. package/dist/__tests__/setup.js.map +1 -0
  9. package/dist/__tests__/validation.test.js +124 -0
  10. package/dist/__tests__/validation.test.js.map +1 -0
  11. package/dist/api/auth.js +27 -0
  12. package/dist/api/auth.js.map +1 -0
  13. package/dist/api/feedback.js +70 -0
  14. package/dist/api/feedback.js.map +1 -0
  15. package/dist/api/input.js +60 -0
  16. package/dist/api/input.js.map +1 -0
  17. package/dist/api/usage.js +49 -0
  18. package/dist/api/usage.js.map +1 -0
  19. package/dist/cli.js +156 -0
  20. package/dist/cli.js.map +1 -0
  21. package/dist/commands/config.js +186 -0
  22. package/dist/commands/config.js.map +1 -0
  23. package/dist/commands/feedback.js +234 -0
  24. package/dist/commands/feedback.js.map +1 -0
  25. package/dist/commands/input.js +370 -0
  26. package/dist/commands/input.js.map +1 -0
  27. package/dist/commands/list.js +81 -0
  28. package/dist/commands/list.js.map +1 -0
  29. package/dist/commands/status.js +93 -0
  30. package/dist/commands/status.js.map +1 -0
  31. package/dist/commands/submit.js +225 -0
  32. package/dist/commands/submit.js.map +1 -0
  33. package/dist/commands/usage.js +168 -0
  34. package/dist/commands/usage.js.map +1 -0
  35. package/dist/config/constants.js +37 -0
  36. package/dist/config/constants.js.map +1 -0
  37. package/dist/config/index.js +84 -0
  38. package/dist/config/index.js.map +1 -0
  39. package/dist/types/index.js +3 -0
  40. package/dist/types/index.js.map +1 -0
  41. package/dist/utils/config.js +55 -0
  42. package/dist/utils/config.js.map +1 -0
  43. package/dist/utils/errors.js +70 -0
  44. package/dist/utils/errors.js.map +1 -0
  45. package/dist/utils/validation.js +133 -0
  46. package/dist/utils/validation.js.map +1 -0
  47. package/jest.config.js +14 -0
  48. package/package.json +42 -0
  49. package/src/__tests__/cli.test.ts +44 -0
  50. package/src/__tests__/config.test.ts +38 -0
  51. package/src/__tests__/errors.test.ts +132 -0
  52. package/src/__tests__/setup.ts +21 -0
  53. package/src/__tests__/validation.test.ts +156 -0
  54. package/src/api/auth.ts +21 -0
  55. package/src/api/feedback.ts +64 -0
  56. package/src/api/input.ts +55 -0
  57. package/src/api/usage.ts +45 -0
  58. package/src/cli.ts +158 -0
  59. package/src/commands/config.ts +192 -0
  60. package/src/commands/feedback.ts +250 -0
  61. package/src/commands/input.ts +389 -0
  62. package/src/commands/list.ts +84 -0
  63. package/src/commands/status.ts +96 -0
  64. package/src/commands/submit.ts +214 -0
  65. package/src/config/constants.ts +36 -0
  66. package/src/config/index.ts +59 -0
  67. package/src/types/index.ts +119 -0
  68. package/src/utils/errors.ts +98 -0
  69. package/src/utils/validation.ts +166 -0
  70. package/tsconfig.json +25 -0
@@ -0,0 +1,370 @@
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.handleInputCommand = handleInputCommand;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const ora_1 = __importDefault(require("ora"));
9
+ const inquirer_1 = __importDefault(require("inquirer"));
10
+ const table_1 = require("table");
11
+ const feedback_1 = require("../api/feedback");
12
+ const input_1 = require("../api/input");
13
+ const constants_1 = require("../config/constants");
14
+ const validation_1 = require("../utils/validation");
15
+ // UUID regex pattern for detecting IDs
16
+ const UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
17
+ // Main input command handler
18
+ async function handleInputCommand(content, options) {
19
+ // Check for common command mistakes
20
+ if (content && ['list', 'show', 'status', 'help'].includes(content.toLowerCase())) {
21
+ console.log(chalk_1.default.yellow('šŸ’” Did you mean one of these commands?'));
22
+ console.log(chalk_1.default.black(''));
23
+ console.log(chalk_1.default.blue(' cl input') + chalk_1.default.black(' # List all inputs'));
24
+ console.log(chalk_1.default.blue(' cl input <id>') + chalk_1.default.black(' # Show specific input details'));
25
+ console.log(chalk_1.default.blue(' cl input "your content"') + chalk_1.default.black(' # Submit new input for analysis'));
26
+ console.log(chalk_1.default.black(''));
27
+ console.log(chalk_1.default.gray('Examples:'));
28
+ console.log(chalk_1.default.gray(' cl input "Dashboard is confusing"'));
29
+ console.log(chalk_1.default.gray(' cl input 74e3dd87-878f-41cf-8e5a-87527bbf7770'));
30
+ return;
31
+ }
32
+ // If content looks like a UUID, treat it as an ID and show details
33
+ if (content && (0, validation_1.validateUuid)(content)) {
34
+ return await showInput(content, options);
35
+ }
36
+ // If content provided and not a UUID, create new input
37
+ if (content) {
38
+ return await createInput(content, options);
39
+ }
40
+ // If no content provided, list inputs
41
+ return await listInputs(options);
42
+ }
43
+ // Helper functions
44
+ async function createInput(content, options) {
45
+ // Validate and sanitize input data
46
+ const validatedData = (0, validation_1.validateAndSanitizeInput)({
47
+ content,
48
+ title: options.title,
49
+ source_url: options.url,
50
+ customer_id: options.customer,
51
+ reporter_name: options.name,
52
+ reporter_email: options.email
53
+ });
54
+ let feedbackData = validatedData;
55
+ if (options.interactive || !content) {
56
+ const answers = await inquirer_1.default.prompt([
57
+ {
58
+ type: 'input',
59
+ name: 'content',
60
+ message: 'What customer input would you like to analyze?',
61
+ validate: (input) => input.length >= 10 || 'Input must be at least 10 characters',
62
+ default: content
63
+ },
64
+ {
65
+ type: 'input',
66
+ name: 'title',
67
+ message: 'Title for this input (optional):',
68
+ default: options.title
69
+ },
70
+ {
71
+ type: 'input',
72
+ name: 'url',
73
+ message: 'Source URL (optional):',
74
+ default: options.url
75
+ },
76
+ {
77
+ type: 'input',
78
+ name: 'customer_id',
79
+ message: 'Customer ID (optional):',
80
+ default: options.customer
81
+ },
82
+ {
83
+ type: 'input',
84
+ name: 'reporter_name',
85
+ message: 'Reporter name (optional):',
86
+ default: options.name
87
+ },
88
+ {
89
+ type: 'input',
90
+ name: 'reporter_email',
91
+ message: 'Reporter email (optional):',
92
+ default: options.email
93
+ }
94
+ ]);
95
+ feedbackData = {
96
+ content: answers.content,
97
+ ...(answers.title && { title: answers.title }),
98
+ ...(answers.url && { source_url: answers.url }),
99
+ ...(answers.customer_id && { customer_id: answers.customer_id }),
100
+ ...(answers.reporter_name && { reporter_name: answers.reporter_name }),
101
+ ...(answers.reporter_email && { reporter_email: answers.reporter_email })
102
+ };
103
+ }
104
+ else {
105
+ feedbackData = {
106
+ content,
107
+ ...(options.title && { title: options.title }),
108
+ ...(options.url && { source_url: options.url }),
109
+ ...(options.customer && { customer_id: options.customer }),
110
+ ...(options.name && { reporter_name: options.name }),
111
+ ...(options.email && { reporter_email: options.email })
112
+ };
113
+ }
114
+ const spinner = (0, ora_1.default)('Analyzing your input...').start();
115
+ const result = await (0, feedback_1.submitFeedback)(feedbackData);
116
+ spinner.succeed('Submitted!');
117
+ if (options.wait) {
118
+ if (options.json) {
119
+ // For JSON, we'll output the final result after waiting
120
+ }
121
+ else {
122
+ console.log(chalk_1.default.blue(`Input ID: ${result.id}`));
123
+ }
124
+ const waitSpinner = (0, ora_1.default)('Processing...').start();
125
+ let attempts = 0;
126
+ const maxAttempts = constants_1.CONFIG.MAX_RETRY_ATTEMPTS;
127
+ while (attempts < maxAttempts) {
128
+ await new Promise(resolve => setTimeout(resolve, constants_1.CONFIG.POLL_INTERVAL_MS));
129
+ try {
130
+ const statusResult = await (0, input_1.getInputStatus)(result.id);
131
+ if (statusResult.status === 'completed') {
132
+ waitSpinner.succeed('Processing complete!');
133
+ if (options.json) {
134
+ console.log(JSON.stringify({ success: true, data: statusResult }, null, 2));
135
+ }
136
+ else {
137
+ console.log(chalk_1.default.blue(`šŸ“Š Results: ${statusResult.feedback_count || 0} customer product feedback generated, ${statusResult.credits_consumed || 0} credits used`));
138
+ if (statusResult.feedback_count > 0) {
139
+ console.log(chalk_1.default.black('Run "cl feedback" to see generated feedback'));
140
+ }
141
+ }
142
+ break;
143
+ }
144
+ else if (statusResult.status === 'failed') {
145
+ waitSpinner.fail('Processing failed');
146
+ if (options.json) {
147
+ console.log(JSON.stringify({ success: false, error: 'Processing failed', data: statusResult }, null, 2));
148
+ }
149
+ else {
150
+ console.log(chalk_1.default.red('\nāŒ Processing failed. Check the status for more details.'));
151
+ }
152
+ break;
153
+ }
154
+ else {
155
+ waitSpinner.text = `Processing... (${statusResult.status})`;
156
+ }
157
+ }
158
+ catch (error) {
159
+ waitSpinner.text = 'Processing... (checking status)';
160
+ }
161
+ attempts++;
162
+ }
163
+ if (attempts >= maxAttempts) {
164
+ waitSpinner.warn('Processing is taking longer than expected');
165
+ if (options.json) {
166
+ console.log(JSON.stringify({ success: false, error: 'Processing timeout', data: { id: result.id, message: 'Processing is taking longer than expected' } }, null, 2));
167
+ }
168
+ else {
169
+ console.log(chalk_1.default.yellow('\nā³ Processing is still in progress. You can check status manually:'));
170
+ console.log(chalk_1.default.black(` cl input status ${result.id}`));
171
+ }
172
+ }
173
+ }
174
+ else {
175
+ spinner.succeed('Submitted!');
176
+ if (options.json) {
177
+ console.log(JSON.stringify({ success: true, data: result }, null, 2));
178
+ }
179
+ else {
180
+ console.log(chalk_1.default.green('āœ… Submitted!'));
181
+ console.log(chalk_1.default.blue(`Input ID: ${result.id}`));
182
+ console.log(chalk_1.default.black('Run "cl input status ' + result.id + '" to check progress'));
183
+ console.log(chalk_1.default.black('Or use "cl input --wait" to wait for completion'));
184
+ }
185
+ }
186
+ }
187
+ async function listRecentInputs(options) {
188
+ const result = await (0, input_1.listInputs)(1, 5);
189
+ const inputs = result.inputs || [];
190
+ if (options.json) {
191
+ console.log(JSON.stringify({ success: true, data: { inputs, pagination: result.pagination } }, null, 2));
192
+ return;
193
+ }
194
+ if (inputs.length === 0) {
195
+ console.log(chalk_1.default.yellow('No recent inputs found.'));
196
+ console.log(chalk_1.default.black('Submit your first input: cl input "Your customer feedback here"'));
197
+ return;
198
+ }
199
+ console.log(chalk_1.default.blue('\nšŸ“ Recent Customer Inputs:'));
200
+ console.log(chalk_1.default.black('─'.repeat(60)));
201
+ inputs.forEach((input, index) => {
202
+ const statusColor = input.status === 'completed' ? 'green' :
203
+ input.status === 'processing' ? 'yellow' : 'red';
204
+ console.log(chalk_1.default.blue(`${index + 1}.`), chalk_1.default.bold(input.title || 'Untitled'));
205
+ console.log(chalk_1.default.black(` ID: ${input.id}`));
206
+ console.log(chalk_1.default.black(` Status: ${chalk_1.default[statusColor](input.status || 'unknown')}`));
207
+ console.log(chalk_1.default.black(` Content: ${input.content ? input.content.substring(0, 100) + (input.content.length > 100 ? '...' : '') : 'N/A'}`));
208
+ console.log(chalk_1.default.black(` Submitted: ${input.created_at ? new Date(input.created_at).toLocaleString() : 'Unknown'}`));
209
+ console.log();
210
+ });
211
+ console.log(chalk_1.default.black('Run "cl input list" to see all inputs'));
212
+ }
213
+ async function listInputs(options) {
214
+ const { page, limit } = (0, validation_1.validatePagination)(options.page, options.limit);
215
+ const status = options.status;
216
+ const result = await (0, input_1.listInputs)(page, limit);
217
+ const inputs = result.inputs || [];
218
+ if (options.json) {
219
+ console.log(JSON.stringify({ success: true, data: { inputs, pagination: result.pagination } }, null, 2));
220
+ return;
221
+ }
222
+ if (inputs.length === 0) {
223
+ console.log(chalk_1.default.yellow('No inputs found.'));
224
+ console.log(chalk_1.default.black('Submit your first input: cl input "Your customer feedback here"'));
225
+ return;
226
+ }
227
+ // Create table
228
+ const tableData = [
229
+ [
230
+ chalk_1.default.bold('ID'),
231
+ chalk_1.default.bold('Title'),
232
+ chalk_1.default.bold('Status'),
233
+ chalk_1.default.bold('Feedback'),
234
+ chalk_1.default.bold('Credits'),
235
+ chalk_1.default.bold('Submitted')
236
+ ]
237
+ ];
238
+ inputs.forEach((input) => {
239
+ const statusColor = input.status === 'completed' ? 'green' :
240
+ input.status === 'processing' ? 'yellow' : 'red';
241
+ tableData.push([
242
+ input.id,
243
+ input.title || chalk_1.default.gray('null'),
244
+ chalk_1.default[statusColor](input.status || 'unknown'),
245
+ input.feedback_count || 0,
246
+ input.credits_consumed || 0,
247
+ input.created_at ? new Date(input.created_at).toLocaleString() : 'Unknown'
248
+ ]);
249
+ });
250
+ console.log(chalk_1.default.blue('\nšŸ“ Customer Inputs:'));
251
+ console.log((0, table_1.table)(tableData, {
252
+ border: {
253
+ topBody: '─',
254
+ topJoin: '┬',
255
+ topLeft: 'ā”Œ',
256
+ topRight: '┐',
257
+ bottomBody: '─',
258
+ bottomJoin: '┓',
259
+ bottomLeft: 'ā””',
260
+ bottomRight: 'ā”˜',
261
+ bodyLeft: '│',
262
+ bodyRight: '│',
263
+ bodyJoin: '│',
264
+ joinBody: '─',
265
+ joinLeft: 'ā”œ',
266
+ joinRight: '┤',
267
+ joinJoin: '┼'
268
+ }
269
+ }));
270
+ if (result.pagination) {
271
+ console.log(chalk_1.default.black(`\nPage ${result.pagination.page} of ${result.pagination.pages} (${result.pagination.total} total inputs)`));
272
+ if (result.pagination.page < result.pagination.pages) {
273
+ console.log(chalk_1.default.gray(`šŸ’” Use --page ${result.pagination.page + 1} to see next page`));
274
+ }
275
+ }
276
+ }
277
+ async function showInput(id, options) {
278
+ const result = await (0, input_1.getInputDetail)(id);
279
+ if (options.json) {
280
+ console.log(JSON.stringify({ success: true, data: result }, null, 2));
281
+ return;
282
+ }
283
+ console.log(chalk_1.default.blue('\nšŸ“ Input Details:'));
284
+ console.log(chalk_1.default.black('─'.repeat(50)));
285
+ console.log(chalk_1.default.blue('ID:'), result.id);
286
+ console.log(chalk_1.default.blue('Title:'), result.title || chalk_1.default.gray('null'));
287
+ console.log(chalk_1.default.blue('Status:'), result.status);
288
+ console.log(chalk_1.default.blue('Content:'), result.content || 'No content');
289
+ console.log(chalk_1.default.blue('Source URL:'), result.source_url || chalk_1.default.gray('null'));
290
+ console.log(chalk_1.default.blue('Customer ID:'), result.customer_id || chalk_1.default.gray('null'));
291
+ console.log(chalk_1.default.blue('Reporter:'), result.reporter_name || chalk_1.default.gray('null'));
292
+ console.log(chalk_1.default.blue('Email:'), result.reporter_email || chalk_1.default.gray('null'));
293
+ console.log(chalk_1.default.blue('AI Feedback Generated:'), result.feedback_count || 0);
294
+ console.log(chalk_1.default.blue('Credits Used:'), result.credits_consumed || 0);
295
+ console.log(chalk_1.default.blue('Submitted:'), result.created_at ? new Date(result.created_at).toLocaleString() : 'Unknown');
296
+ console.log(chalk_1.default.blue('Updated:'), result.updated_at ? new Date(result.updated_at).toLocaleString() : 'Unknown');
297
+ }
298
+ async function checkInputStatus(id, options) {
299
+ const result = await (0, input_1.getInputStatus)(id);
300
+ if (options.json) {
301
+ console.log(JSON.stringify({ success: true, data: result }, null, 2));
302
+ return;
303
+ }
304
+ console.log(chalk_1.default.blue('\nšŸ“Š Processing Status:'));
305
+ console.log(chalk_1.default.black('─'.repeat(40)));
306
+ console.log(chalk_1.default.blue('ID:'), result.id);
307
+ console.log(chalk_1.default.blue('Status:'), result.status);
308
+ console.log(chalk_1.default.blue('Created:'), result.created_at ? new Date(result.created_at).toLocaleString() : 'Unknown');
309
+ console.log(chalk_1.default.blue('Updated:'), result.updated_at ? new Date(result.updated_at).toLocaleString() : 'Unknown');
310
+ }
311
+ function handleError(error, options) {
312
+ if (options.json) {
313
+ console.log(JSON.stringify({
314
+ success: false,
315
+ error: error.message,
316
+ details: error.response?.data || 'Unknown error occurred'
317
+ }, null, 2));
318
+ }
319
+ else {
320
+ if (error.response?.status === 400) {
321
+ const errorData = error.response.data;
322
+ if (errorData?.code === 'VALIDATION_ERROR') {
323
+ console.error(chalk_1.default.red('āŒ Validation Error:'), errorData.error);
324
+ console.log(chalk_1.default.black('\nšŸ’” Common issues:'));
325
+ console.log(chalk_1.default.black(' • Content must be at least 10 characters'));
326
+ console.log(chalk_1.default.black(' • Check that all required fields are provided'));
327
+ console.log(chalk_1.default.black(' • Ensure API key is valid: cl config'));
328
+ }
329
+ else if (errorData?.code === 'PROCESSING_ERROR') {
330
+ console.error(chalk_1.default.red('āŒ Processing Error:'), errorData.error);
331
+ console.log(chalk_1.default.black('\nšŸ’” This usually means:'));
332
+ console.log(chalk_1.default.black(' • The content could not be processed by our AI'));
333
+ console.log(chalk_1.default.black(' • Try rephrasing your input'));
334
+ console.log(chalk_1.default.black(' • Make sure the content is clear and meaningful'));
335
+ console.log(chalk_1.default.black(' • Check API key: cl config'));
336
+ }
337
+ else {
338
+ console.error(chalk_1.default.red('āŒ Bad Request:'), errorData?.error || 'Invalid input provided');
339
+ console.log(chalk_1.default.black('\nšŸ’” Try:'));
340
+ console.log(chalk_1.default.black(' • Check your input content'));
341
+ console.log(chalk_1.default.black(' • Verify API key: cl config'));
342
+ console.log(chalk_1.default.black(' • Get help: cl input --help'));
343
+ }
344
+ }
345
+ else if (error.response?.status === 401) {
346
+ console.error(chalk_1.default.red('āŒ Authentication Error:'), 'Invalid API key');
347
+ console.log(chalk_1.default.black('\nšŸ’” To fix:'));
348
+ console.log(chalk_1.default.black(' 1. Get your free API key at: https://closedloop.sh'));
349
+ console.log(chalk_1.default.black(' 2. Run: cl config set-api-key <your-key>'));
350
+ }
351
+ else if (error.response?.status === 429) {
352
+ console.error(chalk_1.default.red('āŒ Rate Limited:'), 'Too many requests');
353
+ console.log(chalk_1.default.black('\nšŸ’” Wait a moment and try again'));
354
+ }
355
+ else if (error.response?.status >= 500) {
356
+ console.error(chalk_1.default.red('āŒ Server Error:'), 'Our servers are having issues');
357
+ console.log(chalk_1.default.black('\nšŸ’” Try again in a few minutes'));
358
+ }
359
+ else if (error.code === 'ENOTFOUND' || error.code === 'ECONNREFUSED') {
360
+ console.error(chalk_1.default.red('āŒ Connection Error:'), 'Cannot connect to ClosedLoop AI servers');
361
+ console.log(chalk_1.default.black('\nšŸ’” Check your internet connection and try again'));
362
+ }
363
+ else {
364
+ console.error(chalk_1.default.red('āŒ Error:'), error.message);
365
+ console.log(chalk_1.default.black('\nšŸ’” Get help: cl --help'));
366
+ }
367
+ }
368
+ process.exit(1);
369
+ }
370
+ //# sourceMappingURL=input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/commands/input.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
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.listCommand = void 0;
7
+ const commander_1 = require("commander");
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const table_1 = require("table");
10
+ const feedback_1 = require("../api/feedback");
11
+ const constants_1 = require("../config/constants");
12
+ exports.listCommand = new commander_1.Command('list')
13
+ .description('List customer inputs and generated AI feedback')
14
+ .option('-p, --page <number>', 'Page number to show', '1')
15
+ .option('-l, --limit <number>', 'How many items to show per page', '20')
16
+ .option('-s, --status <status>', 'Show only items with this status (processing, completed, failed)')
17
+ .option('--new', 'Show only inputs that are still being processed')
18
+ .option('--json', 'Output in JSON format')
19
+ .action(async (options) => {
20
+ try {
21
+ const params = {
22
+ page: options.page || 1,
23
+ limit: options.limit || constants_1.CONFIG.DEFAULT_PAGE_SIZE
24
+ };
25
+ if (options.status) {
26
+ params.status = options.status;
27
+ }
28
+ const result = options.new
29
+ ? await (0, feedback_1.listFeedbacks)(params, true) // new feedbacks
30
+ : await (0, feedback_1.listFeedbacks)(params, false); // processed feedbacks
31
+ const feedbacks = result.feedbacks || result.data || [];
32
+ if (feedbacks.length === 0) {
33
+ if (options.json) {
34
+ console.log(JSON.stringify({ success: true, data: [], pagination: result.pagination || {} }, null, 2));
35
+ }
36
+ else {
37
+ console.log(chalk_1.default.yellow('No customer inputs found.'));
38
+ }
39
+ return;
40
+ }
41
+ if (options.json) {
42
+ console.log(JSON.stringify({ success: true, data: feedbacks, pagination: result.pagination || {} }, null, 2));
43
+ return;
44
+ }
45
+ // Create table data
46
+ const tableData = [
47
+ ['ID', 'Title', 'Status', 'AI Feedback', 'Credits Used', 'Submitted']
48
+ ];
49
+ feedbacks.forEach((item) => {
50
+ const statusColor = item.status === 'completed' ? 'green' :
51
+ item.status === 'processing' ? 'yellow' :
52
+ item.status === 'pending_step2' ? 'yellow' :
53
+ item.status === 'failed' ? 'red' :
54
+ item.status === 'new' ? 'blue' :
55
+ item.status === 'in_review' ? 'yellow' :
56
+ item.status === 'addressed' ? 'green' :
57
+ item.status === 'archived' ? 'gray' : 'red';
58
+ tableData.push([
59
+ item.id,
60
+ item.title || 'Untitled',
61
+ chalk_1.default[statusColor](item.status || 'unknown'),
62
+ (item.feedbackCount || 0).toString(),
63
+ (item.creditsConsumed || 0).toString(),
64
+ item.timestamp ? new Date(item.timestamp).toLocaleString() : 'Unknown'
65
+ ]);
66
+ });
67
+ console.log(chalk_1.default.blue('\nšŸ“‹ Customer Inputs & AI Feedback:'));
68
+ console.log((0, table_1.table)(tableData));
69
+ // Pagination info
70
+ const pagination = result.pagination || {};
71
+ if (pagination.pages > 1) {
72
+ console.log(chalk_1.default.gray(`\nPage ${pagination.page} of ${pagination.pages} (${pagination.total} total items)`));
73
+ console.log(chalk_1.default.gray('Use --page <number> to see more'));
74
+ }
75
+ }
76
+ catch (error) {
77
+ console.error(chalk_1.default.red('Error:'), error.message);
78
+ process.exit(1);
79
+ }
80
+ });
81
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
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.statusCommand = void 0;
7
+ const commander_1 = require("commander");
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const ora_1 = __importDefault(require("ora"));
10
+ const feedback_1 = require("../api/feedback");
11
+ const constants_1 = require("../config/constants");
12
+ exports.statusCommand = new commander_1.Command('status')
13
+ .description('Check processing status of a feedback submission')
14
+ .argument('<id>', 'Feedback submission ID')
15
+ .option('-w, --watch', 'Watch for status changes')
16
+ .option('--json', 'Output in JSON format')
17
+ .action(async (id, options) => {
18
+ try {
19
+ if (options.watch) {
20
+ // Watch mode - check status every few seconds
21
+ const spinner = (0, ora_1.default)('Watching for status changes...').start();
22
+ const checkStatus = async () => {
23
+ try {
24
+ const result = await (0, feedback_1.getFeedbackStatus)(id);
25
+ if (result.status === 'completed') {
26
+ spinner.succeed(chalk_1.default.green(`āœ… Processing completed! Generated ${result.feedbackCount} insights`));
27
+ process.exit(0);
28
+ }
29
+ else if (result.status === 'failed') {
30
+ spinner.fail(chalk_1.default.red('āŒ Processing failed'));
31
+ process.exit(1);
32
+ }
33
+ else {
34
+ spinner.text = `Processing... (${result.status})`;
35
+ }
36
+ }
37
+ catch (error) {
38
+ spinner.fail(chalk_1.default.red('Error checking status:') + ' ' + error.message);
39
+ process.exit(1);
40
+ }
41
+ };
42
+ // Check immediately
43
+ await checkStatus();
44
+ // Then check every few seconds
45
+ const interval = setInterval(checkStatus, constants_1.CONFIG.POLL_INTERVAL_MS);
46
+ // Stop watching on Ctrl+C
47
+ process.on('SIGINT', () => {
48
+ clearInterval(interval);
49
+ spinner.stop();
50
+ console.log(chalk_1.default.yellow('\nStopped watching.'));
51
+ process.exit(0);
52
+ });
53
+ }
54
+ else {
55
+ // Single check
56
+ const spinner = (0, ora_1.default)('Checking status...').start();
57
+ const result = await (0, feedback_1.getFeedbackStatus)(id);
58
+ spinner.stop();
59
+ if (options.json) {
60
+ console.log(JSON.stringify({ success: true, data: result }, null, 2));
61
+ return;
62
+ }
63
+ console.log(chalk_1.default.blue('\nšŸ“Š Status Information:'));
64
+ console.log(chalk_1.default.gray('─'.repeat(40)));
65
+ console.log(chalk_1.default.blue('ID:'), result.id);
66
+ console.log(chalk_1.default.blue('Title:'), result.signal_title || result.title);
67
+ console.log(chalk_1.default.blue('Status:'), result.status === 'completed' ? chalk_1.default.green(result.status) :
68
+ result.status === 'processing' ? chalk_1.default.yellow(result.status) :
69
+ result.status === 'pending_step2' ? chalk_1.default.yellow('pending') :
70
+ result.status === 'failed' ? chalk_1.default.red(result.status) :
71
+ result.status === 'new' ? chalk_1.default.blue(result.status) :
72
+ result.status === 'in_review' ? chalk_1.default.yellow(result.status) :
73
+ result.status === 'addressed' ? chalk_1.default.green(result.status) :
74
+ result.status === 'archived' ? chalk_1.default.gray(result.status) :
75
+ chalk_1.default.red(result.status));
76
+ console.log(chalk_1.default.blue('Created:'), result.created_at ? new Date(result.created_at).toLocaleString() : 'Unknown');
77
+ console.log(chalk_1.default.blue('Updated:'), result.updated_at ? new Date(result.updated_at).toLocaleString() : 'Unknown');
78
+ console.log(chalk_1.default.blue('Credits Used:'), result.creditsConsumed || 'Unknown');
79
+ console.log(chalk_1.default.blue('AI Feedback Generated:'), result.feedbackCount || 0);
80
+ if (result.status === 'completed' && (result.feedbackCount || 0) > 0) {
81
+ console.log(chalk_1.default.green('\nšŸŽÆ Use "cl list" to see the generated AI feedback!'));
82
+ }
83
+ else if (result.status === 'processing') {
84
+ console.log(chalk_1.default.yellow('\nā³ Still processing... Use "cl status <id> --watch" to monitor'));
85
+ }
86
+ }
87
+ }
88
+ catch (error) {
89
+ console.error(chalk_1.default.red('Error:'), error.message);
90
+ process.exit(1);
91
+ }
92
+ });
93
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}