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.
- package/README.md +53 -0
- package/dist/commands/auth.d.ts +8 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +148 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/config-templates.d.ts +4 -0
- package/dist/commands/config-templates.d.ts.map +1 -0
- package/dist/commands/config-templates.js +76 -0
- package/dist/commands/config-templates.js.map +1 -0
- package/dist/commands/models.d.ts +8 -0
- package/dist/commands/models.d.ts.map +1 -0
- package/dist/commands/models.js +126 -0
- package/dist/commands/models.js.map +1 -0
- package/dist/commands/plugins.d.ts +3 -0
- package/dist/commands/plugins.d.ts.map +1 -0
- package/dist/commands/plugins.js +27 -0
- package/dist/commands/plugins.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +225 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +53 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/config.d.ts +10 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +153 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/logging.d.ts +16 -0
- package/dist/utils/logging.d.ts.map +1 -0
- package/dist/utils/logging.js +110 -0
- package/dist/utils/logging.js.map +1 -0
- package/dist/utils/opencode.d.ts +12 -0
- package/dist/utils/opencode.d.ts.map +1 -0
- package/dist/utils/opencode.js +142 -0
- package/dist/utils/opencode.js.map +1 -0
- package/dist/utils/prompts.d.ts +6 -0
- package/dist/utils/prompts.d.ts.map +1 -0
- package/dist/utils/prompts.js +72 -0
- package/dist/utils/prompts.js.map +1 -0
- 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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"}
|
package/dist/types.d.ts
ADDED
|
@@ -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 @@
|
|
|
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"}
|