Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
control_manifest.hpp
Go to the documentation of this file.
1#pragma once
4
5#include <cstdint>
6#include <filesystem>
7#include <optional>
8#include <span>
9#include <string>
10#include <string_view>
11#include <vector>
12
13namespace pulp::inspect {
14
15inline constexpr std::uint32_t kControlManifestSchemaVersion = 1;
16inline constexpr std::string_view kControlManifestSchemaId = "dev.pulp.control/artifact-manifest@1";
17// Updated deliberately whenever the canonical v1 registry bytes change.
19inline constexpr std::string_view kControlRegistryDigest = PULP_CONTROL_REGISTRY_DIGEST_V1;
20#undef PULP_CONTROL_REGISTRY_DIGEST_V1
21
29
52
66
79
85
91
93 std::string profile_id;
94 std::string manifest_digest;
95 bool endpoint_included = false;
97 std::vector<std::string> capability_ids;
98};
99
101 bool valid = false;
102 std::string error;
103};
104
108 bool produced = false;
109 std::string_view artifact_id_field;
110 std::string_view sha256_field;
111 std::string_view byte_count_field;
112 std::string_view media_type_field;
113};
114
117 bool bound = false;
118 std::string_view receipt_id_field;
119};
120
133
137 bool implemented = false;
138 bool built = false;
139 bool host_available = false;
140 bool activated = false;
141 bool policy_eligible = false;
142 bool client_granted = false;
143 bool session_live = false;
144};
145
147 bool allowed = false;
148 std::optional<ControlDenialReason> denial = ControlDenialReason::NotImplemented;
149};
150
151std::string_view control_profile_id(ControlBuildProfile profile);
152std::optional<ControlBuildProfile> control_profile_from_id(std::string_view id);
155
156std::span<const std::string_view> control_permission_terms();
158
159bool validate_control_manifest(const ControlManifest& manifest, std::string& error);
161std::optional<ControlManifest>
162parse_control_manifest(std::string_view json, ControlManifestDiagnostics* diagnostics = nullptr);
163
175std::vector<std::filesystem::path>
176control_sidecar_directories(const std::filesystem::path& executable_directory);
177
181std::filesystem::path
182control_sidecar_executable_directory(const std::filesystem::path& sidecar_directory);
183
185std::string serialize_control_manifest(const ControlManifest& manifest);
186std::string control_manifest_digest(const ControlManifest& manifest);
187std::string control_consent_identity(std::string_view manifest_digest,
188 std::string_view artifact_digest);
189
193validate_control_artifact_bytes(std::string_view bytes,
194 const ControlArtifactExpectation& expectation);
195
196std::span<const ControlOperationDescriptor> control_operation_registry();
198 std::uint32_t version);
199
202
203} // namespace pulp::inspect
#define PULP_CONTROL_REGISTRY_DIGEST_V1
Definition control_manifest.hpp:2
@ None
Definition font_options.hpp:73
Definition agent_context.hpp:7
ControlArtifactValidation validate_control_artifact_bytes(std::string_view bytes, const ControlArtifactExpectation &expectation)
Validates the immutable markers embedded in one exact executable snapshot.
std::string_view control_manifest_error_id(ControlManifestError error)
std::string control_manifest_digest(const ControlManifest &manifest)
ControlDenialReason
Definition control_manifest.hpp:53
@ NotBuilt
Definition control_manifest.hpp:56
@ ClientNotGranted
Definition control_manifest.hpp:60
@ UnsupportedExecutor
Definition control_manifest.hpp:63
@ SessionNotLive
Definition control_manifest.hpp:61
@ PublicationMismatch
Definition control_manifest.hpp:64
@ NotImplemented
Definition control_manifest.hpp:55
@ NotActivated
Definition control_manifest.hpp:58
@ ProfileForbidden
Definition control_manifest.hpp:62
@ PolicyIneligible
Definition control_manifest.hpp:59
ControlBuildProfile
Definition control_manifest.hpp:22
@ ProductionStripped
Definition control_manifest.hpp:23
@ TestDeterministic
Definition control_manifest.hpp:25
@ ResearchUnsafe
Definition control_manifest.hpp:27
@ DeveloperLocal
Definition control_manifest.hpp:24
@ SupportDiagnostics
Definition control_manifest.hpp:26
InspectorCapability
Definition capabilities.hpp:10
constexpr std::string_view kControlRegistryDigest
Definition control_manifest.hpp:19
constexpr std::string_view kControlManifestSchemaId
Definition control_manifest.hpp:16
std::string serialize_control_registry()
Canonical projection of capability metadata and adapter operations.
std::filesystem::path control_sidecar_executable_directory(const std::filesystem::path &sidecar_directory)
The directory of the executable a sidecar in sidecar_directory describes: <bundle>/Contents/MacOS for...
@ HostUnavailable
Definition control_identity.hpp:112
std::vector< std::filesystem::path > control_sidecar_directories(const std::filesystem::path &executable_directory)
Directories that may hold the control sidecars of an executable living in executable_directory (<name...
std::string control_consent_identity(std::string_view manifest_digest, std::string_view artifact_digest)
std::span< const std::string_view > control_permission_terms()
constexpr std::uint32_t kControlManifestSchemaVersion
Definition control_manifest.hpp:15
std::string_view control_profile_id(ControlBuildProfile profile)
std::span< const ControlOperationDescriptor > control_operation_registry()
std::string serialize_control_manifest(const ControlManifest &manifest)
Emits the unique stable byte representation used for artifact digests.
ControlManifestError
Definition control_manifest.hpp:30
@ VersionDowngrade
Definition control_manifest.hpp:37
@ RootType
Definition control_manifest.hpp:33
@ UnknownProfile
Definition control_manifest.hpp:39
@ VersionTooNew
Definition control_manifest.hpp:38
@ EndpointMismatch
Definition control_manifest.hpp:49
@ InvalidIdentity
Definition control_manifest.hpp:47
@ None
Definition control_manifest.hpp:31
@ UnsafeAcknowledgementMismatch
Definition control_manifest.hpp:50
@ InvalidCapabilitySet
Definition control_manifest.hpp:43
@ MissingOrInvalidField
Definition control_manifest.hpp:35
@ CapabilityLimit
Definition control_manifest.hpp:41
@ RegistryMismatch
Definition control_manifest.hpp:48
@ UnknownCapability
Definition control_manifest.hpp:42
@ PermissionTermsMismatch
Definition control_manifest.hpp:40
@ Parse
Definition control_manifest.hpp:32
@ UnsupportedSchema
Definition control_manifest.hpp:36
@ InvalidProfile
Definition control_manifest.hpp:46
@ UnknownField
Definition control_manifest.hpp:34
@ ProfileViolation
Definition control_manifest.hpp:45
@ MissingCapabilityDependency
Definition control_manifest.hpp:44
ControlPermissionDecision evaluate_control_permission(const ControlPermissionInputs &inputs)
const ControlOperationDescriptor * resolve_control_operation(std::string_view id, std::uint32_t version)
std::optional< ControlBuildProfile > control_profile_from_id(std::string_view id)
std::optional< ControlManifest > parse_control_manifest(std::string_view json, ControlManifestDiagnostics *diagnostics=nullptr)
ControlManifestValidation validate_control_manifest_detailed(const ControlManifest &manifest)
bool validate_control_manifest(const ControlManifest &manifest, std::string &error)
std::string_view control_denial_reason_id(ControlDenialReason reason)
@ error
Definition design_ir.hpp:697
Definition control_manifest.hpp:92
bool runtime_eval_included
Definition control_manifest.hpp:96
std::string profile_id
Definition control_manifest.hpp:93
std::vector< std::string > capability_ids
Definition control_manifest.hpp:97
bool endpoint_included
Definition control_manifest.hpp:95
std::string manifest_digest
Definition control_manifest.hpp:94
A frozen Product A operation contract.
Definition control_manifest.hpp:107
std::string_view artifact_id_field
Definition control_manifest.hpp:109
std::string_view sha256_field
Definition control_manifest.hpp:110
std::string_view media_type_field
Definition control_manifest.hpp:112
std::string_view byte_count_field
Definition control_manifest.hpp:111
bool produced
Definition control_manifest.hpp:108
Definition control_manifest.hpp:100
std::string error
Definition control_manifest.hpp:102
bool valid
Definition control_manifest.hpp:101
Definition control_manifest.hpp:80
std::string error
Definition control_manifest.hpp:82
ControlManifestError code
Definition control_manifest.hpp:81
std::vector< std::string > unknown_fields
Definition control_manifest.hpp:83
Definition control_manifest.hpp:86
std::string error
Definition control_manifest.hpp:89
bool valid
Definition control_manifest.hpp:87
ControlManifestError code
Definition control_manifest.hpp:88
Definition control_manifest.hpp:67
std::string registry_digest
Definition control_manifest.hpp:74
ControlBuildProfile profile
Definition control_manifest.hpp:69
bool endpoint_included
Definition control_manifest.hpp:75
std::vector< InspectorCapability > capabilities
Definition control_manifest.hpp:77
std::string build_id
Definition control_manifest.hpp:73
std::uint32_t schema_version
Definition control_manifest.hpp:68
bool unsafe_runtime_eval_acknowledged
Definition control_manifest.hpp:76
std::string bundle_id
Definition control_manifest.hpp:72
std::string product_name
Definition control_manifest.hpp:71
std::string target
Definition control_manifest.hpp:70
Definition control_manifest.hpp:121
std::string_view output_schema_id
Definition control_manifest.hpp:127
std::string_view input_schema_id
Definition control_manifest.hpp:125
std::string_view result_kind
Definition control_manifest.hpp:129
std::uint32_t version
Definition control_manifest.hpp:123
ControlReceiptResultBinding receipt_binding
Definition control_manifest.hpp:131
ControlArtifactResultBinding artifact_binding
Definition control_manifest.hpp:130
std::string_view output_schema_json
Definition control_manifest.hpp:128
InspectorCapability capability
Definition control_manifest.hpp:124
std::string_view id
Definition control_manifest.hpp:122
std::string_view input_schema_json
Definition control_manifest.hpp:126
Definition control_manifest.hpp:146
bool allowed
Definition control_manifest.hpp:147
std::optional< ControlDenialReason > denial
Definition control_manifest.hpp:148
Inputs to the canonical permission equation.
Definition control_manifest.hpp:136
bool policy_eligible
Definition control_manifest.hpp:141
bool built
Definition control_manifest.hpp:138
bool session_live
Definition control_manifest.hpp:143
bool host_available
Definition control_manifest.hpp:139
bool client_granted
Definition control_manifest.hpp:142
bool implemented
Definition control_manifest.hpp:137
bool activated
Definition control_manifest.hpp:140
Binds a typed success-result field to the broker-minted durable receipt.
Definition control_manifest.hpp:116
bool bound
Definition control_manifest.hpp:117
std::string_view receipt_id_field
Definition control_manifest.hpp:118