Repository navigation
Description
Part of #2283. Batch 1, delivery position 3/15. Recommended sequence: after #2285. This ordering is not a hard technical dependency unless a shared contract is required.
Problem
Upstream Codex maps request_user_input_async to form elicitation with _meta.codex.delivery: async. Alas has forms and request cancellation, but no dedicated interpretation of this optional-input contract.
Scope and acceptance criteria
- Preserve and classify async question metadata separately from blocking questions. Keep work running and avoid mandatory-input notifications or queue/child blockers.
- Render optional questions with supported choices and free-text answers; no automatic default submission.
- Bind answers to the exact request/session/connection. Let the adapter steer into the originating turn; do not emulate with a fresh prompt.
- Cancel/expire UI on $/cancel_request, turn end, session close and observation loss. Late answers cannot reach a successor turn. Preserve meaningful question/answer history without duplicating adapter replay.
Validation
Cover running state with an open form, optional partial answers, decline/cancel, end-turn/answer races, reconnect and repeated questions. Verify adapter late-answer warning behavior and both supported wire versions. This feature landed after the audited 2.5.0 release; verify release/backport before adopting.
Starting points
Paths were checked during the 2026-10-31 audit; relocate them if main has moved.
Packages/AlasCore/Sources/AlasACP/ACP/Protocol/ACPElicitation.swiftPackages/AlasCore/Sources/AlasACP/ACP/Session/ACPUserInput.swiftPackages/AlasCore/Sources/AlasSessions/ACP/Session/ACPElicitationCoordinator.swiftAlas/Sources/ACP/UI/ACPUserInputPrompt.swift
Delivery constraints
Keep Alas identified as Alas; never declare _meta.jetbrains.air to unlock this feature. Prefer standard ACP, otherwise add an explicitly negotiated client-neutral or Alas-specific extension in mrmans0n/codex-acp:alas and/or mrmans0n/claude-agent-acp:alas. Verify source inclusion, focused fork tests, immutable package publication and live feature behavior before updating Alas. Preserve unsupported behavior through an explicit fallback.
Follow repository testing policy: extend existing suites, keep decision/protocol logic in UI-free AlasCore, run affected package tests first and focused app checks where needed. Use event-gated concurrency fixtures, not fixed sleeps. Report source, fixture, live and CI evidence separately. Audit findings describe source gaps, not reproduced runtime failures.
ACP2 activation remains in #2213. This feature can ship on supported ACP1 paths independently; record exact adapter/version/protocol support and do not silently drop configured behavior on v2.
Activity