feat(ai): split shared provider config from Anki runtime

This commit is contained in:
2026-03-08 16:10:51 -07:00
parent f10e905dbd
commit 9e46176519
19 changed files with 457 additions and 133 deletions

View File

@@ -1,5 +1,5 @@
import { DEFAULT_ANKI_CONNECT_CONFIG } from '../config';
import { AnkiConnectConfig } from '../types';
import { AiConfig, AnkiConnectConfig } from '../types';
import { createLogger } from '../logger';
import { SubtitleTimingTracker } from '../subtitle-timing-tracker';
import { MpvClient } from '../types';
@@ -62,6 +62,7 @@ interface CardCreationMediaGenerator {
interface CardCreationDeps {
getConfig: () => AnkiConnectConfig;
getAiConfig: () => AiConfig;
getTimingTracker: () => SubtitleTimingTracker;
getMpvClient: () => MpvClient;
getDeck?: () => string | undefined;
@@ -495,11 +496,18 @@ export class CardCreationService {
fields[sentenceField] = sentence;
const ankiAiConfig = this.deps.getConfig().ai;
const ankiAiEnabled =
typeof ankiAiConfig === 'object' && ankiAiConfig !== null
? ankiAiConfig.enabled === true
: ankiAiConfig === true;
const backText = await resolveSentenceBackText(
{
sentence,
secondarySubText,
config: this.deps.getConfig().ai || {},
aiEnabled: ankiAiEnabled,
aiConfig: this.deps.getAiConfig(),
},
{
logWarning: (message: string) => log.warn(message),