@closedloop-ai/cli 0.2.3 → 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 (57) hide show
  1. package/README.md +106 -258
  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 -508
  8. package/packages/cli/dist/__tests__/cli.test.js +0 -37
  9. package/packages/cli/dist/__tests__/cli.test.js.map +0 -1
  10. package/packages/cli/dist/__tests__/config.test.js +0 -33
  11. package/packages/cli/dist/__tests__/config.test.js.map +0 -1
  12. package/packages/cli/dist/__tests__/errors.test.js +0 -109
  13. package/packages/cli/dist/__tests__/errors.test.js.map +0 -1
  14. package/packages/cli/dist/__tests__/setup.js +0 -20
  15. package/packages/cli/dist/__tests__/setup.js.map +0 -1
  16. package/packages/cli/dist/__tests__/validation.test.js +0 -124
  17. package/packages/cli/dist/__tests__/validation.test.js.map +0 -1
  18. package/packages/cli/dist/api/auth.js +0 -27
  19. package/packages/cli/dist/api/auth.js.map +0 -1
  20. package/packages/cli/dist/api/feedback.js +0 -70
  21. package/packages/cli/dist/api/feedback.js.map +0 -1
  22. package/packages/cli/dist/api/input.js +0 -60
  23. package/packages/cli/dist/api/input.js.map +0 -1
  24. package/packages/cli/dist/api/team.js +0 -45
  25. package/packages/cli/dist/api/team.js.map +0 -1
  26. package/packages/cli/dist/api/usage.js +0 -49
  27. package/packages/cli/dist/api/usage.js.map +0 -1
  28. package/packages/cli/dist/cli.js +0 -163
  29. package/packages/cli/dist/cli.js.map +0 -1
  30. package/packages/cli/dist/commands/config.js +0 -186
  31. package/packages/cli/dist/commands/config.js.map +0 -1
  32. package/packages/cli/dist/commands/feedback.js +0 -234
  33. package/packages/cli/dist/commands/feedback.js.map +0 -1
  34. package/packages/cli/dist/commands/input.js +0 -370
  35. package/packages/cli/dist/commands/input.js.map +0 -1
  36. package/packages/cli/dist/commands/list.js +0 -81
  37. package/packages/cli/dist/commands/list.js.map +0 -1
  38. package/packages/cli/dist/commands/status.js +0 -93
  39. package/packages/cli/dist/commands/status.js.map +0 -1
  40. package/packages/cli/dist/commands/submit.js +0 -225
  41. package/packages/cli/dist/commands/submit.js.map +0 -1
  42. package/packages/cli/dist/commands/team.js +0 -44
  43. package/packages/cli/dist/commands/team.js.map +0 -1
  44. package/packages/cli/dist/commands/usage.js +0 -168
  45. package/packages/cli/dist/commands/usage.js.map +0 -1
  46. package/packages/cli/dist/config/constants.js +0 -37
  47. package/packages/cli/dist/config/constants.js.map +0 -1
  48. package/packages/cli/dist/config/index.js +0 -84
  49. package/packages/cli/dist/config/index.js.map +0 -1
  50. package/packages/cli/dist/types/index.js +0 -3
  51. package/packages/cli/dist/types/index.js.map +0 -1
  52. package/packages/cli/dist/utils/config.js +0 -55
  53. package/packages/cli/dist/utils/config.js.map +0 -1
  54. package/packages/cli/dist/utils/errors.js +0 -70
  55. package/packages/cli/dist/utils/errors.js.map +0 -1
  56. package/packages/cli/dist/utils/validation.js +0 -133
  57. package/packages/cli/dist/utils/validation.js.map +0 -1
