@@ -80,7 +80,27 @@ async def request_permission(self, agent_id: str, tool_name: str, input_data: di
8080 if decision == "allow" :
8181 logger .info (f"✅ 权限允许: { tool_name } " )
8282
83- return PermissionResultAllow (updated_input = input_data )
83+ # 如果是 AskUserQuestion,构建 SDK 要求的 answers 格式
84+ updated_input = input_data .copy ()
85+ if tool_name == "AskUserQuestion" and "user_answers" in response :
86+ user_answers = response ["user_answers" ]
87+ questions = input_data .get ("questions" , [])
88+
89+ # 构建 {question_text: selected_labels} 格式
90+ answers = {}
91+ for answer in user_answers :
92+ question_idx = answer .get ("questionIndex" , 0 )
93+ selected_options = answer .get ("selectedOptions" , [])
94+
95+ if 0 <= question_idx < len (questions ):
96+ question_text = questions [question_idx ].get ("question" , "" )
97+ # 多选用 ", " 连接
98+ answers [question_text ] = ", " .join (selected_options )
99+
100+ updated_input ["answers" ] = answers
101+ logger .info (f"📝 AskUserQuestion 用户回答: { answers } " )
102+
103+ return PermissionResultAllow (updated_input = updated_input )
84104 else :
85105 logger .info (f"❌ 权限拒绝: { tool_name } " )
86106 return PermissionResultDeny (message = response .get ("message" , "User denied permission" ))
@@ -104,11 +124,19 @@ async def handle_permission_response(self, message: Dict[str, Any]) -> None:
104124 return
105125
106126 # 保存响应
107- self . _permission_responses [ request_id ] = {
127+ response_data = {
108128 "decision" : message .get ("decision" , "deny" ),
109129 "message" : message .get ("message" , "" )
110130 }
111131
132+ # 如果是 AskUserQuestion 的回答,直接保存原始用户答案
133+ user_answers = message .get ("user_answers" )
134+ if user_answers :
135+ response_data ["user_answers" ] = user_answers
136+ logger .debug (f"📝 收到 AskUserQuestion 用户答案: { user_answers } " )
137+
138+ self ._permission_responses [request_id ] = response_data
139+
112140 # 触发等待事件
113141 if request_id in self ._permission_requests :
114142 self ._permission_requests [request_id ].set ()
0 commit comments