Merge branch 'main' into feat/dalle-plugin
This commit is contained in:
commit
6d8150a1b0
|
@ -1,9 +1,6 @@
|
||||||
import { decode } from "html-entities";
|
import { decode } from "html-entities";
|
||||||
import { convert as htmlToText } from "html-to-text";
|
import { convert as htmlToText } from "html-to-text";
|
||||||
import { Tool } from "langchain/tools";
|
import { Tool } from "langchain/tools";
|
||||||
import fetch from "node-fetch";
|
|
||||||
|
|
||||||
const DDG_PROXY_URL = process.env.DDG_PROXY_URL;
|
|
||||||
|
|
||||||
const SEARCH_REGEX =
|
const SEARCH_REGEX =
|
||||||
/DDG\.pageLayout\.load\('d',(\[.+\])\);DDG\.duckbar\.load\('images'/;
|
/DDG\.pageLayout\.load\('d',(\[.+\])\);DDG\.duckbar\.load\('images'/;
|
||||||
|
@ -326,15 +323,9 @@ async function search(
|
||||||
// cdrexp: 'b'
|
// cdrexp: 'b'
|
||||||
}),
|
}),
|
||||||
};
|
};
|
||||||
let proxyAgent;
|
|
||||||
if (DDG_PROXY_URL) {
|
|
||||||
const { HttpsProxyAgent } = require("https-proxy-agent");
|
|
||||||
proxyAgent = new HttpsProxyAgent(DDG_PROXY_URL);
|
|
||||||
}
|
|
||||||
|
|
||||||
const response = await fetch(
|
const response = await fetch(
|
||||||
`https://links.duckduckgo.com/d.js?${queryString(queryObject)}`,
|
`https://links.duckduckgo.com/d.js?${queryString(queryObject)}`,
|
||||||
{ agent: proxyAgent },
|
|
||||||
);
|
);
|
||||||
const data = await response.text();
|
const data = await response.text();
|
||||||
|
|
||||||
|
@ -464,14 +455,8 @@ function queryString(query: Record<string, string>) {
|
||||||
|
|
||||||
async function getVQD(query: string, ia = "web") {
|
async function getVQD(query: string, ia = "web") {
|
||||||
try {
|
try {
|
||||||
let proxyAgent;
|
|
||||||
if (DDG_PROXY_URL) {
|
|
||||||
const { HttpsProxyAgent } = require("https-proxy-agent");
|
|
||||||
proxyAgent = new HttpsProxyAgent(DDG_PROXY_URL);
|
|
||||||
}
|
|
||||||
const response = await fetch(
|
const response = await fetch(
|
||||||
`https://duckduckgo.com/?${queryString({ q: query, ia })}`,
|
`https://duckduckgo.com/?${queryString({ q: query, ia })}`,
|
||||||
{ agent: proxyAgent },
|
|
||||||
);
|
);
|
||||||
const data = await response.text();
|
const data = await response.text();
|
||||||
return VQD_REGEX.exec(data)![1];
|
return VQD_REGEX.exec(data)![1];
|
||||||
|
|
|
@ -124,9 +124,10 @@ const id: PartialLocaleType = {
|
||||||
},
|
},
|
||||||
Clear: {
|
Clear: {
|
||||||
Title: "Hapus Semua Data",
|
Title: "Hapus Semua Data",
|
||||||
SubTitle: "Menghapus semua pesan dan pengaturan",
|
SubTitle: "Semua data yang tersimpan secara lokal akan dihapus",
|
||||||
Action: "Hapus",
|
Action: "Hapus",
|
||||||
Confirm: "Anda yakin ingin menghapus semua pesan dan pengaturan?",
|
Confirm:
|
||||||
|
"Apakah Anda yakin ingin menghapus semua data yang tersimpan secara lokal?",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Lang: {
|
Lang: {
|
||||||
|
@ -160,6 +161,37 @@ const id: PartialLocaleType = {
|
||||||
Title: "Hasilkan Judul Otomatis",
|
Title: "Hasilkan Judul Otomatis",
|
||||||
SubTitle: "Hasilkan judul yang sesuai berdasarkan konten percakapan",
|
SubTitle: "Hasilkan judul yang sesuai berdasarkan konten percakapan",
|
||||||
},
|
},
|
||||||
|
Sync: {
|
||||||
|
CloudState: "Pembaruan Terakhir",
|
||||||
|
NotSyncYet: "Belum disinkronkan",
|
||||||
|
Success: "Sinkronisasi Berhasil",
|
||||||
|
Fail: "Sinkronisasi Gagal",
|
||||||
|
|
||||||
|
Config: {
|
||||||
|
Modal: {
|
||||||
|
Title: "Konfigurasi Sinkronisasi",
|
||||||
|
},
|
||||||
|
SyncType: {
|
||||||
|
Title: "Tipe Sinkronisasi",
|
||||||
|
SubTitle: "Pilih layanan sinkronisasi favorit Anda",
|
||||||
|
},
|
||||||
|
Proxy: {
|
||||||
|
Title: "Aktifkan Proxy CORS",
|
||||||
|
SubTitle:
|
||||||
|
"Aktifkan Proxy untuk menghindari pembatasan atau pemblokiran lintas sumber",
|
||||||
|
},
|
||||||
|
ProxyUrl: {
|
||||||
|
Title: "Lokasi Titik Akhir Proxy CORS",
|
||||||
|
SubTitle: "Hanya berlaku untuk Proxy CORS bawaan untuk proyek ini",
|
||||||
|
},
|
||||||
|
|
||||||
|
WebDav: {
|
||||||
|
Endpoint: "Lokasi Titik Akhir WebDAV",
|
||||||
|
UserName: "User Pengguna",
|
||||||
|
Password: "Kata Sandi",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
SendKey: "Kirim",
|
SendKey: "Kirim",
|
||||||
Theme: "Tema",
|
Theme: "Tema",
|
||||||
TightBorder: "Batas Ketat",
|
TightBorder: "Batas Ketat",
|
||||||
|
@ -265,8 +297,9 @@ const id: PartialLocaleType = {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Copy: {
|
Copy: {
|
||||||
Success: "Berhasil disalin ke clipboard",
|
Success: "Tersalin ke clipboard",
|
||||||
Failed: "Gagal menyalin, berikan izin untuk memberikan izin",
|
Failed:
|
||||||
|
"Gagal menyalin, mohon berikan izin untuk mengakses clipboard atau Clipboard API tidak didukung (Tauri)",
|
||||||
},
|
},
|
||||||
Context: {
|
Context: {
|
||||||
Toast: (x: any) => `Dengan ${x} promp kontekstual`,
|
Toast: (x: any) => `Dengan ${x} promp kontekstual`,
|
||||||
|
@ -345,7 +378,7 @@ const id: PartialLocaleType = {
|
||||||
Model: "Model",
|
Model: "Model",
|
||||||
Messages: "Pesan",
|
Messages: "Pesan",
|
||||||
Topic: "Topik",
|
Topic: "Topik",
|
||||||
Time: "Waktu",
|
Time: "Tanggal & Waktu",
|
||||||
},
|
},
|
||||||
URLCommand: {
|
URLCommand: {
|
||||||
Code: "Kode akses terdeteksi dari url, konfirmasi untuk mendaftar ? ",
|
Code: "Kode akses terdeteksi dari url, konfirmasi untuk mendaftar ? ",
|
||||||
|
|
Loading…
Reference in New Issue