package/package.json CHANGED
@@ -1,73 +1,42 @@
1
1
  {
2
2
  "name": "@closedloop-ai/cli",
3
- "version": "0.2.3",
4
- "description": "ClosedLoop AI CLI - AI-powered customer product feedback analysis tool",
5
- "bin": {
6
- "cl": "./packages/cli/dist/cli.js"
7
- },
8
- "scripts": {
9
- "build": "npm run build:cli",
10
- "build:cli": "cd packages/cli && npm run build",
11
- "test": "npm run test:cli",
12
- "test:cli": "cd packages/cli && npm test",
13
- "lint": "npm run lint:cli",
14
- "lint:cli": "cd packages/cli && npm run lint",
15
- "clean": "npm run clean:cli",
16
- "clean:cli": "cd packages/cli && npm run clean",
17
- "release": "npm run build && npm run test && npm publish",
18
- "prepare": "npm run build"
19
- },
20
- "keywords": [
21
- "cli",
22
- "command-line",
23
- "ai",
24
- "feedback",
25
- "analysis",
26
- "closedloop",
27
- "typescript",
28
- "customer-feedback",
29
- "product-insights",
30
- "ai-analysis"
31
- ],
32
- "author": "ClosedLoop AI <team@closedloop.sh>",
33
- "license": "MIT",
3
+ "version": "0.3.0",
4
+ "description": "ClosedLoop AI on the command line, for people and AI coding agents.",
5
+ "license": "UNLICENSED",
34
6
  "repository": {
35
7
  "type": "git",
36
- "url": "https://github.com/closed-loop-ai/closedloop-cli.git"
8
+ "url": "git+https://github.com/closedloop-ai-org/monorepo.git",
9
+ "directory": "closedloop-cli"
37
10
  },
38
- "bugs": {
39
- "url": "https://github.com/closed-loop-ai/closedloop-cli/issues"
11
+ "publishConfig": {
12
+ "access": "public",
13
+ "registry": "https://registry.npmjs.org/",
14
+ "provenance": false
40
15
  },
41
- "homepage": "https://github.com/closed-loop-ai/closedloop-cli#readme",
42
- "engines": {
43
- "node": ">=16.0.0"
16
+ "type": "module",
17
+ "bin": {
18
+ "closedloop": "./dist/closedloop.js",
19
+ "cl": "./dist/closedloop.js"
44
20
  },
45
- "workspaces": [
46
- "packages/cli"
21
+ "files": [
22
+ "dist/closedloop.js",
23
+ "dist/THIRD_PARTY_NOTICES.txt"
47
24
  ],
48
- "dependencies": {
49
- "commander": "^11.0.0",
50
- "axios": "^1.6.0",
51
- "chalk": "^4.1.2",
52
- "ora": "^5.4.1",
53
- "inquirer": "^8.2.6",
54
- "table": "^6.8.1"
25
+ "engines": {
26
+ "node": ">=22.12.0"
55
27
  },
56
- "devDependencies": {
57
- "@types/node": "^20.0.0",
58
- "typescript": "^5.0.0",
59
- "jest": "^29.0.0",
60
- "@types/jest": "^29.0.0",
61
- "eslint": "^8.0.0",
62
- "@typescript-eslint/eslint-plugin": "^6.0.0",
63
- "@typescript-eslint/parser": "^6.0.0",
64
- "prettier": "^3.0.0"
28
+ "scripts": {
29
+ "compile": "tsc -p .",
30
+ "typecheck": "tsc -p . --noEmit",
31
+ "build": "node build.mjs",
32
+ "prepack": "npm run build",
33
+ "package:verify": "python3 -B scripts/package_release.py build",
34
+ "test": "npm run compile && npm run build && node --test \"out/test/**/*.test.js\""
65
35
  },
66
- "files": [
67
- "packages/cli/dist/**/*",
68
- "README.md",
69
- "LICENSE",
70
- "CONTRIBUTING.md",
71
- "docs/**/*"
72
- ]
36
+ "devDependencies": {
37
+ "@types/node": "22.18.13",
38
+ "commander": "15.0.0",
39
+ "esbuild": "0.28.2",
40
+ "typescript": "5.9.3"
41
+ }
73
42
  }
package/CONTRIBUTING.md DELETED
@@ -1,437 +0,0 @@
1
- # Contributing to ClosedLoop AI CLI
2
-
3
- Thank you for your interest in contributing to the ClosedLoop AI CLI! We welcome contributions from the community and are grateful for your help in making this project better.
4
-
5
- ## 🚀 Getting Started
6
-
7
- ### Prerequisites
8
-
9
- Before you begin, make sure you have the following installed:
10
-
11
- - **Node.js** 16.0.0 or higher
12
- - **npm** 8.0.0 or higher (or yarn/pnpm)
13
- - **Git** 2.0.0 or higher
14
- - **TypeScript** 5.0.0 or higher
15
-
16
- ### Development Setup
17
-
18
- 1. **Fork the repository**
19
- ```bash
20
- # Click the "Fork" button on GitHub, then clone your fork
21
- git clone https://github.com/YOUR_USERNAME/closedloop-cli.git
22
- cd closedloop-cli
23
- ```
24
-
25
- 2. **Add upstream remote**
26
- ```bash
27
- git remote add upstream https://github.com/closed-loop-ai/closedloop-cli.git
28
- ```
29
-
30
- 3. **Install dependencies**
31
- ```bash
32
- npm install
33
- ```
34
-
35
- 4. **Build the project**
36
- ```bash
37
- npm run build
38
- ```
39
-
40
- 5. **Run tests**
41
- ```bash
42
- npm test
43
- ```
44
-
45
- 6. **Run linting**
46
- ```bash
47
- npm run lint
48
- ```
49
-
50
- ## 🏗️ Project Structure
51
-
52
- ```
53
- closedloop-cli/
54
- ├── packages/
55
- │ ├── core/ # TypeScript client library
56
- │ │ ├── src/ # Source code
57
- │ │ ├── dist/ # Compiled output
58
- │ │ └── tests/ # Unit tests
59
- │ ├── cli/ # CLI tool
60
- │ │ ├── src/ # Source code
61
- │ │ ├── dist/ # Compiled output
62
- │ │ └── __tests__/ # Unit tests
63
- │ └── examples/ # Usage examples
64
- ├── docs/ # Documentation
65
- ├── tests/ # Integration tests
66
- └── .github/ # GitHub workflows and templates
67
- ```
68
-
69
- ## 🔄 Development Workflow
70
-
71
- ### 1. Create a Feature Branch
72
-
73
- ```bash
74
- # Make sure you're on main and up to date
75
- git checkout main
76
- git pull upstream main
77
-
78
- # Create a new branch for your feature
79
- git checkout -b feature/your-feature-name
80
-
81
- # Or for bug fixes
82
- git checkout -b fix/your-bug-description
83
- ```
84
-
85
- ### 2. Make Your Changes
86
-
87
- - Write clean, readable code
88
- - Follow the existing code style
89
- - Add tests for new functionality
90
- - Update documentation as needed
91
- - Ensure all tests pass
92
-
93
- ### 3. Test Your Changes
94
-
95
- ```bash
96
- # Run all tests
97
- npm test
98
-
99
- # Run tests with coverage
100
- npm run test:coverage
101
-
102
- # Run linting
103
- npm run lint
104
-
105
- # Build the project
106
- npm run build
107
- ```
108
-
109
- ### 4. Commit Your Changes
110
-
111
- We use conventional commits. Please format your commit messages as follows:
112
-
113
- ```
114
- type(scope): description
115
-
116
- [optional body]
117
-
118
- [optional footer]
119
- ```
120
-
121
- **Types:**
122
- - `feat`: New feature
123
- - `fix`: Bug fix
124
- - `docs`: Documentation changes
125
- - `style`: Code style changes (formatting, etc.)
126
- - `refactor`: Code refactoring
127
- - `test`: Adding or updating tests
128
- - `chore`: Maintenance tasks
129
-
130
- **Examples:**
131
- ```bash
132
- git commit -m "feat(cli): add --wait flag for input processing"
133
- git commit -m "fix(api): handle 401 errors gracefully"
134
- git commit -m "docs: update installation instructions"
135
- ```
136
-
137
- ### 5. Push and Create Pull Request
138
-
139
- ```bash
140
- # Push your branch
141
- git push origin feature/your-feature-name
142
-
143
- # Create a pull request on GitHub
144
- ```
145
-
146
- ## 📝 Code Standards
147
-
148
- ### TypeScript Guidelines
149
-
150
- - Use TypeScript for all new code
151
- - Provide proper type definitions
152
- - Use interfaces for object shapes
153
- - Prefer `const` over `let` when possible
154
- - Use meaningful variable and function names
155
-
156
- ### Code Style
157
-
158
- - Use 2 spaces for indentation
159
- - Use single quotes for strings
160
- - Use semicolons
161
- - Use trailing commas in objects and arrays
162
- - Use camelCase for variables and functions
163
- - Use PascalCase for classes and interfaces
164
-
165
- ### Example:
166
-
167
- ```typescript
168
- interface UserConfig {
169
- apiKey: string;
170
- baseUrl?: string;
171
- timeout?: number;
172
- }
173
-
174
- class ClosedLoopClient {
175
- private config: UserConfig;
176
-
177
- constructor(config: UserConfig) {
178
- this.config = config;
179
- }
180
-
181
- async submitFeedback(data: FeedbackData): Promise<SubmissionResult> {
182
- // Implementation
183
- }
184
- }
185
- ```
186
-
187
- ## 🧪 Testing Guidelines
188
-
189
- ### Unit Tests
190
-
191
- - Write tests for all new functionality
192
- - Aim for high test coverage (>90%)
193
- - Use descriptive test names
194
- - Test both success and error cases
195
- - Mock external dependencies
196
-
197
- ### Test Structure
198
-
199
- ```typescript
200
- describe('FeedbackService', () => {
201
- describe('submitFeedback', () => {
202
- it('should submit feedback successfully', async () => {
203
- // Arrange
204
- const mockData = { content: 'Test feedback' };
205
- const expectedResult = { id: '123', status: 'submitted' };
206
-
207
- // Act
208
- const result = await feedbackService.submitFeedback(mockData);
209
-
210
- // Assert
211
- expect(result).toEqual(expectedResult);
212
- });
213
-
214
- it('should handle API errors gracefully', async () => {
215
- // Test error handling
216
- });
217
- });
218
- });
219
- ```
220
-
221
- ### Integration Tests
222
-
223
- - Test the CLI commands end-to-end
224
- - Test API integration
225
- - Test error scenarios
226
- - Test configuration handling
227
-
228
- ## 📚 Documentation Guidelines
229
-
230
- ### Code Documentation
231
-
232
- - Add JSDoc comments for public APIs
233
- - Include parameter descriptions
234
- - Include return value descriptions
235
- - Include usage examples
236
-
237
- ```typescript
238
- /**
239
- * Submit customer feedback for AI analysis
240
- * @param data - The feedback data to submit
241
- * @param options - Optional configuration
242
- * @returns Promise resolving to submission result
243
- * @example
244
- * ```typescript
245
- * const result = await client.feedback.create({
246
- * content: "The dashboard is confusing",
247
- * title: "UX Issue"
248
- * });
249
- * ```
250
- */
251
- async create(data: FeedbackData, options?: CreateOptions): Promise<SubmissionResult> {
252
- // Implementation
253
- }
254
- ```
255
-
256
- ### README Updates
257
-
258
- - Update README.md for new features
259
- - Add examples for new functionality
260
- - Update installation instructions if needed
261
- - Update CLI command documentation
262
-
263
- ## 🐛 Bug Reports
264
-
265
- When reporting bugs, please include:
266
-
267
- 1. **Clear description** of the issue
268
- 2. **Steps to reproduce** the problem
269
- 3. **Expected behavior** vs actual behavior
270
- 4. **Environment details** (OS, Node.js version, etc.)
271
- 5. **Error messages** or logs
272
- 6. **Screenshots** if applicable
273
-
274
- ### Bug Report Template
275
-
276
- ```markdown
277
- ## Bug Description
278
- Brief description of the bug
279
-
280
- ## Steps to Reproduce
281
- 1. Run command `cl input "test"`
282
- 2. See error
283
-
284
- ## Expected Behavior
285
- What should happen
286
-
287
- ## Actual Behavior
288
- What actually happens
289
-
290
- ## Environment
291
- - OS: macOS 13.0
292
- - Node.js: 18.17.0
293
- - CLI Version: 0.2.0
294
-
295
- ## Additional Context
296
- Any other relevant information
297
- ```
298
-
299
- ## ✨ Feature Requests
300
-
301
- When requesting features, please include:
302
-
303
- 1. **Clear description** of the feature
304
- 2. **Use case** and motivation
305
- 3. **Proposed implementation** (if you have ideas)
306
- 4. **Alternatives considered**
307
- 5. **Additional context**
308
-
309
- ## 🔍 Pull Request Guidelines
310
-
311
- ### Before Submitting
312
-
313
- - [ ] Code follows the project's style guidelines
314
- - [ ] All tests pass
315
- - [ ] New tests added for new functionality
316
- - [ ] Documentation updated
317
- - [ ] Commit messages follow conventional format
318
- - [ ] Branch is up to date with main
319
-
320
- ### PR Description
321
-
322
- Include a clear description of your changes:
323
-
324
- ```markdown
325
- ## Description
326
- Brief description of what this PR does
327
-
328
- ## Changes
329
- - Added new CLI command `cl status`
330
- - Updated error handling for API calls
331
- - Added tests for new functionality
332
-
333
- ## Testing
334
- - [ ] Unit tests pass
335
- - [ ] Integration tests pass
336
- - [ ] Manual testing completed
337
-
338
- ## Breaking Changes
339
- - None (or list any breaking changes)
340
-
341
- ## Related Issues
342
- Fixes #123
343
- ```
344
-
345
- ### Review Process
346
-
347
- 1. **Automated checks** must pass
348
- 2. **Code review** by maintainers
349
- 3. **Testing** on multiple environments
350
- 4. **Documentation** review
351
- 5. **Approval** and merge
352
-
353
- ## 🏷️ Release Process
354
-
355
- We follow semantic versioning:
356
-
357
- - **MAJOR** (1.0.0): Breaking changes
358
- - **MINOR** (0.1.0): New features (backward compatible)
359
- - **PATCH** (0.0.1): Bug fixes (backward compatible)
360
-
361
- ### Release Checklist
362
-
363
- - [ ] All tests pass
364
- - [ ] Documentation updated
365
- - [ ] CHANGELOG.md updated
366
- - [ ] Version bumped in package.json
367
- - [ ] Release notes prepared
368
- - [ ] NPM package published
369
-
370
- ## 🤝 Community Guidelines
371
-
372
- ### Code of Conduct
373
-
374
- - Be respectful and inclusive
375
- - Welcome newcomers and help them learn
376
- - Focus on constructive feedback
377
- - Respect different opinions and approaches
378
- - Help maintain a positive environment
379
-
380
- ### Getting Help
381
-
382
- - **GitHub Issues**: For bugs and feature requests
383
- - **GitHub Discussions**: For questions and general discussion
384
- - **Email**: support@closedloop.sh for private matters
385
-
386
- ## 📋 Development Commands
387
-
388
- ```bash
389
- # Install dependencies
390
- npm install
391
-
392
- # Build all packages
393
- npm run build
394
-
395
- # Run all tests
396
- npm test
397
-
398
- # Run tests with coverage
399
- npm run test:coverage
400
-
401
- # Run linting
402
- npm run lint
403
-
404
- # Fix linting issues
405
- npm run lint:fix
406
-
407
- # Clean build artifacts
408
- npm run clean
409
-
410
- # Build specific package
411
- npm run build:core
412
- npm run build:cli
413
-
414
- # Test specific package
415
- npm run test:core
416
- npm run test:cli
417
- ```
418
-
419
- ## 🎯 Areas for Contribution
420
-
421
- We especially welcome contributions in these areas:
422
-
423
- - **New CLI commands** and features
424
- - **Improved error handling** and user experience
425
- - **Additional examples** and documentation
426
- - **Performance optimizations**
427
- - **Test coverage improvements**
428
- - **Cross-platform compatibility**
429
- - **Integration examples** for popular frameworks
430
-
431
- ## 📞 Contact
432
-
433
- - **Maintainers**: @closedloop-team
434
- - **Email**: team@closedloop.sh
435
- - **GitHub**: [closed-loop-ai/closedloop-cli](https://github.com/closed-loop-ai/closedloop-cli)
436
-
437
- Thank you for contributing to the ClosedLoop AI CLI! 🎉
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2025 ClosedLoop Labs LLC
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.