SOWA Privacy arendajatele
Paigaldamine lähtekoodist
SOWA Privacy levitatakse Chrome'i veebipoe kaudu binaarfailina, kuid lähtekood on avatud kontrollimiseks ja isiklikuks kasutamiseks Source-Available litsentsi alusel failis LICENSE. Kohalikuks ehitamiseks ja laadimiseks:
git clone https://github.com/Sowa-Privacy/sowa-privacy-chrome-extension.git
cd sowa-privacy-chrome-extension
npm install
npm run build
Seejärel avage chrome://extensions/, lubage Arendajarežiim ja klõpsake Laadi pakkimata kaustal dist/.
Kolm mahukat hankija paketti
Ehitatakse ühe korra esbuild'iga enne Vite'i käivitamist, nii et tootmisbuild on täielikult isemajandav:
web-llm.bundle.js– ~5.4 MB – local LLM inference (optional, opt-in).transformers.bundle.js+onnx-wasm/*– ~32 MB – NER pipeline runtime (optional, opt-in).file-parsers.bundle.js+pdf.worker.min.mjs+xlsx-worker.bundle.js– ~2 MB – PDF, DOCX, XLSX parsing for the file-upload interceptor.
Mis on sees
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
Privaatsusgarantiid
Need on koodis jõustatud reeglid, mitte ainult turunduslubadused:
- Telemetriat ei ole, analüütikat ei ole, oma serveri päringuid ei ole – ühe kitsa erandiga: kasutaja oma õiguseelekontroll (üksik autenditud POST aadressile
/api/entitlements/me, mis tagastab ainult kasutaja plaani lipud). Vahemälus ühe tunni jooksul. Isikuandmeid ega päringuid ei kasutata. - NER on vaikimisi VÄLJAS, ainult valikuga sisse lülitatav – the NER model is a 65 MB third-party download (HuggingFace). It never starts loading until the user explicitly checks the toggle in Settings.
- Kohalik LLM on vaikimisi VÄLJAS, ainult valikuga sisse lülitatav – sama reegel. WebLLM-mudelid on suured; nende allalaadimine on kasutaja otsus.
- Owl on saidi-ulatusega – sisuskript registreerub
<all_urls>-s elutsükli konksude jaoks, kuid tuvastus, mudeli eelsoojendus ja owl-vidin töötavad ainult seitsmel hostilcontentIntegration.entries-s (ChatGPT, OpenAI, Claude, Gemini, Copilot, Grok, x.ai). - CSP keelab dünaamilise koodi täitmise –
'wasm-unsafe-eval'ONNX jaoks on lubatud;'unsafe-eval'ei ole. Funktsiooni ei looda stringist, eval-põhiseid pistikprogramme ei kasutata. - Ainult lubadused chrome.* API-de jaoks – mingit tagasihelistamise kuju, mis varjaks veakäsitlust.
- Olekuta teenuse töötaja – MV3 lõpetab agressiivselt; püsimine asub
chrome.storage-s, mitte mooduli globaalsetes muutujates.
Testid
Testid on peamine korrektsuse värav. Alates v1.2.5.x: 688/689 läbitud 17 komplektis. Uus kood peab selle rohelisena hoidma.
npm run test:unit:nocov # kiire tsükkel arenduse ajal (~3 s)
npm run test:unit # CI gate with coverage
npm run typecheck # tsc --noEmit
npm run lint # eslint
Veaparandused järgivad TDD-kuju: kirjutage kõigepealt ebaõnnestuv test, parandage viga, test jääb regressioonkaitseks. Reaalne näide tarniti failis tests/unit/lib/ner-detector.test.js – test "detect-counter does NOT reset on subsequent init successes" kirjutati enne vastavat parandust ja tuvastas ebaõnnestunud esimese katse.
Panusta
Panused tagasi ametlikku hoidlasse on litsentsitingimuste alusel teretulnud. Avage probleem või esitage tõmbetaotlus, järgides inseneristandardeid failis CONTRIBUTING.md:
- Harunemist
main-st. Üks loogiline muutus PR kohta. - Muudatusesõnumi konventsioon:
type(scope): description (vX.Y.Z.W). - Uuendage
MIGRATION_LOG.mdmittetriviaalsete muutuste jaoks (uued moodulid, lepingumuutused, arhitektuursed nihked). - Eelnesitamise kontrollnimekiri tuvastust või võrku puudutavate PR-de jaoks: ühtegi uut
fetch()-i omale serverile, uut telemetriat pole, rasket komponenti ei aktiveerita automaatselt, kõik talletatav läheb migratsioonilogi, iga uus luba on Chrome'i veebipoe arvustajale põhjendatud.
Vastutustundlik avalikustamine
Turvaaukude puhul palume mitte avada avalikke GitHub-probleeme. Saatke üksikasjalik aruanne aadressile security@sowaprivacy.ai:
- Selge turvaaukude kirjeldus.
- Taastootmise sammud.
- Mõjutatud versioon (väli
versionfailismanifest.json). - Mõju hindamine, kui see on olemas.
- Soovitatav parandus, kui see on asjakohane.
Kohustume teie aruannet tunnistama 72 tunni jooksul, andma olekuuuenduse 7 päeva jooksul, teid väljalaskemärkmetes mainima (kui te ei eelista anonüümsust) ja avalikustamise ajastuse teiega kooskõlastama.
Avaldatud ulatus, näited sellest, mida peame turvaauguks, ja kuulsuste laud asuvad SECURITY.md-s hoidla juurkataloogis.