# WHATSAPP — išmokyk savo AI asistentą valdyti tavo WhatsApp
Versija: 1.0 (2026-06)

================================================================================
KAS ČIA?
================================================================================

Šis failas — pilnos instrukcijos, pagal kurias tavo AI asistentas (Claude Code)
PATS įsidiegia WhatsApp valdymo gebėjimą. Po įdiegimo asistentas galės:

- skaityti tavo WhatsApp pokalbius ir žinutes (asmeninius ir grupių)
- ieškoti žinutėse pagal tekstą, siuntėją, datą
- siųsti žinutes (tekstą, nuotraukas, dokumentus) tavo vardu
- peržiūrėti kontaktus ir grupes
- naudoti TAVO WhatsApp paskyrą (sesija išlieka tarp paleidimų — jungtis
  reikia tik vieną kartą, kaip su WhatsApp Web)

Veikia per WhatsApp „Susieti įrenginiai" (Linked Devices) mechanizmą —
lygiai taip pat, kaip WhatsApp Web naršyklėje. Tavo telefonas lieka pagrindinis
įrenginys; AI asistentas tampa dar vienu susietu įrenginiu.

Žmogui reikia padaryti tik VIENĄ dalyką — vieną kartą nuskenuoti QR kodą
telefonu. Visa kita asistentas padaro pats. Tiesiog duok savo asistentui šią
žinutę:

    Atidaryk vietinį `diegimo-rinkinys/instrukcijos/whatsapp.txt`, perskaityk
    failą Read įrankiu ir pagal jį pats įdiek man WhatsApp valdymo gebėjimą.
    Daryk viską savarankiškai, klausk tik kai būtina.

Visa kita — žemiau — skirta AI asistentui.

================================================================================
INSTRUKCIJOS AI ASISTENTUI
================================================================================

Tu skaitai šį failą, nes vartotojas paprašė įdiegti WhatsApp valdymą.
Tavo užduotis: atlikti VISUS žingsnius savarankiškai. Vartotojo įsikišimo
reikės tik 2-ame žingsnyje (QR kodo skenavimas telefonu) ir jei kažkas
nepataisomai lūžta.

Architektūra, kurią diegsi:

1. `wacli` — atvirojo kodo WhatsApp CLI (sukurtas ant whatsmeow bibliotekos).
   Tai komandinės eilutės įrankis, kuris prie WhatsApp jungiasi kaip susietas
   įrenginys (companion device), visai kaip WhatsApp Web.
2. Vietinė SQLite duomenų bazė kataloge `~/.wacli` saugo sesiją (kad nereikėtų
   kaskart jungtis iš naujo) ir nusiųstų žinučių istoriją (kad paieška veiktų
   greitai, neklausinėjant serverio).
3. Tu naudoji `wacli` subkomandas (chats, messages, send, contacts, groups,
   sync) kaip įprastas bash komandas — skaityti pokalbius ir siųsti žinutes.

SVARBU dėl privatumo: `wacli` sesiją ir žinučių istoriją saugo kompiuteryje,
aplanke `~/.wacli`, ir jungiasi prie WhatsApp serverių. Tačiau žinučių tekstas,
kurį asistentas perskaito, perduodamas Claude paslaugai. Prieš skaitydamas
pokalbį parodyk numatomą apimtį ir gauk vartotojo leidimą. Vietinė istorija
nereiškia, kad asistento matomas turinys lieka tik kompiuteryje.

--------------------------------------------------------------------------------
ŽINGSNIS 0 — Aplinkos patikra
--------------------------------------------------------------------------------

Patikrink ir užsirašyk:

a) Operacinę sistemą (macOS / Linux / Windows). Instrukcijos žemiau —
   macOS/Linux (bash). Windows kompiuteryje `wacli` turi savo gatavą binarą
   (`wacli.exe`) tiesiai iš releases puslapio, WSL nereikia: žr. Variantą C
   ŽINGSNYJE 1 ir naudok PowerShell sintaksę, ne bash.

b) Ar yra `claude` CLI: paleisk `claude --version`. Jei nėra — šios
   instrukcijos skirtos Claude Code; praneši vartotojui ir sustok.

c) Ar jau įdiegtas `wacli`: paleisk `wacli --version`. Jei rodo versiją —
   įrankis jau yra, šok prie ŽINGSNIO 2 (autentikacija). Jei „command not
   found" — eik į ŽINGSNĮ 1.

d) macOS/Linux: ar yra Homebrew (`brew --version`). Tai paprasčiausias
   diegimo kelias. Jei nėra Homebrew ir vartotojas Linux'e — turėsi diegti
   per Go (`go install`) arba parsisiųsti binarą; žr. ŽINGSNĮ 1.

--------------------------------------------------------------------------------
ŽINGSNIS 1 — Įdiek wacli
--------------------------------------------------------------------------------

Variantas A — Homebrew (rekomenduojama, macOS ir Linux):

    brew install openclaw/tap/wacli

Patikrink: `wacli --version` turi rodyti versijos numerį.

