From 53e86be78d7a80a114cf265dbf8189606297d040 Mon Sep 17 00:00:00 2001 From: Igor Soarez Date: Mon, 26 Oct 2026 16:40:50 +0200 Subject: hooks: answer each message, so the extension sends a report once the pi extension (herdr's protocol) waits for a reply line and sends a report again after 0.5 s without one; dingger never replied. every report arrived twice and took about 2 s, delaying the next one (the live log: 196 of 400 reports repeated the previous one, 0.49 s later). the daemon now answers each line with {"ok":true}; senders that do not read replies (dingger poke, importance, the claude hook) are unaffected. e2e step 21: one report, done in 0.38 s; without replies, two, 2.08 s. --- tests/e2e.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'tests') diff --git a/tests/e2e.sh b/tests/e2e.sh index 20ce5dc..e51b18d 100755 --- a/tests/e2e.sh +++ b/tests/e2e.sh @@ -909,6 +909,17 @@ if command -v node >/dev/null; then expect "announced to other extensions" "grep -c '^event dingger:importance {\"level\":\"high\"}$' $EXTLOG" 1 report "$I2" "" normal expect "imp: set back by hand" "opt $I2 @dingger_importance" "" + # Unanswered, the extension sends a report again after 0.5 s, and gives + # up on it after 2 s. + working() { sed 's/\x1b\[[0-9;]*m//g' "$DIR/daemon.log" | grep -c "hook report pane=$I2 state=Working"; } + before=$(working) + start=$(python3 -c 'import time; print(time.time())') + iext "$I2" agent_start + took=$(python3 -c 'import time,sys; print(round(time.time() - float(sys.argv[1]), 2))' "$start") + sleep 0.6 + expect "the daemon answers a report: the extension sends it once" "echo \$((\$(working) - before))" 1 + expect "and is done with it at once ($took s, with the harness's 0.3 s pause)" \ + "python3 -c 'import sys; print(float(sys.argv[1]) < 1.5)' $took" True 1 iext "$I2" session_start expect "a new pi on the session reports it again" "opt $I2 @dingger_importance" high # pi starts a session before any command runs. -- cgit v1.2.3