vibecodingmachine-cli 2026.3.9-850 → 2026.3.10-1547

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 (39) hide show
  1. package/README.md +85 -85
  2. package/bin/commands/agent-commands.js +295 -28
  3. package/bin/vibecodingmachine.js +0 -0
  4. package/package.json +2 -2
  5. package/scripts/postinstall.js +161 -161
  6. package/src/commands/auth.js +100 -100
  7. package/src/commands/auto-execution.js +120 -32
  8. package/src/commands/auto-requirement-management.js +9 -9
  9. package/src/commands/auto-status-helpers.js +6 -12
  10. package/src/commands/computers.js +318 -318
  11. package/src/commands/feature.js +123 -123
  12. package/src/commands/locale.js +72 -72
  13. package/src/commands/repo.js +163 -163
  14. package/src/commands/setup.js +93 -93
  15. package/src/commands/sync.js +287 -287
  16. package/src/index.js +5 -5
  17. package/src/utils/agent-selector.js +50 -50
  18. package/src/utils/asset-cleanup.js +60 -60
  19. package/src/utils/auth.js +6 -0
  20. package/src/utils/auto-mode-ansi-ui.js +237 -237
  21. package/src/utils/auto-mode-simple-ui.js +141 -141
  22. package/src/utils/copy-with-progress.js +167 -167
  23. package/src/utils/download-with-progress.js +84 -84
  24. package/src/utils/keyboard-handler.js +153 -153
  25. package/src/utils/kiro-installer.js +178 -178
  26. package/src/utils/logger.js +4 -4
  27. package/src/utils/persistent-header.js +114 -114
  28. package/src/utils/prompt-helper.js +63 -63
  29. package/src/utils/provider-checker/agent-runner.js +110 -31
  30. package/src/utils/provider-checker/ide-manager.js +37 -8
  31. package/src/utils/provider-checker/provider-validator.js +50 -0
  32. package/src/utils/provider-checker/requirements-manager.js +21 -6
  33. package/src/utils/status-card.js +121 -121
  34. package/src/utils/stdout-interceptor.js +127 -127
  35. package/src/utils/trui-main-handlers.js +41 -8
  36. package/src/utils/trui-main-menu.js +10 -3
  37. package/src/utils/trui-nav-agents.js +23 -33
  38. package/src/utils/trui-navigation.js +2 -2
  39. package/src/utils/user-tracking.js +299 -299
