docus 5.8.1 → 5.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/README.md +1 -1
  2. package/app/app.config.ts +13 -0
  3. package/app/app.vue +5 -1
  4. package/app/components/OgImage/Docs.takumi.vue +43 -0
  5. package/app/components/OgImage/Landing.takumi.vue +67 -0
  6. package/app/components/app/AppFooterRight.vue +4 -1
  7. package/app/components/app/AppHeader.vue +6 -7
  8. package/app/components/app/AppHeaderBody.vue +6 -2
  9. package/app/components/app/AppHeaderBottom.vue +6 -2
  10. package/app/components/app/AppHeaderLeft.vue +16 -0
  11. package/app/components/docs/DocsAsideLeftBody.vue +6 -1
  12. package/app/components/docs/DocsAsideMobileBar.vue +11 -1
  13. package/app/components/docs/DocsAsideRight.vue +6 -1
  14. package/app/composables/useDocusColorMode.ts +7 -0
  15. package/app/composables/useUIConfig.ts +30 -0
  16. package/app/error.vue +3 -0
  17. package/app/middleware/colorMode.global.ts +8 -0
  18. package/app/pages/[[lang]]/[...slug].vue +16 -12
  19. package/app/templates/landing.vue +3 -3
  20. package/app/utils/ogImage.ts +23 -0
  21. package/i18n/locales/ar.json +27 -0
  22. package/i18n/locales/be.json +27 -0
  23. package/i18n/locales/bg.json +27 -0
  24. package/i18n/locales/bn.json +27 -0
  25. package/i18n/locales/ca.json +27 -0
  26. package/i18n/locales/ckb.json +32 -1
  27. package/i18n/locales/cs.json +27 -0
  28. package/i18n/locales/da.json +27 -0
  29. package/i18n/locales/de.json +27 -0
  30. package/i18n/locales/el.json +27 -0
  31. package/i18n/locales/es.json +27 -0
  32. package/i18n/locales/et.json +27 -0
  33. package/i18n/locales/fi.json +27 -0
  34. package/i18n/locales/he.json +27 -0
  35. package/i18n/locales/hi.json +27 -0
  36. package/i18n/locales/hy.json +27 -0
  37. package/i18n/locales/id.json +27 -0
  38. package/i18n/locales/it.json +27 -0
  39. package/i18n/locales/ja.json +27 -0
  40. package/i18n/locales/kk.json +27 -0
  41. package/i18n/locales/km.json +27 -0
  42. package/i18n/locales/ko.json +27 -0
  43. package/i18n/locales/ky.json +27 -0
  44. package/i18n/locales/lb.json +27 -0
  45. package/i18n/locales/ms.json +27 -0
  46. package/i18n/locales/nb.json +27 -0
  47. package/i18n/locales/nl.json +27 -0
  48. package/i18n/locales/pl.json +27 -0
  49. package/i18n/locales/pt-BR.json +27 -0
  50. package/i18n/locales/ro.json +27 -0
  51. package/i18n/locales/ru.json +27 -0
  52. package/i18n/locales/si.json +27 -0
  53. package/i18n/locales/sl.json +27 -0
  54. package/i18n/locales/sv.json +27 -0
  55. package/i18n/locales/tr.json +27 -0
  56. package/i18n/locales/uk.json +27 -0
  57. package/i18n/locales/ur.json +27 -0
  58. package/i18n/locales/vi.json +27 -0
  59. package/i18n/locales/zh-CN.json +27 -0
  60. package/index.d.ts +33 -0
  61. package/modules/assistant/README.md +17 -8
  62. package/modules/assistant/index.ts +26 -16
  63. package/modules/assistant/runtime/server/api/search.ts +5 -0
  64. package/modules/config.ts +7 -2
  65. package/modules/css.ts +12 -0
  66. package/modules/skills/index.ts +158 -0
  67. package/modules/skills/runtime/server/routes/skills-files.ts +49 -0
  68. package/modules/skills/runtime/server/routes/skills-index.ts +8 -0
  69. package/nuxt.config.ts +8 -2
  70. package/nuxt.schema.ts +22 -0
  71. package/package.json +24 -21
  72. package/server/mcp/tools/get-page.ts +16 -5
  73. package/server/mcp/tools/list-pages.ts +13 -3
  74. package/app/components/OgImage/OgImageDocs.vue +0 -76
  75. package/app/components/OgImage/OgImageLanding.vue +0 -98
@@ -32,5 +32,32 @@
32
32
  "wordmarkDownloaded": "Сөз белгиси жүктөлдү",
33
33
  "copyLogoFailed": "Логотипти көчүрүү ишке ашкан жок",
34
34
  "copyWordmarkFailed": "Сөз белгисин көчүрүү ишке ашкан жок"
