Étend le port/usecases window et layout.customPluginLayout pour ouvrir et piloter des fenêtres OS hébergeant un layout plugin, en réutilisant contributes.layouts plutôt qu'un système de fenêtres parallèle. Câble la commande Tauri et l'état app-tauri correspondants. Cargo test -p domain --test window : 5/5 Cargo test -p application --test window_usecases : 7/7 Cargo test -p infrastructure --test window_state_store : 1/1 Cargo test -p app-tauri view_window_tests : 8/8 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
240 lines
14 KiB
Rust
240 lines
14 KiB
Rust
//! # IdeA — Application layer
|
|
//!
|
|
//! Orchestrates **use cases** by talking **only to the domain ports** (traits),
|
|
//! never to concrete adapters (ARCHITECTURE §1.1, §6). Every use case is a
|
|
//! struct carrying its ports as `Arc<dyn Port>` and exposing
|
|
//! `execute(input) -> Result<output, AppError>`.
|
|
//!
|
|
//! This crate depends on `domain` only. The composition root (`app-tauri`) is
|
|
//! the single place that constructs concrete adapters and injects them here.
|
|
|
|
#![forbid(unsafe_code)]
|
|
#![warn(missing_docs)]
|
|
|
|
pub mod agent;
|
|
pub mod background;
|
|
pub mod conversation;
|
|
pub mod device;
|
|
pub mod diag;
|
|
pub mod embedder;
|
|
pub mod error;
|
|
pub mod git;
|
|
pub mod health;
|
|
pub mod issues;
|
|
pub mod layout;
|
|
pub mod mcp_tool_permissions;
|
|
pub mod memory;
|
|
pub mod model_server;
|
|
pub mod orchestrator;
|
|
pub mod permission;
|
|
pub mod plugin;
|
|
pub mod project;
|
|
pub mod remote;
|
|
pub mod skill;
|
|
pub mod sprints;
|
|
pub mod system_permissions;
|
|
pub mod template;
|
|
pub mod terminal;
|
|
pub mod ticket_assistant;
|
|
pub mod window;
|
|
pub mod workstate;
|
|
|
|
pub use agent::{
|
|
claude_model_catalogue, codex_model_catalogue, drain_reply_stream_with_readiness,
|
|
drain_with_readiness, drain_with_readiness_and_announcements, drain_with_readiness_outcome,
|
|
reference_profile_id, reference_profiles, selectable_reference_profiles, send_blocking,
|
|
AgentResumer, AnnouncementPublisher, ChangeAgentProfile, ChangeAgentProfileInput,
|
|
ChangeAgentProfileOutput, CloneOpenCodeProfileFromSeed, CloneOpenCodeProfileFromSeedInput,
|
|
CloneOpenCodeProfileFromSeedOutput, CloneProfileFromSeed, CloneProfileFromSeedInput,
|
|
CloneProfileFromSeedOutput, ConfigureProfiles, ConfigureProfilesInput, ConfigureProfilesOutput,
|
|
CreateAgentFromScratch, CreateAgentInput, CreateAgentOutput, DeleteAgent, DeleteAgentInput,
|
|
DeleteProfile, DeleteProfileInput, DetectProfiles, DetectProfilesInput, DetectProfilesOutput,
|
|
FirstRunState, FirstRunStateOutput, HandoffProvider, InjectedLiveRow, InspectConversation,
|
|
InspectConversationInput, InspectConversationOutput, LaunchAgent, LaunchAgentInput,
|
|
LaunchAgentOutput, ListAgents, ListAgentsInput, ListAgentsOutput, ListClaudeModels,
|
|
ListClaudeModelsOutput, ListCodexModels, ListCodexModelsOutput, ListOpenCodeProviders,
|
|
ListOpenCodeProvidersOutput, ListProfiles, ListProfilesOutput, ListResumableAgents,
|
|
ListResumableAgentsInput, ListResumableAgentsOutput, ListedAgentCapabilities,
|
|
LiveStateLeanProvider, McpRuntime, OpenCodeProviderCatalogEntry, PermissionProjectorRegistry,
|
|
ProfileAvailability, ProfileModelCatalogEntry, ProviderSessionProvider, ReadAgentContext,
|
|
ReadAgentContextInput, ReadAgentContextOutput, ReferenceProfiles, ReferenceProfilesOutput,
|
|
ResumableAgent, SaveOpenCodeProviderProfile, SaveOpenCodeProviderProfileInput,
|
|
SaveOpenCodeProviderProfileOutput, SaveProfile, SaveProfileInput, SaveProfileOutput,
|
|
SessionLimitService, StructuredRoutingMode, StructuredSessionDescriptor, TurnOutcome,
|
|
UpdateAgentContext, UpdateAgentContextInput, UpdateAgentEffort, UpdateAgentEffortInput,
|
|
UpdateAgentEffortOutput, AGENT_MEMORY_RECALL_BUDGET, CODEX_SUBMIT_DELAY_MS,
|
|
LIVE_STATE_INJECT_MAX, RESUME_PROMPT,
|
|
};
|
|
pub use background::{
|
|
BackgroundCommandArchive, CancelBackgroundTask, CancelBackgroundTaskOutput,
|
|
RetryBackgroundTask, SpawnBackgroundCommand, SpawnBackgroundCommandInput,
|
|
SpawnBackgroundCommandOutput,
|
|
};
|
|
pub use conversation::{
|
|
ConversationArchiveProvider, ReadConversationPage, ReadConversationPageInput, RecordTurn,
|
|
RotateConversationLog, RotateConversationLogInput, TurnPage, TurnSource, TurnView,
|
|
};
|
|
pub use device::{
|
|
normalize_pairing_code, pairing_codes_equal, AuthenticateSession, AuthenticateSessionInput,
|
|
DeviceView, ListDevices, ListDevicesInput, ListDevicesOutput, PairAttemptDecision,
|
|
PairAttemptLimiter, PairDevice, PairDeviceInput, PairDeviceOutput, RateLimitKey, RenameDevice,
|
|
RenameDeviceInput, RevokeAllDevices, RevokeDevice, RevokeDeviceInput, TouchDevice,
|
|
TouchDeviceInput, TouchDeviceOutput,
|
|
};
|
|
pub use embedder::{
|
|
CheckEmbedderSuggestion, CheckEmbedderSuggestionInput, CheckEmbedderSuggestionOutput,
|
|
DeleteEmbedderProfile, DeleteEmbedderProfileInput, DescribeEmbedderEngines, DismissChoice,
|
|
DismissEmbedderSuggestion, DismissEmbedderSuggestionInput, EmbedderEnginesView,
|
|
ListEmbedderProfiles, ListEmbedderProfilesOutput, OnnxModelView, SaveEmbedderProfile,
|
|
SaveEmbedderProfileInput, SaveEmbedderProfileOutput, SuggestedThisSession,
|
|
};
|
|
pub use error::AppError;
|
|
pub use git::{
|
|
GitBranches, GitBranchesInput, GitBranchesOutput, GitCheckout, GitCheckoutInput, GitCommit,
|
|
GitCommitInput, GitCommitOutput, GitGraph, GitGraphInput, GitGraphOutput, GitInit,
|
|
GitInitInput, GitLog, GitLogInput, GitLogOutput, GitStage, GitStagePathInput, GitStatus,
|
|
GitStatusInput, GitStatusOutput, GitUnstage,
|
|
};
|
|
pub use health::{HealthInput, HealthReport, HealthUseCase};
|
|
pub use issues::{
|
|
AddIssueAttachment, AddIssueAttachmentInput, AddIssueAttachmentOutput, AssignIssueAgent,
|
|
AssignIssueAgentInput, AssignIssueAgentOutput, BatchIssueResult, BulkDeleteIssues,
|
|
BulkDeleteIssuesInput, BulkIssueMutationOutput, BulkUpdateIssuePriority,
|
|
BulkUpdateIssuePriorityInput, BulkUpdateIssueStatus, BulkUpdateIssueStatusInput, CreateIssue,
|
|
CreateIssueInput, CreateIssueOutput, DeleteIssue, DeleteIssueInput, DeleteIssueOutput,
|
|
LinkIssues, LinkIssuesInput, LinkIssuesOutput, ListIssues, ListIssuesInput, ListIssuesOutput,
|
|
MarkIssueAttachmentSummarized, MarkIssueAttachmentSummarizedInput,
|
|
MarkIssueAttachmentSummarizedOutput, ReadIssue, ReadIssueAttachment, ReadIssueAttachmentInput,
|
|
ReadIssueAttachmentOutput, ReadIssueCarnet, ReadIssueCarnetInput, ReadIssueCarnetOutput,
|
|
ReadIssueInput, ReadIssueOutput, UnlinkIssues, UnlinkIssuesInput, UpdateIssue,
|
|
UpdateIssueCarnet, UpdateIssueCarnetInput, UpdateIssueCarnetOutput, UpdateIssueInput,
|
|
UpdateIssueOutput, TICKET_ATTACHMENT_MAX_BYTES,
|
|
};
|
|
pub use layout::{
|
|
CreateLayout, CreateLayoutInput, CreateLayoutOutput, DeleteLayout, DeleteLayoutInput,
|
|
DeleteLayoutOutput, LayoutInfo, LayoutKind, LayoutOperation, LayoutsDoc, ListLayouts,
|
|
ListLayoutsInput, ListLayoutsOutput, LoadLayout, LoadLayoutInput, LoadLayoutOutput,
|
|
MutateLayout, MutateLayoutInput, MutateLayoutOutput, NamedLayout, PluginLayoutOrigin,
|
|
ReconcileLayouts, ReconcileLayoutsInput, ReconcileLayoutsOutput, RenameLayout,
|
|
RenameLayoutInput, SetActiveLayout, SetActiveLayoutInput, SetActiveLayoutOutput,
|
|
SnapshotRunningAgents, SnapshotRunningAgentsInput, SnapshotRunningAgentsOutput, LAYOUTS_FILE,
|
|
};
|
|
pub use mcp_tool_permissions::{
|
|
McpToolPermissionCatalogue, ReadMcpToolPermissions, ReadMcpToolPermissionsInput,
|
|
ReadMcpToolPermissionsOutput, UpdateAgentMcpToolPermissions,
|
|
UpdateAgentMcpToolPermissionsInput, UpdateProjectMcpToolPermissions,
|
|
UpdateProjectMcpToolPermissionsInput,
|
|
};
|
|
pub use memory::{
|
|
CreateMemory, CreateMemoryInput, CreateMemoryOutput, DeleteMemory, DeleteMemoryInput,
|
|
GetMemory, GetMemoryInput, GetMemoryOutput, HarvestMemoryFromTurn, ListMemories,
|
|
ListMemoriesInput, ListMemoriesOutput, MemoryHarvestOutcome, ReadMemoryIndex,
|
|
ReadMemoryIndexInput, ReadMemoryIndexOutput, RecallMemory, RecallMemoryInput,
|
|
RecallMemoryOutput, ResolveMemoryLinks, ResolveMemoryLinksInput, ResolveMemoryLinksOutput,
|
|
UpdateMemory, UpdateMemoryInput, UpdateMemoryOutput,
|
|
};
|
|
pub use model_server::{
|
|
model_server_error_code, DeleteModelArtifact, DeleteModelArtifactInput, DeleteModelServer,
|
|
DeleteModelServerInput, EnsureLocalModelServer, EnsureLocalModelServerInput,
|
|
EnsureLocalModelServerOutput, ListModelServers, ListModelServersOutput,
|
|
ModelArtifactDownloadTracker, ModelArtifactView, ModelServerListItem,
|
|
ReadinessPolicy as ModelServerReadinessPolicy, SaveModelServer, SaveModelServerInput,
|
|
SaveModelServerOutput,
|
|
};
|
|
pub use orchestrator::{
|
|
resolve_rendezvous_ceiling, resolve_rendezvous_window, run_inactivity_watchdog,
|
|
AgentWakeService, AskLivenessProbe, ContextGuardUseCases, LiveStateProvider,
|
|
LiveStateReadProvider, McpRuntimeProvider, OrchestratorOutcome, OrchestratorService,
|
|
ProposeContext, ReadContext, ReadMemory, RecordTurnProvider, WakeSessionProvider,
|
|
WatchdogOutcome, WriteMemory, DEFAULT_RENDEZVOUS_CEILING, DEFAULT_RENDEZVOUS_WINDOW,
|
|
};
|
|
pub use permission::{
|
|
GetProjectPermissions, GetProjectPermissionsInput, GetProjectPermissionsOutput,
|
|
ResolveAgentPermissions, ResolveAgentPermissionsInput, ResolveAgentPermissionsOutput,
|
|
UpdateAgentPermissions, UpdateAgentPermissionsInput, UpdateProjectPermissions,
|
|
UpdateProjectPermissionsInput,
|
|
};
|
|
pub use plugin::{
|
|
InstallPluginFromArchive, InstallPluginFromDirectory, JsonPluginManifestValidator,
|
|
ListPluginRuntimeContributions, ListPlugins, PluginAdmin, PluginCommandTasks,
|
|
PluginConfigDocument, PluginConfigDocumentReadInput, PluginConfigDocumentUpdateInput,
|
|
PluginConfigDocumentWriteResult, PluginConfigDocuments, PluginContributionSummary,
|
|
PluginDiagnosticMessage, PluginEnvDiagnostic, PluginEnvRequirement, PluginEventBatch,
|
|
PluginEventPollInput, PluginEventSubscribeInput, PluginEventSubscription,
|
|
PluginEventSubscriptions, PluginEventUnsubscribeInput, PluginFileDiagnostic,
|
|
PluginFileRequirement, PluginInstallResult, PluginPublicEvent, PluginReview,
|
|
PluginRunCommandInput, PluginRuntimeCatalog, PluginRuntimePlugin, PluginStorageAccess,
|
|
PluginStorageGetInput, PluginStorageSetInput, PluginTaskStatusInput, PluginToolDiagnostic,
|
|
PluginToolRequirement, PluginToolchainDiagnostic, PluginToolchainDiagnosticInput,
|
|
PluginToolchainDiagnostics, PluginWorkspaceAccess, PluginWorkspaceBinaryFile,
|
|
PluginWorkspaceDirEntry, PluginWorkspaceDirectoryListing, PluginWorkspacePathInput,
|
|
PluginWorkspaceStat, PluginWorkspaceTextFile, PluginWorkspaceWriteBinaryInput,
|
|
PluginWorkspaceWriteTextInput, ProjectConvention, ProjectModule, ProjectStructureEntry,
|
|
ProjectStructureQuery, QueryProjectStructure, QueryProjectStructureInput,
|
|
ReconcilePluginMcpServers, ReviewPluginPackage, ReviewPluginPackageInput, SetPluginEnabled,
|
|
SetPluginEnabledInput, UninstallPlugin, UninstallPluginInput, UninstallPluginResult,
|
|
};
|
|
pub use project::{
|
|
CloseProject, CloseProjectInput, CloseProjectOutput, CloseTab, CloseTabInput, CreateProject,
|
|
CreateProjectInput, CreateProjectOutput, ListProjects, ListProjectsOutput, OpenProject,
|
|
OpenProjectInput, OpenProjectOutput, ProjectMeta, ReadProjectContext, ReadProjectContextInput,
|
|
ReadProjectContextOutput, UpdateProjectContext, UpdateProjectContextInput,
|
|
PROJECT_CONTEXT_FILE,
|
|
};
|
|
pub use remote::{ConnectRemote, ConnectRemoteInput, ConnectRemoteOutput};
|
|
pub use skill::{
|
|
AgentCapability, AssignSkillToAgent, AssignSkillToAgentInput, AssignedSkillResolver,
|
|
CreateSkill, CreateSkillInput, CreateSkillOutput, DeleteSkill, DeleteSkillInput, ListSkills,
|
|
ListSkillsInput, ListSkillsOutput, ReadSkill, ReadSkillInput, ResolveAgentCapabilities,
|
|
ResolveAgentCapabilitiesInput, UnassignSkillFromAgent, UnassignSkillFromAgentInput,
|
|
UpdateSkill, UpdateSkillInput, UpdateSkillOutput,
|
|
};
|
|
pub use sprints::{
|
|
normalized_reorder, AssignTicketToSprint, AssignTicketToSprintInput,
|
|
AssignTicketToSprintOutput, CreateSprint, CreateSprintInput, CreateSprintOutput, DeleteSprint,
|
|
DeleteSprintInput, ListSprints, ListSprintsInput, ListSprintsOutput, RenameSprint,
|
|
RenameSprintInput, ReorderSprints, ReorderSprintsInput, ReorderSprintsOutput, SprintListEntry,
|
|
SprintOutput, UnassignTicketFromSprint, UnassignTicketFromSprintInput,
|
|
};
|
|
pub use system_permissions::{
|
|
GetProjectSystemPermissions, GetProjectSystemPermissionsInput,
|
|
GetProjectSystemPermissionsOutput, ResolveAgentSystemPermissions,
|
|
ResolveAgentSystemPermissionsInput, ResolveAgentSystemPermissionsOutput,
|
|
UpdateAgentSystemPermissions, UpdateAgentSystemPermissionsInput,
|
|
UpdateProjectSystemPermissions, UpdateProjectSystemPermissionsInput,
|
|
};
|
|
pub use template::{
|
|
AgentDrift, CreateAgentFromTemplate, CreateAgentFromTemplateInput,
|
|
CreateAgentFromTemplateOutput, CreateTemplate, CreateTemplateInput, CreateTemplateOutput,
|
|
DeleteTemplate, DeleteTemplateInput, DetectAgentDrift, DetectAgentDriftInput,
|
|
DetectAgentDriftOutput, ListTemplates, ListTemplatesOutput, ReadTemplate, ReadTemplateInput,
|
|
ReadTemplateOutput, SyncAgentWithTemplate, SyncAgentWithTemplateInput,
|
|
SyncAgentWithTemplateOutput, UpdateTemplate, UpdateTemplateInput, UpdateTemplateOutput,
|
|
};
|
|
pub use terminal::{
|
|
CloseTerminal, CloseTerminalInput, CloseTerminalOutput, LiveAgentRegistry, LiveSessionKind,
|
|
LiveSessionSnapshot, LiveSessions, OpenTerminal, OpenTerminalInput, OpenTerminalOutput,
|
|
ResizeTerminal, ResizeTerminalInput, StructuredSessions, TerminalSessions, WriteToTerminal,
|
|
WriteToTerminalInput,
|
|
};
|
|
pub use ticket_assistant::{
|
|
CloseTicketAssistant, CloseTicketAssistantInput, OpenTicketAssistant, OpenTicketAssistantInput,
|
|
OpenTicketAssistantOutput,
|
|
};
|
|
pub use window::{
|
|
MoveTabToNewWindow, MoveTabToNewWindowInput, MoveTabToNewWindowOutput, OpenPluginLayoutWindow,
|
|
OpenPluginLayoutWindowInput, OpenPluginLayoutWindowOutput, RestoreOpenWindows,
|
|
RestoreOpenWindowsOutput, SnapshotOpenWindows, SnapshotOpenWindowsInput,
|
|
};
|
|
pub use workstate::{
|
|
AgentBackgroundTaskState, AgentTicketState, AgentWorkState, AppExitWorkGuardDetail,
|
|
AppExitWorkGuardState, AttachLiveAgent, AttachLiveAgentInput, AttachLiveAgentOutput,
|
|
BackgroundTaskKindLabel, ConversationLogProvider, ConversationPreviewStatus,
|
|
ConversationTurnWorkPreview, ConversationWorkSummary, GetAppExitWorkGuardState,
|
|
GetAppExitWorkGuardStateInput, GetLiveStateLean, GetProjectWorkState, GetProjectWorkStateInput,
|
|
LeanLiveEntry, LeanLiveState, LiveWorkSession, ProjectWorkState, ReconcileLiveState,
|
|
ReconcileLiveStateInput, StopLiveAgent, StopLiveAgentInput, StopLiveAgentOutput,
|
|
TicketWorkSource, TicketWorkStatus, UpdateLiveState, UpdateLiveStateInput,
|
|
LIVE_STATE_MAX_ENTRIES, LIVE_STATE_TTL_MS,
|
|
};
|