Skip to main content

rustferry_remote/
lib.rs

1//! Cross-platform contracts for `RustFerry` remote Apple builds.
2//!
3//! This crate contains data and provider boundaries only. Provider implementations own
4//! networking and process execution; callers choose the async runtime, if any.
5
6#![forbid(unsafe_code)]
7
8/// Artifact manifests and independent artifact validation.
9pub mod artifact;
10/// Runtime-neutral cooperative cancellation.
11pub mod cancellation;
12/// Length-framed binary transport for large worker source and artifact payloads.
13pub mod data_plane;
14/// Typed protocol and provider failures.
15pub mod error;
16/// Public compile-to-sign handoff evidence.
17pub mod handoff;
18/// Bounded parsing and target validation for decoded Apple provisioning profiles.
19pub mod profile;
20/// Ferry Remote Build Protocol v1 data and NDJSON events.
21pub mod protocol;
22/// Runtime-neutral asynchronous build-provider boundary.
23pub mod provider;
24/// Chunk-safe secret redaction.
25pub mod redaction;
26/// Checked-in JSON Schema generation.
27pub mod schema;
28/// Non-serializable secret values and serializable opaque references.
29pub mod secret;
30/// Apple signing plans and validation models.
31pub mod signing;
32/// Strict control messages for one framed SSH snapshot-build session.
33pub mod snapshot_session;
34/// Deterministic Git and snapshot source manifests.
35pub mod source;
36/// Strict, bounded envelopes for one-request worker stdio control planes.
37pub mod stdio;
38
39pub use artifact::{
40    ARTIFACT_MANIFEST_SCHEMA_VERSION, ApplePlatform, AppleToolchainEvidence, ArtifactError,
41    ArtifactKind, ArtifactManifest, ArtifactRecord, ArtifactSigningEvidence, CleanupStatus,
42    IosDeviceProductExpectation, IpaExpectation, IpaInspection, MachOSliceEvidence,
43    PROTECTED_SIGNING_SANITIZED_LOG_V1, UnsignedAppInspection, UnsignedNestedBundleExpectation,
44    UnsignedNestedBundleKind, UnsignedXcarchiveExpectation, UnsignedXcarchiveInspection,
45    ValidationLevel, inspect_ipa, inspect_physical_iphone_macho, inspect_unsigned_app_bundle,
46    inspect_unsigned_xcarchive, verify_downloaded_file,
47};
48pub use cancellation::CancellationToken;
49pub use data_plane::{
50    MAX_WORKER_DATA_PLANE_ARTIFACT_BYTES, MAX_WORKER_DATA_PLANE_CONTROL_BYTES,
51    MAX_WORKER_DATA_PLANE_REQUEST_BYTES, MAX_WORKER_DATA_PLANE_RESULT_BYTES,
52    MAX_WORKER_DATA_PLANE_SOURCE_BYTES, WORKER_DATA_PLANE_HEADER_BYTES,
53    WORKER_DATA_PLANE_SCHEMA_VERSION, WorkerDataPlaneFrameError, WorkerDataPlaneFrameHeader,
54    WorkerDataPlaneFrameKind, WorkerDataPlaneSequence, copy_worker_data_plane_payload,
55    read_worker_data_plane_header, read_worker_data_plane_payload, write_worker_data_plane_frame,
56    write_worker_data_plane_header, write_worker_data_plane_stream,
57};
58pub use error::{RemoteBuildError, RemoteBuildResult};
59pub use handoff::{
60    COMPILE_HANDOFF_SCHEMA_VERSION, COMPILE_PHASE_EVIDENCE_SCHEMA_VERSION, CompileHandoff,
61    CompilePhaseEvidence, CompileToolchainEvidence, SEALED_UNSIGNED_ARCHIVE_SCHEMA_VERSION,
62    SealedUnsignedArchive,
63};
64pub use profile::{
65    MAX_DECODED_PROFILE_BYTES, ProfileField, ProfileValidationErrors, ProfileValidationIssue,
66    ProfileValidationRequest, ProvisioningProfileParseError, ValidatedProvisioningProfile,
67    parse_decoded_provisioning_profile, parse_provisioning_profile_value,
68    validate_profile_for_target,
69};
70pub use protocol::{
71    BuildProfile, CURRENT_PROTOCOL_VERSION, CleanupConfirmation, DiagnosticSeverity,
72    IOS_DEVICE_RUST_TARGET, IOS_DEVICE_SDK, IosArtifactType, IosDeviceBuildRequest,
73    IosDeviceBuildResult, JobState, ProtocolPath, ProtocolPathSemantics, ProtocolVersion,
74    REMOTE_BUILD_EVENT_TYPES, RemoteBuildEvent, RemoteBuildEventKind, RemoteDiagnostic,
75    RemoteErrorInfo, canonical_git_snapshot_request_template_sha256, canonical_request_bytes,
76    canonical_request_sha256, canonical_retry_template_sha256_v1,
77};
78pub use provider::{
79    ArtifactDownloadRequest, ArtifactDownloadResult, ArtifactListRequest, BuildProvider,
80    CancellationAck, CancellationRequest, CleanupRequest, EventPage, EventRequest,
81    HandshakeRequest, HandshakeResponse, JobHandle, ProviderCapabilities, ProviderCheck,
82    ProviderCheckStatus, ProviderDoctorReport, ProviderDoctorRequest, ProviderFeature,
83    ProviderFuture,
84};
85pub use redaction::{
86    CommandOutputRedactor, OutputStream, REDACTION_MARKER, RedactionError, SecretRedactor,
87    StreamingRedactor,
88};
89pub use schema::{RemoteProtocolV1Document, protocol_v1_schema_json};
90pub use secret::{Secret, SecretBytes, SecretReference, SecretReferenceError, SecretReferenceKind};
91pub use signing::{
92    BundleIdentifier, DevelopmentTeam, DevelopmentTeamPlan, DevicePlan, EntitlementPlan,
93    EntitlementSet, EntitlementValueError, ProvisioningPlan, ProvisioningPlatform,
94    ProvisioningProfile, ProvisioningProfileType, SigningCertificate, SigningIdentity, SigningMode,
95    SigningPlan, SigningPrivateKeyReference, SigningReference, SigningStatus, SigningTarget,
96    SigningTargetKind, SigningValidationError, SigningValidationErrors, SigningValidationReport,
97    ValidationComponent, ValidationStatus, canonical_signing_target_graph_sha256,
98};
99pub use snapshot_session::{
100    MAX_SNAPSHOT_SESSION_DESCRIPTOR_BYTES, SNAPSHOT_SESSION_SCHEMA_VERSION,
101    SnapshotArtifactDescriptor, SnapshotArtifactReceipt, SnapshotBuildComplete,
102    SnapshotBuildParameters, SnapshotBuildStart, SnapshotJobAccepted, SnapshotSessionError,
103};
104pub use source::{
105    GIT_SNAPSHOT_ARCHIVE_PATH, GIT_SNAPSHOT_DESCRIPTOR_PATH,
106    GIT_SNAPSHOT_DESCRIPTOR_SCHEMA_VERSION, GIT_SNAPSHOT_REF_PREFIX, GIT_SNAPSHOT_TREE_PATHS,
107    GitSnapshotDescriptor, IgnoreRuleReason, MAX_GIT_SNAPSHOT_BYTES,
108    MAX_GIT_SNAPSHOT_DESCRIPTOR_BYTES, MAX_SOURCE_BUNDLE_DESCRIPTOR_BYTES, PlannedSourceFile,
109    PortablePathReason, SOURCE_BUNDLE_DESCRIPTOR_SCHEMA_VERSION, SourceArchive,
110    SourceArchiveLimits, SourceBundleDescriptor, SourceBundlePlan, SourceBundleRequest,
111    SourceError, SourceLimitKind, SourceLimits, SourceManifest, SourceManifestEntry, SourceMode,
112    canonical_git_snapshot_descriptor_bytes, create_source_bundle_archive,
113    git_snapshot_archive_limits, git_snapshot_ref, plan_source_bundle, validate_source_manifest,
114    verify_and_extract_source_bundle, verify_and_extract_source_bundle_with_parent_handle,
115    verify_materialized_bundle, verify_source_bundle_plan, verify_source_manifest,
116    write_source_bundle_descriptor_file,
117};
118pub use stdio::{
119    MAX_WORKER_STDIO_REQUEST_BYTES, MAX_WORKER_STDIO_RESPONSE_BYTES, WORKER_STDIO_SCHEMA_VERSION,
120    WorkerStdioCodecError, WorkerStdioErrorResponse, WorkerStdioRequest,
121    WorkerStdioRequestEnvelope, WorkerStdioResponse, WorkerStdioResponseEnvelope,
122    decode_worker_stdio_request, decode_worker_stdio_response, encode_worker_stdio_request,
123    encode_worker_stdio_response,
124};