fix(custom-cli): le bouton Stop annule le tour courant sans fermer la session et cascade l'annulation aux agents délégués — stop_agent suit l'arbre des dépendances actives (cancel_current_turn + préemption runtime + enfants d'exécution), TurnCancel tue le process du tour en cours, autorisation requester/sous-arbre sur idea_stop_agent, fixtures DTO runtime_state/node_id alignées — #257 (QA verte)
This commit is contained in:
@ -11,8 +11,8 @@ use application::AppError;
|
||||
use application::{
|
||||
AgentCapability, AgentTicketState, AgentWorkState, CreateAgentOutput,
|
||||
InspectConversationOutput, LaunchAgentOutput, ListAgentsOutput, ListedAgentCapabilities,
|
||||
LiveSessionKind, LiveSessionSnapshot, LiveWorkSession, ProjectWorkState, TicketWorkSource,
|
||||
TicketWorkStatus,
|
||||
LiveRuntimeState, LiveSessionKind, LiveSessionSnapshot, LiveWorkSession, ProjectWorkState,
|
||||
TicketWorkSource, TicketWorkStatus,
|
||||
};
|
||||
use domain::ids::{AgentId, NodeId, ProfileId, SessionId};
|
||||
use domain::ports::ConversationDetails;
|
||||
@ -292,6 +292,7 @@ fn project_work_state_dto_serialises_live_and_busy_camelcase() {
|
||||
ticket,
|
||||
since_ms: 1_234,
|
||||
},
|
||||
runtime_state: None,
|
||||
tickets: vec![],
|
||||
background_tasks: vec![],
|
||||
}],
|
||||
@ -328,6 +329,7 @@ fn project_work_state_dto_serialises_tickets_camelcase() {
|
||||
profile_id: profile,
|
||||
live: None,
|
||||
busy: domain::AgentBusyState::Idle,
|
||||
runtime_state: None,
|
||||
tickets: vec![
|
||||
AgentTicketState {
|
||||
ticket_id: head_ticket,
|
||||
@ -690,18 +692,21 @@ fn stop_live_agent_response_serialises_camelcase_with_kind() {
|
||||
use application::{LiveSessionKind, StopLiveAgentOutput};
|
||||
|
||||
let agent = AgentId::from_uuid(Uuid::from_u128(11));
|
||||
let node = NodeId::from_uuid(Uuid::from_u128(12));
|
||||
let session = SessionId::from_uuid(Uuid::from_u128(13));
|
||||
let dto = StopLiveAgentResponseDto::from(StopLiveAgentOutput {
|
||||
agent_id: agent,
|
||||
node_id: node,
|
||||
session_id: session,
|
||||
kind: LiveSessionKind::Structured,
|
||||
runtime_state: LiveRuntimeState::Stopped,
|
||||
});
|
||||
|
||||
let v = serde_json::to_value(&dto).unwrap();
|
||||
assert_eq!(v["agentId"], agent.to_string());
|
||||
assert_eq!(v["sessionId"], session.to_string());
|
||||
assert_eq!(v["kind"], "structured");
|
||||
// Stop response carries no node id (the session is gone).
|
||||
assert_eq!(v["runtimeState"], "stopped");
|
||||
assert!(v.get("nodeId").is_none());
|
||||
assert!(v.get("session_id").is_none());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user