liang-opencode-suite 1.0.0

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 (94) hide show
  1. package/PROMPT.md +368 -0
  2. package/README.md +106 -0
  3. package/dist/cli.d.ts +6 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +82 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/steps/check-opencode.d.ts +10 -0
  8. package/dist/steps/check-opencode.d.ts.map +1 -0
  9. package/dist/steps/check-opencode.js +52 -0
  10. package/dist/steps/check-opencode.js.map +1 -0
  11. package/dist/steps/configure-api-keys.d.ts +12 -0
  12. package/dist/steps/configure-api-keys.d.ts.map +1 -0
  13. package/dist/steps/configure-api-keys.js +45 -0
  14. package/dist/steps/configure-api-keys.js.map +1 -0
  15. package/dist/steps/install-agents.d.ts +6 -0
  16. package/dist/steps/install-agents.d.ts.map +1 -0
  17. package/dist/steps/install-agents.js +56 -0
  18. package/dist/steps/install-agents.js.map +1 -0
  19. package/dist/steps/install-commands.d.ts +6 -0
  20. package/dist/steps/install-commands.d.ts.map +1 -0
  21. package/dist/steps/install-commands.js +48 -0
  22. package/dist/steps/install-commands.js.map +1 -0
  23. package/dist/steps/install-skills.d.ts +7 -0
  24. package/dist/steps/install-skills.d.ts.map +1 -0
  25. package/dist/steps/install-skills.js +104 -0
  26. package/dist/steps/install-skills.js.map +1 -0
  27. package/dist/steps/install-superpowers.d.ts +7 -0
  28. package/dist/steps/install-superpowers.d.ts.map +1 -0
  29. package/dist/steps/install-superpowers.js +74 -0
  30. package/dist/steps/install-superpowers.js.map +1 -0
  31. package/dist/steps/select-providers.d.ts +11 -0
  32. package/dist/steps/select-providers.d.ts.map +1 -0
  33. package/dist/steps/select-providers.js +47 -0
  34. package/dist/steps/select-providers.js.map +1 -0
  35. package/dist/steps/setup-minimax-mcp.d.ts +8 -0
  36. package/dist/steps/setup-minimax-mcp.d.ts.map +1 -0
  37. package/dist/steps/setup-minimax-mcp.js +162 -0
  38. package/dist/steps/setup-minimax-mcp.js.map +1 -0
  39. package/dist/steps/verify-installation.d.ts +11 -0
  40. package/dist/steps/verify-installation.d.ts.map +1 -0
  41. package/dist/steps/verify-installation.js +108 -0
  42. package/dist/steps/verify-installation.js.map +1 -0
  43. package/dist/types.d.ts +64 -0
  44. package/dist/types.d.ts.map +1 -0
  45. package/dist/types.js +5 -0
  46. package/dist/types.js.map +1 -0
  47. package/dist/utils/file-writer.d.ts +9 -0
  48. package/dist/utils/file-writer.d.ts.map +1 -0
  49. package/dist/utils/file-writer.js +58 -0
  50. package/dist/utils/file-writer.js.map +1 -0
  51. package/dist/utils/git-clone.d.ts +7 -0
  52. package/dist/utils/git-clone.d.ts.map +1 -0
  53. package/dist/utils/git-clone.js +44 -0
  54. package/dist/utils/git-clone.js.map +1 -0
  55. package/dist/utils/index.d.ts +7 -0
  56. package/dist/utils/index.d.ts.map +1 -0
  57. package/dist/utils/index.js +7 -0
  58. package/dist/utils/index.js.map +1 -0
  59. package/dist/utils/logger.d.ts +8 -0
  60. package/dist/utils/logger.d.ts.map +1 -0
  61. package/dist/utils/logger.js +23 -0
  62. package/dist/utils/logger.js.map +1 -0
  63. package/dist/utils/os-utils.d.ts +20 -0
  64. package/dist/utils/os-utils.d.ts.map +1 -0
  65. package/dist/utils/os-utils.js +127 -0
  66. package/dist/utils/os-utils.js.map +1 -0
  67. package/dist/utils/paths.d.ts +14 -0
  68. package/dist/utils/paths.d.ts.map +1 -0
  69. package/dist/utils/paths.js +38 -0
  70. package/dist/utils/paths.js.map +1 -0
  71. package/dist/utils/validators.d.ts +23 -0
  72. package/dist/utils/validators.d.ts.map +1 -0
  73. package/dist/utils/validators.js +63 -0
  74. package/dist/utils/validators.js.map +1 -0
  75. package/dist/wizard.d.ts +10 -0
  76. package/dist/wizard.d.ts.map +1 -0
  77. package/dist/wizard.js +347 -0
  78. package/dist/wizard.js.map +1 -0
  79. package/package.json +62 -0
  80. package/templates/AGENTS.md +199 -0
  81. package/templates/commands/commit.md +6 -0
  82. package/templates/commands/component.md +9 -0
  83. package/templates/commands/explain.md +7 -0
  84. package/templates/commands/review.md +7 -0
  85. package/templates/commands/test.md +8 -0
  86. package/templates/commands/vibe-select.md +147 -0
  87. package/templates/oh-my-openagent.json +129 -0
  88. package/templates/opencode.template.json +39 -0
  89. package/templates/skills/agent-browser/SKILL.md +25 -0
  90. package/templates/skills/find-skills/SKILL.md +22 -0
  91. package/templates/skills/frontend-design/SKILL.md +18 -0
  92. package/templates/skills/skill-creator/SKILL.md +18 -0
  93. package/templates/skills/superpowers/SKILL.md +45 -0
  94. package/templates/skills/vibe-stack-guardian/SKILL.md +22 -0
