Skip to main content

ta_submit/
lib.rs

1//! Source adapters for VCS integration
2//!
3//! This crate provides pluggable adapters for source control operations through
4//! different version control systems and workflows. The core abstraction is the
5//! `SourceAdapter` trait (unified from the former `SubmitAdapter` in v0.11.1),
6//! with built-in implementations for Git and "none" fallback, plus external
7//! plugin support for Perforce, SVN, and any community VCS (v0.13.5).
8//!
9//! ## External VCS plugins (v0.13.5)
10//!
11//! Perforce and SVN adapters are now external plugins using the JSON-over-stdio
12//! protocol (same as channel plugins). Plugins are discovered from:
13//! - `.ta/plugins/vcs/<name>/` — project-local
14//! - `~/.config/ta/plugins/vcs/<name>/` — user-global
15//! - `ta-submit-<name>` on `$PATH` — bare executable fallback
16//!
17//! Git remains built-in as the zero-configuration default.
18
19pub mod adapter;
20pub mod config;
21pub mod external_vcs_adapter;
22pub mod git;
23pub mod messaging_adapter;
24pub mod messaging_plugin_protocol;
25pub mod none;
26pub mod perforce;
27pub mod registry;
28pub mod social_adapter;
29pub mod social_plugin_protocol;
30pub mod svn;
31pub mod vcs_plugin_manifest;
32pub mod vcs_plugin_protocol;
33
34// Primary exports (v0.11.1+)
35pub use adapter::{
36    CommitResult, MergeResult, PushResult, ReviewResult, ReviewStatus, SavedVcsState,
37    SourceAdapter, SyncResult,
38};
39
40// Backward-compatible re-export: SubmitAdapter is a type alias for SourceAdapter.
41pub use adapter::SubmitAdapter;
42
43pub use config::{
44    check_disk_space_mb, resolve_plan_path, AgentProfile, ApplyConfig, AssetDiffConfig,
45    BuildConfig, BuildOnFail, CommitConfig, ContextMode, DiffConfig, DraftReviewConfig, GitConfig,
46    PerforceConfig, PlanConfig, SecurityConfig, ShellConfig, StagingConfig, SubmitConfig,
47    SvnConfig, SyncConfig, TaLocalPaths, TaPathConfig, TaProjectPaths, VcsAgentConfig, VcsConfig,
48    VerifyCommand, VerifyConfig, VerifyOnFailure, WorkflowConfig,
49};
50pub use external_vcs_adapter::ExternalVcsAdapter;
51pub use git::GitAdapter;
52pub use messaging_adapter::{
53    discover_messaging_plugins, find_messaging_plugin, DiscoveredMessagingPlugin,
54    ExternalMessagingAdapter, MessagingPluginManifest, MessagingPluginSource,
55};
56pub use messaging_plugin_protocol::{
57    CreateDraftParams, DraftEnvelope, DraftState, DraftStatusParams, FetchParams, FetchedMessage,
58    MessagingPluginError, MessagingPluginRequest, MessagingPluginResponse,
59    MESSAGING_PROTOCOL_VERSION,
60};
61pub use none::NoneAdapter;
62pub use perforce::PerforceAdapter;
63pub use registry::{
64    detect_adapter, enforce_section15, enforce_section15_plugin, known_adapters, select_adapter,
65    select_adapter_with_sync,
66};
67pub use social_adapter::{
68    discover_social_plugins, find_social_plugin, social_supervisor_check, DiscoveredSocialPlugin,
69    ExternalSocialAdapter, SocialPluginManifest, SocialPluginSource, SocialSupervisorConfig,
70    SocialSupervisorResult,
71};
72pub use social_plugin_protocol::{
73    CreateScheduledParams, CreateSocialDraftParams, SocialCapabilitiesParams,
74    SocialDraftStatusParams, SocialHealthParams, SocialPluginError, SocialPluginRequest,
75    SocialPluginResponse, SocialPostContent, SocialPostState, SOCIAL_PROTOCOL_VERSION,
76};
77pub use svn::SvnAdapter;
78pub use vcs_plugin_manifest::{
79    discover_vcs_plugins, find_vcs_plugin, DiscoveredVcsPlugin, VcsPluginError, VcsPluginManifest,
80    VcsPluginSource,
81};
82pub use vcs_plugin_protocol::PROTOCOL_VERSION;