Backup état complet après enregistrement vidéo démo de bout en bout. À utiliser comme point de référence pour la consolidation post-démo. Changements majeurs de la session 18-19 mai : - AIVA-URGENCE : page autonome avec preset URL + auto-focus chain - Workflow Demo_urgence_3_db : merge linux_db + steps AIVA + pause humaine NoMachine - Bypass LLM (static_result / static_text) dans replay_engine pour démos déterministes sans appel Ollama - Fix api_stream:3013 — replay_paused au premier polling /next - dag_execute : lift duration_ms vers top-level pour wait runtime - NPM bypass auth /aiva-urgence/ via location ^~ (proxy_host/10.conf hors git) - scripts/cancel-replays.sh — workaround Stop VWB qui ne purge pas la queue Anchors visuels (468) forcés dans le commit pour garantir restorabilité. DB workflows actuelle + ~12 .bak DB de la journée incluses. Sujets identifiés pour consolidation post-démo (TODO) : 1. Bug VWB recapture anchor ne régénère pas le PNG 2. Léa client accumule état mémoire (restart périodique requis) 3. Stop VWB ne purge pas la queue serveur (lien manquant vers /replay/cancel) 4. Bug coord client mss tronqué 2560x60 → mapping Y cassé 5. delay_before/delay_after ignorés au runtime (fix partiel duration_ms) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
7.2 KiB
Handoff session 2026-05-16 matinée — Contournement Ctrl+V NoMachine via ydotool
Auteur : Claude (session 10:00 → 15:10 CEST)
Suite de : 2026-05-16_handoff_demo3_workflow.md (handoff du 16 mai 02:04, session 15→16 mai)
Objectif : démo vidéo "demo 95" jeudi 21 mai 2026 (J-5)
1. Problème résolu
Bloqueur n°1 du handoff précédent (« clics ne traversent pas NoMachine ») : partiellement résolu.
- Clics Léa via NoMachine : OK (traversent normalement, propagation pynput → SendInput Windows → NoMachine → VM)
- Key combos avec Ctrl (Ctrl+V, Ctrl+Enter) : bloqués par NoMachine en mode "passive grab" par défaut
Cause root identifiée (agent de recherche web) : NoMachine Player Windows en passive grab intercepte/avale la touche Ctrl quand "Grab the keyboard input" n'est pas explicitement activé. Source : KB NoMachine AR01P00959, TR08R09811.
Solution 1 testée (chercher l'option dans le menu NoMachine 9.5.7) : option introuvable dans l'UI.
Solution 2 retenue : bypasser entièrement NoMachine pour le paste/execute en injectant les touches directement dans la VM via ydotool (compatible Wayland natif Ubuntu 26.04).
2. Architecture finale
[Léa Windows] --pynput--> [clics Windows] --NoMachine--> [VM Ubuntu DBeaver]
(clics OK) (focus zone éditeur SQL)
[hôte Linux] --SSH--> [VM Ubuntu]
prepare_clipboard.sh wl-copy + xsel (gardien boucle) → clipboards Wayland + X11 remplis
paste_and_execute.sh ydotool key 29:1 47:1 47:0 29:0 → Ctrl+V dans VM (bypasse NoMachine)
ydotool key 29:1 28:1 28:0 29:0 → Ctrl+Enter dans VM
3. Livrables créés
Scripts (~/ai/rpa_vision_v3/scripts/)
| Fichier | Rôle |
|---|---|
payload_insert_morel.sql |
Payload INSERT SQL (1632 bytes, source de vérité) extrait du backup DB |
prepare_clipboard_linuxdb.sh |
Pousse payload sur VM, lance gardien boucle qui re-pousse clipboard Wayland + X11 toutes les 0.5s (sinon écrasé par sélection terminal/etc.) |
paste_and_execute_linuxdb.sh |
Vérifie ydotoold + gardien, déclenche Ctrl+V puis Ctrl+Enter via ydotool dans la VM |
Modifications workflows.db (3 backups successifs)
workflows.db.backup_2026-05-16_102755_avant_clipboard_relay (avant 1er UPDATE)
workflows.db.backup_2026-05-16_111541_avant_rawkeys (tentative raw_keys, abandonnée)
workflows.db.backup_2026-05-16_150853_avant_suppr_steps_8_9 (avant suppression key_combos)
État final workflow linux_db (wf_0786343fb2b7_1778879244) : 7 steps, tous des clics
0 double_click_anchor LINUX_demo
1 click_anchor
2 click_anchor
3 wait_for_anchor
4 click_anchor
5 click_anchor
6 click_anchor
Les ex-steps 7 (Ctrl+V) et 8 (Ctrl+Enter) ont été supprimés car remplacés par paste_and_execute_linuxdb.sh lancé à la main.
DB demo_95 (VM)
Nettoyée : 3 rows propres (DURAND, MARTIN, PETIT), AUTOINCREMENT reset à 3. Prochain INSERT MOREL aura id=4.
4. Dépendances installées dans la VM (Ubuntu 26.04 Wayland)
wl-clipboard (wl-copy/wl-paste — clipboard Wayland)
openssh-server (SSH depuis Linux hôte)
xsel (xsel — clipboard X11/XWayland)
x11-xserver-utils (xhost — autoriser connexions X11 locales)
ydotool (1.0.4-3 — injection clavier uinput, Wayland-compatible)
Démarrage ydotoold daemon (pas de service systemd fourni par le paquet Ubuntu) :
echo 'loli' | sudo -S sh -c 'nohup setsid ydotoold --socket-path=/tmp/.ydotool_socket --socket-perm=0666 >/var/log/ydotoold.log 2>&1 </dev/null &'
(Inclus dans paste_and_execute_linuxdb.sh qui le relance si absent.)
5. À refaire après chaque reboot VM
- xhost (autorise SSH non-interactif à utiliser xsel sur XWayland) :
sshpass -p loli ssh dom@192.168.122.132 \ "XAUTH=\$(ls /run/user/1000/.mutter-Xwaylandauth.* 2>/dev/null | head -1); \ DISPLAY=:0 XAUTHORITY=\$XAUTH xhost +local:" - prepare_clipboard_linuxdb.sh (relance gardien clipboard + daemon ydotoold via paste_and_execute si nécessaire)
6. Procédure démo finale
# AVANT la démo (1 fois, à froid après reboot) :
~/ai/rpa_vision_v3/scripts/prepare_clipboard_linuxdb.sh
# Pour chaque take de la démo :
# 1. Lancer workflow linux_db dans VWB (bouton bleu "→ Windows")
# 2. Attendre que Léa termine les 7 steps (clics visibles dans la VM via NoMachine)
# 3. Dans un terminal Linux hôte :
~/ai/rpa_vision_v3/scripts/paste_and_execute_linuxdb.sh
# → INSERT collé + exécuté instantanément dans DBeaver (visible à l'écran)
Vérif post-démo (compter rows) :
sshpass -p loli ssh dom@192.168.122.132 \
'python3 -c "import sqlite3; c=sqlite3.connect(\"/home/dom/demo_95\"); print(list(c.execute(\"SELECT id,nom_patient,date_creation FROM requalifications_t2a ORDER BY id DESC LIMIT 2\")))"'
Reset pour nouveau take :
sshpass -p loli ssh dom@192.168.122.132 \
'python3 -c "
import sqlite3
c = sqlite3.connect(\"/home/dom/demo_95\")
c.execute(\"DELETE FROM requalifications_t2a WHERE id > 3\")
c.execute(\"UPDATE sqlite_sequence SET seq = 3 WHERE name = '\''requalifications_t2a'\''\")
c.commit()"'
7. Dette technique créée par cette session
- Couplage hôte ↔ VM dur : password
lolien clair dans les scripts (SSH_PASS,SUDO_PASS). À remplacer par clé SSH + sudoers NOPASSWD pour ydotoold. Hors scope J-5. - Gardien clipboard boucle 0.5s : consomme CPU négligeable mais pas propre. À remplacer post-démo par un mécanisme dbus signal ou systemd path unit qui re-pousse seulement sur événement "clipboard cleared".
- paste_and_execute lancé à la main : pas intégré au workflow VWB. Pour intégration auto post-démo, deux options :
- A : ajouter à Léa un nouveau action_type
shell_remote(modif executor.py côté Windows + déploiement SCP) - B : modifier
replay_engine.pycôté serveur pour exécuter localement (Linux hôte) certains step types au lieu de dispatcher à Léa
- A : ajouter à Léa un nouveau action_type
- xhost +local: : large. À remplacer par xhost SI:localuser:dom post-démo.
- AUTOINCREMENT id=9 déjà consommé par les tests : reset à 3 pour la démo, mais à vérifier après chaque take.
8. État infra runtime
- Serveur
rpa-streaming: actif (PID 308418 mentionné dans handoff précédent) - ydotoold daemon : actif côté VM, socket
/tmp/.ydotool_socket(0666) - Gardien clipboard : actif côté VM (PID dans
/tmp/clipboard_guard.pid) - 3 clipboards remplis :
- Wayland VM (1633 bytes via wl-copy)
- X11 VM (1632 bytes via xsel)
- Windows (1632 bytes via Set-Clipboard — peut nécessiter re-push manuel si vidé)
9. Sessions du jour (16 mai)
- 06:52 → 07:55 : session reprise courte (fermée par Dom par erreur), test workflow → blocage Ctrl+V
- 10:00 → 15:10 : session diagnostic+fix complet
- Diagnostic clipboard Wayland ≠ X11 (XWayland ne synchronise pas)
- Fix : gardien double-write wl-copy + xsel + xhost +local:
- Diagnostic NoMachine passive grab mange Ctrl
- Fix : bypass via ydotool en SSH dans la VM
- Workflow linux_db simplifié (suppression key_combos)