@closedloop-ai/cli 0.2.4 → 0.3.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 (71) hide show
  1. package/README.md +106 -272
  2. package/dist/THIRD_PARTY_NOTICES.txt +24 -0
  3. package/dist/closedloop.js +156 -0
  4. package/package.json +31 -62
  5. package/CONTRIBUTING.md +0 -437
  6. package/LICENSE +0 -21
  7. package/docs/CLI_COMMANDS.md +0 -522
  8. package/packages/cli/dist/__tests__/api.test.js +0 -151
  9. package/packages/cli/dist/__tests__/api.test.js.map +0 -1
  10. package/packages/cli/dist/__tests__/cli.test.js +0 -37
  11. package/packages/cli/dist/__tests__/cli.test.js.map +0 -1
  12. package/packages/cli/dist/__tests__/config.test.js +0 -33
  13. package/packages/cli/dist/__tests__/config.test.js.map +0 -1
  14. package/packages/cli/dist/__tests__/errors.test.js +0 -109
  15. package/packages/cli/dist/__tests__/errors.test.js.map +0 -1
  16. package/packages/cli/dist/__tests__/performance.test.js +0 -221
  17. package/packages/cli/dist/__tests__/performance.test.js.map +0 -1
  18. package/packages/cli/dist/__tests__/setup.js +0 -50
  19. package/packages/cli/dist/__tests__/setup.js.map +0 -1
  20. package/packages/cli/dist/__tests__/team-simple.test.js +0 -38
  21. package/packages/cli/dist/__tests__/team-simple.test.js.map +0 -1
  22. package/packages/cli/dist/__tests__/test-factories.js +0 -148
  23. package/packages/cli/dist/__tests__/test-factories.js.map +0 -1
  24. package/packages/cli/dist/__tests__/validation.test.js +0 -124
  25. package/packages/cli/dist/__tests__/validation.test.js.map +0 -1
  26. package/packages/cli/dist/api/auth.js +0 -27
  27. package/packages/cli/dist/api/auth.js.map +0 -1
  28. package/packages/cli/dist/api/feedback.js +0 -70
  29. package/packages/cli/dist/api/feedback.js.map +0 -1
  30. package/packages/cli/dist/api/ingest.js +0 -60
  31. package/packages/cli/dist/api/ingest.js.map +0 -1
  32. package/packages/cli/dist/api/input.js +0 -60
  33. package/packages/cli/dist/api/input.js.map +0 -1
  34. package/packages/cli/dist/api/team.js +0 -59
  35. package/packages/cli/dist/api/team.js.map +0 -1
  36. package/packages/cli/dist/api/usage.js +0 -49
  37. package/packages/cli/dist/api/usage.js.map +0 -1
  38. package/packages/cli/dist/cli.js +0 -201
  39. package/packages/cli/dist/cli.js.map +0 -1
  40. package/packages/cli/dist/commands/config.js +0 -186
  41. package/packages/cli/dist/commands/config.js.map +0 -1
  42. package/packages/cli/dist/commands/feedback.js +0 -234
  43. package/packages/cli/dist/commands/feedback.js.map +0 -1
  44. package/packages/cli/dist/commands/ingest.js +0 -391
  45. package/packages/cli/dist/commands/ingest.js.map +0 -1
  46. package/packages/cli/dist/commands/input.js +0 -370
  47. package/packages/cli/dist/commands/input.js.map +0 -1
  48. package/packages/cli/dist/commands/insight.js +0 -234
  49. package/packages/cli/dist/commands/insight.js.map +0 -1
  50. package/packages/cli/dist/commands/list.js +0 -81
  51. package/packages/cli/dist/commands/list.js.map +0 -1
  52. package/packages/cli/dist/commands/status.js +0 -93
  53. package/packages/cli/dist/commands/status.js.map +0 -1
  54. package/packages/cli/dist/commands/submit.js +0 -225
  55. package/packages/cli/dist/commands/submit.js.map +0 -1
  56. package/packages/cli/dist/commands/team.js +0 -82
  57. package/packages/cli/dist/commands/team.js.map +0 -1
  58. package/packages/cli/dist/commands/usage.js +0 -168
  59. package/packages/cli/dist/commands/usage.js.map +0 -1
  60. package/packages/cli/dist/config/constants.js +0 -38
  61. package/packages/cli/dist/config/constants.js.map +0 -1
  62. package/packages/cli/dist/config/index.js +0 -84
  63. package/packages/cli/dist/config/index.js.map +0 -1
  64. package/packages/cli/dist/types/index.js +0 -3
  65. package/packages/cli/dist/types/index.js.map +0 -1
  66. package/packages/cli/dist/utils/config.js +0 -55
  67. package/packages/cli/dist/utils/config.js.map +0 -1
  68. package/packages/cli/dist/utils/errors.js +0 -70
  69. package/packages/cli/dist/utils/errors.js.map +0 -1
  70. package/packages/cli/dist/utils/validation.js +0 -133
  71. package/packages/cli/dist/utils/validation.js.map +0 -1
