SOWA Privacy for utviklere
Installer fra kilden
SOWA Privacy leveres via Chrome Web Store som en binærfil, men kildekoden er åpen for inspeksjon og personlig bruk under Source-Available-lisensen i LICENSE. Slik bygger og laster du den lokalt:
git clone https://github.com/Sowa-Privacy/sowa-privacy-chrome-extension.git
cd sowa-privacy-chrome-extension
npm install
npm run build
Åpne deretter chrome://extensions/, aktiver Utviklermodus, og klikk Last inn upakket på dist/-mappen.
Tre tunge leverandørbunter
Bygget én gang med esbuild før Vite kjøres, slik at produksjonsbygget er fullt selvstendig:
web-llm.bundle.js– ~5.4 MB – lokal LLM-inferens (valgfritt, opt-in).transformers.bundle.js+onnx-wasm/*– ~32 MB – NER-pipeline-kjøretid (valgfritt, opt-in).file-parsers.bundle.js+pdf.worker.min.mjs+xlsx-worker.bundle.js– ~2 MB – PDF, DOCX, XLSX-parsing for filopplastingsavlytteren.
Hva er inne
manifest.json Chrome MV3 manifest (single source of truth for version)
contentScript.js MV3 content script entrypoint
service_worker.js MV3 service worker (stateless)
offscreen.js Offscreen doc for NER inference
lib/
constants.js DEF_CONFIG, PRESET_PATTERNS, NER_MODELS,
WEBLLM_MODELS, INDUSTRY_BLACKLISTS
pii-core.js detectPII, mergeDetectionHits, blacklist + regex pipeline
ner-detector.js NER pipeline + diagnostic state surface
ui-utils.js shouldUseRegex / NER / LLM helpers, theme, debounce
ui_i18n.js t() + RESOURCES (4 locales) + applyI18n
cs/
owl-guardian.js Owl widget Shadow DOM, continuous scan, badge counter
upload-interceptor.js File drag/drop / file input intercept
host-matcher.js contentIntegration.entries pattern matching
tests/unit/ 688 unit tests – keep green
scripts/ esbuild bundle + zip packaging
Personverngarantier
Dette er reglene håndhevet i koden, ikke bare løfter i markedsføringstekst:
- Ingen telemetri, ingen analyse, ingen egne serverkall – med ett snevert unntak: brukerens egne rettighetssjekk (ett enkelt autentisert POST til
/api/entitlements/mesom kun returnerer brukerens planflagg). Bufret i én time. Ingen PII, ingen forespørsler. - NER er av som standard, kun opt-in – NER-modellen er en 65 MB tredjeparts nedlasting (HuggingFace). Den begynner aldri å laste inn før brukeren eksplisitt aktiverer bryteren i innstillingene.
- Lokal LLM er av som standard, kun opt-in – samme regel. WebLLM-modeller er store; nedlasting er brukerens avgjørelse.
- Owl er nettstedsbegrenset – innholdsskriptet registreres på
<all_urls>for livssyklus-hooks, men deteksjon, modelloppvarming og owl-widgeten kjøres bare på de syv vertene icontentIntegration.entries(ChatGPT, OpenAI, Claude, Gemini, Copilot, Grok, x.ai). - CSP forbyr dynamisk kodekjøring –
'wasm-unsafe-eval'for ONNX er tillatt;'unsafe-eval'er ikke det. IngenFunction-fra-streng, ingen eval-drevne plugins. - Kun Promises for chrome.*-APIer – ingen callback-mønster som skjuler feilhåndtering.
- Tilstandsløs service worker – MV3 avsluttes aggressivt; persistens lever i
chrome.storage, ikke i moduleglobaler.
Tester
Tester er den primære korrekthetsporten. Per v1.2.5.x: 688 av 689 passerer i 17 testsuiter. Ny kode må holde dette grønt.
npm run test:unit:nocov # rask sløyfe under utvikling (~3s)
npm run test:unit # CI-port med dekningsgrad
npm run typecheck # tsc --noEmit
npm run lint # eslint
Feilrettinger følger TDD-formen: skriv den sviktende testen først, fiks feilen, testen forblir som en regresjonsbarriere. Reelt eksempel levert i tests/unit/lib/ner-detector.test.js – testen «detect-counter does NOT reset on subsequent init successes» ble skrevet før tilsvarende fiks og fanget et dårlig første forsøk på implementeringen.
Bidra
Bidrag til det offisielle repositoriet er velkomne under lisensbetingelsene. Åpne en sak eller send inn en pull request i henhold til ingeniørstandardene i CONTRIBUTING.md:
- Grein fra
main. Én logisk endring per PR. - Konvensjon for commit-melding:
type(scope): description (vX.Y.Z.W). - Oppdater
MIGRATION_LOG.mdfor ikke-trivielle endringer (nye moduler, kontraktendringer, arkitektoniske skift). - Forhåndssjekkliste for PRer som berører deteksjon eller nettverk: ingen ny
fetch()til en første-parts-server, ingen ny telemetri, ingen tung komponent automatisk aktivert, alt du lagrer går inn i migrasjonsloggen, ethvert nytt tillatelse er begrunnet for Chrome Web Store-anmelderen.
Ansvarlig varsling
For sikkerhetssårbarheter, vennligst ikke åpne offentlige GitHub-saker. Send en detaljert rapport til security@sowaprivacy.ai:
- Tydelig beskrivelse av sårbarheten.
- Trinn for å reprodusere.
- Berørt versjon (feltet
versionimanifest.json). - Konsekvensvurdering hvis du har en.
- Foreslått fiks hvis aktuelt.
Vi forplikter oss til å bekrefte rapporten din innen 72 timer, gi en statusoppdatering innen 7 dager, kreditere deg i versjonsnotatene (med mindre du foretrekker anonymitet), og koordinere tidspunktet for offentlig varsling med deg.
Det publiserte omfanget, eksempler på hva vi anser som en sårbarhet, og en æresgalleri finnes i SECURITY.md i rotkatalogen til repositoriet.