Skip to content

Commit 2b9c1be

Browse files
committed
Improve human clarification handling in API
Refactored the user_clarification endpoint to call PlanService.handle_human_clarification and improved error handling. Updated event tracking to use 'HumanClarificationReceived'. In PlanService, fixed plan approval logic to ensure plan_id and team_id consistency before updating orchestration state.
1 parent 427450a commit 2b9c1be

File tree

2 files changed

+39
-14
lines changed

2 files changed

+39
-14
lines changed

src/backend/v3/api/router.py

Lines changed: 37 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,36 @@
99
from auth.auth_utils import get_authenticated_user_details
1010
from common.config.app_config import config
1111
from common.database.database_factory import DatabaseFactory
12-
from common.models.messages_kernel import (InputTask, Plan, PlanStatus,
13-
PlanWithSteps, TeamSelectionRequest)
12+
from common.models.messages_kernel import (
13+
InputTask,
14+
Plan,
15+
PlanStatus,
16+
PlanWithSteps,
17+
TeamSelectionRequest,
18+
)
1419
from common.utils.event_utils import track_event_if_configured
1520
from common.utils.utils_date import format_dates_in_messages
1621
from common.utils.utils_kernel import rai_success, rai_validate_team_config
17-
from fastapi import (APIRouter, BackgroundTasks, File, HTTPException, Query,
18-
Request, UploadFile, WebSocket, WebSocketDisconnect)
22+
from fastapi import (
23+
APIRouter,
24+
BackgroundTasks,
25+
File,
26+
HTTPException,
27+
Query,
28+
Request,
29+
UploadFile,
30+
WebSocket,
31+
WebSocketDisconnect,
32+
)
1933
from semantic_kernel.agents.runtime import InProcessRuntime
2034
from v3.common.services.plan_service import PlanService
2135
from v3.common.services.team_service import TeamService
22-
from v3.config.settings import (connection_config, current_user_id,
23-
orchestration_config, team_config)
36+
from v3.config.settings import (
37+
connection_config,
38+
current_user_id,
39+
orchestration_config,
40+
team_config,
41+
)
2442
from v3.orchestration.orchestration_manager import OrchestrationManager
2543

2644
router = APIRouter()
@@ -118,7 +136,7 @@ async def init_team(
118136
user_current_team = await memory_store.get_current_team(user_id=user_id)
119137
if not user_current_team:
120138
print("User has no current team, setting to default:", init_team_id)
121-
user_current_team = await team_service.handle_team_selection(
139+
user_current_team = await team_service.handle_team_selection(
122140
user_id=user_id, team_id=init_team_id
123141
)
124142
if user_current_team:
@@ -445,15 +463,24 @@ async def user_clarification(
445463
orchestration_config.clarifications[human_feedback.request_id] = (
446464
human_feedback.answer
447465
)
466+
467+
try:
468+
result = await PlanService.handle_human_clarification(
469+
human_feedback, user_id)
470+
print("Human clarification processed:", result)
471+
except ValueError as ve:
472+
print(f"ValueError processing human clarification: {ve}")
473+
except Exception as e:
474+
print(f"Error processing human clarification: {e}")
448475
track_event_if_configured(
449-
"PlanApprovalReceived",
476+
"HumanClarificationReceived",
450477
{
451478
"request_id": human_feedback.request_id,
452479
"answer": human_feedback.answer,
453480
"user_id": user_id,
454481
},
455482
)
456-
return {"status": "clarification recorded"}
483+
return {"status": "clarification recorded",}
457484
else:
458485
logging.warning(
459486
f"No orchestration or plan found for request_id: {human_feedback.request_id}"
@@ -899,7 +926,7 @@ async def select_team(selection: TeamSelectionRequest, request: Request):
899926
team_configuration = await team_service.get_team_configuration(
900927
selection.team_id, user_id
901928
)
902-
if team_configuration is None: # ensure that id is valid
929+
if team_configuration is None: # ensure that id is valid
903930
raise HTTPException(
904931
status_code=404,
905932
detail=f"Team configuration '{selection.team_id}' not found or access denied",

src/backend/v3/common/services/plan_service.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,10 @@ async def handle_plan_approval(human_feedback: messages.PlanApprovalResponse, us
3838
orchestration_config.plans[human_feedback.m_plan_id],
3939
)
4040
if human_feedback.approved:
41-
mplan.plan_id = human_feedback.plan_id
42-
43-
orchestration_config.plans[human_feedback.m_plan_id] = mplan
44-
4541
plan = await memory_store.get_plan(human_feedback.plan_id)
42+
mplan.plan_id = human_feedback.plan_id
4643
mplan.team_id = plan.team_id # just to keep consistency
44+
orchestration_config.plans[human_feedback.m_plan_id] = mplan
4745
if plan:
4846
plan.overall_status = PlanStatus.approved
4947
await memory_store.update_plan(plan)

0 commit comments

Comments
 (0)