@thanhvn14/csvibe 0.1.1 → 0.1.3

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 (180) hide show
  1. package/.csvibe/state/approaches.json +1 -0
  2. package/README.md +142 -3
  3. package/dist/commands/brainstorm.d.ts +16 -0
  4. package/dist/commands/brainstorm.d.ts.map +1 -0
  5. package/dist/commands/brainstorm.js +186 -0
  6. package/dist/commands/brainstorm.js.map +1 -0
  7. package/dist/commands/doctor.d.ts +9 -0
  8. package/dist/commands/doctor.d.ts.map +1 -0
  9. package/dist/commands/doctor.js +72 -0
  10. package/dist/commands/doctor.js.map +1 -0
  11. package/dist/commands/help.d.ts.map +1 -1
  12. package/dist/commands/help.js +13 -7
  13. package/dist/commands/help.js.map +1 -1
  14. package/dist/commands/index.d.ts +3 -0
  15. package/dist/commands/index.d.ts.map +1 -1
  16. package/dist/commands/index.js +7 -1
  17. package/dist/commands/index.js.map +1 -1
  18. package/dist/commands/init/index.d.ts +7 -0
  19. package/dist/commands/init/index.d.ts.map +1 -0
  20. package/dist/commands/init/index.js +10 -0
  21. package/dist/commands/init/index.js.map +1 -0
  22. package/dist/commands/init/init-command.d.ts +10 -0
  23. package/dist/commands/init/init-command.d.ts.map +1 -0
  24. package/dist/commands/init/init-command.js +75 -0
  25. package/dist/commands/init/init-command.js.map +1 -0
  26. package/dist/commands/init/phases/config-handler.d.ts +10 -0
  27. package/dist/commands/init/phases/config-handler.d.ts.map +1 -0
  28. package/dist/commands/init/phases/config-handler.js +21 -0
  29. package/dist/commands/init/phases/config-handler.js.map +1 -0
  30. package/dist/commands/init/phases/detection-handler.d.ts +10 -0
  31. package/dist/commands/init/phases/detection-handler.d.ts.map +1 -0
  32. package/dist/commands/init/phases/detection-handler.js +80 -0
  33. package/dist/commands/init/phases/detection-handler.js.map +1 -0
  34. package/dist/commands/init/phases/download-handler.d.ts +9 -0
  35. package/dist/commands/init/phases/download-handler.d.ts.map +1 -0
  36. package/dist/commands/init/phases/download-handler.js +16 -0
  37. package/dist/commands/init/phases/download-handler.js.map +1 -0
  38. package/dist/commands/init/phases/prompt-handler.d.ts +10 -0
  39. package/dist/commands/init/phases/prompt-handler.d.ts.map +1 -0
  40. package/dist/commands/init/phases/prompt-handler.js +24 -0
  41. package/dist/commands/init/phases/prompt-handler.js.map +1 -0
  42. package/dist/commands/init/phases/scaffold-handler.d.ts +9 -0
  43. package/dist/commands/init/phases/scaffold-handler.d.ts.map +1 -0
  44. package/dist/commands/init/phases/scaffold-handler.js +18 -0
  45. package/dist/commands/init/phases/scaffold-handler.js.map +1 -0
  46. package/dist/commands/init/phases/validation-handler.d.ts +14 -0
  47. package/dist/commands/init/phases/validation-handler.d.ts.map +1 -0
  48. package/dist/commands/init/phases/validation-handler.js +50 -0
  49. package/dist/commands/init/phases/validation-handler.js.map +1 -0
  50. package/dist/commands/init/phases/vscode-handler.d.ts +9 -0
  51. package/dist/commands/init/phases/vscode-handler.d.ts.map +1 -0
  52. package/dist/commands/init/phases/vscode-handler.js +16 -0
  53. package/dist/commands/init/phases/vscode-handler.js.map +1 -0
  54. package/dist/commands/init/types.d.ts +28 -0
  55. package/dist/commands/init/types.d.ts.map +1 -0
  56. package/dist/commands/init/types.js +6 -0
  57. package/dist/commands/init/types.js.map +1 -0
  58. package/dist/commands/scout.d.ts +30 -0
  59. package/dist/commands/scout.d.ts.map +1 -0
  60. package/dist/commands/scout.js +116 -0
  61. package/dist/commands/scout.js.map +1 -0
  62. package/dist/config/constants.d.ts +2 -1
  63. package/dist/config/constants.d.ts.map +1 -1
  64. package/dist/config/constants.js +2 -1
  65. package/dist/config/constants.js.map +1 -1
  66. package/dist/domains/config/generator.d.ts +17 -0
  67. package/dist/domains/config/generator.d.ts.map +1 -0
  68. package/dist/domains/config/generator.js +67 -0
  69. package/dist/domains/config/generator.js.map +1 -0
  70. package/dist/domains/config/index.d.ts +8 -0
  71. package/dist/domains/config/index.d.ts.map +1 -0
  72. package/dist/domains/config/index.js +15 -0
  73. package/dist/domains/config/index.js.map +1 -0
  74. package/dist/domains/config/types.d.ts +39 -0
  75. package/dist/domains/config/types.d.ts.map +1 -0
  76. package/dist/domains/config/types.js +6 -0
  77. package/dist/domains/config/types.js.map +1 -0
  78. package/dist/domains/config/validator.d.ts +17 -0
  79. package/dist/domains/config/validator.d.ts.map +1 -0
  80. package/dist/domains/config/validator.js +54 -0
  81. package/dist/domains/config/validator.js.map +1 -0
  82. package/dist/domains/github/auth-api.d.ts +19 -0
  83. package/dist/domains/github/auth-api.d.ts.map +1 -0
  84. package/dist/domains/github/auth-api.js +196 -0
  85. package/dist/domains/github/auth-api.js.map +1 -0
  86. package/dist/domains/github/github-client.d.ts +323 -0
  87. package/dist/domains/github/github-client.d.ts.map +1 -0
  88. package/dist/domains/github/github-client.js +192 -0
  89. package/dist/domains/github/github-client.js.map +1 -0
  90. package/dist/domains/github/index.d.ts +9 -0
  91. package/dist/domains/github/index.d.ts.map +1 -0
  92. package/dist/domains/github/index.js +23 -0
  93. package/dist/domains/github/index.js.map +1 -0
  94. package/dist/domains/github/keychain.d.ts +19 -0
  95. package/dist/domains/github/keychain.d.ts.map +1 -0
  96. package/dist/domains/github/keychain.js +132 -0
  97. package/dist/domains/github/keychain.js.map +1 -0
  98. package/dist/domains/github/types.d.ts +40 -0
  99. package/dist/domains/github/types.d.ts.map +1 -0
  100. package/dist/domains/github/types.js +6 -0
  101. package/dist/domains/github/types.js.map +1 -0
  102. package/dist/domains/health-checks/auto-healer.d.ts +14 -0
  103. package/dist/domains/health-checks/auto-healer.d.ts.map +1 -0
  104. package/dist/domains/health-checks/auto-healer.js +160 -0
  105. package/dist/domains/health-checks/auto-healer.js.map +1 -0
  106. package/dist/domains/health-checks/check-runner.d.ts +10 -0
  107. package/dist/domains/health-checks/check-runner.d.ts.map +1 -0
  108. package/dist/domains/health-checks/check-runner.js +31 -0
  109. package/dist/domains/health-checks/check-runner.js.map +1 -0
  110. package/dist/domains/health-checks/checkers/auth-checker.d.ts +10 -0
  111. package/dist/domains/health-checks/checkers/auth-checker.d.ts.map +1 -0
  112. package/dist/domains/health-checks/checkers/auth-checker.js +90 -0
  113. package/dist/domains/health-checks/checkers/auth-checker.js.map +1 -0
  114. package/dist/domains/health-checks/checkers/deps-checker.d.ts +10 -0
  115. package/dist/domains/health-checks/checkers/deps-checker.d.ts.map +1 -0
  116. package/dist/domains/health-checks/checkers/deps-checker.js +150 -0
  117. package/dist/domains/health-checks/checkers/deps-checker.js.map +1 -0
  118. package/dist/domains/health-checks/checkers/project-checker.d.ts +10 -0
  119. package/dist/domains/health-checks/checkers/project-checker.d.ts.map +1 -0
  120. package/dist/domains/health-checks/checkers/project-checker.js +124 -0
  121. package/dist/domains/health-checks/checkers/project-checker.js.map +1 -0
  122. package/dist/domains/health-checks/checkers/system-checker.d.ts +10 -0
  123. package/dist/domains/health-checks/checkers/system-checker.d.ts.map +1 -0
  124. package/dist/domains/health-checks/checkers/system-checker.js +135 -0
  125. package/dist/domains/health-checks/checkers/system-checker.js.map +1 -0
  126. package/dist/domains/health-checks/index.d.ts +9 -0
  127. package/dist/domains/health-checks/index.d.ts.map +1 -0
  128. package/dist/domains/health-checks/index.js +21 -0
  129. package/dist/domains/health-checks/index.js.map +1 -0
  130. package/dist/domains/health-checks/report-generator.d.ts +18 -0
  131. package/dist/domains/health-checks/report-generator.d.ts.map +1 -0
  132. package/dist/domains/health-checks/report-generator.js +117 -0
  133. package/dist/domains/health-checks/report-generator.js.map +1 -0
  134. package/dist/domains/health-checks/types.d.ts +35 -0
  135. package/dist/domains/health-checks/types.d.ts.map +1 -0
  136. package/dist/domains/health-checks/types.js +6 -0
  137. package/dist/domains/health-checks/types.js.map +1 -0
  138. package/dist/index.js +33 -0
  139. package/dist/index.js.map +1 -1
  140. package/dist/utils/approaches-validator.d.ts +40 -0
  141. package/dist/utils/approaches-validator.d.ts.map +1 -0
  142. package/dist/utils/approaches-validator.js +101 -0
  143. package/dist/utils/approaches-validator.js.map +1 -0
  144. package/dist/utils/dependency-analyzer.d.ts +31 -0
  145. package/dist/utils/dependency-analyzer.d.ts.map +1 -0
  146. package/dist/utils/dependency-analyzer.js +294 -0
  147. package/dist/utils/dependency-analyzer.js.map +1 -0
  148. package/dist/utils/directory-analyzer.d.ts +23 -0
  149. package/dist/utils/directory-analyzer.d.ts.map +1 -0
  150. package/dist/utils/directory-analyzer.js +81 -0
  151. package/dist/utils/directory-analyzer.js.map +1 -0
  152. package/dist/utils/downloader.d.ts +3 -3
  153. package/dist/utils/downloader.d.ts.map +1 -1
  154. package/dist/utils/downloader.js +35 -65
  155. package/dist/utils/downloader.js.map +1 -1
  156. package/dist/utils/errors.d.ts +64 -10
  157. package/dist/utils/errors.d.ts.map +1 -1
  158. package/dist/utils/errors.js +136 -22
  159. package/dist/utils/errors.js.map +1 -1
  160. package/dist/utils/gh-cli.d.ts +4 -2
  161. package/dist/utils/gh-cli.d.ts.map +1 -1
  162. package/dist/utils/gh-cli.js +33 -38
  163. package/dist/utils/gh-cli.js.map +1 -1
  164. package/dist/utils/progress.d.ts +37 -0
  165. package/dist/utils/progress.d.ts.map +1 -0
  166. package/dist/utils/progress.js +121 -0
  167. package/dist/utils/progress.js.map +1 -0
  168. package/dist/utils/prompts.d.ts +5 -1
  169. package/dist/utils/prompts.d.ts.map +1 -1
  170. package/dist/utils/prompts.js +124 -64
  171. package/dist/utils/prompts.js.map +1 -1
  172. package/dist/utils/scaffolder.d.ts.map +1 -1
  173. package/dist/utils/scaffolder.js +1 -3
  174. package/dist/utils/scaffolder.js.map +1 -1
  175. package/package.json +7 -3
  176. package/test-jira-prompt.js +32 -0
  177. package/dist/commands/init.d.ts +0 -6
  178. package/dist/commands/init.d.ts.map +0 -1
  179. package/dist/commands/init.js +0 -147
  180. package/dist/commands/init.js.map +0 -1
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Debug test for csvibe init - Jira prompt
5
+ */
6
+
7
+ console.log('Testing Jira prompt flow...\n');
8
+
9
+ // Load the actual compiled functions
10
+ const promptHandler = require('./dist/commands/init/phases/prompt-handler.js');
11
+ const prompts = require('./dist/utils/prompts.js');
12
+
13
+ console.log('āœ“ Loaded prompt-handler');
14
+ console.log('āœ“ Loaded prompts utils');
15
+ console.log('\nFunctions available:');
16
+ console.log(' - confirmJiraSetup:', typeof prompts.confirmJiraSetup);
17
+ console.log(' - promptConfiguration:', typeof promptHandler.promptConfiguration);
18
+
19
+ console.log('\n--- Starting promptConfiguration() ---\n');
20
+
21
+ // Call the actual function
22
+ promptHandler.promptConfiguration()
23
+ .then(result => {
24
+ console.log('\n--- Result ---');
25
+ console.log('Returned:', result);
26
+ process.exit(0);
27
+ })
28
+ .catch(err => {
29
+ console.error('\n--- Error ---');
30
+ console.error(err);
31
+ process.exit(1);
32
+ });
@@ -1,6 +0,0 @@
1
- /**
2
- * Init command implementation
3
- * Bootstraps CSVibe project with agents, config, and project scaffolding
4
- */
5
- export declare function initCommand(): Promise<void>;
6
- //# sourceMappingURL=init.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAsBH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAwFjD"}
@@ -1,147 +0,0 @@
1
- "use strict";
2
- /**
3
- * Init command implementation
4
- * Bootstraps CSVibe project with agents, config, and project scaffolding
5
- */
6
- var __importDefault = (this && this.__importDefault) || function (mod) {
7
- return (mod && mod.__esModule) ? mod : { "default": mod };
8
- };
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.initCommand = initCommand;
11
- const chalk_1 = __importDefault(require("chalk"));
12
- const path_1 = __importDefault(require("path"));
13
- const fs_extra_1 = __importDefault(require("fs-extra"));
14
- const constants_1 = require("../config/constants");
15
- const logger_1 = require("../utils/logger");
16
- const gh_cli_1 = require("../utils/gh-cli");
17
- const project_detector_1 = require("../utils/project-detector");
18
- const prompts_1 = require("../utils/prompts");
19
- const config_generator_1 = require("../utils/config-generator");
20
- const scaffolder_1 = require("../utils/scaffolder");
21
- const downloader_1 = require("../utils/downloader");
22
- const vscode_validator_1 = require("../utils/vscode-validator");
23
- async function initCommand() {
24
- console.log(chalk_1.default.bold.cyan('\nšŸš€ Initializing CSVibe Project\n'));
25
- const projectRoot = process.cwd();
26
- try {
27
- // Step 1: Validate gh CLI and repo access
28
- const spinner1 = logger_1.logger.spinner('Validating GitHub CLI and repository access');
29
- try {
30
- await (0, gh_cli_1.validateGhCli)(constants_1.CONSTANTS.REPO_FULL);
31
- spinner1.succeed('GitHub CLI validated');
32
- }
33
- catch (error) {
34
- spinner1.fail('GitHub CLI validation failed');
35
- throw error;
36
- }
37
- // Step 2: Check if already initialized
38
- if (await (0, config_generator_1.isInitialized)(projectRoot)) {
39
- logger_1.logger.warning('CSVibe is already initialized in this directory');
40
- const shouldOverwrite = await (0, prompts_1.confirmOverwrite)();
41
- if (!shouldOverwrite) {
42
- console.log(chalk_1.default.gray('\nInitialization cancelled.\n'));
43
- return;
44
- }
45
- console.log(); // spacing
46
- }
47
- // Step 3: Detect project type
48
- const spinner2 = logger_1.logger.spinner('Detecting project type');
49
- const projectType = await (0, project_detector_1.detectProjectType)(projectRoot);
50
- spinner2.succeed(`Project type detected: ${chalk_1.default.cyan(projectType)}`);
51
- // Step 4: Get project metadata
52
- const projectName = path_1.default.basename(projectRoot);
53
- const projectVersion = await getProjectVersion(projectRoot);
54
- // Step 5: Prompt for Jira credentials
55
- (0, prompts_1.showApiTokenInstructions)();
56
- const jiraCredentials = await (0, prompts_1.promptJiraCredentials)();
57
- console.log(); // spacing
58
- // Step 6: Scaffold directory structure
59
- const spinner3 = logger_1.logger.spinner('Creating directory structure');
60
- await (0, scaffolder_1.scaffold)(projectRoot);
61
- spinner3.succeed('Directory structure created');
62
- // Step 7: Download assets from csvibe-engine
63
- await (0, downloader_1.downloadGithubAssets)(constants_1.CONSTANTS.REPO_FULL, 'main', projectRoot);
64
- // Step 8: Generate config.yml
65
- const spinner4 = logger_1.logger.spinner('Generating configuration');
66
- const configTemplate = await (0, downloader_1.downloadConfigTemplate)(constants_1.CONSTANTS.REPO_FULL);
67
- await (0, config_generator_1.generateConfig)(configTemplate, {
68
- projectName,
69
- projectType,
70
- projectVersion,
71
- jiraCredentials,
72
- targetDir: projectRoot
73
- });
74
- spinner4.succeed('Configuration generated');
75
- // Step 9: Validate VSCode and Copilot (non-blocking)
76
- console.log(); // spacing
77
- await (0, vscode_validator_1.validateVSCodeSetup)();
78
- // Step 10: Display success message
79
- console.log(chalk_1.default.bold.green('\nāœ“ CSVibe initialized successfully!\n'));
80
- console.log(chalk_1.default.bold('Next steps:'));
81
- console.log(' 1. Review ' + chalk_1.default.cyan('.csvibe/config.yml') + ' and adjust as needed');
82
- console.log(' 2. Review ' + chalk_1.default.cyan('.github/agents/') + ' templates');
83
- console.log(' 3. Start vibecoding with ' + chalk_1.default.cyan('csvibe run'));
84
- console.log();
85
- console.log(chalk_1.default.gray('Configuration saved to: ') + chalk_1.default.cyan(path_1.default.join(projectRoot, constants_1.CONSTANTS.CONFIG_FILE)));
86
- console.log();
87
- }
88
- catch (error) {
89
- if (error instanceof Error) {
90
- logger_1.logger.error(error.message);
91
- }
92
- else {
93
- logger_1.logger.error('An unexpected error occurred during initialization');
94
- }
95
- console.log('\n' + chalk_1.default.gray('For help, visit: ') + chalk_1.default.cyan(constants_1.CONSTANTS.ISSUES_URL) + '\n');
96
- process.exit(1);
97
- }
98
- }
99
- /**
100
- * Get project version from package.json or other manifest files
101
- */
102
- async function getProjectVersion(projectRoot) {
103
- // Try package.json first (Node.js projects)
104
- const packageJsonPath = path_1.default.join(projectRoot, 'package.json');
105
- if (await fs_extra_1.default.pathExists(packageJsonPath)) {
106
- try {
107
- const pkg = await fs_extra_1.default.readJson(packageJsonPath);
108
- if (pkg.version) {
109
- return pkg.version;
110
- }
111
- }
112
- catch {
113
- // Ignore parse errors
114
- }
115
- }
116
- // Try pyproject.toml (Python projects)
117
- const pyprojectPath = path_1.default.join(projectRoot, 'pyproject.toml');
118
- if (await fs_extra_1.default.pathExists(pyprojectPath)) {
119
- try {
120
- const content = await fs_extra_1.default.readFile(pyprojectPath, 'utf-8');
121
- const versionMatch = content.match(/version\s*=\s*["']([^"']+)["']/);
122
- if (versionMatch && versionMatch[1]) {
123
- return versionMatch[1];
124
- }
125
- }
126
- catch {
127
- // Ignore parse errors
128
- }
129
- }
130
- // Try Cargo.toml (Rust projects)
131
- const cargoPath = path_1.default.join(projectRoot, 'Cargo.toml');
132
- if (await fs_extra_1.default.pathExists(cargoPath)) {
133
- try {
134
- const content = await fs_extra_1.default.readFile(cargoPath, 'utf-8');
135
- const versionMatch = content.match(/version\s*=\s*["']([^"']+)["']/);
136
- if (versionMatch && versionMatch[1]) {
137
- return versionMatch[1];
138
- }
139
- }
140
- catch {
141
- // Ignore parse errors
142
- }
143
- }
144
- // Default fallback
145
- return '0.1.0';
146
- }
147
- //# sourceMappingURL=init.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}