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.
Files changed (91) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +86 -208
  3. package/dist/ai/factory.js +2 -2
  4. package/dist/ai/factory.js.map +1 -1
  5. package/dist/ai/gemini.d.ts.map +1 -1
  6. package/dist/ai/gemini.js +13 -3
  7. package/dist/ai/gemini.js.map +1 -1
  8. package/dist/ai/ollama.d.ts +0 -2
  9. package/dist/ai/ollama.d.ts.map +1 -1
  10. package/dist/ai/ollama.js +20 -93
  11. package/dist/ai/ollama.js.map +1 -1
  12. package/dist/ai/openai.d.ts +4 -1
  13. package/dist/ai/openai.d.ts.map +1 -1
  14. package/dist/ai/openai.js +7 -3
  15. package/dist/ai/openai.js.map +1 -1
  16. package/dist/ai/provider.d.ts +4 -0
  17. package/dist/ai/provider.d.ts.map +1 -1
  18. package/dist/ai/provider.js +80 -47
  19. package/dist/ai/provider.js.map +1 -1
  20. package/dist/commands/apply.d.ts.map +1 -1
  21. package/dist/commands/apply.js +82 -47
  22. package/dist/commands/apply.js.map +1 -1
  23. package/dist/commands/config.d.ts.map +1 -1
  24. package/dist/commands/config.js +249 -101
  25. package/dist/commands/config.js.map +1 -1
  26. package/dist/commands/suggest.d.ts.map +1 -1
  27. package/dist/commands/suggest.js +63 -19
  28. package/dist/commands/suggest.js.map +1 -1
  29. package/dist/commands/undo.d.ts.map +1 -1
  30. package/dist/commands/undo.js +35 -25
  31. package/dist/commands/undo.js.map +1 -1
  32. package/dist/config/keychain.d.ts.map +1 -1
  33. package/dist/config/keychain.js +5 -1
  34. package/dist/config/keychain.js.map +1 -1
  35. package/dist/config/manager.d.ts +15 -2
  36. package/dist/config/manager.d.ts.map +1 -1
  37. package/dist/config/manager.js +42 -13
  38. package/dist/config/manager.js.map +1 -1
  39. package/dist/core/apply/engine.d.ts +19 -12
  40. package/dist/core/apply/engine.d.ts.map +1 -1
  41. package/dist/core/apply/engine.js +162 -134
  42. package/dist/core/apply/engine.js.map +1 -1
  43. package/dist/core/apply/index.d.ts +4 -2
  44. package/dist/core/apply/index.d.ts.map +1 -1
  45. package/dist/core/apply/index.js.map +1 -1
  46. package/dist/core/apply/interactive.d.ts +1 -1
  47. package/dist/core/apply/interactive.d.ts.map +1 -1
  48. package/dist/core/apply/interactive.js.map +1 -1
  49. package/dist/core/backup/index.d.ts +2 -1
  50. package/dist/core/backup/index.d.ts.map +1 -1
  51. package/dist/core/backup/index.js.map +1 -1
  52. package/dist/core/backup/manager.d.ts +6 -1
  53. package/dist/core/backup/manager.d.ts.map +1 -1
  54. package/dist/core/backup/manager.js +26 -18
  55. package/dist/core/backup/manager.js.map +1 -1
  56. package/dist/core/diff/applier.d.ts +23 -8
  57. package/dist/core/diff/applier.d.ts.map +1 -1
  58. package/dist/core/diff/applier.js +85 -80
  59. package/dist/core/diff/applier.js.map +1 -1
  60. package/dist/core/diff/index.d.ts +6 -3
  61. package/dist/core/diff/index.d.ts.map +1 -1
  62. package/dist/core/diff/index.js.map +1 -1
  63. package/dist/core/diff/parser.d.ts +2 -0
  64. package/dist/core/diff/parser.d.ts.map +1 -1
  65. package/dist/core/diff/parser.js +15 -5
  66. package/dist/core/diff/parser.js.map +1 -1
  67. package/dist/core/diff/validator.d.ts +3 -8
  68. package/dist/core/diff/validator.d.ts.map +1 -1
  69. package/dist/core/diff/validator.js +13 -71
  70. package/dist/core/diff/validator.js.map +1 -1
  71. package/dist/db/client.d.ts +10 -1
  72. package/dist/db/client.d.ts.map +1 -1
  73. package/dist/db/client.js +69 -87
  74. package/dist/db/client.js.map +1 -1
  75. package/dist/db/migrations/001_init.sql +80 -80
  76. package/dist/db/migrations/002_applies.sql +33 -32
  77. package/dist/index.js +13 -20
  78. package/dist/index.js.map +1 -1
  79. package/dist/storage/local.d.ts +83 -0
  80. package/dist/storage/local.d.ts.map +1 -0
  81. package/dist/storage/local.js +198 -0
  82. package/dist/storage/local.js.map +1 -0
  83. package/dist/types/index.d.ts +7 -0
  84. package/dist/types/index.d.ts.map +1 -1
  85. package/dist/types/index.js +1 -0
  86. package/dist/types/index.js.map +1 -1
  87. package/dist/utils/severity.d.ts +6 -0
  88. package/dist/utils/severity.d.ts.map +1 -0
  89. package/dist/utils/severity.js +19 -0
  90. package/dist/utils/severity.js.map +1 -0
  91. package/package.json +72 -72
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/storage/local.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG/C,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IAChD,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,qBAAa,YAAY;IACrB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,UAAU,CAAS;;IAS3B;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB3B;;;OAGG;IACG,eAAe,CACjB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,UAAU,EAAE,GAC1B,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAgD9B;;OAEG;IACG,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAKlE;;OAEG;IACG,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAStG;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAanD;;OAEG;IACG,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAKjF;;OAEG;YACW,kBAAkB;IAUhC;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAgBnF;;OAEG;IACG,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAaxD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC;QACtB,gBAAgB,EAAE,MAAM,CAAC;QACzB,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;QAChC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;KACnC,CAAC;CAaL;AAGD,eAAO,MAAM,YAAY,cAAqB,CAAC"}
@@ -0,0 +1,198 @@
1
+ import { writeFile, readFile, mkdir } from 'fs/promises';
2
+ import { existsSync } from 'fs';
3
+ import { join } from 'path';
4
+ import { homedir } from 'os';
5
+ import { logger } from '../utils/logger.js';
6
+ /**
7
+ * Local file storage for suggestions and backups
8
+ * Automatically creates ~/.ownkey/storage/ directory
9
+ * Works as primary storage in local-only mode or cache when database is available
10
+ */
11
+ export class LocalStorage {
12
+ storageDir;
13
+ suggestionsFile;
14
+ backupsDir;
15
+ constructor() {
16
+ // Automatically use user's home directory
17
+ this.storageDir = join(homedir(), '.ownkey', 'storage');
18
+ this.suggestionsFile = join(this.storageDir, 'suggestions.json');
19
+ this.backupsDir = join(this.storageDir, 'backups');
20
+ }
21
+ /**
22
+ * Initialize storage directories
23
+ * Creates ~/.ownkey/storage/ if it doesn't exist
24
+ */
25
+ async init() {
26
+ try {
27
+ // Create storage directory
28
+ if (!existsSync(this.storageDir)) {
29
+ await mkdir(this.storageDir, { recursive: true });
30
+ logger.verbose(`Created storage directory: ${this.storageDir}`);
31
+ }
32
+ // Create backups directory
33
+ if (!existsSync(this.backupsDir)) {
34
+ await mkdir(this.backupsDir, { recursive: true });
35
+ logger.verbose(`Created backups directory: ${this.backupsDir}`);
36
+ }
37
+ // Create suggestions file
38
+ if (!existsSync(this.suggestionsFile)) {
39
+ await writeFile(this.suggestionsFile, JSON.stringify([], null, 2));
40
+ logger.verbose(`Created suggestions file: ${this.suggestionsFile}`);
41
+ }
42
+ }
43
+ catch (error) {
44
+ logger.error(`Failed to initialize storage: ${error.message}`);
45
+ throw error;
46
+ }
47
+ }
48
+ /**
49
+ * Save suggestions to local file
50
+ * Automatically cleans up old suggestions (7 days, max 100 per project)
51
+ */
52
+ async saveSuggestions(projectPath, projectName, suggestions) {
53
+ await this.init();
54
+ const timestamp = Date.now();
55
+ const stored = suggestions.map((s, index) => ({
56
+ ...s,
57
+ id: `local-${timestamp}-${index}`,
58
+ projectPath,
59
+ projectName,
60
+ createdAt: new Date().toISOString(),
61
+ }));
62
+ // Read existing suggestions
63
+ const existing = await this.loadAllSuggestions();
64
+ // Filter: keep only recent suggestions (7 days) and limit per project (100)
65
+ const sevenDaysAgo = Date.now() - 7 * 24 * 60 * 60 * 1000;
66
+ const filtered = existing.filter(s => new Date(s.createdAt).getTime() > sevenDaysAgo);
67
+ // Group by project and limit to 100 per project
68
+ const byProject = new Map();
69
+ for (const s of filtered) {
70
+ const list = byProject.get(s.projectPath) || [];
71
+ list.push(s);
72
+ byProject.set(s.projectPath, list);
73
+ }
74
+ // Keep only last 100 per project
75
+ const limited = [];
76
+ for (const [, list] of byProject.entries()) {
77
+ const sorted = list.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
78
+ limited.push(...sorted.slice(0, 100));
79
+ }
80
+ // Add new suggestions
81
+ const updated = [...limited, ...stored];
82
+ // Save to file
83
+ await writeFile(this.suggestionsFile, JSON.stringify(updated, null, 2));
84
+ logger.verbose(`Saved ${stored.length} suggestions locally`);
85
+ return stored;
86
+ }
87
+ /**
88
+ * Load a single suggestion by ID
89
+ */
90
+ async loadSuggestion(id) {
91
+ const all = await this.loadAllSuggestions();
92
+ return all.find(s => s.id === id) || null;
93
+ }
94
+ /**
95
+ * Merge fields into a stored suggestion (e.g. mark applied, link a database id)
96
+ */
97
+ async updateSuggestion(id, patch) {
98
+ const all = await this.loadAllSuggestions();
99
+ const index = all.findIndex((s) => s.id === id);
100
+ if (index === -1)
101
+ return null;
102
+ all[index] = { ...all[index], ...patch, id };
103
+ await writeFile(this.suggestionsFile, JSON.stringify(all, null, 2));
104
+ return all[index];
105
+ }
106
+ /**
107
+ * After an undo: mark the suggestions applied with this backup as pending again
108
+ */
109
+ async clearApplied(backupId) {
110
+ const all = await this.loadAllSuggestions();
111
+ let changed = false;
112
+ for (const s of all) {
113
+ if (s.backupId === backupId) {
114
+ delete s.appliedAt;
115
+ delete s.backupId;
116
+ changed = true;
117
+ }
118
+ }
119
+ if (changed)
120
+ await writeFile(this.suggestionsFile, JSON.stringify(all, null, 2));
121
+ }
122
+ /**
123
+ * Load all suggestions for a specific project
124
+ */
125
+ async loadSuggestionsForProject(projectPath) {
126
+ const all = await this.loadAllSuggestions();
127
+ return all.filter(s => s.projectPath === projectPath);
128
+ }
129
+ /**
130
+ * Load all suggestions from local file
131
+ */
132
+ async loadAllSuggestions() {
133
+ try {
134
+ await this.init();
135
+ const content = await readFile(this.suggestionsFile, 'utf-8');
136
+ return JSON.parse(content);
137
+ }
138
+ catch {
139
+ return [];
140
+ }
141
+ }
142
+ /**
143
+ * Save a backup for undo functionality
144
+ */
145
+ async saveBackup(backup) {
146
+ await this.init();
147
+ const backupInfo = {
148
+ ...backup,
149
+ id: `backup-${Date.now()}`,
150
+ createdAt: new Date().toISOString(),
151
+ };
152
+ const backupFile = join(this.backupsDir, `${backupInfo.id}.json`);
153
+ await writeFile(backupFile, JSON.stringify(backupInfo, null, 2));
154
+ logger.verbose(`Saved backup: ${backupInfo.id}`);
155
+ return backupInfo;
156
+ }
157
+ /**
158
+ * Load a backup by ID
159
+ */
160
+ async loadBackup(id) {
161
+ try {
162
+ const backupFile = join(this.backupsDir, `${id}.json`);
163
+ if (!existsSync(backupFile)) {
164
+ return null;
165
+ }
166
+ const content = await readFile(backupFile, 'utf-8');
167
+ return JSON.parse(content);
168
+ }
169
+ catch {
170
+ return null;
171
+ }
172
+ }
173
+ /**
174
+ * Clear all local suggestions
175
+ */
176
+ async clear() {
177
+ await this.init();
178
+ await writeFile(this.suggestionsFile, JSON.stringify([], null, 2));
179
+ logger.info('Cleared all local suggestions');
180
+ }
181
+ /**
182
+ * Get storage statistics
183
+ */
184
+ async getStats() {
185
+ const all = await this.loadAllSuggestions();
186
+ const projects = new Set(all.map(s => s.projectPath));
187
+ const dates = all.map(s => new Date(s.createdAt).getTime()).sort();
188
+ return {
189
+ totalSuggestions: all.length,
190
+ projectCount: projects.size,
191
+ oldestSuggestion: dates.length > 0 ? new Date(dates[0]).toISOString() : null,
192
+ newestSuggestion: dates.length > 0 ? new Date(dates[dates.length - 1]).toISOString() : null,
193
+ };
194
+ }
195
+ }
196
+ // Singleton instance
197
+ export const localStorage = new LocalStorage();
198
+ //# sourceMappingURL=local.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/storage/local.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,22 @@
1
1
  export type LogLevel = 'quiet' | 'normal' | 'verbose' | 'debug';
