What
Implement the non-blocking suggestion generation system in the service worker.
Core Components
1. Suggestion Queue (src/lib/ai/suggestion-queue.js)
- Debounces keystroke events at 500ms (user perceives as instant)
- Routes suggestions through fast brain (instant) then slow brain (async)
- Stores results in
chrome.storage.local.suggestions
- Fires
SUGGESTIONS_READY message to UI
2. Ollama Client (src/lib/ai/ollama-client.js)
- Async HTTP client to
http://localhost:11434/api/generate
- 2000ms timeout and then fast fallback to second brain
- Provides: sentence completion, paraphrase
- Handles connection failures silently
- No blocking on the calling thread
3. second brain (src/lib/ai/heuristic-brain.js)
- Returns suggestions in <5ms
- Provides:
- Word completion predictions (no AI)
- Synonym detection (word frequency lookup)
- Grammar error detection (regex)
- Pattern detection (e.g., "According to...")
- Gracefully handles empty/short input
Acceptance Criteria
What
Implement the non-blocking suggestion generation system in the service worker.
Core Components
1. Suggestion Queue (
src/lib/ai/suggestion-queue.js)chrome.storage.local.suggestionsSUGGESTIONS_READYmessage to UI2. Ollama Client (
src/lib/ai/ollama-client.js)http://localhost:11434/api/generate3. second brain (
src/lib/ai/heuristic-brain.js)Acceptance Criteria
SuggestionQueuequeues with 500ms debounceHeuristicBrain.suggest()returns in <5ms, no async callsOllamaClient.suggest()has 2000ms timeoutchrome.storage.local.suggestionsLOG_EVENT 'edit'triggers enqueue (no await)GET_SUGGESTIONSmessage handler returns stored suggestions