Plan done for mute-session-end.md
This commit is contained in:
parent
26dfdaccc3
commit
fbb49399ca
78
plan/done/mute-session-end.md
Normal file
78
plan/done/mute-session-end.md
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
# Feature: Mute Session End Notification
|
||||||
|
|
||||||
|
## Goal
|
||||||
|
Tambah field konfigurasi baru per-service (xmpp & telegram) untuk menonaktifkan
|
||||||
|
pesan pemberitahuan saat sesi berakhir. Jika `true`, agent tidak mengirim pesan
|
||||||
|
"pemberitahuan sesi berakhir" (`*session end*` / `Sesi ditutup. Sampai jumpa`)
|
||||||
|
ketika sesi ditutup karena timeout/kegiatan berhenti.
|
||||||
|
|
||||||
|
Field mengikuti pola yang sudah ada di `service.yaml` (sudah mendukung override
|
||||||
|
per karakter untuk xmpp & telegram).
|
||||||
|
|
||||||
|
## Field
|
||||||
|
- Nama: `mute_session_end`
|
||||||
|
- Tipe: bool
|
||||||
|
- Default: `false` (perilaku lama: tetap kirim pesan penutup)
|
||||||
|
- Letak: di bawah section `xmpp:` dan `telegram:` (service.yaml & config.yaml)
|
||||||
|
- Konstanta global baru: `XMPP_MUTE_SESSION_END`, `TELEGRAM_MUTE_SESSION_END`
|
||||||
|
|
||||||
|
## Scope pesan yang di-mute (jalur target)
|
||||||
|
Hanya pesan penutup yang dihasilkan oleh sistem saat sesi berakhir otomatis:
|
||||||
|
- `xmpp_client._timeout_session`
|
||||||
|
- `telegram_client._timeout_session`
|
||||||
|
|
||||||
|
Sesi tetap di-reset seperti semula; hanya pengiriman teks penutupnya yang dilewati.
|
||||||
|
|
||||||
|
**Dikonfirmasi:** natural-close via tool `end_session` TIDAK ikut di-mute (farewell
|
||||||
|
adalah bagian percakapan model, bukan pesan sistem).
|
||||||
|
|
||||||
|
## Perubahan tambahan: timeout group/MUC
|
||||||
|
Diperpanjang dari 5 menit (300s) menjadi 30 menit (1800s) untuk group/MUC.
|
||||||
|
Titik yang diubah:
|
||||||
|
- `telegram_client.py` (`_process_message`): `... else 300` → `1800` (chat_type group).
|
||||||
|
- `xmpp_client.py`: dua `session.start_timer(300, ..., 'groupchat')` → `1800`.
|
||||||
|
Private/DM tetap 86400 (di luar scope).
|
||||||
|
|
||||||
|
## Files to change
|
||||||
|
|
||||||
|
### 1. config.py
|
||||||
|
- Tambah pembacaan default dari `config.yaml` pada blok modul-level:
|
||||||
|
- `XMPP_MUTE_SESSION_END` (xmpp section, default "false")
|
||||||
|
- `TELEGRAM_MUTE_SESSION_END` (telegram section, default "false")
|
||||||
|
- Tambah keduanya ke `global` + reset di `_reset_service_from_config()`.
|
||||||
|
- Tambah keduanya ke `global` + aplikasi override di `load_service_config()`
|
||||||
|
memakai pola yang sama seperti field lain:
|
||||||
|
- `if "mute_session_end" in xmpp_data: XMPP_MUTE_SESSION_END = _to_bool(...)`
|
||||||
|
- `if "mute_session_end" in telegram_data: TELEGRAM_MUTE_SESSION_END = _to_bool(...)`
|
||||||
|
- Parsing bool pakai pola string existing: `str(v).strip().lower() in ("true","1","yes")`.
|
||||||
|
|
||||||
|
### 2. services/xmpp_client.py (`_timeout_session`)
|
||||||
|
- Bungkus `self._schedule_send(session_id, body, mtype)` dengan guard:
|
||||||
|
`if not config.XMPP_MUTE_SESSION_END:` — tetap panggil `self._session_mgr.reset(session_id)`.
|
||||||
|
- Opsional: log bahwa notifikasi di-mute.
|
||||||
|
|
||||||
|
### 3. services/telegram_client.py (`_timeout_session`)
|
||||||
|
- Bungkus `self._schedule_send(chat_id, body)` dengan guard:
|
||||||
|
`if not config.TELEGRAM_MUTE_SESSION_END:` — tetap `self._session_mgr.reset(...)`.
|
||||||
|
|
||||||
|
### 4. Templates (dokumentasi, agar field mudah ditemukan)
|
||||||
|
- `config.default.yaml`: tambah `mute_session_end: false` di section xmpp & telegram.
|
||||||
|
- `agent/characters/*/service.default.yaml` (semua karakter): tambah field yang sama.
|
||||||
|
- Catatan: `service.yaml` runtime bersifat gitignored; karena loader cek keberadaan
|
||||||
|
key, karakter tanpa key baru akan fallback ke default `false` (backward compatible).
|
||||||
|
|
||||||
|
## Backward compatibility
|
||||||
|
- Tidak ada service.yaml existing yang wajib diubah.
|
||||||
|
- Key hilang => default `false` => behavior identik dengan sekarang.
|
||||||
|
|
||||||
|
## Validation plan
|
||||||
|
- `python -c "import config; print(config.XMPP_MUTE_SESSION_END, config.TELEGRAM_MUTE_SESSION_END)"`
|
||||||
|
untuk default.
|
||||||
|
- Load karakter dengan `mute_session_end: true` (via service.yaml test / char override)
|
||||||
|
dan verifikasi konstanta menjadi True.
|
||||||
|
- Kode review manual kedua `_timeout_session`: saat True, tidak ada `send`/`schedule_send`,
|
||||||
|
sesi tetap reset.
|
||||||
|
|
||||||
|
## Resolved
|
||||||
|
Scope final: hanya `_timeout_session`. Natural-close `end_session` tidak disentuh
|
||||||
|
(sudah dikonfirmasi user). Timeout group/MUC dinaikkan ke 30 menit.
|
||||||
Loading…
Reference in New Issue
Block a user