@@ -0,0 +1,45 @@
1
+ import inquirer from 'inquirer';
2
+ export async function configureApiKeys(providers) {
3
+ console.log('\nšŸ”‘ Configuring API Keys...\n');
4
+ const apiKeys = {};
5
+ const skipped = [];
6
+ for (const provider of providers) {
7
+ console.log(`\nšŸ“ Configuring ${provider.name}...`);
8
+ const answers = await inquirer.prompt([
9
+ {
10
+ type: 'input',
11
+ name: 'apiKey',
12
+ message: `Enter your ${provider.name} API key:`,
13
+ mask: '*',
14
+ validate: (input) => {
15
+ if (!input || input.trim() === '') {
16
+ return 'API key cannot be empty. Select skip if you want to bypass.';
17
+ }
18
+ if (input.length < 10) {
19
+ return 'API key seems too short. Please check and re-enter.';
20
+ }
21
+ return true;
22
+ },
23
+ },
24
+ {
25
+ type: 'confirm',
26
+ name: 'skip',
27
+ message: 'Skip this provider?',
28
+ default: false,
29
+ },
30
+ ]);
31
+ if (answers.skip) {
32
+ skipped.push(provider.id);
33
+ console.log(` ā­ļø Skipped ${provider.name}`);
34
+ }
35
+ else {
36
+ apiKeys[provider.id] = answers.apiKey.trim();
37
+ console.log(` āœ… ${provider.name} API key configured`);
38
+ }
39
+ }
40
+ console.log('\nšŸ“Š API Key Configuration Summary:');
41
+ console.log(` Configured: ${Object.keys(apiKeys).length} provider(s)`);
42
+ console.log(` Skipped: ${skipped.length} provider(s)`);
43
+ return { apiKeys, skipped };
44
+ }
45
+ //# sourceMappingURL=configure-api-keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configure-api-keys.js","sourceRoot":"","sources":["../../src/steps/configure-api-keys.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAchC,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,SAAqB;IAErB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAE9C,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,oBAAoB,QAAQ,CAAC,IAAI,KAAK,CAAC,CAAC;QAEpD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAGlC;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,cAAc,QAAQ,CAAC,IAAI,WAAW;gBAC/C,IAAI,EAAE,GAAG;gBACT,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;oBAC1B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;wBAClC,OAAO,6DAA6D,CAAC;oBACvE,CAAC;oBACD,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;wBACtB,OAAO,qDAAqD,CAAC;oBAC/D,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;aACF;YACD;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,qBAAqB;gBAC9B,OAAO,EAAE,KAAK;aACf;SACF,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,kBAAkB,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,QAAQ,QAAQ,CAAC,IAAI,qBAAqB,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,kBAAkB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,cAAc,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,eAAe,OAAO,CAAC,MAAM,cAAc,CAAC,CAAC;IAEzD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,6 @@
1
+ export interface InstallAgentsResult {
2
+ success: boolean;
3
+ message: string;
4
+ }
5
+ export declare function installAgents(apiKeys: Record<string, string>): Promise<InstallAgentsResult>;
6
+ //# sourceMappingURL=install-agents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-agents.d.ts","sourceRoot":"","sources":["../../src/steps/install-agents.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAsDjG"}
@@ -0,0 +1,56 @@
1
+ import { copyFileSync, existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
2
+ import { homedir } from 'os';
3
+ import { join, dirname } from 'path';
4
+ import { fileURLToPath } from 'url';
5
+ const __filename = fileURLToPath(import.meta.url);
6
+ const __dirname = dirname(__filename);
7
+ export async function installAgents(apiKeys) {
8
+ console.log('\nšŸ“¦ Installing Agents...\n');
9
+ const configDir = join(homedir(), '.config', 'opencode');
10
+ const templatePath = join(__dirname, '..', 'templates');
11
+ const agentsTemplatePath = join(templatePath, 'oh-my-openagent.json');
12
+ if (!existsSync(configDir)) {
13
+ mkdirSync(configDir, { recursive: true });
14
+ }
15
+ try {
16
+ if (existsSync(agentsTemplatePath)) {
17
+ const templateContent = readFileSync(agentsTemplatePath, 'utf-8');
18
+ let content = templateContent;
19
+ content = content.replace(/\{\{\s*KIMI_API_KEY\s*\}\}/g, apiKeys.kimi || '');
20
+ content = content.replace(/\{\{\s*MINIMAX_API_KEY\s*\}\}/g, apiKeys.minimax || '');
21
+ content = content.replace(/\{\{\s*CLAUDE_API_KEY\s*\}\}/g, apiKeys.claude || '');
22
+ content = content.replace(/KIMI_API_KEY/g, apiKeys.kimi || '');
23
+ content = content.replace(/MINIMAX_API_KEY/g, apiKeys.minimax || '');
24
+ content = content.replace(/CLAUDE_API_KEY/g, apiKeys.claude || '');
25
+ const destPath = join(configDir, 'oh-my-openagent.json');
26
+ writeFileSync(destPath, content);
27
+ console.log('āœ… oh-my-openagent.json installed');
28
+ }
29
+ else {
30
+ console.log('āš ļø Template oh-my-openagent.json not found, skipping');
31
+ }
32
+ const agentsMdTemplate = join(templatePath, 'AGENTS.md');
33
+ const agentsMdDest = join(configDir, 'AGENTS.md');
34
+ if (existsSync(agentsMdTemplate)) {
35
+ copyFileSync(agentsMdTemplate, agentsMdDest);
36
+ console.log('āœ… AGENTS.md installed');
37
+ }
38
+ else {
39
+ console.log('āš ļø Template AGENTS.md not found, skipping');
40
+ }
41
+ console.log('\nāœ… Agents installation completed');
42
+ return {
43
+ success: true,
44
+ message: 'Agents installed successfully',
45
+ };
46
+ }
47
+ catch (error) {
48
+ const errorMessage = error instanceof Error ? error.message : String(error);
49
+ console.error('āŒ Failed to install agents:', errorMessage);
50
+ return {
51
+ success: false,
52
+ message: `Failed to install agents: ${errorMessage}`,
53
+ };
54
+ }
55
+ }
56
+ //# sourceMappingURL=install-agents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-agents.js","sourceRoot":"","sources":["../../src/steps/install-agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACtF,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAOtC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAA+B;IACjE,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAE3C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACzD,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IACxD,MAAM,kBAAkB,GAAG,IAAI,CAAC,YAAY,EAAE,sBAAsB,CAAC,CAAC;IAEtE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC;QACH,IAAI,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACnC,MAAM,eAAe,GAAG,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;YAElE,IAAI,OAAO,GAAG,eAAe,CAAC;YAE9B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,6BAA6B,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YAC7E,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,gCAAgC,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YACnF,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,+BAA+B,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;YACjF,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YAC/D,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YACrE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;YAEnE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;YACzD,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QACzD,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAElD,IAAI,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACjC,YAAY,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC5D,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACjD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,+BAA+B;SACzC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,YAAY,CAAC,CAAC;QAC3D,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,6BAA6B,YAAY,EAAE;SACrD,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ export interface InstallCommandsResult {
2
+ installed: string[];
3
+ failed: string[];
4
+ }
5
+ export declare function installCommands(): Promise<InstallCommandsResult>;
6
+ //# sourceMappingURL=install-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-commands.d.ts","sourceRoot":"","sources":["../../src/steps/install-commands.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAqCtE"}
@@ -0,0 +1,48 @@
1
+ import { copyFileSync, existsSync, mkdirSync } from 'fs';
2
+ import { homedir } from 'os';
3
+ import { join, dirname } from 'path';
4
+ import { fileURLToPath } from 'url';
5
+ const __filename = fileURLToPath(import.meta.url);
6
+ const __dirname = dirname(__filename);
7
+ const COMMANDS_TO_INSTALL = [
8
+ 'commit.md',
9
+ 'component.md',
10
+ 'explain.md',
11
+ 'review.md',
12
+ 'test.md',
13
+ 'vibe-select.md',
14
+ ];
15
+ export async function installCommands() {
16
+ console.log('\n⚔ Installing Commands...\n');
17
+ const configDir = join(homedir(), '.config', 'opencode');
18
+ const commandsDir = join(configDir, 'commands');
19
+ const templatePath = join(__dirname, '..', 'templates', 'commands');
20
+ if (!existsSync(commandsDir)) {
21
+ mkdirSync(commandsDir, { recursive: true });
22
+ }
23
+ const installed = [];
24
+ const failed = [];
25
+ for (const command of COMMANDS_TO_INSTALL) {
26
+ const srcPath = join(templatePath, command);
27
+ const destPath = join(commandsDir, command);
28
+ try {
29
+ if (existsSync(srcPath)) {
30
+ copyFileSync(srcPath, destPath);
31
+ installed.push(command);
32
+ console.log(` āœ… ${command}`);
33
+ }
34
+ else {
35
+ failed.push(command);
36
+ console.log(` āš ļø ${command} - template not found`);
37
+ }
38
+ }
39
+ catch (error) {
40
+ failed.push(command);
41
+ console.log(` āŒ ${command} - ${error instanceof Error ? error.message : String(error)}`);
42
+ }
43
+ }
44
+ console.log(`\nšŸ“Š Commands Installation Summary:`);
45
+ console.log(` Installed: ${installed.length}/${COMMANDS_TO_INSTALL.length}`);
46
+ return { installed, failed };
47
+ }
48
+ //# sourceMappingURL=install-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-commands.js","sourceRoot":"","sources":["../../src/steps/install-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,MAAM,mBAAmB,GAAG;IAC1B,WAAW;IACX,cAAc;IACd,YAAY;IACZ,WAAW;IACX,SAAS;IACT,gBAAgB;CACjB,CAAC;AAOF,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAE5C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACzD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAChD,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IAEpE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,KAAK,MAAM,OAAO,IAAI,mBAAmB,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAE5C,IAAI,CAAC;YACH,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxB,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAChC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,QAAQ,OAAO,EAAE,CAAC,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACrB,OAAO,CAAC,GAAG,CAAC,UAAU,OAAO,uBAAuB,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,QAAQ,OAAO,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,iBAAiB,SAAS,CAAC,MAAM,IAAI,mBAAmB,CAAC,MAAM,EAAE,CAAC,CAAC;IAE/E,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,7 @@
1
+ export interface InstallSkillsResult {
2
+ installed: string[];
3
+ failed: string[];
4
+ skipped: string[];
5
+ }
6
+ export declare function installSkills(): Promise<InstallSkillsResult>;
7
+ //# sourceMappingURL=install-skills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-skills.d.ts","sourceRoot":"","sources":["../../src/steps/install-skills.ts"],"names":[],"mappings":"AAyBA,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,mBAAmB,CAAC,CA2FlE"}
@@ -0,0 +1,104 @@
1
+ import { copyFileSync, existsSync, mkdirSync, readdirSync } from 'fs';
2
+ import { join, dirname } from 'path';
3
+ import { fileURLToPath } from 'url';
4
+ import inquirer from 'inquirer';
5
+ import { SKILLS_DIR, TEMPLATES_DIR, ensureDir } from '../utils/paths';
6
+ const __filename = fileURLToPath(import.meta.url);
7
+ const __dirname = dirname(__filename);
8
+ const CORE_SKILLS = [
9
+ 'superpowers',
10
+ 'frontend-design',
11
+ 'skill-creator',
12
+ 'agent-browser',
13
+ 'find-skills',
14
+ 'vibe-stack-guardian',
15
+ ];
16
+ const OPTIONAL_SKILLS = [
17
+ {
18
+ name: 'lingjing-ux-core',
19
+ description: 'Lingjing Aviation Intelligence Platform UX skill (proprietary business logic)',
20
+ },
21
+ ];
22
+ export async function installSkills() {
23
+ console.log('\nšŸ› ļø Installing Skills...\n');
24
+ await ensureDir(SKILLS_DIR);
25
+ const templatePath = join(TEMPLATES_DIR, 'skills');
26
+ const installed = [];
27
+ const failed = [];
28
+ const skipped = [];
29
+ console.log('šŸ“¦ Installing Core Skills (6 skills):');
30
+ for (const skill of CORE_SKILLS) {
31
+ const skillTemplatePath = join(templatePath, skill);
32
+ const skillDestPath = join(SKILLS_DIR, skill);
33
+ try {
34
+ if (existsSync(skillTemplatePath)) {
35
+ const skillFiles = readdirSync(skillTemplatePath);
36
+ for (const file of skillFiles) {
37
+ const srcFile = join(skillTemplatePath, file);
38
+ const destFile = join(skillDestPath, file);
39
+ if (!existsSync(skillDestPath)) {
40
+ mkdirSync(skillDestPath, { recursive: true });
41
+ }
42
+ copyFileSync(srcFile, destFile);
43
+ }
44
+ installed.push(skill);
45
+ console.log(` āœ… ${skill}`);
46
+ }
47
+ else {
48
+ failed.push(skill);
49
+ console.log(` āš ļø ${skill} - template not found`);
50
+ }
51
+ }
52
+ catch (error) {
53
+ failed.push(skill);
54
+ console.log(` āŒ ${skill} - ${error instanceof Error ? error.message : String(error)}`);
55
+ }
56
+ }
57
+ console.log('\nšŸ“¦ Optional Skills:');
58
+ for (const skill of OPTIONAL_SKILLS) {
59
+ const { shouldInstall } = await inquirer.prompt([
60
+ {
61
+ type: 'confirm',
62
+ name: 'shouldInstall',
63
+ message: `Install ${skill.name}? (${skill.description})`,
64
+ default: false,
65
+ },
66
+ ]);
67
+ if (!shouldInstall) {
68
+ skipped.push(skill.name);
69
+ console.log(` ā­ļø ${skill.name} (skipped)`);
70
+ continue;
71
+ }
72
+ const skillTemplatePath = join(templatePath, skill.name);
73
+ const skillDestPath = join(SKILLS_DIR, skill.name);
74
+ try {
75
+ if (existsSync(skillTemplatePath)) {
76
+ const skillFiles = readdirSync(skillTemplatePath);
77
+ for (const file of skillFiles) {
78
+ const srcFile = join(skillTemplatePath, file);
79
+ const destFile = join(skillDestPath, file);
80
+ if (!existsSync(skillDestPath)) {
81
+ mkdirSync(skillDestPath, { recursive: true });
82
+ }
83
+ copyFileSync(srcFile, destFile);
84
+ }
85
+ installed.push(skill.name);
86
+ console.log(` āœ… ${skill.name}`);
87
+ }
88
+ else {
89
+ failed.push(skill.name);
90
+ console.log(` āš ļø ${skill.name} - template not found`);
91
+ }
92
+ }
93
+ catch (error) {
94
+ failed.push(skill.name);
95
+ console.log(` āŒ ${skill.name} - ${error instanceof Error ? error.message : String(error)}`);
96
+ }
97
+ }
98
+ console.log(`\nšŸ“Š Skills Installation Summary:`);
99
+ console.log(` Installed: ${installed.length}`);
100
+ console.log(` Skipped: ${skipped.length}`);
101
+ console.log(` Failed: ${failed.length}`);
102
+ return { installed, failed, skipped };
103
+ }
104
+ //# sourceMappingURL=install-skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-skills.js","sourceRoot":"","sources":["../../src/steps/install-skills.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export interface InstallSuperpowersResult {
2
+ success: boolean;
3
+ message: string;
4
+ installed: boolean;
5
+ }
6
+ export declare function installSuperpowers(): Promise<InstallSuperpowersResult>;
7
+ //# sourceMappingURL=install-superpowers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-superpowers.d.ts","sourceRoot":"","sources":["../../src/steps/install-superpowers.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;CACpB;AAID,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,wBAAwB,CAAC,CA6E5E"}
@@ -0,0 +1,74 @@
1
+ import { execSync } from 'child_process';
2
+ import { existsSync } from 'fs';
3
+ import { SUPERPOWERS_DIR, OPENCODE_CONFIG_DIR, ensureDir } from '../utils/paths';
4
+ import { commandExists } from '../utils/os-utils';
5
+ const SUPERPOWERS_URL = 'https://github.com/opencode-ai/superpowers.git';
6
+ export async function installSuperpowers() {
7
+ console.log('\n⚔ Installing Superpowers (Required)...\n');
8
+ console.log('ā„¹ļø Superpowers is a required component containing 14 workflow skills\n');
9
+ if (!commandExists('git')) {
10
+ return {
11
+ success: false,
12
+ installed: false,
13
+ message: 'Git is not installed. Please install Git first: https://git-scm.com/downloads',
14
+ };
15
+ }
16
+ await ensureDir(OPENCODE_CONFIG_DIR);
17
+ if (existsSync(SUPERPOWERS_DIR)) {
18
+ console.log('šŸ“ Superpowers directory already exists');
19
+ try {
20
+ execSync('git -C "' + SUPERPOWERS_DIR + '" rev-parse', { stdio: 'pipe' });
21
+ console.log('āœ… Superpowers is already a git repository');
22
+ console.log('šŸ“¦ Updating git submodules...');
23
+ execSync('git submodule update --init --recursive', {
24
+ cwd: SUPERPOWERS_DIR,
25
+ stdio: 'inherit',
26
+ timeout: 300000,
27
+ });
28
+ return {
29
+ success: true,
30
+ installed: false,
31
+ message: 'Superpowers already installed, submodules updated',
32
+ };
33
+ }
34
+ catch {
35
+ return {
36
+ success: false,
37
+ installed: false,
38
+ message: 'Superpowers directory exists but is not a git repository. Please remove it and try again.',
39
+ };
40
+ }
41
+ }
42
+ try {
43
+ console.log(`šŸ“„ Cloning superpowers from ${SUPERPOWERS_URL}...`);
44
+ console.log('ā³ This may take a few minutes...\n');
45
+ execSync('git clone "' + SUPERPOWERS_URL + '" "' + SUPERPOWERS_DIR + '"', {
46
+ stdio: 'inherit',
47
+ timeout: 300000,
48
+ });
49
+ console.log('\nšŸ“¦ Initializing git submodules (14 skills)...');
50
+ console.log('ā³ This may take a few minutes...\n');
51
+ execSync('git submodule update --init --recursive', {
52
+ cwd: SUPERPOWERS_DIR,
53
+ stdio: 'inherit',
54
+ timeout: 300000,
55
+ });
56
+ console.log('\nāœ… Superpowers installed successfully');
57
+ console.log(' šŸ“š 14 workflow skills ready to use');
58
+ return {
59
+ success: true,
60
+ installed: true,
61
+ message: 'Superpowers cloned and submodules initialized',
62
+ };
63
+ }
64
+ catch (error) {
65
+ const errorMessage = error instanceof Error ? error.message : String(error);
66
+ console.error('\nāŒ Failed to install superpowers:', errorMessage);
67
+ return {
68
+ success: false,
69
+ installed: false,
70
+ message: `Failed to install superpowers: ${errorMessage}`,
71
+ };
72
+ }
73
+ }
74
+ //# sourceMappingURL=install-superpowers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-superpowers.js","sourceRoot":"","sources":["../../src/steps/install-superpowers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export interface Provider {
2
+ id: string;
3
+ name: string;
4
+ modelId: string;
5
+ }
6
+ export declare const AVAILABLE_PROVIDERS: Provider[];
7
+ export interface SelectProvidersResult {
8
+ selectedProviders: Provider[];
9
+ }
10
+ export declare function selectProviders(): Promise<SelectProvidersResult>;
11
+ //# sourceMappingURL=select-providers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select-providers.d.ts","sourceRoot":"","sources":["../../src/steps/select-providers.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,mBAAmB,EAAE,QAAQ,EAgBzC,CAAC;AAEF,MAAM,WAAW,qBAAqB;IACpC,iBAAiB,EAAE,QAAQ,EAAE,CAAC;CAC/B;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAkCtE"}
@@ -0,0 +1,47 @@
1
+ import inquirer from 'inquirer';
2
+ export const AVAILABLE_PROVIDERS = [
3
+ {
4
+ id: 'kimi',
5
+ name: 'Kimi',
6
+ modelId: 'moonshotai-cn/kimi-k2.5',
7
+ },
8
+ {
9
+ id: 'minimax',
10
+ name: 'MiniMax',
11
+ modelId: 'minimax-cn-coding-plan/MiniMax-M2.7-highspeed',
12
+ },
13
+ {
14
+ id: 'claude',
15
+ name: 'Claude',
16
+ modelId: 'anthropic/claude-sonnet-4-20250514',
17
+ },
18
+ ];
19
+ export async function selectProviders() {
20
+ console.log('\nšŸ“‹ Selecting AI Providers...\n');
21
+ const choices = AVAILABLE_PROVIDERS.map((provider) => ({
22
+ name: `${provider.name} (${provider.modelId})`,
23
+ value: provider.id,
24
+ checked: false,
25
+ }));
26
+ const answers = await inquirer.prompt([
27
+ {
28
+ type: 'checkbox',
29
+ name: 'providers',
30
+ message: 'Select the AI providers you want to configure:',
31
+ choices,
32
+ validate: (answer) => {
33
+ if (answer.length === 0) {
34
+ return 'Please select at least one provider, or cancel to skip.';
35
+ }
36
+ return true;
37
+ },
38
+ },
39
+ ]);
40
+ const selectedProviders = AVAILABLE_PROVIDERS.filter((p) => answers.providers.includes(p.id));
41
+ console.log(`\nāœ… Selected ${selectedProviders.length} provider(s):`);
42
+ selectedProviders.forEach((p) => {
43
+ console.log(` - ${p.name}`);
44
+ });
45
+ return { selectedProviders };
46
+ }
47
+ //# sourceMappingURL=select-providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select-providers.js","sourceRoot":"","sources":["../../src/steps/select-providers.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAQhC,MAAM,CAAC,MAAM,mBAAmB,GAAe;IAC7C;QACE,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,yBAAyB;KACnC;IACD;QACE,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,+CAA+C;KACzD;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,oCAAoC;KAC9C;CACF,CAAC;AAMF,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAEhD,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACrD,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,OAAO,GAAG;QAC9C,KAAK,EAAE,QAAQ,CAAC,EAAE;QAClB,OAAO,EAAE,KAAK;KACf,CAAC,CAAC,CAAC;IAEJ,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAA0B;QAC7D;YACE,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,gDAAgD;YACzD,OAAO;YACP,QAAQ,EAAE,CAAC,MAAgB,EAAE,EAAE;gBAC7B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACxB,OAAO,yDAAyD,CAAC;gBACnE,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;SACF;KACF,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACzD,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CACjC,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,gBAAgB,iBAAiB,CAAC,MAAM,eAAe,CAAC,CAAC;IACrE,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAC9B,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,8 @@
1
+ export interface SetupMinimaxMcpResult {
2
+ success: boolean;
3
+ installed: boolean;
4
+ message: string;
5
+ uvInstalled: boolean;
6
+ }
7
+ export declare function setupMinimaxMcp(): Promise<SetupMinimaxMcpResult>;
8
+ //# sourceMappingURL=setup-minimax-mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-minimax-mcp.d.ts","sourceRoot":"","sources":["../../src/steps/setup-minimax-mcp.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;CACtB;AAmDD,wBAAsB,eAAe,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAuHtE"}