google / google/adk-js

Answered HITL form stays live in the transcript; submitting it discards the answer and raises a new approval request

Open
#731 0 comments 0 reactions 1 assignee Claimed by @Varun-S10 View on GitHub
Dominant language
TypeScript
Stars
1.4k
Forks
205
Avg merge
3d 16h
Merged PRs (30d)
92

Description

> Dev UI issue (prebuilt `adk-web` bundle served by `adk web`) — please transfer to google/adk-web if that is the right home.

If an interrupt is answered through the main chat box, the inline approval form on the earlier event stays enabled. Submitting it posts a `functionResponse` for the already-answered id, which the framework silently drops and turns into a *new* approval request — the user's answer is gone and the workflow now pauses on a question nobody asked. When the same form submits the reply, the UI does clear it, so only replies arriving by another route leave a live form behind.

```
cd dev && npx adk web ../samples/workflows/dynamic --port 8132
# app=human_input, new session:
# 1. main chat box: "please delete the staging database" -> inline form appears on #2
# 2. answer "no" in the MAIN chat box -> #4 "Denied" (interrupt resolved)
# 3. the inline form on #2 is still enabled: type "yes", send
```

```
#5 user functionResponse id=21596d86 (already answered at #3) response={"result":"yes"}
#6 get_user_approval functionCall adk_request_input id=db278be9 <- phantom new request
no handle_process decision event for the "yes" at all
```

Once an interrupt is resolved its form should be disabled or removed. The framework half — accepting a reply to an already-answered id and re-interrupting instead of erroring — is filed separately in adk-js.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.