🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

convoke-agents

Package Overview
Dependencies
Maintainers
1
Versions
16
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

convoke-agents - npm Package Compare versions

Comparing version
3.0.1
to
3.0.2
+1
-1
_bmad/bme/_vortex/config.yaml

@@ -36,3 +36,3 @@ submodule_name: _vortex

- vortex-navigation
version: 3.0.0
version: 3.0.2
user_name: '{user}'

@@ -39,0 +39,0 @@ communication_language: en

{
"name": "convoke-agents",
"version": "3.0.1",
"version": "3.0.2",
"description": "Agent teams for complex systems, compatible with BMad Method",

@@ -5,0 +5,0 @@ "main": "index.js",

@@ -57,3 +57,3 @@ #!/usr/bin/env node

if (migrations.length === 0) {
return { action: 'no-migrations', currentVersion, targetVersion };
return { action: 'refresh-only', currentVersion, targetVersion };
}

@@ -148,10 +148,55 @@

case 'no-migrations':
console.log(chalk.yellow('No migrations needed (versions compatible)'));
case 'refresh-only':
case 'upgrade':
break; // Continue below
}
// Refresh-only: no migration deltas, just update files to latest version
if (assessment.action === 'refresh-only') {
console.log(chalk.cyan('Update Plan:'));
console.log(` From: ${chalk.red(assessment.currentVersion)}`);
console.log(` To: ${chalk.green(assessment.targetVersion)}`);
console.log('');
console.log(chalk.cyan('No migration deltas needed — refreshing installation files.'));
console.log('');
if (dryRun) {
console.log(chalk.yellow.bold('DRY RUN — no changes will be made'));
console.log('');
process.exit(0);
break;
}
case 'upgrade':
break; // Continue below
if (!yes) {
console.log(chalk.cyan('Your data will be backed up automatically.'));
console.log('');
const confirmed = await confirm('Proceed with update?');
if (!confirmed) {
console.log('');
console.log(chalk.yellow('Update cancelled.'));
console.log('');
process.exit(0);
}
}
console.log('');
console.log(chalk.cyan.bold('Starting update...'));
try {
const result = await migrationRunner.runRefreshOnly(assessment.currentVersion, { verbose });
console.log('');
console.log(chalk.green.bold('✓ Update completed successfully!'));
console.log('');
console.log(chalk.cyan('Changes applied:'));
result.changes.forEach(change => {
console.log(chalk.green(` ✓ ${change}`));
});
console.log('');
console.log(chalk.gray(`Backup location: ${result.backupMetadata.backup_dir}`));
console.log('');
} catch (_error) {
process.exit(1);
}
process.exit(0);
}

@@ -158,0 +203,0 @@

@@ -381,4 +381,104 @@ #!/usr/bin/env node

/**
* Refresh-only update: no migration deltas, just backup + refresh + validate.
* Used when upgrading between versions that have no registered migration deltas.
* @param {string} fromVersion - Current installed version
* @param {object} options - Options { verbose }
* @returns {Promise<object>} Update result
*/
async function runRefreshOnly(fromVersion, options = {}) {
const { verbose = false } = options;
const toVersion = getPackageVersion();
const projectRoot = findProjectRoot();
if (!projectRoot) {
throw new Error('Not in a Convoke project. Could not find _bmad/ directory.');
}
// 1. Acquire lock
await acquireMigrationLock(projectRoot);
let backupMetadata = null;
try {
// 2. Create backup
console.log(chalk.cyan('[1/3] Creating backup...'));
backupMetadata = await backupManager.createBackup(fromVersion, projectRoot);
console.log(chalk.green(`✓ Backup created: ${path.basename(backupMetadata.backup_dir)}`));
console.log('');
// 3. Refresh installation
console.log(chalk.cyan('[2/3] Refreshing installation files...'));
const changes = await refreshInstallation(projectRoot, { verbose });
console.log(chalk.green('✓ Installation refreshed'));
console.log('');
// 4. Validate
console.log(chalk.cyan('[3/3] Validating installation...'));
const validationResult = await validator.validateInstallation(backupMetadata, projectRoot);
validationResult.checks.forEach(check => {
if (check.passed) {
console.log(chalk.green(` ✓ ${check.name}`));
if (check.info || check.warning) {
console.log(chalk.gray(` ${check.info || check.warning}`));
}
} else {
console.log(chalk.red(` ✗ ${check.name}`));
if (check.error) {
console.log(chalk.red(` Error: ${check.error}`));
}
}
});
console.log('');
if (!validationResult.valid) {
throw new Error('Installation validation failed');
}
console.log(chalk.green('✓ Installation validated'));
console.log('');
// 5. Cleanup old backups
const deletedCount = await backupManager.cleanupOldBackups(5, projectRoot);
if (deletedCount > 0) {
console.log(chalk.green(`✓ Cleaned up ${deletedCount} old backup(s)`));
}
// Release lock
await releaseMigrationLock(projectRoot);
return {
success: true,
fromVersion,
toVersion,
changes,
backupMetadata
};
} catch (error) {
console.error('');
console.error(chalk.red.bold('✗ Update failed!'));
console.error(chalk.red(error.message));
console.error('');
if (backupMetadata) {
console.log(chalk.yellow('Restoring from backup...'));
try {
await backupManager.restoreBackup(backupMetadata, projectRoot);
console.log(chalk.green('✓ Installation restored from backup'));
} catch (restoreError) {
console.error(chalk.red('✗ Restore failed!'));
console.error(chalk.yellow(`Manual restore may be needed from: ${backupMetadata.backup_dir}`));
}
}
await releaseMigrationLock(projectRoot);
throw error;
}
}
module.exports = {
runMigrations,
runRefreshOnly,
previewMigrations,

@@ -385,0 +485,0 @@ executeMigration,