sync: update from private repo (e62f5c7)
CI / build-and-test (push) Has been cancelled

This commit is contained in:
oss-sync
2026-06-11 01:52:48 +00:00
parent 000a2474aa
commit d061ad08d8
237 changed files with 8441 additions and 5549 deletions
+29 -74
View File
@@ -1,3 +1,4 @@
import { useTranslation } from 'react-i18next';
import { HelpText } from './HelpText';
import { FieldLabel, FieldInput } from './formUtils';
import type { SectionFormProps } from './types';
@@ -11,6 +12,7 @@ import type { SectionFormProps } from './types';
* sibling subtabs of `SshForm`.
*/
export function SshConfigForm({ config, onChange, overriddenByEnv: _overriddenByEnv }: SectionFormProps) {
const { t } = useTranslation('settings');
const ssh = config.ssh ?? {};
const console_ = ssh.console ?? {};
@@ -24,13 +26,9 @@ export function SshConfigForm({ config, onChange, overriddenByEnv: _overriddenBy
onChange={e => onChange('ssh.enabled', e.target.checked)}
className="rounded"
/>
SSH
{t('ssh.config.enableLabel')}
</label>
<HelpText>
OFF SshExec / SshUpload / SshDownload / SshConsole*
API router <code className="font-mono">MCP_ENCRYPTION_KEY</code>
( ON subsystem disabled )
</HelpText>
<HelpText>{t('ssh.config.enableHelp')}</HelpText>
</div>
<div>
@@ -41,13 +39,9 @@ export function SshConfigForm({ config, onChange, overriddenByEnv: _overriddenBy
onChange={e => onChange('ssh.allowPrivateAddresses', e.target.checked)}
className="rounded"
/>
/ loopback
{t('ssh.config.allowPrivateLabel')}
</label>
<HelpText>
self-hosted / LAN OFF <code className="font-mono">10.x</code>,
<code className="font-mono">192.168.x</code>, <code className="font-mono">127.0.0.1</code>
private reject
</HelpText>
<HelpText>{t('ssh.config.allowPrivateHelp')}</HelpText>
</div>
<div>
@@ -58,12 +52,9 @@ export function SshConfigForm({ config, onChange, overriddenByEnv: _overriddenBy
onChange={e => onChange('ssh.adminBypassesGrants', e.target.checked)}
className="rounded"
/>
Admin grant
{t('ssh.config.adminBypassLabel')}
</label>
<HelpText>
ON: admin role user per-connection grant
()OFF: admin grant
</HelpText>
<HelpText>{t('ssh.config.adminBypassHelp')}</HelpText>
</div>
<h3 className="text-sm font-medium text-slate-600 mt-6 pt-3 border-t border-slate-200">
@@ -71,16 +62,13 @@ export function SshConfigForm({ config, onChange, overriddenByEnv: _overriddenBy
</h3>
<div>
<FieldLabel>Call timeout ()</FieldLabel>
<FieldLabel>{t('ssh.config.callTimeout')}</FieldLabel>
<FieldInput
type="number"
value={ssh.callTimeoutSeconds ?? 30}
onChange={v => onChange('ssh.callTimeoutSeconds', Number(v))}
/>
<HelpText>
SshExec / SshUpload / SshDownload wall-clock (TCP connect + auth + )
30SshConsole* ( idle/duration cap )
</HelpText>
<HelpText>{t('ssh.config.callTimeoutHelp')}</HelpText>
</div>
<div>
@@ -90,10 +78,7 @@ export function SshConfigForm({ config, onChange, overriddenByEnv: _overriddenBy
value={ssh.maxOutputBytes ?? 32768}
onChange={v => onChange('ssh.maxOutputBytes', Number(v))}
/>
<HelpText>
SshExec stdout/stderr truncate
<code className="font-mono">truncated_stdout: true</code> 32768 (32 KiB)
</HelpText>
<HelpText>{t('ssh.config.maxOutputHelp')}</HelpText>
</div>
<div className="grid grid-cols-2 gap-3">
@@ -114,32 +99,26 @@ export function SshConfigForm({ config, onChange, overriddenByEnv: _overriddenBy
/>
</div>
</div>
<HelpText>SshUpload / SshDownload reject</HelpText>
<HelpText>{t('ssh.config.transferSizeHelp')}</HelpText>
<div>
<FieldLabel>Audit retention ()</FieldLabel>
<FieldLabel>{t('ssh.config.auditRetention')}</FieldLabel>
<FieldInput
type="number"
value={ssh.auditRetentionDays ?? 90}
onChange={v => onChange('ssh.auditRetentionDays', Number(v))}
/>
<HelpText>
<code className="font-mono">ssh_audit_log</code> Audit tab
"Prune"
</HelpText>
<HelpText>{t('ssh.config.auditRetentionHelp')}</HelpText>
</div>
<h3 className="text-sm font-medium text-slate-600 mt-6 pt-3 border-t border-slate-200">
Abuse detection
</h3>
<HelpText>
/ /
<code className="font-mono">abuse_locked</code> reject
</HelpText>
<HelpText>{t('ssh.config.abuseHelp')}</HelpText>
<div className="grid grid-cols-3 gap-3">
<div>
<FieldLabel>Window ()</FieldLabel>
<FieldLabel>{t('ssh.config.abuseWindow')}</FieldLabel>
<FieldInput
type="number"
value={ssh.abuseWindowMinutes ?? 10}
@@ -155,7 +134,7 @@ export function SshConfigForm({ config, onChange, overriddenByEnv: _overriddenBy
/>
</div>
<div>
<FieldLabel>Lock duration ()</FieldLabel>
<FieldLabel>{t('ssh.config.abuseLock')}</FieldLabel>
<FieldInput
type="number"
value={ssh.abuseLockMinutes ?? 30}
@@ -165,7 +144,7 @@ export function SshConfigForm({ config, onChange, overriddenByEnv: _overriddenBy
</div>
<h3 className="text-sm font-medium text-slate-600 mt-6 pt-3 border-t border-slate-200">
Interactive Console (SSH / SshConsole* tools)
{t('ssh.config.consoleSectionTitle')}
</h3>
<div>
@@ -176,39 +155,29 @@ export function SshConfigForm({ config, onChange, overriddenByEnv: _overriddenBy
onChange={e => onChange('ssh.console.enabled', e.target.checked)}
className="rounded"
/>
Console
{t('ssh.config.consoleEnableLabel')}
</label>
<HelpText>
OFF SshConsole* tools <code className="font-mono">SSH</code>
"SSH 機能を有効化する" <code className="font-mono">MCP_ENCRYPTION_KEY</code>
</HelpText>
<HelpText>{t('ssh.config.consoleEnableHelp')}</HelpText>
</div>
<div className="grid grid-cols-2 gap-3">
<div>
<FieldLabel>Idle timeout ()</FieldLabel>
<FieldLabel>{t('ssh.config.idleTimeout')}</FieldLabel>
<FieldInput
type="number"
value={console_.idleTimeoutSeconds ?? 1800}
onChange={v => onChange('ssh.console.idleTimeoutSeconds', Number(v))}
/>
<HelpText>
I/O auto-close AI
activity 1800 (30 )
</HelpText>
<HelpText>{t('ssh.config.idleTimeoutHelp')}</HelpText>
</div>
<div>
<FieldLabel>Max session duration ()</FieldLabel>
<FieldLabel>{t('ssh.config.maxSessionDuration')}</FieldLabel>
<FieldInput
type="number"
value={console_.maxSessionDurationSeconds ?? 14400}
onChange={v => onChange('ssh.console.maxSessionDurationSeconds', Number(v))}
/>
<HelpText>
1 Idle close
14400 (4 )
</HelpText>
<HelpText>{t('ssh.config.maxDurationHelp')}</HelpText>
</div>
</div>
@@ -219,10 +188,7 @@ export function SshConfigForm({ config, onChange, overriddenByEnv: _overriddenBy
value={console_.scrollbackBytes ?? 524288}
onChange={v => onChange('ssh.console.scrollbackBytes', Number(v))}
/>
<HelpText>
PTY
replay 524288 (512 KiB)
</HelpText>
<HelpText>{t('ssh.config.scrollbackHelp')}</HelpText>
</div>
<div>
@@ -232,10 +198,7 @@ export function SshConfigForm({ config, onChange, overriddenByEnv: _overriddenBy
value={console_.maxSessionsPerConnection ?? 3}
onChange={v => onChange('ssh.console.maxSessionsPerConnection', Number(v))}
/>
<HelpText>
使
<code className="font-mono">session_cap_evict</code> close
</HelpText>
<HelpText>{t('ssh.config.maxSessionsHelp')}</HelpText>
</div>
<div>
@@ -245,10 +208,7 @@ export function SshConfigForm({ config, onChange, overriddenByEnv: _overriddenBy
value={console_.maxInputBytesPerSend ?? 16384}
onChange={v => onChange('ssh.console.maxInputBytesPerSend', Number(v))}
/>
<HelpText>
1 <code className="font-mono">SshConsoleSend</code>
16384 (16 KiB)
</HelpText>
<HelpText>{t('ssh.config.maxInputHelp')}</HelpText>
</div>
<div>
@@ -258,10 +218,7 @@ export function SshConfigForm({ config, onChange, overriddenByEnv: _overriddenBy
value={console_.autoInjectScreenLines ?? 24}
onChange={v => onChange('ssh.console.autoInjectScreenLines', Number(v))}
/>
<HelpText>
LLM iteration system prompt screen
AI context 24
</HelpText>
<HelpText>{t('ssh.config.autoInjectHelp')}</HelpText>
</div>
<div className="grid grid-cols-2 gap-3">
@@ -282,9 +239,7 @@ export function SshConfigForm({ config, onChange, overriddenByEnv: _overriddenBy
/>
</div>
</div>
<HelpText>
PTY resize
</HelpText>
<HelpText>{t('ssh.config.ptySizeHelp')}</HelpText>
</div>
);
}