vantaverse-ai-reviewer 0.3.3 → 0.3.4
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-manager.d.ts","sourceRoot":"","sources":["../../src/auth/token-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"token-manager.d.ts","sourceRoot":"","sources":["../../src/auth/token-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA2HH;;GAEG;AACH,wBAAgB,QAAQ,IAAI,OAAO,CAMlC;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,MAAM,GAAG,SAAS,CAQ7C;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAI5C;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,IAAI,CAGjC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAGzD;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAgCnD;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAWtC"}
|
|
@@ -7,6 +7,10 @@ import inquirer from 'inquirer';
|
|
|
7
7
|
import chalk from 'chalk';
|
|
8
8
|
import { createHash } from 'crypto';
|
|
9
9
|
import os from 'os';
|
|
10
|
+
import fs from 'fs';
|
|
11
|
+
import path from 'path';
|
|
12
|
+
// Current key version - increment when changing key derivation
|
|
13
|
+
const KEY_VERSION = 'v2';
|
|
10
14
|
/**
|
|
11
15
|
* Derive a machine-specific encryption key
|
|
12
16
|
* This ensures stored tokens can only be decrypted on the same machine
|
|
@@ -25,25 +29,110 @@ function deriveEncryptionKey() {
|
|
|
25
29
|
.digest('hex')
|
|
26
30
|
.slice(0, 32);
|
|
27
31
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
/**
|
|
33
|
+
* Get the config file path used by conf
|
|
34
|
+
*/
|
|
35
|
+
function getConfigPath() {
|
|
36
|
+
const appName = 'ai-reviewer';
|
|
37
|
+
if (process.platform === 'win32') {
|
|
38
|
+
return path.join(process.env.APPDATA || os.homedir(), appName, 'config.json');
|
|
39
|
+
}
|
|
40
|
+
else if (process.platform === 'darwin') {
|
|
41
|
+
return path.join(os.homedir(), 'Library', 'Preferences', `${appName}-nodejs`, 'config.json');
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
return path.join(process.env.XDG_CONFIG_HOME || path.join(os.homedir(), '.config'), appName, 'config.json');
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Clear old config file if it exists and can't be read
|
|
49
|
+
* This handles migration from old encryption key to new one
|
|
50
|
+
*/
|
|
51
|
+
function clearCorruptedConfig() {
|
|
52
|
+
const configPath = getConfigPath();
|
|
53
|
+
try {
|
|
54
|
+
if (fs.existsSync(configPath)) {
|
|
55
|
+
fs.unlinkSync(configPath);
|
|
56
|
+
console.log(chalk.yellow('⚠ Configuration migrated to new secure format.'));
|
|
57
|
+
console.log(chalk.dim(' You will need to re-enter your API token.\n'));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
// Ignore errors - directory might not exist
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Create config with error handling for corrupted/incompatible config files
|
|
66
|
+
*/
|
|
67
|
+
function createConfig() {
|
|
68
|
+
try {
|
|
69
|
+
const conf = new Conf({
|
|
70
|
+
projectName: 'ai-reviewer',
|
|
71
|
+
encryptionKey: deriveEncryptionKey(),
|
|
72
|
+
schema: {
|
|
73
|
+
geminiToken: { type: 'string' },
|
|
74
|
+
configuredAt: { type: 'string' },
|
|
75
|
+
keyVersion: { type: 'string' }
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
// Test if we can read the config (will throw if encrypted with different key)
|
|
79
|
+
const keyVersion = conf.get('keyVersion');
|
|
80
|
+
// If key version doesn't match, we need to migrate
|
|
81
|
+
if (keyVersion && keyVersion !== KEY_VERSION) {
|
|
82
|
+
conf.clear();
|
|
83
|
+
}
|
|
84
|
+
return conf;
|
|
34
85
|
}
|
|
35
|
-
|
|
86
|
+
catch (error) {
|
|
87
|
+
// Config is corrupted or encrypted with old key - clear it and try again
|
|
88
|
+
clearCorruptedConfig();
|
|
89
|
+
return new Conf({
|
|
90
|
+
projectName: 'ai-reviewer',
|
|
91
|
+
encryptionKey: deriveEncryptionKey(),
|
|
92
|
+
schema: {
|
|
93
|
+
geminiToken: { type: 'string' },
|
|
94
|
+
configuredAt: { type: 'string' },
|
|
95
|
+
keyVersion: { type: 'string' }
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
// Create config instance with migration handling
|
|
101
|
+
let config;
|
|
102
|
+
try {
|
|
103
|
+
config = createConfig();
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
// Last resort - create a new config
|
|
107
|
+
clearCorruptedConfig();
|
|
108
|
+
config = new Conf({
|
|
109
|
+
projectName: 'ai-reviewer',
|
|
110
|
+
encryptionKey: deriveEncryptionKey(),
|
|
111
|
+
});
|
|
112
|
+
}
|
|
36
113
|
/**
|
|
37
114
|
* Check if a valid token is stored
|
|
38
115
|
*/
|
|
39
116
|
export function hasToken() {
|
|
40
|
-
|
|
117
|
+
try {
|
|
118
|
+
return !!config.get('geminiToken');
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
41
123
|
}
|
|
42
124
|
/**
|
|
43
125
|
* Get the stored Gemini token
|
|
44
126
|
*/
|
|
45
127
|
export function getToken() {
|
|
46
|
-
|
|
128
|
+
try {
|
|
129
|
+
return config.get('geminiToken');
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
// Config corrupted, clear and return undefined
|
|
133
|
+
clearCorruptedConfig();
|
|
134
|
+
return undefined;
|
|
135
|
+
}
|
|
47
136
|
}
|
|
48
137
|
/**
|
|
49
138
|
* Store a new Gemini token
|
|
@@ -51,6 +140,7 @@ export function getToken() {
|
|
|
51
140
|
export function setToken(token) {
|
|
52
141
|
config.set('geminiToken', token);
|
|
53
142
|
config.set('configuredAt', new Date().toISOString());
|
|
143
|
+
config.set('keyVersion', KEY_VERSION);
|
|
54
144
|
}
|
|
55
145
|
/**
|
|
56
146
|
* Clear the stored token
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-manager.js","sourceRoot":"","sources":["../../src/auth/token-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"token-manager.js","sourceRoot":"","sources":["../../src/auth/token-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAQxB,+DAA+D;AAC/D,MAAM,WAAW,GAAG,IAAI,CAAC;AAEzB;;;GAGG;AACH,SAAS,mBAAmB;IACxB,MAAM,kBAAkB,GAAG;QACvB,EAAE,CAAC,QAAQ,EAAE;QACb,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ;QACtB,EAAE,CAAC,QAAQ,EAAE;QACb,EAAE,CAAC,IAAI,EAAE;QACT,EAAE,CAAC,OAAO,EAAE;QACZ,uBAAuB,CAAC,OAAO;KAClC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEZ,OAAO,UAAU,CAAC,QAAQ,CAAC;SACtB,MAAM,CAAC,kBAAkB,CAAC;SAC1B,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,SAAS,aAAa;IAClB,MAAM,OAAO,GAAG,aAAa,CAAC;IAC9B,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;IAClF,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,OAAO,SAAS,EAAE,aAAa,CAAC,CAAC;IACjG,CAAC;SAAM,CAAC;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;IAChH,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,SAAS,oBAAoB;IACzB,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,IAAI,CAAC;QACD,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gDAAgD,CAAC,CAAC,CAAC;YAC5E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC,CAAC;QAC5E,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACL,4CAA4C;IAChD,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,YAAY;IACjB,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAc;YAC/B,WAAW,EAAE,aAAa;YAC1B,aAAa,EAAE,mBAAmB,EAAE;YACpC,MAAM,EAAE;gBACJ,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC/B,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAChC,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aACjC;SACJ,CAAC,CAAC;QAEH,8EAA8E;QAC9E,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAE1C,mDAAmD;QACnD,IAAI,UAAU,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;YAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,yEAAyE;QACzE,oBAAoB,EAAE,CAAC;QAEvB,OAAO,IAAI,IAAI,CAAc;YACzB,WAAW,EAAE,aAAa;YAC1B,aAAa,EAAE,mBAAmB,EAAE;YACpC,MAAM,EAAE;gBACJ,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC/B,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAChC,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aACjC;SACJ,CAAC,CAAC;IACP,CAAC;AACL,CAAC;AAED,iDAAiD;AACjD,IAAI,MAAyB,CAAC;AAC9B,IAAI,CAAC;IACD,MAAM,GAAG,YAAY,EAAE,CAAC;AAC5B,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACb,oCAAoC;IACpC,oBAAoB,EAAE,CAAC;IACvB,MAAM,GAAG,IAAI,IAAI,CAAc;QAC3B,WAAW,EAAE,aAAa;QAC1B,aAAa,EAAE,mBAAmB,EAAE;KACvC,CAAC,CAAC;AACP,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ;IACpB,IAAI,CAAC;QACD,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ;IACpB,IAAI,CAAC;QACD,OAAO,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACL,+CAA+C;QAC/C,oBAAoB,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACrB,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAa;IAClC,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACjC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IACrD,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU;IACtB,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAC7B,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC5C,8CAA8C;IAC9C,OAAO,KAAK,CAAC,MAAM,IAAI,EAAE,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtF,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC7B,MAAM,QAAQ,GAAG,QAAQ,EAAE,CAAC;IAC5B,IAAI,QAAQ,EAAE,CAAC;QACX,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC,CAAC;IAEtF,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAoB;QACvD;YACI,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,8BAA8B;YACvC,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;gBACxB,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;oBAChB,OAAO,mBAAmB,CAAC;gBAC/B,CAAC;gBACD,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;oBACpC,OAAO,gEAAgE,CAAC;gBAC5E,CAAC;gBACD,OAAO,IAAI,CAAC;YAChB,CAAC;SACJ;KACJ,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAClC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;IAEtD,OAAO,YAAY,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC3B,IAAI,QAAQ,EAAE,EAAE,CAAC;QACb,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC;QACzD,IAAI,YAAY,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC;QACvF,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC,CAAC;IACpE,CAAC;AACL,CAAC"}
|