claude-autopm 2.8.4 → 2.8.6
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.
- package/bin/commands/config.js +56 -3
- package/install/install.js +31 -8
- package/package.json +1 -1
- package/packages/plugin-core/plugin.json +1 -0
package/bin/commands/config.js
CHANGED
|
@@ -300,6 +300,61 @@ class ConfigCommand {
|
|
|
300
300
|
// Format the confirmation message
|
|
301
301
|
const displayKey = key.charAt(0).toUpperCase() + key.slice(1).replace(/([A-Z])/g, ' $1');
|
|
302
302
|
console.log(`✅ ${displayKey} set to: ${value}`);
|
|
303
|
+
|
|
304
|
+
// Show helpful information for provider setup
|
|
305
|
+
if (key === 'provider') {
|
|
306
|
+
console.log('');
|
|
307
|
+
console.log('┌─────────────────────────────────────────────────────────────┐');
|
|
308
|
+
console.log(`│ ${value === 'github' ? 'GitHub' : 'Azure DevOps'} Provider Configuration`);
|
|
309
|
+
console.log('├─────────────────────────────────────────────────────────────┤');
|
|
310
|
+
|
|
311
|
+
if (value === 'github') {
|
|
312
|
+
console.log('│ Required Settings:');
|
|
313
|
+
console.log('│ • Repository owner/organization name');
|
|
314
|
+
console.log('│ • Repository name');
|
|
315
|
+
console.log('│ • Personal Access Token (PAT)');
|
|
316
|
+
console.log('│');
|
|
317
|
+
console.log('│ Setup Commands:');
|
|
318
|
+
console.log('│ 1. Set owner: autopm config set github.owner YOUR_USERNAME');
|
|
319
|
+
console.log('│ 2. Set repo: autopm config set github.repo YOUR_REPO');
|
|
320
|
+
console.log('│ 3. Add PAT: Edit .claude/.env and add:');
|
|
321
|
+
console.log('│ GITHUB_TOKEN=ghp_your_token_here');
|
|
322
|
+
console.log('│');
|
|
323
|
+
console.log('│ Create a GitHub Personal Access Token:');
|
|
324
|
+
console.log('│ 1. Go to: https://github.com/settings/tokens');
|
|
325
|
+
console.log('│ 2. Click "Generate new token (classic)"');
|
|
326
|
+
console.log('│ 3. Give it a name and select scopes:');
|
|
327
|
+
console.log('│ - repo (all)');
|
|
328
|
+
console.log('│ - workflow (if using GitHub Actions)');
|
|
329
|
+
console.log('│ 4. Generate and copy the token');
|
|
330
|
+
console.log('│');
|
|
331
|
+
console.log('│ Verify setup: autopm config validate');
|
|
332
|
+
} else if (value === 'azure') {
|
|
333
|
+
console.log('│ Required Settings:');
|
|
334
|
+
console.log('│ • Organization name');
|
|
335
|
+
console.log('│ • Project name');
|
|
336
|
+
console.log('│ • Personal Access Token (PAT)');
|
|
337
|
+
console.log('│');
|
|
338
|
+
console.log('│ Setup Commands:');
|
|
339
|
+
console.log('│ 1. Set org: autopm config set azure.organization YOUR_ORG');
|
|
340
|
+
console.log('│ 2. Set project: autopm config set azure.project YOUR_PROJECT');
|
|
341
|
+
console.log('│ 3. Add PAT: Edit .claude/.env and add:');
|
|
342
|
+
console.log('│ AZURE_DEVOPS_PAT=your_token_here');
|
|
343
|
+
console.log('│');
|
|
344
|
+
console.log('│ Create an Azure DevOps Personal Access Token:');
|
|
345
|
+
console.log('│ 1. Go to: https://dev.azure.com/YOUR_ORG/_usersSettings/tokens');
|
|
346
|
+
console.log('│ 2. Click "+ New Token"');
|
|
347
|
+
console.log('│ 3. Give it a name and select scopes:');
|
|
348
|
+
console.log('│ - Work Items: Read, write, & manage');
|
|
349
|
+
console.log('│ - Code: Read & write');
|
|
350
|
+
console.log('│ 4. Create and copy the token');
|
|
351
|
+
console.log('│');
|
|
352
|
+
console.log('│ Verify setup: autopm config validate');
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
console.log('└─────────────────────────────────────────────────────────────┘');
|
|
356
|
+
console.log('');
|
|
357
|
+
}
|
|
303
358
|
}
|
|
304
359
|
|
|
305
360
|
/**
|
|
@@ -411,9 +466,7 @@ class ConfigCommand {
|
|
|
411
466
|
*/
|
|
412
467
|
async switch(provider) {
|
|
413
468
|
await this.set('provider', provider);
|
|
414
|
-
|
|
415
|
-
const providerName = provider === 'azure' ? 'Azure DevOps' : 'GitHub';
|
|
416
|
-
console.log(`✅ Switched to ${providerName}`);
|
|
469
|
+
// The set method will handle showing the configuration guide
|
|
417
470
|
}
|
|
418
471
|
}
|
|
419
472
|
|
package/install/install.js
CHANGED
|
@@ -918,13 +918,34 @@ See: https://github.com/rafeekpro/ClaudeAutoPM
|
|
|
918
918
|
}
|
|
919
919
|
|
|
920
920
|
for (const command of metadata.commands) {
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
921
|
+
// Handle subdirectory collections with auto-discovery
|
|
922
|
+
if (command.subdirectory && command.discovery === 'auto') {
|
|
923
|
+
const commandsSourceDir = path.join(pluginPath, command.subdirectory);
|
|
924
|
+
|
|
925
|
+
if (fs.existsSync(commandsSourceDir)) {
|
|
926
|
+
// Auto-discover all .md files in subdirectory
|
|
927
|
+
const files = fs.readdirSync(commandsSourceDir);
|
|
928
|
+
for (const file of files) {
|
|
929
|
+
if (file.endsWith('.md')) {
|
|
930
|
+
const sourcePath = path.join(commandsSourceDir, file);
|
|
931
|
+
const targetPath = path.join(targetDir, file);
|
|
932
|
+
|
|
933
|
+
if (fs.existsSync(sourcePath) && !fs.existsSync(targetPath)) {
|
|
934
|
+
fs.copyFileSync(sourcePath, targetPath);
|
|
935
|
+
commandsInstalled++;
|
|
936
|
+
}
|
|
937
|
+
}
|
|
938
|
+
}
|
|
939
|
+
}
|
|
940
|
+
} else if (command.file) {
|
|
941
|
+
// Handle individual command files
|
|
942
|
+
const sourcePath = path.join(pluginPath, command.file);
|
|
943
|
+
const targetPath = path.join(targetDir, path.basename(command.file));
|
|
924
944
|
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
945
|
+
if (fs.existsSync(sourcePath) && !fs.existsSync(targetPath)) {
|
|
946
|
+
fs.copyFileSync(sourcePath, targetPath);
|
|
947
|
+
commandsInstalled++;
|
|
948
|
+
}
|
|
928
949
|
}
|
|
929
950
|
}
|
|
930
951
|
}
|
|
@@ -1020,9 +1041,11 @@ See: https://github.com/rafeekpro/ClaudeAutoPM
|
|
|
1020
1041
|
}
|
|
1021
1042
|
}
|
|
1022
1043
|
|
|
1044
|
+
const displayName = metadata.displayName || metadata.name || pluginName;
|
|
1045
|
+
|
|
1023
1046
|
installedPlugins.push({
|
|
1024
1047
|
name: pluginName,
|
|
1025
|
-
displayName:
|
|
1048
|
+
displayName: displayName,
|
|
1026
1049
|
agents: agentsInstalled,
|
|
1027
1050
|
commands: commandsInstalled,
|
|
1028
1051
|
rules: rulesInstalled
|
|
@@ -1033,7 +1056,7 @@ See: https://github.com/rafeekpro/ClaudeAutoPM
|
|
|
1033
1056
|
if (commandsInstalled > 0) summary.push(`${commandsInstalled} commands`);
|
|
1034
1057
|
if (rulesInstalled > 0) summary.push(`${rulesInstalled} rules`);
|
|
1035
1058
|
|
|
1036
|
-
this.printSuccess(`${
|
|
1059
|
+
this.printSuccess(`${displayName} installed (${summary.join(', ') || 'no resources'})`);
|
|
1037
1060
|
} catch (error) {
|
|
1038
1061
|
failedPlugins.push({ name: pluginName, error: error.message });
|
|
1039
1062
|
this.printWarning(`Failed to install ${pluginName}: ${error.message}`);
|
package/package.json
CHANGED