ownkey 0.8.0 → 1.0.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/LICENSE +21 -21
- package/README.md +86 -208
- 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 +63 -19
- 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 +162 -134
- 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 +10 -1
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +69 -87
- 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 +83 -0
- package/dist/storage/local.d.ts.map +1 -0
- package/dist/storage/local.js +198 -0
- package/dist/storage/local.js.map +1 -0
- 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/undo.js
CHANGED
|
@@ -4,13 +4,27 @@ import { dbClient } from '../db/client.js';
|
|
|
4
4
|
import { logger } from '../utils/logger.js';
|
|
5
5
|
import chalk from 'chalk';
|
|
6
6
|
import inquirer from 'inquirer';
|
|
7
|
+
import { localStorage } from '../storage/local.js';
|
|
8
|
+
let assumeYes = false;
|
|
9
|
+
/** Confirm, honouring --yes and refusing to hang when there is no terminal. */
|
|
10
|
+
async function confirmOrYes(message) {
|
|
11
|
+
if (assumeYes)
|
|
12
|
+
return true;
|
|
13
|
+
if (!process.stdin.isTTY) {
|
|
14
|
+
throw new Error('No terminal to confirm in. Re-run with --yes.');
|
|
15
|
+
}
|
|
16
|
+
const { confirm } = await inquirer.prompt([{ type: 'confirm', name: 'confirm', message, default: false }]);
|
|
17
|
+
return confirm;
|
|
18
|
+
}
|
|
7
19
|
export const undoCommand = new Command('undo')
|
|
8
20
|
.description('Undo a previously applied suggestion')
|
|
9
21
|
.argument('[backup-id]', 'Backup ID to restore (optional)')
|
|
10
22
|
.option('--list', 'List recent applies')
|
|
11
23
|
.option('--all', 'Undo all applies from today')
|
|
24
|
+
.option('-y, --yes', 'Skip the confirmation prompt')
|
|
12
25
|
.action(async (backupId, options) => {
|
|
13
26
|
try {
|
|
27
|
+
assumeYes = Boolean(options.yes);
|
|
14
28
|
const backupManager = new BackupManager();
|
|
15
29
|
// List mode
|
|
16
30
|
if (options.list) {
|
|
@@ -28,11 +42,15 @@ export const undoCommand = new Command('undo')
|
|
|
28
42
|
return;
|
|
29
43
|
}
|
|
30
44
|
// Interactive mode - show list and let user choose
|
|
45
|
+
if (!process.stdin.isTTY) {
|
|
46
|
+
await listRecentApplies(backupManager);
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
31
49
|
await interactiveUndo(backupManager);
|
|
32
50
|
}
|
|
33
51
|
catch (error) {
|
|
34
|
-
logger.error(
|
|
35
|
-
process.
|
|
52
|
+
logger.error(`Undo failed: ${error.message}`);
|
|
53
|
+
process.exitCode = 1;
|
|
36
54
|
}
|
|
37
55
|
});
|
|
38
56
|
/**
|
|
@@ -60,8 +78,9 @@ async function undoBackup(backupManager, backupId) {
|
|
|
60
78
|
// Get backup metadata
|
|
61
79
|
const metadata = await backupManager.getBackupMetadata(backupId);
|
|
62
80
|
if (!metadata) {
|
|
63
|
-
logger.error(`Backup not found: ${backupId}`);
|
|
64
|
-
process.
|
|
81
|
+
logger.error(`Backup not found: ${backupId}. See: ownkey undo --list`);
|
|
82
|
+
process.exitCode = 1;
|
|
83
|
+
return;
|
|
65
84
|
}
|
|
66
85
|
// Show what will be restored
|
|
67
86
|
console.log(chalk.bold(`\n🔄 Restoring from backup: ${chalk.cyan(backupId)}\n`));
|
|
@@ -69,27 +88,24 @@ async function undoBackup(backupManager, backupId) {
|
|
|
69
88
|
for (const file of metadata.files) {
|
|
70
89
|
console.log(chalk.gray(` - ${file}`));
|
|
71
90
|
}
|
|
91
|
+
for (const file of metadata.created || []) {
|
|
92
|
+
console.log(chalk.gray(` - ${file} (created by apply, will be removed)`));
|
|
93
|
+
}
|
|
72
94
|
// Confirm
|
|
73
|
-
const
|
|
74
|
-
{
|
|
75
|
-
type: 'confirm',
|
|
76
|
-
name: 'confirm',
|
|
77
|
-
message: 'Are you sure you want to restore these files?',
|
|
78
|
-
default: false,
|
|
79
|
-
},
|
|
80
|
-
]);
|
|
95
|
+
const confirm = await confirmOrYes('Restore these files?');
|
|
81
96
|
if (!confirm) {
|
|
82
97
|
console.log(chalk.yellow('\n Undo cancelled.\n'));
|
|
83
98
|
return;
|
|
84
99
|
}
|
|
85
100
|
// Restore
|
|
86
101
|
await backupManager.restore(backupId);
|
|
102
|
+
await localStorage.clearApplied(backupId).catch(() => undefined);
|
|
87
103
|
// Update database if connected
|
|
88
104
|
if (dbClient.isConnected()) {
|
|
89
105
|
await markAsRolledBack(backupId);
|
|
90
106
|
}
|
|
91
107
|
logger.success('Files restored successfully!');
|
|
92
|
-
console.log(chalk.green(`\n✓ Restored ${metadata.files.length} file(s) from backup\n`));
|
|
108
|
+
console.log(chalk.green(`\n✓ Restored ${metadata.files.length + (metadata.created?.length ?? 0)} file(s) from backup\n`));
|
|
93
109
|
}
|
|
94
110
|
/**
|
|
95
111
|
* Undo all applies from today
|
|
@@ -111,14 +127,7 @@ async function undoAllToday(backupManager) {
|
|
|
111
127
|
for (const backup of todayBackups) {
|
|
112
128
|
console.log(` ${chalk.cyan(backup.id)} - ${backup.fileCount} file(s)`);
|
|
113
129
|
}
|
|
114
|
-
const
|
|
115
|
-
{
|
|
116
|
-
type: 'confirm',
|
|
117
|
-
name: 'confirm',
|
|
118
|
-
message: `Undo all ${todayBackups.length} apply(ies)?`,
|
|
119
|
-
default: false,
|
|
120
|
-
},
|
|
121
|
-
]);
|
|
130
|
+
const confirm = await confirmOrYes(`Undo all ${todayBackups.length} apply(ies)?`);
|
|
122
131
|
if (!confirm) {
|
|
123
132
|
console.log(chalk.yellow('\n Undo cancelled.\n'));
|
|
124
133
|
return;
|
|
@@ -127,6 +136,7 @@ async function undoAllToday(backupManager) {
|
|
|
127
136
|
for (const backup of todayBackups) {
|
|
128
137
|
console.log(chalk.gray(`\n Restoring ${backup.id}...`));
|
|
129
138
|
await backupManager.restore(backup.id);
|
|
139
|
+
await localStorage.clearApplied(backup.id).catch(() => undefined);
|
|
130
140
|
if (dbClient.isConnected()) {
|
|
131
141
|
await markAsRolledBack(backup.id);
|
|
132
142
|
}
|
|
@@ -170,10 +180,10 @@ async function markAsRolledBack(backupId) {
|
|
|
170
180
|
if (!sql) {
|
|
171
181
|
return;
|
|
172
182
|
}
|
|
173
|
-
await sql `
|
|
174
|
-
UPDATE applies
|
|
175
|
-
SET status = 'rolled_back'
|
|
176
|
-
WHERE backup_id = ${backupId}
|
|
183
|
+
await sql `
|
|
184
|
+
UPDATE applies
|
|
185
|
+
SET status = 'rolled_back'
|
|
186
|
+
WHERE backup_id = ${backupId}
|
|
177
187
|
`;
|
|
178
188
|
}
|
|
179
189
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"undo.js","sourceRoot":"","sources":["../../src/commands/undo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"undo.js","sourceRoot":"","sources":["../../src/commands/undo.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keychain.d.ts","sourceRoot":"","sources":["../../src/config/keychain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"keychain.d.ts","sourceRoot":"","sources":["../../src/config/keychain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAwB/C,qBAAa,eAAe;IACxB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,WAAW,CAAU;;YAOf,aAAa;IAOrB,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB9D,SAAS,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAyBvD,YAAY,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;YAmBzC,gBAAgB;YA0BhB,cAAc;CAK/B;AAED,eAAO,MAAM,eAAe,iBAAwB,CAAC"}
|
package/dist/config/keychain.js
CHANGED
|
@@ -6,9 +6,13 @@ import { logger } from '../utils/logger.js';
|
|
|
6
6
|
import { Encryption } from '../utils/encryption.js';
|
|
7
7
|
import { KEYS_FILE, CONFIG_DIR } from './defaults.js';
|
|
8
8
|
// Try to use keytar, but fallback gracefully if not available
|
|
9
|
+
// Set OWNKEY_NO_KEYCHAIN=1 to force file storage (CI, containers, tests).
|
|
9
10
|
let keytar = null;
|
|
10
11
|
try {
|
|
11
|
-
|
|
12
|
+
if (!process.env.OWNKEY_NO_KEYCHAIN) {
|
|
13
|
+
const mod = await import('keytar');
|
|
14
|
+
keytar = mod.default ?? mod;
|
|
15
|
+
}
|
|
12
16
|
}
|
|
13
17
|
catch (error) {
|
|
14
18
|
logger.verbose('Keytar not available, using encrypted file storage for API keys');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keychain.js","sourceRoot":"","sources":["../../src/config/keychain.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEtD,8DAA8D;AAC9D,IAAI,MAAM,GAAQ,IAAI,CAAC;AACvB,IAAI,CAAC;IACD,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"keychain.js","sourceRoot":"","sources":["../../src/config/keychain.ts"],"names":[],"mappings":"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"}
|
package/dist/config/manager.d.ts
CHANGED
|
@@ -8,8 +8,21 @@ export declare class ConfigManager {
|
|
|
8
8
|
load(): Promise<Config>;
|
|
9
9
|
save(config: Config): Promise<void>;
|
|
10
10
|
update(updates: Partial<Config>): Promise<void>;
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
/**
|
|
12
|
+
* Save the optional Postgres connection string (Supabase or any Postgres).
|
|
13
|
+
*/
|
|
14
|
+
setDatabaseUrl(url: string): Promise<void>;
|
|
15
|
+
clearDatabase(): Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* Resolve the Postgres connection string, honouring the legacy supabaseUrl field
|
|
18
|
+
* when it already holds a postgres:// URL.
|
|
19
|
+
*/
|
|
20
|
+
getDatabaseUrl(config: Config): string | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* Set the active provider. apiKey is optional when one is already stored
|
|
23
|
+
* (or for Ollama, which needs none).
|
|
24
|
+
*/
|
|
25
|
+
setProvider(provider: AIProvider, apiKey?: string, model?: string, endpoint?: string): Promise<void>;
|
|
13
26
|
getApiKey(provider?: AIProvider): Promise<string | null>;
|
|
14
27
|
validate(): Promise<{
|
|
15
28
|
valid: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/config/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAe,UAAU,EAAE,MAAM,mBAAmB,CAAC;AASpE,qBAAa,aAAa;IACtB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAuB;;IAM/B,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAQhC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAI1B,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAoCvB,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAanC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/config/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAe,UAAU,EAAE,MAAM,mBAAmB,CAAC;AASpE,qBAAa,aAAa;IACtB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAuB;;IAM/B,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAQhC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAI1B,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAoCvB,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAanC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBrD;;OAEG;IACG,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS1C,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAQpC;;;OAGG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAQlD;;;OAGG;IACG,WAAW,CACb,QAAQ,EAAE,UAAU,EACpB,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IAgBV,SAAS,CAAC,QAAQ,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAWxD,QAAQ,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IA0BzD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAO/B;AAED,eAAO,MAAM,aAAa,eAAsB,CAAC"}
|
package/dist/config/manager.js
CHANGED
|
@@ -82,25 +82,54 @@ export class ConfigManager {
|
|
|
82
82
|
};
|
|
83
83
|
await this.save(updated);
|
|
84
84
|
}
|
|
85
|
-
|
|
85
|
+
/**
|
|
86
|
+
* Save the optional Postgres connection string (Supabase or any Postgres).
|
|
87
|
+
*/
|
|
88
|
+
async setDatabaseUrl(url) {
|
|
86
89
|
const config = await this.load();
|
|
87
|
-
config.
|
|
88
|
-
|
|
90
|
+
config.databaseUrl = url;
|
|
91
|
+
// Clear legacy fields so there is a single source of truth
|
|
92
|
+
delete config.supabaseUrl;
|
|
93
|
+
delete config.supabaseServiceRoleKey;
|
|
89
94
|
await this.save(config);
|
|
90
|
-
logger.success('Supabase configuration saved');
|
|
91
95
|
}
|
|
92
|
-
async
|
|
96
|
+
async clearDatabase() {
|
|
97
|
+
const config = await this.load();
|
|
98
|
+
delete config.databaseUrl;
|
|
99
|
+
delete config.supabaseUrl;
|
|
100
|
+
delete config.supabaseServiceRoleKey;
|
|
101
|
+
await this.save(config);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Resolve the Postgres connection string, honouring the legacy supabaseUrl field
|
|
105
|
+
* when it already holds a postgres:// URL.
|
|
106
|
+
*/
|
|
107
|
+
getDatabaseUrl(config) {
|
|
108
|
+
if (config.databaseUrl)
|
|
109
|
+
return config.databaseUrl;
|
|
110
|
+
if (config.supabaseUrl && /^postgres(ql)?:\/\//i.test(config.supabaseUrl)) {
|
|
111
|
+
return config.supabaseUrl;
|
|
112
|
+
}
|
|
113
|
+
return undefined;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Set the active provider. apiKey is optional when one is already stored
|
|
117
|
+
* (or for Ollama, which needs none).
|
|
118
|
+
*/
|
|
119
|
+
async setProvider(provider, apiKey, model, endpoint) {
|
|
93
120
|
const config = await this.load();
|
|
94
121
|
config.activeProvider = provider;
|
|
95
|
-
if (model) {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
122
|
+
if (model || endpoint) {
|
|
123
|
+
const entry = (config.providers[provider] ??= {});
|
|
124
|
+
if (model)
|
|
125
|
+
entry.model = model;
|
|
126
|
+
if (endpoint)
|
|
127
|
+
entry.endpoint = endpoint;
|
|
100
128
|
}
|
|
101
129
|
await this.save(config);
|
|
102
|
-
|
|
103
|
-
|
|
130
|
+
if (apiKey) {
|
|
131
|
+
await keychainManager.setApiKey(provider, apiKey);
|
|
132
|
+
}
|
|
104
133
|
}
|
|
105
134
|
async getApiKey(provider) {
|
|
106
135
|
const config = await this.load();
|
|
@@ -119,7 +148,7 @@ export class ConfigManager {
|
|
|
119
148
|
errors.push('No active AI provider configured. Run: ownkey config');
|
|
120
149
|
}
|
|
121
150
|
// Check if API key exists for active provider
|
|
122
|
-
if (config.activeProvider) {
|
|
151
|
+
if (config.activeProvider && config.activeProvider !== 'ollama') {
|
|
123
152
|
const apiKey = await this.getApiKey(config.activeProvider);
|
|
124
153
|
if (!apiKey) {
|
|
125
154
|
errors.push(`No API key found for ${config.activeProvider}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/config/manager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/config/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ export interface ApplyOptions {
|
|
|
3
3
|
dryRun?: boolean;
|
|
4
4
|
force?: boolean;
|
|
5
5
|
createBackup?: boolean;
|
|
6
|
+
/** Show each change and ask before writing (default when not --auto) */
|
|
6
7
|
interactive?: boolean;
|
|
7
8
|
}
|
|
8
9
|
export interface ApplyEngineResult {
|
|
@@ -12,25 +13,31 @@ export interface ApplyEngineResult {
|
|
|
12
13
|
backupId?: string;
|
|
13
14
|
error?: string;
|
|
14
15
|
warnings?: string[];
|
|
16
|
+
/** User declined in interactive mode */
|
|
17
|
+
skipped?: boolean;
|
|
18
|
+
/** User chose "quit" in interactive mode */
|
|
19
|
+
quit?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface LoadedSuggestion {
|
|
22
|
+
id: string;
|
|
23
|
+
diff: string;
|
|
24
|
+
filePath?: string;
|
|
25
|
+
projectPath?: string;
|
|
26
|
+
localId?: string;
|
|
27
|
+
dbId?: string;
|
|
28
|
+
appliedAt?: string;
|
|
29
|
+
backupId?: string;
|
|
15
30
|
}
|
|
16
31
|
export declare class ApplyEngine {
|
|
17
32
|
private backupManager;
|
|
18
|
-
constructor();
|
|
19
|
-
/**
|
|
20
|
-
* Apply a suggestion to the codebase
|
|
21
|
-
*/
|
|
33
|
+
constructor(backupManager?: BackupManager);
|
|
22
34
|
applySuggestion(suggestionId: string, options?: ApplyOptions): Promise<ApplyEngineResult>;
|
|
35
|
+
private resolveRoot;
|
|
23
36
|
/**
|
|
24
|
-
* Load suggestion from database
|
|
25
|
-
*/
|
|
26
|
-
private loadSuggestion;
|
|
27
|
-
/**
|
|
28
|
-
* Record apply operation in database
|
|
37
|
+
* Load a suggestion from local storage (always written by suggest) or the optional database.
|
|
29
38
|
*/
|
|
39
|
+
loadSuggestion(suggestionId: string): Promise<LoadedSuggestion | null>;
|
|
30
40
|
private recordApply;
|
|
31
|
-
/**
|
|
32
|
-
* Get backup manager instance
|
|
33
|
-
*/
|
|
34
41
|
getBackupManager(): BackupManager;
|
|
35
42
|
}
|
|
36
43
|
//# sourceMappingURL=engine.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/core/apply/engine.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/core/apply/engine.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AASnD,MAAM,WAAW,YAAY;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,wEAAwE;IACxE,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,wCAAwC;IACxC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAWD,qBAAa,WAAW;IACpB,OAAO,CAAC,aAAa,CAAgB;gBAEzB,aAAa,CAAC,EAAE,aAAa;IAInC,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAwJnG,OAAO,CAAC,WAAW;IAUnB;;OAEG;IACG,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAsC9D,WAAW;IASzB,gBAAgB,IAAI,aAAa;CAGpC"}
|