feat(issue-24): startup dialogs come from the agent adapter and are handled while waiting for the TUI
handle_startup_dialogs was a claude-only string ladder called only when AGENT=claude, and wait_for_tui_ready does not treat a dialog screen as ready. So agy, grok and codex sat on their directory-trust prompt for the full readiness timeout, the session was recorded as tui-ready-timeout, and onboarding injection was disabled (create_session.sh:313-314) - a human had to accept each dialog by hand. The signatures and accept keys move to the adapters as `startup_dialogs` (pattern, keys, kind), published through the existing `facts` eval contract as MAM_STARTUP_DIALOGS. claude's ladder moves over verbatim; agy takes Enter, grok y, codex Enter, and codex's update notice takes 2 (Skip), which blocks a start just as hard while changing nothing. kind is `trust` or `notice`: --no-auto-trust leaves trust dialogs to a human and still answers notices, since trusting a directory makes codex load its project-local config, hooks and exec policy. Re-sending is gated by time (MAM_DIALOG_RESEND_S, default 5s), not by frames. #24's comment reports that `--source visible` keeps showing an accepted dialog for a while, and _pane_capture hardcodes that source, so "still on screen" is not evidence the keys were missed; acceptance is judged by the ready tokens alone. Two existing tests asserted the old shape and are updated, not weakened: b19's "Escape branch stays" now looks for it in claude's adapter, and c1b's "Enter once per iteration" becomes "never twice for one frame", which the cooldown satisfies strictly more tightly. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
3bcaa39ab0
commit
5ba04a27ca
11 files changed
+344
-29
No files matched your search
@@ -43,6 +43,7 @@ Options:
|
||||
use --herdr-session for that.
|
||||
--submit-job PROMPT submit a job to multi-agent-mux-delegate-job registry with the given prompt
|
||||
--onboard automatically submit a project alignment/orientation job to the new agent
|
||||
--no-auto-trust do not answer a start-up directory-trust dialog (default: answer it)
|
||||
--no-onboard disable automatic onboarding job submission
|
||||
--no-isolate legacy flag (no-op; all sessions use global configuration)
|
||||
--isolate legacy flag (no-op; all sessions use global configuration)
|
||||
@@ -60,6 +61,11 @@ HERDR_SERVER_OPT=""
|
||||
HERDR_WORKSPACE_OPT=""
|
||||
SUBMIT_JOB_PROMPT=""
|
||||
ONBOARD=1
|
||||
# Issue #24: answer a start-up directory-trust dialog for the --workspace the
|
||||
# operator named. --no-auto-trust leaves those unanswered (notices are always
|
||||
# answered); codex in particular loads project-local config, hooks and exec
|
||||
# policy once trusted.
|
||||
AUTO_TRUST=1
|
||||
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
@@ -74,6 +80,8 @@ while [ $# -gt 0 ]; do
|
||||
--submit-job) SUBMIT_JOB_PROMPT="$2"; shift 2 ;;
|
||||
--onboard) ONBOARD=1; shift ;;
|
||||
--no-onboard) ONBOARD=0; shift ;;
|
||||
--auto-trust) AUTO_TRUST=1; shift ;;
|
||||
--no-auto-trust) AUTO_TRUST=0; shift ;;
|
||||
--isolate) echo "NOTE: --isolate/--no-isolate is a no-op — config-home isolation was removed; sessions always use global config." >&2; shift ;; # legacy compatibility
|
||||
--no-isolate) echo "NOTE: --isolate/--no-isolate is a no-op — config-home isolation was removed; sessions always use global config." >&2; shift ;;
|
||||
-h|--help) usage; exit 0 ;;
|
||||
@@ -81,6 +89,8 @@ while [ $# -gt 0 ]; do
|
||||
esac
|
||||
done
|
||||
|
||||
export MAM_AUTO_TRUST="$AUTO_TRUST"
|
||||
|
||||
if [ -n "$HERDR_SERVER_OPT" ]; then
|
||||
export HERDR_SESSION_NAME="$HERDR_SERVER_OPT"
|
||||
fi
|
||||
@@ -331,8 +341,11 @@ if [ "$TUI_READY_RC" -ne 0 ]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$AGENT" = "claude" ] && [ -z "$LAST_VISIBLE_STATUS_OVERRIDE" ]; then
|
||||
handle_startup_dialogs "$SESSION_NAME" 15
|
||||
# Issue #24: every agent, not only claude. The signatures and accept keys come
|
||||
# from the agent adapter, so an agy/grok/codex trust prompt is answered here
|
||||
# too instead of sitting until the readiness wait gives up.
|
||||
if [ -z "$LAST_VISIBLE_STATUS_OVERRIDE" ]; then
|
||||
handle_startup_dialogs "$SESSION_NAME" 15 "$AGENT"
|
||||
fi
|
||||
|
||||
# pane 메타 캡처
|
||||
|
||||
Reference in new issue
Block a user