Expand AITURK Turkish settings and desktop surfaces for beta 5
This commit is contained in:
@@ -157,6 +157,8 @@ interface StaleAuxWarningProps {
|
||||
// $0-balance provider after switching main away from it) and offers the
|
||||
// existing one-click reset rather than auto-clearing legitimate pins.
|
||||
function StaleAuxWarning({ applying, onReset, slots, taskLabel }: StaleAuxWarningProps) {
|
||||
const { t } = useI18n()
|
||||
|
||||
if (!slots.length) {
|
||||
return null
|
||||
}
|
||||
@@ -169,11 +171,14 @@ function StaleAuxWarning({ applying, onReset, slots, taskLabel }: StaleAuxWarnin
|
||||
<div className="flex flex-wrap items-center gap-2 rounded-md border border-amber-500/40 bg-amber-500/10 px-3 py-2 text-xs text-amber-200">
|
||||
<AlertTriangle className="size-3.5 shrink-0" />
|
||||
<span className="grow">
|
||||
{slots.length} auxiliary task{slots.length === 1 ? '' : 's'} ({names}) still run on{' '}
|
||||
<span className="font-mono">{allSameProvider ? provider : 'other providers'}</span>, not your main model.
|
||||
{t.settings.runtime.auxiliaryWarning(
|
||||
slots.length,
|
||||
names,
|
||||
allSameProvider ? provider : t.settings.runtime.otherProviders
|
||||
)}
|
||||
</span>
|
||||
<Button disabled={applying} onClick={onReset} size="sm" variant="textStrong">
|
||||
Reset all to main
|
||||
{t.settings.model.resetAllToMain}
|
||||
</Button>
|
||||
</div>
|
||||
)
|
||||
@@ -852,7 +857,9 @@ export function ModelSettings({ onMainModelChanged, scopeProfile }: ModelSetting
|
||||
void activateApiKeyProvider()
|
||||
}
|
||||
}}
|
||||
placeholder={`Paste ${selectedProviderRow?.key_env ?? 'API key'}`}
|
||||
placeholder={t.settings.runtime.pasteProviderKey(
|
||||
selectedProviderRow?.key_env ?? t.settings.runtime.apiKey
|
||||
)}
|
||||
type="password"
|
||||
value={apiKeyDraft}
|
||||
/>
|
||||
@@ -862,12 +869,12 @@ export function ModelSettings({ onMainModelChanged, scopeProfile }: ModelSetting
|
||||
size="sm"
|
||||
>
|
||||
{activating && <Loader2 className="size-3.5 animate-spin" />}
|
||||
{activating ? 'Activating...' : 'Activate'}
|
||||
{activating ? t.settings.runtime.activatingProvider : t.settings.runtime.activateProvider}
|
||||
</Button>
|
||||
</>
|
||||
) : (
|
||||
<Button onClick={startProviderSetup} size="sm" variant="textStrong">
|
||||
Set up {selectedProviderRow?.name ?? 'provider'}
|
||||
{t.settings.runtime.setupProvider(selectedProviderRow?.name ?? t.settings.runtime.provider)}
|
||||
</Button>
|
||||
)
|
||||
) : (
|
||||
@@ -1085,15 +1092,12 @@ export function ModelSettings({ onMainModelChanged, scopeProfile }: ModelSetting
|
||||
</section>
|
||||
{moa && currentMoaPreset && (
|
||||
<section>
|
||||
<SectionHeading icon={Cpu} title="Mixture of Agents" />
|
||||
<p className="mb-2 text-xs text-muted-foreground">
|
||||
Configure named presets that appear as models under the Mixture of Agents provider. The aggregator is the
|
||||
acting model.
|
||||
</p>
|
||||
<SectionHeading icon={Cpu} title={t.settings.runtime.moa.title} />
|
||||
<p className="mb-2 text-xs text-muted-foreground">{t.settings.runtime.moa.description}</p>
|
||||
<div className="mb-2 flex flex-wrap items-center gap-2">
|
||||
<Select onValueChange={setSelectedMoaPreset} value={selectedMoaPreset || moa.default_preset}>
|
||||
<SelectTrigger className={cn('min-w-40', CONTROL_TEXT)}>
|
||||
<SelectValue placeholder="Preset" />
|
||||
<SelectValue placeholder={t.settings.runtime.moa.preset} />
|
||||
</SelectTrigger>
|
||||
<SelectContent>
|
||||
{Object.keys(moa.presets).map(name => (
|
||||
@@ -1104,7 +1108,7 @@ export function ModelSettings({ onMainModelChanged, scopeProfile }: ModelSetting
|
||||
</SelectContent>
|
||||
</Select>
|
||||
<label className="flex items-center gap-2 rounded-sm border border-border px-2 py-1 text-xs">
|
||||
Enabled
|
||||
{t.settings.runtime.moa.enabled}
|
||||
<Switch
|
||||
checked={currentMoaPreset.enabled !== false}
|
||||
disabled={applying}
|
||||
@@ -1125,7 +1129,7 @@ export function ModelSettings({ onMainModelChanged, scopeProfile }: ModelSetting
|
||||
size="sm"
|
||||
variant="text"
|
||||
>
|
||||
Set default
|
||||
{t.settings.runtime.moa.setDefault}
|
||||
</Button>
|
||||
<Button
|
||||
disabled={Object.keys(moa.presets).length <= 1 || applying}
|
||||
@@ -1151,12 +1155,12 @@ export function ModelSettings({ onMainModelChanged, scopeProfile }: ModelSetting
|
||||
size="sm"
|
||||
variant="ghost"
|
||||
>
|
||||
Delete
|
||||
{t.common.delete}
|
||||
</Button>
|
||||
<Input
|
||||
className={cn('w-40', CONTROL_TEXT)}
|
||||
onChange={event => setNewMoaPresetName(event.target.value)}
|
||||
placeholder="new preset"
|
||||
placeholder={t.settings.runtime.moa.newPreset}
|
||||
value={newMoaPresetName}
|
||||
/>
|
||||
<Button
|
||||
@@ -1179,18 +1183,18 @@ export function ModelSettings({ onMainModelChanged, scopeProfile }: ModelSetting
|
||||
size="sm"
|
||||
variant="textStrong"
|
||||
>
|
||||
Add preset
|
||||
{t.settings.runtime.moa.addPreset}
|
||||
</Button>
|
||||
</div>
|
||||
<div className="mb-2 text-xs text-muted-foreground">
|
||||
Default: <span className="font-mono">{moa.default_preset}</span>
|
||||
{t.settings.runtime.moa.default} <span className="font-mono">{moa.default_preset}</span>
|
||||
</div>
|
||||
<div className="grid gap-1">
|
||||
{currentMoaPreset.reference_models.map((slot, index) => (
|
||||
<ListRow
|
||||
action={
|
||||
<Switch
|
||||
aria-label={`${slot.enabled !== false ? 'Disable' : 'Enable'} reference ${index + 1}`}
|
||||
aria-label={t.settings.runtime.moa.toggleReference(index + 1, slot.enabled === false)}
|
||||
checked={slot.enabled !== false}
|
||||
disabled={applying}
|
||||
onCheckedChange={checked =>
|
||||
@@ -1267,7 +1271,7 @@ export function ModelSettings({ onMainModelChanged, scopeProfile }: ModelSetting
|
||||
size="sm"
|
||||
variant="ghost"
|
||||
>
|
||||
Remove
|
||||
{t.common.remove}
|
||||
</Button>
|
||||
</div>
|
||||
}
|
||||
@@ -1278,7 +1282,7 @@ export function ModelSettings({ onMainModelChanged, scopeProfile }: ModelSetting
|
||||
</span>
|
||||
}
|
||||
key={`${selectedMoaPreset}-${index}`}
|
||||
title={`Reference ${index + 1}`}
|
||||
title={t.settings.runtime.moa.reference(index + 1)}
|
||||
/>
|
||||
))}
|
||||
<Button
|
||||
@@ -1292,7 +1296,7 @@ export function ModelSettings({ onMainModelChanged, scopeProfile }: ModelSetting
|
||||
size="sm"
|
||||
variant="textStrong"
|
||||
>
|
||||
Add reference model
|
||||
{t.settings.runtime.moa.addReference}
|
||||
</Button>
|
||||
<ListRow
|
||||
below={
|
||||
@@ -1354,7 +1358,7 @@ export function ModelSettings({ onMainModelChanged, scopeProfile }: ModelSetting
|
||||
{currentMoaPreset.aggregator.provider} · {currentMoaPreset.aggregator.model}
|
||||
</span>
|
||||
}
|
||||
title="Aggregator"
|
||||
title={t.settings.runtime.moa.aggregator}
|
||||
/>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
Reference in New Issue
Block a user