ownkey 1.0.0 ā 1.0.2
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/LICENSE +21 -21
- package/README.md +256 -81
- package/dist/ai/factory.js +2 -2
- package/dist/ai/factory.js.map +1 -1
- package/dist/ai/gemini.d.ts.map +1 -1
- package/dist/ai/gemini.js +13 -3
- package/dist/ai/gemini.js.map +1 -1
- package/dist/ai/ollama.d.ts +0 -2
- package/dist/ai/ollama.d.ts.map +1 -1
- package/dist/ai/ollama.js +20 -93
- package/dist/ai/ollama.js.map +1 -1
- package/dist/ai/openai.d.ts +4 -1
- package/dist/ai/openai.d.ts.map +1 -1
- package/dist/ai/openai.js +7 -3
- package/dist/ai/openai.js.map +1 -1
- package/dist/ai/provider.d.ts +4 -0
- package/dist/ai/provider.d.ts.map +1 -1
- package/dist/ai/provider.js +80 -47
- package/dist/ai/provider.js.map +1 -1
- package/dist/commands/apply.d.ts.map +1 -1
- package/dist/commands/apply.js +82 -47
- package/dist/commands/apply.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +249 -101
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/suggest.d.ts.map +1 -1
- package/dist/commands/suggest.js +44 -34
- package/dist/commands/suggest.js.map +1 -1
- package/dist/commands/undo.d.ts.map +1 -1
- package/dist/commands/undo.js +35 -25
- package/dist/commands/undo.js.map +1 -1
- package/dist/config/keychain.d.ts.map +1 -1
- package/dist/config/keychain.js +5 -1
- package/dist/config/keychain.js.map +1 -1
- package/dist/config/manager.d.ts +15 -2
- package/dist/config/manager.d.ts.map +1 -1
- package/dist/config/manager.js +42 -13
- package/dist/config/manager.js.map +1 -1
- package/dist/core/apply/engine.d.ts +19 -12
- package/dist/core/apply/engine.d.ts.map +1 -1
- package/dist/core/apply/engine.js +160 -149
- package/dist/core/apply/engine.js.map +1 -1
- package/dist/core/apply/index.d.ts +4 -2
- package/dist/core/apply/index.d.ts.map +1 -1
- package/dist/core/apply/index.js.map +1 -1
- package/dist/core/apply/interactive.d.ts +1 -1
- package/dist/core/apply/interactive.d.ts.map +1 -1
- package/dist/core/apply/interactive.js.map +1 -1
- package/dist/core/backup/index.d.ts +2 -1
- package/dist/core/backup/index.d.ts.map +1 -1
- package/dist/core/backup/index.js.map +1 -1
- package/dist/core/backup/manager.d.ts +6 -1
- package/dist/core/backup/manager.d.ts.map +1 -1
- package/dist/core/backup/manager.js +26 -18
- package/dist/core/backup/manager.js.map +1 -1
- package/dist/core/diff/applier.d.ts +23 -8
- package/dist/core/diff/applier.d.ts.map +1 -1
- package/dist/core/diff/applier.js +85 -80
- package/dist/core/diff/applier.js.map +1 -1
- package/dist/core/diff/index.d.ts +6 -3
- package/dist/core/diff/index.d.ts.map +1 -1
- package/dist/core/diff/index.js.map +1 -1
- package/dist/core/diff/parser.d.ts +2 -0
- package/dist/core/diff/parser.d.ts.map +1 -1
- package/dist/core/diff/parser.js +15 -5
- package/dist/core/diff/parser.js.map +1 -1
- package/dist/core/diff/validator.d.ts +3 -8
- package/dist/core/diff/validator.d.ts.map +1 -1
- package/dist/core/diff/validator.js +13 -71
- package/dist/core/diff/validator.js.map +1 -1
- package/dist/db/client.d.ts +9 -1
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +64 -86
- package/dist/db/client.js.map +1 -1
- package/dist/db/migrations/001_init.sql +80 -80
- package/dist/db/migrations/002_applies.sql +33 -32
- package/dist/index.js +13 -20
- package/dist/index.js.map +1 -1
- package/dist/storage/local.d.ts +12 -0
- package/dist/storage/local.d.ts.map +1 -1
- package/dist/storage/local.js +28 -0
- package/dist/storage/local.js.map +1 -1
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/utils/severity.d.ts +6 -0
- package/dist/utils/severity.d.ts.map +1 -0
- package/dist/utils/severity.js +19 -0
- package/dist/utils/severity.js.map +1 -0
- package/package.json +72 -72
package/dist/commands/config.js
CHANGED
|
@@ -1,144 +1,292 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
2
|
import inquirer from 'inquirer';
|
|
3
3
|
import { configManager } from '../config/manager.js';
|
|
4
|
+
import { keychainManager } from '../config/keychain.js';
|
|
4
5
|
import { logger } from '../utils/logger.js';
|
|
6
|
+
import { AI_PROVIDERS } from '../types/index.js';
|
|
7
|
+
import { OllamaProvider } from '../ai/ollama.js';
|
|
8
|
+
import { AIProviderFactory } from '../ai/factory.js';
|
|
5
9
|
import chalk from 'chalk';
|
|
10
|
+
const PROVIDER_NAMES = {
|
|
11
|
+
openai: 'OpenAI (or any OpenAI-compatible API)',
|
|
12
|
+
anthropic: 'Anthropic (Claude)',
|
|
13
|
+
gemini: 'Google Gemini',
|
|
14
|
+
ollama: 'Ollama (local, offline, no key)',
|
|
15
|
+
};
|
|
6
16
|
export const configCommand = new Command('config')
|
|
7
|
-
.description('Configure OwnKey
|
|
8
|
-
.option('--
|
|
9
|
-
.option('--
|
|
10
|
-
.option('--
|
|
11
|
-
.option('--
|
|
12
|
-
.option('--
|
|
17
|
+
.description('Configure OwnKey (AI provider, optional database)')
|
|
18
|
+
.option('--show', 'Show the current configuration')
|
|
19
|
+
.option('--provider <provider>', `AI provider (${AI_PROVIDERS.join(', ')})`)
|
|
20
|
+
.option('--api-key <key>', 'API key for the provider (not needed for ollama)')
|
|
21
|
+
.option('--model <model>', 'Model name to use (any model your key can access)')
|
|
22
|
+
.option('--endpoint <url>', 'Base URL: Ollama server, or an OpenAI-compatible API for --provider openai')
|
|
23
|
+
.option('--database-url <url>', 'Optional Postgres connection string (Supabase ā Connect) for history')
|
|
24
|
+
.option('--supabase-url <url>', 'Alias of --database-url (must be the postgresql:// connection string)')
|
|
25
|
+
.option('--supabase-key <key>', 'Deprecated, no longer needed (the connection string holds the password)')
|
|
26
|
+
.option('--no-database', 'Remove the database and use local storage only')
|
|
13
27
|
.option('--reset', 'Reset configuration to defaults')
|
|
28
|
+
.option('-y, --yes', 'Skip confirmation prompts')
|
|
14
29
|
.action(async (options) => {
|
|
15
30
|
try {
|
|
16
|
-
// Handle reset
|
|
17
31
|
if (options.reset) {
|
|
18
|
-
|
|
19
|
-
{
|
|
20
|
-
type: 'confirm',
|
|
21
|
-
name: 'confirm',
|
|
22
|
-
message: 'Are you sure you want to reset configuration?',
|
|
23
|
-
default: false,
|
|
24
|
-
},
|
|
25
|
-
]);
|
|
26
|
-
if (confirm) {
|
|
27
|
-
await configManager.reset();
|
|
28
|
-
logger.success('Configuration reset successfully');
|
|
29
|
-
}
|
|
32
|
+
await handleReset(Boolean(options.yes));
|
|
30
33
|
return;
|
|
31
34
|
}
|
|
32
|
-
|
|
33
|
-
|
|
35
|
+
const hasFlags = options.show ||
|
|
36
|
+
options.provider ||
|
|
37
|
+
options.apiKey ||
|
|
38
|
+
options.model ||
|
|
39
|
+
options.endpoint ||
|
|
40
|
+
options.databaseUrl ||
|
|
41
|
+
options.supabaseUrl ||
|
|
42
|
+
options.supabaseKey ||
|
|
43
|
+
options.database === false;
|
|
44
|
+
if (hasFlags) {
|
|
34
45
|
await handleFlagBasedConfig(options);
|
|
35
46
|
return;
|
|
36
47
|
}
|
|
37
|
-
|
|
48
|
+
if (!process.stdin.isTTY || !process.stdout.isTTY) {
|
|
49
|
+
console.log(chalk.yellow('\nThe setup wizard needs an interactive terminal. Use flags instead:\n'));
|
|
50
|
+
printFlagHelp();
|
|
51
|
+
await showConfig();
|
|
52
|
+
process.exitCode = 1;
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
38
55
|
await runInteractiveWizard();
|
|
39
56
|
}
|
|
40
57
|
catch (error) {
|
|
41
|
-
|
|
42
|
-
|
|
58
|
+
const message = error.message;
|
|
59
|
+
if (error.name === 'ExitPromptError') {
|
|
60
|
+
console.log(chalk.yellow('\nSetup cancelled.\n'));
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
logger.error(`Configuration failed: ${message}`);
|
|
64
|
+
process.exitCode = 1;
|
|
43
65
|
}
|
|
44
66
|
});
|
|
67
|
+
function printFlagHelp() {
|
|
68
|
+
console.log(chalk.cyan(' ownkey config --provider openai --api-key <key> [--model <model>]'));
|
|
69
|
+
console.log(chalk.cyan(' ownkey config --provider anthropic --api-key <key>'));
|
|
70
|
+
console.log(chalk.cyan(' ownkey config --provider gemini --api-key <key>'));
|
|
71
|
+
console.log(chalk.cyan(' ownkey config --provider ollama [--model qwen2.5-coder] [--endpoint http://localhost:11434]'));
|
|
72
|
+
console.log(chalk.cyan(' ownkey config --database-url "postgresql://..." (optional history in Supabase/Postgres)'));
|
|
73
|
+
console.log(chalk.cyan(' ownkey config --show\n'));
|
|
74
|
+
}
|
|
75
|
+
function fail(message) {
|
|
76
|
+
throw new Error(message);
|
|
77
|
+
}
|
|
78
|
+
function isPostgresUrl(url) {
|
|
79
|
+
return /^postgres(ql)?:\/\//i.test(url);
|
|
80
|
+
}
|
|
81
|
+
async function handleReset(skipConfirm) {
|
|
82
|
+
if (!skipConfirm) {
|
|
83
|
+
if (!process.stdin.isTTY)
|
|
84
|
+
fail('Add --yes to reset without a prompt');
|
|
85
|
+
const { confirm } = await inquirer.prompt([
|
|
86
|
+
{ type: 'confirm', name: 'confirm', message: 'Reset configuration to defaults?', default: false },
|
|
87
|
+
]);
|
|
88
|
+
if (!confirm)
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
await configManager.reset();
|
|
92
|
+
for (const p of AI_PROVIDERS)
|
|
93
|
+
await keychainManager.deleteApiKey(p).catch(() => undefined);
|
|
94
|
+
logger.success('Configuration and stored API keys reset');
|
|
95
|
+
}
|
|
45
96
|
async function handleFlagBasedConfig(options) {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
97
|
+
let changed = false;
|
|
98
|
+
// ---- Database (optional)
|
|
99
|
+
const dbUrl = options.databaseUrl ?? options.supabaseUrl;
|
|
100
|
+
if (options.database === false) {
|
|
101
|
+
await configManager.clearDatabase();
|
|
102
|
+
logger.success('Database removed. OwnKey will use local storage only.');
|
|
103
|
+
changed = true;
|
|
104
|
+
}
|
|
105
|
+
else if (dbUrl) {
|
|
106
|
+
if (!isPostgresUrl(dbUrl)) {
|
|
107
|
+
fail('The database needs your Postgres connection string, e.g.\n' +
|
|
108
|
+
' postgresql://postgres.<ref>:<password>@aws-0-<region>.pooler.supabase.com:5432/postgres\n' +
|
|
109
|
+
' (Supabase dashboard ā Connect ā Session pooler). The https://<ref>.supabase.co URL cannot be used.');
|
|
110
|
+
}
|
|
111
|
+
await configManager.setDatabaseUrl(dbUrl);
|
|
112
|
+
logger.success('Database configured. Tables are created automatically on the next command.');
|
|
113
|
+
if (options.supabaseKey) {
|
|
114
|
+
logger.info('--supabase-key is no longer needed and was ignored.');
|
|
115
|
+
}
|
|
116
|
+
changed = true;
|
|
50
117
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
118
|
+
else if (options.supabaseKey) {
|
|
119
|
+
fail('--supabase-key is no longer used. Pass your connection string with --database-url "postgresql://..."');
|
|
120
|
+
}
|
|
121
|
+
// ---- AI provider
|
|
122
|
+
const config = await configManager.load();
|
|
123
|
+
if (options.provider) {
|
|
124
|
+
const provider = String(options.provider).toLowerCase();
|
|
125
|
+
if (!AI_PROVIDERS.includes(provider)) {
|
|
126
|
+
fail(`Unknown provider "${options.provider}". Use one of: ${AI_PROVIDERS.join(', ')}`);
|
|
127
|
+
}
|
|
128
|
+
if (provider !== 'ollama' && !options.apiKey) {
|
|
129
|
+
const existing = await configManager.getApiKey(provider);
|
|
130
|
+
if (!existing) {
|
|
131
|
+
fail(`--api-key is required for ${provider}. Example: ownkey config --provider ${provider} --api-key <key>`);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (options.endpoint && provider !== 'ollama' && provider !== 'openai') {
|
|
135
|
+
fail('--endpoint works with --provider ollama or --provider openai (OpenAI-compatible APIs)');
|
|
136
|
+
}
|
|
137
|
+
await configManager.setProvider(provider, options.apiKey, options.model, options.endpoint);
|
|
138
|
+
const model = (await configManager.load()).providers[provider]?.model || AIProviderFactory.getRecommendedModel(provider);
|
|
139
|
+
logger.success(`Provider set to ${provider} (model: ${model})`);
|
|
140
|
+
if (provider === 'ollama') {
|
|
141
|
+
const endpoint = options.endpoint || config.providers.ollama?.endpoint || 'http://localhost:11434';
|
|
142
|
+
if (!(await OllamaProvider.isOllamaRunning(endpoint))) {
|
|
143
|
+
logger.warn(`Ollama is not reachable at ${endpoint}. Start it with: ollama serve`);
|
|
144
|
+
}
|
|
145
|
+
else if (!(await OllamaProvider.isModelInstalled(model, endpoint))) {
|
|
146
|
+
logger.warn(`Model "${model}" is not installed. Run: ollama pull ${model}`);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
changed = true;
|
|
150
|
+
}
|
|
151
|
+
else if (options.apiKey || options.model || options.endpoint) {
|
|
152
|
+
// Update the active provider in place
|
|
153
|
+
const provider = config.activeProvider;
|
|
154
|
+
if (!provider) {
|
|
155
|
+
fail('No provider selected yet. Add --provider <name> (' + AI_PROVIDERS.join(', ') + ')');
|
|
156
|
+
}
|
|
157
|
+
if (options.endpoint && provider !== 'ollama' && provider !== 'openai') {
|
|
158
|
+
fail('--endpoint works with the ollama or openai provider');
|
|
159
|
+
}
|
|
160
|
+
await configManager.setProvider(provider, options.apiKey, options.model, options.endpoint);
|
|
161
|
+
logger.success(`Updated ${provider} settings`);
|
|
162
|
+
changed = true;
|
|
163
|
+
}
|
|
164
|
+
if (options.show || !changed) {
|
|
165
|
+
await showConfig();
|
|
56
166
|
}
|
|
57
167
|
}
|
|
58
|
-
async function
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
console.log(chalk.bold('
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
{
|
|
66
|
-
type: 'confirm',
|
|
67
|
-
name: 'configureSupabase',
|
|
68
|
-
message: 'Configure Supabase database?',
|
|
69
|
-
default: true,
|
|
70
|
-
},
|
|
71
|
-
]);
|
|
72
|
-
if (configureSupabase) {
|
|
73
|
-
const supabaseAnswers = await inquirer.prompt([
|
|
74
|
-
{
|
|
75
|
-
type: 'input',
|
|
76
|
-
name: 'url',
|
|
77
|
-
message: 'Supabase URL:',
|
|
78
|
-
validate: (input) => {
|
|
79
|
-
if (!input)
|
|
80
|
-
return 'URL is required';
|
|
81
|
-
if (!input.startsWith('postgresql://')) {
|
|
82
|
-
return 'URL should start with postgresql://';
|
|
83
|
-
}
|
|
84
|
-
return true;
|
|
85
|
-
},
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
type: 'password',
|
|
89
|
-
name: 'key',
|
|
90
|
-
message: 'Supabase Service Role Key:',
|
|
91
|
-
validate: (input) => (input ? true : 'Service role key is required'),
|
|
92
|
-
},
|
|
93
|
-
]);
|
|
94
|
-
await configManager.setSupabase(supabaseAnswers.url, supabaseAnswers.key);
|
|
95
|
-
logger.success('Supabase configured');
|
|
168
|
+
async function showConfig() {
|
|
169
|
+
const exists = await configManager.exists();
|
|
170
|
+
const config = await configManager.load();
|
|
171
|
+
console.log(chalk.bold('\nOwnKey configuration\n'));
|
|
172
|
+
if (!exists) {
|
|
173
|
+
console.log(chalk.gray(' Not configured yet.\n'));
|
|
174
|
+
return;
|
|
96
175
|
}
|
|
97
|
-
|
|
98
|
-
|
|
176
|
+
const provider = config.activeProvider;
|
|
177
|
+
console.log(` Provider: ${provider ? chalk.cyan(provider) : chalk.yellow('not set')}`);
|
|
178
|
+
if (provider) {
|
|
179
|
+
const p = config.providers[provider];
|
|
180
|
+
console.log(` Model: ${p?.model || AIProviderFactory.getRecommendedModel(provider)}`);
|
|
181
|
+
if (p?.endpoint)
|
|
182
|
+
console.log(` Endpoint: ${p.endpoint}`);
|
|
183
|
+
if (provider !== 'ollama') {
|
|
184
|
+
const key = await configManager.getApiKey(provider);
|
|
185
|
+
console.log(` API key: ${key ? chalk.green('stored') + chalk.gray(` (ā¦${key.slice(-4)})`) : chalk.red('missing')}`);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
const dbUrl = configManager.getDatabaseUrl(config);
|
|
189
|
+
console.log(` Database: ${dbUrl ? chalk.green('configured') + chalk.gray(` (${redact(dbUrl)})`) : chalk.gray('none (local storage)')}`);
|
|
190
|
+
console.log();
|
|
191
|
+
}
|
|
192
|
+
function redact(url) {
|
|
193
|
+
try {
|
|
194
|
+
const u = new URL(url);
|
|
195
|
+
if (u.password)
|
|
196
|
+
u.password = '****';
|
|
197
|
+
return u.toString();
|
|
99
198
|
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
199
|
+
catch {
|
|
200
|
+
return 'postgresql://****';
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
async function runInteractiveWizard() {
|
|
204
|
+
console.log(chalk.cyan('\nš§ OwnKey setup\n'));
|
|
205
|
+
// Step 1: AI provider (required)
|
|
206
|
+
console.log(chalk.bold('Step 1: AI provider'));
|
|
103
207
|
const { provider } = await inquirer.prompt([
|
|
104
208
|
{
|
|
105
209
|
type: 'list',
|
|
106
210
|
name: 'provider',
|
|
107
211
|
message: 'Choose AI provider:',
|
|
108
|
-
choices: [
|
|
109
|
-
{ name: 'OpenAI (GPT-4)', value: 'openai' },
|
|
110
|
-
{ name: 'Anthropic (Claude)', value: 'anthropic' },
|
|
111
|
-
{ name: 'Google Gemini', value: 'gemini' },
|
|
112
|
-
{ name: 'Ollama (Local)', value: 'ollama' },
|
|
113
|
-
],
|
|
212
|
+
choices: AI_PROVIDERS.map((p) => ({ name: PROVIDER_NAMES[p], value: p })),
|
|
114
213
|
},
|
|
115
214
|
]);
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
215
|
+
let apiKey;
|
|
216
|
+
let endpoint;
|
|
217
|
+
let model;
|
|
218
|
+
if (provider === 'ollama') {
|
|
219
|
+
({ endpoint } = await inquirer.prompt([
|
|
220
|
+
{ type: 'input', name: 'endpoint', message: 'Ollama URL:', default: 'http://localhost:11434' },
|
|
221
|
+
]));
|
|
222
|
+
const installed = await OllamaProvider.getAvailableModels(endpoint);
|
|
223
|
+
if (installed.length > 0) {
|
|
224
|
+
({ model } = await inquirer.prompt([
|
|
225
|
+
{ type: 'list', name: 'model', message: 'Model:', choices: installed },
|
|
226
|
+
]));
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
logger.warn(`No models found at ${endpoint}. Is Ollama running? (ollama serve)`);
|
|
230
|
+
({ model } = await inquirer.prompt([
|
|
231
|
+
{ type: 'input', name: 'model', message: 'Model name:', default: 'qwen2.5-coder' },
|
|
232
|
+
]));
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
({ apiKey } = await inquirer.prompt([
|
|
120
237
|
{
|
|
121
238
|
type: 'password',
|
|
122
239
|
name: 'apiKey',
|
|
123
|
-
|
|
240
|
+
mask: '*',
|
|
241
|
+
message: `${PROVIDER_NAMES[provider]} API key:`,
|
|
124
242
|
validate: (input) => (input ? true : 'API key is required'),
|
|
125
243
|
},
|
|
244
|
+
]));
|
|
245
|
+
if (provider === 'openai') {
|
|
246
|
+
({ endpoint } = await inquirer.prompt([
|
|
247
|
+
{
|
|
248
|
+
type: 'input',
|
|
249
|
+
name: 'endpoint',
|
|
250
|
+
message: 'Base URL (leave empty for api.openai.com, or any OpenAI-compatible API):',
|
|
251
|
+
},
|
|
252
|
+
]));
|
|
253
|
+
endpoint = endpoint?.trim() || undefined;
|
|
254
|
+
}
|
|
255
|
+
({ model } = await inquirer.prompt([
|
|
256
|
+
{
|
|
257
|
+
type: 'input',
|
|
258
|
+
name: 'model',
|
|
259
|
+
message: 'Model (any model your key can access):',
|
|
260
|
+
default: AIProviderFactory.getRecommendedModel(provider),
|
|
261
|
+
},
|
|
262
|
+
]));
|
|
263
|
+
}
|
|
264
|
+
await configManager.setProvider(provider, apiKey, model, endpoint);
|
|
265
|
+
logger.success(`${provider} configured (model: ${model})`);
|
|
266
|
+
// Step 2: optional database
|
|
267
|
+
console.log(chalk.bold('\nStep 2: Database (optional)'));
|
|
268
|
+
console.log(chalk.gray('OwnKey works fully on its own with local storage.'));
|
|
269
|
+
console.log(chalk.gray('Add a Supabase/Postgres database only if you want history stored there.\n'));
|
|
270
|
+
const { configureDb } = await inquirer.prompt([
|
|
271
|
+
{ type: 'confirm', name: 'configureDb', message: 'Connect a database?', default: false },
|
|
272
|
+
]);
|
|
273
|
+
if (configureDb) {
|
|
274
|
+
const { url } = await inquirer.prompt([
|
|
275
|
+
{
|
|
276
|
+
type: 'password',
|
|
277
|
+
name: 'url',
|
|
278
|
+
mask: '*',
|
|
279
|
+
message: 'Postgres connection string (Supabase ā Connect ā Session pooler):',
|
|
280
|
+
validate: (input) => isPostgresUrl(input) ? true : 'Paste the postgresql://... connection string, not the https:// project URL',
|
|
281
|
+
},
|
|
126
282
|
]);
|
|
127
|
-
await configManager.
|
|
283
|
+
await configManager.setDatabaseUrl(url);
|
|
284
|
+
logger.success('Database configured. Tables are created automatically on first use.');
|
|
128
285
|
}
|
|
129
|
-
|
|
130
|
-
// For Ollama, just set it as active provider
|
|
131
|
-
const config = await configManager.load();
|
|
132
|
-
config.activeProvider = 'ollama';
|
|
133
|
-
await configManager.save(config);
|
|
134
|
-
logger.success('Ollama configured (using local endpoint)');
|
|
135
|
-
}
|
|
136
|
-
// Step 3: Test connection (optional)
|
|
137
|
-
console.log(chalk.bold('\nā Configuration Complete!\n'));
|
|
138
|
-
console.log(chalk.green('You can now use OwnKey to analyze your codebase.\n'));
|
|
286
|
+
console.log(chalk.bold.green('\nā Setup complete\n'));
|
|
139
287
|
console.log(chalk.cyan('Next steps:'));
|
|
140
|
-
console.log(chalk.gray(' 1. ownkey scan
|
|
141
|
-
console.log(chalk.gray(' 2. ownkey suggest
|
|
142
|
-
console.log(chalk.gray(' 3. ownkey apply <id>
|
|
288
|
+
console.log(chalk.gray(' 1. ownkey scan . Scan your project'));
|
|
289
|
+
console.log(chalk.gray(' 2. ownkey suggest . Get AI suggestions'));
|
|
290
|
+
console.log(chalk.gray(' 3. ownkey apply <id> Apply one (ownkey undo to revert)\n'));
|
|
143
291
|
}
|
|
144
292
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"suggest.d.ts","sourceRoot":"","sources":["../../src/commands/suggest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"suggest.d.ts","sourceRoot":"","sources":["../../src/commands/suggest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,eAAO,MAAM,cAAc,SAiLrB,CAAC"}
|
package/dist/commands/suggest.js
CHANGED
|
@@ -8,6 +8,8 @@ import { dbOps } from '../db/operations.js';
|
|
|
8
8
|
import { dbClient } from '../db/client.js';
|
|
9
9
|
import chalk from 'chalk';
|
|
10
10
|
import { localStorage } from '../storage/local.js';
|
|
11
|
+
import { configManager } from '../config/manager.js';
|
|
12
|
+
import { meetsSeverity, parseSeverity } from '../utils/severity.js';
|
|
11
13
|
export const suggestCommand = new Command('suggest')
|
|
12
14
|
.description('Generate AI-powered suggestions for your code')
|
|
13
15
|
.argument('[path]', 'Path to analyze', '.')
|
|
@@ -17,6 +19,17 @@ export const suggestCommand = new Command('suggest')
|
|
|
17
19
|
.action(async (path, options) => {
|
|
18
20
|
try {
|
|
19
21
|
const targetPath = resolve(path);
|
|
22
|
+
const minSeverity = parseSeverity(options.severity);
|
|
23
|
+
const typeFilter = options.type?.toLowerCase();
|
|
24
|
+
const config = await configManager.load();
|
|
25
|
+
if (!(await configManager.exists()) || !config.activeProvider) {
|
|
26
|
+
console.log(chalk.yellow('\nā ļø No AI provider configured.\n'));
|
|
27
|
+
console.log('Set one up with:');
|
|
28
|
+
console.log(chalk.cyan(' ownkey config (interactive)'));
|
|
29
|
+
console.log(chalk.cyan(' ownkey config --provider openai --api-key <key>'));
|
|
30
|
+
console.log(chalk.cyan(' ownkey config --provider ollama (local, no key)\n'));
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
20
33
|
if (!existsSync(targetPath)) {
|
|
21
34
|
logger.error(`Path does not exist: ${targetPath}`);
|
|
22
35
|
process.exit(1);
|
|
@@ -64,6 +77,10 @@ export const suggestCommand = new Command('suggest')
|
|
|
64
77
|
const suggestions = [];
|
|
65
78
|
let count = 0;
|
|
66
79
|
for await (const suggestion of provider.analyze(context)) {
|
|
80
|
+
if (typeFilter && suggestion.type !== typeFilter)
|
|
81
|
+
continue;
|
|
82
|
+
if (!meetsSeverity(suggestion.severity, minSeverity))
|
|
83
|
+
continue;
|
|
67
84
|
count++;
|
|
68
85
|
suggestions.push(suggestion);
|
|
69
86
|
// Display suggestion
|
|
@@ -76,56 +93,47 @@ export const suggestCommand = new Command('suggest')
|
|
|
76
93
|
console.log(` ${suggestion.content}`);
|
|
77
94
|
console.log();
|
|
78
95
|
}
|
|
79
|
-
// Step 6: Store
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
96
|
+
// Step 6: Store. Local storage is always written and holds the IDs apply uses;
|
|
97
|
+
// the optional database mirrors them for history.
|
|
98
|
+
let localStored = [];
|
|
99
|
+
try {
|
|
100
|
+
localStored = await localStorage.saveSuggestions(targetPath, projectName, suggestions);
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
logger.warn(`Failed to save suggestions locally: ${error.message}`);
|
|
104
|
+
}
|
|
105
|
+
if (dbClient.isConnected() && suggestions.length > 0) {
|
|
83
106
|
try {
|
|
84
|
-
logger.verbose('Storing suggestions in database...');
|
|
85
107
|
let project = await dbOps.getProjectByPath(targetPath);
|
|
86
108
|
if (!project) {
|
|
87
109
|
project = await dbOps.createProject(projectName, targetPath);
|
|
88
110
|
}
|
|
89
111
|
if (project) {
|
|
90
112
|
const run = await dbOps.createRun(project.id, `suggest ${path}`);
|
|
91
|
-
for (
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
catch (err) {
|
|
100
|
-
logger.warn(`Failed to store suggestion: ${err.message}`);
|
|
113
|
+
for (let i = 0; i < suggestions.length; i++) {
|
|
114
|
+
const stored = await dbOps.createSuggestion(project.id, suggestions[i]);
|
|
115
|
+
if (stored && run)
|
|
116
|
+
await dbOps.linkRunSuggestion(run.id, stored.id);
|
|
117
|
+
if (stored && localStored[i]) {
|
|
118
|
+
await localStorage.updateSuggestion(localStored[i].id, { dbId: stored.id });
|
|
101
119
|
}
|
|
102
120
|
}
|
|
103
121
|
if (run) {
|
|
104
122
|
await dbOps.updateRunStatus(run.id, 'completed', `Generated ${suggestions.length} suggestions`);
|
|
105
123
|
}
|
|
124
|
+
logger.verbose('Saved suggestions to database');
|
|
106
125
|
}
|
|
107
|
-
logger.success('Saved to database');
|
|
108
126
|
}
|
|
109
127
|
catch (error) {
|
|
110
|
-
logger.warn(
|
|
111
|
-
logger.debug(`Database error: ${error.message}`);
|
|
128
|
+
logger.warn(`Database save failed (${error.message}); suggestions are saved locally.`);
|
|
112
129
|
}
|
|
113
130
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
logger.success('Saved locally');
|
|
121
|
-
console.log(chalk.gray(`\n š¾ Suggestion IDs: ${storedIds.slice(0, 3).join(', ')}${storedIds.length > 3 ? '...' : ''}`));
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
logger.verbose('Also cached locally for quick access');
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
catch (error) {
|
|
128
|
-
logger.warn(`Failed to save locally: ${error.message}`);
|
|
131
|
+
if (localStored.length > 0) {
|
|
132
|
+
console.log(chalk.bold('\nš Suggestion IDs\n'));
|
|
133
|
+
localStored.forEach((s, i) => {
|
|
134
|
+
const applicable = s.diff && s.diff.trim() ? chalk.green('apply-ready') : chalk.gray('advice only');
|
|
135
|
+
console.log(` [${i + 1}] ${chalk.cyan(s.id)} ${applicable}`);
|
|
136
|
+
});
|
|
129
137
|
}
|
|
130
138
|
// Summary
|
|
131
139
|
console.log(chalk.bold('\n⨠Analysis Complete!\n'));
|
|
@@ -148,7 +156,9 @@ export const suggestCommand = new Command('suggest')
|
|
|
148
156
|
console.log(` Info: ${chalk.gray(bySeverity.info)}`);
|
|
149
157
|
}
|
|
150
158
|
console.log();
|
|
151
|
-
|
|
159
|
+
if (localStored.some((s) => s.diff && s.diff.trim())) {
|
|
160
|
+
console.log(chalk.cyan(' Next: ownkey apply <id> (or ownkey apply --all)\n'));
|
|
161
|
+
}
|
|
152
162
|
}
|
|
153
163
|
catch (error) {
|
|
154
164
|
logger.error('Suggest failed', error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"suggest.js","sourceRoot":"","sources":["../../src/commands/suggest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"suggest.js","sourceRoot":"","sources":["../../src/commands/suggest.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"undo.d.ts","sourceRoot":"","sources":["../../src/commands/undo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"undo.d.ts","sourceRoot":"","sources":["../../src/commands/undo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBpC,eAAO,MAAM,WAAW,SAuClB,CAAC"}
|