@@ -1,370 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/commands/input.ts"],"names":[],"mappings":"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"}
@@ -1,234 +0,0 @@
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.handleInsightCommand = handleInsightCommand;
7
- const chalk_1 = __importDefault(require("chalk"));
8
- const table_1 = require("table");
9
- const feedback_1 = require("../api/feedback");
10
- const validation_1 = require("../utils/validation");
11
- // UUID regex pattern for detecting IDs
12
- const UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
13
- // Main insight command handler
14
- async function handleInsightCommand(id, options) {
15
- // If ID provided, show specific insight details
16
- if (id) {
17
- if (!(0, validation_1.validateUuid)(id)) {
18
- console.log(chalk_1.default.yellow('šŸ’” Invalid insight ID format'));
19
- console.log(chalk_1.default.black('Insight ID should be a UUID like: 2ea8f556-052b-4f5c-bf86-833780b3d00d'));
20
- return;
21
- }
22
- return await showInsight(id, options);
23
- }
24
- // If search query provided, search insights
25
- if (options.search) {
26
- return await searchInsight(options.search, options);
27
- }
28
- // Otherwise, list all insights
29
- return await listInsight(options);
30
- }
31
- // Helper functions
32
- async function listInsight(options) {
33
- const { page, limit } = (0, validation_1.validatePagination)(options.page, options.limit);
34
- const status = options.status;
35
- const search = options.search;
36
- const result = await (0, feedback_1.listFeedbacks)({
37
- page,
38
- limit,
39
- status,
40
- search
41
- });
42
- if (options.json) {
43
- console.log(JSON.stringify({ success: true, data: result }, null, 2));
44
- return;
45
- }
46
- const feedbacks = result.feedbacks || [];
47
- if (feedbacks.length === 0) {
48
- console.log(chalk_1.default.yellow('šŸ“ No insights found'));
49
- if (search) {
50
- console.log(chalk_1.default.gray(`Try a different search term or remove --search to see all insights`));
51
- }
52
- return;
53
- }
54
- console.log(chalk_1.default.blue('\nšŸŽÆ AI-Generated Insights:'));
55
- const tableData = [
56
- [
57
- chalk_1.default.bold('ID'),
58
- chalk_1.default.bold('Title'),
59
- chalk_1.default.bold('Severity'),
60
- chalk_1.default.bold('Input ID'),
61
- chalk_1.default.bold('Created')
62
- ]
63
- ];
64
- feedbacks.forEach((feedback) => {
65
- tableData.push([
66
- feedback.id,
67
- feedback.title || chalk_1.default.gray('null'),
68
- feedback.severity || 'medium',
69
- feedback.input_id || chalk_1.default.gray('null'),
70
- feedback.timestamp ? new Date(feedback.timestamp).toLocaleString() : 'Unknown'
71
- ]);
72
- });
73
- console.log((0, table_1.table)(tableData, {
74
- border: {
75
- topBody: '─',
76
- topJoin: '┬',
77
- topLeft: 'ā”Œ',
78
- topRight: '┐',
79
- bottomBody: '─',
80
- bottomJoin: '┓',
81
- bottomLeft: 'ā””',
82
- bottomRight: 'ā”˜',
83
- bodyLeft: '│',
84
- bodyRight: '│',
85
- bodyJoin: '│',
86
- joinBody: '─',
87
- joinLeft: 'ā”œ',
88
- joinRight: '┤',
89
- joinJoin: '┼'
90
- }
91
- }));
92
- if (result.pagination) {
93
- console.log(chalk_1.default.black(`\nPage ${result.pagination.page} of ${result.pagination.pages} (${result.pagination.total} total insights)`));
94
- if (result.pagination.page < result.pagination.pages) {
95
- console.log(chalk_1.default.gray(`šŸ’” Use --page ${result.pagination.page + 1} to see next page`));
96
- }
97
- }
98
- }
99
- async function showInsight(id, options) {
100
- try {
101
- const result = await (0, feedback_1.getFeedbackDetail)(id);
102
- if (options.json) {
103
- console.log(JSON.stringify({ success: true, data: result }, null, 2));
104
- return;
105
- }
106
- console.log(chalk_1.default.blue('\nšŸŽÆ Insight Details:'));
107
- console.log(chalk_1.default.black('─'.repeat(50)));
108
- console.log(chalk_1.default.blue('ID:'), result.id);
109
- console.log(chalk_1.default.blue('Title:'), result.title || chalk_1.default.gray('null'));
110
- console.log(chalk_1.default.blue('Clarity:'), result.clarity || chalk_1.default.gray('null'));
111
- console.log(chalk_1.default.blue('Deal Blocker:'), result.deal_blocker ? chalk_1.default.red('Yes') : chalk_1.default.green('No'));
112
- console.log(chalk_1.default.blue('Pain Point:'), result.pain_point || chalk_1.default.gray('null'));
113
- console.log(chalk_1.default.blue('Workaround:'), result.workaround || chalk_1.default.gray('null'));
114
- console.log(chalk_1.default.blue('Competitor Gap:'), result.competitor_gap || chalk_1.default.gray('null'));
115
- console.log(chalk_1.default.blue('Willingness to Pay:'), result.willingness_to_pay || chalk_1.default.gray('null'));
116
- console.log(chalk_1.default.blue('Use Case:'), result.use_case || chalk_1.default.gray('null'));
117
- console.log(chalk_1.default.blue('Feature Area:'), result.feature_area || chalk_1.default.gray('null'));
118
- console.log(chalk_1.default.blue('Source URL:'), result.source_url || chalk_1.default.gray('null'));
119
- console.log(chalk_1.default.blue('Created:'), result.timestamp ? new Date(result.timestamp).toLocaleString() : 'Unknown');
120
- }
121
- catch (error) {
122
- if (options.json) {
123
- console.log(JSON.stringify({
124
- success: false,
125
- error: error.message,
126
- details: error.response?.data || 'Unknown error occurred'
127
- }, null, 2));
128
- }
129
- else {
130
- if (error.response?.status === 404) {
131
- console.error(chalk_1.default.red('āŒ Insight not found'));
132
- console.log(chalk_1.default.black('The insight ID you provided does not exist or is not accessible.'));
133
- }
134
- else if (error.response?.status === 401) {
135
- console.error(chalk_1.default.red('āŒ Authentication Error:'), 'Invalid API key');
136
- console.log(chalk_1.default.black('\nšŸ’” To fix:'));
137
- console.log(chalk_1.default.black(' 1. Get your free API key at: https://closedloop.sh'));
138
- console.log(chalk_1.default.black(' 2. Run: cl config set --api-key <your-key>'));
139
- }
140
- else {
141
- console.error(chalk_1.default.red('āŒ Error:'), error.message);
142
- console.log(chalk_1.default.black('\nšŸ’” Get help: cl --help'));
143
- }
144
- }
145
- process.exit(1);
146
- }
147
- }
148
- async function searchInsight(query, options) {
149
- const page = parseInt(options.page) || 1;
150
- const limit = parseInt(options.limit) || 20;
151
- const result = await (0, feedback_1.listFeedbacks)({
152
- page,
153
- limit,
154
- search: query
155
- });
156
- if (options.json) {
157
- console.log(JSON.stringify({ success: true, data: result }, null, 2));
158
- return;
159
- }
160
- const feedbacks = result.feedbacks || [];
161
- if (feedbacks.length === 0) {
162
- console.log(chalk_1.default.yellow(`šŸ“ No insights found for "${query}"`));
163
- console.log(chalk_1.default.gray('Try a different search term or remove --search to see all insights'));
164
- return;
165
- }
166
- console.log(chalk_1.default.blue(`\nšŸ” Search Results for "${query}":`));
167
- const tableData = [
168
- [
169
- chalk_1.default.bold('ID'),
170
- chalk_1.default.bold('Title'),
171
- chalk_1.default.bold('Severity'),
172
- chalk_1.default.bold('Input ID'),
173
- chalk_1.default.bold('Created')
174
- ]
175
- ];
176
- feedbacks.forEach((feedback) => {
177
- tableData.push([
178
- feedback.id,
179
- feedback.title || chalk_1.default.gray('null'),
180
- feedback.severity || 'medium',
181
- feedback.input_id || chalk_1.default.gray('null'),
182
- feedback.timestamp ? new Date(feedback.timestamp).toLocaleString() : 'Unknown'
183
- ]);
184
- });
185
- console.log((0, table_1.table)(tableData, {
186
- border: {
187
- topBody: '─',
188
- topJoin: '┬',
189
- topLeft: 'ā”Œ',
190
- topRight: '┐',
191
- bottomBody: '─',
192
- bottomJoin: '┓',
193
- bottomLeft: 'ā””',
194
- bottomRight: 'ā”˜',
195
- bodyLeft: '│',
196
- bodyRight: '│',
197
- bodyJoin: '│',
198
- joinBody: '─',
199
- joinLeft: 'ā”œ',
200
- joinRight: '┤',
201
- joinJoin: '┼'
202
- }
203
- }));
204
- if (result.pagination) {
205
- console.log(chalk_1.default.black(`Page ${result.pagination.page} of ${result.pagination.pages} (${result.pagination.total} total results)`));
206
- }
207
- }
208
- function handleError(error, options) {
209
- if (options.json) {
210
- console.log(JSON.stringify({
211
- success: false,
212
- error: error.message,
213
- details: error.response?.data || 'Unknown error occurred'
214
- }, null, 2));
215
- }
216
- else {
217
- if (error.response?.status === 404) {
218
- console.error(chalk_1.default.red('āŒ Not found'));
219
- console.log(chalk_1.default.black('The requested resource does not exist or is not accessible.'));
220
- }
221
- else if (error.response?.status === 401) {
222
- console.error(chalk_1.default.red('āŒ Authentication Error:'), 'Invalid API key');
223
- console.log(chalk_1.default.black('\nšŸ’” To fix:'));
224
- console.log(chalk_1.default.black(' 1. Get your free API key at: https://closedloop.sh'));
225
- console.log(chalk_1.default.black(' 2. Run: cl config set --api-key <your-key>'));
226
- }
227
- else {
228
- console.error(chalk_1.default.red('āŒ Error:'), error.message);
229
- console.log(chalk_1.default.black('\nšŸ’” Get help: cl --help'));
230
- }
231
- }
232
- process.exit(1);
233
- }
234
- //# sourceMappingURL=insight.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"insight.js","sourceRoot":"","sources":["../../src/commands/insight.ts"],"names":[],"mappings":"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"}