feat(chat): propage l'intention chat → require_structured dans le pipeline de lancement
- Ajoute le champ cell_kind dans LaunchAgentRequestDto pour distinguer les demandes chat (custom CLI) des lancements PTY historiques - Convertit cellKind:Chat en require_structured:true dans commands.rs et web-server/src/lib.rs - Implémente la logique de routing structuré dans LaunchAgent::execute : - valide que require_structured implique un profil avec structured_adapter - remplace une session PTY existante quand require_structured est vrai - route vers structured seulement quand wants_structured est vrai - Met à jour tous les appels historiques avec require_structured:false pour préserver le contrat PTY - Ajoute les tests unitaires human_launcher_with_chat_intent_routes_structured_profile_to_chat_session et chat_intent_replaces_existing_pty_instead_of_returning_pty_session - Wire les ports structured dans BackendCore pour le launcher humain Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@ -3,9 +3,9 @@
|
||||
//! and `From<LaunchAgentOutput>` for [`TerminalSessionDto`].
|
||||
|
||||
use app_tauri_lib::dto::{
|
||||
parse_agent_id, AgentDto, AgentListDto, ConversationDetailsDto, CreateAgentRequestDto,
|
||||
InspectConversationRequestDto, LaunchAgentRequestDto, LiveAgentListDto, TerminalSessionDto,
|
||||
UpdateAgentContextRequestDto, UpdateAgentEffortRequestDto,
|
||||
parse_agent_id, AgentDto, AgentListDto, CellKind, ConversationDetailsDto,
|
||||
CreateAgentRequestDto, InspectConversationRequestDto, LaunchAgentRequestDto, LiveAgentListDto,
|
||||
TerminalSessionDto, UpdateAgentContextRequestDto, UpdateAgentEffortRequestDto,
|
||||
};
|
||||
use application::AppError;
|
||||
use application::{
|
||||
@ -192,6 +192,8 @@ fn launch_agent_request_deserialises_camelcase() {
|
||||
assert_eq!(dto.conversation_id, None);
|
||||
// Omitting the node id defaults to None (a fresh node is minted backend-side).
|
||||
assert_eq!(dto.node_id, None);
|
||||
// Omitting the requested cell kind preserves the historical PTY launch path.
|
||||
assert_eq!(dto.cell_kind, None);
|
||||
}
|
||||
|
||||
#[test]
|
||||
@ -211,6 +213,19 @@ fn launch_agent_request_carries_node_id() {
|
||||
// No snake_case leak on the wire.
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn launch_agent_request_can_require_chat_cell_kind() {
|
||||
let raw = json!({
|
||||
"projectId": Uuid::from_u128(1).to_string(),
|
||||
"agentId": Uuid::from_u128(2).to_string(),
|
||||
"rows": 24,
|
||||
"cols": 80,
|
||||
"cellKind": "chat"
|
||||
});
|
||||
let dto: LaunchAgentRequestDto = serde_json::from_value(raw).unwrap();
|
||||
assert_eq!(dto.cell_kind, Some(CellKind::Chat));
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// AGENT_ALREADY_RUNNING error code + LiveAgentListDto (T2/T3)
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user