|
316 | 316 | <!-- Knowledge and MCP are mutually exclusive. Only disable knowledge when MCP is active |
317 | 317 | AND no knowledge exists. If both somehow exist (legacy data), allow editing both |
318 | 318 | so the user can remove one to resolve the conflict. --> |
319 | | - {@const hasAnyKnowledge = ($update.groups?.length ?? 0) > 0 || ($update.websites?.length ?? 0) > 0 || ($update.integration_knowledge_list?.length ?? 0) > 0} |
| 319 | + {@const hasAnyKnowledge = |
| 320 | + ($update.groups?.length ?? 0) > 0 || |
| 321 | + ($update.websites?.length ?? 0) > 0 || |
| 322 | + ($update.integration_knowledge_list?.length ?? 0) > 0} |
320 | 323 | {@const hasAnyMCP = ($update.mcp_servers?.length ?? 0) > 0} |
321 | 324 | {@const knowledgeDisabledByMCP = hasAnyMCP && !hasAnyKnowledge} |
322 | 325 | <Settings.Row |
|
332 | 335 | }} |
333 | 336 | > |
334 | 337 | {#if knowledgeDisabledByMCP} |
335 | | - <p class="label-warning border-label-default bg-label-dimmer text-label-stronger mb-2 rounded-md border px-2 py-1 text-sm"> |
336 | | - <span class="font-bold">{m.warning()}: </span>{m.knowledge_disabled_when_mcp_active()} |
| 338 | + <p |
| 339 | + class="label-warning border-label-default bg-label-dimmer text-label-stronger mb-2 rounded-md border px-2 py-1 text-sm" |
| 340 | + > |
| 341 | + <span class="font-bold">{m.warning()}: </span |
| 342 | + >{m.knowledge_disabled_when_mcp_active()} |
337 | 343 | </p> |
338 | 344 | {/if} |
339 | | - <div class={knowledgeDisabledByMCP ? 'opacity-50 pointer-events-none' : ''}> |
| 345 | + <div class={knowledgeDisabledByMCP ? "pointer-events-none opacity-50" : ""}> |
340 | 346 | <SelectKnowledgeV2 |
341 | 347 | originMode="personal" |
342 | 348 | bind:selectedWebsites={$update.websites} |
|
359 | 365 | }} |
360 | 366 | > |
361 | 367 | {#if knowledgeDisabledByMCP} |
362 | | - <p class="label-warning border-label-default bg-label-dimmer text-label-stronger mb-2 rounded-md border px-2 py-1 text-sm"> |
363 | | - <span class="font-bold">{m.warning()}: </span>{m.knowledge_disabled_when_mcp_active()} |
| 368 | + <p |
| 369 | + class="label-warning border-label-default bg-label-dimmer text-label-stronger mb-2 rounded-md border px-2 py-1 text-sm" |
| 370 | + > |
| 371 | + <span class="font-bold">{m.warning()}: </span |
| 372 | + >{m.knowledge_disabled_when_mcp_active()} |
364 | 373 | </p> |
365 | 374 | {/if} |
366 | | - <div class={knowledgeDisabledByMCP ? 'opacity-50 pointer-events-none' : ''}> |
| 375 | + <div class={knowledgeDisabledByMCP ? "pointer-events-none opacity-50" : ""}> |
367 | 376 | <SelectKnowledgeV2 |
368 | 377 | originMode="organization" |
369 | 378 | bind:selectedWebsites={$update.websites} |
|
427 | 436 |
|
428 | 437 | <!-- Same mutual exclusivity logic as above: only disable MCP when knowledge |
429 | 438 | is active AND no MCP exists. If both exist (legacy data), keep both editable. --> |
430 | | - {@const mcpDisabledByKnowledge = (($update.groups?.length ?? 0) > 0 || ($update.websites?.length ?? 0) > 0 || ($update.integration_knowledge_list?.length ?? 0) > 0) && ($update.mcp_servers?.length ?? 0) === 0} |
| 439 | + {@const mcpDisabledByKnowledge = |
| 440 | + (($update.groups?.length ?? 0) > 0 || |
| 441 | + ($update.websites?.length ?? 0) > 0 || |
| 442 | + ($update.integration_knowledge_list?.length ?? 0) > 0) && |
| 443 | + ($update.mcp_servers?.length ?? 0) === 0} |
431 | 444 | <Settings.Group title={m.mcp_servers()}> |
432 | 445 | <Settings.Row |
433 | 446 | title={m.mcp_servers()} |
434 | 447 | description={m.select_mcp_servers_description()} |
435 | | - hasChanges={$currentChanges.diff.mcp_servers !== undefined || $currentChanges.diff.mcp_tools !== undefined} |
| 448 | + hasChanges={$currentChanges.diff.mcp_servers !== undefined || |
| 449 | + $currentChanges.diff.mcp_tools !== undefined} |
436 | 450 | revertFn={() => { |
437 | 451 | discardChanges("mcp_servers"); |
438 | 452 | discardChanges("mcp_tools"); |
439 | 453 | }} |
440 | 454 | > |
441 | 455 | {#if mcpDisabledByKnowledge} |
442 | | - <p class="label-warning border-label-default bg-label-dimmer text-label-stronger mb-2 rounded-md border px-2 py-1 text-sm"> |
443 | | - <span class="font-bold">{m.warning()}: </span>{m.mcp_disabled_when_knowledge_active()} |
| 456 | + <p |
| 457 | + class="label-warning border-label-default bg-label-dimmer text-label-stronger mb-2 rounded-md border px-2 py-1 text-sm" |
| 458 | + > |
| 459 | + <span class="font-bold">{m.warning()}: </span |
| 460 | + >{m.mcp_disabled_when_knowledge_active()} |
444 | 461 | </p> |
445 | 462 | {/if} |
446 | | - <div class={mcpDisabledByKnowledge ? 'opacity-50 pointer-events-none' : ''}> |
447 | | - <SelectMCPServers bind:selectedMCPServers={$update.mcp_servers} bind:selectedMCPTools={$update.mcp_tools} selectedModel={$update.completion_model} /> |
| 463 | + <div class={mcpDisabledByKnowledge ? "pointer-events-none opacity-50" : ""}> |
| 464 | + <SelectMCPServers |
| 465 | + bind:selectedMCPServers={$update.mcp_servers} |
| 466 | + bind:selectedMCPTools={$update.mcp_tools} |
| 467 | + selectedModel={$update.completion_model} |
| 468 | + /> |
448 | 469 | </div> |
449 | | - </Settings.Row> |
| 470 | + </Settings.Row> |
450 | 471 | </Settings.Group> |
451 | 472 |
|
| 473 | + {#if $currentSpace.image_generation_models?.length > 0} |
| 474 | + <Settings.Group title={m.image_generation_models()}> |
| 475 | + <Settings.Row |
| 476 | + hasChanges={$currentChanges.diff.image_generation_enabled !== undefined} |
| 477 | + revertFn={() => { |
| 478 | + discardChanges("image_generation_enabled"); |
| 479 | + }} |
| 480 | + title={m.image_generation_toggle()} |
| 481 | + description={m.image_generation_toggle_description()} |
| 482 | + > |
| 483 | + <div class="border-default flex h-14 border-b py-2"> |
| 484 | + <Input.RadioSwitch |
| 485 | + bind:value={$update.image_generation_enabled} |
| 486 | + labelTrue={m.enable_image_generation()} |
| 487 | + labelFalse={m.disable_image_generation()} |
| 488 | + ></Input.RadioSwitch> |
| 489 | + </div> |
| 490 | + </Settings.Row> |
| 491 | + </Settings.Group> |
| 492 | + {/if} |
| 493 | + |
452 | 494 | <Settings.Group title={m.security_and_privacy()}> |
453 | 495 | <Settings.Row |
454 | 496 | hasChanges={$currentChanges.diff.data_retention_days !== undefined} |
|
0 commit comments