- frontend: onPaste sur CustomAgentChatView, détection MIME image, chip/preview d'attachment, envoi via le contrat #154 (adapters/agent, ports) - backend: import d'image par bytes dans le store attachments (commands, chat_attachments app+infra, dto, ports) + tests
245 lines
14 KiB
Rust
245 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 chat_attachments;
|
|
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 chat_attachments::{
|
|
ImportChatAttachmentItem, ImportChatAttachmentSource, ImportChatAttachments,
|
|
ImportChatAttachmentsInput, ImportChatAttachmentsOutput, CHAT_ATTACHMENT_MAX_BYTES,
|
|
};
|
|
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,
|
|
};
|