@lovelybunch/cli 1.0.18 → 1.0.21

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/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
package/dist/cli.js CHANGED
@@ -12,6 +12,7 @@ import { showCommand } from './commands/show.js';
12
12
  import { serveCommand } from './commands/serve.js';
13
13
  import { agentCommand } from './commands/agent.js';
14
14
  import { implementCommand } from './commands/implement.js';
15
+ import { configCommand } from './commands/config.js';
15
16
  const __filename = fileURLToPath(import.meta.url);
16
17
  const __dirname = dirname(__filename);
17
18
  // Read version from package.json
@@ -37,11 +38,12 @@ program.addCommand(showCommand);
37
38
  program.addCommand(serveCommand);
38
39
  program.addCommand(agentCommand);
39
40
  program.addCommand(implementCommand);
41
+ program.addCommand(configCommand);
40
42
  // Global error handling
41
43
  program.hook('preAction', async (_thisCommand, actionCommand) => {
42
44
  const commandName = actionCommand.name();
43
- // Skip initialization check for 'init' command
44
- if (commandName === 'init') {
45
+ // Skip initialization check for 'init' and 'config' commands
46
+ if (commandName === 'init' || commandName === 'config') {
45
47
  return;
46
48
  }
47
49
  // Check if GAIT is initialized for other commands
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Command } from 'commander';
2
+ declare const configCommand: Command;
3
+ export { configCommand };
4
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuCpC,QAAA,MAAM,aAAa,SAC6C,CAAC;AAiQjE,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,272 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import inquirer from 'inquirer';
4
+ import { ConfigManager } from '../lib/config-manager.js';
5
+ const configManager = new ConfigManager();
6
+ // Supported API providers with their details
7
+ const API_PROVIDERS = {
8
+ openrouter: {
9
+ name: 'OpenRouter',
10
+ description: 'Access to multiple AI models through OpenRouter',
11
+ keyFormat: 'sk-or-v1-...',
12
+ signupUrl: 'https://openrouter.ai/keys',
13
+ envVar: 'OPENROUTER_API_KEY'
14
+ },
15
+ anthropic: {
16
+ name: 'Anthropic Claude',
17
+ description: 'Direct access to Claude models',
18
+ keyFormat: 'sk-ant-...',
19
+ signupUrl: 'https://console.anthropic.com/',
20
+ envVar: 'ANTHROPIC_API_KEY'
21
+ },
22
+ openai: {
23
+ name: 'OpenAI',
24
+ description: 'Direct access to GPT models',
25
+ keyFormat: 'sk-...',
26
+ signupUrl: 'https://platform.openai.com/api-keys',
27
+ envVar: 'OPENAI_API_KEY'
28
+ },
29
+ gemini: {
30
+ name: 'Google Gemini',
31
+ description: 'Direct access to Gemini models',
32
+ keyFormat: 'AI...',
33
+ signupUrl: 'https://makersuite.google.com/app/apikey',
34
+ envVar: 'GEMINI_API_KEY'
35
+ }
36
+ };
37
+ const configCommand = new Command('config')
38
+ .description('manage global configuration including API keys');
39
+ // Set API key
40
+ configCommand
41
+ .command('set-key')
42
+ .description('set an API key for a provider')
43
+ .option('-p, --provider <provider>', 'API provider (openrouter, anthropic, openai, gemini)')
44
+ .option('-k, --key <key>', 'API key value')
45
+ .option('-i, --interactive', 'interactive mode with prompts')
46
+ .action(async (options) => {
47
+ try {
48
+ let { provider, key } = options;
49
+ if (options.interactive || !provider || !key) {
50
+ // Interactive mode
51
+ const answers = await inquirer.prompt([
52
+ {
53
+ type: 'list',
54
+ name: 'provider',
55
+ message: 'Select API provider:',
56
+ choices: Object.entries(API_PROVIDERS).map(([key, info]) => ({
57
+ name: `${info.name} - ${info.description}`,
58
+ value: key,
59
+ short: info.name
60
+ })),
61
+ when: !provider
62
+ },
63
+ {
64
+ type: 'input',
65
+ name: 'key',
66
+ message: (answers) => {
67
+ const p = provider || answers.provider;
68
+ const info = API_PROVIDERS[p];
69
+ return `Enter your ${info.name} API key (format: ${info.keyFormat}):`;
70
+ },
71
+ validate: (input) => {
72
+ if (!input || input.trim() === '') {
73
+ return 'API key cannot be empty';
74
+ }
75
+ return true;
76
+ },
77
+ when: !key
78
+ }
79
+ ]);
80
+ provider = provider || answers.provider;
81
+ key = key || answers.key;
82
+ }
83
+ if (!API_PROVIDERS[provider]) {
84
+ console.error(chalk.red(`Unknown provider: ${provider}`));
85
+ console.error(chalk.yellow(`Supported providers: ${Object.keys(API_PROVIDERS).join(', ')}`));
86
+ process.exit(1);
87
+ }
88
+ // Set the API key
89
+ configManager.setApiKey(provider, key);
90
+ const providerInfo = API_PROVIDERS[provider];
91
+ console.log(chalk.green(`✓ ${providerInfo.name} API key saved successfully!`));
92
+ console.log(chalk.gray(`Config saved to: ${configManager.getConfigPath()}`));
93
+ // Optionally set as default if it's the first key
94
+ if (!configManager.getDefault('model')) {
95
+ console.log(chalk.blue(`ℹ This is your first API key. You can set a default model later with:`));
96
+ console.log(chalk.blue(` coconut config set-default model <model-name>`));
97
+ }
98
+ }
99
+ catch (error) {
100
+ console.error(chalk.red('Error setting API key:'), error instanceof Error ? error.message : 'Unknown error');
101
+ process.exit(1);
102
+ }
103
+ });
104
+ // List API keys
105
+ configCommand
106
+ .command('list-keys')
107
+ .alias('ls')
108
+ .description('list configured API keys')
109
+ .action(async () => {
110
+ try {
111
+ const configuredKeys = configManager.listApiKeys();
112
+ if (configuredKeys.length === 0) {
113
+ console.log(chalk.yellow('No API keys configured.'));
114
+ console.log(chalk.blue('Run `coconut config set-key --interactive` to add one.'));
115
+ return;
116
+ }
117
+ console.log(chalk.bold('Configured API Keys:'));
118
+ console.log('');
119
+ configuredKeys.forEach(provider => {
120
+ const info = API_PROVIDERS[provider];
121
+ const key = configManager.getApiKey(provider);
122
+ const maskedKey = key ? `${key.substring(0, 8)}...${key.substring(key.length - 4)}` : 'Not set';
123
+ console.log(` ${chalk.green('✓')} ${chalk.bold(info?.name || provider)}`);
124
+ console.log(` Key: ${chalk.gray(maskedKey)}`);
125
+ console.log(` Provider: ${provider}`);
126
+ console.log('');
127
+ });
128
+ const configPath = configManager.getConfigPath();
129
+ console.log(chalk.gray(`Config location: ${configPath}`));
130
+ }
131
+ catch (error) {
132
+ console.error(chalk.red('Error listing API keys:'), error instanceof Error ? error.message : 'Unknown error');
133
+ process.exit(1);
134
+ }
135
+ });
136
+ // Remove API key
137
+ configCommand
138
+ .command('remove-key')
139
+ .alias('rm')
140
+ .description('remove an API key')
141
+ .argument('<provider>', 'API provider to remove')
142
+ .action(async (provider) => {
143
+ try {
144
+ if (!API_PROVIDERS[provider]) {
145
+ console.error(chalk.red(`Unknown provider: ${provider}`));
146
+ console.error(chalk.yellow(`Available providers: ${Object.keys(API_PROVIDERS).join(', ')}`));
147
+ process.exit(1);
148
+ }
149
+ const currentKey = configManager.getApiKey(provider);
150
+ if (!currentKey) {
151
+ console.log(chalk.yellow(`No API key configured for ${provider}`));
152
+ return;
153
+ }
154
+ const { confirm } = await inquirer.prompt([
155
+ {
156
+ type: 'confirm',
157
+ name: 'confirm',
158
+ message: `Remove API key for ${API_PROVIDERS[provider].name}?`,
159
+ default: false
160
+ }
161
+ ]);
162
+ if (confirm) {
163
+ configManager.removeApiKey(provider);
164
+ console.log(chalk.green(`✓ API key for ${provider} removed successfully`));
165
+ }
166
+ else {
167
+ console.log(chalk.gray('Cancelled'));
168
+ }
169
+ }
170
+ catch (error) {
171
+ console.error(chalk.red('Error removing API key:'), error instanceof Error ? error.message : 'Unknown error');
172
+ process.exit(1);
173
+ }
174
+ });
175
+ // Show setup guide
176
+ configCommand
177
+ .command('setup')
178
+ .description('show setup guide for getting API keys')
179
+ .option('-p, --provider <provider>', 'show setup for specific provider')
180
+ .action(async (options) => {
181
+ const { provider } = options;
182
+ if (provider) {
183
+ const info = API_PROVIDERS[provider];
184
+ if (!info) {
185
+ console.error(chalk.red(`Unknown provider: ${provider}`));
186
+ process.exit(1);
187
+ }
188
+ console.log(chalk.bold(`${info.name} Setup Guide`));
189
+ console.log('');
190
+ console.log(`1. Visit: ${chalk.blue(info.signupUrl)}`);
191
+ console.log(`2. Sign up or log in to your account`);
192
+ console.log(`3. Generate an API key`);
193
+ console.log(`4. Copy the key (format: ${chalk.gray(info.keyFormat)})`);
194
+ console.log(`5. Run: ${chalk.green(`coconut config set-key -p ${provider} -k YOUR_API_KEY`)}`);
195
+ console.log('');
196
+ console.log(chalk.gray(`Environment variable: ${info.envVar}`));
197
+ }
198
+ else {
199
+ console.log(chalk.bold('API Key Setup Guide'));
200
+ console.log('');
201
+ console.log('Coconut supports multiple AI providers. Choose one or more:');
202
+ console.log('');
203
+ Object.entries(API_PROVIDERS).forEach(([key, info]) => {
204
+ console.log(`${chalk.bold(info.name)} (${key})`);
205
+ console.log(` ${info.description}`);
206
+ console.log(` Get key: ${chalk.blue(info.signupUrl)}`);
207
+ console.log(` Setup: ${chalk.green(`coconut config set-key -p ${key}`)}`);
208
+ console.log('');
209
+ });
210
+ console.log(chalk.blue('💡 Tip: Run `coconut config set-key --interactive` for guided setup'));
211
+ }
212
+ });
213
+ // Set defaults
214
+ configCommand
215
+ .command('set-default')
216
+ .description('set default configuration values')
217
+ .argument('<key>', 'configuration key (model, endpoint)')
218
+ .argument('<value>', 'configuration value')
219
+ .action(async (key, value) => {
220
+ try {
221
+ configManager.setDefault(key, value);
222
+ console.log(chalk.green(`✓ Default ${key} set to: ${value}`));
223
+ }
224
+ catch (error) {
225
+ console.error(chalk.red('Error setting default:'), error instanceof Error ? error.message : 'Unknown error');
226
+ process.exit(1);
227
+ }
228
+ });
229
+ // Show config
230
+ configCommand
231
+ .command('show')
232
+ .description('show current configuration')
233
+ .action(() => {
234
+ try {
235
+ const config = configManager.loadConfig();
236
+ const configPath = configManager.getConfigPath();
237
+ console.log(chalk.bold('Current Configuration'));
238
+ console.log('');
239
+ console.log(`Config file: ${chalk.gray(configPath)}`);
240
+ console.log('');
241
+ // Show API keys (masked)
242
+ console.log(chalk.bold('API Keys:'));
243
+ if (Object.keys(config.apiKeys).length === 0) {
244
+ console.log(' None configured');
245
+ }
246
+ else {
247
+ Object.entries(config.apiKeys).forEach(([provider, key]) => {
248
+ if (key) {
249
+ const maskedKey = `${key.substring(0, 8)}...${key.substring(key.length - 4)}`;
250
+ console.log(` ${provider}: ${chalk.gray(maskedKey)}`);
251
+ }
252
+ });
253
+ }
254
+ console.log('');
255
+ // Show defaults
256
+ console.log(chalk.bold('Defaults:'));
257
+ if (Object.keys(config.defaults).length === 0) {
258
+ console.log(' None set');
259
+ }
260
+ else {
261
+ Object.entries(config.defaults).forEach(([key, value]) => {
262
+ console.log(` ${key}: ${value}`);
263
+ });
264
+ }
265
+ }
266
+ catch (error) {
267
+ console.error(chalk.red('Error showing config:'), error instanceof Error ? error.message : 'Unknown error');
268
+ process.exit(1);
269
+ }
270
+ });
271
+ export { configCommand };
272
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './cli.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,36 @@
1
+ interface GlobalConfig {
2
+ apiKeys: {
3
+ openrouter?: string;
4
+ anthropic?: string;
5
+ openai?: string;
6
+ gemini?: string;
7
+ [key: string]: string | undefined;
8
+ };
9
+ defaults: {
10
+ model?: string;
11
+ endpoint?: string;
12
+ };
13
+ }
14
+ export declare class ConfigManager {
15
+ private configDir;
16
+ private configFile;
17
+ constructor();
18
+ private ensureConfigDir;
19
+ private getDefaultConfig;
20
+ loadConfig(): GlobalConfig;
21
+ saveConfig(config: GlobalConfig): void;
22
+ setApiKey(provider: string, key: string): void;
23
+ getApiKey(provider: string): string | undefined;
24
+ listApiKeys(): string[];
25
+ removeApiKey(provider: string): void;
26
+ setDefault(key: string, value: string): void;
27
+ getDefault(key: string): string | undefined;
28
+ getConfigPath(): string;
29
+ hasApiKeys(): boolean;
30
+ getFirstAvailableApiKey(): {
31
+ provider: string;
32
+ key: string;
33
+ } | null;
34
+ }
35
+ export {};
36
+ //# sourceMappingURL=config-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-manager.d.ts","sourceRoot":"","sources":["../../src/lib/config-manager.ts"],"names":[],"mappings":"AAKA,UAAU,YAAY;IACpB,OAAO,EAAE;QACP,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;KACnC,CAAC;IACF,QAAQ,EAAE;QACR,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;;IAkB3B,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,gBAAgB;IAOjB,UAAU,IAAI,YAAY;IAc1B,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAQtC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAM9C,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAK/C,WAAW,IAAI,MAAM,EAAE;IAKvB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAMpC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAM5C,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAK3C,aAAa,IAAI,MAAM;IAKvB,UAAU,IAAI,OAAO;IAMrB,uBAAuB,IAAI;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;CAS3E"}
@@ -0,0 +1,102 @@
1
+ import { homedir } from 'os';
2
+ import { join } from 'path';
3
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
4
+ import chalk from 'chalk';
5
+ export class ConfigManager {
6
+ configDir;
7
+ configFile;
8
+ constructor() {
9
+ // Use OS-appropriate config directory
10
+ const platform = process.platform;
11
+ if (platform === 'win32') {
12
+ this.configDir = join(process.env.APPDATA || homedir(), 'coconuts');
13
+ }
14
+ else if (platform === 'darwin') {
15
+ this.configDir = join(homedir(), 'Library', 'Application Support', 'coconuts');
16
+ }
17
+ else {
18
+ // Linux/Unix
19
+ this.configDir = join(process.env.XDG_CONFIG_HOME || join(homedir(), '.config'), 'coconuts');
20
+ }
21
+ this.configFile = join(this.configDir, 'config.json');
22
+ this.ensureConfigDir();
23
+ }
24
+ ensureConfigDir() {
25
+ if (!existsSync(this.configDir)) {
26
+ mkdirSync(this.configDir, { recursive: true });
27
+ }
28
+ }
29
+ getDefaultConfig() {
30
+ return {
31
+ apiKeys: {},
32
+ defaults: {}
33
+ };
34
+ }
35
+ loadConfig() {
36
+ if (!existsSync(this.configFile)) {
37
+ return this.getDefaultConfig();
38
+ }
39
+ try {
40
+ const content = readFileSync(this.configFile, 'utf-8');
41
+ return { ...this.getDefaultConfig(), ...JSON.parse(content) };
42
+ }
43
+ catch (error) {
44
+ console.warn(chalk.yellow('Warning: Could not parse config file, using defaults'));
45
+ return this.getDefaultConfig();
46
+ }
47
+ }
48
+ saveConfig(config) {
49
+ try {
50
+ writeFileSync(this.configFile, JSON.stringify(config, null, 2));
51
+ }
52
+ catch (error) {
53
+ throw new Error(`Failed to save config: ${error instanceof Error ? error.message : 'Unknown error'}`);
54
+ }
55
+ }
56
+ setApiKey(provider, key) {
57
+ const config = this.loadConfig();
58
+ config.apiKeys[provider] = key;
59
+ this.saveConfig(config);
60
+ }
61
+ getApiKey(provider) {
62
+ const config = this.loadConfig();
63
+ return config.apiKeys[provider];
64
+ }
65
+ listApiKeys() {
66
+ const config = this.loadConfig();
67
+ return Object.keys(config.apiKeys).filter(key => config.apiKeys[key]);
68
+ }
69
+ removeApiKey(provider) {
70
+ const config = this.loadConfig();
71
+ delete config.apiKeys[provider];
72
+ this.saveConfig(config);
73
+ }
74
+ setDefault(key, value) {
75
+ const config = this.loadConfig();
76
+ config.defaults[key] = value;
77
+ this.saveConfig(config);
78
+ }
79
+ getDefault(key) {
80
+ const config = this.loadConfig();
81
+ return config.defaults[key];
82
+ }
83
+ getConfigPath() {
84
+ return this.configFile;
85
+ }
86
+ // Check if any API keys are configured
87
+ hasApiKeys() {
88
+ const config = this.loadConfig();
89
+ return Object.values(config.apiKeys).some(key => key && key.trim() !== '');
90
+ }
91
+ // Get the first available API key for fallback
92
+ getFirstAvailableApiKey() {
93
+ const config = this.loadConfig();
94
+ for (const [provider, key] of Object.entries(config.apiKeys)) {
95
+ if (key && key.trim() !== '') {
96
+ return { provider, key };
97
+ }
98
+ }
99
+ return null;
100
+ }
101
+ }
102
+ //# sourceMappingURL=config-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-manager.js","sourceRoot":"","sources":["../../src/lib/config-manager.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lovelybunch/cli",
3
- "version": "1.0.18",
3
+ "version": "1.0.21",
4
4
  "description": "Command-line interface for Coconut",
5
5
  "type": "module",
6
6
  "main": "./dist/cli.js",
@@ -35,9 +35,9 @@
35
35
  "test": "vitest run"
36
36
  },
37
37
  "dependencies": {
38
- "@lovelybunch/api": "^1.0.18",
39
- "@lovelybunch/core": "^1.0.18",
40
- "@lovelybunch/types": "^1.0.18",
38
+ "@lovelybunch/api": "^1.0.21",
39
+ "@lovelybunch/core": "^1.0.21",
40
+ "@lovelybunch/types": "^1.0.21",
41
41
  "chalk": "^5.3.0",
42
42
  "commander": "^11.1.0",
43
43
  "fuse.js": "^7.0.0",