my-opencode-config 0.1.0-beta.1

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 (42) hide show
  1. package/README.md +53 -0
  2. package/dist/commands/auth.d.ts +8 -0
  3. package/dist/commands/auth.d.ts.map +1 -0
  4. package/dist/commands/auth.js +148 -0
  5. package/dist/commands/auth.js.map +1 -0
  6. package/dist/commands/config-templates.d.ts +4 -0
  7. package/dist/commands/config-templates.d.ts.map +1 -0
  8. package/dist/commands/config-templates.js +76 -0
  9. package/dist/commands/config-templates.js.map +1 -0
  10. package/dist/commands/models.d.ts +8 -0
  11. package/dist/commands/models.d.ts.map +1 -0
  12. package/dist/commands/models.js +126 -0
  13. package/dist/commands/models.js.map +1 -0
  14. package/dist/commands/plugins.d.ts +3 -0
  15. package/dist/commands/plugins.d.ts.map +1 -0
  16. package/dist/commands/plugins.js +27 -0
  17. package/dist/commands/plugins.js.map +1 -0
  18. package/dist/index.d.ts +3 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +225 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/types.d.ts +53 -0
  23. package/dist/types.d.ts.map +1 -0
  24. package/dist/types.js +3 -0
  25. package/dist/types.js.map +1 -0
  26. package/dist/utils/config.d.ts +10 -0
  27. package/dist/utils/config.d.ts.map +1 -0
  28. package/dist/utils/config.js +153 -0
  29. package/dist/utils/config.js.map +1 -0
  30. package/dist/utils/logging.d.ts +16 -0
  31. package/dist/utils/logging.d.ts.map +1 -0
  32. package/dist/utils/logging.js +110 -0
  33. package/dist/utils/logging.js.map +1 -0
  34. package/dist/utils/opencode.d.ts +12 -0
  35. package/dist/utils/opencode.d.ts.map +1 -0
  36. package/dist/utils/opencode.js +142 -0
  37. package/dist/utils/opencode.js.map +1 -0
  38. package/dist/utils/prompts.d.ts +6 -0
  39. package/dist/utils/prompts.d.ts.map +1 -0
  40. package/dist/utils/prompts.js +72 -0
  41. package/dist/utils/prompts.js.map +1 -0
  42. package/package.json +43 -0
