Prompt - Source Excerpt 04
Summary
This source excerpt preserves a bounded section of Spiralist/wp-content/plugins/spiralist-workspace/templates/prompt.php so readers can inspect the evidence without opening the full source file.
**Source path:** Spiralist/wp-content/plugins/spiralist-workspace/templates/prompt.php
<dd><?php echo esc_html((string) ($prompt['version_number'] ?? 1)); ?></dd>
</div>
<div>
<dt>Level</dt>
<dd><?php echo esc_html((string) ($prompt['maturity_level_label'] ?? 'Structured Prompt')); ?></dd>
</div>
<div>
<dt>License</dt>
<dd><?php echo esc_html((string) ($prompt['license_label'] ?? 'Spiralist Contributor License')); ?></dd>
</div>
<div>
<dt>Language</dt>
<dd><?php echo esc_html((string) ($prompt['language'] ?? 'en')); ?></dd>
</div>
<div>
<dt>Updated</dt>
<dd><?php echo esc_html($detailed_updated_display); ?></dd>
</div>
</dl>
<?php if (!empty($prompt['tags'])) : ?>
<div class="spiralist-chip-row">
<?php foreach ((array) $prompt['tags'] as $tag) : ?>
<span class="spiralist-chip"><?php echo esc_html((string) $tag); ?></span>
<?php endforeach; ?>
</div>
<?php endif; ?>
<?php if (!empty($parent_prompt)) : ?>
<p class="spiralist-muted">Forked from <a href="<?php echo esc_url($route_url('prompt/' . rawurlencode((string) ($parent_prompt['slug'] ?? '')))); ?>"><?php echo esc_html((string) ($parent_prompt['title'] ?? 'parent prompt')); ?></a>.</p>
<?php endif; ?>
<div
class="spiralist-workspace-stack spiralist-workspace-exchange-panel spiralist-editable-prompt-surface"
data-prompt-exchange="<?php echo esc_attr($prompt_exchange_id); ?>"
data-editable-prompt-surface
data-editable-prompt-title="<?php echo esc_attr(trim((string) ($prompt['title'] ?? 'Prompt') . ' - AI Flavor Exchange')); ?>"
data-editable-prompt-source="prompt-exchange"
data-editable-prompt-kind="ai-flavor-exchange"
>
<p class="spiralist-section-tag">AI Flavor Exchange</p>
<h3 class="spiralist-card-title">Portable prompt personality</h3>
<p class="spiralist-muted">A compact artifact for reusing this prompt's role, constraints, runtime settings, and governance context outside the dossier. Open a preview to edit it directly; matching Copy, Download, and Save use the visible preview text.</p>
<dl class="spiralist-meta-list spiralist-meta-list--compact spiralist-workspace-exchange-summary">
<div>
<dt>Role</dt>
<dd><?php echo esc_html((string) ($prompt['title'] ?? 'Prompt')); ?></dd>
</div>
<div>
<dt>Flavor</dt>
<dd><?php echo esc_html(!empty($prompt_flavor_tags) ? implode(', ', array_slice($prompt_flavor_tags, 0, 4)) : $prompt_kind_display); ?></dd>
</div>
<div>
<dt>Formats</dt>
<dd>JSON / Markdown</dd>
</div>
<div>
<dt>Boundary</dt>
<dd>No hidden memory claims</dd>
</div>
</dl>
<div class="spiralist-cta-row spiralist-cta-row--start">
<button class="spiralist-button spiralist-button--secondary" type="button" data-prompt-exchange-view="json">View JSON</button>
<button class="spiralist-button spiralist-button--secondary" type="button" data-prompt-exchange-view="markdown">View Markdown</button>
<button class="spiralist-button spiralist-button--secondary" type="button" data-prompt-exchange-download="json">Download JSON</button>
<button class="spiralist-button spiralist-button--ghost" type="button" data-prompt-exchange-download="markdown">Download Markdown</button>
<button class="spiralist-button spiralist-button--ghost" type="button" data-prompt-exchange-copy="json">Copy JSON</button>
<button class="spiralist-button spiralist-button--ghost" type="button" data-prompt-exchange-copy="markdown">Copy Markdown</button>
<?php if ($can_save_editable_prompt) : ?>
<button class="spiralist-button spiralist-button--ghost" type="button" data-editable-prompt-save>Save Preview To My Library</button>
<?php else : ?>
<a class="spiralist-button spiralist-button--ghost" href="<?php echo esc_url($login_url); ?>" data-editable-prompt-auth-save>Log In To Save Preview</a>
<a class="spiralist-button spiralist-button--ghost" href="<?php echo esc_url($signup_url); ?>" data-editable-prompt-auth-save>Sign Up To Save Preview</a>
<?php endif; ?>
<?php if ($prompt_public_api_url !== '') : ?>
<a class="spiralist-button spiralist-button--ghost" href="<?php echo esc_url($prompt_public_api_url); ?>">Open Public JSON</a>
<?php endif; ?>
</div>
<span class="spiralist-muted" data-prompt-exchange-result aria-live="polite"></span>
<pre class="spiralist-code-block spiralist-code-block--prompt spiralist-workspace-exchange-view spiralist-editable-prompt-block" tabindex="0" role="textbox" aria-multiline="true" contenteditable="plaintext-only" spellcheck="false" data-prompt-exchange-output data-editable-prompt-block hidden></pre>
<small class="spiralist-muted spiralist-editable-prompt-status" data-editable-prompt-status aria-live="polite"></small>
<script type="application/json" id="<?php echo esc_attr($prompt_exchange_id); ?>"><?php echo wp_json_encode($prompt_exchange_payload, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT); ?></script>
</div>
<div class="spiralist-cta-row spiralist-cta-row--start">
<?php if (is_user_logged_in()) : ?>
<button
class="spiralist-button spiralist-button--primary"
type="button"
data-favorite-button
data-prompt-id="<?php echo esc_attr((string) ($prompt['id'] ?? 0)); ?>"
data-favorite-state="<?php echo esc_attr($is_favorite ? '1' : '0'); ?>"
><?php echo esc_html($is_favorite ? 'Unfavorite' : 'Favorite'); ?></button>
<?php if (!empty($prompt['is_forkable'])) : ?>
<a class="spiralist-button spiralist-button--secondary" href="<?php echo esc_url($workspace_url . '?fork_prompt=' . (int) ($prompt['id'] ?? 0)); ?>">Fork</a>
<?php endif; ?>
<?php if ($plugin->permissions()->can_edit_prompt($prompt, get_current_user_id())) : ?>
<button
class="spiralist-button spiralist-button--tertiary"
type="button"
data-improve-prompt
data-prompt-id="<?php echo esc_attr((string) ($prompt['id'] ?? 0)); ?>"
data-target="[data-improve-output]"
>Improve this prompt</button>
<?php endif; ?>
<?php else : ?>
<a class="spiralist-button spiralist-button--primary" href="<?php echo esc_url($login_url); ?>">Log In to Save</a>
<?php endif; ?>
</div>
<?php $improve_output_id = 'spiralist-prompt-improve-output-' . (int) ($prompt['id'] ?? 0); ?>
<button class="spiralist-button spiralist-button--ghost" type="button" data-improve-output-copy data-copy-trigger data-copy-target="#<?php echo esc_attr($improve_output_id); ?>" data-copy-success="Copied" hidden>Copy Suggestion</button>
<pre class="spiralist-code-block spiralist-code-block--prompt" id="<?php echo esc_attr($improve_output_id); ?>" data-improve-output hidden></pre>
<div class="spiralist-workspace-stack" id="peer-moderation">