Preserve interactive ACP permission choices (#2762)

* fix(acp): preserve permission choices

ACP question bridges encode answers as repeated permission options. Preserve each option through the UI and return the exact selected ID, while keeping auto-accept from choosing on the user's behalf.

* fix(acp): validate selected permission behavior

Reject inconsistent action IDs instead of allowing the action ID to override the response behavior. Move the misplaced browser spec so the current base CI contract can run.

* fix(acp): preserve invalid permission requests

Validate selected ACP actions before consuming the pending request so inconsistent client responses can be corrected and retried.

* test(acp): verify real permission questions

* fix(acp): reject empty permission action ids

* test(e2e): scope Kimi config to ACP spec
This commit is contained in:
Mohamed Boudra
2026-08-01 20:56:19 +02:00
committed by GitHub
parent 74e4a9f90c
commit 048b82f2a7
9 changed files with 362 additions and 16 deletions
+8 -1
View File
@@ -1166,7 +1166,13 @@ function PermissionActionButton({
: permissionStyles.optionText;
const colorMapping = isPrimary ? primaryColorMapping : mutedColorMapping;
return (
<Pressable testID={testID} style={pressableStyle} onPress={handlePress} disabled={isResponding}>
<Pressable
accessibilityRole="button"
testID={testID}
style={pressableStyle}
onPress={handlePress}
disabled={isResponding}
>
{isRespondingAction ? (
<ThemedLoadingSpinner size="small" uniProps={colorMapping} />
) : (
@@ -1517,6 +1523,7 @@ const permissionStyles = StyleSheet.create((theme) => ({
},
optionsContainerDesktop: {
flexDirection: "row",
flexWrap: "wrap",
justifyContent: "flex-start",
alignItems: "center",
width: "100%",