35
+ },
36
+ "assistant": {
37
+ "title": "AIден сураңыз",
38
+ "placeholder": "Суроо берүү...",
39
+ "tooltip": "АИге суроо берүү",
40
+ "tryAsking": "Суроо берүүгө аракет кылыңыз",
41
+ "askAnything": "Суроо...",
42
+ "clearChat": "Чатты тазалоо",
43
+ "close": "Жабуу",
44
+ "expand": "Кеңейтүү",
45
+ "collapse": "Бузулуу",
46
+ "thinking": "Ойлонуу...",
47
+ "askMeAnything": "Суроо",
48
+ "askMeAnythingDescription": "Документтерди навигациялоого, түшүнүктөрдү түшүнүүгө жана жоопторду табууга жардам алыңыз.",
49
+ "faq": "Көп берилүүчү суроолор",
50
+ "chatCleared": "Чат жаңыртууда тазаланды",
51
+ "lineBreak": "Сызыктын үзүлүшү",
52
+ "explainWithAi": "AI менен түшүндүрүү",
53
+ "toolListPages": "Тизмедеги документтердин барактары",
54
+ "toolReadPage": "Окуу",
55
+ "loading": {
56
+ "searching": "Документтерди издөө",
57
+ "reading": "Документтер аркылуу окуу",
58
+ "analyzing": "Мазмунду талдоо",
59
+ "finding": "Мыкты жооп табуу",
60
+ "finished": "Колдонулган булактар"
61
+ }
35
62
  }
36
63
  }
@@ -32,5 +32,32 @@
32
32
  "wordmarkDownloaded": "Wortmark erofgelueden",
33
33
  "copyLogoFailed": "Logo konnt net kopéiert ginn",
34
34
  "copyWordmarkFailed": "Wortmark konnt net kopéiert ginn"
35
+ },
36
+ "assistant": {
37
+ "title": "Frot d'AI",
38
+ "placeholder": "Stell eng Fro...",
39
+ "tooltip": "Stell der AI eng Fro",
40
+ "tryAsking": "Probéieren eng Fro ze stellen",
41
+ "askAnything": "Frot iergendeppes...",
42
+ "clearChat": "Chat läschen",
43
+ "close": "Zoumaachen",
44
+ "expand": "Erweideren",
45
+ "collapse": "Zesummeklappen",
46
+ "thinking": "Denken...",
47
+ "askMeAnything": "Frot alles",
48
+ "askMeAnythingDescription": "Kritt Hëllef fir an der Dokumentatioun ze navigéieren, Konzepter ze verstoen an Äntwerten ze fannen.",
49
+ "faq": "FAQ",
50
+ "chatCleared": "Chat gëtt op Erfrëschung gereinegt",
51
+ "lineBreak": "Zeilepaus",
52
+ "explainWithAi": "Erklär mat AI",
53
+ "toolListPages": "Opgelëschte Dokumentatiounssäiten",
54
+ "toolReadPage": "Liesen",
55
+ "loading": {
56
+ "searching": "D'Dokumentatioun gëtt duerchsicht",
57
+ "reading": "D'Dokumenter ginn duerchgelies",
58
+ "analyzing": "Den Inhalt gëtt analyséiert",
59
+ "finding": "Déi bescht Äntwert gëtt fonnt",
60
+ "finished": "Benotzte Quellen"
61
+ }
35
62
  }
36
63
  }
@@ -32,5 +32,32 @@
32
32
  "wordmarkDownloaded": "Wordmark dimuat turun",
33
33
  "copyLogoFailed": "Gagal menyalin logo",
34
34
  "copyWordmarkFailed": "Gagal menyalin wordmark"
35
+ },
36
+ "assistant": {
37
+ "title": "Tanya AI",
38
+ "placeholder": "Tanya soalan...",
39
+ "tooltip": "Tanya soalan kepada AI",
40
+ "tryAsking": "Cuba tanya soalan",
41
+ "askAnything": "Tanya apa-apa...",
42
+ "clearChat": "Kosongkan sembang",
43
+ "close": "Tutup",
44
+ "expand": "Kembangkan",
45
+ "collapse": "Kecilkan",
46
+ "thinking": "Berfikir...",
47
+ "askMeAnything": "Tanya apa sahaja",
48
+ "askMeAnythingDescription": "Dapatkan bantuan untuk menavigasi dokumentasi, memahami konsep, dan mencari jawapan.",
49
+ "faq": "Soalan Lazim",
50
+ "chatCleared": "Sembang dikosongkan semasa segar semula",
51
+ "lineBreak": "Pemutus baris",
52
+ "explainWithAi": "Terangkan dengan AI",
53
+ "toolListPages": "Halaman dokumentasi tersenarai",
54
+ "toolReadPage": "Baca",
55
+ "loading": {
56
+ "searching": "Mencari dokumentasi",
57
+ "reading": "Membaca dokumen",
58
+ "analyzing": "Menganalisis kandungan",
59
+ "finding": "Mencari jawapan terbaik",
60
+ "finished": "Sumber yang digunakan"
61
+ }
35
62
  }
