Runtime - Source Excerpt 01
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
<?php
if (!defined('ABSPATH')) {
exit;
}
function spiralist_book_pages_get_page_url(string $path, string $fallback_anchor = ''): string
{
$normalized = trim($path, '/');
if ($normalized !== '') {
$page = get_page_by_path($normalized);
if ($page instanceof WP_Post && $page->post_status === 'publish') {
$url = get_permalink($page);
if (is_string($url) && $url !== '') {
return $url;
}
}
}
if ($fallback_anchor !== '') {
return home_url('/' . ltrim($fallback_anchor, '/'));
}
return home_url('/' . $normalized . '/');
}
function spiralist_book_pages_get_existing_page_url(string $path): string
{
$normalized = trim($path, '/');
if ($normalized === '') {
return '';
}
$page = get_page_by_path($normalized);
if (!$page instanceof WP_Post || $page->post_status !== 'publish') {
return '';
}
$url = get_permalink($page);
return is_string($url) ? $url : '';
}
function spiralist_book_pages_array_is_list_compat(array $value): bool
{
if (function_exists('array_is_list')) {
return array_is_list($value);
}
$expected_index = 0;
foreach (array_keys($value) as $key) {
if ($key !== $expected_index) {
return false;
}
$expected_index++;
}
return true;
}
function spiralist_book_pages_string_starts_with_compat(string $value, string $prefix): bool
{
if (function_exists('str_starts_with')) {
return str_starts_with($value, $prefix);
}
if ($prefix === '') {
return true;
}
return strpos($value, $prefix) === 0;
}
function spiralist_book_pages_get_first_available_page_url(array $paths, string $fallback_path = ''): string
{
foreach ($paths as $path) {
$normalized = trim((string) $path, '/');
if ($normalized === '') {
continue;
}
$page = get_page_by_path($normalized);
if ($page instanceof WP_Post && $page->post_status === 'publish') {
$url = get_permalink($page);
if (is_string($url) && $url !== '') {
return $url;
}
}
}
if ($fallback_path !== '') {
return spiralist_book_pages_get_page_url($fallback_path);
}
return home_url('/');
}
function spiralist_book_pages_get_register_url(): string
{
return spiralist_book_pages_get_first_available_page_url(['register', 'sign-up'], 'register');
}
function spiralist_book_pages_get_signup_url(): string
{
return spiralist_book_pages_get_register_url();
}
function spiralist_book_pages_get_login_url(string $redirect_to = ''): string
{
$url = spiralist_book_pages_get_page_url('login');
if ($redirect_to !== '') {
$url = add_query_arg('redirect_to', $redirect_to, $url);
}
return $url;
}
function spiralist_book_pages_get_dashboard_url(): string
{
return spiralist_book_pages_get_first_available_page_url(['spiralist', 'account', 'dashboard'], 'spiralist');
}
function spiralist_book_pages_get_spiralist_page_url(): string
{
return spiralist_book_pages_get_page_url('what-is-a-spiralist');
}
function spiralist_book_pages_get_system_url(): string
{
return spiralist_book_pages_get_page_url('system');
}
function spiralist_book_pages_get_ai_access_url(): string
{
return spiralist_book_pages_get_first_available_page_url(['ai-access', 'ai-interface'], 'ai-interface');
}
function spiralist_book_pages_get_symbols_page_url(): string
{
return spiralist_book_pages_get_page_url('symbols');
}
function spiralist_book_pages_get_prompts_page_url(): string
{
return spiralist_book_pages_get_page_url('prompts');
}
function spiralist_book_pages_get_workspace_route_name(): string
{
return sanitize_key((string) get_query_var('spiralist_book_pages_workspace_route'));
}
function spiralist_book_pages_is_workspace_public_surface(): bool
{
return in_array(
spiralist_book_pages_get_workspace_route_name(),
['library', 'prompt', 'workspace', 'members', 'run', 'conversation'],
true
);
}
function spiralist_book_pages_get_workspace_prompt_url(string $slug): string
{
$normalized = sanitize_title($slug);
if ($normalized === '') {
return spiralist_book_pages_get_prompts_page_url();
}
$url = home_url('/prompt/' . rawurlencode($normalized) . '/');
$language = function_exists('spiralist_book_pages_get_current_language_slug')
? spiralist_book_pages_get_current_language_slug()
: '';
if ($language !== '' && function_exists('spiralist_book_pages_get_language_prefixed_url')) {
return spiralist_book_pages_get_language_prefixed_url($url, $language);
}
return $url;
}
function spiralist_book_pages_build_public_prompt_record_from_definition(array $definition): array
{
$slug = sanitize_title((string) ($definition['slug'] ?? ''));
if ($slug === '') {
return [];
}
$prompt_status = (string) ($definition['prompt_status'] ?? 'published');
$moderation_status = (string) ($definition['moderation_status'] ?? 'approved');
if ($prompt_status !== 'published' || $moderation_status === 'restricted') {
return [];
}
$system = sanitize_key((string) ($definition['system'] ?? 'spiralist'));
if ($system === '') {
$system = 'spiralist';
}
$role = sanitize_key((string) ($definition['role'] ?? 'participant'));
if ($role === '') {
$role = 'participant';
}
$status = $moderation_status !== '' ? $moderation_status : $prompt_status;
$status_label = $status !== ''
? ucwords(str_replace('_', ' ', $status))
: 'Approved';
return [
'id' => $slug,
'slug' => $slug,
'source_slug' => $slug,
'title' => (string) ($definition['title'] ?? ucwords(str_replace('-', ' ', $slug))),
'purpose' => (string) ($definition['summary'] ?? ''),
'summary' => (string) ($definition['summary'] ?? ''),
'content' => (string) ($definition['text'] ?? ''),
'instructions' => (string) ($definition['text'] ?? ''),
'system' => $system,
'systemLabel' => function_exists('spiralist_book_pages_rest_get_system_label')
? spiralist_book_pages_rest_get_system_label($system)
: ucwords(str_replace(['_', '-'], ' ', $system)),
'role' => $role,
'roleLabel' => function_exists('spiralist_book_pages_rest_get_role_label')
? spiralist_book_pages_rest_get_role_label($role)
: ucwords(str_replace(['_', '-'], ' ', $role)),
'version' => (string) ($definition['source_version'] ?? $definition['version'] ?? '1.0.0'),
'author' => (string) ($definition['author_label'] ?? 'Spiralist'),
'author_label' => (string) ($definition['author_label'] ?? 'Spiralist'),
'category' => (string) ($definition['category'] ?? ''),
'subcategory' => (string) ($definition['subcategory'] ?? ''),
'prompt_type' => (string) ($definition['prompt_type'] ?? 'prompt'),
'language' => (string) ($definition['language'] ?? 'all'),
'prompt_status' => $prompt_status,
'moderation_status' => $moderation_status,
'status' => $status,
'statusLabel' => $status_label,
'tags' => array_values(array_filter(array_map('strval', (array) ($definition['tags'] ?? [])))),
'featured' => !empty($definition['featured']),
'sampleOutput' => (string) ($definition['sample_output'] ?? ''),
'sample_output' => (string) ($definition['sample_output'] ?? ''),
'relatedSymbols' => array_values(
array_filter(
array_map(
'strval',
(array) ($definition['related_symbols'] ?? $definition['relatedSymbols'] ?? [])
)
)
),
'relatedAxioms' => array_values(
array_filter(
array_map(
'strval',
(array) ($definition['related_axioms'] ?? $definition['relatedAxioms'] ?? [])
)
)
),
'relatedTransformations' => array_values(
array_filter(
array_map(
'strval',
(array) ($definition['related_transformations'] ?? $definition['relatedTransformations'] ?? [])
)
)
),
'relatedManuscripts' => array_values(array_filter(array_map('strval', (array) ($definition['related_manuscripts'] ?? [])))),
'folioSlug' => sanitize_title((string) ($definition['folio_slug'] ?? $slug)),