storeLearnedEntry function exported ✓ 100.0%

Last updated: 2026-02-25T14:02:03.587Z

Metrics

LOC: 21 Complexity: 3 Params: 5 Coverage: 100.0% (7/7 lines, 11x executed)

Signature

storeLearnedEntry( signals: string, type: FieldType, generatorType?: FieldType, source: "auto" | "rule" = "auto", ): : Promise<void>

Summary

Persist a new signal→type mapping. Deduplicates by signals string — if the same signal set was already stored, its entry is updated (type + timestamp). Caps at MAX_LEARNED_ENTRIES. Defaults to type when omitted. Defaults to "auto".

Tags

#@param generatorType - Optional explicit generator type recommended by the AI.#@param source - Origin of the entry: "auto" (organic) or "rule" (from retrain).

Source Code

export async function storeLearnedEntry(
  signals: string,
  type: FieldType,
  generatorType?: FieldType,
  source: "auto" | "rule" = "auto",
): Promise<void> {
  const normalized = normaliseSignals(signals);
  if (!normalized) return;
  const existing = await getLearnedEntries();
  const filtered = existing.filter((e) => e.signals !== normalized);
  filtered.push({
    signals: normalized,
    type,
    generatorType: generatorType ?? type,
    timestamp: Date.now(),
    source,
  });
  // Keep only the most recent MAX_LEARNED_ENTRIES
  const trimmed = filtered.slice(-MAX_LEARNED_ENTRIES);
  await chrome.storage.local.set({ [LEARNED_STORAGE_KEY]: trimmed });
}

Dependencies (Outgoing)

graph LR storeLearnedEntry["storeLearnedEntry"] normaliseSignals["normaliseSignals"] getLearnedEntries["getLearnedEntries"] storeLearnedEntry -->|calls| normaliseSignals storeLearnedEntry -->|calls| getLearnedEntries style storeLearnedEntry fill:#dbeafe,stroke:#2563eb,stroke-width:2px click storeLearnedEntry "2904bc5fab5c017a.html" click normaliseSignals "070d7fcfb8a8e20e.html" click getLearnedEntries "e25cf1df37c01d04.html"
TargetType
normaliseSignals calls
getLearnedEntries calls

Impact (Incoming)

graph LR storeLearnedEntry["storeLearnedEntry"] handle["handle"] retrainLearnedFromRules["retrainLearnedFromRules"] makeEntry["makeEntry"] getContextHtml["getContextHtml"] handle -->|uses| storeLearnedEntry handle -->|uses| storeLearnedEntry retrainLearnedFromRules -->|calls| storeLearnedEntry makeEntry -->|uses| storeLearnedEntry getContextHtml -->|uses| storeLearnedEntry style storeLearnedEntry fill:#dbeafe,stroke:#2563eb,stroke-width:2px click storeLearnedEntry "2904bc5fab5c017a.html" click handle "4ec56f844308ba0c.html" click retrainLearnedFromRules "d3f53e03267ff965.html" click makeEntry "51dbe567b29f8f6e.html" click getContextHtml "765515d6b3d443b6.html"
SourceType
handle uses
handle uses
retrainLearnedFromRules calls
makeEntry uses
getContextHtml uses