vibecodingmachine-cli 2025.11.2-9.855 → 2025.12.6-1702

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.
@@ -3,10 +3,12 @@
3
3
  const path = require('path');
4
4
  const fs = require('fs');
5
5
 
6
- // Auto-load .env.auth if it exists
7
- const envAuthPath = path.join(__dirname, '..', '..', '.env.auth');
8
- if (fs.existsSync(envAuthPath)) {
9
- const envContent = fs.readFileSync(envAuthPath, 'utf8');
6
+ // Auto-load .env.cognito from root
7
+ const rootDir = path.join(__dirname, '..', '..', '..');
8
+ const envCognitoPath = path.join(rootDir, '.env.cognito');
9
+
10
+ if (fs.existsSync(envCognitoPath)) {
11
+ const envContent = fs.readFileSync(envCognitoPath, 'utf8');
10
12
  envContent.split('\n').forEach(line => {
11
13
  const trimmed = line.trim();
12
14
  if (trimmed && !trimmed.startsWith('#')) {
@@ -23,6 +25,13 @@ if (fs.existsSync(envAuthPath)) {
23
25
  * "Big Dreams + AI + VibeCodingMachine.com = Your money making apps"
24
26
  */
25
27
 
28
+ const { cleanupBrokenAssets } = require('../src/utils/asset-cleanup');
29
+
30
+ (async () => {
31
+ // mitigate broken assets issue
32
+ await cleanupBrokenAssets();
33
+ })();
34
+
26
35
  const { program } = require('commander');
27
36
  const chalk = require('chalk');
28
37
  const inquirer = require('inquirer');
@@ -140,6 +149,11 @@ program
140
149
  .description('Watch requirements file for changes')
141
150
  .action(reqCommands.watch);
142
151
 
152
+ program
153
+ .command('req:rename <old-title> <new-title> [description...]')
154
+ .description('Rename requirement and optionally update description')
155
+ .action((oldTitle, newTitle, description) => reqCommands.rename(oldTitle, newTitle, description));
156
+
143
157
  // IDE integration commands
144
158
  program
145
159
  .command('ide:list')
@@ -201,6 +215,76 @@ program
201
215
  .description('Check authentication status')
202
216
  .action(authCommands.status);
203
217
 
218
+ // Multi-computer management commands
219
+ const computerCommands = require('../src/commands/computers');
220
+ const remoteReqCommands = require('../src/commands/requirements-remote');
221
+ program
222
+ .command('computers')
223
+ .description('List all registered computers')
224
+ .option('-f, --focus <area>', 'Filter by focus area')
225
+ .option('-s, --status <status>', 'Filter by status (active, idle, error)')
226
+ .action(computerCommands.listComputers);
227
+
228
+ program
229
+ .command('computer:status <computerId>')
230
+ .description('Show detailed status of a specific computer')
231
+ .action(computerCommands.showComputerStatus);
232
+
233
+ program
234
+ .command('computer:register <focusArea>')
235
+ .description('Register current computer with focus area')
236
+ .action(computerCommands.registerComputer);
237
+
238
+ program
239
+ .command('computer:focus [newFocusArea]')
240
+ .description('View or update focus area for current computer')
241
+ .action((newFocusArea) => {
242
+ if (newFocusArea) {
243
+ computerCommands.updateFocus(newFocusArea);
244
+ } else {
245
+ // Show current focus
246
+ computerCommands.showComputerStatus(require('os').hostname());
247
+ }
248
+ });
249
+
250
+ program
251
+ .command('computer:requirements <computerId>')
252
+ .description('View requirements for another computer')
253
+ .action(remoteReqCommands.listRemoteRequirements);
254
+
255
+ program
256
+ .command('computer:add-requirement <computerId> <requirement>')
257
+ .description('Add requirement to another computer')
258
+ .action(remoteReqCommands.addRemoteRequirement);
259
+
260
+ // Sync management commands
261
+ const syncCommands = require('../src/commands/sync');
262
+ program
263
+ .command('sync:now')
264
+ .description('Trigger immediate sync')
265
+ .action(syncCommands.syncNow);
266
+
267
+ program
268
+ .command('sync:status')
269
+ .description('Show sync status and statistics')
270
+ .action(syncCommands.syncStatus);
271
+
272
+ program
273
+ .command('sync:queue')
274
+ .description('View pending changes in offline queue')
275
+ .action(syncCommands.viewQueue);
276
+
277
+ program
278
+ .command('sync:force')
279
+ .description('Force sync even if offline')
280
+ .action(syncCommands.forceSync);
281
+
282
+ program
283
+ .command('sync:history')
284
+ .description('View sync history')
285
+ .option('-n, --limit <number>', 'Number of history entries to show', '50')
286
+ .action(syncCommands.viewHistory);
287
+
204
288
  // Interactive mode
205
289
  program
206
290
  .command('interactive')
@@ -281,6 +365,10 @@ if (!process.argv.slice(2).length) {
281
365
  // Check for updates first
282
366
  await checkForUpdates();
283
367
 
368
+ // Check for first run experience
369
+ const { checkFirstRun } = require('../src/utils/first-run');
370
+ await checkFirstRun();
371
+
284
372
  // Check authentication before allowing interactive mode
285
373
  const auth = require('../src/utils/auth');
286
374
  const isAuth = await auth.isAuthenticated();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibecodingmachine-cli",
3
- "version": "2025.11.29.0855",
3
+ "version": "2025.12.06-1702",
4
4
  "description": "Command-line interface for Vibe Coding Machine - Autonomous development",
5
5
  "main": "src/index.js",
6
6
  "bin": {
@@ -25,10 +25,13 @@
25
25
  "author": "Vibe Coding Machine Team",
26
26
  "license": "MIT",
27
27
  "dependencies": {
28
- "vibecodingmachine-core": "^2025.11.29.0855",
28
+ "vibecodingmachine-core": "^2025.12.06-1702",
29
+ "@aws-sdk/client-dynamodb": "^3.600.0",
30
+ "@aws-sdk/lib-dynamodb": "^3.600.0",
29
31
  "boxen": "^5.1.2",
30
32
  "chalk": "^4.1.2",
31
33
  "chokidar": "^3.6.0",
34
+ "cli-table3": "^0.6.3",
32
35
  "commander": "^11.1.0",
33
36
  "fs-extra": "^11.2.0",
34
37
  "ink": "^6.4.0",
package/repro_open.js ADDED
@@ -0,0 +1,13 @@
1
+ try {
2
+ const open = require('open');
3
+ console.log('Type of open:', typeof open);
4
+ console.log('open:', open);
5
+ if (typeof open !== 'function') {
6
+ console.log('Exports:', Object.keys(open));
7
+ if (open.default) {
8
+ console.log('Type of open.default:', typeof open.default);
9
+ }
10
+ }
11
+ } catch (e) {
12
+ console.error('Require failed:', e.message);
13
+ }
@@ -10,6 +10,30 @@ const chalk = require('chalk');
10
10
  const path = require('path');
11
11
  const fs = require('fs');
12
12
 
13
+ /**
14
+ * Detect if user is using asdf for Node.js version management
15
+ */
16
+ function detectAsdf() {
17
+ try {
18
+ const nodePath = execSync('which node 2>/dev/null || true', { encoding: 'utf8' }).trim();
19
+ return nodePath.includes('/.asdf/');
20
+ } catch (error) {
21
+ return false;
22
+ }
23
+ }
24
+
25
+ /**
26
+ * Attempt to reshim asdf to make vcm command immediately available
27
+ */
28
+ function reshimAsdf() {
29
+ try {
30
+ execSync('asdf reshim nodejs 2>/dev/null', { encoding: 'utf8' });
31
+ return true;
32
+ } catch (error) {
33
+ return false;
34
+ }
35
+ }
36
+
13
37
  function checkForExistingAna() {
14
38
  try {
15
39
  // Check if 'vcm' command exists in PATH before installation
@@ -22,6 +46,20 @@ function checkForExistingAna() {
22
46
  console.log(chalk.green('\n✓ Vibe Coding Machine CLI installed successfully!'));
23
47
  console.log(chalk.gray(' You can use either:'));
24
48
  console.log(chalk.cyan(' vibecodingmachine') + chalk.gray(' or ') + chalk.cyan('vcm'));
49
+
50
+ // Check if user is using asdf and attempt to reshim
51
+ const isAsdf = detectAsdf();
52
+ if (isAsdf) {
53
+ const reshimSuccess = reshimAsdf();
54
+ if (reshimSuccess) {
55
+ console.log(chalk.gray(' ✓ asdf reshimmed successfully'));
56
+ } else {
57
+ console.log(chalk.yellow('\n ⚠️ Note: You appear to be using asdf.'));
58
+ console.log(chalk.yellow(' If "vcm" command is not found, run:'));
59
+ console.log(chalk.cyan(' asdf reshim nodejs'));
60
+ }
61
+ }
62
+
25
63
  console.log();
26
64
  return;
27
65
  }
@@ -39,6 +77,20 @@ function checkForExistingAna() {
39
77
  console.log(chalk.green('\n✓ Vibe Coding Machine CLI installed successfully!'));
40
78
  console.log(chalk.gray(' You can use either:'));
41
79
  console.log(chalk.cyan(' vibecodingmachine') + chalk.gray(' or ') + chalk.cyan('vcm'));
80
+
81
+ // Check if user is using asdf and attempt to reshim
82
+ const isAsdf = detectAsdf();
83
+ if (isAsdf) {
84
+ const reshimSuccess = reshimAsdf();
85
+ if (reshimSuccess) {
86
+ console.log(chalk.gray(' ✓ asdf reshimmed successfully'));
87
+ } else {
88
+ console.log(chalk.yellow('\n ⚠️ Note: You appear to be using asdf.'));
89
+ console.log(chalk.yellow(' If "vcm" command is not found, run:'));
90
+ console.log(chalk.cyan(' asdf reshim nodejs'));
91
+ }
92
+ }
93
+
42
94
  console.log();
43
95
  return;
44
96
  }
@@ -64,6 +116,20 @@ function checkForExistingAna() {
64
116
  console.log(chalk.green('\n✓ Vibe Coding Machine CLI installed successfully!'));
65
117
  console.log(chalk.gray(' You can use either:'));
66
118
  console.log(chalk.cyan(' vibecodingmachine') + chalk.gray(' or ') + chalk.cyan('vcm'));
119
+
120
+ // Check if user is using asdf and attempt to reshim
121
+ const isAsdf = detectAsdf();
122
+ if (isAsdf) {
123
+ const reshimSuccess = reshimAsdf();
124
+ if (reshimSuccess) {
125
+ console.log(chalk.gray(' ✓ asdf reshimmed successfully'));
126
+ } else {
127
+ console.log(chalk.yellow('\n ⚠️ Note: You appear to be using asdf.'));
128
+ console.log(chalk.yellow(' If "vcm" command is not found, run:'));
129
+ console.log(chalk.cyan(' asdf reshim nodejs'));
130
+ }
131
+ }
132
+
67
133
  console.log();
68
134
  }
69
135
  } catch (error) {
@@ -71,6 +137,20 @@ function checkForExistingAna() {
71
137
  console.log(chalk.green('\n✓ Vibe Coding Machine CLI installed successfully!'));
72
138
  console.log(chalk.gray(' You can use either:'));
73
139
  console.log(chalk.cyan(' vibecodingmachine') + chalk.gray(' or ') + chalk.cyan('vcm'));
140
+
141
+ // Check if user is using asdf and attempt to reshim
142
+ const isAsdf = detectAsdf();
143
+ if (isAsdf) {
144
+ const reshimSuccess = reshimAsdf();
145
+ if (reshimSuccess) {
146
+ console.log(chalk.gray(' ✓ asdf reshimmed successfully'));
147
+ } else {
148
+ console.log(chalk.yellow('\n ⚠️ Note: You appear to be using asdf.'));
149
+ console.log(chalk.yellow(' If "vcm" command is not found, run:'));
150
+ console.log(chalk.cyan(' asdf reshim nodejs'));
151
+ }
152
+ }
153
+
74
154
  console.log();
75
155
  }
76
156
  }