diff --git a/client/src/components/Assistant/assistantParts.ts b/client/src/components/Assistant/assistantParts.ts index f63d617be..65952731a 100644 --- a/client/src/components/Assistant/assistantParts.ts +++ b/client/src/components/Assistant/assistantParts.ts @@ -146,6 +146,22 @@ function rememberedNote(part: Extract (p.type === 'text' ? p.text : '')).join(' '); + const places = namedFirst( + found.places.filter((place) => !proposed(place, effects)), + text + ); + if (!places || places.length === 0) return null; + return { kind: 'places', key: `places-${index}`, found: { ...found, places } }; +} + /** Every day the answer's weather steps looked up, one entry per date (the later look wins), by date. */ function weatherDays(parts: readonly AssistantMessagePart[]): AssistantWeatherDay[] { const byDate = new Map(); @@ -319,14 +335,8 @@ export function messageBlocks( return; } if (part.type === 'data-trek-places' && index === lastPlaces && !placesHidden) { - const found = allFound(message.parts); - const text = message.parts.map((p) => (p.type === 'text' ? p.text : '')).join(' '); - const places = namedFirst( - found.places.filter((place) => !proposed(place, effects)), - text - ); - if (places && places.length > 0) - blocks.push({ kind: 'places', key: `places-${index}`, found: { ...found, places } }); + const strip = placesBlock(message, effects, index); + if (strip) blocks.push(strip); return; } if (part.type === 'data-trek-sources') { diff --git a/server/src/nest/assistant/cards/packing/tour-packing-undo.ts b/server/src/nest/assistant/cards/packing/tour-packing-undo.ts index 8f6bad297..7c53a0567 100644 --- a/server/src/nest/assistant/cards/packing/tour-packing-undo.ts +++ b/server/src/nest/assistant/cards/packing/tour-packing-undo.ts @@ -55,7 +55,10 @@ export const UNLINK_TOUR_PACKING: ToolCards = { return { placeId: args.placeId, category: typeof category === 'string' ? category : null }; }, reads: (args) => [{ tool: 'get_tour_packing', args: { placeId: args.placeId } }], - unchanged: (_result, snapshot, call?: UndoCall) => - !!call && linkedCategory(readOf(snapshot, 'get_tour_packing', { placeId: call.args.placeId })) === undefined, + // Only a link there was can go back, and only while the tour points at nothing since. + unchanged: (result, snapshot, call?: UndoCall) => + !!call && + linkedCategory({ packing_link: recordOf(result).previous_link }) !== undefined && + linkedCategory(readOf(snapshot, 'get_tour_packing', { placeId: call.args.placeId })) === undefined, }, }; diff --git a/server/src/nest/assistant/cards/tour/tour-writes.cards.ts b/server/src/nest/assistant/cards/tour/tour-writes.cards.ts index 6ac354590..019b49cc6 100644 --- a/server/src/nest/assistant/cards/tour/tour-writes.cards.ts +++ b/server/src/nest/assistant/cards/tour/tour-writes.cards.ts @@ -1,6 +1,6 @@ import type { Described, PreviewContext, ToolArgs, ToolCards, UndoCall, UndoSnapshot } from '../card-types'; import { argId, readKey, recordOf, type Row } from '../card-values'; -import { Rows, text } from '../preview-format'; +import { Rows } from '../preview-format'; /** * The smaller writes on a saved tour, each with its card and, where the answer diff --git a/shared/src/i18n/ar/assistant.ts b/shared/src/i18n/ar/assistant.ts index 77b2042d8..bdb7b7e87 100644 --- a/shared/src/i18n/ar/assistant.ts +++ b/shared/src/i18n/ar/assistant.ts @@ -259,7 +259,8 @@ const assistant: TranslationStrings = { 'assistant.admin.dailyLimitHint': 'يُحتسب فقط ما دمت أنت من يدفع.', 'assistant.admin.retention': 'الاحتفاظ بالمحادثات', 'assistant.admin.webSearch': 'البحث في الويب', - 'assistant.admin.webSearchHint': 'يمكن للمساعد البحث في الويب (التقييمات وأوقات العمل والفعاليات) عبر بحث مزوّد الذكاء الاصطناعي الذي يتحدث إليه. يعمل مع ChatGPT وAnthropic وOpenRouter، ولا تذهب عمليات البحث إلا إلى ذلك المزوّد.', + 'assistant.admin.webSearchHint': + 'يمكن للمساعد البحث في الويب (التقييمات وأوقات العمل والفعاليات) عبر بحث مزوّد الذكاء الاصطناعي الذي يتحدث إليه. يعمل مع ChatGPT وAnthropic وOpenRouter، ولا تذهب عمليات البحث إلا إلى ذلك المزوّد.', 'assistant.admin.retentionDays': '{count} يوم', 'assistant.admin.retentionDays.zero': '{count} يوم', 'assistant.admin.retentionDays.one': 'يوم واحد', diff --git a/shared/src/i18n/az/assistant.ts b/shared/src/i18n/az/assistant.ts index 76bac8977..aeb050857 100644 --- a/shared/src/i18n/az/assistant.ts +++ b/shared/src/i18n/az/assistant.ts @@ -246,7 +246,8 @@ const assistant: TranslationStrings = { 'assistant.admin.dailyLimitHint': 'Yalnız siz ödədiyiniz müddətdə sayılır.', 'assistant.admin.retention': 'Söhbətləri saxla', 'assistant.admin.webSearch': 'Veb axtarış', - 'assistant.admin.webSearchHint': 'Assistent danışdığı Sİ provayderinin axtarışı ilə internetdə məlumat axtara bilər (rəylər, iş saatları, tədbirlər). ChatGPT, Anthropic və OpenRouter ilə işləyir; axtarışlar yalnız həmin provayderə gedir.', + 'assistant.admin.webSearchHint': + 'Assistent danışdığı Sİ provayderinin axtarışı ilə internetdə məlumat axtara bilər (rəylər, iş saatları, tədbirlər). ChatGPT, Anthropic və OpenRouter ilə işləyir; axtarışlar yalnız həmin provayderə gedir.', 'assistant.admin.retentionDays': '{count} gün', 'assistant.admin.retentionDays.one': '{count} gün', 'assistant.admin.retentionForever': 'Həmişəlik', diff --git a/shared/src/i18n/br/assistant.ts b/shared/src/i18n/br/assistant.ts index cf2c6e644..77ce328d4 100644 --- a/shared/src/i18n/br/assistant.ts +++ b/shared/src/i18n/br/assistant.ts @@ -246,7 +246,8 @@ const assistant: TranslationStrings = { 'assistant.admin.dailyLimitHint': 'Só conta enquanto você paga.', 'assistant.admin.retention': 'Manter chats', 'assistant.admin.webSearch': 'Pesquisa na web', - 'assistant.admin.webSearchHint': 'O assistente pode pesquisar na web (avaliações, horários, eventos) pela busca do provedor de IA com que conversa. Funciona com ChatGPT, Anthropic e OpenRouter; as buscas vão só para esse provedor.', + 'assistant.admin.webSearchHint': + 'O assistente pode pesquisar na web (avaliações, horários, eventos) pela busca do provedor de IA com que conversa. Funciona com ChatGPT, Anthropic e OpenRouter; as buscas vão só para esse provedor.', 'assistant.admin.retentionDays': '{count} dias', 'assistant.admin.retentionDays.one': '{count} dia', 'assistant.admin.retentionForever': 'Para sempre', diff --git a/shared/src/i18n/ca/assistant.ts b/shared/src/i18n/ca/assistant.ts index 5a21ad87c..171a0fab6 100644 --- a/shared/src/i18n/ca/assistant.ts +++ b/shared/src/i18n/ca/assistant.ts @@ -248,7 +248,8 @@ const assistant: TranslationStrings = { 'assistant.admin.dailyLimitHint': 'Només compta mentre pagues tu.', 'assistant.admin.retention': 'Conserva els xats', 'assistant.admin.webSearch': 'Cerca web', - 'assistant.admin.webSearchHint': 'L’assistent pot consultar el web (ressenyes, horaris, esdeveniments) amb la cerca del proveïdor d’IA amb qui parla. Funciona amb ChatGPT, Anthropic i OpenRouter; les cerques només van a aquest proveïdor.', + 'assistant.admin.webSearchHint': + 'L’assistent pot consultar el web (ressenyes, horaris, esdeveniments) amb la cerca del proveïdor d’IA amb qui parla. Funciona amb ChatGPT, Anthropic i OpenRouter; les cerques només van a aquest proveïdor.', 'assistant.admin.retentionDays': '{count} dies', 'assistant.admin.retentionDays.one': '{count} dia', 'assistant.admin.retentionForever': 'Per sempre', diff --git a/shared/src/i18n/cs/assistant.ts b/shared/src/i18n/cs/assistant.ts index 4556bb1c0..ee34980df 100644 --- a/shared/src/i18n/cs/assistant.ts +++ b/shared/src/i18n/cs/assistant.ts @@ -249,7 +249,8 @@ const assistant: TranslationStrings = { 'assistant.admin.dailyLimitHint': 'Počítá se jen, dokud platíš.', 'assistant.admin.retention': 'Uchovávat chaty', 'assistant.admin.webSearch': 'Vyhledávání na webu', - 'assistant.admin.webSearchHint': 'Asistent může hledat na webu (recenze, otevírací doby, akce) přes vyhledávání poskytovatele AI, se kterým mluví. Funguje s ChatGPT, Anthropic a OpenRouter; hledání jdou jen k tomuto poskytovateli.', + 'assistant.admin.webSearchHint': + 'Asistent může hledat na webu (recenze, otevírací doby, akce) přes vyhledávání poskytovatele AI, se kterým mluví. Funguje s ChatGPT, Anthropic a OpenRouter; hledání jdou jen k tomuto poskytovateli.', 'assistant.admin.retentionDays': '{count} dní', 'assistant.admin.retentionDays.one': '{count} den', 'assistant.admin.retentionDays.few': '{count} dny', diff --git a/shared/src/i18n/de/assistant.ts b/shared/src/i18n/de/assistant.ts index 14fbfdd54..6c10cf7e2 100644 --- a/shared/src/i18n/de/assistant.ts +++ b/shared/src/i18n/de/assistant.ts @@ -246,7 +246,8 @@ const assistant: TranslationStrings = { 'assistant.admin.dailyLimitHint': 'Zählt nur, solange du zahlst.', 'assistant.admin.retention': 'Unterhaltungen aufbewahren', 'assistant.admin.webSearch': 'Websuche', - 'assistant.admin.webSearchHint': 'Der Assistent darf im Web nachschlagen (Bewertungen, Öffnungszeiten, Veranstaltungen), über die Suche des KI-Anbieters, mit dem er spricht. Geht mit ChatGPT, Anthropic und OpenRouter; die Suchen gehen nur an diesen Anbieter.', + 'assistant.admin.webSearchHint': + 'Der Assistent darf im Web nachschlagen (Bewertungen, Öffnungszeiten, Veranstaltungen), über die Suche des KI-Anbieters, mit dem er spricht. Geht mit ChatGPT, Anthropic und OpenRouter; die Suchen gehen nur an diesen Anbieter.', 'assistant.admin.retentionDays': '{count} Tage', 'assistant.admin.retentionDays.one': '{count} Tag', 'assistant.admin.retentionForever': 'Für immer', diff --git a/shared/src/i18n/en/assistant.ts b/shared/src/i18n/en/assistant.ts index 8828c6f7d..65483011f 100644 --- a/shared/src/i18n/en/assistant.ts +++ b/shared/src/i18n/en/assistant.ts @@ -242,7 +242,8 @@ const assistant: TranslationStrings = { 'assistant.admin.dailyLimitHint': 'Only counts while you pay.', 'assistant.admin.retention': 'Keep chats', 'assistant.admin.webSearch': 'Web search', - 'assistant.admin.webSearchHint': 'The assistant may look things up on the web (reviews, opening times, events) through the search of the AI provider it talks to. Works with ChatGPT, Anthropic and OpenRouter; the searches go only to that provider.', + 'assistant.admin.webSearchHint': + 'The assistant may look things up on the web (reviews, opening times, events) through the search of the AI provider it talks to. Works with ChatGPT, Anthropic and OpenRouter; the searches go only to that provider.', 'assistant.admin.retentionDays': '{count} days', 'assistant.admin.retentionDays.one': '{count} day', 'assistant.admin.retentionForever': 'Forever', diff --git a/shared/src/i18n/es/assistant.ts b/shared/src/i18n/es/assistant.ts index a02f739d1..5930628a6 100644 --- a/shared/src/i18n/es/assistant.ts +++ b/shared/src/i18n/es/assistant.ts @@ -245,7 +245,8 @@ const assistant: TranslationStrings = { 'assistant.admin.dailyLimitHint': 'Solo cuenta mientras pagas tú.', 'assistant.admin.retention': 'Conservar chats', 'assistant.admin.webSearch': 'Búsqueda web', - 'assistant.admin.webSearchHint': 'El asistente puede consultar la web (reseñas, horarios, eventos) con la búsqueda del proveedor de IA con el que habla. Funciona con ChatGPT, Anthropic y OpenRouter; las búsquedas solo van a ese proveedor.', + 'assistant.admin.webSearchHint': + 'El asistente puede consultar la web (reseñas, horarios, eventos) con la búsqueda del proveedor de IA con el que habla. Funciona con ChatGPT, Anthropic y OpenRouter; las búsquedas solo van a ese proveedor.', 'assistant.admin.retentionDays': '{count} días', 'assistant.admin.retentionDays.one': '{count} día', 'assistant.admin.retentionForever': 'Para siempre', diff --git a/shared/src/i18n/et/assistant.ts b/shared/src/i18n/et/assistant.ts index 30f0381ea..5dc1c8521 100644 --- a/shared/src/i18n/et/assistant.ts +++ b/shared/src/i18n/et/assistant.ts @@ -246,7 +246,8 @@ const assistant: TranslationStrings = { 'assistant.admin.dailyLimitHint': 'Loeb ainult siis, kui maksad sina.', 'assistant.admin.retention': 'Vestluste säilitamine', 'assistant.admin.webSearch': 'Veebiotsing', - 'assistant.admin.webSearchHint': 'Assistent võib veebist järele vaadata (arvustused, lahtiolekuajad, üritused) selle tehisintellekti teenuse otsinguga, kellega ta räägib. Töötab ChatGPT, Anthropicu ja OpenRouteriga; otsingud lähevad ainult sellele teenusele.', + 'assistant.admin.webSearchHint': + 'Assistent võib veebist järele vaadata (arvustused, lahtiolekuajad, üritused) selle tehisintellekti teenuse otsinguga, kellega ta räägib. Töötab ChatGPT, Anthropicu ja OpenRouteriga; otsingud lähevad ainult sellele teenusele.', 'assistant.admin.retentionDays': '{count} päeva', 'assistant.admin.retentionDays.one': '{count} päev', 'assistant.admin.retentionForever': 'Igavesti', diff --git a/shared/src/i18n/fr/assistant.ts b/shared/src/i18n/fr/assistant.ts index b0cf12448..21056c50b 100644 --- a/shared/src/i18n/fr/assistant.ts +++ b/shared/src/i18n/fr/assistant.ts @@ -249,7 +249,8 @@ const assistant: TranslationStrings = { 'assistant.admin.dailyLimitHint': 'Compte uniquement tant que vous payez.', 'assistant.admin.retention': 'Conserver les chats', 'assistant.admin.webSearch': 'Recherche web', - 'assistant.admin.webSearchHint': 'L’assistant peut chercher sur le web (avis, horaires, événements) via la recherche du fournisseur d’IA avec lequel il parle. Fonctionne avec ChatGPT, Anthropic et OpenRouter ; les recherches ne vont qu’à ce fournisseur.', + 'assistant.admin.webSearchHint': + 'L’assistant peut chercher sur le web (avis, horaires, événements) via la recherche du fournisseur d’IA avec lequel il parle. Fonctionne avec ChatGPT, Anthropic et OpenRouter ; les recherches ne vont qu’à ce fournisseur.', 'assistant.admin.retentionDays': '{count} jours', 'assistant.admin.retentionDays.one': '{count} jour', 'assistant.admin.retentionForever': 'Pour toujours', diff --git a/shared/src/i18n/gr/assistant.ts b/shared/src/i18n/gr/assistant.ts index ffc674e8b..de913f050 100644 --- a/shared/src/i18n/gr/assistant.ts +++ b/shared/src/i18n/gr/assistant.ts @@ -250,7 +250,8 @@ const assistant: TranslationStrings = { 'assistant.admin.dailyLimitHint': 'Μετράει μόνο όσο πληρώνετε εσείς.', 'assistant.admin.retention': 'Διατήρηση συνομιλιών', 'assistant.admin.webSearch': 'Αναζήτηση στο web', - 'assistant.admin.webSearchHint': 'Ο βοηθός μπορεί να ψάξει στο web (κριτικές, ωράρια, εκδηλώσεις) μέσω της αναζήτησης του παρόχου AI με τον οποίο μιλά. Λειτουργεί με ChatGPT, Anthropic και OpenRouter· οι αναζητήσεις πηγαίνουν μόνο σε αυτόν τον πάροχο.', + 'assistant.admin.webSearchHint': + 'Ο βοηθός μπορεί να ψάξει στο web (κριτικές, ωράρια, εκδηλώσεις) μέσω της αναζήτησης του παρόχου AI με τον οποίο μιλά. Λειτουργεί με ChatGPT, Anthropic και OpenRouter· οι αναζητήσεις πηγαίνουν μόνο σε αυτόν τον πάροχο.', 'assistant.admin.retentionDays': '{count} ημέρες', 'assistant.admin.retentionDays.one': '{count} ημέρα', 'assistant.admin.retentionForever': 'Για πάντα', diff --git a/shared/src/i18n/hu/assistant.ts b/shared/src/i18n/hu/assistant.ts index 43e324522..7411f1f97 100644 --- a/shared/src/i18n/hu/assistant.ts +++ b/shared/src/i18n/hu/assistant.ts @@ -249,7 +249,8 @@ const assistant: TranslationStrings = { 'assistant.admin.dailyLimitHint': 'Csak addig számít, amíg te fizetsz.', 'assistant.admin.retention': 'Csevegések megőrzése', 'assistant.admin.webSearch': 'Webes keresés', - 'assistant.admin.webSearchHint': 'Az asszisztens utánanézhet a weben (értékelések, nyitvatartás, események) annak az MI-szolgáltatónak a keresőjével, amellyel beszél. ChatGPT-vel, Anthropickal és OpenRouterrel működik; a keresések csak ehhez a szolgáltatóhoz mennek.', + 'assistant.admin.webSearchHint': + 'Az asszisztens utánanézhet a weben (értékelések, nyitvatartás, események) annak az MI-szolgáltatónak a keresőjével, amellyel beszél. ChatGPT-vel, Anthropickal és OpenRouterrel működik; a keresések csak ehhez a szolgáltatóhoz mennek.', 'assistant.admin.retentionDays': '{count} nap', 'assistant.admin.retentionDays.one': '{count} nap', 'assistant.admin.retentionForever': 'Örökre', diff --git a/shared/src/i18n/id/assistant.ts b/shared/src/i18n/id/assistant.ts index 9bbc22624..c04679646 100644 --- a/shared/src/i18n/id/assistant.ts +++ b/shared/src/i18n/id/assistant.ts @@ -241,7 +241,8 @@ const assistant: TranslationStrings = { 'assistant.admin.dailyLimitHint': 'Hanya dihitung selama kamu yang membayar.', 'assistant.admin.retention': 'Simpan obrolan', 'assistant.admin.webSearch': 'Pencarian web', - 'assistant.admin.webSearchHint': 'Asisten boleh mencari di web (ulasan, jam buka, acara) lewat pencarian penyedia AI yang ia gunakan. Berfungsi dengan ChatGPT, Anthropic, dan OpenRouter; pencarian hanya dikirim ke penyedia itu.', + 'assistant.admin.webSearchHint': + 'Asisten boleh mencari di web (ulasan, jam buka, acara) lewat pencarian penyedia AI yang ia gunakan. Berfungsi dengan ChatGPT, Anthropic, dan OpenRouter; pencarian hanya dikirim ke penyedia itu.', 'assistant.admin.retentionDays': '{count} hari', 'assistant.admin.retentionForever': 'Selamanya', 'assistant.claude.title': 'Hubungkan dengan Claude', diff --git a/shared/src/i18n/it/assistant.ts b/shared/src/i18n/it/assistant.ts index 07fe71be8..dd93b1454 100644 --- a/shared/src/i18n/it/assistant.ts +++ b/shared/src/i18n/it/assistant.ts @@ -249,7 +249,8 @@ const assistant: TranslationStrings = { 'assistant.admin.dailyLimitHint': 'Conta solo finché paghi tu.', 'assistant.admin.retention': 'Conserva le chat', 'assistant.admin.webSearch': 'Ricerca web', - 'assistant.admin.webSearchHint': 'L’assistente può cercare sul web (recensioni, orari, eventi) con la ricerca del fornitore di IA con cui parla. Funziona con ChatGPT, Anthropic e OpenRouter; le ricerche vanno solo a quel fornitore.', + 'assistant.admin.webSearchHint': + 'L’assistente può cercare sul web (recensioni, orari, eventi) con la ricerca del fornitore di IA con cui parla. Funziona con ChatGPT, Anthropic e OpenRouter; le ricerche vanno solo a quel fornitore.', 'assistant.admin.retentionDays': '{count} giorni', 'assistant.admin.retentionDays.one': '{count} giorno', 'assistant.admin.retentionForever': 'Per sempre', diff --git a/shared/src/i18n/ja/assistant.ts b/shared/src/i18n/ja/assistant.ts index 2b1c50fe3..7ee89cef2 100644 --- a/shared/src/i18n/ja/assistant.ts +++ b/shared/src/i18n/ja/assistant.ts @@ -239,7 +239,8 @@ const assistant: TranslationStrings = { 'assistant.admin.dailyLimitHint': 'あなたが支払っている間だけカウントされます。', 'assistant.admin.retention': 'チャットの保存期間', 'assistant.admin.webSearch': 'ウェブ検索', - 'assistant.admin.webSearchHint': 'アシスタントは、接続しているAIプロバイダーの検索でウェブを調べられます(口コミ、営業時間、イベントなど)。ChatGPT、Anthropic、OpenRouterで使え、検索はそのプロバイダーにだけ送られます。', + 'assistant.admin.webSearchHint': + 'アシスタントは、接続しているAIプロバイダーの検索でウェブを調べられます(口コミ、営業時間、イベントなど)。ChatGPT、Anthropic、OpenRouterで使え、検索はそのプロバイダーにだけ送られます。', 'assistant.admin.retentionDays': '{count} 日', 'assistant.admin.retentionForever': '無期限', 'assistant.claude.title': 'Claude と接続', diff --git a/shared/src/i18n/ko/assistant.ts b/shared/src/i18n/ko/assistant.ts index a455936e9..52d1d7605 100644 --- a/shared/src/i18n/ko/assistant.ts +++ b/shared/src/i18n/ko/assistant.ts @@ -237,7 +237,8 @@ const assistant: TranslationStrings = { 'assistant.admin.dailyLimitHint': '내가 비용을 부담하는 동안에만 계산됩니다.', 'assistant.admin.retention': '채팅 보관', 'assistant.admin.webSearch': '웹 검색', - 'assistant.admin.webSearchHint': '어시스턴트가 연결된 AI 제공자의 검색으로 웹을 찾아볼 수 있습니다(리뷰, 영업시간, 행사). ChatGPT, Anthropic, OpenRouter에서 작동하며 검색은 해당 제공자에게만 전달됩니다.', + 'assistant.admin.webSearchHint': + '어시스턴트가 연결된 AI 제공자의 검색으로 웹을 찾아볼 수 있습니다(리뷰, 영업시간, 행사). ChatGPT, Anthropic, OpenRouter에서 작동하며 검색은 해당 제공자에게만 전달됩니다.', 'assistant.admin.retentionDays': '{count}일', 'assistant.admin.retentionForever': '영구', 'assistant.claude.title': 'Claude와 연결', diff --git a/shared/src/i18n/nl/assistant.ts b/shared/src/i18n/nl/assistant.ts index 6ac10aa7a..c06a62874 100644 --- a/shared/src/i18n/nl/assistant.ts +++ b/shared/src/i18n/nl/assistant.ts @@ -247,7 +247,8 @@ const assistant: TranslationStrings = { 'assistant.admin.dailyLimitHint': 'Telt alleen zolang jij betaalt.', 'assistant.admin.retention': 'Chats bewaren', 'assistant.admin.webSearch': 'Zoeken op het web', - 'assistant.admin.webSearchHint': 'De assistent mag dingen op het web opzoeken (recensies, openingstijden, evenementen) via de zoekfunctie van de AI-aanbieder waarmee hij praat. Werkt met ChatGPT, Anthropic en OpenRouter; de zoekopdrachten gaan alleen naar die aanbieder.', + 'assistant.admin.webSearchHint': + 'De assistent mag dingen op het web opzoeken (recensies, openingstijden, evenementen) via de zoekfunctie van de AI-aanbieder waarmee hij praat. Werkt met ChatGPT, Anthropic en OpenRouter; de zoekopdrachten gaan alleen naar die aanbieder.', 'assistant.admin.retentionDays': '{count} dagen', 'assistant.admin.retentionDays.one': '{count} dag', 'assistant.admin.retentionForever': 'Voor altijd', diff --git a/shared/src/i18n/pl/assistant.ts b/shared/src/i18n/pl/assistant.ts index 142ec33e9..6878fe244 100644 --- a/shared/src/i18n/pl/assistant.ts +++ b/shared/src/i18n/pl/assistant.ts @@ -255,7 +255,8 @@ const assistant: TranslationStrings = { 'assistant.admin.dailyLimitHint': 'Liczy się tylko wtedy, gdy Ty płacisz.', 'assistant.admin.retention': 'Przechowuj czaty', 'assistant.admin.webSearch': 'Wyszukiwanie w sieci', - 'assistant.admin.webSearchHint': 'Asystent może sprawdzać informacje w sieci (opinie, godziny otwarcia, wydarzenia) przez wyszukiwarkę dostawcy AI, z którym rozmawia. Działa z ChatGPT, Anthropic i OpenRouter; wyszukiwania trafiają tylko do tego dostawcy.', + 'assistant.admin.webSearchHint': + 'Asystent może sprawdzać informacje w sieci (opinie, godziny otwarcia, wydarzenia) przez wyszukiwarkę dostawcy AI, z którym rozmawia. Działa z ChatGPT, Anthropic i OpenRouter; wyszukiwania trafiają tylko do tego dostawcy.', 'assistant.admin.retentionDays': '{count} dnia', 'assistant.admin.retentionDays.one': '{count} dzień', 'assistant.admin.retentionDays.few': '{count} dni', diff --git a/shared/src/i18n/ru/assistant.ts b/shared/src/i18n/ru/assistant.ts index 3578954cf..9387152ee 100644 --- a/shared/src/i18n/ru/assistant.ts +++ b/shared/src/i18n/ru/assistant.ts @@ -255,7 +255,8 @@ const assistant: TranslationStrings = { 'assistant.admin.dailyLimitHint': 'Учитывается, только пока платите вы.', 'assistant.admin.retention': 'Хранить чаты', 'assistant.admin.webSearch': 'Поиск в интернете', - 'assistant.admin.webSearchHint': 'Ассистент может искать в интернете (отзывы, часы работы, события) через поиск того ИИ-провайдера, с которым он работает. Работает с ChatGPT, Anthropic и OpenRouter; запросы уходят только этому провайдеру.', + 'assistant.admin.webSearchHint': + 'Ассистент может искать в интернете (отзывы, часы работы, события) через поиск того ИИ-провайдера, с которым он работает. Работает с ChatGPT, Anthropic и OpenRouter; запросы уходят только этому провайдеру.', 'assistant.admin.retentionDays': '{count} дня', 'assistant.admin.retentionDays.one': '{count} день', 'assistant.admin.retentionDays.few': '{count} дня', diff --git a/shared/src/i18n/sk/assistant.ts b/shared/src/i18n/sk/assistant.ts index 38df35e3b..3a7d76ee8 100644 --- a/shared/src/i18n/sk/assistant.ts +++ b/shared/src/i18n/sk/assistant.ts @@ -249,7 +249,8 @@ const assistant: TranslationStrings = { 'assistant.admin.dailyLimitHint': 'Počíta sa len vtedy, keď platíš ty.', 'assistant.admin.retention': 'Uchovávať chaty', 'assistant.admin.webSearch': 'Vyhľadávanie na webe', - 'assistant.admin.webSearchHint': 'Asistent môže hľadať na webe (recenzie, otváracie hodiny, podujatia) cez vyhľadávanie poskytovateľa AI, s ktorým hovorí. Funguje s ChatGPT, Anthropic a OpenRouter; vyhľadávania idú len k tomuto poskytovateľovi.', + 'assistant.admin.webSearchHint': + 'Asistent môže hľadať na webe (recenzie, otváracie hodiny, podujatia) cez vyhľadávanie poskytovateľa AI, s ktorým hovorí. Funguje s ChatGPT, Anthropic a OpenRouter; vyhľadávania idú len k tomuto poskytovateľovi.', 'assistant.admin.retentionDays': '{count} dní', 'assistant.admin.retentionDays.one': '{count} deň', 'assistant.admin.retentionDays.few': '{count} dni', diff --git a/shared/src/i18n/sv/assistant.ts b/shared/src/i18n/sv/assistant.ts index c43d0ca3c..d07ff1003 100644 --- a/shared/src/i18n/sv/assistant.ts +++ b/shared/src/i18n/sv/assistant.ts @@ -247,7 +247,8 @@ const assistant: TranslationStrings = { 'assistant.admin.dailyLimitHint': 'Räknas bara medan du betalar.', 'assistant.admin.retention': 'Spara chattar', 'assistant.admin.webSearch': 'Webbsökning', - 'assistant.admin.webSearchHint': 'Assistenten får slå upp saker på webben (recensioner, öppettider, evenemang) via sökningen hos den AI-leverantör den pratar med. Fungerar med ChatGPT, Anthropic och OpenRouter; sökningarna går bara till den leverantören.', + 'assistant.admin.webSearchHint': + 'Assistenten får slå upp saker på webben (recensioner, öppettider, evenemang) via sökningen hos den AI-leverantör den pratar med. Fungerar med ChatGPT, Anthropic och OpenRouter; sökningarna går bara till den leverantören.', 'assistant.admin.retentionDays': '{count} dagar', 'assistant.admin.retentionDays.one': '{count} dag', 'assistant.admin.retentionForever': 'För alltid', diff --git a/shared/src/i18n/th/assistant.ts b/shared/src/i18n/th/assistant.ts index d0f602a75..44c3466f1 100644 --- a/shared/src/i18n/th/assistant.ts +++ b/shared/src/i18n/th/assistant.ts @@ -237,7 +237,8 @@ const assistant: TranslationStrings = { 'assistant.admin.dailyLimitHint': 'นับเฉพาะตอนที่คุณเป็นผู้จ่าย', 'assistant.admin.retention': 'เก็บแชต', 'assistant.admin.webSearch': 'ค้นหาบนเว็บ', - 'assistant.admin.webSearchHint': 'ผู้ช่วยค้นข้อมูลบนเว็บได้ (รีวิว เวลาเปิดปิด งานอีเวนต์) ผ่านการค้นหาของผู้ให้บริการ AI ที่ใช้อยู่ ใช้ได้กับ ChatGPT, Anthropic และ OpenRouter และการค้นหาจะส่งไปที่ผู้ให้บริการนั้นเท่านั้น', + 'assistant.admin.webSearchHint': + 'ผู้ช่วยค้นข้อมูลบนเว็บได้ (รีวิว เวลาเปิดปิด งานอีเวนต์) ผ่านการค้นหาของผู้ให้บริการ AI ที่ใช้อยู่ ใช้ได้กับ ChatGPT, Anthropic และ OpenRouter และการค้นหาจะส่งไปที่ผู้ให้บริการนั้นเท่านั้น', 'assistant.admin.retentionDays': '{count} วัน', 'assistant.admin.retentionForever': 'ตลอดไป', 'assistant.claude.title': 'เชื่อมต่อกับ Claude', diff --git a/shared/src/i18n/tr/assistant.ts b/shared/src/i18n/tr/assistant.ts index c30eb5770..b171fddd4 100644 --- a/shared/src/i18n/tr/assistant.ts +++ b/shared/src/i18n/tr/assistant.ts @@ -245,7 +245,8 @@ const assistant: TranslationStrings = { 'assistant.admin.dailyLimitHint': 'Yalnızca sen öderken sayılır.', 'assistant.admin.retention': 'Sohbetleri sakla', 'assistant.admin.webSearch': 'Web araması', - 'assistant.admin.webSearchHint': 'Asistan, konuştuğu yapay zekâ sağlayıcısının aramasıyla web’de bilgi arayabilir (yorumlar, açılış saatleri, etkinlikler). ChatGPT, Anthropic ve OpenRouter ile çalışır; aramalar yalnızca o sağlayıcıya gider.', + 'assistant.admin.webSearchHint': + 'Asistan, konuştuğu yapay zekâ sağlayıcısının aramasıyla web’de bilgi arayabilir (yorumlar, açılış saatleri, etkinlikler). ChatGPT, Anthropic ve OpenRouter ile çalışır; aramalar yalnızca o sağlayıcıya gider.', 'assistant.admin.retentionDays': '{count} gün', 'assistant.admin.retentionDays.one': '{count} gün', 'assistant.admin.retentionForever': 'Süresiz', diff --git a/shared/src/i18n/uk/assistant.ts b/shared/src/i18n/uk/assistant.ts index eaa4369e2..7f098ab9e 100644 --- a/shared/src/i18n/uk/assistant.ts +++ b/shared/src/i18n/uk/assistant.ts @@ -255,7 +255,8 @@ const assistant: TranslationStrings = { 'assistant.admin.dailyLimitHint': 'Враховується, лише поки платите ви.', 'assistant.admin.retention': 'Зберігати чати', 'assistant.admin.webSearch': 'Пошук в інтернеті', - 'assistant.admin.webSearchHint': 'Асистент може шукати в інтернеті (відгуки, години роботи, події) через пошук того ШІ-провайдера, з яким працює. Працює з ChatGPT, Anthropic і OpenRouter; запити йдуть лише цьому провайдеру.', + 'assistant.admin.webSearchHint': + 'Асистент може шукати в інтернеті (відгуки, години роботи, події) через пошук того ШІ-провайдера, з яким працює. Працює з ChatGPT, Anthropic і OpenRouter; запити йдуть лише цьому провайдеру.', 'assistant.admin.retentionDays': '{count} дня', 'assistant.admin.retentionDays.one': '{count} день', 'assistant.admin.retentionDays.few': '{count} дні', diff --git a/shared/src/i18n/vi/assistant.ts b/shared/src/i18n/vi/assistant.ts index 8b01e4933..cb8e57202 100644 --- a/shared/src/i18n/vi/assistant.ts +++ b/shared/src/i18n/vi/assistant.ts @@ -239,7 +239,8 @@ const assistant: TranslationStrings = { 'assistant.admin.dailyLimitHint': 'Chỉ tính khi bạn trả phí.', 'assistant.admin.retention': 'Giữ cuộc trò chuyện', 'assistant.admin.webSearch': 'Tìm kiếm trên web', - 'assistant.admin.webSearchHint': 'Trợ lý có thể tra cứu trên web (đánh giá, giờ mở cửa, sự kiện) qua công cụ tìm kiếm của nhà cung cấp AI mà nó dùng. Hoạt động với ChatGPT, Anthropic và OpenRouter; các lượt tìm chỉ gửi đến nhà cung cấp đó.', + 'assistant.admin.webSearchHint': + 'Trợ lý có thể tra cứu trên web (đánh giá, giờ mở cửa, sự kiện) qua công cụ tìm kiếm của nhà cung cấp AI mà nó dùng. Hoạt động với ChatGPT, Anthropic và OpenRouter; các lượt tìm chỉ gửi đến nhà cung cấp đó.', 'assistant.admin.retentionDays': '{count} ngày', 'assistant.admin.retentionForever': 'Mãi mãi', 'assistant.claude.title': 'Kết nối với Claude', diff --git a/shared/src/i18n/zh-TW/assistant.ts b/shared/src/i18n/zh-TW/assistant.ts index bb4c43c73..530fe9526 100644 --- a/shared/src/i18n/zh-TW/assistant.ts +++ b/shared/src/i18n/zh-TW/assistant.ts @@ -234,7 +234,8 @@ const assistant: TranslationStrings = { 'assistant.admin.dailyLimitHint': '只在由你付費時計算。', 'assistant.admin.retention': '保留對話', 'assistant.admin.webSearch': '網頁搜尋', - 'assistant.admin.webSearchHint': '助理可以透過所連接 AI 供應商的搜尋功能在網路上查詢資訊(評價、營業時間、活動)。適用於 ChatGPT、Anthropic 和 OpenRouter;搜尋只會傳送給該供應商。', + 'assistant.admin.webSearchHint': + '助理可以透過所連接 AI 供應商的搜尋功能在網路上查詢資訊(評價、營業時間、活動)。適用於 ChatGPT、Anthropic 和 OpenRouter;搜尋只會傳送給該供應商。', 'assistant.admin.retentionDays': '{count} 天', 'assistant.admin.retentionForever': '永久', 'assistant.claude.title': '與 Claude 連結', diff --git a/shared/src/i18n/zh/assistant.ts b/shared/src/i18n/zh/assistant.ts index 8d06e8771..407ff3a89 100644 --- a/shared/src/i18n/zh/assistant.ts +++ b/shared/src/i18n/zh/assistant.ts @@ -234,7 +234,8 @@ const assistant: TranslationStrings = { 'assistant.admin.dailyLimitHint': '仅在由你付费时计数。', 'assistant.admin.retention': '保留对话', 'assistant.admin.webSearch': '网页搜索', - 'assistant.admin.webSearchHint': '助手可以通过其所连接的 AI 提供商的搜索功能在网上查询信息(评价、营业时间、活动)。适用于 ChatGPT、Anthropic 和 OpenRouter;搜索只会发送给该提供商。', + 'assistant.admin.webSearchHint': + '助手可以通过其所连接的 AI 提供商的搜索功能在网上查询信息(评价、营业时间、活动)。适用于 ChatGPT、Anthropic 和 OpenRouter;搜索只会发送给该提供商。', 'assistant.admin.retentionDays': '{count} 天', 'assistant.admin.retentionForever': '永久', 'assistant.claude.title': '与 Claude 连接',