getOrCreateClassifierSession function application
Last updated: 2026-03-03T18:32:34.140Z
Metrics
LOC: 62
Complexity: 12
Params: 0
Signature
getOrCreateClassifierSession(): : Promise<LanguageModelSession | null>
Architecture violations
- [warning] max-cyclomatic-complexity: 'getOrCreateClassifierSession' has cyclomatic complexity 12 (max 10)
Source Code
async function getOrCreateClassifierSession(): Promise<LanguageModelSession | null> {
if (classifierSession) {
// Recycle when context window is almost exhausted
const remaining = classifierSession.tokensRemaining;
const max = classifierSession.maxTokens;
if (remaining !== undefined && max !== undefined && max > 0) {
const usedRatio = (max - remaining) / max;
if (usedRatio >= 0.85) {
log.debug(
`Contexto do classifier quase cheio (${remaining}/${max} tokens). Reciclando...`,
);
classifierSession.destroy();
classifierSession = null;
}
}
}
if (classifierSession) return classifierSession;
// Skip retry if session creation failed recently
if (
sessionFailedAt &&
Date.now() - sessionFailedAt < SESSION_FAILURE_TTL_MS
) {
return null;
}
try {
const api = getLanguageModelApi();
if (!api) {
log.warn(
"LanguageModel API não encontrada no background service worker.",
);
sessionFailedAt = Date.now();
return null;
}
const avail = await api.availability({
expectedInputs: [{ type: "text", languages: ["en"] }],
expectedOutputs: [{ type: "text", languages: ["en"] }],
});
if (avail === "unavailable") {
log.warn(
`Chrome AI indisponível para classificação (status: "${avail}").`,
);
sessionFailedAt = Date.now();
return null;
}
log.debug(`Criando sessão de classificação (availability: "${avail}")...`);
classifierSession = await api.create({
expectedOutputs: [{ type: "text", languages: ["en"] }],
});
log.info("Sessão Chrome AI Classifier (background) criada com sucesso.");
sessionFailedAt = null;
return classifierSession;
} catch (err) {
log.warn("Falha ao criar sessão de classificação:", err);
sessionFailedAt = Date.now();
return null;
}
}
Dependencies (Outgoing)
| Target | Type |
|---|---|
| getLanguageModelApi | calls |
Impact (Incoming)
| Source | Type |
|---|---|
| classifyField | calls |