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 | 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 | } |
| 365 | 365 | ||
| 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 | } | ||
| @@ -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> </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> |
| @@ -196,6 +196,17 @@ export class PromptCollection { | |||
| 196 | } | 196 | } |
| 197 | 197 | ||
| 198 | class PromptManager { | 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 | 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); | ||
| 411 | 423 | ||
| 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 | } | ||
| 442 | 460 | ||
| 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); | ||
| 1210 | 1231 | ||
| 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 | } | ||
| 1221 | 1248 | ||
| 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'); | ||
| 1306 | 1335 | ||
| 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 = ''; | ||
| 1317 | 1348 | ||
| 1318 | roleField.disabled = false; | 1349 | roleField.disabled = false; |
| 1319 | } | 1350 | } |