197 lines
8.2 KiB
TypeScript
197 lines
8.2 KiB
TypeScript
import type { MemoryProviderField } from '@/types/hermes'
|
||
|
||
type FieldCopy = Pick<MemoryProviderField, 'label'> &
|
||
Partial<Pick<MemoryProviderField, 'description' | 'info' | 'placeholder'>> & {
|
||
options?: Record<string, string | { label: string; description: string }>
|
||
}
|
||
|
||
const reasoning = { minimal: 'En az', low: 'Düşük', medium: 'Orta', high: 'Yüksek', max: 'En yüksek' }
|
||
|
||
/** Only presentation is translated; provider keys, credentials and enum values remain authoritative. */
|
||
export const TR_MEMORY_FIELDS: Record<string, Record<string, FieldCopy>> = {
|
||
honcho: {
|
||
apiKey: {
|
||
label: 'API anahtarı',
|
||
description: 'Honcho Cloud kimlik doğrulaması. Kendi sunucunuzdaki temel URL için gerekli değildir.',
|
||
placeholder: 'Honcho API anahtarını girin'
|
||
},
|
||
baseUrl: {
|
||
label: 'Temel URL',
|
||
description: 'Kendi sunucunuzdaki Honcho adresi. Belirtildiğinde ortam değişkenindeki adresin yerine kullanılır.',
|
||
placeholder: 'https://… (kendi sunucunuz)'
|
||
},
|
||
environment: {
|
||
label: 'Ortam',
|
||
description: 'Honcho ortamı. Temel URL belirtildiğinde kullanılmaz.',
|
||
options: { production: 'Bulut', local: 'Yerel' }
|
||
},
|
||
workspace: {
|
||
label: 'Çalışma alanı',
|
||
description: 'Honcho çalışma alanı kimliği. Varsayılan olarak profilin ana bilgisayarını kullanır.'
|
||
},
|
||
peerName: {
|
||
label: 'Kullanıcı kimliği',
|
||
description:
|
||
'Sabit kullanıcı kimliğiniz. Tek kullanıcılı kurulumlarda farklı platformların belleğini birleştirir.',
|
||
placeholder: 'ör. eri'
|
||
},
|
||
aiPeer: {
|
||
label: 'Yapay zekâ kimliği',
|
||
description: 'Yapay zekâ tarafının kimlik adı. Varsayılan olarak profilin ana bilgisayarını kullanır.'
|
||
},
|
||
sessionStrategy: {
|
||
label: 'Oturum stratejisi',
|
||
description: 'Konuşmaların Honcho oturumlarıyla nasıl eşleştirileceği.',
|
||
info: 'Oturum başına: her konuşma ayrı bir Honcho oturumu kullanır. Klasör başına: aynı çalışma klasöründeki konuşmalar ortak oturum kullanır. Depo başına: aynı Git deposundaki konuşmalar ortak oturum kullanır. Genel: tüm konuşmalar tek bir oturumu paylaşır.',
|
||
options: {
|
||
'per-session': 'Oturum başına',
|
||
'per-directory': 'Klasör başına',
|
||
'per-repo': 'Depo başına',
|
||
global: 'Genel'
|
||
}
|
||
},
|
||
timeout: {
|
||
label: 'İstek zaman aşımı',
|
||
description:
|
||
'Honcho HTTP istekleri için saniye cinsinden zaman aşımı. Boş bırakılırsa varsayılan süre kullanılır.'
|
||
},
|
||
pinUserPeer: {
|
||
label: 'Kullanıcı kimliğini sabitle',
|
||
description:
|
||
'Ağ geçidinin çalışma anındaki kimliği yerine belirtilen kullanıcı adını kullanır. Tek kullanıcılı kurulumlarda belleği birleştirir.'
|
||
},
|
||
runtimePeerPrefix: {
|
||
label: 'Çalışma anındaki kimlik öneki',
|
||
description: 'Ağ geçidinden gelen bilinmeyen kullanıcı kimliklerine eklenecek önek.',
|
||
placeholder: 'ör. telegram_'
|
||
},
|
||
userPeerAliases: {
|
||
label: 'Kullanıcı kimliği eşleştirmeleri',
|
||
description: 'Ağ geçidinin kullanıcı kimliklerini sabit Honcho kimlikleriyle eşleştirir.'
|
||
},
|
||
sessionPeerPrefix: {
|
||
label: 'Oturum kimliği öneki',
|
||
description: 'Oturum kimliği adlarının başına ana bilgisayar adını ekler.'
|
||
},
|
||
sessions: {
|
||
label: 'Özel oturum eşleştirmeleri',
|
||
description: 'Çözümleyici anahtarına göre kullanılacak oturum kimlikleri.'
|
||
},
|
||
saveMessages: { label: 'Mesajları kaydet', description: 'Konuşma mesajlarını Honcho üzerinde saklar.' },
|
||
writeFrequency: {
|
||
label: 'Yazma sıklığı',
|
||
description: 'Mesajların yazılacağı zaman: async, turn, session veya her N turda bir.',
|
||
info: 'async: mesajları geldikçe arka planda yazar. turn: her turun sonunda yazar. session: oturum sona erdiğinde yazar. N sayısı: her N turda bir yazar.'
|
||
},
|
||
dialecticReasoningLevel: {
|
||
label: 'Akıl yürütme düzeyi',
|
||
description: 'Diyalektik (peer.chat) çağrıları için akıl yürütme çabası.',
|
||
options: reasoning
|
||
},
|
||
dialecticDynamic: {
|
||
label: 'Dinamik akıl yürütme',
|
||
description: 'Modelin her çağrı için akıl yürütme düzeyini değiştirmesine izin verir.'
|
||
},
|
||
dialecticMaxChars: {
|
||
label: 'En fazla sonuç karakteri',
|
||
description: 'Sistem istemine eklenecek diyalektik sonucunun karakter sınırı.'
|
||
},
|
||
dialecticDepth: { label: 'Derinlik', description: 'Her döngüdeki diyalektik geçiş sayısı (1–3).' },
|
||
dialecticDepthLevels: {
|
||
label: 'Geçiş başına düzeyler',
|
||
description: 'Her geçişin akıl yürütme düzeyi; dizinin uzunluğu derinlik değeriyle eşleşmelidir.'
|
||
},
|
||
dialecticMaxInputChars: {
|
||
label: 'En fazla girdi karakteri',
|
||
description: 'peer.chat() çağrısına gönderilen sorgunun karakter sınırı.'
|
||
},
|
||
reasoningHeuristic: {
|
||
label: 'Uyarlanabilir akıl yürütme',
|
||
description: 'Uzun sorgularda akıl yürütme düzeyini yükseltir.'
|
||
},
|
||
reasoningLevelCap: {
|
||
label: 'Akıl yürütme üst sınırı',
|
||
description: 'Uyarlanabilir seçimde kullanılabilecek en yüksek akıl yürütme düzeyi.',
|
||
options: reasoning
|
||
},
|
||
recallMode: {
|
||
label: 'Bellekten getirme yöntemi',
|
||
description: 'Bellek bilgisinin getirilme yöntemi: karma, yalnızca bağlam veya yalnızca araçlar.',
|
||
info: 'Karma: otomatik eklenen bağlam ve gerektiğinde bellek araçları. Yalnızca bağlam: araçlar olmadan bağlama ekleme. Yalnızca araçlar: model belleği açıkça sorgular; bağlama otomatik ekleme yapılmaz.',
|
||
options: { hybrid: 'Karma', context: 'Yalnızca bağlam', tools: 'Yalnızca araçlar' }
|
||
},
|
||
contextTokens: {
|
||
label: 'Bağlam token sınırı',
|
||
description: 'Otomatik eklenen bağlam için token sınırı. Boş bırakılırsa sınır uygulanmaz.',
|
||
placeholder: '(sınırsız)'
|
||
},
|
||
initOnSessionStart: {
|
||
label: 'Oturum başında hazırla',
|
||
description: 'Araçlar modunda oturumu ilk araç çağrısını beklemeden başlangıçta hazırlar.'
|
||
},
|
||
messageMaxChars: {
|
||
label: 'Mesaj karakter sınırı',
|
||
description: 'Honcho’ya gönderilen her mesaj için en fazla karakter sayısı.'
|
||
},
|
||
observationMode: {
|
||
label: 'Gözlem yöntemi',
|
||
description:
|
||
'Kimlik başına gözlem ön ayarı. Yönlü gözlem tüm yönleri izler; birleşik gözlem ortak bir görünüm kullanır.',
|
||
options: { directional: 'Yönlü', unified: 'Birleşik' }
|
||
}
|
||
},
|
||
hindsight: {
|
||
mode: {
|
||
label: 'Bağlantı yöntemi',
|
||
description: 'AITURK’ün Hindsight ile bağlantı kurma yöntemi.',
|
||
options: {
|
||
cloud: { label: 'Bulut', description: 'Hindsight Cloud API; yalnızca API anahtarı gerektirir.' },
|
||
local_external: { label: 'Mevcut yerel sunucu', description: 'Çalışan bir Hindsight sunucusuna bağlanır.' }
|
||
}
|
||
},
|
||
api_key: {
|
||
label: 'API anahtarı',
|
||
description: 'Hindsight API kimlik doğrulaması için kullanılır.',
|
||
placeholder: 'Hindsight API anahtarını girin'
|
||
},
|
||
api_url: { label: 'API adresi' },
|
||
bank_id: { label: 'Bellek bankası kimliği' },
|
||
recall_budget: { label: 'Bellekten getirme bütçesi', options: { low: 'Düşük', mid: 'Orta', high: 'Yüksek' } }
|
||
}
|
||
}
|
||
|
||
const GROUPS: Record<string, string> = {
|
||
Connection: 'Bağlantı',
|
||
Identity: 'Kimlik',
|
||
Session: 'Oturum',
|
||
'Message writing': 'Mesajların yazılması',
|
||
Dialectic: 'Diyalektik',
|
||
Reasoning: 'Akıl yürütme',
|
||
Recall: 'Bellekten getirme',
|
||
Limits: 'Sınırlar',
|
||
Observation: 'Gözlem'
|
||
}
|
||
|
||
export function localizeMemoryField(provider: string, field: MemoryProviderField, locale: string): MemoryProviderField {
|
||
const copy = locale === 'tr' ? TR_MEMORY_FIELDS[provider]?.[field.key] : undefined
|
||
|
||
if (!copy) {
|
||
return field
|
||
}
|
||
|
||
const { options, ...text } = copy
|
||
|
||
return {
|
||
...field,
|
||
...text,
|
||
group: GROUPS[field.group] ?? field.group,
|
||
options: field.options.map(option => {
|
||
const translated = options?.[option.value]
|
||
|
||
return translated
|
||
? { ...option, ...(typeof translated === 'string' ? { label: translated } : translated) }
|
||
: option
|
||
})
|
||
}
|
||
}
|