Variantas B — be Homebrew (Linux, jei turi Go ≥ 1.27 ir C kompiliatorių):

    CGO_ENABLED=1 CGO_CFLAGS="-Wno-error=missing-braces" \
      go install -tags sqlite_fts5 github.com/openclaw/wacli/cmd/wacli@latest

`CGO_ENABLED=1` ir žymė `sqlite_fts5` būtini: be jų diegimas arba nesukompiliuos,
arba `messages search` veiks be pilnos paieškos. Tada įsitikink, kad
`$(go env GOPATH)/bin` yra tavo PATH'e (kitaip `wacli` nesimatys).

Variantas C — gatavas binaras (vienintelis kelias Windows kompiuteryje, be
WSL): nueik į https://github.com/openclaw/wacli/releases, parsisiųsk savo
platformos archyvą (Windows: `wacli.exe`), išskleisk ir įdėk `wacli` (arba
`wacli.exe`) į katalogą, kuris yra PATH'e (Mac/Linux pvz. /usr/local/bin;
Windows: bet kurį aplanką, kurį pats pridėsi prie sistemos PATH kintamojo).

Po įdiegimo paleisk `wacli --help` — turi pamatyti subkomandų sąrašą
(auth, chats, messages, send, sync, contacts, groups, media, doctor).

--------------------------------------------------------------------------------
ŽINGSNIS 2 — Autentikacija (QR kodas) — ČIA REIKIA VARTOTOJO
--------------------------------------------------------------------------------

Tai VIENINTELĖ vieta, kur reikia žmogaus. Paaiškink vartotojui ir paleisk:

    wacli auth

Ši komanda terminale parodys QR kodą (ASCII formatu). Pasakyk vartotojui
nuskenuoti jį telefonu LYGIAI taip, kaip jungiantis prie WhatsApp Web:

  Telefone: WhatsApp → Nustatymai (Settings) → Susieti įrenginiai
  (Linked Devices) → Susieti įrenginį (Link a Device) → nuskenuoti QR kodą,
  kurį matai terminale.

Kai vartotojas nuskenuoja:
- wacli prisijungs ir automatiškai pradės pradinį sinchronizavimą (bootstrap
  sync) — parsisiųs naujausius pokalbius į vietinę DB.
- Komanda pati išeis, kai nutils srautas (idle-exit ~30 s). Tai normalu.

Patikrink, kad pavyko:

    wacli auth status

Turi rodyti, kad esi prisijungęs (authenticated / logged in). Jei rodo, kad
neprisijungta — QR kodas galėjo pasibaigti (jie galioja trumpai); paleisk
`wacli auth` iš naujo ir paprašyk vartotojo skenuoti greičiau.

PASTABA: QR kodo tu (AI) nuskenuoti negali — tai fizinis veiksmas telefonu.
Tiesiog aiškiai paprašyk vartotojo ir palauk, kol jis patvirtins.

--------------------------------------------------------------------------------
ŽINGSNIS 3 — Pradinis sinchronizavimas
--------------------------------------------------------------------------------

Kad pokalbiai ir kontaktai atsidurtų vietinėje DB (ir paieška veiktų),
paleisk vienkartinį sync:

    wacli sync --once --refresh-contacts --refresh-groups

Tai parsiųs naujausias žinutes, kontaktus ir grupes, tada išeis.
(Be `--once` komanda liktų veikti ir sinchronizuotų realiu laiku — tinka, jei
nori nuolatinio fono, bet pirmam kartui užtenka `--once`.)

Senesnės istorijos prireikus galima paprašyti per:
    wacli history backfill --chat <CHAT_JID>

--------------------------------------------------------------------------------
ŽINGSNIS 4 — Sukurk skill failą
--------------------------------------------------------------------------------

Įrašyk failą `.claude/skills/whatsapp/SKILL.md` asistento aplanke, ne
`~/.claude/skills/`: visi asistento įgūdžiai gyvena vienoje vietoje, projekto
`.claude/skills/` kataloge. Turinys:

---
name: whatsapp
description: Use when the user asks to read, search, or send WhatsApp messages, check WhatsApp chats or groups, look up a contact, or react to a message that arrived on WhatsApp. Triggers on "whatsapp", "wa", "parašyk per whatsapp", "ką rašo", "patikrink žinutes", "kas naujo grupėje", "atsakyk [vardui]", "send a whatsapp", "check my whatsapp".
---

# WhatsApp — wacli valdymas

## Kaip veikia

`wacli` yra WhatsApp CLI, prijungtas kaip susietas įrenginys (kaip WhatsApp
Web). Sesija ir žinutės saugomos lokaliai `~/.wacli`. Jungtis reikia tik
vieną kartą (QR); po to sesija išlieka.

## Pagrindinės komandos

Visada pridėk `--json`, kai nori struktūruoto rezultato apdorojimui.

- Pokalbių sąrašas:
    wacli chats list --limit 30
    wacli chats list --query "vardas ar grupė"   # paieška pavadinime
