Prompt Manager: add source display of pulled prompts (#3981) * Prompt Manager: add source display of pulled prompts * Fix copilot comments

44b7a09cb6873a7845eaf71503f083db4679f959

Cohee <18619528+Cohee1207@users.noreply.github.com>

Signed
3 files changed, +42 -1Showing whitespace changes
public/css/promptmanager.css+6 -1
@@ -359,10 +359,15 @@
359 content: attr(external_piece_text);359 content: attr(external_piece_text);
360 display: block;360 display: block;
361 width: 100%;361 width: 100%;
362 font-weight: 600;362 font-weight: 500;
363 text-align: center;363 text-align: center;
364}364}
365365
366.completion_prompt_manager_popup_entry_form_control #completion_prompt_manager_popup_entry_form_prompt:disabled {366.completion_prompt_manager_popup_entry_form_control #completion_prompt_manager_popup_entry_form_prompt:disabled {
367 visibility: hidden;367 visibility: hidden;
368}368}
369
370#completion_prompt_manager_popup_entry_source_block {
371 display: flex;
372 justify-content: center;
373}
public/index.html+5 -0
@@ -6477,6 +6477,11 @@
6477 </label>6477 </label>
6478 </div>6478 </div>
6479 </div>6479 </div>
6480 <div id="completion_prompt_manager_popup_entry_source_block">
6481 <b data-i18n="Source:">Source:</b>
6482 <span>&nbsp;</span>
6483 <span id="completion_prompt_manager_popup_entry_source"></span>
6484 </div>
6480 <textarea id="completion_prompt_manager_popup_entry_form_prompt" class="text_pole" name="prompt">6485 <textarea id="completion_prompt_manager_popup_entry_form_prompt" class="text_pole" name="prompt">
6481 </textarea>6486 </textarea>
6482 </div>6487 </div>
public/scripts/PromptManager.js+31 -0
@@ -196,6 +196,17 @@ export class PromptCollection {
196}196}
197197
198class PromptManager {198class PromptManager {
199 get promptSources() {
200 return {
201 charDescription: t`Character Description`,
202 charPersonality: t`Character Personality`,
203 scenario: t`Character Scenario`,
204 personaDescription: t`Persona Description`,
205 worldInfoBefore: t`World Info (↑Char)`,
206 worldInfoAfter: t`World Info (↓Char)`,
207 };
208 }
209
199 constructor() {210 constructor() {
200 this.systemPrompts = [211 this.systemPrompts = [
201 'main',212 'main',
@@ -408,6 +419,7 @@ class PromptManager {
408 this.handleResetPrompt = (event) => {419 this.handleResetPrompt = (event) => {
409 const promptId = event.target.dataset.pmPrompt;420 const promptId = event.target.dataset.pmPrompt;
410 const prompt = this.getPromptById(promptId);421 const prompt = this.getPromptById(promptId);
422 const isPulledPrompt = Object.keys(this.promptSources).includes(promptId);
411423
412 switch (promptId) {424 switch (promptId) {
413 case 'main':425 case 'main':
@@ -439,6 +451,12 @@ class PromptManager {
439 document.getElementById(this.configuration.prefix + 'prompt_manager_popup_entry_form_forbid_overrides').checked = prompt.forbid_overrides ?? false;451 document.getElementById(this.configuration.prefix + 'prompt_manager_popup_entry_form_forbid_overrides').checked = prompt.forbid_overrides ?? false;
440 document.getElementById(this.configuration.prefix + 'prompt_manager_forbid_overrides_block').style.visibility = this.overridablePrompts.includes(prompt.identifier) ? 'visible' : 'hidden';452 document.getElementById(this.configuration.prefix + 'prompt_manager_forbid_overrides_block').style.visibility = this.overridablePrompts.includes(prompt.identifier) ? 'visible' : 'hidden';
441 document.getElementById(this.configuration.prefix + 'prompt_manager_popup_entry_form_prompt').disabled = prompt.marker ?? false;453 document.getElementById(this.configuration.prefix + 'prompt_manager_popup_entry_form_prompt').disabled = prompt.marker ?? false;
454 document.getElementById(this.configuration.prefix + 'prompt_manager_popup_entry_source_block').style.display = isPulledPrompt ? '' : 'none';
455
456 if (isPulledPrompt) {
457 const sourceName = this.promptSources[promptId];
458 document.getElementById(this.configuration.prefix + 'prompt_manager_popup_entry_source').textContent = sourceName;
459 }
442460
443 if (!this.systemPrompts.includes(promptId)) {461 if (!this.systemPrompts.includes(promptId)) {
444 document.getElementById(this.configuration.prefix + 'prompt_manager_popup_entry_form_injection_position').removeAttribute('disabled');462 document.getElementById(this.configuration.prefix + 'prompt_manager_popup_entry_form_injection_position').removeAttribute('disabled');
@@ -1207,6 +1225,9 @@ class PromptManager {
1207 const injectionDepthBlock = document.getElementById(this.configuration.prefix + 'prompt_manager_depth_block');1225 const injectionDepthBlock = document.getElementById(this.configuration.prefix + 'prompt_manager_depth_block');
1208 const forbidOverridesField = document.getElementById(this.configuration.prefix + 'prompt_manager_popup_entry_form_forbid_overrides');1226 const forbidOverridesField = document.getElementById(this.configuration.prefix + 'prompt_manager_popup_entry_form_forbid_overrides');
1209 const forbidOverridesBlock = document.getElementById(this.configuration.prefix + 'prompt_manager_forbid_overrides_block');1227 const forbidOverridesBlock = document.getElementById(this.configuration.prefix + 'prompt_manager_forbid_overrides_block');
1228 const entrySourceBlock = document.getElementById(this.configuration.prefix + 'prompt_manager_popup_entry_source_block');
1229 const entrySource = document.getElementById(this.configuration.prefix + 'prompt_manager_popup_entry_source');
1230 const isPulledPrompt = Object.keys(this.promptSources).includes(prompt.identifier);
12101231
1211 nameField.value = prompt.name ?? '';1232 nameField.value = prompt.name ?? '';
1212 roleField.value = prompt.role || 'system';1233 roleField.value = prompt.role || 'system';
@@ -1218,6 +1239,12 @@ class PromptManager {
1218 injectionPositionField.removeAttribute('disabled');1239 injectionPositionField.removeAttribute('disabled');
1219 forbidOverridesField.checked = prompt.forbid_overrides ?? false;1240 forbidOverridesField.checked = prompt.forbid_overrides ?? false;
1220 forbidOverridesBlock.style.visibility = this.overridablePrompts.includes(prompt.identifier) ? 'visible' : 'hidden';1241 forbidOverridesBlock.style.visibility = this.overridablePrompts.includes(prompt.identifier) ? 'visible' : 'hidden';
1242 entrySourceBlock.style.display = isPulledPrompt ? '' : 'none';
1243
1244 if (isPulledPrompt) {
1245 const sourceName = this.promptSources[prompt.identifier];
1246 entrySource.textContent = sourceName;
1247 }
12211248
1222 if (this.systemPrompts.includes(prompt.identifier)) {1249 if (this.systemPrompts.includes(prompt.identifier)) {
1223 injectionPositionField.setAttribute('disabled', 'disabled');1250 injectionPositionField.setAttribute('disabled', 'disabled');
@@ -1303,6 +1330,8 @@ class PromptManager {
1303 const injectionDepthBlock = document.getElementById(this.configuration.prefix + 'prompt_manager_depth_block');1330 const injectionDepthBlock = document.getElementById(this.configuration.prefix + 'prompt_manager_depth_block');
1304 const forbidOverridesField = document.getElementById(this.configuration.prefix + 'prompt_manager_popup_entry_form_forbid_overrides');1331 const forbidOverridesField = document.getElementById(this.configuration.prefix + 'prompt_manager_popup_entry_form_forbid_overrides');
1305 const forbidOverridesBlock = document.getElementById(this.configuration.prefix + 'prompt_manager_forbid_overrides_block');1332 const forbidOverridesBlock = document.getElementById(this.configuration.prefix + 'prompt_manager_forbid_overrides_block');
1333 const entrySourceBlock = document.getElementById(this.configuration.prefix + 'prompt_manager_popup_entry_source_block');
1334 const entrySource = document.getElementById(this.configuration.prefix + 'prompt_manager_popup_entry_source');
13061335
1307 nameField.value = '';1336 nameField.value = '';
1308 roleField.selectedIndex = 0;1337 roleField.selectedIndex = 0;
@@ -1314,6 +1343,8 @@ class PromptManager {
1314 injectionDepthBlock.style.visibility = 'unset';1343 injectionDepthBlock.style.visibility = 'unset';
1315 forbidOverridesBlock.style.visibility = 'unset';1344 forbidOverridesBlock.style.visibility = 'unset';
1316 forbidOverridesField.checked = false;1345 forbidOverridesField.checked = false;
1346 entrySourceBlock.style.display = 'none';
1347 entrySource.textContent = '';
13171348
1318 roleField.disabled = false;1349 roleField.disabled = false;
1319 }1350 }