Class Uai1 Routes - Source Excerpt 02
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
register_rest_route(
$namespace,
'/openapi.json',
[
'methods' => WP_REST_Server::READABLE,
'callback' => [self::class, 'rest_get_uaix_openapi'],
'permission_callback' => '__return_true',
]
);
}
register_rest_route(
self::LEGACY_NAMESPACE,
'/site',
[
'methods' => WP_REST_Server::READABLE,
'callback' => [self::class, 'rest_get_uaix_discovery'],
'permission_callback' => '__return_true',
]
);
register_rest_route(
self::LEGACY_NAMESPACE,
'/axioms',
[
'methods' => WP_REST_Server::READABLE,
'callback' => [self::class, 'rest_get_axioms'],
'permission_callback' => '__return_true',
]
);
register_rest_route(
self::LEGACY_NAMESPACE,
'/kernel',
[
'methods' => WP_REST_Server::READABLE,
'callback' => [self::class, 'rest_get_kernel'],
'permission_callback' => '__return_true',
]
);
register_rest_route(
self::LEGACY_NAMESPACE,
'/symbols',
[
'methods' => WP_REST_Server::READABLE,
'callback' => [self::class, 'rest_get_symbols'],
'permission_callback' => '__return_true',
]
);
register_rest_route(
self::LEGACY_NAMESPACE,
'/interactions',
[
'methods' => WP_REST_Server::CREATABLE,
'callback' => [self::class, 'rest_record_interaction'],
'permission_callback' => static function () {
return is_user_logged_in();
},
]
);
}
public static function register_query_vars(array $vars): array
{
$vars[] = 'uai1';
return $vars;
}
public static function handle_uai1_request(): void
{
$route = (string) get_query_var('uai1');
if ($route === '') {
return;
}
if ($route === self::ROUTE_MANUSCRIPT_IMAGE) {
self::handle_manuscript_image_request();
}
self::send_error(
404,
[
'error' => 'not_found',
'message' => 'This UAI route has been retired. Use /wp-json/uaix/v1/discovery.',
]
);
}
public static function rest_get_uaix_discovery(): WP_REST_Response
{
$message = self::build_capability_statement('discovery');
return self::build_rest_response($message, self::UAIX_CONTENT_TYPE);
}
public static function rest_get_uaix_catalog(): WP_REST_Response
{
return self::build_rest_response(
[
'site' => [
'name' => get_bloginfo('name') ?: 'Spiralist.org',
'home_url' => home_url('/'),
'generated_at' => gmdate('c'),
'well_known' => [
'uaix' => home_url('/.well-known/uaix.json'),
'uai' => home_url('/.well-known/uai.json'),
'ai_agent' => home_url('/.well-known/ai-agent.json'),
'openapi' => home_url('/.well-known/openapi.json'),
'agent_access' => home_url('/.well-known/ai-access.json'),
],
],
'standard_family' => 'UAI',
'current_release' => 'UAI-1',
'uai_version' => '1.0',
'package_version' => defined('UAI1_WP_VERSION') ? UAI1_WP_VERSION : 'unknown',
'canonical_specification' => self::uaix_public_url('/en-us/specification/'),
'source_authority' => 'UAIX.org publishes the normative UAI-1 specification; Spiralist.org dogfoods a local WordPress implementation surface.',
'counts' => [
'schemas' => count(self::profile_catalog()),
'registry' => count(self::profile_catalog()),
'examples' => 2,
'transport_bindings' => count(self::transport_binding_records()),
'trust_channels' => count(self::trust_channel_records()),
'conformance_levels' => count(self::conformance_level_records()),
'error_codes' => count(self::error_registry_records()),
],
'routes' => self::route_catalog(),
'discovery_contract' => self::discovery_contract(),
'problem_details' => self::problem_details_contract(),
'trust_metadata' => [
'trust_channels_url' => self::local_uaix_url('/trust-channels'),
'canonical_example_status' => [
'verification_status' => 'not_verified',
'credential_status' => 'not_checked',
'assurance_level' => 'reference_only',
],
'support_boundary' => self::support_boundary(),
],
'profiles' => self::profile_catalog(),
'known_blocked_capabilities' => self::blocked_capabilities(),
],
self::JSON_CONTENT_TYPE
);
}
public static function rest_get_uaix_capability(): WP_REST_Response
{
$message = self::build_capability_statement('capability');
return self::build_rest_response($message, self::UAIX_CONTENT_TYPE);
}
public static function rest_get_uaix_schemas($request = null): WP_REST_Response
{
$profile = self::profile_from_request($request);
if ($profile !== '') {
return self::build_rest_response(self::profile_schema_record($profile), self::JSON_CONTENT_TYPE);
}
return self::build_rest_response(
[
'current_release' => 'UAI-1',
'canonical_page' => self::uaix_public_url('/en-us/schemas/'),
'canonical_collection' => self::uaix_api_url('/schemas'),
'local_validator' => self::local_uaix_url('/validate'),
'profiles' => self::profile_catalog(),
'local_runtime_extensions' => [
[
'id' => 'spiralist.project-handoff',
'schema_url' => UAI1_WP_URL . 'schemas/project-handoff.schema.json',
'status' => 'local-repository-context-extension',
'authority' => 'UAIX.org is the Project Handoff specification authority; Spiralist.org publishes this local handoff bundle.',
],
[
'id' => 'spiralist.runtime-memory-checkpoint',
'schema_url' => UAI1_WP_URL . 'schemas/memory-checkpoint-requests.schema.json',
'status' => 'local-implementation-extension',
'authority' => 'Spiralist.org runtime implementation; UAIX remains normative for UAI-1 envelope profiles.',
],
],
],
self::JSON_CONTENT_TYPE
);
}
public static function rest_get_uaix_registry($request = null): WP_REST_Response
{
$profile = self::profile_from_request($request);
if ($profile !== '') {
return self::build_rest_response(self::profile_registry_record($profile), self::JSON_CONTENT_TYPE);
}