36
63
  }
@@ -32,5 +32,32 @@
32
32
  "wordmarkDownloaded": "Wordmark lastet ned",
33
33
  "copyLogoFailed": "Kunne ikke kopiere logo",
34
34
  "copyWordmarkFailed": "Kunne ikke kopiere wordmark"
35
+ },
36
+ "assistant": {
37
+ "title": "Spør AI",
38
+ "placeholder": "Still et spørsmål...",
39
+ "tooltip": "Still AI et spørsmål",
40
+ "tryAsking": "Prøv å stille et spørsmål",
41
+ "askAnything": "Spør hva som helst...",
42
+ "clearChat": "Tøm chat",
43
+ "close": "Lukk",
44
+ "expand": "Utvid",
45
+ "collapse": "Skjul",
46
+ "thinking": "Tenker...",
47
+ "askMeAnything": "Spør hva som helst",
48
+ "askMeAnythingDescription": "Få hjelp til å navigere i dokumentasjonen, forstå konsepter og finne svar.",
49
+ "faq": "Ofte stilte spørsmål",
50
+ "chatCleared": "Chat slettes ved oppdatering",
51
+ "lineBreak": "Linjeskift",
52
+ "explainWithAi": "Forklar med AI",
53
+ "toolListPages": "Oppførte dokumentasjonssider",
54
+ "toolReadPage": "Les",
55
+ "loading": {
56
+ "searching": "Søker i dokumentasjonen",
57
+ "reading": "Leser gjennom dokumentene",
58
+ "analyzing": "Analyserer innholdet",
59
+ "finding": "Finne det beste svaret",
60
+ "finished": "Kilder brukt"
61
+ }
35
62
  }
36
63
  }
@@ -32,5 +32,32 @@
32
32
  "wordmarkDownloaded": "Woordmerk gedownload",
33
33
  "copyLogoFailed": "Logo kopiëren mislukt",
34
34
  "copyWordmarkFailed": "Woordmerk kopiëren mislukt"
35
+ },
36
+ "assistant": {
37
+ "title": "Vraag AI",
38
+ "placeholder": "Stel een vraag...",
39
+ "tooltip": "Stel een vraag aan AI",
40
+ "tryAsking": "Probeer een vraag te stellen",
41
+ "askAnything": "Vraag maar raak...",
42
+ "clearChat": "Chat wissen",
43
+ "close": "Sluiten",
44
+ "expand": "Uitvouwen",
45
+ "collapse": "Inklappen",
46
+ "thinking": "Aan het nadenken...",
47
+ "askMeAnything": "Vraag maar raak",
48
+ "askMeAnythingDescription": "Krijg hulp bij het navigeren door de documentatie, het begrijpen van concepten en het vinden van antwoorden.",
49
+ "faq": "Veelgestelde vragen",
50
+ "chatCleared": "De chat wordt gewist bij verversen",
51
+ "lineBreak": "Regelafbreking",
52
+ "explainWithAi": "Uitleggen met AI",
53
+ "toolListPages": "Vermelde documentatiepagina's",
54
+ "toolReadPage": "Lezen",
55
+ "loading": {
56
+ "searching": "De documentatie doorzoeken",
57
+ "reading": "De documentatie doornemen",
58
+ "analyzing": "De inhoud analyseren",
59
+ "finding": "Het beste antwoord vinden",
60
+ "finished": "Gebruikte bronnen"
61
+ }
35
62
  }
36
63
  }
@@ -32,5 +32,32 @@
32
32
  "wordmarkDownloaded": "Wordmark pobrany",
33
33
  "copyLogoFailed": "Nie udało się skopiować logo",
34
34
  "copyWordmarkFailed": "Nie udało się skopiować wordmarku"
35
+ },
36
+ "assistant": {
37
+ "title": "Zapytaj SI",
38
+ "placeholder": "Zadaj pytanie...",
39
+ "tooltip": "Zadaj AI pytanie",
40
+ "tryAsking": "Spróbuj zadać pytanie",
41
+ "askAnything": "Zapytaj o cokolwiek...",
42
+ "clearChat": "Wyczyść czat",
43
+ "close": "Zamknij",
44
+ "expand": "Rozwiń",
45
+ "collapse": "Zwiń",
46
+ "thinking": "Zastanawiam się...",
47
+ "askMeAnything": "Zapytaj o cokolwiek",
48
+ "askMeAnythingDescription": "Uzyskaj pomoc w poruszaniu się po dokumentacji, zrozumieniu pojęć i znalezieniu odpowiedzi.",
49
+ "faq": "Często zadawane pytania",
50
+ "chatCleared": "Czat został wyczyszczony po odświeżeniu",
51
+ "lineBreak": "Podział wiersza",
52
+ "explainWithAi": "Wyjaśnij za pomocą sztucznej inteligencji",
53
+ "toolListPages": "Wymienione strony dokumentacji",
54
+ "toolReadPage": "Czytaj",
55
+ "loading": {
56
+ "searching": "Przeszukiwanie dokumentacji",
57
+ "reading": "Czytanie dokumentów",
58
+ "analyzing": "Analizowanie treści",
59
+ "finding": "Znajdowanie najlepszej odpowiedzi",
60
+ "finished": "Wykorzystane źródła"
61
+ }
35
62
  }
