import { HelpText } from './HelpText';
import { FieldLabel, FieldInput } from './formUtils';
import type { SectionFormProps } from './types';

export function SafetyForm({ config, onChange }: SectionFormProps) {
  const safety = config.safety ?? {};
  const historySummarization = safety.historySummarization ?? {};

  return (
    <div className="space-y-5">
      <h2 className="text-base font-semibold text-slate-800">Safety</h2>

      <div>
        <FieldLabel>Max Iterations</FieldLabel>
        <FieldInput type="number" value={safety.maxIterations ?? 200}
          onChange={v => onChange('safety.maxIterations', Number(v))} />
        <HelpText>1 movement あたりの最大イテレーション回数。デフォルト: 200</HelpText>
      </div>

      <div>
        <FieldLabel>Max Revisits</FieldLabel>
        <FieldInput type="number" value={safety.maxRevisits ?? 3}
          onChange={v => onChange('safety.maxRevisits', Number(v))} />
        <HelpText>同一 movement への再訪問上限（ループ検出）。デフォルト: 3</HelpText>
      </div>

      <div>
        <FieldLabel>Max Tool Loop Repeats</FieldLabel>
        <FieldInput type="number" value={safety.maxToolLoopRepeats ?? 5}
          onChange={v => onChange('safety.maxToolLoopRepeats', Number(v))} />
        <HelpText>同一 movement 内で全く同じツール呼び出し（ツール名＋引数）を連続で繰り返した回数がこの値に達したら、ループとみなして強制中断する（2以上、デフォルト: 5）。手前で1回エージェントに警告を注入する</HelpText>
      </div>

      <div>
        <FieldLabel>Prompt Guard Ratio</FieldLabel>
        <FieldInput type="number" value={safety.promptGuardRatio ?? 0.8}
          onChange={v => onChange('safety.promptGuardRatio', v ? Number(v) : undefined)} />
        <HelpText>送信前に prompt がコンテキスト上限の何割を占めたら自動圧縮するか（0.5〜0.95、デフォルト: 0.8）</HelpText>
      </div>

      <h3 className="text-sm font-medium text-slate-600 mt-4 pt-3 border-t border-slate-200">History Summarization</h3>

      <div>
        <label className="flex items-center gap-2 text-sm text-slate-700">
          <input
            type="checkbox"
            checked={historySummarization.enabled !== false}
            onChange={e => onChange('safety.historySummarization.enabled', e.target.checked)}
            className="rounded"
          />
          履歴の自動要約を有効化
        </label>
        <HelpText>古い会話履歴を自動で要約して context を節約。デフォルト: 有効</HelpText>
      </div>

      <div>
        <FieldLabel>Tail Turns</FieldLabel>
        <FieldInput type="number" value={historySummarization.tailTurns ?? 2}
          onChange={v => onChange('safety.historySummarization.tailTurns', Number(v))} />
        <HelpText>常に保持する直近の assistant+tool ターン数。デフォルト: 2</HelpText>
      </div>

      <div>
        <FieldLabel>Preserve Recent Budget</FieldLabel>
        <FieldInput type="number" value={historySummarization.preserveRecentBudget ?? 8000}
          onChange={v => onChange('safety.historySummarization.preserveRecentBudget', Number(v))} />
        <HelpText>要約せず温存する直近メッセージのトークン予算。デフォルト: 8000</HelpText>
      </div>
    </div>
  );
}
