( root: string, createIfMissing: boolean, )
| 283 | } |
| 284 | |
| 285 | async function openRepos( |
| 286 | root: string, |
| 287 | createIfMissing: boolean, |
| 288 | ): Promise<{ telemetry: TelemetryRepo; modelCalls: ModelCallLedger; pricing: PricingStore }> { |
| 289 | const telemetry = createSqliteTelemetryRepo(root, { createIfMissing, managePricing: false }); |
| 290 | await telemetry.load(); |
| 291 | const modelCalls = createSqliteModelCallLedger(root); |
| 292 | const pricing = createSqlitePricingStore(root, { createIfMissing }); |
| 293 | try { |
| 294 | await pricing.load(); |
| 295 | return { telemetry, modelCalls, pricing }; |
| 296 | } catch (error) { |
| 297 | const closed = await Promise.allSettled([ |
| 298 | telemetry.close(), |
| 299 | modelCalls.close(), |
| 300 | pricing.close(), |
| 301 | ]); |
| 302 | const failures = [error, ...rejectedReasons(closed)]; |
| 303 | throwDeduplicatedFailures('Unable to open interactive usage stores', failures); |
| 304 | throw error; |
| 305 | } |
| 306 | } |
| 307 | |
| 308 | function createWriterFacade( |
| 309 | lease: StorageRootLease<'interactive', 'write'>, |
no test coverage detected