36
63
  }
@@ -32,5 +32,32 @@
32
32
  "wordmarkDownloaded": "Wordmark baixado",
33
33
  "copyLogoFailed": "Falha ao copiar o logo",
34
34
  "copyWordmarkFailed": "Falha ao copiar o wordmark"
35
+ },
36
+ "assistant": {
37
+ "title": "Pergunte à IA",
38
+ "placeholder": "Faça uma pergunta...",
39
+ "tooltip": "Faça uma pergunta à IA",
40
+ "tryAsking": "Tente fazer uma pergunta",
41
+ "askAnything": "Pergunte qualquer coisa...",
42
+ "clearChat": "Limpar chat",
43
+ "close": "Fechar",
44
+ "expand": "Expandir",
45
+ "collapse": "Recolher",
46
+ "thinking": "Pensando...",
47
+ "askMeAnything": "Perguntar qualquer coisa",
48
+ "askMeAnythingDescription": "Obtenha ajuda para navegar pela documentação, entender conceitos e encontrar respostas.",
49
+ "faq": "Perguntas frequentes",
50
+ "chatCleared": "O chat é apagado ao atualizar",
51
+ "lineBreak": "Quebra de linha",
52
+ "explainWithAi": "Explicar com IA",
53
+ "toolListPages": "Páginas de documentação listadas",
54
+ "toolReadPage": "Ler",
55
+ "loading": {
56
+ "searching": "Pesquisar a documentação",
57
+ "reading": "Ler os documentos",
58
+ "analyzing": "Analisar o conteúdo",
59
+ "finding": "Encontrar a melhor resposta",
60
+ "finished": "Fontes utilizadas"
61
+ }
35
62
  }
36
63
  }
@@ -32,5 +32,32 @@
32
32
  "wordmarkDownloaded": "Wordmark descărcat",
33
33
  "copyLogoFailed": "Nu s-a putut copia logo-ul",
34
34
  "copyWordmarkFailed": "Nu s-a putut copia wordmark-ul"
35
+ },
36
+ "assistant": {
37
+ "title": "Întrebați AI",
38
+ "placeholder": "Pune o întrebare...",
39
+ "tooltip": "Pune o întrebare AI",
40
+ "tryAsking": "Încercați să puneți o întrebare",
41
+ "askAnything": "Întreabă orice...",
42
+ "clearChat": "Ștergeți chatul",
43
+ "close": "Închide",
44
+ "expand": "Extindeți",
45
+ "collapse": "Colaps",
46
+ "thinking": "Gândind...",
47
+ "askMeAnything": "Întreabă orice",
48
+ "askMeAnythingDescription": "Obțineți ajutor pentru navigarea în documentație, înțelegerea conceptelor și găsirea răspunsurilor.",
49
+ "faq": "Întrebări frecvente",
50
+ "chatCleared": "Chatul este șters la reîmprospătare",
51
+ "lineBreak": "Rupere de linie",
52
+ "explainWithAi": "Explicați cu AI",
53
+ "toolListPages": "Pagini de documentație listate",
54
+ "toolReadPage": "Citiți",
55
+ "loading": {
56
+ "searching": "Căutarea documentației",
57
+ "reading": "Citind documentele",
58
+ "analyzing": "Analizând conținutul",
59
+ "finding": "Găsirea celui mai bun răspuns",
60
+ "finished": "Surse folosite"
61
+ }
35
62
  }
36
63
  }
@@ -32,5 +32,32 @@
32
32
  "wordmarkDownloaded": "Словесный знак скачан",
33
33
  "copyLogoFailed": "Не удалось скопировать логотип",
34
34
  "copyWordmarkFailed": "Не удалось скопировать словесный знак"
