fix(release):完善当前分发证明与质量门禁
bat-rust / Build and test Rust (push) Canceled after 0s
bat-rust / Build and test Go API (push) Canceled after 0s

This commit is contained in:
2026-09-14 06:39:47 +08:00
parent c17904ee1c
commit 13b0bd5b45
39 changed files with 1590 additions and 228 deletions
+51 -10
View File
@@ -118,7 +118,7 @@ func (c *Client) callEnvelope(ctx context.Context, method string, params any) (*
if err != nil {
return nil, err
}
defer conn.Close()
defer func() { _ = conn.Close() }()
if deadline, ok := c.deadline(ctx); ok {
_ = conn.SetDeadline(deadline)
@@ -877,14 +877,29 @@ type ResourceManifestEntry struct {
BLAKE3 string `json:"blake3,omitempty"`
}
// ResourceManifestParams binds every page to one attested official release.
type ResourceManifestParams struct {
ReleaseID string `json:"release_id,omitempty"`
ExpectedPublicationIdentity string `json:"expected_publication_identity,omitempty"`
ExpectedManifestIdentity string `json:"expected_manifest_identity,omitempty"`
Offset int `json:"offset"`
Limit int `json:"limit"`
}
type ResourceManifestPage struct {
Available bool `json:"available"`
ResourceRoot string `json:"resource_root,omitempty"`
ManifestVersion int `json:"manifest_version,omitempty"`
TotalEntries int `json:"total_entries,omitempty"`
Offset int `json:"offset,omitempty"`
Limit int `json:"limit,omitempty"`
Entries []ResourceManifestEntry `json:"entries,omitempty"`
Available bool `json:"available"`
Channel string `json:"channel,omitempty"`
ReleaseID string `json:"release_id,omitempty"`
ResourceRoot string `json:"resource_root,omitempty"`
ManifestVersion int `json:"manifest_version,omitempty"`
PublicationIdentity string `json:"publication_identity,omitempty"`
MappingIdentity string `json:"mapping_identity,omitempty"`
ManifestIdentity string `json:"manifest_identity,omitempty"`
Generation uint64 `json:"generation,omitempty"`
TotalEntries int `json:"total_entries,omitempty"`
Offset int `json:"offset,omitempty"`
Limit int `json:"limit,omitempty"`
Entries []ResourceManifestEntry `json:"entries,omitempty"`
}
func (c *Client) DaemonStatus(ctx context.Context) (*DaemonStatusReport, error) {
@@ -953,9 +968,35 @@ func (c *Client) ResourceRepair(ctx context.Context) (*TaskAccepted, error) {
return &out, err
}
func (c *Client) ResourceManifest(ctx context.Context, offset int, limit int) (*ResourceManifestPage, error) {
// DistributionAttestation is the Rust-owned current official health proof.
type DistributionAttestation struct {
Available bool `json:"available"`
Channel string `json:"channel"`
ReleaseID string `json:"release_id"`
ResourceRoot string `json:"resource_root"`
PublicationIdentity string `json:"publication_identity"`
MappingIdentity string `json:"mapping_identity"`
ManifestIdentity string `json:"manifest_identity"`
EntryCount int `json:"entry_count"`
IntegrityStatus string `json:"integrity_status"`
Status string `json:"status"`
StatusCode string `json:"status_code"`
Ready bool `json:"ready"`
VerificationGeneration uint64 `json:"verification_generation"`
VerifiedAt *uint64 `json:"verified_at,omitempty"`
MaxAgeSeconds uint64 `json:"max_age_seconds"`
Diagnostics []string `json:"diagnostics,omitempty"`
}
func (c *Client) ReleaseAttestation(ctx context.Context) (*DistributionAttestation, error) {
var out DistributionAttestation
_, err := c.Call(ctx, "release.attestation", nil, &out)
return &out, err
}
func (c *Client) ResourceManifest(ctx context.Context, params ResourceManifestParams) (*ResourceManifestPage, error) {
var out ResourceManifestPage
_, err := c.Call(ctx, "resource.manifest", pageParam{Offset: offset, Limit: limit}, &out)
_, err := c.Call(ctx, "resource.manifest", params, &out)
return &out, err
}