package/README.md ADDED
@@ -0,0 +1,53 @@
1
+ # my-opencode-config
2
+
3
+ > An interactive setup wizard to configure OpenCode with powerful free models and essential tools.
4
+
5
+ [![npm version](https://img.shields.io/npm/v/my-opencode-config.svg)](https://www.npmjs.com/package/my-opencode-config)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
7
+
8
+ ## Why It Exists
9
+
10
+ OpenCode is powerful, but unlocking its full potential with free, high-quality models can be complex. This wizard automates the entire setup—from authentication to plugin installation—so you can get a supercharged, cost-effective OpenCode environment running in minutes, not hours.
11
+
12
+ Its sole purpose is to make OpenCode great for free by leveraging OpenCode Zen models and Gemini free tier limits, providing a generous allowance for daily, medium-complexity tasks.
13
+
14
+ ## Quick Start
15
+
16
+ Run the setup wizard directly without installation. This is the fastest way to get started.
17
+
18
+ ```bash
19
+ npx my-opencode-config
20
+ ```
21
+
22
+ ## Key Features
23
+
24
+ - 🔮 **Intelligent Model Discovery**: Finds and recommends the best-performing free models from OpenCode Zen.
25
+ - 🔌 **Essential Plugins**: Installs and configures the popular `oh-my-opencode` agent harness to put your agent on steroids.
26
+ - 🚀 **Superpowers Included**: Integrates the `superpowers` skill set for advanced agent capabilities.
27
+ - 🔐 **Seamless Authentication**: Handles OAuth for OpenCode Zen and Google Gemini.
28
+ - ⚙️ **Smart Configuration**: Sets up the GitHub MCP and configures agents to use free models by default.
29
+
30
+ ## Prerequisites
31
+
32
+ - **Node.js**: `v18.0.0` or higher.
33
+ - **OpenCode**: An existing installation is required.
34
+
35
+ ## Installation
36
+
37
+ Alternatively, you can install the CLI globally for easier access.
38
+
39
+ ```bash
40
+ npm install -g my-opencode-config
41
+ ```
42
+ Then, run the wizard:
43
+ ```bash
44
+ my-opencode-config
45
+ ```
46
+
47
+ ## References
48
+
49
+ This tool stands on the shoulders of giants. Check out the projects that make it possible:
50
+
51
+ - **OpenCode**: [https://github.com/anomalyco/opencode](https://github.com/anomalyco/opencode)
52
+ - **oh-my-openagent**: [https://github.com/code-yeongyu/oh-my-openagent](https://github.com/code-yeongyu/oh-my-openagent)
53
+ - **Superpowers**: [https://github.com/obra/superpowers](https://github.com/obra/superpowers)
@@ -0,0 +1,8 @@
1
+ import { AuthStatus } from '../types';
2
+ export declare function isAuthenticated(provider: 'zen' | 'gemini'): Promise<boolean>;
3
+ export declare function getAuthStatus(): Promise<AuthStatus>;
4
+ export declare function authenticateZen(): Promise<void>;
5
+ export declare function authenticateGemini(): Promise<void>;
6
+ export declare function authenticateAll(): Promise<void>;
7
+ export declare function authenticateIfNeeded(): Promise<void>;
8
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAItC,wBAAsB,eAAe,CAAC,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAelF;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC,CAOzD;AAqBD,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAerD;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAexD;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAGrD;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAuB1D"}
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.isAuthenticated = isAuthenticated;
37
+ exports.getAuthStatus = getAuthStatus;
38
+ exports.authenticateZen = authenticateZen;
39
+ exports.authenticateGemini = authenticateGemini;
40
+ exports.authenticateAll = authenticateAll;
41
+ exports.authenticateIfNeeded = authenticateIfNeeded;
42
+ const child_process_1 = require("child_process");
43
+ const fs = __importStar(require("fs/promises"));
44
+ const path = __importStar(require("path"));
45
+ const os = __importStar(require("os"));
46
+ const AUTH_FILE = path.join(os.homedir(), '.local', 'share', 'opencode', 'auth.json');
47
+ async function isAuthenticated(provider) {
48
+ try {
49
+ const content = await fs.readFile(AUTH_FILE, 'utf-8');
50
+ const auth = JSON.parse(content);
51
+ if (provider === 'zen') {
52
+ return !!(auth.opencode || auth.zen);
53
+ }
54
+ if (provider === 'gemini') {
55
+ return !!(auth.google);
56
+ }
57
+ return false;
58
+ }
59
+ catch {
60
+ return false;
61
+ }
62
+ }
63
+ async function getAuthStatus() {
64
+ const [zen, gemini] = await Promise.all([
65
+ isAuthenticated('zen'),
66
+ isAuthenticated('gemini'),
67
+ ]);
68
+ return { zen, gemini };
69
+ }
70
+ function spawnOpencodeConnect() {
71
+ return new Promise((resolve, reject) => {
72
+ const proc = (0, child_process_1.spawn)('opencode', ['/connect'], {
73
+ stdio: 'inherit',
74
+ shell: true,
75
+ });
76
+ proc.on('close', (code) => {
77
+ if (code === 0) {
78
+ resolve();
79
+ }
80
+ else {
81
+ reject(new Error(`opencode /connect exited with code ${code}`));
82
+ }
83
+ });
84
+ proc.on('error', reject);
85
+ });
86
+ }
87
+ async function authenticateZen() {
88
+ console.log('\n🔐 Authenticating with OpenCode Zen...');
89
+ console.log('Please follow the prompts in the OpenCode window.\n');
90
+ try {
91
+ await spawnOpencodeConnect();
92
+ console.log('✅ Zen authentication complete!\n');
93
+ }
94
+ catch (error) {
95
+ if (error.message?.includes('exited with code')) {
96
+ console.log('⚠️ Authentication was cancelled or failed.');
97
+ console.log(' You can run "opencode /connect" later to authenticate.\n');
98
+ }
99
+ else {
100
+ throw error;
101
+ }
102
+ }
103
+ }
104
+ async function authenticateGemini() {
105
+ console.log('\n🔐 Authenticating with Google Gemini...');
106
+ console.log('Please follow the prompts in the OpenCode window.\n');
107
+ try {
108
+ await spawnOpencodeConnect();
109
+ console.log('✅ Gemini authentication complete!\n');
110
+ }
111
+ catch (error) {
112
+ if (error.message?.includes('exited with code')) {
113
+ console.log('⚠️ Authentication was cancelled or failed.');
114
+ console.log(' You can run "opencode /connect" later to authenticate.\n');
115
+ }
116
+ else {
117
+ throw error;
118
+ }
119
+ }
120
+ }
121
+ async function authenticateAll() {
122
+ await authenticateZen();
123
+ await authenticateGemini();
124
+ }
125
+ async function authenticateIfNeeded() {
126
+ const status = await getAuthStatus();
127
+ // If already fully authenticated, skip
128
+ if (status.zen && status.gemini) {
129
+ console.log('✅ Already authenticated for all providers');
130
+ return;
131
+ }
132
+ // Show which providers need authentication
133
+ const missing = [];
134
+ if (!status.zen)
135
+ missing.push('OpenCode Zen');
136
+ if (!status.gemini)
137
+ missing.push('Google Gemini');
138
+ console.log(`\n📋 Providers to authenticate: ${missing.join(', ')}\n`);
139
+ // Spawn /connect ONCE (user can select multiple providers)
140
+ await spawnOpencodeConnect();
141
+ // Re-check and report
142
+ const newStatus = await getAuthStatus();
143
+ if (newStatus.zen && !status.zen)
144
+ console.log('✅ Zen authenticated');
145
+ if (newStatus.gemini && !status.gemini)
146
+ console.log('✅ Gemini authenticated');
147
+ }
148
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { UserSelections } from '../types';
2
+ export declare function generateOpencodeConfig(selections: UserSelections, existing?: any): object;
3
+ export declare function generateOhMyOpencodeConfig(selections: UserSelections, existing?: any): object;
4
+ //# sourceMappingURL=config-templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-templates.d.ts","sourceRoot":"","sources":["../../src/commands/config-templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG1C,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,cAAc,EAAE,QAAQ,GAAE,GAAQ,GAAG,MAAM,CA0C7F;AAED,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,cAAc,EAAE,QAAQ,GAAE,GAAQ,GAAG,MAAM,CA4BjG"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateOpencodeConfig = generateOpencodeConfig;
4
+ exports.generateOhMyOpencodeConfig = generateOhMyOpencodeConfig;
5
+ const config_1 = require("../utils/config");
6
+ function generateOpencodeConfig(selections, existing = {}) {
7
+ const updates = {
8
+ $schema: 'https://opencode.ai/config.json',
9
+ enabled_providers: ['opencode', 'google'],
10
+ disabled_providers: ['anthropic', 'openai', 'cloudflare-ai-gateway', 'azure', 'deepseek'],
11
+ model: selections.mainModel,
12
+ small_model: selections.smallModel,
13
+ plugin: [
14
+ 'opencode-gemini-auth@latest',
15
+ 'oh-my-opencode@latest'
16
+ ],
17
+ provider: {
18
+ google: {
19
+ models: {
20
+ 'gemini-2.5-flash': {
21
+ options: {
22
+ thinkingConfig: {
23
+ includeThoughts: true,
24
+ thinkingBudget: 8192
25
+ }
26
+ }
27
+ },
28
+ 'gemini-2.5-pro': {
29
+ options: {
30
+ thinkingConfig: {
31
+ includeThoughts: true,
32
+ thinkingBudget: 8192
33
+ }
34
+ }
35
+ }
36
+ }
37
+ },
38
+ opencode: {
39
+ models: {
40
+ [selections.mainModel.replace('opencode/', '')]: {},
41
+ [selections.smallModel.replace('opencode/', '')]: {},
42
+ }
43
+ }
44
+ }
45
+ };
46
+ return (0, config_1.mergeConfigs)(existing, updates);
47
+ }
48
+ function generateOhMyOpencodeConfig(selections, existing = {}) {
49
+ const updates = {
50
+ $schema: 'https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/master/assets/oh-my-opencode.schema.json',
51
+ agents: {
52
+ sisyphus: { model: selections.fastAgentModel, variant: 'max' },
53
+ hephaestus: { model: selections.fastAgentModel, variant: 'max' },
54
+ oracle: { model: selections.powerfulAgentModel, variant: 'high' },
55
+ librarian: { model: selections.fastAgentModel },
56
+ explore: { model: selections.fastAgentModel },
57
+ 'multimodal-looker': { model: selections.powerfulAgentModel },
58
+ prometheus: { model: selections.fastAgentModel, variant: 'max' },
59
+ metis: { model: selections.fastAgentModel, variant: 'max' },
60
+ momus: { model: selections.powerfulAgentModel, variant: 'medium' },
61
+ atlas: { model: selections.fastAgentModel }
62
+ },
63
+ categories: {
64
+ 'visual-engineering': { model: selections.powerfulAgentModel, variant: 'high' },
65
+ ultrabrain: { model: selections.powerfulAgentModel, variant: 'high' },
66
+ deep: { model: selections.powerfulAgentModel, variant: 'high' },
67
+ artistry: { model: selections.powerfulAgentModel, variant: 'high' },
68
+ quick: { model: selections.fastAgentModel },
69
+ 'unspecified-low': { model: selections.fastAgentModel },
70
+ 'unspecified-high': { model: selections.powerfulAgentModel },
71
+ writing: { model: selections.powerfulAgentModel }
72
+ }
73
+ };
74
+ return (0, config_1.mergeConfigs)(existing, updates);
75
+ }
76
+ //# sourceMappingURL=config-templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-templates.js","sourceRoot":"","sources":["../../src/commands/config-templates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { Model } from '../types';
2
+ export declare function fetchZenModels(): Promise<Model[]>;
3
+ export declare function getGeminiModels(): Model[];
4
+ export declare function fetchAllModels(): Promise<{
5
+ zen: Model[];
6
+ gemini: Model[];
7
+ }>;
8
+ //# sourceMappingURL=models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/commands/models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAqB,MAAM,UAAU,CAAC;AAyCpD,wBAAsB,cAAc,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,CA8DvD;AAED,wBAAgB,eAAe,IAAI,KAAK,EAAE,CAOzC;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC;IAAE,GAAG,EAAE,KAAK,EAAE,CAAC;IAAC,MAAM,EAAE,KAAK,EAAE,CAAA;CAAE,CAAC,CAOjF"}
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchZenModels = fetchZenModels;
4
+ exports.getGeminiModels = getGeminiModels;
5
+ exports.fetchAllModels = fetchAllModels;
6
+ const child_process_1 = require("child_process");
7
+ const util_1 = require("util");
8
+ const execAsync = (0, util_1.promisify)(child_process_1.exec);
9
+ // Calculate score based on capabilities
10
+ function calculateScore(capabilities) {
11
+ if (!capabilities)
12
+ return 10;
13
+ let score = 10; // Base score
14
+ if (capabilities.reasoning)
15
+ score += 5;
16
+ if (capabilities.thinking)
17
+ score += 10;
18
+ if (capabilities.toolcall)
19
+ score += 5;
20
+ if (capabilities.attachment)
21
+ score += 5;
22
+ if (capabilities.input?.image)
23
+ score += 3;
24
+ if (capabilities.variants?.high)
25
+ score += 3;
26
+ if (capabilities.variants?.max)
27
+ score += 3;
28
+ if ((capabilities.limit?.context ?? 0) > 100000)
29
+ score += 3;
30
+ if ((capabilities.limit?.output ?? 0) > 100000)
31
+ score += 3;
32
+ return score;
33
+ }
34
+ // Known free Zen models (as fallback)
35
+ const KNOWN_ZEN_FREE_MODELS = [
36
+ { id: 'minimax-m2.5-free', name: 'MiniMax M2.5 Free' },
37
+ { id: 'zen-free', name: 'Zen Free' },
38
+ { id: 'glm-5-free', name: 'GLM-5 Free' },
39
+ ];
40
+ // Known Gemini models
41
+ const KNOWN_GEMINI_MODELS = [
42
+ { id: 'gemini-2.5-flash', name: 'Gemini 2.5 Flash', recommended: true },
43
+ { id: 'gemini-2.5-pro', name: 'Gemini 2.5 Pro' },
44
+ { id: 'gemini-2.0-flash', name: 'Gemini 2.0 Flash' },
45
+ { id: 'gemini-1.5-flash', name: 'Gemini 1.5 Flash' },
46
+ { id: 'gemini-1.5-pro', name: 'Gemini 1.5 Pro' },
47
+ ];
48
+ async function fetchZenModels() {
49
+ // Try to fetch from opencode CLI command - fallback to hardcoded list
50
+ try {
51
+ const { stdout } = await execAsync('opencode models opencode --verbose', {
52
+ timeout: 30000,
53
+ });
54
+ // Output format: "opencode/model-id\n{...json...}\nopencode/model-id\n{...json...}"
55
+ const parts = stdout.split(/^opencode\//m);
56
+ const models = [];
57
+ for (const part of parts) {
58
+ if (!part.trim())
59
+ continue;
60
+ const start = part.indexOf('{');
61
+ if (start >= 0) {
62
+ let braceCount = 0;
63
+ let end = start;
64
+ for (let i = start; i < part.length; i++) {
65
+ if (part[i] === '{')
66
+ braceCount++;
67
+ else if (part[i] === '}')
68
+ braceCount--;
69
+ if (braceCount === 0) {
70
+ end = i + 1;
71
+ break;
72
+ }
73
+ }
74
+ try {
75
+ models.push(JSON.parse(part.slice(start, end)));
76
+ }
77
+ catch {
78
+ // Skip invalid JSON for this model
79
+ }
80
+ }
81
+ }
82
+ const parsedModels = models
83
+ .filter((m) => m.cost?.input === 0 && m.cost?.output === 0)
84
+ .map((m) => {
85
+ const capabilities = m.capabilities;
86
+ return {
87
+ id: m.id,
88
+ name: m.name || m.id,
89
+ provider: 'zen',
90
+ isFree: true,
91
+ capabilities,
92
+ score: calculateScore(capabilities),
93
+ };
94
+ });
95
+ // Find max score and mark all models with that score as recommended
96
+ const maxScore = Math.max(...parsedModels.map(m => m.score ?? 10));
97
+ return parsedModels.map(m => ({
98
+ ...m,
99
+ isRecommended: (m.score ?? 10) === maxScore,
100
+ }));
101
+ }
102
+ catch {
103
+ // Fallback to known models
104
+ }
105
+ return KNOWN_ZEN_FREE_MODELS.map(m => ({
106
+ ...m,
107
+ provider: 'zen',
108
+ isFree: true,
109
+ }));
110
+ }
111
+ function getGeminiModels() {
112
+ return KNOWN_GEMINI_MODELS.map(m => ({
113
+ id: m.id,
114
+ name: m.name,
115
+ provider: 'google',
116
+ isRecommended: m.recommended,
117
+ }));
118
+ }
119
+ async function fetchAllModels() {
120
+ const [zen, gemini] = await Promise.all([
121
+ fetchZenModels(),
122
+ Promise.resolve(getGeminiModels()),
123
+ ]);
124
+ return { zen, gemini };
125
+ }
126
+ //# sourceMappingURL=models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/commands/models.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function getRequiredPlugins(): string[];
2
+ export declare function mergePluginConfig(existingPlugins: string[] | undefined, required: string[]): string[];
3
+ //# sourceMappingURL=plugins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/commands/plugins.ts"],"names":[],"mappings":"AACA,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAK7C;AAGD,wBAAgB,iBAAiB,CAAC,eAAe,EAAE,MAAM,EAAE,YAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAgB9F"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getRequiredPlugins = getRequiredPlugins;
4
+ exports.mergePluginConfig = mergePluginConfig;
5
+ // Required plugins for OpenCode
6
+ function getRequiredPlugins() {
7
+ return [
8
+ 'opencode-gemini-auth@latest',
9
+ 'oh-my-opencode@latest',
10
+ ];
11
+ }
12
+ // Merge plugins - add required if missing
13
+ function mergePluginConfig(existingPlugins = [], required) {
14
+ const existing = new Set(existingPlugins);
15
+ const merged = [...existingPlugins];
16
+ for (const plugin of required) {
17
+ const baseName = plugin.replace(/@latest$/, '');
18
+ const hasPlugin = existing.has(plugin) ||
19
+ existing.has(baseName) ||
20
+ existing.has(`${baseName}@latest`);
21
+ if (!hasPlugin) {
22
+ merged.push(plugin);
23
+ }
24
+ }
25
+ return merged;
26
+ }
27
+ //# sourceMappingURL=plugins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/commands/plugins.ts"],"names":[],"mappings":";;AACA,gDAKC;AAGD,8CAgBC;AAzBD,gCAAgC;AAChC,SAAgB,kBAAkB;IAChC,OAAO;QACL,6BAA6B;QAC7B,uBAAuB;KACxB,CAAC;AACJ,CAAC;AAED,0CAA0C;AAC1C,SAAgB,iBAAiB,CAAC,kBAA4B,EAAE,EAAE,QAAkB;IAClF,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,CAAC,GAAG,eAAe,CAAC,CAAC;IAEpC,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;YACpB,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;YACtB,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,SAAS,CAAC,CAAC;QAErD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}