@closedloop-ai/cli 0.2.4 → 0.3.1

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 +176 -270
  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,148 +0,0 @@
1
- "use strict";
2
- // Test data factories for consistent test data generation
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.securityTestData = exports.performanceTestData = exports.generateRandomUuid = exports.generateRandomUrl = exports.generateRandomEmail = exports.generateRandomString = exports.testScenarios = exports.mockTeam = exports.mockConfig = exports.mockFeedbacks = exports.mockInputs = exports.createNetworkError = exports.createApiError = exports.createPaginatedResponse = exports.createApiResponse = exports.createTestTeam = exports.createTestConfig = exports.createTestFeedbacks = exports.createTestFeedback = exports.createTestInputs = exports.createTestInput = void 0;
5
- // Input factories
6
- const createTestInput = (overrides = {}) => ({
7
- id: 'input-' + Math.random().toString(36).substr(2, 9),
8
- content: 'Test feedback content',
9
- status: 'processed',
10
- created_at: new Date().toISOString(),
11
- ...overrides
12
- });
13
- exports.createTestInput = createTestInput;
14
- const createTestInputs = (count, overrides = {}) => {
15
- return Array.from({ length: count }, (_, i) => (0, exports.createTestInput)({
16
- id: `input-${i + 1}`,
17
- content: `Test feedback content ${i + 1}`,
18
- ...overrides
19
- }));
20
- };
21
- exports.createTestInputs = createTestInputs;
22
- // Feedback factories
23
- const createTestFeedback = (overrides = {}) => ({
24
- id: 'feedback-' + Math.random().toString(36).substr(2, 9),
25
- summary: 'Test feedback summary',
26
- priority: 'medium',
27
- created_at: new Date().toISOString(),
28
- insights: ['Insight 1', 'Insight 2'],
29
- ...overrides
30
- });
31
- exports.createTestFeedback = createTestFeedback;
32
- const createTestFeedbacks = (count, overrides = {}) => {
33
- return Array.from({ length: count }, (_, i) => (0, exports.createTestFeedback)({
34
- id: `feedback-${i + 1}`,
35
- summary: `Test feedback summary ${i + 1}`,
36
- ...overrides
37
- }));
38
- };
39
- exports.createTestFeedbacks = createTestFeedbacks;
40
- // Config factories
41
- const createTestConfig = (overrides = {}) => ({
42
- apiKey: 'test-api-key-' + Math.random().toString(36).substr(2, 9),
43
- configFile: '/path/to/config.json',
44
- configured: true,
45
- ...overrides
46
- });
47
- exports.createTestConfig = createTestConfig;
48
- // Team factories
49
- const createTestTeam = (overrides = {}) => ({
50
- id: 'team-' + Math.random().toString(36).substr(2, 9),
51
- name: 'Test Team',
52
- website: 'https://example.com',
53
- updated_at: new Date().toISOString(),
54
- ...overrides
55
- });
56
- exports.createTestTeam = createTestTeam;
57
- // API response factories
58
- const createApiResponse = (data, success = true) => ({
59
- success,
60
- data,
61
- message: success ? 'Success' : 'Error'
62
- });
63
- exports.createApiResponse = createApiResponse;
64
- const createPaginatedResponse = (data, page = 1, limit = 20, total = data.length) => ({
65
- success: true,
66
- data,
67
- pagination: {
68
- page,
69
- limit,
70
- total,
71
- pages: Math.ceil(total / limit)
72
- }
73
- });
74
- exports.createPaginatedResponse = createPaginatedResponse;
75
- // Error factories
76
- const createApiError = (status, message) => ({
77
- response: {
78
- status,
79
- data: { message }
80
- }
81
- });
82
- exports.createApiError = createApiError;
83
- const createNetworkError = (code) => ({
84
- code,
85
- message: 'Network error'
86
- });
87
- exports.createNetworkError = createNetworkError;
88
- // Mock data sets
89
- exports.mockInputs = (0, exports.createTestInputs)(5);
90
- exports.mockFeedbacks = (0, exports.createTestFeedbacks)(3);
91
- exports.mockConfig = (0, exports.createTestConfig)();
92
- exports.mockTeam = (0, exports.createTestTeam)();
93
- // Common test scenarios
94
- exports.testScenarios = {
95
- // Success scenarios
96
- successfulInputSubmission: () => (0, exports.createApiResponse)((0, exports.createTestInput)()),
97
- successfulFeedbackList: () => (0, exports.createPaginatedResponse)(exports.mockFeedbacks),
98
- successfulConfigRetrieval: () => (0, exports.createApiResponse)(exports.mockConfig),
99
- // Error scenarios
100
- apiKeyNotFound: () => (0, exports.createApiError)(401, 'Invalid API key'),
101
- resourceNotFound: () => (0, exports.createApiError)(404, 'Resource not found'),
102
- rateLimited: () => (0, exports.createApiError)(429, 'Rate limit exceeded'),
103
- serverError: () => (0, exports.createApiError)(500, 'Internal server error'),
104
- networkError: () => (0, exports.createNetworkError)('ENOTFOUND'),
105
- timeoutError: () => (0, exports.createNetworkError)('ETIMEDOUT'),
106
- // Edge cases
107
- emptyResponse: () => (0, exports.createApiResponse)([]),
108
- largeDataset: () => (0, exports.createPaginatedResponse)((0, exports.createTestInputs)(1000), 1, 100, 1000),
109
- malformedResponse: () => ({ invalid: 'response' })
110
- };
111
- // Test data generators
112
- const generateRandomString = (length = 10) => {
113
- return Math.random().toString(36).substr(2, length);
114
- };
115
- exports.generateRandomString = generateRandomString;
116
- const generateRandomEmail = () => {
117
- return `test-${(0, exports.generateRandomString)(8)}@example.com`;
118
- };
119
- exports.generateRandomEmail = generateRandomEmail;
120
- const generateRandomUrl = () => {
121
- return `https://${(0, exports.generateRandomString)(10)}.example.com`;
122
- };
123
- exports.generateRandomUrl = generateRandomUrl;
124
- const generateRandomUuid = () => {
125
- return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
126
- const r = Math.random() * 16 | 0;
127
- const v = c === 'x' ? r : (r & 0x3 | 0x8);
128
- return v.toString(16);
129
- });
130
- };
131
- exports.generateRandomUuid = generateRandomUuid;
132
- // Performance test data
133
- exports.performanceTestData = {
134
- largeInput: 'a'.repeat(50000),
135
- manyInputs: (0, exports.createTestInputs)(1000),
136
- manyFeedbacks: (0, exports.createTestFeedbacks)(500),
137
- longUuid: (0, exports.generateRandomUuid)() + (0, exports.generateRandomUuid)()
138
- };
139
- // Security test data
140
- exports.securityTestData = {
141
- xssPayload: '<script>alert("xss")</script>',
142
- sqlInjection: "'; DROP TABLE users; --",
143
- pathTraversal: '../../../etc/passwd',
144
- commandInjection: '; rm -rf /',
145
- htmlInjection: '<img src="x" onerror="alert(1)">',
146
- javascriptUrl: 'javascript:alert("xss")'
147
- };
148
- //# sourceMappingURL=test-factories.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-factories.js","sourceRoot":"","sources":["../../src/__tests__/test-factories.ts"],"names":[],"mappings":"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"}
@@ -1,124 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const validation_1 = require("../utils/validation");
4
- const errors_1 = require("../utils/errors");
5
- describe('Validation Utils', () => {
6
- describe('validateUuid', () => {
7
- it('should validate correct UUIDs', () => {
8
- expect((0, validation_1.validateUuid)('123e4567-e89b-12d3-a456-426614174000')).toBe(true);
9
- expect((0, validation_1.validateUuid)('00000000-0000-0000-0000-000000000000')).toBe(true);
10
- });
11
- it('should reject invalid UUIDs', () => {
12
- expect((0, validation_1.validateUuid)('invalid-uuid')).toBe(false);
13
- expect((0, validation_1.validateUuid)('123e4567-e89b-12d3-a456')).toBe(false);
14
- expect((0, validation_1.validateUuid)('')).toBe(false);
15
- });
16
- });
17
- describe('validateInputContent', () => {
18
- it('should validate correct content', () => {
19
- expect((0, validation_1.validateInputContent)('Valid content')).toBe('Valid content');
20
- expect((0, validation_1.validateInputContent)(' Valid content ')).toBe('Valid content');
21
- });
22
- it('should reject empty content', () => {
23
- expect(() => (0, validation_1.validateInputContent)('')).toThrow(errors_1.CliError);
24
- expect(() => (0, validation_1.validateInputContent)(' ')).toThrow(errors_1.CliError);
25
- });
26
- it('should reject content that is too long', () => {
27
- const longContent = 'a'.repeat(50001);
28
- expect(() => (0, validation_1.validateInputContent)(longContent)).toThrow(errors_1.CliError);
29
- });
30
- });
31
- describe('validateApiKey', () => {
32
- it('should validate correct API keys', () => {
33
- expect((0, validation_1.validateApiKey)('valid-api-key-123')).toBe('valid-api-key-123');
34
- expect((0, validation_1.validateApiKey)(' valid-api-key-123 ')).toBe('valid-api-key-123');
35
- });
36
- it('should reject empty API keys', () => {
37
- expect(() => (0, validation_1.validateApiKey)('')).toThrow(errors_1.CliError);
38
- expect(() => (0, validation_1.validateApiKey)(' ')).toThrow(errors_1.CliError);
39
- });
40
- it('should reject API keys that are too short', () => {
41
- expect(() => (0, validation_1.validateApiKey)('short')).toThrow(errors_1.CliError);
42
- });
43
- });
44
- describe('validateEmail', () => {
45
- it('should validate correct emails', () => {
46
- expect((0, validation_1.validateEmail)('test@example.com')).toBe('test@example.com');
47
- expect((0, validation_1.validateEmail)(' TEST@EXAMPLE.COM ')).toBe('test@example.com');
48
- });
49
- it('should reject invalid emails', () => {
50
- expect(() => (0, validation_1.validateEmail)('invalid-email')).toThrow(errors_1.CliError);
51
- expect(() => (0, validation_1.validateEmail)('test@')).toThrow(errors_1.CliError);
52
- expect(() => (0, validation_1.validateEmail)('@example.com')).toThrow(errors_1.CliError);
53
- });
54
- });
55
- describe('validateUrl', () => {
56
- it('should validate correct URLs', () => {
57
- expect((0, validation_1.validateUrl)('https://example.com')).toBe('https://example.com/');
58
- expect((0, validation_1.validateUrl)('http://example.com')).toBe('http://example.com/');
59
- });
60
- it('should reject invalid URLs', () => {
61
- expect(() => (0, validation_1.validateUrl)('invalid-url')).toThrow(errors_1.CliError);
62
- expect(() => (0, validation_1.validateUrl)('ftp://example.com')).toThrow(errors_1.CliError);
63
- });
64
- });
65
- describe('validatePagination', () => {
66
- it('should validate correct pagination', () => {
67
- expect((0, validation_1.validatePagination)(1, 20)).toEqual({ page: 1, limit: 20 });
68
- expect((0, validation_1.validatePagination)(undefined, undefined)).toEqual({ page: 1, limit: 20 });
69
- });
70
- it('should enforce minimum values', () => {
71
- expect((0, validation_1.validatePagination)(0, 0)).toEqual({ page: 1, limit: 20 });
72
- expect((0, validation_1.validatePagination)(-1, -1)).toEqual({ page: 1, limit: 1 });
73
- });
74
- it('should enforce maximum limit', () => {
75
- const result = (0, validation_1.validatePagination)(1, 1000);
76
- expect(result.limit).toBeLessThanOrEqual(100);
77
- });
78
- });
79
- describe('sanitizeInput', () => {
80
- it('should sanitize dangerous content', () => {
81
- expect((0, validation_1.sanitizeInput)('<script>alert("xss")</script>')).toBe('scriptalert("xss")/script');
82
- expect((0, validation_1.sanitizeInput)('javascript:alert("xss")')).toBe('alert("xss")');
83
- expect((0, validation_1.sanitizeInput)('onclick="alert(\'xss\')"')).toBe('"alert(\'xss\')"');
84
- });
85
- it('should preserve safe content', () => {
86
- expect((0, validation_1.sanitizeInput)('Safe content')).toBe('Safe content');
87
- expect((0, validation_1.sanitizeInput)(' Safe content ')).toBe('Safe content');
88
- });
89
- });
90
- describe('validateAndSanitizeInput', () => {
91
- it('should validate and sanitize complete input data', () => {
92
- const inputData = {
93
- content: 'Test content',
94
- title: 'Test title',
95
- source_url: 'https://example.com',
96
- customer_id: 'customer-123',
97
- reporter_name: 'John Doe',
98
- reporter_email: 'john@example.com'
99
- };
100
- const result = (0, validation_1.validateAndSanitizeInput)(inputData);
101
- expect(result.content).toBe('Test content');
102
- expect(result.title).toBe('Test title');
103
- expect(result.source_url).toBe('https://example.com/');
104
- expect(result.customer_id).toBe('customer-123');
105
- expect(result.reporter_name).toBe('John Doe');
106
- expect(result.reporter_email).toBe('john@example.com');
107
- });
108
- it('should handle optional fields', () => {
109
- const inputData = {
110
- content: 'Test content'
111
- };
112
- const result = (0, validation_1.validateAndSanitizeInput)(inputData);
113
- expect(result.content).toBe('Test content');
114
- expect(result.title).toBeUndefined();
115
- });
116
- it('should reject invalid content', () => {
117
- const inputData = {
118
- content: ''
119
- };
120
- expect(() => (0, validation_1.validateAndSanitizeInput)(inputData)).toThrow(errors_1.CliError);
121
- });
122
- });
123
- });
124
- //# sourceMappingURL=validation.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validation.test.js","sourceRoot":"","sources":["../../src/__tests__/validation.test.ts"],"names":[],"mappings":"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"}
@@ -1,27 +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.validateApiKey = validateApiKey;
7
- const axios_1 = __importDefault(require("axios"));
8
- const constants_1 = require("../config/constants");
9
- const errors_1 = require("../utils/errors");
10
- async function validateApiKey(apiKey) {
11
- try {
12
- const response = await axios_1.default.get(`${constants_1.CONFIG.API_BASE_URL}/health`, {
13
- headers: {
14
- 'Authorization': `Bearer ${apiKey}`
15
- },
16
- timeout: constants_1.CONFIG.TIMEOUT_MS
17
- });
18
- return response.status === 200;
19
- }
20
- catch (error) {
21
- if (error.response?.status === 401) {
22
- return false;
23
- }
24
- throw (0, errors_1.handleApiError)(error);
25
- }
26
- }
27
- //# sourceMappingURL=auth.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/api/auth.ts"],"names":[],"mappings":";;;;;AAIA,wCAgBC;AApBD,kDAA0B;AAC1B,mDAA6C;AAC7C,4CAAwE;AAEjE,KAAK,UAAU,cAAc,CAAC,MAAc;IACjD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,GAAG,kBAAM,CAAC,YAAY,SAAS,EAAE;YAChE,OAAO,EAAE;gBACP,eAAe,EAAE,UAAU,MAAM,EAAE;aACpC;YACD,OAAO,EAAE,kBAAM,CAAC,UAAU;SAC3B,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC;IACjC,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;YACnC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,IAAA,uBAAc,EAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC"}
@@ -1,70 +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.submitFeedback = submitFeedback;
7
- exports.listFeedbacks = listFeedbacks;
8
- exports.getFeedbackStatus = getFeedbackStatus;
9
- exports.getFeedbackDetail = getFeedbackDetail;
10
- const axios_1 = __importDefault(require("axios"));
11
- const config_1 = require("../config");
12
- const constants_1 = require("../config/constants");
13
- const errors_1 = require("../utils/errors");
14
- const getClient = () => {
15
- const apiKey = config_1.config.get('apiKey');
16
- if (!apiKey) {
17
- throw new errors_1.CliError(constants_1.MESSAGES.NO_API_KEY, errors_1.ERROR_CODES.NO_API_KEY);
18
- }
19
- return axios_1.default.create({
20
- baseURL: constants_1.CONFIG.API_BASE_URL,
21
- headers: {
22
- 'Authorization': `Bearer ${apiKey}`,
23
- 'Content-Type': 'application/json',
24
- 'User-Agent': constants_1.CONFIG.USER_AGENT
25
- },
26
- timeout: constants_1.CONFIG.TIMEOUT_MS
27
- });
28
- };
29
- async function submitFeedback(data) {
30
- try {
31
- const client = getClient();
32
- const response = await client.post('/ingest', data);
33
- return response.data.data;
34
- }
35
- catch (error) {
36
- throw (0, errors_1.handleApiError)(error);
37
- }
38
- }
39
- async function listFeedbacks(params, isNew = false) {
40
- try {
41
- const client = getClient();
42
- const endpoint = isNew ? '/feedbacks/new' : '/feedbacks';
43
- const response = await client.get(endpoint, { params });
44
- return response.data.data;
45
- }
46
- catch (error) {
47
- throw (0, errors_1.handleApiError)(error);
48
- }
49
- }
50
- async function getFeedbackStatus(id) {
51
- try {
52
- const client = getClient();
53
- const response = await client.get(`/ingest/${id}`);
54
- return response.data.data;
55
- }
56
- catch (error) {
57
- throw (0, errors_1.handleApiError)(error);
58
- }
59
- }
60
- async function getFeedbackDetail(id) {
61
- try {
62
- const client = getClient();
63
- const response = await client.get(`/feedbacks/${id}`);
64
- return response.data.data;
65
- }
66
- catch (error) {
67
- throw (0, errors_1.handleApiError)(error);
68
- }
69
- }
70
- //# sourceMappingURL=feedback.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../src/api/feedback.ts"],"names":[],"mappings":";;;;;AAwBA,wCAQC;AAED,sCASC;AAED,8CAQC;AAED,8CAQC;AA/DD,kDAA0B;AAC1B,sCAAmC;AAEnC,mDAAuD;AACvD,4CAAwE;AAExE,MAAM,SAAS,GAAG,GAAG,EAAE;IACrB,MAAM,MAAM,GAAG,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEpC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,iBAAQ,CAAC,oBAAQ,CAAC,UAAU,EAAE,oBAAW,CAAC,UAAU,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,eAAK,CAAC,MAAM,CAAC;QAClB,OAAO,EAAE,kBAAM,CAAC,YAAY;QAC5B,OAAO,EAAE;YACP,eAAe,EAAE,UAAU,MAAM,EAAE;YACnC,cAAc,EAAE,kBAAkB;YAClC,YAAY,EAAE,kBAAM,CAAC,UAAU;SAChC;QACD,OAAO,EAAE,kBAAM,CAAC,UAAU;KAC3B,CAAC,CAAC;AACL,CAAC,CAAC;AAEK,KAAK,UAAU,cAAc,CAAC,IAAwB;IAC3D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACpD,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAA,uBAAc,EAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,aAAa,CAAC,MAAsB,EAAE,KAAK,GAAG,KAAK;IACvE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC;QACzD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QACxD,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAA,uBAAc,EAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,iBAAiB,CAAC,EAAU;IAChD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACnD,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAA,uBAAc,EAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,iBAAiB,CAAC,EAAU;IAChD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QACtD,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAA,uBAAc,EAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC"}
@@ -1,60 +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.listIngests = listIngests;
7
- exports.getIngestDetail = getIngestDetail;
8
- exports.getIngestStatus = getIngestStatus;
9
- const axios_1 = __importDefault(require("axios"));
10
- const config_1 = require("../config");
11
- const constants_1 = require("../config/constants");
12
- const errors_1 = require("../utils/errors");
13
- const getClient = () => {
14
- const apiKey = config_1.config.get('apiKey');
15
- if (!apiKey) {
16
- throw new errors_1.CliError(constants_1.MESSAGES.NO_API_KEY, errors_1.ERROR_CODES.NO_API_KEY);
17
- }
18
- return axios_1.default.create({
19
- baseURL: constants_1.CONFIG.API_BASE_URL,
20
- headers: {
21
- 'Authorization': `Bearer ${apiKey}`,
22
- 'Content-Type': 'application/json',
23
- 'User-Agent': constants_1.CONFIG.USER_AGENT
24
- },
25
- timeout: constants_1.CONFIG.TIMEOUT_MS
26
- });
27
- };
28
- async function listIngests(page = 1, limit = 20) {
29
- try {
30
- const client = getClient();
31
- const response = await client.get('/ingest', {
32
- params: { page, limit }
33
- });
34
- return response.data.data;
35
- }
36
- catch (error) {
37
- throw (0, errors_1.handleApiError)(error);
38
- }
39
- }
40
- async function getIngestDetail(id) {
41
- try {
42
- const client = getClient();
43
- const response = await client.get(`/ingest/${id}`);
44
- return response.data.data;
45
- }
46
- catch (error) {
47
- throw (0, errors_1.handleApiError)(error);
48
- }
49
- }
50
- async function getIngestStatus(id) {
51
- try {
52
- const client = getClient();
53
- const response = await client.get(`/ingest/${id}`);
54
- return response.data.data;
55
- }
56
- catch (error) {
57
- throw (0, errors_1.handleApiError)(error);
58
- }
59
- }
60
- //# sourceMappingURL=ingest.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ingest.js","sourceRoot":"","sources":["../../src/api/ingest.ts"],"names":[],"mappings":";;;;;AAwBA,kCAUC;AAED,0CAQC;AAED,0CAQC;AAtDD,kDAA0B;AAC1B,sCAAmC;AAEnC,mDAAuD;AACvD,4CAAwE;AAExE,MAAM,SAAS,GAAG,GAAG,EAAE;IACrB,MAAM,MAAM,GAAG,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEpC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,iBAAQ,CAAC,oBAAQ,CAAC,UAAU,EAAE,oBAAW,CAAC,UAAU,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,eAAK,CAAC,MAAM,CAAC;QAClB,OAAO,EAAE,kBAAM,CAAC,YAAY;QAC5B,OAAO,EAAE;YACP,eAAe,EAAE,UAAU,MAAM,EAAE;YACnC,cAAc,EAAE,kBAAkB;YAClC,YAAY,EAAE,kBAAM,CAAC,UAAU;SAChC;QACD,OAAO,EAAE,kBAAM,CAAC,UAAU;KAC3B,CAAC,CAAC;AACL,CAAC,CAAC;AAEK,KAAK,UAAU,WAAW,CAAC,OAAe,CAAC,EAAE,QAAgB,EAAE;IACpE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE;YAC3C,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;SACxB,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAA,uBAAc,EAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,eAAe,CAAC,EAAU;IAC9C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACnD,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAA,uBAAc,EAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,eAAe,CAAC,EAAU;IAC9C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACnD,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAA,uBAAc,EAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC"}
@@ -1,60 +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.listInputs = listInputs;
7
- exports.getInputDetail = getInputDetail;
8
- exports.getInputStatus = getInputStatus;
9
- const axios_1 = __importDefault(require("axios"));
10
- const config_1 = require("../config");
11
- const constants_1 = require("../config/constants");
12
- const errors_1 = require("../utils/errors");
13
- const getClient = () => {
14
- const apiKey = config_1.config.get('apiKey');
15
- if (!apiKey) {
16
- throw new errors_1.CliError(constants_1.MESSAGES.NO_API_KEY, errors_1.ERROR_CODES.NO_API_KEY);
17
- }
18
- return axios_1.default.create({
19
- baseURL: constants_1.CONFIG.API_BASE_URL,
20
- headers: {
21
- 'Authorization': `Bearer ${apiKey}`,
22
- 'Content-Type': 'application/json',
23
- 'User-Agent': constants_1.CONFIG.USER_AGENT
24
- },
25
- timeout: constants_1.CONFIG.TIMEOUT_MS
26
- });
27
- };
28
- async function listInputs(page = 1, limit = 20) {
29
- try {
30
- const client = getClient();
31
- const response = await client.get('/inputs', {
32
- params: { page, limit }
33
- });
34
- return response.data.data;
35
- }
36
- catch (error) {
37
- throw (0, errors_1.handleApiError)(error);
38
- }
39
- }
40
- async function getInputDetail(id) {
41
- try {
42
- const client = getClient();
43
- const response = await client.get(`/inputs/${id}`);
44
- return response.data.data;
45
- }
46
- catch (error) {
47
- throw (0, errors_1.handleApiError)(error);
48
- }
49
- }
50
- async function getInputStatus(id) {
51
- try {
52
- const client = getClient();
53
- const response = await client.get(`/inputs/${id}`);
54
- return response.data.data;
55
- }
56
- catch (error) {
57
- throw (0, errors_1.handleApiError)(error);
58
- }
59
- }
60
- //# sourceMappingURL=input.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/api/input.ts"],"names":[],"mappings":";;;;;AAwBA,gCAUC;AAED,wCAQC;AAED,wCAQC;AAtDD,kDAA0B;AAC1B,sCAAmC;AAEnC,mDAAuD;AACvD,4CAAwE;AAExE,MAAM,SAAS,GAAG,GAAG,EAAE;IACrB,MAAM,MAAM,GAAG,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEpC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,iBAAQ,CAAC,oBAAQ,CAAC,UAAU,EAAE,oBAAW,CAAC,UAAU,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,eAAK,CAAC,MAAM,CAAC;QAClB,OAAO,EAAE,kBAAM,CAAC,YAAY;QAC5B,OAAO,EAAE;YACP,eAAe,EAAE,UAAU,MAAM,EAAE;YACnC,cAAc,EAAE,kBAAkB;YAClC,YAAY,EAAE,kBAAM,CAAC,UAAU;SAChC;QACD,OAAO,EAAE,kBAAM,CAAC,UAAU;KAC3B,CAAC,CAAC;AACL,CAAC,CAAC;AAEK,KAAK,UAAU,UAAU,CAAC,OAAe,CAAC,EAAE,QAAgB,EAAE;IACnE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE;YAC3C,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;SACxB,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAA,uBAAc,EAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,cAAc,CAAC,EAAU;IAC7C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACnD,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAA,uBAAc,EAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,cAAc,CAAC,EAAU;IAC7C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACnD,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAA,uBAAc,EAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC"}
@@ -1,59 +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.getTeamWebsite = getTeamWebsite;
7
- exports.updateTeamWebsite = updateTeamWebsite;
8
- const axios_1 = __importDefault(require("axios"));
9
- const config_1 = require("../config");
10
- const constants_1 = require("../config/constants");
11
- const errors_1 = require("../utils/errors");
12
- const getClient = () => {
13
- const apiKey = config_1.config.get('apiKey');
14
- if (!apiKey) {
15
- throw new errors_1.CliError('API key not configured. Run: cl config set --api-key <key>', errors_1.ERROR_CODES.NO_API_KEY);
16
- }
17
- return axios_1.default.create({
18
- baseURL: constants_1.CONFIG.API_BASE_URL,
19
- headers: {
20
- 'Authorization': `Bearer ${apiKey}`,
21
- 'Content-Type': 'application/json',
22
- },
23
- timeout: 30000,
24
- });
25
- };
26
- async function getTeamWebsite() {
27
- try {
28
- const client = getClient();
29
- const response = await client.get('/team/website');
30
- if (!response.data.success) {
31
- throw new Error('Failed to fetch team website');
32
- }
33
- return response.data.data;
34
- }
35
- catch (error) {
36
- throw (0, errors_1.handleApiError)(error);
37
- }
38
- }
39
- async function updateTeamWebsite(website) {
40
- // Validate website URL format
41
- const websiteRegex = /^https?:\/\/.+\..+/;
42
- if (!websiteRegex.test(website)) {
43
- throw new Error('Invalid website URL format. Must include protocol (http:// or https://) and domain');
44
- }
45
- try {
46
- const client = getClient();
47
- const response = await client.post('/team/website', {
48
- website
49
- });
50
- if (!response.data.success) {
51
- throw new Error('Failed to update team website');
52
- }
53
- return response.data.data;
54
- }
55
- catch (error) {
56
- throw (0, errors_1.handleApiError)(error);
57
- }
58
- }
59
- //# sourceMappingURL=team.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"team.js","sourceRoot":"","sources":["../../src/api/team.ts"],"names":[],"mappings":";;;;;AA4BA,wCAaC;AAED,8CAqBC;AAhED,kDAA0B;AAC1B,sCAAmC;AAEnC,mDAA6C;AAC7C,4CAAwE;AAOxE,MAAM,SAAS,GAAG,GAAG,EAAE;IACrB,MAAM,MAAM,GAAG,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEpC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,iBAAQ,CAAC,4DAA4D,EAAE,oBAAW,CAAC,UAAU,CAAC,CAAC;IAC3G,CAAC;IAED,OAAO,eAAK,CAAC,MAAM,CAAC;QAClB,OAAO,EAAE,kBAAM,CAAC,YAAY;QAC5B,OAAO,EAAE;YACP,eAAe,EAAE,UAAU,MAAM,EAAE;YACnC,cAAc,EAAE,kBAAkB;SACnC;QACD,OAAO,EAAE,KAAK;KACf,CAAC,CAAC;AACL,CAAC,CAAC;AAEK,KAAK,UAAU,cAAc;IAClC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAA+B,eAAe,CAAC,CAAC;QAEjF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,IAAA,uBAAc,EAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,iBAAiB,CAAC,OAAe;IACrD,8BAA8B;IAC9B,MAAM,YAAY,GAAG,oBAAoB,CAAC;IAC1C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,oFAAoF,CAAC,CAAC;IACxG,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAA+B,eAAe,EAAE;YAChF,OAAO;SACR,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,IAAA,uBAAc,EAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC"}
@@ -1,49 +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.listUsage = listUsage;
7
- exports.getUsageDetail = getUsageDetail;
8
- const axios_1 = __importDefault(require("axios"));
9
- const config_1 = require("../config");
10
- const constants_1 = require("../config/constants");
11
- const errors_1 = require("../utils/errors");
12
- const getClient = () => {
13
- const apiKey = config_1.config.get('apiKey');
14
- if (!apiKey) {
15
- throw new errors_1.CliError(constants_1.MESSAGES.NO_API_KEY, errors_1.ERROR_CODES.NO_API_KEY);
16
- }
17
- return axios_1.default.create({
18
- baseURL: constants_1.CONFIG.API_BASE_URL,
19
- headers: {
20
- 'Authorization': `Bearer ${apiKey}`,
21
- 'Content-Type': 'application/json',
22
- 'User-Agent': constants_1.CONFIG.USER_AGENT
23
- },
24
- timeout: constants_1.CONFIG.TIMEOUT_MS
25
- });
26
- };
27
- async function listUsage(page = 1, limit = 20) {
28
- try {
29
- const client = getClient();
30
- const response = await client.get('/usage', {
31
- params: { page, limit }
32
- });
33
- return response.data.data;
34
- }
35
- catch (error) {
36
- throw (0, errors_1.handleApiError)(error);
37
- }
38
- }
39
- async function getUsageDetail(id) {
40
- try {
41
- const client = getClient();
42
- const response = await client.get(`/usage/${id}`);
43
- return response.data.data;
44
- }
45
- catch (error) {
46
- throw (0, errors_1.handleApiError)(error);
47
- }
48
- }
49
- //# sourceMappingURL=usage.js.map