Runtime - Source Excerpt 19
Summary
This source excerpt preserves a bounded section of Spiralist/wp-content/plugins/ns12-manuscript/includes/runtime.php so readers can inspect the evidence without opening the full source file.
**Source path:** Spiralist/wp-content/plugins/ns12-manuscript/includes/runtime.php
return function_exists('spiralist_build_publication_url_from_human_url')
? spiralist_build_publication_url_from_human_url($human_url, $suffix, $language)
: '';
}
function spiralist_book_pages_get_publication_context(?WP_Post $post = null, array $args = []): array
{
return function_exists('spiralist_get_publication_context')
? spiralist_get_publication_context($post, $args)
: [];
}
function spiralist_book_pages_get_current_publication_context(): array
{
if (!spiralist_book_pages_is_publication_surface()) {
return [];
}
return spiralist_book_pages_get_publication_context(
spiralist_book_pages_get_publication_surface_post(),
[
'home' => is_front_page() || is_home(),
]
);
}
function spiralist_book_pages_get_current_publication_links(): array
{
$context = spiralist_book_pages_get_current_publication_context();
if (empty($context)) {
return [];
}
return [
[
'label' => 'UAIX Discovery',
'url' => (string) ($context['discoveryUrl'] ?? spiralist_book_pages_get_site_uai_url()),
],
[
'label' => 'UAIX Capability',
'url' => (string) ($context['capabilityUrl'] ?? spiralist_book_pages_get_uaix_capability_url()),
],
];
}
function spiralist_book_pages_get_current_uai_url(?WP_Post $post = null): string
{
$context = spiralist_book_pages_get_publication_context(
$post,
[
'home' => is_front_page() || is_home(),
]
);
if (!empty($context['jsonUrl'])) {
return (string) $context['jsonUrl'];
}
return spiralist_book_pages_get_site_uai_url();
}
function spiralist_book_pages_get_publication_identity_label(?WP_Post $post = null, bool $is_home_surface = false): string
{
if ($is_home_surface) {
return 'spiralist.site.home';
}
if ($post instanceof WP_Post) {
if ($post->post_name !== '') {
return 'spiralist.page.' . sanitize_title((string) $post->post_name);
}
return 'spiralist.page.' . $post->ID;
}
return 'spiralist.publication.surface';
}
function spiralist_book_pages_get_publication_inspector_payload($post = null, array $args = []): array
{
$is_home_surface = array_key_exists('home', $args)
? (bool) $args['home']
: (is_front_page() || is_home());
$context = spiralist_book_pages_get_publication_context(
$post instanceof WP_Post ? $post : null,
[
'home' => $is_home_surface,
'language' => isset($args['language']) ? (string) $args['language'] : spiralist_book_pages_get_publication_language('en'),
]
);
if (empty($context)) {
return [];
}
$publication_post = $post instanceof WP_Post
? $post
: ($context['post'] instanceof WP_Post ? $context['post'] : null);
$validation_state = 'uaix-current';
$validation_note = 'Page-document UAI routes are retired. Current machine exchange uses the UAIX UAI-1 envelope routes under /wp-json/uaix/v1/.';
$updated_at = 0;
if ($publication_post instanceof WP_Post) {
$updated_at = (int) get_post_modified_time('U', true, $publication_post);
} elseif ($is_home_surface) {
$front_page_id = (int) get_option('page_on_front');
if ($front_page_id > 0) {
$updated_at = (int) get_post_modified_time('U', true, $front_page_id);
}
}
$related_resources = array_values(array_filter([
[
'label' => 'UAIX Discovery',
'url' => (string) ($context['discoveryUrl'] ?? spiralist_book_pages_get_site_uai_url()),
'type' => 'application/vnd.uaix.uai+json',
],
[
'label' => 'UAIX Capability',
'url' => (string) ($context['capabilityUrl'] ?? spiralist_book_pages_get_uaix_capability_url()),
'type' => 'application/vnd.uaix.uai+json',
],
[
'label' => 'UAIX Validator',
'url' => spiralist_book_pages_get_uaix_validate_url(),
'type' => 'application/vnd.uaix.uai+json',
],
[
'label' => 'Symbol API',
'url' => spiralist_book_pages_get_symbols_api_url(),
'type' => 'application/json',
],
[
'label' => 'Prompt Library API',
'url' => function_exists('spiralist_book_pages_get_prompts_api_url') ? spiralist_book_pages_get_prompts_api_url() : '',
'type' => 'application/json',
],
[
'label' => 'Contribution API',
'url' => function_exists('spiralist_book_pages_get_contribute_api_url') ? spiralist_book_pages_get_contribute_api_url() : '',
'type' => 'application/json',
],
], static function (array $resource): bool {
return (string) ($resource['url'] ?? '') !== '';
}));
return [
'identity' => spiralist_book_pages_get_publication_identity_label($publication_post, $is_home_surface),
'title' => $publication_post instanceof WP_Post ? get_the_title($publication_post) : get_bloginfo('name'),
'humanUrl' => (string) ($context['humanUrl'] ?? ''),
'compactUrl' => (string) ($context['compactUrl'] ?? ''),
'jsonUrl' => (string) ($context['jsonUrl'] ?? ''),
'discoveryUrl' => (string) ($context['discoveryUrl'] ?? ''),
'capabilityUrl' => (string) ($context['capabilityUrl'] ?? ''),
'legacyJsonUrl' => (string) ($context['legacyJsonUrl'] ?? ''),
'publicationLanguage' => (string) ($context['language'] ?? 'en'),
'sourceStatus' => $validation_state,
'sourceStatusLabel' => ucwords(str_replace('-', ' ', $validation_state)),
'validationNote' => $validation_note,
'lastPublishedAt' => $updated_at > 0 ? gmdate('c', $updated_at) : '',
'lastPublishedLabel' => $updated_at > 0 ? wp_date(get_option('date_format') . ' ' . get_option('time_format'), $updated_at) : 'Awaiting first publication timestamp',
'relatedResources' => $related_resources,
];
}
function spiralist_book_pages_get_route_from_url(string $url, string $fallback = ''): string
{
$path = (string) (wp_parse_url($url, PHP_URL_PATH) ?: '');
$query = (string) (wp_parse_url($url, PHP_URL_QUERY) ?: '');
if ($path === '') {
return $fallback;
}
return $query !== '' ? $path . '?' . $query : $path;
}
function spiralist_book_pages_get_primary_machine_endpoints(): array
{
$uaix_discovery_url = spiralist_book_pages_get_site_uai_url();
$uaix_capability_url = spiralist_book_pages_get_uaix_capability_url();
$uaix_validate_url = spiralist_book_pages_get_uaix_validate_url();
$symbol_registry_url = spiralist_book_pages_get_symbol_registry_url();
$symbols_api_url = spiralist_book_pages_get_symbols_api_url();
$subscribe_url = function_exists('spiralist_book_pages_get_rest_url')
? spiralist_book_pages_get_rest_url('subscribe')
: rest_url(spiralist_book_pages_get_rest_namespace() . '/subscribe');
$rest_namespace = spiralist_book_pages_get_rest_namespace();
return [
[
'id' => 'uaix-discovery',
'labelKey' => 'ui.api.uaix_discovery',
'label' => 'UAIX Discovery',
'route' => spiralist_book_pages_get_route_from_url($uaix_discovery_url, '/wp-json/uaix/v1/discovery'),
'url' => $uaix_discovery_url,
'method' => 'GET',
'type' => 'application/vnd.uaix.uai+json',
'purposeKey' => 'page.api_examples.endpoint.uaix_discovery.purpose',
'purpose' => 'Current UAIX UAI-1 public discovery and capability entry point for Spiralist.org.',
'purposeUaiKey' => 'spiralist.machine.site_uai.purpose',
],
[
'id' => 'uaix-capability',
'labelKey' => 'ui.api.uaix_capability',
'label' => 'UAIX Capability',
'route' => spiralist_book_pages_get_route_from_url($uaix_capability_url, '/wp-json/uaix/v1/capability'),
'url' => $uaix_capability_url,
'method' => 'GET',
'type' => 'application/vnd.uaix.uai+json',
'purposeKey' => 'page.api_examples.endpoint.uaix_capability.purpose',
'purpose' => 'Current uai.capability.statement.v1 envelope for the WordPress publication track.',
'purposeUaiKey' => 'spiralist.machine.site_uai.purpose',
],
[
'id' => 'uaix-validator',
'labelKey' => 'ui.api.uaix_validate',
'label' => 'UAIX Validator',
'route' => spiralist_book_pages_get_route_from_url($uaix_validate_url, '/wp-json/uaix/v1/validate'),