@@ -1,123 +1,123 @@
1
- const chalk = require('chalk');
2
- const { getRepoPath } = require('../utils/config');
3
- const {
4
- createRequirementBranch,
5
- mergeRequirementBranch,
6
- removeRequirementFeature,
7
- listRequirementBranches,
8
- getCurrentBranch
9
- } = require('vibecodingmachine-core');
10
-
11
- async function start(requirementTitle) {
12
- try {
13
- const repoPath = await getRepoPath();
14
- if (!repoPath) {
15
- console.log(chalk.yellow('No repository configured'));
16
- console.log(chalk.gray('Run'), chalk.cyan('vcm repo:set <path>'));
17
- process.exit(1);
18
- }
19
-
20
- console.log(chalk.cyan(`Creating feature branch for: ${requirementTitle}`));
21
- const result = await createRequirementBranch(repoPath, requirementTitle);
22
-
23
- if (result.success) {
24
- if (result.alreadyExists) {
25
- console.log(chalk.yellow(`✓ Switched to existing branch: ${result.branchName}`));
26
- } else {
27
- console.log(chalk.green(`✓ Created and switched to branch: ${result.branchName}`));
28
- }
29
- console.log(chalk.gray(` Parent branch: ${result.parentBranch}`));
30
- } else {
31
- console.log(chalk.red(`✗ Failed to create branch: ${result.error}`));
32
- process.exit(1);
33
- }
34
- } catch (error) {
35
- console.error(chalk.red('Error creating feature branch:'), error.message);
36
- process.exit(1);
37
- }
38
- }
39
-
40
- async function finish(requirementTitle, options = {}) {
41
- try {
42
- const repoPath = await getRepoPath();
43
- if (!repoPath) {
44
- console.log(chalk.yellow('No repository configured'));
45
- process.exit(1);
46
- }
47
-
48
- const parentBranch = options.parent || 'main';
49
-
50
- console.log(chalk.cyan(`Merging feature branch for: ${requirementTitle}`));
51
- const result = await mergeRequirementBranch(repoPath, requirementTitle, parentBranch);
52
-
53
- if (result.success) {
54
- console.log(chalk.green(`✓ Feature merged and branch deleted`));
55
- } else {
56
- console.log(chalk.red(`✗ Failed to merge branch: ${result.error}`));
57
- process.exit(1);
58
- }
59
- } catch (error) {
60
- console.error(chalk.red('Error merging feature branch:'), error.message);
61
- process.exit(1);
62
- }
63
- }
64
-
65
- async function remove(requirementTitle) {
66
- try {
67
- const repoPath = await getRepoPath();
68
- if (!repoPath) {
69
- console.log(chalk.yellow('No repository configured'));
70
- process.exit(1);
71
- }
72
-
73
- console.log(chalk.cyan(`Removing feature for: ${requirementTitle}`));
74
- const result = await removeRequirementFeature(repoPath, requirementTitle);
75
-
76
- if (result.success) {
77
- console.log(chalk.green(`✓ Feature removed (merge reverted)`));
78
- } else {
79
- console.log(chalk.red(`✗ Failed to remove feature: ${result.error}`));
80
- process.exit(1);
81
- }
82
- } catch (error) {
83
- console.error(chalk.red('Error removing feature:'), error.message);
84
- process.exit(1);
85
- }
86
- }
87
-
88
- async function list() {
89
- try {
90
- const repoPath = await getRepoPath();
91
- if (!repoPath) {
92
- console.log(chalk.yellow('No repository configured'));
93
- process.exit(1);
94
- }
95
-
96
- const branches = listRequirementBranches(repoPath);
97
- const currentBranch = getCurrentBranch(repoPath);
98
-
99
- if (branches.length === 0) {
100
- console.log(chalk.yellow('No requirement branches found'));
101
- return;
102
- }
103
-
104
- console.log(chalk.cyan('\nRequirement Branches:\n'));
105
- branches.forEach(({ branchName, reqNumber }) => {
106
- const isCurrent = branchName === currentBranch;
107
- const marker = isCurrent ? chalk.green('* ') : ' ';
108
- const color = isCurrent ? chalk.green : chalk.white;
109
- console.log(`${marker}${color(branchName)}`);
110
- });
111
- console.log();
112
- } catch (error) {
113
- console.error(chalk.red('Error listing branches:'), error.message);
114
- process.exit(1);
115
- }
116
- }
117
-
118
- module.exports = {
119
- start,
120
- finish,
121
- remove,
122
- list
123
- };
1
+ const chalk = require('chalk');
2
+ const { getRepoPath } = require('../utils/config');
3
+ const {
4
+ createRequirementBranch,
5
+ mergeRequirementBranch,
6
+ removeRequirementFeature,
7
+ listRequirementBranches,
8
+ getCurrentBranch
9
+ } = require('vibecodingmachine-core');
10
+
11
+ async function start(requirementTitle) {
12
+ try {
13
+ const repoPath = await getRepoPath();
14
+ if (!repoPath) {
15
+ console.log(chalk.yellow('No repository configured'));
16
+ console.log(chalk.gray('Run'), chalk.cyan('vcm repo:set <path>'));
17
+ process.exit(1);
18
+ }
19
+
20
+ console.log(chalk.cyan(`Creating feature branch for: ${requirementTitle}`));
21
+ const result = await createRequirementBranch(repoPath, requirementTitle);
22
+
23
+ if (result.success) {
24
+ if (result.alreadyExists) {
25
+ console.log(chalk.yellow(`✓ Switched to existing branch: ${result.branchName}`));
26
+ } else {
27
+ console.log(chalk.green(`✓ Created and switched to branch: ${result.branchName}`));
28
+ }
29
+ console.log(chalk.gray(` Parent branch: ${result.parentBranch}`));
30
+ } else {
31
+ console.log(chalk.red(`✗ Failed to create branch: ${result.error}`));
32
+ process.exit(1);
33
+ }
34
+ } catch (error) {
35
+ console.error(chalk.red('Error creating feature branch:'), error.message);
36
+ process.exit(1);
37
+ }
38
+ }
39
+
40
+ async function finish(requirementTitle, options = {}) {
41
+ try {
42
+ const repoPath = await getRepoPath();
43
+ if (!repoPath) {
44
+ console.log(chalk.yellow('No repository configured'));
45
+ process.exit(1);
46
+ }
47
+
48
+ const parentBranch = options.parent || 'main';
49
+
50
+ console.log(chalk.cyan(`Merging feature branch for: ${requirementTitle}`));
51
+ const result = await mergeRequirementBranch(repoPath, requirementTitle, parentBranch);
52
+
53
+ if (result.success) {
54
+ console.log(chalk.green(`✓ Feature merged and branch deleted`));
55
+ } else {
56
+ console.log(chalk.red(`✗ Failed to merge branch: ${result.error}`));
57
+ process.exit(1);
58
+ }
59
+ } catch (error) {
60
+ console.error(chalk.red('Error merging feature branch:'), error.message);
61
+ process.exit(1);
62
+ }
63
+ }
64
+
65
+ async function remove(requirementTitle) {
66
+ try {
67
+ const repoPath = await getRepoPath();
68
+ if (!repoPath) {
69
+ console.log(chalk.yellow('No repository configured'));
70
+ process.exit(1);
71
+ }
72
+
73
+ console.log(chalk.cyan(`Removing feature for: ${requirementTitle}`));
74
+ const result = await removeRequirementFeature(repoPath, requirementTitle);
75
+
76
+ if (result.success) {
77
+ console.log(chalk.green(`✓ Feature removed (merge reverted)`));
78
+ } else {
79
+ console.log(chalk.red(`✗ Failed to remove feature: ${result.error}`));
80
+ process.exit(1);
81
+ }
82
+ } catch (error) {
83
+ console.error(chalk.red('Error removing feature:'), error.message);
84
+ process.exit(1);
85
+ }
86
+ }
87
+
88
+ async function list() {
89
+ try {
90
+ const repoPath = await getRepoPath();
91
+ if (!repoPath) {
92
+ console.log(chalk.yellow('No repository configured'));
93
+ process.exit(1);
94
+ }
95
+
96
+ const branches = listRequirementBranches(repoPath);
97
+ const currentBranch = getCurrentBranch(repoPath);
98
+
99
+ if (branches.length === 0) {
100
+ console.log(chalk.yellow('No requirement branches found'));
101
+ return;
102
+ }
103
+
104
+ console.log(chalk.cyan('\nRequirement Branches:\n'));
105
+ branches.forEach(({ branchName, reqNumber }) => {
106
+ const isCurrent = branchName === currentBranch;
107
+ const marker = isCurrent ? chalk.green('* ') : ' ';
108
+ const color = isCurrent ? chalk.green : chalk.white;
109
+ console.log(`${marker}${color(branchName)}`);
110
+ });
111
+ console.log();
112
+ } catch (error) {
113
+ console.error(chalk.red('Error listing branches:'), error.message);
114
+ process.exit(1);
115
+ }
116
+ }
117
+
118
+ module.exports = {
119
+ start,
120
+ finish,
121
+ remove,
122
+ list
123
+ };
@@ -1,73 +1,73 @@
1
- const chalk = require('chalk');
2
- const { t, getCurrentLocale, setLocale, getAvailableLocales, detectLocale } = require('vibecodingmachine-core');
3
-
4
- /**
5
- * Show current locale information
6
- */
7
- async function show() {
8
- const current = getCurrentLocale();
9
- const detected = detectLocale();
10
- const available = getAvailableLocales();
11
-
12
- console.log(chalk.bold(`\n🌍 ${t('app.name')} - Locale Information`));
13
- console.log(chalk.gray('Current locale:'), chalk.cyan(current));
14
- console.log(chalk.gray('Detected locale:'), chalk.cyan(detected));
15
- console.log(chalk.gray('Available locales:'), chalk.cyan(available.join(', ')));
16
-
17
- // Test some translations
18
- console.log(chalk.bold('\n📝 Sample Translations:'));
19
- console.log(` ${t('auth.login')}`);
20
- console.log(` ${t('status.title')}`);
21
- console.log(` ${t('setup.title')}`);
22
- console.log();
23
- }
24
-
25
- /**
26
- * Set locale
27
- * @param {string} locale - Locale to set
28
- */
29
- async function set(locale) {
30
- const available = getAvailableLocales();
31
-
32
- if (!available.includes(locale)) {
33
- console.log(chalk.red(`\n✗ Unsupported locale: ${locale}`));
34
- console.log(chalk.gray('Available locales:'), chalk.cyan(available.join(', ')));
35
- return;
36
- }
37
-
38
- setLocale(locale);
39
- console.log(chalk.green(`\n✓ Locale set to: ${chalk.cyan(locale)}`));
40
-
41
- // Show sample translation
42
- console.log(chalk.gray('Sample:'), t('app.name'));
43
- console.log();
44
- }
45
-
46
- /**
47
- * Test locale detection and translations
48
- */
49
- async function test() {
50
- console.log(chalk.bold(`\n🧪 Testing Locale System`));
51
-
52
- const available = getAvailableLocales();
53
-
54
- for (const locale of available) {
55
- console.log(chalk.bold(`\n--- ${locale.toUpperCase()} ---`));
56
- setLocale(locale);
57
-
58
- console.log(`${t('app.name')}`);
59
- console.log(`${t('auth.login')}`);
60
- console.log(`${t('status.title')}`);
61
- console.log(`${t('setup.title')}`);
62
- }
63
-
64
- // Reset to detected locale
65
- setLocale(detectLocale());
66
- console.log();
67
- }
68
-
69
- module.exports = {
70
- show,
71
- set,
72
- test
1
+ const chalk = require('chalk');
2
+ const { t, getCurrentLocale, setLocale, getAvailableLocales, detectLocale } = require('vibecodingmachine-core');
3
+
4
+ /**
5
+ * Show current locale information
6
+ */
7
+ async function show() {
8
+ const current = getCurrentLocale();
9
+ const detected = detectLocale();
10
+ const available = getAvailableLocales();
11
+
12
+ console.log(chalk.bold(`\n🌍 ${t('app.name')} - Locale Information`));
13
+ console.log(chalk.gray('Current locale:'), chalk.cyan(current));
14
+ console.log(chalk.gray('Detected locale:'), chalk.cyan(detected));
15
+ console.log(chalk.gray('Available locales:'), chalk.cyan(available.join(', ')));
16
+
17
+ // Test some translations
18
+ console.log(chalk.bold('\n📝 Sample Translations:'));
19
+ console.log(` ${t('auth.login')}`);
20
+ console.log(` ${t('status.title')}`);
21
+ console.log(` ${t('setup.title')}`);
22
+ console.log();
23
+ }
24
+
25
+ /**
26
+ * Set locale
27
+ * @param {string} locale - Locale to set
28
+ */
29
+ async function set(locale) {
30
+ const available = getAvailableLocales();
31
+
32
+ if (!available.includes(locale)) {
33
+ console.log(chalk.red(`\n✗ Unsupported locale: ${locale}`));
34
+ console.log(chalk.gray('Available locales:'), chalk.cyan(available.join(', ')));
35
+ return;
36
+ }
37
+
38
+ setLocale(locale);
39
+ console.log(chalk.green(`\n✓ Locale set to: ${chalk.cyan(locale)}`));
40
+
41
+ // Show sample translation
42
+ console.log(chalk.gray('Sample:'), t('app.name'));
43
+ console.log();
44
+ }
45
+
46
+ /**
47
+ * Test locale detection and translations
48
+ */
49
+ async function test() {
50
+ console.log(chalk.bold(`\n🧪 Testing Locale System`));
51
+
52
+ const available = getAvailableLocales();
53
+
54
+ for (const locale of available) {
55
+ console.log(chalk.bold(`\n--- ${locale.toUpperCase()} ---`));
56
+ setLocale(locale);
57
+
58
+ console.log(`${t('app.name')}`);
59
+ console.log(`${t('auth.login')}`);
60
+ console.log(`${t('status.title')}`);
61
+ console.log(`${t('setup.title')}`);
62
+ }
63
+
64
+ // Reset to detected locale
65
+ setLocale(detectLocale());
66
+ console.log();
67
+ }
68
+
69
+ module.exports = {
70
+ show,
71
+ set,
72
+ test
73
73
  };