2
2
  export type AIProvider = 'openai' | 'anthropic' | 'gemini' | 'ollama';
3
+ export declare const AI_PROVIDERS: AIProvider[];
3
4
  export type SuggestionType = 'bug' | 'security' | 'performance' | 'refactor' | 'style' | 'architecture' | 'test' | 'documentation';
4
5
  export type Severity = 'critical' | 'high' | 'medium' | 'low' | 'info';
5
6
  export type RunStatus = 'running' | 'completed' | 'failed';
6
7
  export type SuggestionAction = 'applied' | 'rejected' | 'undone';
7
8
  export interface Config {
9
+ /** Postgres connection string (Supabase → Connect → connection string). Optional. */
10
+ databaseUrl?: string;
11
+ /** @deprecated Legacy field. A postgres:// value here is treated as databaseUrl. */
8
12
  supabaseUrl?: string;
13
+ /** @deprecated Legacy field, no longer used to connect. */
9
14
  supabaseServiceRoleKey?: string;
10
15
  providers: {
11
16
  openai?: {
12
17
  model?: string;
18
+ /** OpenAI-compatible base URL (e.g. https://openrouter.ai/api/v1) */
19
+ endpoint?: string;
13
20
  };
14
21
  anthropic?: {
15
22
  model?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  // Core type definitions for OwnKey CLI
2
+ export const AI_PROVIDERS = ['openai', 'anthropic', 'gemini', 'ollama'];
2
3
  // Error types
3
4
  export class OwnKeyError extends Error {
4
5
  code;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AAkKvC,cAAc;AACd,MAAM,OAAO,WAAY,SAAQ,KAAK;IAGvB;IACA;IAHX,YACI,OAAe,EACR,IAAY,EACZ,OAAa;QAEpB,KAAK,CAAC,OAAO,CAAC,CAAC;QAHR,SAAI,GAAJ,IAAI,CAAQ;QACZ,YAAO,GAAP,OAAO,CAAM;QAGpB,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC9B,CAAC;CACJ;AAED,MAAM,OAAO,WAAY,SAAQ,WAAW;IACxC,YAAY,OAAe,EAAE,OAAa;QACtC,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC9B,CAAC;CACJ;AAED,MAAM,OAAO,aAAc,SAAQ,WAAW;IAC1C,YAAY,OAAe,EAAE,OAAa;QACtC,KAAK,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAChC,CAAC;CACJ;AAED,MAAM,OAAO,eAAgB,SAAQ,WAAW;IAC5C,YAAY,OAAe,EAAE,OAAa;QACtC,KAAK,CAAC,OAAO,EAAE,mBAAmB,EAAE,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAClC,CAAC;CACJ;AAED,MAAM,OAAO,SAAU,SAAQ,WAAW;IACtC,YAAY,OAAe,EAAE,OAAa;QACtC,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC5B,CAAC;CACJ"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AAMvC,MAAM,CAAC,MAAM,YAAY,GAAiB,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAoKtF,cAAc;AACd,MAAM,OAAO,WAAY,SAAQ,KAAK;IAGvB;IACA;IAHX,YACI,OAAe,EACR,IAAY,EACZ,OAAa;QAEpB,KAAK,CAAC,OAAO,CAAC,CAAC;QAHR,SAAI,GAAJ,IAAI,CAAQ;QACZ,YAAO,GAAP,OAAO,CAAM;QAGpB,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC9B,CAAC;CACJ;AAED,MAAM,OAAO,WAAY,SAAQ,WAAW;IACxC,YAAY,OAAe,EAAE,OAAa;QACtC,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC9B,CAAC;CACJ;AAED,MAAM,OAAO,aAAc,SAAQ,WAAW;IAC1C,YAAY,OAAe,EAAE,OAAa;QACtC,KAAK,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAChC,CAAC;CACJ;AAED,MAAM,OAAO,eAAgB,SAAQ,WAAW;IAC5C,YAAY,OAAe,EAAE,OAAa;QACtC,KAAK,CAAC,OAAO,EAAE,mBAAmB,EAAE,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAClC,CAAC;CACJ;AAED,MAAM,OAAO,SAAU,SAAQ,WAAW;IACtC,YAAY,OAAe,EAAE,OAAa;QACtC,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC5B,CAAC;CACJ"}
@@ -0,0 +1,6 @@
1
+ import { Severity } from '../types/index.js';
2
+ export declare const SEVERITIES: Severity[];
3
+ /** true when `severity` is at least as severe as `minimum` */
4
+ export declare function meetsSeverity(severity: string, minimum?: string): boolean;
5
+ export declare function parseSeverity(value: string | undefined): Severity | undefined;
6
+ //# sourceMappingURL=severity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"severity.d.ts","sourceRoot":"","sources":["../../src/utils/severity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,eAAO,MAAM,UAAU,EAAE,QAAQ,EAAkD,CAAC;AAEpF,8DAA8D;AAC9D,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAKzE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAO7E"}
@@ -0,0 +1,19 @@
1
+ export const SEVERITIES = ['critical', 'high', 'medium', 'low', 'info'];
2
+ /** true when `severity` is at least as severe as `minimum` */
3
+ export function meetsSeverity(severity, minimum) {
4
+ if (!minimum)
5
+ return true;
6
+ const s = SEVERITIES.indexOf(severity);
7
+ const m = SEVERITIES.indexOf(minimum);
8
+ return s !== -1 && s <= m;
9
+ }
10
+ export function parseSeverity(value) {
11
+ if (value === undefined)
12
+ return undefined;
13
+ const v = value.toLowerCase();
14
+ if (!SEVERITIES.includes(v)) {
15
+ throw new Error(`Invalid severity "${value}". Use one of: ${SEVERITIES.join(', ')}`);
16
+ }
17
+ return v;
18
+ }
19
+ //# sourceMappingURL=severity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"severity.js","sourceRoot":"","sources":["../../src/utils/severity.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAe,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAEpF,8DAA8D;AAC9D,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,OAAgB;IAC5D,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,MAAM,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,QAAoB,CAAC,CAAC;IACnD,MAAM,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,OAAmB,CAAC,CAAC;IAClD,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAyB;IACnD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,EAAc,CAAC;IAC1C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,qBAAqB,KAAK,kBAAkB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,CAAC,CAAC;AACb,CAAC"}
package/package.json CHANGED
@@ -1,72 +1,72 @@
1
- {
2
- "name": "ownkey",
3
- "version": "0.8.0",
4
- "description": "Local-first AI coding agent with Google Gemini integration for intelligent codebase analysis",
5
- "main": "dist/index.js",
6
- "bin": {
7
- "ownkey": "dist/index.js"
8
- },
9
- "type": "module",
10
- "scripts": {
11
- "dev": "tsx src/index.ts",
12
- "build": "tsc",
13
- "test": "vitest",
14
- "test:unit": "vitest run --dir tests/unit",
15
- "test:integration": "vitest run --dir tests/integration",
16
- "lint": "eslint src --ext .ts",
17
- "format": "prettier --write \"src/**/*.ts\"",
18
- "prepublishOnly": "npm run build"
19
- },
20
- "files": [
21
- "dist/**/*",
22
- "README.md",
23
- "LICENSE"
24
- ],
25
- "publishConfig": {
26
- "access": "public"
27
- },
28
- "repository": {
29
- "type": "git",
30
- "url": "git+https://github.com/ArpitK24/OwnKey.git"
31
- },
32
- "bugs": {
33
- "url": "https://github.com/ArpitK24/OwnKey/issues"
34
- },
35
- "homepage": "https://github.com/ArpitK24/OwnKey#readme",
36
- "keywords": [
37
- "ai",
38
- "coding-agent",
39
- "cli",
40
- "code-analysis",
41
- "refactoring",
42
- "bug-detection",
43
- "llm",
44
- "developer-tools"
45
- ],
46
- "author": "OwnKey Team",
47
- "license": "MIT",
48
- "engines": {
49
- "node": ">=18.0.0"
50
- },
51
- "dependencies": {
52
- "commander": "^12.1.0",
53
- "drizzle-orm": "^0.36.4",
54
- "postgres": "^3.4.5",
55
- "chalk": "^5.3.0",
56
- "ora": "^8.1.1",
57
- "inquirer": "^12.2.0",
58
- "ignore": "^6.0.2",
59
- "diff": "^7.0.0",
60
- "keytar": "^7.9.0"
61
- },
62
- "devDependencies": {
63
- "@types/node": "^22.10.5",
64
- "@types/diff": "^6.0.0",
65
- "typescript": "^5.7.3",
66
- "tsx": "^4.19.2",
67
- "vitest": "^2.1.8",
68
- "eslint": "^9.18.0",
69
- "prettier": "^3.4.2",
70
- "drizzle-kit": "^0.30.1"
71
- }
72
- }
1
+ {
2
+ "name": "ownkey",
3
+ "version": "1.0.1",
4
+ "description": "Local-first AI coding agent CLI: scan, suggest, apply and undo with your own keys (OpenAI, Anthropic, Gemini, Ollama)",
5
+ "main": "dist/index.js",
6
+ "bin": {
7
+ "ownkey": "dist/index.js"
8
+ },
9
+ "type": "module",
10
+ "scripts": {
11
+ "dev": "tsx src/index.ts",
12
+ "build": "tsc && node scripts/copy-assets.mjs",
13
+ "test": "vitest run",
14
+ "test:unit": "vitest run tests/unit",
15
+ "test:integration": "vitest run tests/integration",
16
+ "lint": "eslint src --ext .ts",
17
+ "format": "prettier --write \"src/**/*.ts\"",
18
+ "prepublishOnly": "npm run build"
19
+ },
20
+ "files": [
21
+ "dist/**/*",
22
+ "README.md",
23
+ "LICENSE"
24
+ ],
25
+ "publishConfig": {
26
+ "access": "public"
27
+ },
28
+ "repository": {
29
+ "type": "git",
30
+ "url": "git+https://github.com/ArpitK24/ownkey.git"
31
+ },
32
+ "bugs": {
33
+ "url": "https://github.com/ArpitK24/ownkey/issues"
34
+ },
35
+ "homepage": "https://github.com/ArpitK24/ownkey#readme",
36
+ "keywords": [
37
+ "ai",
38
+ "coding-agent",
39
+ "cli",
40
+ "code-analysis",
41
+ "refactoring",
42
+ "bug-detection",
43
+ "llm",
44
+ "developer-tools"
45
+ ],
46
+ "author": "OwnKey Team",
47
+ "license": "MIT",
48
+ "engines": {
49
+ "node": ">=18.0.0"
50
+ },
51
+ "dependencies": {
52
+ "commander": "^12.1.0",
53
+ "drizzle-orm": "^0.36.4",
54
+ "postgres": "^3.4.5",
55
+ "chalk": "^5.3.0",
56
+ "ora": "^8.1.1",
57
+ "inquirer": "^12.2.0",
58
+ "ignore": "^6.0.2",
59
+ "diff": "^7.0.0",
60
+ "keytar": "^7.9.0"
61
+ },
62
+ "devDependencies": {
63
+ "@types/node": "^22.10.5",
64
+ "@types/diff": "^6.0.0",
65
+ "typescript": "^5.7.3",
66
+ "tsx": "^4.19.2",
67
+ "vitest": "^2.1.8",
68
+ "eslint": "^9.18.0",
69
+ "prettier": "^3.4.2",
70
+ "drizzle-kit": "^0.30.1"
71
+ }
72
+ }