|
6 | 6 | GLOBAL_SETTINGS_KEYS, |
7 | 7 | SECRET_STATE_KEYS, |
8 | 8 | GLOBAL_STATE_KEYS, |
| 9 | + GLOBAL_SECRET_KEYS, |
9 | 10 | type ProviderSettings, |
10 | 11 | type GlobalSettings, |
11 | 12 | type SecretState, |
@@ -61,13 +62,26 @@ export class ContextProxy { |
61 | 62 | } |
62 | 63 | } |
63 | 64 |
|
64 | | - const promises = SECRET_STATE_KEYS.map(async (key) => { |
65 | | - try { |
66 | | - this.secretCache[key] = await this.originalContext.secrets.get(key) |
67 | | - } catch (error) { |
68 | | - logger.error(`Error loading secret ${key}: ${error instanceof Error ? error.message : String(error)}`) |
69 | | - } |
70 | | - }) |
| 65 | + const promises = [ |
| 66 | + ...SECRET_STATE_KEYS.map(async (key) => { |
| 67 | + try { |
| 68 | + this.secretCache[key] = await this.originalContext.secrets.get(key) |
| 69 | + } catch (error) { |
| 70 | + logger.error( |
| 71 | + `Error loading secret ${key}: ${error instanceof Error ? error.message : String(error)}`, |
| 72 | + ) |
| 73 | + } |
| 74 | + }), |
| 75 | + ...GLOBAL_SECRET_KEYS.map(async (key) => { |
| 76 | + try { |
| 77 | + this.secretCache[key] = await this.originalContext.secrets.get(key) |
| 78 | + } catch (error) { |
| 79 | + logger.error( |
| 80 | + `Error loading global secret ${key}: ${error instanceof Error ? error.message : String(error)}`, |
| 81 | + ) |
| 82 | + } |
| 83 | + }), |
| 84 | + ] |
71 | 85 |
|
72 | 86 | await Promise.all(promises) |
73 | 87 |
|
@@ -152,20 +166,34 @@ export class ContextProxy { |
152 | 166 | * This is useful when you need to ensure the cache has the latest values |
153 | 167 | */ |
154 | 168 | async refreshSecrets(): Promise<void> { |
155 | | - const promises = SECRET_STATE_KEYS.map(async (key) => { |
156 | | - try { |
157 | | - this.secretCache[key] = await this.originalContext.secrets.get(key) |
158 | | - } catch (error) { |
159 | | - logger.error( |
160 | | - `Error refreshing secret ${key}: ${error instanceof Error ? error.message : String(error)}`, |
161 | | - ) |
162 | | - } |
163 | | - }) |
| 169 | + const promises = [ |
| 170 | + ...SECRET_STATE_KEYS.map(async (key) => { |
| 171 | + try { |
| 172 | + this.secretCache[key] = await this.originalContext.secrets.get(key) |
| 173 | + } catch (error) { |
| 174 | + logger.error( |
| 175 | + `Error refreshing secret ${key}: ${error instanceof Error ? error.message : String(error)}`, |
| 176 | + ) |
| 177 | + } |
| 178 | + }), |
| 179 | + ...GLOBAL_SECRET_KEYS.map(async (key) => { |
| 180 | + try { |
| 181 | + this.secretCache[key] = await this.originalContext.secrets.get(key) |
| 182 | + } catch (error) { |
| 183 | + logger.error( |
| 184 | + `Error refreshing global secret ${key}: ${error instanceof Error ? error.message : String(error)}`, |
| 185 | + ) |
| 186 | + } |
| 187 | + }), |
| 188 | + ] |
164 | 189 | await Promise.all(promises) |
165 | 190 | } |
166 | 191 |
|
167 | 192 | private getAllSecretState(): SecretState { |
168 | | - return Object.fromEntries(SECRET_STATE_KEYS.map((key) => [key, this.getSecret(key)])) |
| 193 | + return Object.fromEntries([ |
| 194 | + ...SECRET_STATE_KEYS.map((key) => [key, this.getSecret(key as SecretStateKey)]), |
| 195 | + ...GLOBAL_SECRET_KEYS.map((key) => [key, this.getSecret(key as SecretStateKey)]), |
| 196 | + ]) |
169 | 197 | } |
170 | 198 |
|
171 | 199 | /** |
@@ -232,18 +260,24 @@ export class ContextProxy { |
232 | 260 | * RooCodeSettings |
233 | 261 | */ |
234 | 262 |
|
235 | | - public setValue<K extends RooCodeSettingsKey>(key: K, value: RooCodeSettings[K]) { |
236 | | - return isSecretStateKey(key) ? this.storeSecret(key, value as string) : this.updateGlobalState(key, value) |
| 263 | + public async setValue<K extends RooCodeSettingsKey>(key: K, value: RooCodeSettings[K]) { |
| 264 | + return isSecretStateKey(key) |
| 265 | + ? this.storeSecret(key as SecretStateKey, value as string) |
| 266 | + : this.updateGlobalState(key as GlobalStateKey, value) |
237 | 267 | } |
238 | 268 |
|
239 | 269 | public getValue<K extends RooCodeSettingsKey>(key: K): RooCodeSettings[K] { |
240 | 270 | return isSecretStateKey(key) |
241 | | - ? (this.getSecret(key) as RooCodeSettings[K]) |
242 | | - : (this.getGlobalState(key) as RooCodeSettings[K]) |
| 271 | + ? (this.getSecret(key as SecretStateKey) as RooCodeSettings[K]) |
| 272 | + : (this.getGlobalState(key as GlobalStateKey) as RooCodeSettings[K]) |
243 | 273 | } |
244 | 274 |
|
245 | 275 | public getValues(): RooCodeSettings { |
246 | | - return { ...this.getAllGlobalState(), ...this.getAllSecretState() } |
| 276 | + const globalState = this.getAllGlobalState() |
| 277 | + const secretState = this.getAllSecretState() |
| 278 | + |
| 279 | + // Simply merge all states - no nested secrets to handle |
| 280 | + return { ...globalState, ...secretState } |
247 | 281 | } |
248 | 282 |
|
249 | 283 | public async setValues(values: RooCodeSettings) { |
@@ -285,6 +319,7 @@ export class ContextProxy { |
285 | 319 | await Promise.all([ |
286 | 320 | ...GLOBAL_STATE_KEYS.map((key) => this.originalContext.globalState.update(key, undefined)), |
287 | 321 | ...SECRET_STATE_KEYS.map((key) => this.originalContext.secrets.delete(key)), |
| 322 | + ...GLOBAL_SECRET_KEYS.map((key) => this.originalContext.secrets.delete(key)), |
288 | 323 | ]) |
289 | 324 |
|
290 | 325 | await this.initialize() |
|
0 commit comments