Spiralist Prompt Workbench - Source Excerpt 86
Back to Spiralist Prompt Workbench
Summary
This source excerpt preserves a bounded section of Spiralist/wp-content/themes/spiralist/assets/js/spiralist-prompt-workbench.js so readers can inspect the evidence without opening the full source file.
**Source path:** Spiralist/wp-content/themes/spiralist/assets/js/spiralist-prompt-workbench.js
schedulePromptBoxEditDetection();
});
outputObserver.observe(output, {
childList: true,
characterData: true,
subtree: true,
});
}
document.addEventListener(promptDraftLoadEvent, (event) => {
const detail = event.detail || {};
const draft = detail.draft || {};
if (detail.handled || draft.type === 'character') {
return;
}
const prompt = toCleanString(draft.prompt, 50000);
if (!prompt) {
return;
}
setOutputText(prompt);
manualEdited = true;
setPromptReady(true);
if (shareInput && draft.setupUrl) {
shareInput.value = draft.setupUrl;
}
setEditStatus(t('portablePromptDraftLoadedEditReady', 'Saved draft loaded into the editable prompt box. Copy, download, AI links, and saves use this text.'));
setStatus(t('portablePromptDraftLoaded', 'Saved prompt draft loaded.'));
detail.handled = true;
});
starterButtons.forEach((starter) => {
starter.addEventListener('click', () => {
const personaLabStarter = starter.closest('#persona-lab');
selectMode(starter.dataset.mode || defaultMode);
setSelectedStarter(starter);
setFieldValue('subject', starter.dataset.subject || '');
setFieldValue('task', starter.dataset.task || '');
setFieldValue('context', starter.dataset.context || '');
setFieldValue('tone', starter.dataset.tone || '');
setFieldValue('output_format', starter.dataset.outputFormat || '');
setFieldValue('guardrails', starter.dataset.guardrails || '');
if (manualBuilderPanel && !personaLabStarter) {
manualBuilderPanel.open = true;
}
buildPortablePrompt({ status: t('portablePromptStarterLoaded', 'Starter loaded.') });
if (personaLabStarter) {
updatePersonaLabWorkflow();
return;
}
builder.scrollIntoView({ behavior: 'smooth', block: 'start' });
const focusTarget = form.querySelector('[name="subject"]');
if (focusTarget && typeof focusTarget.focus === 'function') {
window.setTimeout(() => focusTarget.focus({ preventScroll: true }), 220);
}
});
});
personaLabViewButtons.forEach((button) => {
button.addEventListener('click', () => {
const selectedView = setPersonaLabView(button, button.dataset.personaLabView || 'quick');
setStatus(t('portablePromptPersonaLabViewChanged', `Spiralist AI Persona Lab ${selectedView} view selected.`));
});
});
personaLabApplyButtons.forEach((button) => {
button.addEventListener('click', () => applyPersonaLabTuning(button));
});
personaLabCheckButtons.forEach((button) => {
button.addEventListener('click', () => runPersonaLabCheck(button));
});
personaLabCopyButtons.forEach((button) => {
button.addEventListener('click', () => copyPersonaLabPrompt(button));
});
personaLabCompactHandoffButtons.forEach((button) => {
button.addEventListener('click', () => runPersonaLabCompactHandoff(button));
});
personaLabLaunchKitButtons.forEach((button) => {
button.addEventListener('click', () => runPersonaLabLaunchKit(button));
});
personaLabStarterKitButtons.forEach((button) => {
button.addEventListener('click', () => runPersonaLabStarterKit(button));
});
personaLabDriftCheckButtons.forEach((button) => {
button.addEventListener('click', () => runPersonaLabDriftCheck(button));
});
personaLabRevisionLedgerButtons.forEach((button) => {
button.addEventListener('click', () => runPersonaLabRevisionLedger(button));
});
personaLabTrimPlanButtons.forEach((button) => {
button.addEventListener('click', () => runPersonaLabTrimPlan(button));
});
personaLabRepairButtons.forEach((button) => {
button.addEventListener('click', () => runPersonaLabRepair(button));
});
personaLabSessionBriefButtons.forEach((button) => {
button.addEventListener('click', () => runPersonaLabSessionBrief(button));
});
personaLabQuickProbeButtons.forEach((button) => {
button.addEventListener('click', () => runPersonaLabQuickProbe(button));
});
personaLabRepairQueueButtons.forEach((button) => {
button.addEventListener('click', () => runPersonaLabRepairQueue(button));
});
personaLabReviewStackButtons.forEach((button) => {
button.addEventListener('click', () => runPersonaLabReviewStack(button));
});
personaLabPackageIndexButtons.forEach((button) => {
button.addEventListener('click', () => runPersonaLabPackageIndex(button));
});
personaLabExportButtons.forEach((button) => {
button.addEventListener('click', () => downloadPersonaLabPackage(button));
});
personaLabSaveProfileButtons.forEach((button) => {
button.addEventListener('click', () => savePersonaLabProfileDraft(button));
});
personaLabRouters.forEach((router) => {
const goalField = router.querySelector('[data-persona-lab-goal]');
const recommendButton = router.querySelector('[data-persona-lab-recommend]');
const applyButton = router.querySelector('[data-persona-lab-apply-recommendation]');
if (goalField instanceof HTMLTextAreaElement || goalField instanceof HTMLInputElement) {
goalField.addEventListener('input', () => resetPersonaLabRecommendation(router));
}
if (recommendButton instanceof HTMLButtonElement) {
recommendButton.addEventListener('click', () => recommendPersonaLabProfile(router));
}
if (applyButton instanceof HTMLButtonElement) {
applyButton.addEventListener('click', () => applyPersonaLabRecommendation(router));
}
});
personaLabStressSuiteContainers.forEach((container) => {
const runButton = container.querySelector('[data-persona-lab-stress-run]');
const rehearsalButton = container.querySelector('[data-persona-lab-rehearsal-run]');
const recognitionButton = container.querySelector('[data-persona-lab-recognition-deck]');
const goldenButton = container.querySelector('[data-persona-lab-golden-profile]');
const variantButton = container.querySelector('[data-persona-lab-variant-matrix]');
const transcriptButton = container.querySelector('[data-persona-lab-transcript-score]');
const transcriptSaveButton = container.querySelector('[data-persona-lab-transcript-save]');
const runbookButton = container.querySelector('[data-persona-lab-runtime-runbook]');
const qualityButton = container.querySelector('[data-persona-lab-quality-pass]');
const suiteMatrixButton = container.querySelector('[data-persona-lab-suite-matrix]');
if (runButton instanceof HTMLButtonElement) {
runButton.addEventListener('click', () => runPersonaLabStressSuite(container));
}
if (rehearsalButton instanceof HTMLButtonElement) {
rehearsalButton.addEventListener('click', () => runPersonaLabRehearsalDeck(container));
}
if (recognitionButton instanceof HTMLButtonElement) {
recognitionButton.addEventListener('click', () => runPersonaLabRecognitionDeck(container));
}
if (goldenButton instanceof HTMLButtonElement) {
goldenButton.addEventListener('click', () => runPersonaLabGoldenProfile(container));
}
if (variantButton instanceof HTMLButtonElement) {
variantButton.addEventListener('click', () => runPersonaLabVariantMatrix(container));
}
if (transcriptButton instanceof HTMLButtonElement) {
transcriptButton.addEventListener('click', () => runPersonaLabTranscriptScorecard(container));
}
if (transcriptSaveButton instanceof HTMLButtonElement) {
transcriptSaveButton.addEventListener('click', () => runPersonaLabTranscriptScoreSave(container));
}
if (runbookButton instanceof HTMLButtonElement) {
runbookButton.addEventListener('click', () => runPersonaLabRuntimeRunbook(container));
}
if (qualityButton instanceof HTMLButtonElement) {
qualityButton.addEventListener('click', () => runPersonaLabQualityPass(container));
}
if (suiteMatrixButton instanceof HTMLButtonElement) {
suiteMatrixButton.addEventListener('click', () => runPersonaLabSuiteMatrix(container));
}
});
personaLabTranscriptHistoryContainers.forEach((container) => {
const clearButton = container.querySelector('[data-persona-lab-transcript-history-clear]');
if (clearButton instanceof HTMLButtonElement) {
clearButton.addEventListener('click', clearPersonaLabTranscriptHistory);
}
});
personaLabHistoryContainers.forEach((container) => {
const list = container.querySelector('[data-persona-lab-history-list]');
const saveButton = container.querySelector('[data-persona-lab-history-save]');
const clearButton = container.querySelector('[data-persona-lab-history-clear]');