This commit is contained in:
Timothy Jaeryang Baek
2026-04-12 16:47:23 -05:00
parent 0753409e7b
commit 47d413ce7b
7 changed files with 65 additions and 95 deletions
@@ -25,6 +25,7 @@
import DefaultFeatures from './DefaultFeatures.svelte';
import BuiltinTools from './BuiltinTools.svelte';
import PromptSuggestions from './PromptSuggestions.svelte';
import TerminalSelector from './TerminalSelector.svelte';
import AccessControlModal from '../common/AccessControlModal.svelte';
import LockClosed from '$lib/components/icons/LockClosed.svelte';
import { updateModelAccessGrants } from '$lib/apis/models';
@@ -102,6 +103,7 @@
let actionIds = [];
let accessGrants = [];
let terminalId = '';
let tts = { voice: '' };
const submitHandler = async () => {
@@ -206,6 +208,14 @@
}
}
if (terminalId) {
info.meta.terminalId = terminalId;
} else {
if (info.meta.terminalId) {
delete info.meta.terminalId;
}
}
if (tts.voice !== '') {
if (!info.meta.tts) info.meta.tts = {};
info.meta.tts.voice = tts.voice;
@@ -316,6 +326,7 @@
capabilities = { ...capabilities, ...(model?.meta?.capabilities ?? {}) };
defaultFeatureIds = model?.meta?.defaultFeatureIds ?? defaultFeatureIds;
builtinTools = model?.meta?.builtinTools ?? builtinTools;
terminalId = model?.meta?.terminalId ?? '';
tts = { voice: model?.meta?.tts?.voice ?? '' };
accessGrants = model?.access_grants ?? [];
@@ -828,6 +839,10 @@
</div>
{/if}
<div class="my-4">
<TerminalSelector bind:terminalId />
</div>
<div class="my-4">
<div class="flex w-full justify-between mb-1">
<div class="self-center text-xs font-medium text-gray-500">
@@ -0,0 +1,30 @@
<script lang="ts">
import { getContext, onMount } from 'svelte';
import { getTerminalServers, type TerminalServer } from '$lib/apis/terminal';
const i18n = getContext('i18n');
export let terminalId: string = '';
let terminals: TerminalServer[] = [];
onMount(async () => {
terminals = await getTerminalServers(localStorage.token);
});
</script>
{#if terminals.length > 0}
<div class="flex w-full justify-between mb-1">
<div class="self-center text-xs font-medium text-gray-500">{$i18n.t('Terminal')}</div>
</div>
<select
class="w-full text-sm bg-transparent outline-hidden cursor-pointer"
bind:value={terminalId}
>
<option value="">{$i18n.t('None')}</option>
{#each terminals as terminal (terminal.id)}
<option value={terminal.id}>{terminal.name || terminal.id}</option>
{/each}
</select>
{/if}