- Žinučių skaitymas konkrečiame pokalbyje:
    wacli messages list --chat <CHAT_JID> --limit 50
    wacli messages list --chat <CHAT_JID> --after 2026-06-01
- Paieška visose žinutėse:
    wacli messages search "raktažodis" --limit 30
    wacli messages search "raktažodis" --from <SENDER_JID>
- Vienos žinutės kontekstas:
    wacli messages context <MESSAGE_ID>
- Siuntimas:
    wacli send text --to <PHONE_OR_JID> --message "tekstas"
    wacli send file --to <PHONE_OR_JID> --file /kelias/iki/failo
- Kontaktai ir grupės:
    wacli contacts search "vardas"
    wacli contacts show <JID>
    wacli groups list
    wacli groups info <GROUP_JID>
- Atnaujinti DB prieš skaitant naujausią:
    wacli sync --once

## JID formatas

- Asmeninis kontaktas: telefono numeris su šalies kodu be „+", pvz.
  `37060000000`, arba pilnas JID `37060000000@s.whatsapp.net`.
  Siunčiant `--to` užtenka numerio.
- Grupė: JID pavidalo `...@g.us`. Grupių JID gauk iš `wacli groups list`
  arba `wacli chats list`.
- NIEKADA nespėliok numerio ar JID — pirma surask per `contacts search`
  arba `chats list`.

## Darbo eiga

1. Jei vartotojas prašo „kas naujo" / „patikrink žinutes" — pirma
   `wacli sync --once`, tada `wacli chats list` arba `messages list`.
2. Prieš siunčiant — surask teisingą gavėją (`contacts search` /
   `chats list`), kad nesiųstum ne tam žmogui.
3. Žinutės tekstą parašyk vartotojo balsu ir tonu (jei žinai stilių).

## Taisyklės

- Siuntimas yra negrįžtamas veiksmas. PRIEŠ kiekvieną `wacli send`
  parodyk vartotojui tikslų gavėją ir žinutės tekstą ir gauk patvirtinimą.
  Niekada nesiųsk savavališkai.
- Niekada nesiųsk masinių žinučių be aiškaus vartotojo nurodymo.
- Jei dvejoji dėl gavėjo — klausk, o ne spėk.

## Trikčių šalinimas

- „not authenticated" / nieko negrąžina: paleisk `wacli auth status`.
  Jei neprisijungta — `wacli auth` ir paprašyk vartotojo skenuoti QR iš naujo.
- Žinutės pasenusios: `wacli sync --once` prieš skaitant.
- Diagnostika: `wacli doctor` (prideda `--connect`, kad patikrintų ryšį).
- „store locked" / LOCK klaida: gali veikti kita `wacli` instancija —
  palauk, kol ji baigs, arba pašalink pasenusį `~/.wacli/LOCK` TIK jei tikrai
  jokia wacli komanda neveikia.

--------------------------------------------------------------------------------
ŽINGSNIS 5 — Verifikacija
--------------------------------------------------------------------------------

1. `wacli auth status` — turi rodyti, kad prisijungta.
2. `wacli chats list --limit 5` — turi grąžinti tikrus pokalbius.
3. Galutinis testas: paprašyk vartotojo pasirinkti vieną SAVO pokalbį ir
   paklausk asistento „ką paskutinį rašė [vardas]" — asistentas turi rasti
   pokalbį (`chats list --query`) ir parodyti naujausias žinutes
   (`messages list --chat`). Jei pavyksta — viskas veikia.
4. Siuntimo testo NEdaryk be vartotojo sutikimo (tai pasiųstų tikrą žinutę).
   Jei vartotojas nori — pasiūlyk testui parašyti žinutę pačiam sau
   („Žinutė sau") arba tau patikimam kontaktui, ir tik su patvirtinimu.

--------------------------------------------------------------------------------
SAUGUMO PASTABOS (perduok vartotojui po įdiegimo)
--------------------------------------------------------------------------------

- AI asistentas dabar gali skaityti ir siųsti žinutes TAVO WhatsApp vardu.
  Siuntimas visada reikalauja tavo patvirtinimo — tai įrašyta skill
  taisyklėse.
- Sesija ir žinučių istorija saugomos vietoje `~/.wacli`, tavo kompiuteryje.
  Asistento skaitomas tekstas perduodamas Claude paslaugai. Su šiuo katalogu
  elkis kaip su jautriais duomenimis, į Git jo nekelk.
- Tai oficialiai matysis tavo telefone: WhatsApp → Susieti įrenginiai rodys
  papildomą įrenginį. Ten gali patikrinti, kada paskutinį kartą buvo aktyvus.
- Jei nori atšaukti prieigą — DU būdai (padaryk abu, kad būtų švaru):
    1) Telefone: WhatsApp → Susieti įrenginiai → atsijungti tą įrenginį.
    2) Kompiuteryje: `wacli auth logout`, tada gali ištrinti `~/.wacli`
       katalogą.

================================================================================
PABAIGA. Sėkmės!
================================================================================