35
+ },
36
+ "assistant": {
37
+ "title": "Спросите ИИ",
38
+ "placeholder": "Задайте вопрос...",
39
+ "tooltip": "Задайте вопрос ИИ",
40
+ "tryAsking": "Попробуйте задать вопрос",
41
+ "askAnything": "Спросите что угодно...",
42
+ "clearChat": "Очистить чат",
43
+ "close": "Закрыть",
44
+ "expand": "Развернуть",
45
+ "collapse": "Свернуть",
46
+ "thinking": "Думаю...",
47
+ "askMeAnything": "Спросите что угодно",
48
+ "askMeAnythingDescription": "Получите помощь в навигации по документации, понимании концепций и поиске ответов.",
49
+ "faq": "Часто задаваемые вопросы",
50
+ "chatCleared": "Чат очищается при обновлении",
51
+ "lineBreak": "Разрыв строки",
52
+ "explainWithAi": "Объясните с помощью ИИ",
53
+ "toolListPages": "Перечисленные страницы документации",
54
+ "toolReadPage": "Читать",
55
+ "loading": {
56
+ "searching": "Поиск документации",
57
+ "reading": "Чтение документации",
58
+ "analyzing": "Анализ контента",
59
+ "finding": "Поиск лучшего ответа",
60
+ "finished": "Использованные источники"
61
+ }
35
62
  }
36
63
  }
@@ -32,5 +32,32 @@
32
32
  "wordmarkDownloaded": "වචන ලකුණ බාගත කරන ලදී",
33
33
  "copyLogoFailed": "ලාංඡනය පිටපත් කිරීමට අසමත් විය",
34
34
  "copyWordmarkFailed": "වචන ලකුණ පිටපත් කිරීමට අසමත් විය"
35
+ },
36
+ "assistant": {
37
+ "title": "AI අහන්න",
38
+ "placeholder": "ප්‍රශ්නයක් අහන්න...",
39
+ "tooltip": "AI ගෙන් ප්‍රශ්නයක් අසන්න",
40
+ "tryAsking": "ප්රශ්නයක් ඇසීමට උත්සාහ කරන්න",
41
+ "askAnything": "ඕන දෙයක් අහන්න...",
42
+ "clearChat": "කතාබස් පැහැදිලි කරන්න",
43
+ "close": "වසන්න",
44
+ "expand": "පුළුල් කරන්න",
45
+ "collapse": "හකුළන්න",
46
+ "thinking": "සිතමින්...",
47
+ "askMeAnything": "ඕන දෙයක් අහන්න",
48
+ "askMeAnythingDescription": "ලේඛන සැරිසැරීමට, සංකල්ප තේරුම් ගැනීමට සහ පිළිතුරු සෙවීමට උදවු ලබා ගන්න.",
49
+ "faq": "නිතර අසන පැන",
50
+ "chatCleared": "නැවුම් කිරීමේදී කතාබස් හිස් වේ",
51
+ "lineBreak": "රේඛා බිඳීම",
52
+ "explainWithAi": "AI සමඟ පැහැදිලි කරන්න",
53
+ "toolListPages": "ලැයිස්තුගත ලේඛන පිටු",
54
+ "toolReadPage": "කියවන්න",
55
+ "loading": {
56
+ "searching": "ලේඛන සෙවීම",
57
+ "reading": "ලේඛන හරහා කියවීම",
58
+ "analyzing": "අන්තර්ගතය විශ්ලේෂණය කිරීම",
59
+ "finding": "හොඳම පිළිතුර සොයා ගැනීම",
60
+ "finished": "භාවිතා කරන ලද මූලාශ්ර"
61
+ }
35
62
  }
36
63
  }
@@ -32,5 +32,32 @@
32
32
  "wordmarkDownloaded": "Besedna znamka prenesena",
33
33
  "copyLogoFailed": "Kopiranje logotipa ni uspelo",
34
34
  "copyWordmarkFailed": "Kopiranje besedne znamke ni uspelo"
35
+ },
36
+ "assistant": {
37
+ "title": "Vprašajte AI",
38
+ "placeholder": "Postavite vprašanje...",
39
+ "tooltip": "Zastavite vprašanje AI",
40
+ "tryAsking": "Poskusite postaviti vprašanje",
41
+ "askAnything": "Vprašajte karkoli...",
42
+ "clearChat": "Počisti klepet",
43
+ "close": "Zapri",
44
+ "expand": "Razširi",
45
+ "collapse": "Strni",
46
+ "thinking": "Razmišljanje...",
47
+ "askMeAnything": "Vprašaj karkoli",
48
+ "askMeAnythingDescription": "Poiščite pomoč pri krmarjenju po dokumentaciji, razumevanju konceptov in iskanju odgovorov.",
49
+ "faq": "Pogosta vprašanja",
50
+ "chatCleared": "Klepet se ob osvežitvi izbriše",
51
+ "lineBreak": "Prelom vrstice",
52
+ "explainWithAi": "Razloži z AI",
53
+ "toolListPages": "Navedene strani dokumentacije",
54
+ "toolReadPage": "Preberi",
55
+ "loading": {
56
+ "searching": "Iskanje po dokumentaciji",
57
+ "reading": "Prebiranje dokumentov",
58
+ "analyzing": "Analiza vsebine",
59
+ "finding": "Iskanje najboljšega odgovora",
60
+ "finished": "Uporabljeni viri"
61
+ }
35
62
  }
