@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
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  /**
3
3
  * GitHub CLI (gh) validation and operations
4
+ * Now uses multi-tier authentication and @octokit/rest
4
5
  */
5
6
  var __importDefault = (this && this.__importDefault) || function (mod) {
6
7
  return (mod && mod.__esModule) ? mod : { "default": mod };
@@ -17,6 +18,7 @@ const chalk_1 = __importDefault(require("chalk"));
17
18
  const constants_1 = require("../config/constants");
18
19
  const errors_1 = require("./errors");
19
20
  const logger_1 = require("./logger");
21
+ const github_1 = require("../domains/github");
20
22
  /**
21
23
  * Check if gh CLI is installed
22
24
  */
@@ -76,56 +78,49 @@ async function checkRepoAccess(repo) {
76
78
  }
77
79
  }
78
80
  /**
79
- * Validate all gh CLI prerequisites
81
+ * Validate GitHub authentication and repository access
82
+ * Uses multi-tier authentication (gh CLI → env → config → keychain → prompt)
80
83
  * @param repo - Repository to check access (default: csvibe-engine)
81
- * @throws {GhCliError} If validation fails
84
+ * @throws {GitHubAuthError} If validation fails
82
85
  */
83
86
  async function validateGhCli(repo = constants_1.CONSTANTS.REPO_FULL) {
84
- // Check gh CLI installed
85
- if (!(await isGhInstalled())) {
86
- throw new errors_1.GhCliError(chalk_1.default.red('āœ— Error: gh CLI not found\n\n') +
87
- ' CSVibe requires GitHub CLI (gh) to download vibecoding assets.\n\n' +
88
- ' Install gh CLI:\n' +
89
- chalk_1.default.cyan(' • macOS: ') + 'brew install gh\n' +
90
- chalk_1.default.cyan(' • Windows: ') + 'winget install GitHub.cli\n' +
91
- chalk_1.default.cyan(' • Linux: ') + constants_1.CONSTANTS.GH_CLI_INSTALL + '\n\n' +
92
- ' After installing, authenticate:\n' +
93
- chalk_1.default.cyan(' gh auth login'), 'GH_NOT_INSTALLED');
94
- }
95
- // Check authenticated
96
- if (!(await isGhAuthenticated())) {
97
- throw new errors_1.GhCliError(chalk_1.default.red('āœ— Error: gh CLI not authenticated\n\n') +
98
- ' Please authenticate GitHub CLI:\n' +
99
- chalk_1.default.cyan(' gh auth login\n\n') +
100
- ' Then try again:\n' +
101
- chalk_1.default.cyan(' csvibe init'), 'GH_NOT_AUTHENTICATED');
102
- }
103
- // Check repo access
104
- const spinner = logger_1.logger.spinner(`Checking access to ${repo}...`);
87
+ const spinner = logger_1.logger.spinner('Authenticating with GitHub...');
105
88
  try {
106
- const hasAccess = await checkRepoAccess(repo);
107
- if (!hasAccess) {
108
- spinner.fail();
109
- throw new errors_1.GhCliError(chalk_1.default.red(`āœ— Error: Cannot access private repository '${repo}'\n\n`) +
110
- ' Possible causes:\n' +
111
- ' 1. Repository doesn\'t exist\n' +
112
- ' 2. Your GitHub account lacks access\n' +
113
- ' 3. gh CLI authentication expired\n\n' +
114
- ' Contact repository administrator for access.', 'GH_NO_REPO_ACCESS');
89
+ // Try multi-tier authentication
90
+ const { token, method } = await (0, github_1.getGitHubToken)();
91
+ spinner.succeed(`Authenticated via ${chalk_1.default.cyan((0, github_1.getAuthMethodDescription)(method))}`);
92
+ // Check repo access using GitHub client
93
+ const repoSpinner = logger_1.logger.spinner(`Checking access to ${repo}...`);
94
+ try {
95
+ const client = await github_1.GitHubClient.create();
96
+ const [owner, repoName] = repo.split('/');
97
+ const hasAccess = await client.hasRepoAccess(owner, repoName);
98
+ if (!hasAccess) {
99
+ repoSpinner.fail();
100
+ throw new errors_1.GitHubAuthError(chalk_1.default.red(`āœ— Error: Cannot access private repository '${repo}'\n\n`) +
101
+ ' Possible causes:\n' +
102
+ ' 1. Repository doesn\'t exist\n' +
103
+ ' 2. Your GitHub account lacks access\n' +
104
+ ' 3. Token lacks required scopes (needs: repo, read:org)\n\n' +
105
+ ' Contact repository administrator for access.');
106
+ }
107
+ repoSpinner.succeed(`Access to ${repo} verified`);
108
+ }
109
+ catch (error) {
110
+ repoSpinner.fail();
111
+ throw error;
115
112
  }
116
- spinner.succeed(`Access to ${repo} verified`);
117
113
  }
118
114
  catch (error) {
119
115
  spinner.fail();
120
- // Re-throw if already a GhCliError
121
- if (error instanceof errors_1.GhCliError) {
116
+ // Re-throw if already a GitHubAuthError
117
+ if (error instanceof errors_1.GitHubAuthError) {
122
118
  throw error;
123
119
  }
124
120
  // Generic network/API errors
125
- throw new errors_1.GhCliError(chalk_1.default.red(`āœ— Error: Failed to check repository access\n\n`) +
126
- ` Repository: ${repo}\n` +
121
+ throw new errors_1.GitHubAuthError(chalk_1.default.red(`āœ— Error: Failed to authenticate with GitHub\n\n`) +
127
122
  ` Details: ${error instanceof Error ? error.message : String(error)}\n\n` +
128
- ' Check your internet connection and try again.', 'GH_API_ERROR');
123
+ ' Check your internet connection and authentication method.');
129
124
  }
130
125
  }
131
126
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"gh-cli.js","sourceRoot":"","sources":["../../src/utils/gh-cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gh-cli.js","sourceRoot":"","sources":["../../src/utils/gh-cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Progress indicators and spinners using cli-progress
3
+ */
4
+ import * as cliProgress from 'cli-progress';
5
+ export interface ProgressOptions {
6
+ label: string;
7
+ total: number;
8
+ unit?: string;
9
+ }
10
+ /**
11
+ * Create a progress bar with ETA
12
+ */
13
+ export declare function createProgressBar(options: ProgressOptions): cliProgress.SingleBar;
14
+ /**
15
+ * Create a download progress bar with file size
16
+ */
17
+ export declare function createDownloadProgress(label: string, totalBytes: number): cliProgress.SingleBar;
18
+ /**
19
+ * Update download progress with speed calculation
20
+ */
21
+ export declare function updateDownloadProgress(bar: cliProgress.SingleBar, downloaded: number, total: number, startTime: number): void;
22
+ /**
23
+ * Multi-bar progress for parallel operations
24
+ */
25
+ export declare class MultiProgress {
26
+ private multibar;
27
+ constructor();
28
+ /**
29
+ * Add a progress bar to the multi-bar
30
+ */
31
+ addBar(label: string, total: number): cliProgress.SingleBar;
32
+ /**
33
+ * Stop all progress bars
34
+ */
35
+ stop(): void;
36
+ }
37
+ //# sourceMappingURL=progress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/utils/progress.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,WAAW,MAAM,cAAc,CAAC;AAE5C,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,WAAW,CAAC,SAAS,CAiBjF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,WAAW,CAAC,SAAS,CAoB/F;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,WAAW,CAAC,SAAS,EAC1B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,GAChB,IAAI,CAUN;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAuB;;IAavC;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,SAAS;IAI3D;;OAEG;IACH,IAAI,IAAI,IAAI;CAGb"}
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ /**
3
+ * Progress indicators and spinners using cli-progress
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.MultiProgress = void 0;
43
+ exports.createProgressBar = createProgressBar;
44
+ exports.createDownloadProgress = createDownloadProgress;
45
+ exports.updateDownloadProgress = updateDownloadProgress;
46
+ const chalk_1 = __importDefault(require("chalk"));
47
+ const cliProgress = __importStar(require("cli-progress"));
48
+ /**
49
+ * Create a progress bar with ETA
50
+ */
51
+ function createProgressBar(options) {
52
+ const { label, total, unit = 'items' } = options;
53
+ const bar = new cliProgress.SingleBar({
54
+ format: `${chalk_1.default.cyan(label)} [{bar}] {percentage}% | ETA: {eta}s | {value}/{total} ${unit}`,
55
+ barCompleteChar: '\u2588',
56
+ barIncompleteChar: '\u2591',
57
+ hideCursor: true,
58
+ clearOnComplete: false,
59
+ stopOnComplete: true,
60
+ }, cliProgress.Presets.shades_classic);
61
+ bar.start(total, 0);
62
+ return bar;
63
+ }
64
+ /**
65
+ * Create a download progress bar with file size
66
+ */
67
+ function createDownloadProgress(label, totalBytes) {
68
+ const bar = new cliProgress.SingleBar({
69
+ format: `${chalk_1.default.cyan(label)} [{bar}] {percentage}% | ETA: {eta}s | {downloadedMB}/{totalMB} MB | {speedMBps} MB/s`,
70
+ barCompleteChar: '\u2588',
71
+ barIncompleteChar: '\u2591',
72
+ hideCursor: true,
73
+ clearOnComplete: false,
74
+ stopOnComplete: true,
75
+ }, cliProgress.Presets.shades_classic);
76
+ bar.start(totalBytes, 0, {
77
+ downloadedMB: '0.00',
78
+ totalMB: (totalBytes / (1024 * 1024)).toFixed(2),
79
+ speedMBps: '0.00',
80
+ });
81
+ return bar;
82
+ }
83
+ /**
84
+ * Update download progress with speed calculation
85
+ */
86
+ function updateDownloadProgress(bar, downloaded, total, startTime) {
87
+ const elapsedSeconds = (Date.now() - startTime) / 1000;
88
+ const speedBytesPerSecond = downloaded / elapsedSeconds;
89
+ const speedMBps = (speedBytesPerSecond / (1024 * 1024)).toFixed(2);
90
+ bar.update(downloaded, {
91
+ downloadedMB: (downloaded / (1024 * 1024)).toFixed(2),
92
+ totalMB: (total / (1024 * 1024)).toFixed(2),
93
+ speedMBps,
94
+ });
95
+ }
96
+ /**
97
+ * Multi-bar progress for parallel operations
98
+ */
99
+ class MultiProgress {
100
+ constructor() {
101
+ this.multibar = new cliProgress.MultiBar({
102
+ clearOnComplete: false,
103
+ hideCursor: true,
104
+ format: '{label} [{bar}] {percentage}% | ETA: {eta}s | {value}/{total}',
105
+ }, cliProgress.Presets.shades_grey);
106
+ }
107
+ /**
108
+ * Add a progress bar to the multi-bar
109
+ */
110
+ addBar(label, total) {
111
+ return this.multibar.create(total, 0, { label: chalk_1.default.cyan(label) });
112
+ }
113
+ /**
114
+ * Stop all progress bars
115
+ */
116
+ stop() {
117
+ this.multibar.stop();
118
+ }
119
+ }
120
+ exports.MultiProgress = MultiProgress;
121
+ //# sourceMappingURL=progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.js","sourceRoot":"","sources":["../../src/utils/progress.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Interactive prompt utilities
2
+ * Interactive prompt utilities using @clack/prompts
3
3
  */
4
4
  export interface JiraCredentials {
5
5
  url: string;
@@ -15,6 +15,10 @@ export declare function promptJiraCredentials(): Promise<JiraCredentials>;
15
15
  * Confirm overwrite of existing setup
16
16
  */
17
17
  export declare function confirmOverwrite(): Promise<boolean>;
18
+ /**
19
+ * Confirm Jira setup (optional configuration)
20
+ */
21
+ export declare function confirmJiraSetup(): Promise<boolean>;
18
22
  /**
19
23
  * Show API token creation instructions
20
24
  */
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/utils/prompts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,eAAe,CAAC,CA4DtE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC,CAUzD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAM/C"}
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/utils/prompts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,eAAe,CAAC,CA0EtE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC,CAYzD;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC,CAYzD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAa/C"}
@@ -1,100 +1,160 @@
1
1
  "use strict";
2
2
  /**
3
- * Interactive prompt utilities
3
+ * Interactive prompt utilities using @clack/prompts
4
4
  */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
5
38
  var __importDefault = (this && this.__importDefault) || function (mod) {
6
39
  return (mod && mod.__esModule) ? mod : { "default": mod };
7
40
  };
8
41
  Object.defineProperty(exports, "__esModule", { value: true });
9
42
  exports.promptJiraCredentials = promptJiraCredentials;
10
43
  exports.confirmOverwrite = confirmOverwrite;
44
+ exports.confirmJiraSetup = confirmJiraSetup;
11
45
  exports.showApiTokenInstructions = showApiTokenInstructions;
12
- const inquirer_1 = __importDefault(require("inquirer"));
46
+ const p = __importStar(require("@clack/prompts"));
13
47
  const chalk_1 = __importDefault(require("chalk"));
14
48
  /**
15
49
  * Prompt user for Jira credentials
16
50
  */
17
51
  async function promptJiraCredentials() {
18
- console.log(chalk_1.default.bold('\nJira Configuration'));
19
- console.log(chalk_1.default.gray('Enter your Jira credentials for vibecoding integration.\n'));
20
- const answers = await inquirer_1.default.prompt([
21
- {
22
- type: 'input',
23
- name: 'url',
24
- message: 'Jira URL:',
25
- default: 'https://company.atlassian.net',
26
- validate: (input) => {
27
- if (!input.startsWith('http')) {
28
- return 'URL must start with http:// or https://';
29
- }
30
- return true;
52
+ p.intro(chalk_1.default.bold.cyan('Jira Configuration'));
53
+ const url = await p.text({
54
+ message: 'Jira URL',
55
+ placeholder: 'https://company.atlassian.net',
56
+ validate: (value) => {
57
+ if (!value)
58
+ return 'URL is required';
59
+ if (!value.startsWith('http')) {
60
+ return 'URL must start with http:// or https://';
61
+ }
62
+ },
63
+ });
64
+ if (p.isCancel(url)) {
65
+ p.cancel('Operation cancelled');
66
+ process.exit(0);
67
+ }
68
+ const email = await p.text({
69
+ message: 'Jira Email',
70
+ placeholder: 'your.email@company.com',
71
+ validate: (value) => {
72
+ if (!value)
73
+ return 'Email is required';
74
+ if (!value.includes('@')) {
75
+ return 'Please enter a valid email address';
31
76
  }
32
77
  },
33
- {
34
- type: 'input',
35
- name: 'email',
36
- message: 'Jira Email:',
37
- validate: (input) => {
38
- if (!input.includes('@')) {
39
- return 'Please enter a valid email address';
40
- }
41
- return true;
78
+ });
79
+ if (p.isCancel(email)) {
80
+ p.cancel('Operation cancelled');
81
+ process.exit(0);
82
+ }
83
+ const apiToken = await p.password({
84
+ message: 'Jira API Token',
85
+ validate: (value) => {
86
+ if (!value)
87
+ return 'API token is required';
88
+ if (value.length < 10) {
89
+ return 'API token seems too short. Please enter a valid token.';
42
90
  }
43
91
  },
44
- {
45
- type: 'password',
46
- name: 'apiToken',
47
- message: 'Jira API Token:',
48
- mask: '*',
49
- validate: (input) => {
50
- if (input.length < 10) {
51
- return 'API token seems too short. Please enter a valid token.';
52
- }
53
- return true;
92
+ });
93
+ if (p.isCancel(apiToken)) {
94
+ p.cancel('Operation cancelled');
95
+ process.exit(0);
96
+ }
97
+ const projectKey = await p.text({
98
+ message: 'Jira Project Key',
99
+ placeholder: 'PROJ',
100
+ validate: (value) => {
101
+ if (!value)
102
+ return 'Project key is required';
103
+ if (!/^[A-Z]+$/i.test(value)) {
104
+ return 'Project key must be letters only (e.g., PROJ, QS)';
54
105
  }
55
106
  },
56
- {
57
- type: 'input',
58
- name: 'projectKey',
59
- message: 'Jira Project Key (e.g., PROJ, QS):',
60
- validate: (input) => {
61
- if (!/^[A-Z]+$/.test(input.toUpperCase())) {
62
- return 'Project key must be uppercase letters only (e.g., PROJ, QS)';
63
- }
64
- return true;
65
- },
66
- transformer: (input) => input.toUpperCase()
67
- }
68
- ]);
107
+ });
108
+ if (p.isCancel(projectKey)) {
109
+ p.cancel('Operation cancelled');
110
+ process.exit(0);
111
+ }
112
+ p.outro(chalk_1.default.green('āœ“ Jira credentials configured'));
69
113
  return {
70
- url: answers.url,
71
- email: answers.email,
72
- apiToken: answers.apiToken,
73
- projectKey: answers.projectKey.toUpperCase()
114
+ url: url,
115
+ email: email,
116
+ apiToken: apiToken,
117
+ projectKey: projectKey.toUpperCase(),
74
118
  };
75
119
  }
76
120
  /**
77
121
  * Confirm overwrite of existing setup
78
122
  */
79
123
  async function confirmOverwrite() {
80
- const { confirm } = await inquirer_1.default.prompt([
81
- {
82
- type: 'confirm',
83
- name: 'confirm',
84
- message: chalk_1.default.yellow('CSVibe is already initialized. Overwrite existing setup?'),
85
- default: false
86
- }
87
- ]);
124
+ const confirm = await p.confirm({
125
+ message: 'CSVibe is already initialized. Overwrite existing setup?',
126
+ initialValue: false,
127
+ });
128
+ if (p.isCancel(confirm)) {
129
+ p.cancel('Operation cancelled');
130
+ process.exit(0);
131
+ }
132
+ return confirm;
133
+ }
134
+ /**
135
+ * Confirm Jira setup (optional configuration)
136
+ */
137
+ async function confirmJiraSetup() {
138
+ const confirm = await p.confirm({
139
+ message: 'Configure Jira integration now?',
140
+ initialValue: false,
141
+ });
142
+ if (p.isCancel(confirm)) {
143
+ p.cancel('Operation cancelled');
144
+ process.exit(0);
145
+ }
88
146
  return confirm;
89
147
  }
90
148
  /**
91
149
  * Show API token creation instructions
92
150
  */
93
151
  function showApiTokenInstructions() {
94
- console.log(chalk_1.default.bold('\nšŸ“ How to create a Jira API Token:'));
95
- console.log(' 1. Go to: ' + chalk_1.default.cyan('https://id.atlassian.com/manage-profile/security/api-tokens'));
96
- console.log(' 2. Click "Create API token"');
97
- console.log(' 3. Give it a name (e.g., "CSVibe CLI")');
98
- console.log(' 4. Copy the token and paste it below\n');
152
+ p.note(chalk_1.default.gray('1. Go to: ' +
153
+ chalk_1.default.cyan('https://id.atlassian.com/manage-profile/security/api-tokens') +
154
+ '\n' +
155
+ '2. Click "Create API token"\n' +
156
+ '3. Give it a name (e.g., "CSVibe CLI")\n' +
157
+ '4. Copy the token and paste it below'), chalk_1.default.bold('šŸ“ How to create a Jira API Token'));
158
+ console.log(); // spacing
99
159
  }
100
160
  //# sourceMappingURL=prompts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/utils/prompts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/utils/prompts.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"scaffolder.d.ts","sourceRoot":"","sources":["../../src/utils/scaffolder.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;GAEG;AACH,wBAAsB,QAAQ,CAAC,WAAW,GAAE,MAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAYjF;AAgCD;;GAEG;AACH,wBAAsB,aAAa,CAAC,WAAW,GAAE,MAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAatF"}
1
+ {"version":3,"file":"scaffolder.d.ts","sourceRoot":"","sources":["../../src/utils/scaffolder.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;GAEG;AACH,wBAAsB,QAAQ,CAAC,WAAW,GAAE,MAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAWjF;AAgCD;;GAEG;AACH,wBAAsB,aAAa,CAAC,WAAW,GAAE,MAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAYtF"}
@@ -14,10 +14,9 @@ const path_1 = __importDefault(require("path"));
14
14
  * Create directory structure for CSVibe
15
15
  */
16
16
  async function scaffold(projectRoot = process.cwd()) {
17
- // Create .github directories
17
+ // Create .github directories (agents includes scripts/ and schemas/ subdirs)
18
18
  await fs_extra_1.default.ensureDir(path_1.default.join(projectRoot, '.github', 'agents'));
19
19
  await fs_extra_1.default.ensureDir(path_1.default.join(projectRoot, '.github', 'prompts'));
20
- await fs_extra_1.default.ensureDir(path_1.default.join(projectRoot, '.github', 'instructions'));
21
20
  // Create .csvibe directories
22
21
  await fs_extra_1.default.ensureDir(path_1.default.join(projectRoot, '.csvibe', 'state'));
23
22
  await fs_extra_1.default.ensureDir(path_1.default.join(projectRoot, '.csvibe', 'cache'));
@@ -55,7 +54,6 @@ async function cleanScaffold(projectRoot = process.cwd()) {
55
54
  const dirsToRemove = [
56
55
  path_1.default.join(projectRoot, '.github', 'agents'),
57
56
  path_1.default.join(projectRoot, '.github', 'prompts'),
58
- path_1.default.join(projectRoot, '.github', 'instructions'),
59
57
  path_1.default.join(projectRoot, '.csvibe')
60
58
  ];
61
59
  for (const dir of dirsToRemove) {
@@ -1 +1 @@
1
- {"version":3,"file":"scaffolder.js","sourceRoot":"","sources":["../../src/utils/scaffolder.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;AAQH,4BAYC;AAmCD,sCAaC;AAlED,wDAA0B;AAC1B,gDAAwB;AAExB;;GAEG;AACI,KAAK,UAAU,QAAQ,CAAC,cAAsB,OAAO,CAAC,GAAG,EAAE;IAChE,6BAA6B;IAC7B,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChE,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IACjE,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC;IAEtE,6BAA6B;IAC7B,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/D,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAE/D,2BAA2B;IAC3B,MAAM,eAAe,CAAC,WAAW,CAAC,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe,CAAC,WAAmB;IAChD,MAAM,aAAa,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAE3D,MAAM,cAAc,GAAG;;;;;CAKxB,CAAC;IAEA,IAAI,OAAO,GAAG,EAAE,CAAC;IAEjB,wCAAwC;IACxC,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACvC,OAAO,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAEpD,wCAAwC;QACxC,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,6BAA6B;QACvC,CAAC;IACH,CAAC;IAED,wBAAwB;IACxB,OAAO,IAAI,cAAc,CAAC;IAC1B,MAAM,kBAAE,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACtD,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,aAAa,CAAC,cAAsB,OAAO,CAAC,GAAG,EAAE;IACrE,MAAM,YAAY,GAAG;QACnB,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC;QAC3C,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC;QAC5C,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,cAAc,CAAC;QACjD,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC;KAClC,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,kBAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"scaffolder.js","sourceRoot":"","sources":["../../src/utils/scaffolder.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;AAQH,4BAWC;AAmCD,sCAYC;AAhED,wDAA0B;AAC1B,gDAAwB;AAExB;;GAEG;AACI,KAAK,UAAU,QAAQ,CAAC,cAAsB,OAAO,CAAC,GAAG,EAAE;IAChE,6EAA6E;IAC7E,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChE,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IAEjE,6BAA6B;IAC7B,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/D,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAE/D,2BAA2B;IAC3B,MAAM,eAAe,CAAC,WAAW,CAAC,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe,CAAC,WAAmB;IAChD,MAAM,aAAa,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAE3D,MAAM,cAAc,GAAG;;;;;CAKxB,CAAC;IAEA,IAAI,OAAO,GAAG,EAAE,CAAC;IAEjB,wCAAwC;IACxC,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACvC,OAAO,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAEpD,wCAAwC;QACxC,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,6BAA6B;QACvC,CAAC;IACH,CAAC;IAED,wBAAwB;IACxB,OAAO,IAAI,cAAc,CAAC;IAC1B,MAAM,kBAAE,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACtD,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,aAAa,CAAC,cAAsB,OAAO,CAAC,GAAG,EAAE;IACrE,MAAM,YAAY,GAAG;QACnB,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC;QAC3C,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC;QAC5C,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC;KAClC,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,kBAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thanhvn14/csvibe",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "CSVibe CLI - GitHub Copilot Vibecoding Workflow",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -27,17 +27,21 @@
27
27
  "node": ">=16.0.0"
28
28
  },
29
29
  "dependencies": {
30
+ "@clack/prompts": "^0.7.0",
31
+ "@octokit/rest": "^22.0.1",
30
32
  "chalk": "^5.0.0",
33
+ "cli-progress": "^3.12.0",
31
34
  "commander": "^11.0.0",
32
35
  "execa": "^8.0.0",
33
36
  "fs-extra": "^11.3.3",
34
- "inquirer": "^9.3.8",
37
+ "keytar": "^7.9.0",
35
38
  "ora": "^6.0.0",
39
+ "p-retry": "^6.2.1",
36
40
  "yaml": "^2.8.2"
37
41
  },
38
42
  "devDependencies": {
43
+ "@types/cli-progress": "^3.11.6",
39
44
  "@types/fs-extra": "^11.0.4",
40
- "@types/inquirer": "^9.0.9",
41
45
  "@types/node": "^20.0.0",
42
46
  "@vitest/coverage-v8": "^1.0.0",
43
47
  "tsx": "^4.0.0",