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/dist/index.js ADDED
@@ -0,0 +1,225 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ const prompts_1 = require("@clack/prompts");
38
+ const opencode_1 = require("./utils/opencode");
39
+ const plugins_1 = require("./commands/plugins");
40
+ const models_1 = require("./commands/models");
41
+ const config_templates_1 = require("./commands/config-templates");
42
+ const auth_1 = require("./commands/auth");
43
+ const prompts_2 = require("./utils/prompts");
44
+ const config_1 = require("./utils/config");
45
+ const logging_1 = require("./utils/logging");
46
+ const fs = __importStar(require("fs/promises"));
47
+ const path = __importStar(require("path"));
48
+ const os = __importStar(require("os"));
49
+ async function main() {
50
+ // Parse CLI arguments
51
+ const args = process.argv.slice(2);
52
+ let dryRun = false;
53
+ if (args.includes('--help')) {
54
+ console.log(`Usage: my-opencode [OPTIONS]
55
+
56
+ Options:
57
+ --help Show this help message and exit
58
+ --dry-run Run without writing any files`);
59
+ process.exit(0);
60
+ }
61
+ if (args.includes('--dry-run')) {
62
+ dryRun = true;
63
+ (0, logging_1.info)('Running in dry-run mode - no files will be written');
64
+ }
65
+ (0, logging_1.resetSteps)();
66
+ (0, prompts_1.intro)('my-opencode - OpenCode Setup CLI');
67
+ try {
68
+ // Step 1: Check OpenCode installation
69
+ (0, logging_1.step)('Checking OpenCode installation');
70
+ let opencodeInstalled = await (0, opencode_1.isOpenCodeInstalled)();
71
+ if (!opencodeInstalled) {
72
+ (0, logging_1.info)('OpenCode is not installed.');
73
+ const shouldInstall = await (0, prompts_2.promptConfirm)('Would you like to install OpenCode now?');
74
+ if (shouldInstall) {
75
+ (0, logging_1.info)('Installing OpenCode...');
76
+ await (0, opencode_1.installOpenCode)();
77
+ opencodeInstalled = await (0, opencode_1.isOpenCodeInstalled)();
78
+ if (opencodeInstalled) {
79
+ (0, logging_1.success)('OpenCode installed successfully!');
80
+ }
81
+ else {
82
+ (0, logging_1.error)('Failed to install OpenCode. Please install manually from https://opencode.ai');
83
+ }
84
+ }
85
+ else {
86
+ (0, logging_1.warn)('Skipping OpenCode installation. You can install it later.');
87
+ }
88
+ }
89
+ else {
90
+ (0, logging_1.success)('OpenCode is already installed!');
91
+ }
92
+ // Step 2: Install plugins
93
+ (0, logging_1.step)('Configuring plugins');
94
+ const opencodeJsonPath = (0, config_1.getConfigPath)('opencode.json');
95
+ let opencodeConfig = {};
96
+ try {
97
+ if (await (0, config_1.configExists)('opencode.json')) {
98
+ opencodeConfig = await (0, config_1.readConfig)('opencode.json') || {};
99
+ }
100
+ }
101
+ catch (e) {
102
+ (0, logging_1.info)('No existing OpenCode config found, creating new one.');
103
+ }
104
+ // Add plugins
105
+ await (0, prompts_2.withSpinner)('Configuring plugins...', async () => {
106
+ const requiredPlugins = (0, plugins_1.getRequiredPlugins)();
107
+ const existingPlugins = opencodeConfig.plugin || [];
108
+ opencodeConfig.plugin = (0, plugins_1.mergePluginConfig)(existingPlugins, requiredPlugins);
109
+ });
110
+ (0, logging_1.success)('Plugins configured!');
111
+ // Step 3: Superpowers installation (optional)
112
+ (0, logging_1.step)('Superpowers installation');
113
+ let installSuperpowers = false;
114
+ const existingSuperpowers = await fs.access(path.join(os.homedir(), '.config', 'opencode', 'superpowers')).then(() => true).catch(() => false);
115
+ if (existingSuperpowers) {
116
+ (0, logging_1.info)('Superpowers is already installed.');
117
+ }
118
+ else {
119
+ installSuperpowers = await (0, prompts_2.promptConfirm)('Would you like to install Superpowers?');
120
+ if (installSuperpowers) {
121
+ try {
122
+ await (0, prompts_2.withSpinner)('Installing Superpowers...', async () => {
123
+ const { exec } = await Promise.resolve().then(() => __importStar(require('child_process')));
124
+ const { promisify } = await Promise.resolve().then(() => __importStar(require('util')));
125
+ const execAsync = promisify(exec);
126
+ await execAsync('git clone https://github.com/obra/superpowers.git ~/.config/opencode/superpowers');
127
+ await fs.mkdir(path.join(os.homedir(), '.config', 'opencode', 'plugins'), { recursive: true });
128
+ await fs.mkdir(path.join(os.homedir(), '.config', 'opencode', 'skills'), { recursive: true });
129
+ await fs.symlink(path.join(os.homedir(), '.config', 'opencode', 'superpowers', '.opencode', 'plugins', 'superpowers.js'), path.join(os.homedir(), '.config', 'opencode', 'plugins', 'superpowers.js'));
130
+ await fs.symlink(path.join(os.homedir(), '.config', 'opencode', 'superpowers', 'skills'), path.join(os.homedir(), '.config', 'opencode', 'skills', 'superpowers'));
131
+ });
132
+ (0, logging_1.success)('Superpowers installed successfully!');
133
+ }
134
+ catch (e) {
135
+ (0, logging_1.error)(`Failed to install Superpowers: ${e.message}`);
136
+ }
137
+ }
138
+ }
139
+ // Step 4: Authentication
140
+ (0, logging_1.step)('Authentication');
141
+ await (0, auth_1.authenticateIfNeeded)();
142
+ // Step 5-6: Model selection
143
+ (0, logging_1.step)('Model selection');
144
+ const models = await (0, prompts_2.withSpinner)('Fetching available models...', () => (0, models_1.fetchAllModels)());
145
+ (0, logging_1.info)('Select your main model (for general use):');
146
+ const mainModel = await (0, prompts_2.selectModel)('Choose main model:', models.zen);
147
+ if (!mainModel) {
148
+ (0, logging_1.error)('No model selected. Exiting.');
149
+ process.exit(1);
150
+ }
151
+ (0, logging_1.info)('Select your small model (for quick tasks):');
152
+ const smallModel = await (0, prompts_2.selectModel)('Choose small model:', models.zen);
153
+ if (!smallModel) {
154
+ (0, logging_1.error)('No model selected. Exiting.');
155
+ process.exit(1);
156
+ }
157
+ (0, logging_1.info)('Select model for fast agents (librarian, explore, quick):');
158
+ const fastAgentModel = await (0, prompts_2.selectModel)('Choose fast agent model:', models.zen);
159
+ if (!fastAgentModel) {
160
+ (0, logging_1.error)('No model selected. Exiting.');
161
+ process.exit(1);
162
+ }
163
+ (0, logging_1.info)('Select model for powerful agents (oracle, ultrabrain, deep):');
164
+ const powerfulAgentModel = await (0, prompts_2.selectModel)('Choose powerful agent model:', models.gemini);
165
+ if (!powerfulAgentModel) {
166
+ (0, logging_1.error)('No model selected. Exiting.');
167
+ process.exit(1);
168
+ }
169
+ const selections = {
170
+ mainModel: `opencode/${mainModel.id}`,
171
+ smallModel: `opencode/${smallModel.id}`,
172
+ fastAgentModel: `opencode/${fastAgentModel.id}`,
173
+ powerfulAgentModel: `google/${powerfulAgentModel.id}`,
174
+ installSuperpowers,
175
+ };
176
+ (0, logging_1.success)('Models selected!');
177
+ // Step 7: Write configs
178
+ (0, logging_1.step)('Writing configurations');
179
+ if (!dryRun) {
180
+ await (0, prompts_2.withSpinner)('Writing configuration files...', async () => {
181
+ if (await (0, config_1.configExists)('opencode.json')) {
182
+ await (0, config_1.backupConfig)('opencode.json');
183
+ (0, logging_1.info)('Backed up existing opencode.json');
184
+ }
185
+ if (await (0, config_1.configExists)('oh-my-opencode.json')) {
186
+ await (0, config_1.backupConfig)('oh-my-opencode.json');
187
+ (0, logging_1.info)('Backed up existing oh-my-opencode.json');
188
+ }
189
+ const newOpencodeConfig = (0, config_templates_1.generateOpencodeConfig)(selections, opencodeConfig);
190
+ await (0, config_1.writeConfig)('opencode.json', newOpencodeConfig);
191
+ (0, logging_1.success)('Written opencode.json');
192
+ const ohMyOpencodeConfig = (0, config_templates_1.generateOhMyOpencodeConfig)(selections);
193
+ await (0, config_1.writeConfig)('oh-my-opencode.json', ohMyOpencodeConfig);
194
+ (0, logging_1.success)('Written oh-my-opencode.json');
195
+ });
196
+ }
197
+ else {
198
+ (0, logging_1.info)('Skipped writing config files (dry-run)');
199
+ }
200
+ // Step 8: Summary
201
+ (0, logging_1.section)('Setup Complete!');
202
+ console.log('\n✅ OpenCode has been configured with your selected models!\n');
203
+ console.log('Selected configuration:');
204
+ console.log(` Main model: ${selections.mainModel}`);
205
+ console.log(` Small model: ${selections.smallModel}`);
206
+ console.log(` Fast agents: ${selections.fastAgentModel}`);
207
+ console.log(` Powerful agents: ${selections.powerfulAgentModel}`);
208
+ console.log(` Superpowers: ${installSuperpowers ? 'Yes' : 'No'}`);
209
+ console.log('\n📋 Next steps:');
210
+ console.log(' 1. Restart OpenCode');
211
+ console.log(' 2. Run "opencode /connect" if not authenticated');
212
+ console.log('\n💾 Config files:');
213
+ console.log(' ~/.config/opencode/opencode.json');
214
+ console.log(' ~/.config/opencode/oh-my-opencode.json');
215
+ console.log('\n🔄 To restore previous config:');
216
+ console.log(' Check ~/.config/opencode/backups/');
217
+ (0, prompts_1.outro)('Happy coding!');
218
+ }
219
+ catch (e) {
220
+ (0, logging_1.error)(`Error: ${e.message}`);
221
+ process.exit(1);
222
+ }
223
+ }
224
+ main();
225
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ export interface ModelCapabilities {
2
+ reasoning?: boolean;
3
+ thinking?: boolean;
4
+ toolcall?: boolean;
5
+ attachment?: boolean;
6
+ input?: {
7
+ image?: boolean;
8
+ };
9
+ limit?: {
10
+ context?: number;
11
+ output?: number;
12
+ };
13
+ variants?: {
14
+ high?: boolean;
15
+ max?: boolean;
16
+ };
17
+ }
18
+ export interface Model {
19
+ id: string;
20
+ name: string;
21
+ provider: 'zen' | 'google';
22
+ isFree?: boolean;
23
+ isRecommended?: boolean;
24
+ score?: number;
25
+ capabilities?: ModelCapabilities;
26
+ }
27
+ export interface ConfigBackup {
28
+ path: string;
29
+ content: string;
30
+ timestamp: string;
31
+ }
32
+ export interface UserSelections {
33
+ mainModel: string;
34
+ smallModel: string;
35
+ fastAgentModel: string;
36
+ powerfulAgentModel: string;
37
+ installSuperpowers: boolean;
38
+ }
39
+ export interface CliOptions {
40
+ skipAuth?: boolean;
41
+ skipSuperpowers?: boolean;
42
+ dryRun?: boolean;
43
+ }
44
+ export interface OpenCodeStatus {
45
+ installed: boolean;
46
+ version?: string;
47
+ path?: string;
48
+ }
49
+ export interface AuthStatus {
50
+ zen: boolean;
51
+ gemini: boolean;
52
+ }
53
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAC5B,KAAK,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,QAAQ,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAC9C;AAED,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,iBAAiB,CAAC;CAClC;AAGD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAGD,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAGD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAGD,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAGD,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;CACjB"}
package/dist/types.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import { ConfigBackup } from '../types';
2
+ export declare function getConfigPath(filename: string): string;
3
+ export declare function configExists(filename: string): Promise<boolean>;
4
+ export declare function readConfig(filename: string): Promise<object | null>;
5
+ export declare function backupConfig(filename: string): Promise<ConfigBackup | null>;
6
+ export declare function listBackups(): Promise<ConfigBackup[]>;
7
+ export declare function restoreBackup(backup: ConfigBackup): Promise<void>;
8
+ export declare function writeConfig(filename: string, data: object): Promise<void>;
9
+ export declare function mergeConfigs(existing: any, updates: any): any;
10
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGxC,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEtD;AAGD,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOrE;AAGD,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CASzE;AAUD,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAajF;AAGD,wBAAsB,WAAW,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAiB3D;AAGD,wBAAsB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAIvE;AAGD,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAK/E;AAGD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,GAAG,GAAG,CAqB7D"}
@@ -0,0 +1,153 @@
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.getConfigPath = getConfigPath;
37
+ exports.configExists = configExists;
38
+ exports.readConfig = readConfig;
39
+ exports.backupConfig = backupConfig;
40
+ exports.listBackups = listBackups;
41
+ exports.restoreBackup = restoreBackup;
42
+ exports.writeConfig = writeConfig;
43
+ exports.mergeConfigs = mergeConfigs;
44
+ const fs = __importStar(require("fs/promises"));
45
+ const path = __importStar(require("path"));
46
+ const os = __importStar(require("os"));
47
+ // Get config path for a file
48
+ function getConfigPath(filename) {
49
+ return path.join(os.homedir(), '.config', 'opencode', filename);
50
+ }
51
+ // Check if config exists
52
+ async function configExists(filename) {
53
+ try {
54
+ await fs.access(getConfigPath(filename));
55
+ return true;
56
+ }
57
+ catch {
58
+ return false;
59
+ }
60
+ }
61
+ // Read config file
62
+ async function readConfig(filename) {
63
+ const configPath = getConfigPath(filename);
64
+ try {
65
+ const content = await fs.readFile(configPath, 'utf-8');
66
+ return JSON.parse(content);
67
+ }
68
+ catch (error) {
69
+ if (error.code === 'ENOENT')
70
+ return null;
71
+ throw new Error(`Invalid JSON in ${filename}: ${error.message}`);
72
+ }
73
+ }
74
+ // Ensure backup directory exists
75
+ async function ensureBackupDir() {
76
+ const backupDir = path.join(os.homedir(), '.config', 'opencode', 'backups');
77
+ await fs.mkdir(backupDir, { recursive: true });
78
+ return backupDir;
79
+ }
80
+ // Backup config file
81
+ async function backupConfig(filename) {
82
+ const configPath = getConfigPath(filename);
83
+ try {
84
+ const content = await fs.readFile(configPath, 'utf-8');
85
+ const backupDir = await ensureBackupDir();
86
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
87
+ const backupPath = path.join(backupDir, `${filename}-${timestamp}.json`);
88
+ await fs.writeFile(backupPath, content, 'utf-8');
89
+ return { path: backupPath, content, timestamp };
90
+ }
91
+ catch (error) {
92
+ if (error.code === 'ENOENT')
93
+ return null;
94
+ throw new Error(`Backup failed: ${error.message}`);
95
+ }
96
+ }
97
+ // List all backups
98
+ async function listBackups() {
99
+ const backupDir = path.join(os.homedir(), '.config', 'opencode', 'backups');
100
+ try {
101
+ const files = await fs.readdir(backupDir);
102
+ const backups = [];
103
+ for (const file of files) {
104
+ if (file.endsWith('.json')) {
105
+ const filePath = path.join(backupDir, file);
106
+ const content = await fs.readFile(filePath, 'utf-8');
107
+ const timestamp = file.replace('.json', '').split('-').slice(-1).join('-');
108
+ backups.push({ path: filePath, content, timestamp });
109
+ }
110
+ }
111
+ return backups;
112
+ }
113
+ catch {
114
+ return [];
115
+ }
116
+ }
117
+ // Restore from backup
118
+ async function restoreBackup(backup) {
119
+ const filename = path.basename(backup.path);
120
+ const originalPath = getConfigPath(filename.replace(/-\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}.json$/, '.json'));
121
+ await fs.writeFile(originalPath, backup.content, 'utf-8');
122
+ }
123
+ // Write config file
124
+ async function writeConfig(filename, data) {
125
+ const configPath = getConfigPath(filename);
126
+ const configDir = path.dirname(configPath);
127
+ await fs.mkdir(configDir, { recursive: true });
128
+ await fs.writeFile(configPath, JSON.stringify(data, null, 2), 'utf-8');
129
+ }
130
+ // Deep merge - preserves existing values
131
+ function mergeConfigs(existing, updates) {
132
+ if (!existing)
133
+ return updates;
134
+ if (!updates)
135
+ return existing;
136
+ const result = { ...existing };
137
+ for (const key of Object.keys(updates)) {
138
+ const existingValue = result[key];
139
+ const updateValue = updates[key];
140
+ if (Array.isArray(existingValue) && Array.isArray(updateValue)) {
141
+ result[key] = [...new Set([...existingValue, ...updateValue])];
142
+ }
143
+ else if (typeof existingValue === 'object' && typeof updateValue === 'object' &&
144
+ existingValue !== null && updateValue !== null && !Array.isArray(existingValue)) {
145
+ result[key] = mergeConfigs(existingValue, updateValue);
146
+ }
147
+ else {
148
+ result[key] = updateValue;
149
+ }
150
+ }
151
+ return result;
152
+ }
153
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export declare function info(message: string): void;
2
+ export declare function success(message: string): void;
3
+ export declare function warn(message: string): void;
4
+ export declare function error(message: string): void;
5
+ export declare function log(message: string): void;
6
+ export declare function dim(message: string): void;
7
+ export declare function step(message: string): void;
8
+ export declare function resetSteps(): void;
9
+ export declare function section(title: string): void;
10
+ export declare function subsection(title: string): void;
11
+ export declare function table(headers: string[], rows: string[][]): void;
12
+ export declare function bullet(items: string[]): void;
13
+ export declare function kv(key: string, value: string): void;
14
+ export declare function separator(): void;
15
+ export declare function box(message: string, title?: string): void;
16
+ //# sourceMappingURL=logging.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../src/utils/logging.ts"],"names":[],"mappings":"AAeA,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE1C;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE7C;AAED,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE1C;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE3C;AAED,wBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEzC;AAED,wBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEzC;AAID,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAG1C;AAED,wBAAgB,UAAU,IAAI,IAAI,CAEjC;AAGD,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAI3C;AAGD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAG9C;AAGD,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,CAiB/D;AAGD,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAI5C;AAGD,wBAAgB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAEnD;AAGD,wBAAgB,SAAS,IAAI,IAAI,CAEhC;AAGD,wBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAezD"}
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.info = info;
4
+ exports.success = success;
5
+ exports.warn = warn;
6
+ exports.error = error;
7
+ exports.log = log;
8
+ exports.dim = dim;
9
+ exports.step = step;
10
+ exports.resetSteps = resetSteps;
11
+ exports.section = section;
12
+ exports.subsection = subsection;
13
+ exports.table = table;
14
+ exports.bullet = bullet;
15
+ exports.kv = kv;
16
+ exports.separator = separator;
17
+ exports.box = box;
18
+ // Color codes using ANSI escape sequences
19
+ const colors = {
20
+ reset: '\x1b[0m',
21
+ bright: '\x1b[1m',
22
+ dim: '\x1b[2m',
23
+ red: '\x1b[31m',
24
+ green: '\x1b[32m',
25
+ yellow: '\x1b[33m',
26
+ blue: '\x1b[34m',
27
+ magenta: '\x1b[35m',
28
+ cyan: '\x1b[36m',
29
+ white: '\x1b[37m',
30
+ };
31
+ // Logging functions
32
+ function info(message) {
33
+ console.log(`${colors.blue}ℹ${colors.reset} ${message}`);
34
+ }
35
+ function success(message) {
36
+ console.log(`${colors.green}✓${colors.reset} ${message}`);
37
+ }
38
+ function warn(message) {
39
+ console.log(`${colors.yellow}⚠${colors.reset} ${message}`);
40
+ }
41
+ function error(message) {
42
+ console.error(`${colors.red}✗${colors.reset} ${message}`);
43
+ }
44
+ function log(message) {
45
+ console.log(message);
46
+ }
47
+ function dim(message) {
48
+ console.log(`${colors.dim}${message}${colors.reset}`);
49
+ }
50
+ // Step indicator
51
+ let currentStep = 0;
52
+ function step(message) {
53
+ currentStep++;
54
+ console.log(`${colors.cyan}▸${colors.reset} ${colors.bright}Step ${currentStep}:${colors.reset} ${message}`);
55
+ }
56
+ function resetSteps() {
57
+ currentStep = 0;
58
+ }
59
+ // Section header
60
+ function section(title) {
61
+ console.log(`\n${colors.bright}${colors.magenta}${'='.repeat(60)}${colors.reset}`);
62
+ console.log(`${colors.bright}${colors.magenta}${title}${colors.reset}`);
63
+ console.log(`${colors.bright}${colors.magenta}${'='.repeat(60)}${colors.reset}\n`);
64
+ }
65
+ // Sub-section
66
+ function subsection(title) {
67
+ console.log(`\n${colors.cyan}${title}${colors.reset}`);
68
+ console.log(`${colors.cyan}${'-'.repeat(title.length)}${colors.reset}\n`);
69
+ }
70
+ // Table output
71
+ function table(headers, rows) {
72
+ const colWidths = headers.map((h, i) => Math.max(h.length, ...rows.map(r => (r[i] || '').length)));
73
+ // Header
74
+ console.log(headers.map((h, i) => `${colors.bright}${h.padEnd(colWidths[i])}${colors.reset}`).join(' | '));
75
+ console.log(colWidths.map(w => '-'.repeat(w)).join('-+-'));
76
+ // Rows
77
+ for (const row of rows) {
78
+ console.log(row.map((c, i) => c.padEnd(colWidths[i])).join(' | '));
79
+ }
80
+ }
81
+ // Bullet list
82
+ function bullet(items) {
83
+ for (const item of items) {
84
+ console.log(` ${colors.green}•${colors.reset} ${item}`);
85
+ }
86
+ }
87
+ // Key-value pairs
88
+ function kv(key, value) {
89
+ console.log(` ${colors.dim}${key}:${colors.reset} ${value}`);
90
+ }
91
+ // Separator
92
+ function separator() {
93
+ console.log(colors.dim + '-'.repeat(60) + colors.reset);
94
+ }
95
+ // Box message
96
+ function box(message, title) {
97
+ const width = Math.min(60, message.length + 4);
98
+ const padding = ' '.repeat(Math.floor((width - (title?.length || message.length) - 2) / 2));
99
+ console.log(colors.bright + '┌' + '─'.repeat(width - 2) + '┐' + colors.reset);
100
+ if (title) {
101
+ console.log(colors.bright + '│' + padding + title + padding + '│' + colors.reset);
102
+ console.log(colors.bright + '├' + '─'.repeat(width - 2) + '┤' + colors.reset);
103
+ }
104
+ const lines = message.split('\n');
105
+ for (const line of lines) {
106
+ console.log(colors.bright + '│' + ' ' + line.padEnd(width - 3) + '│' + colors.reset);
107
+ }
108
+ console.log(colors.bright + '└' + '─'.repeat(width - 2) + '┘' + colors.reset);
109
+ }
110
+ //# sourceMappingURL=logging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.js","sourceRoot":"","sources":["../../src/utils/logging.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export interface OpenCodeStatus {
2
+ installed: boolean;
3
+ version?: string;
4
+ path?: string;
5
+ }
6
+ export declare function isOpenCodeInstalled(): Promise<boolean>;
7
+ export declare function getOpenCodeVersion(): Promise<string | null>;
8
+ export declare function getOpenCodePath(): Promise<string | null>;
9
+ export declare function checkCommonPaths(): Promise<string | null>;
10
+ export declare function getOpenCodeStatus(): Promise<OpenCodeStatus>;
11
+ export declare function installOpenCode(): Promise<void>;
12
+ //# sourceMappingURL=opencode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../src/utils/opencode.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAGD,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC,CAc5D;AAGD,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQjE;AAGD,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAO9D;AAGD,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiB/D;AAGD,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,cAAc,CAAC,CAgBjE;AAGD,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAqBrD"}