23 lines
1.0 KiB
JavaScript
23 lines
1.0 KiB
JavaScript
import { composePromptPlan } from './prompt_composition.js';
|
|
import { jsonResponse } from './ui_dom.js';
|
|
|
|
|
|
export function materialPromptText(payload) {
|
|
const data = payload.data || {};
|
|
if (data.kind === 'prompt_plan') return composePromptPlan(data.plan || {});
|
|
if (['prompt_text', 'prompt_note_bundle'].includes(data.kind)) {
|
|
return { positive: data.note?.promptEn || '', negative: '' };
|
|
}
|
|
const groups = payload.prompt_groups || {};
|
|
return Object.fromEntries(['positive', 'negative'].map(role => [role,
|
|
(Array.isArray(groups[role]) ? groups[role] : []).filter(value => typeof value === 'string' && value.trim()).join('\n'),
|
|
]));
|
|
}
|
|
|
|
export async function loadMaterialPrompts(filename, signal) {
|
|
const response = await fetch(`/anomalous/material_full?include_workflow=0&filename=${encodeURIComponent(filename)}`, { signal });
|
|
const payload = await jsonResponse(response, 'material load failed');
|
|
if (payload.status !== 'success') throw new Error('materialDetailLoadError');
|
|
return materialPromptText(payload);
|
|
}
|