36
63
  }
@@ -32,5 +32,32 @@
32
32
  "wordmarkDownloaded": "Ordmärke nedladdat",
33
33
  "copyLogoFailed": "Kunde inte kopiera logotyp",
34
34
  "copyWordmarkFailed": "Kunde inte kopiera ordmärke"
35
+ },
36
+ "assistant": {
37
+ "title": "Fråga AI",
38
+ "placeholder": "Ställ en fråga...",
39
+ "tooltip": "Ställ en fråga till AI",
40
+ "tryAsking": "Försök att ställa en fråga",
41
+ "askAnything": "Fråga vad som helst...",
42
+ "clearChat": "Rensa chatten",
43
+ "close": "Stäng",
44
+ "expand": "Expandera",
45
+ "collapse": "Kollapsa",
46
+ "thinking": "Funderar...",
47
+ "askMeAnything": "Fråga vad som helst",
48
+ "askMeAnythingDescription": "Få hjälp med att navigera i dokumentationen, förstå begrepp och hitta svar.",
49
+ "faq": "FAQ",
50
+ "chatCleared": "Chatten rensas vid uppdatering",
51
+ "lineBreak": "Radbrytning",
52
+ "explainWithAi": "Förklara med AI",
53
+ "toolListPages": "Listade dokumentationssidor",
54
+ "toolReadPage": "Läs",
55
+ "loading": {
56
+ "searching": "Söker i dokumentationen",
57
+ "reading": "Läser igenom dokumenten",
58
+ "analyzing": "Analysera innehållet",
59
+ "finding": "Att hitta det bästa svaret",
60
+ "finished": "Använda källor"
61
+ }
35
62
  }
36
63
  }
@@ -32,5 +32,32 @@
32
32
  "wordmarkDownloaded": "Wordmark indirildi",
33
33
  "copyLogoFailed": "Logo kopyalanamadı",
34
34
  "copyWordmarkFailed": "Wordmark kopyalanamadı"
35
+ },
36
+ "assistant": {
37
+ "title": "Yapay zekaya sor",
38
+ "placeholder": "Bir soru sorun...",
39
+ "tooltip": "Yapay zekaya bir soru sorun",
40
+ "tryAsking": "Bir soru sormayı deneyin",
41
+ "askAnything": "Her şeyi sor...",
42
+ "clearChat": "Sohbeti temizle",
43
+ "close": "Kapat",
44
+ "expand": "Genişlet",
45
+ "collapse": "Daralt",
46
+ "thinking": "Düşünüyorum...",
47
+ "askMeAnything": "Her şeyi sor",
48
+ "askMeAnythingDescription": "Belgelerde gezinme, kavramları anlama ve yanıt bulma konusunda yardım alın.",
49
+ "faq": "SSS",
50
+ "chatCleared": "Sohbet yenilendiğinde temizlenir",
51
+ "lineBreak": "Satır sonu",
52
+ "explainWithAi": "Yapay zeka ile açıklayın",
53
+ "toolListPages": "Listelenen dokümantasyon sayfaları",
54
+ "toolReadPage": "Oku",
55
+ "loading": {
56
+ "searching": "Dokümantasyonda arama",
57
+ "reading": "Dokümanlar okunuyor",
58
+ "analyzing": "İçerik analiz ediliyor",
59
+ "finding": "En iyi yanıt bulunuyor",
60
+ "finished": "Kullanılan kaynaklar"
61
+ }
35
62
  }
36
63
  }
@@ -32,5 +32,32 @@
32
32
  "wordmarkDownloaded": "Словесний знак завантажено",
33
33
  "copyLogoFailed": "Не вдалося скопіювати логотип",
34
34
  "copyWordmarkFailed": "Не вдалося скопіювати словесний знак"
35
+ },
36
+ "assistant": {
37
+ "title": "Запитайте ШІ",
38
+ "placeholder": "Задайте питання...",
39
+ "tooltip": "Задайте питання ШІ",
40
+ "tryAsking": "Спробуйте задати питання",
41
+ "askAnything": "Запитайте будь-що...",
42
+ "clearChat": "Очистити чат",
43
+ "close": "Закрити",
44
+ "expand": "Розгорнути",
45
+ "collapse": "Згорнути",
46
+ "thinking": "Думаючи...",
47
+ "askMeAnything": "Запитайте будь-що",
48
+ "askMeAnythingDescription": "Отримайте допомогу в навігації документацією, розумінні понять і пошуку відповідей.",
49
+ "faq": "Поширені запитання",
50
+ "chatCleared": "Чат очищається під час оновлення",
51
+ "lineBreak": "Розрив рядка",
52
+ "explainWithAi": "Поясніть за допомогою ШІ",
53
+ "toolListPages": "Перелічені сторінки документації",
54
+ "toolReadPage": "Читати",
55
+ "loading": {
56
+ "searching": "Пошук документації",
57
+ "reading": "Читання документів",
58
+ "analyzing": "Аналіз змісту",
59
+ "finding": "Пошук найкращої відповіді",
60
+ "finished": "Використані джерела"
61
+ }
35
62
  }
