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 hostil contentIntegration.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.md mittetriviaalsete 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 version failis manifest.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.