Skip to main content

Crate ta_submit

Crate ta_submit 

Source
Expand description

Source adapters for VCS integration

This crate provides pluggable adapters for source control operations through different version control systems and workflows. The core abstraction is the SourceAdapter trait (unified from the former SubmitAdapter in v0.11.1), with built-in implementations for Git and “none” fallback, plus external plugin support for Perforce, SVN, and any community VCS (v0.13.5).

§External VCS plugins (v0.13.5)

Perforce and SVN adapters are now external plugins using the JSON-over-stdio protocol (same as channel plugins). Plugins are discovered from:

  • .ta/plugins/vcs/<name>/ — project-local
  • ~/.config/ta/plugins/vcs/<name>/ — user-global
  • ta-submit-<name> on $PATH — bare executable fallback

Git remains built-in as the zero-configuration default.

Re-exports§

pub use adapter::CommitResult;
pub use adapter::MergeResult;
pub use adapter::PushResult;
pub use adapter::ReviewResult;
pub use adapter::ReviewStatus;
pub use adapter::SavedVcsState;
pub use adapter::SourceAdapter;
pub use adapter::SyncResult;
pub use adapter::SubmitAdapter;
pub use config::check_disk_space_mb;
pub use config::resolve_plan_path;
pub use config::AgentProfile;
pub use config::ApplyConfig;
pub use config::AssetDiffConfig;
pub use config::BuildConfig;
pub use config::BuildOnFail;
pub use config::CommitConfig;
pub use config::ContextMode;
pub use config::DiffConfig;
pub use config::DraftReviewConfig;
pub use config::GitConfig;
pub use config::PerforceConfig;
pub use config::PlanConfig;
pub use config::SecurityConfig;
pub use config::ShellConfig;
pub use config::StagingConfig;
pub use config::SubmitConfig;
pub use config::SvnConfig;
pub use config::SyncConfig;
pub use config::TaLocalPaths;
pub use config::TaPathConfig;
pub use config::TaProjectPaths;
pub use config::VcsAgentConfig;
pub use config::VcsConfig;
pub use config::VerifyCommand;
pub use config::VerifyConfig;
pub use config::VerifyOnFailure;
pub use config::WorkflowConfig;
pub use external_vcs_adapter::ExternalVcsAdapter;
pub use git::GitAdapter;
pub use messaging_adapter::discover_messaging_plugins;
pub use messaging_adapter::find_messaging_plugin;
pub use messaging_adapter::DiscoveredMessagingPlugin;
pub use messaging_adapter::ExternalMessagingAdapter;
pub use messaging_adapter::MessagingPluginManifest;
pub use messaging_adapter::MessagingPluginSource;
pub use messaging_plugin_protocol::CreateDraftParams;
pub use messaging_plugin_protocol::DraftEnvelope;
pub use messaging_plugin_protocol::DraftState;
pub use messaging_plugin_protocol::DraftStatusParams;
pub use messaging_plugin_protocol::FetchParams;
pub use messaging_plugin_protocol::FetchedMessage;
pub use messaging_plugin_protocol::MessagingPluginError;
pub use messaging_plugin_protocol::MessagingPluginRequest;
pub use messaging_plugin_protocol::MessagingPluginResponse;
pub use messaging_plugin_protocol::MESSAGING_PROTOCOL_VERSION;
pub use none::NoneAdapter;
pub use perforce::PerforceAdapter;
pub use registry::detect_adapter;
pub use registry::enforce_section15;
pub use registry::enforce_section15_plugin;
pub use registry::known_adapters;
pub use registry::select_adapter;
pub use registry::select_adapter_with_sync;
pub use social_adapter::discover_social_plugins;
pub use social_adapter::find_social_plugin;
pub use social_adapter::social_supervisor_check;
pub use social_adapter::DiscoveredSocialPlugin;
pub use social_adapter::ExternalSocialAdapter;
pub use social_adapter::SocialPluginManifest;
pub use social_adapter::SocialPluginSource;
pub use social_adapter::SocialSupervisorConfig;
pub use social_adapter::SocialSupervisorResult;
pub use social_plugin_protocol::CreateScheduledParams;
pub use social_plugin_protocol::CreateSocialDraftParams;
pub use social_plugin_protocol::SocialCapabilitiesParams;
pub use social_plugin_protocol::SocialDraftStatusParams;
pub use social_plugin_protocol::SocialHealthParams;
pub use social_plugin_protocol::SocialPluginError;
pub use social_plugin_protocol::SocialPluginRequest;
pub use social_plugin_protocol::SocialPluginResponse;
pub use social_plugin_protocol::SocialPostContent;
pub use social_plugin_protocol::SocialPostState;
pub use social_plugin_protocol::SOCIAL_PROTOCOL_VERSION;
pub use svn::SvnAdapter;
pub use vcs_plugin_manifest::discover_vcs_plugins;
pub use vcs_plugin_manifest::find_vcs_plugin;
pub use vcs_plugin_manifest::DiscoveredVcsPlugin;
pub use vcs_plugin_manifest::VcsPluginError;
pub use vcs_plugin_manifest::VcsPluginManifest;
pub use vcs_plugin_manifest::VcsPluginSource;
pub use vcs_plugin_protocol::PROTOCOL_VERSION;

Modules§

adapter
Core SourceAdapter trait and result types
config
Workflow configuration structures
external_vcs_adapter
External VCS adapter — SourceAdapter implementation over JSON-over-stdio.
git
Git adapter for branch-based workflows with GitHub/GitLab PR creation
messaging_adapter
Messaging adapter plugin discovery and external plugin wrapper.
messaging_plugin_protocol
JSON-over-stdio protocol types for external messaging adapter plugins.
none
“None” adapter - backwards-compatible fallback with no VCS operations
perforce
Perforce adapter stub — untested, contributed by AI.
registry
Adapter auto-detection registry and selection.
social_adapter
Social media adapter plugin discovery and external plugin wrapper.
social_plugin_protocol
JSON-over-stdio protocol types for external social media adapter plugins.
svn
SVN adapter stub — untested, contributed by AI.
vcs_plugin_manifest
VCS adapter plugin manifest (plugin.toml) and discovery.
vcs_plugin_protocol
JSON-over-stdio protocol types for external VCS adapter plugins.