36
63
  }
@@ -32,5 +32,32 @@
32
32
  "wordmarkDownloaded": "ورڈ مارک ڈاؤن لوڈ ہو گیا",
33
33
  "copyLogoFailed": "لوگو کاپی نہیں ہو سکا",
34
34
  "copyWordmarkFailed": "ورڈ مارک کاپی نہیں ہو سکا"
35
+ },
36
+ "assistant": {
37
+ "title": "AI سے پوچھیں۔",
38
+ "placeholder": "ایک سوال پوچھیں...",
39
+ "tooltip": "AI سے ایک سوال پوچھیں۔",
40
+ "tryAsking": "ایک سوال پوچھنے کی کوشش کریں۔",
41
+ "askAnything": "کچھ بھی پوچھو...",
42
+ "clearChat": "چیٹ صاف کریں۔",
43
+ "close": "بند",
44
+ "expand": "پھیلائیں۔",
45
+ "collapse": "سمٹنا",
46
+ "thinking": "سوچ رہا ہے...",
47
+ "askMeAnything": "کچھ بھی پوچھو",
48
+ "askMeAnythingDescription": "دستاویزات کو نیویگیٹ کرنے، تصورات کو سمجھنے اور جوابات تلاش کرنے میں مدد حاصل کریں۔",
49
+ "faq": "اکثر پوچھے گئے سوالات",
50
+ "chatCleared": "ریفریش پر چیٹ صاف ہو جاتی ہے۔",
51
+ "lineBreak": "لائن بریک",
52
+ "explainWithAi": "AI کے ساتھ وضاحت کریں۔",
53
+ "toolListPages": "درج دستاویزات کے صفحات",
54
+ "toolReadPage": "پڑھیں",
55
+ "loading": {
56
+ "searching": "دستاویزات کی تلاش",
57
+ "reading": "دستاویزات کے ذریعے پڑھنا",
58
+ "analyzing": "مواد کا تجزیہ",
59
+ "finding": "بہترین جواب تلاش کرنا",
60
+ "finished": "ذرائع استعمال کیے گئے۔"
61
+ }
35
62
  }
36
63
  }
@@ -32,5 +32,32 @@
32
32
  "wordmarkDownloaded": "Đã tải wordmark",
33
33
  "copyLogoFailed": "Không thể sao chép logo",
34
34
  "copyWordmarkFailed": "Không thể sao chép wordmark"
35
+ },
36
+ "assistant": {
37
+ "title": "Hỏi AI",
38
+ "placeholder": "Đặt một câu hỏi...",
39
+ "tooltip": "Đặt câu hỏi cho AI",
40
+ "tryAsking": "Hãy thử đặt một câu hỏi",
41
+ "askAnything": "Hỏi bất cứ điều gì...",
42
+ "clearChat": "Xóa cuộc trò chuyện",
43
+ "close": "Đóng",
44
+ "expand": "Mở rộng",
45
+ "collapse": "Thu gọn",
46
+ "thinking": "Đang suy nghĩ...",
47
+ "askMeAnything": "Hỏi bất cứ điều gì",
48
+ "askMeAnythingDescription": "Nhận trợ giúp điều hướng tài liệu, hiểu các khái niệm và tìm câu trả lời.",
49
+ "faq": "Câu hỏi thường gặp",
50
+ "chatCleared": "Trò chuyện sẽ bị xóa khi làm mới",
51
+ "lineBreak": "Ngắt dòng",
52
+ "explainWithAi": "Giải thích bằng AI",
53
+ "toolListPages": "Các trang tài liệu được liệt kê",
54
+ "toolReadPage": "Đọc",
55
+ "loading": {
56
+ "searching": "Tìm kiếm tài liệu",
57
+ "reading": "Đọc qua tài liệu",
58
+ "analyzing": "Phân tích nội dung",
59
+ "finding": "Tìm câu trả lời tốt nhất",
60
+ "finished": "Nguồn được sử dụng"
61
+ }
35
62
  }
36
63
  }
@@ -32,5 +32,32 @@
32
32
  "wordmarkDownloaded": "文字标识已下载",
33
33
  "copyLogoFailed": "复制图标失败",
34
34
  "copyWordmarkFailed": "复制文字标识失败"
