Prompt Manager: add source display of pulled prompts (#3981) * Prompt Manager: add source display of pulled prompts * Fix copilot comments
Signed| @@ -359,10 +359,15 @@ | ||
| 359 | 359 | content: attr(external_piece_text); |
| 360 | 360 | display: block; |
| 361 | 361 | width: 100%; |
| 362 | 362 | font-weight: 600500; |
| 363 | 363 | text-align: center; |
| 364 | 364 | } |
| 365 | 365 | |
| 366 | 366 | .completion_prompt_manager_popup_entry_form_control #completion_prompt_manager_popup_entry_form_prompt:disabled { |
| 367 | 367 | visibility: hidden; |
| 368 | 368 | } |
| 369 | + | |
| 370 | +#completion_prompt_manager_popup_entry_source_block { | |
| 371 | + display: flex; | |
| 372 | + justify-content: center; | |
| 373 | +} | |
| @@ -6477,6 +6477,11 @@ | ||
| 6477 | 6477 | </label> |
| 6478 | 6478 | </div> |
| 6479 | 6479 | </div> |
| 6480 | + <div id="completion_prompt_manager_popup_entry_source_block"> | |
| 6481 | + <b data-i18n="Source:">Source:</b> | |
| 6482 | + <span> </span> | |
| 6483 | + <span id="completion_prompt_manager_popup_entry_source"></span> | |
| 6484 | + </div> | |
| 6480 | 6485 | <textarea id="completion_prompt_manager_popup_entry_form_prompt" class="text_pole" name="prompt"> |
| 6481 | 6486 | </textarea> |
| 6482 | 6487 | </div> |
| @@ -196,6 +196,17 @@ export class PromptCollection { | ||
| 196 | 196 | } |
| 197 | 197 | |
| 198 | 198 | class 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 | 210 | constructor() { |
| 200 | 211 | this.systemPrompts = [ |
| 201 | 212 | 'main', |
| @@ -408,6 +419,7 @@ class PromptManager { | ||
| 408 | 419 | this.handleResetPrompt = (event) => { |
| 409 | 420 | const promptId = event.target.dataset.pmPrompt; |
| 410 | 421 | const prompt = this.getPromptById(promptId); |
| 422 | + const isPulledPrompt = Object.keys(this.promptSources).includes(promptId); | |
| 411 | 423 | |
| 412 | 424 | switch (promptId) { |
| 413 | 425 | case 'main': |
| @@ -439,6 +451,12 @@ class PromptManager { | ||
| 439 | 451 | document.getElementById(this.configuration.prefix + 'prompt_manager_popup_entry_form_forbid_overrides').checked = prompt.forbid_overrides ?? false; |
| 440 | 452 | document.getElementById(this.configuration.prefix + 'prompt_manager_forbid_overrides_block').style.visibility = this.overridablePrompts.includes(prompt.identifier) ? 'visible' : 'hidden'; |
| 441 | 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 | + } | |
| 442 | 460 | |
| 443 | 461 | if (!this.systemPrompts.includes(promptId)) { |
| 444 | 462 | document.getElementById(this.configuration.prefix + 'prompt_manager_popup_entry_form_injection_position').removeAttribute('disabled'); |
| @@ -1207,6 +1225,9 @@ class PromptManager { | ||
| 1207 | 1225 | const injectionDepthBlock = document.getElementById(this.configuration.prefix + 'prompt_manager_depth_block'); |
| 1208 | 1226 | const forbidOverridesField = document.getElementById(this.configuration.prefix + 'prompt_manager_popup_entry_form_forbid_overrides'); |
| 1209 | 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); | |
| 1210 | 1231 | |
| 1211 | 1232 | nameField.value = prompt.name ?? ''; |
| 1212 | 1233 | roleField.value = prompt.role || 'system'; |
| @@ -1218,6 +1239,12 @@ class PromptManager { | ||
| 1218 | 1239 | injectionPositionField.removeAttribute('disabled'); |
| 1219 | 1240 | forbidOverridesField.checked = prompt.forbid_overrides ?? false; |
| 1220 | 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 | + } | |
| 1221 | 1248 | |
| 1222 | 1249 | if (this.systemPrompts.includes(prompt.identifier)) { |
| 1223 | 1250 | injectionPositionField.setAttribute('disabled', 'disabled'); |
| @@ -1303,6 +1330,8 @@ class PromptManager { | ||
| 1303 | 1330 | const injectionDepthBlock = document.getElementById(this.configuration.prefix + 'prompt_manager_depth_block'); |
| 1304 | 1331 | const forbidOverridesField = document.getElementById(this.configuration.prefix + 'prompt_manager_popup_entry_form_forbid_overrides'); |
| 1305 | 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'); | |
| 1306 | 1335 | |
| 1307 | 1336 | nameField.value = ''; |
| 1308 | 1337 | roleField.selectedIndex = 0; |
| @@ -1314,6 +1343,8 @@ class PromptManager { | ||
| 1314 | 1343 | injectionDepthBlock.style.visibility = 'unset'; |
| 1315 | 1344 | forbidOverridesBlock.style.visibility = 'unset'; |
| 1316 | 1345 | forbidOverridesField.checked = false; |
| 1346 | + entrySourceBlock.style.display = 'none'; | |
| 1347 | + entrySource.textContent = ''; | |
| 1317 | 1348 | |
| 1318 | 1349 | roleField.disabled = false; |
| 1319 | 1350 | } |