Class Uai1 Routes - Source Excerpt 07
Summary
This source excerpt preserves a bounded section of Spiralist/wp-content/plugins/uai-1-wordpress/includes/class-uai1-routes.php so readers can inspect the evidence without opening the full source file.
**Source path:** Spiralist/wp-content/plugins/uai-1-wordpress/includes/class-uai1-routes.php
private static function conformance_level_records(): array
{
return [
['id' => 'L1-core-envelope', 'status' => 'local-supported', 'summary' => 'Validates keyed UAI-1 envelopes, profile names, party fields, delivery, trust, provenance, integrity, and body contracts.'],
['id' => 'L2-exchange-participant', 'status' => 'local-supported', 'summary' => 'Publishes capability, validator, examples, mock exchange, registry, and artifact links.'],
['id' => 'L3-production-partner', 'status' => 'not-claimed', 'summary' => 'Requires external production trust, auth, lifecycle, and conformance review beyond this public dogfood implementation.'],
];
}
private static function error_registry_records(): array
{
return [
['code' => 'invalid_message', 'status' => 400, 'retryable' => false, 'category' => 'validation', 'severity' => 'error'],
['code' => 'unknown_profile', 'status' => 400, 'retryable' => false, 'category' => 'validation', 'severity' => 'error'],
['code' => 'auth_required', 'status' => 401, 'retryable' => true, 'category' => 'authentication', 'severity' => 'error'],
['code' => 'capability_not_supported', 'status' => 422, 'retryable' => false, 'category' => 'capability', 'severity' => 'warning'],
['code' => 'rate_limited', 'status' => 429, 'retryable' => true, 'category' => 'throttle', 'severity' => 'warning'],
];
}
private static function profile_catalog_record(string $profile): array
{
foreach (self::profile_catalog() as $record) {
if ((string) ($record['profile'] ?? '') === $profile) {
return $record;
}
}
return [];
}
private static function profile_body_contract(string $profile): array
{
$contracts = [
'uai.intent.request.v1' => [
'required' => ['intent', 'subject', 'requested_profile', 'parameters', 'constraints', 'response_profile'],
'allowed' => ['intent', 'subject', 'requested_profile', 'parameters', 'constraints', 'response_profile'],
],
'uai.intent.response.v1' => [
'required' => ['status', 'subject', 'request_message_id', 'result', 'notices'],
'allowed' => ['status', 'subject', 'request_message_id', 'result', 'notices', 'task_ref'],
],
'uai.capability.statement.v1' => [
'required' => ['capability_id', 'version', 'operations', 'input_profiles', 'output_profiles', 'async_profiles', 'security_schemes', 'endpoints'],
'allowed' => ['capability_id', 'version', 'operations', 'input_profiles', 'output_profiles', 'async_profiles', 'security_schemes', 'transport_bindings', 'conformance_levels', 'error_codes', 'endpoints', 'extension_namespaces', 'implementation_tracks'],
],
'uai.error.v1' => [
'required' => ['type', 'title', 'detail', 'status', 'code', 'retryable', 'instance'],
'allowed' => ['type', 'title', 'detail', 'status', 'code', 'retryable', 'instance', 'documentationUrl', 'traceId', 'correlationId', 'uaixCode', 'uaixCategory', 'uaixSeverity', 'evidenceRecommended', 'suspensionRecommended', 'redactionApplied', 'errors', 'next_step'],
],
'uai.conformance.result.v1' => [
'required' => ['status', 'checked_profile', 'issues', 'summary', 'artifacts'],
'allowed' => ['status', 'checked_profile', 'issues', 'summary', 'artifacts', 'target_message_ref'],
],
'uai.task.status.v1' => [
'required' => ['task_id', 'state', 'subject', 'progress', 'status_message'],
'allowed' => ['task_id', 'state', 'subject', 'progress', 'status_message', 'result_profile', 'result_ref', 'blocking_reasons', 'updated_fields'],
],
];
return $contracts[$profile] ?? ['required' => [], 'allowed' => []];
}
private static function profile_message_role(string $profile): string
{
$roles = [
'uai.intent.request.v1' => 'request',
'uai.intent.response.v1' => 'response',
'uai.capability.statement.v1' => 'capability-statement',
'uai.error.v1' => 'problem-details-error',
'uai.conformance.result.v1' => 'validation-result',
'uai.task.status.v1' => 'async-task-status',
];
return $roles[$profile] ?? 'unknown';
}
private static function build_mock_response_example(): array
{
$request = self::build_intent_request_example();
return self::build_uaix_envelope(
'uai.intent.response.v1',
self::message_id('response-example'),
self::service_party('/mock-exchange'),
self::target_from_payload($request),
[
'status' => 'ok',
'subject' => 'spiralist.uaix.wordpress-publication',
'request_message_id' => (string) ($request['message_id'] ?? 'msg-example-request'),
'result' => [
'catalog_url' => self::local_uaix_url('/catalog'),
'registry_url' => self::local_uaix_url('/registry'),
'next_route' => self::local_uaix_url('/adoption-kit'),
],
'notices' => ['example-response'],
]
);
}