35
+ },
36
+ "assistant": {
37
+ "title": "询问人工智能",
38
+ "placeholder": "问一个问题...",
39
+ "tooltip": "问人工智能一个问题",
40
+ "tryAsking": "尝试提问",
41
+ "askAnything": "想问什么都可以...",
42
+ "clearChat": "清除聊天内容",
43
+ "close": "关闭",
44
+ "expand": "展开",
45
+ "collapse": "崩溃",
46
+ "thinking": "想着……",
47
+ "askMeAnything": "询问任何事情",
48
+ "askMeAnythingDescription": "获取浏览文档、理解概念和寻找答案的帮助。",
49
+ "faq": "常见问题解答",
50
+ "chatCleared": "刷新时聊天会被清除",
51
+ "lineBreak": "换行符",
52
+ "explainWithAi": "用AI解释",
53
+ "toolListPages": "列出的文档页面",
54
+ "toolReadPage": "阅读",
55
+ "loading": {
56
+ "searching": "搜索文档",
57
+ "reading": "通读文档",
58
+ "analyzing": "分析内容",
59
+ "finding": "寻找最佳答案",
60
+ "finished": "使用的来源"
61
+ }
35
62
  }
36
63
  }
package/index.d.ts ADDED
@@ -0,0 +1,33 @@
1
+ import type { AssistantModuleOptions } from './modules/assistant'
2
+ import type { SkillsModuleOptions } from './modules/skills'
3
+
4
+ export interface DocusNuxtConfig {
5
+ assistant?: AssistantModuleOptions
6
+ skills?: SkillsModuleOptions
7
+ }
8
+
9
+ declare module '@nuxt/schema' {
10
+ interface NuxtConfig {
11
+ docus?: DocusNuxtConfig
12
+ /** @deprecated Use `docus.assistant` instead */
13
+ assistant?: AssistantModuleOptions
14
+ }
15
+ interface NuxtOptions {
16
+ docus?: DocusNuxtConfig
17
+ /** @deprecated Use `docus.assistant` instead */
18
+ assistant?: AssistantModuleOptions
19
+ }
20
+ }
21
+
22
+ declare module 'nuxt/schema' {
23
+ interface NuxtConfig {
24
+ docus?: DocusNuxtConfig
25
+ /** @deprecated Use `docus.assistant` instead */
26
+ assistant?: AssistantModuleOptions
27
+ }
28
+ interface NuxtOptions {
29
+ docus?: DocusNuxtConfig
30
+ /** @deprecated Use `docus.assistant` instead */
31
+ assistant?: AssistantModuleOptions
32
+ }
33
+ }
@@ -27,21 +27,30 @@ pnpm add @ai-sdk/mcp @ai-sdk/vue @ai-sdk/gateway ai motion-v shiki shiki-stream
27
27
  export default defineNuxtConfig({
28
28
  modules: ['./modules/assistant'],
29
29
 
30
- assistant: {
31
- apiPath: '/__docus__/assistant',
32
- mcpServer: '/mcp',
33
- model: 'google/gemini-3-flash',
34
- }
30
+ docus: {
31
+ assistant: {
32
+ apiPath: '/__docus__/assistant',
33
+ mcpServer: '/mcp',
34
+ model: 'google/gemini-3-flash',
35
+ },
36
+ },
35
37
  })
36
38
  ```
37
39
 
38
- 4. Set up your API key as an environment variable:
40
+ 4. Authenticate to AI Gateway in one of two ways:
41
+
42
+ - **`AI_GATEWAY_API_KEY`** — Set it in the Vercel project env UI (and locally in `.env` if you want).
43
+ - **OIDC** — On Vercel, `VERCEL_OIDC_TOKEN` is injected automatically; you do **not** add it (or an API key) in the dashboard. For local builds, run `vercel env pull` on a linked project so `.env` contains the token:
39
44
 
40
45
  ```bash
46
+ # Option A — API key (dashboard + optional local .env)
41
47
  AI_GATEWAY_API_KEY=your-gateway-key
48
+
49
+ # Option B — local only, after vercel env pull (not set manually on Vercel)
50
+ VERCEL_OIDC_TOKEN=...
42
51
  ```
43
52
 
44
- > **Note:** The module will only be enabled if `AI_GATEWAY_API_KEY` is detected. If no key is found, the module is disabled and a message is logged to the console.
53
+ > **Note:** The module enables when `AI_GATEWAY_API_KEY` or `VERCEL_OIDC_TOKEN` is present at build time. On Vercel, OIDC covers that without you creating env vars in the UI. If neither is available at build, the module stays disabled and a warning is logged.
45
54
 
46
55
  ## Usage
47
56
 
@@ -199,7 +208,7 @@ Composable for syntax highlighting code blocks with Shiki.
199
208
  - Nuxt 4.x
200
209
  - Nuxt UI 3.x (for `USlideover`, `UButton`, `UTextarea`, `UChatMessages`, etc.)
201
210
  - An MCP server running (path configurable via `mcpServer`)
202
- - `AI_GATEWAY_API_KEY` environment variable
211
+ - `AI_GATEWAY_API_KEY` or `VERCEL_OIDC_TOKEN` at build time
203
212
 
204
213
  ## Customization
205
214