(overrides: Partial<ExportDeps> = {})
| 129 | } |
| 130 | |
| 131 | function createDefaultExportDeps(overrides: Partial<ExportDeps> = {}): ExportDeps { |
| 132 | let harness: KimiHarness | undefined; |
| 133 | let telemetryBootstrap: ReturnType<typeof createCliTelemetryBootstrap> | undefined; |
| 134 | let telemetryInitialized = false; |
| 135 | let telemetryShutdown = false; |
| 136 | const identity = createKimiCodeHostIdentity(); |
| 137 | const telemetryClient: TelemetryClient = { |
| 138 | track, |
| 139 | withContext: withTelemetryContext, |
| 140 | setContext: setTelemetryContext, |
| 141 | }; |
| 142 | const getTelemetryBootstrap = (): ReturnType<typeof createCliTelemetryBootstrap> => { |
| 143 | telemetryBootstrap ??= createCliTelemetryBootstrap(); |
| 144 | return telemetryBootstrap; |
| 145 | }; |
| 146 | const getHarness = (): KimiHarness => { |
| 147 | const currentTelemetryBootstrap = getTelemetryBootstrap(); |
| 148 | harness ??= createKimiHarness({ |
| 149 | homeDir: currentTelemetryBootstrap.homeDir, |
| 150 | identity, |
| 151 | telemetry: telemetryClient, |
| 152 | }); |
| 153 | return harness; |
| 154 | }; |
| 155 | const initializeDefaultTelemetry = async (): Promise<void> => { |
| 156 | if (telemetryInitialized) return; |
| 157 | const currentTelemetryBootstrap = getTelemetryBootstrap(); |
| 158 | const currentHarness = getHarness(); |
| 159 | await currentHarness.ensureConfigFile(); |
| 160 | const config = await currentHarness.getConfig(); |
| 161 | initializeCliTelemetry({ |
| 162 | harness: currentHarness, |
| 163 | bootstrap: currentTelemetryBootstrap, |
| 164 | config, |
| 165 | version: identity.version, |
| 166 | uiMode: CLI_UI_MODE, |
| 167 | }); |
| 168 | telemetryInitialized = true; |
| 169 | }; |
| 170 | const shutdownDefaultTelemetry = async (): Promise<void> => { |
| 171 | if (!telemetryInitialized || telemetryShutdown) return; |
| 172 | telemetryShutdown = true; |
| 173 | await shutdownTelemetry({ timeoutMs: CLI_SHUTDOWN_TIMEOUT_MS }); |
| 174 | }; |
| 175 | return { |
| 176 | listSessions: |
| 177 | overrides.listSessions ?? |
| 178 | ((workDir: string) => |
| 179 | getHarness().listSessions({ |
| 180 | workDir, |
| 181 | })), |
| 182 | exportSession: |
| 183 | overrides.exportSession ?? |
| 184 | (async (input: ExportSessionInput) => { |
| 185 | await initializeDefaultTelemetry(); |
| 186 | try { |
| 187 | return await getHarness().exportSession(input); |
| 188 | } finally { |
no test coverage detected