mirror of
https://wget.la/https://github.com/leookun/cursor-byok
synced 2026-10-06 05:12:03 +08:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2068ab2051 | ||
|
|
d9267eea41 | ||
|
|
4420c33f81 | ||
|
|
4909fbff4f | ||
|
|
3725f27d7b | ||
|
|
14eb18b8b3 |
Generated
+1
-1
@@ -1172,7 +1172,7 @@ checksum = "52560adf09603e58c9a7ee1fe1dcb95a16927b17c127f0ac02d6e768a0e25bc1"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cursor-byok-desktop"
|
name = "cursor-byok-desktop"
|
||||||
version = "1.0.0"
|
version = "1.0.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"axum",
|
"axum",
|
||||||
"cursor-server",
|
"cursor-server",
|
||||||
|
|||||||
Generated
+2
-2
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "cursor-byok-desktop",
|
"name": "cursor-byok-desktop",
|
||||||
"version": "1.0.0",
|
"version": "1.0.1",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "cursor-byok-desktop",
|
"name": "cursor-byok-desktop",
|
||||||
"version": "1.0.0",
|
"version": "1.0.1",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@floating-ui/dom": "^1.8.0",
|
"@floating-ui/dom": "^1.8.0",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "cursor-byok-desktop",
|
"name": "cursor-byok-desktop",
|
||||||
"version": "1.0.0",
|
"version": "1.0.1",
|
||||||
"description": "Cursor BYOK desktop management application",
|
"description": "Cursor BYOK desktop management application",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "cursor-byok-desktop"
|
name = "cursor-byok-desktop"
|
||||||
version = "1.0.0"
|
version = "1.0.1"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
publish = false
|
publish = false
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://schema.tauri.app/config/2",
|
"$schema": "https://schema.tauri.app/config/2",
|
||||||
"productName": "Cursor BYOK",
|
"productName": "Cursor BYOK",
|
||||||
"version": "1.0.0",
|
"version": "1.0.1",
|
||||||
"identifier": "dev.cursorbyok.desktop",
|
"identifier": "dev.cursorbyok.desktop",
|
||||||
"build": {
|
"build": {
|
||||||
"beforeDevCommand": "npm run dev",
|
"beforeDevCommand": "npm run dev",
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ let proxySettings: ProxySettings = {
|
|||||||
has_password: false,
|
has_password: false,
|
||||||
};
|
};
|
||||||
let tabSettings: TabSettings = { mode: "public", address: "" };
|
let tabSettings: TabSettings = { mode: "public", address: "" };
|
||||||
let storage: StatisticsStorage = { bytes: 26_004_480, call_count: calls.length, trace_count: calls.length };
|
let storage: StatisticsStorage = { call_count: calls.length, trace_count: calls.length };
|
||||||
|
|
||||||
export function installDemoApi() {
|
export function installDemoApi() {
|
||||||
const nativeFetch = window.fetch.bind(window);
|
const nativeFetch = window.fetch.bind(window);
|
||||||
@@ -151,9 +151,7 @@ export function installDemoApi() {
|
|||||||
if (path === "/settings/storage/statistics" && method === "GET") return json(storage);
|
if (path === "/settings/storage/statistics" && method === "GET") return json(storage);
|
||||||
if (path === "/settings/storage/statistics") {
|
if (path === "/settings/storage/statistics") {
|
||||||
const scope = (body as { scope?: string } | null)?.scope ?? "details";
|
const scope = (body as { scope?: string } | null)?.scope ?? "details";
|
||||||
storage = scope === "all"
|
storage = scope === "all" ? { call_count: 0, trace_count: 0 } : storage;
|
||||||
? { bytes: 0, call_count: 0, trace_count: 0 }
|
|
||||||
: { ...storage, bytes: 0 };
|
|
||||||
return json(storage);
|
return json(storage);
|
||||||
}
|
}
|
||||||
if (path === "/settings/proxy" && method === "GET") return json(proxySettings);
|
if (path === "/settings/proxy" && method === "GET") return json(proxySettings);
|
||||||
|
|||||||
@@ -40,13 +40,16 @@ export function SettingsPage() {
|
|||||||
const [editingTab, setEditingTab] = useState(false);
|
const [editingTab, setEditingTab] = useState(false);
|
||||||
const [savingTab, setSavingTab] = useState(false);
|
const [savingTab, setSavingTab] = useState(false);
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
void Promise.all([api.statisticsStorage(), api.proxySettings(), api.tabSettings()]).then(([nextStorage, nextProxy, nextTab]) => {
|
const report = (cause: unknown) => message(cause instanceof Error ? cause.message : String(cause));
|
||||||
setStorage(nextStorage);
|
void api.statisticsStorage().then(setStorage).catch(report);
|
||||||
setOutboundProxy(nextProxy);
|
void api.proxySettings().then((next) => {
|
||||||
setProxyDraft({ mode: nextProxy.mode, address: nextProxy.address, auth_enabled: nextProxy.auth_enabled, username: nextProxy.username, password: "" });
|
setOutboundProxy(next);
|
||||||
setTabSettings(nextTab);
|
setProxyDraft({ mode: next.mode, address: next.address, auth_enabled: next.auth_enabled, username: next.username, password: "" });
|
||||||
setTabDraft(nextTab);
|
}).catch(report);
|
||||||
}).catch((cause) => message(cause instanceof Error ? cause.message : String(cause)));
|
void api.tabSettings().then((next) => {
|
||||||
|
setTabSettings(next);
|
||||||
|
setTabDraft(next);
|
||||||
|
}).catch(report);
|
||||||
}, [message]);
|
}, [message]);
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setProxyPort(String(ports.proxy_port));
|
setProxyPort(String(ports.proxy_port));
|
||||||
@@ -149,14 +152,6 @@ export function SettingsPage() {
|
|||||||
setSavingTab(false);
|
setSavingTab(false);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
const formatBytes = (bytes: number) => {
|
|
||||||
if (bytes < 1024) return `${bytes} B`;
|
|
||||||
const units = ["KB", "MB", "GB", "TB"];
|
|
||||||
let value = bytes / 1024;
|
|
||||||
let unit = 0;
|
|
||||||
while (value >= 1024 && unit < units.length - 1) { value /= 1024; unit += 1; }
|
|
||||||
return `${value < 10 ? value.toFixed(1) : Math.round(value)} ${units[unit]}`;
|
|
||||||
};
|
|
||||||
const clearTitle = clearScope === "all" ? t("确定要清理全部统计数据吗?") : t("确定要清理详细记录吗?");
|
const clearTitle = clearScope === "all" ? t("确定要清理全部统计数据吗?") : t("确定要清理详细记录吗?");
|
||||||
const clearDescription = clearScope === "all"
|
const clearDescription = clearScope === "all"
|
||||||
? t("所有调用汇总、详细内容和追踪记录都会被删除。模型配置、CA 和应用设置不会受到影响,此操作无法撤销。")
|
? t("所有调用汇总、详细内容和追踪记录都会被删除。模型配置、CA 和应用设置不会受到影响,此操作无法撤销。")
|
||||||
@@ -283,7 +278,7 @@ export function SettingsPage() {
|
|||||||
<div className={styles.storageRow}>
|
<div className={styles.storageRow}>
|
||||||
<div>
|
<div>
|
||||||
<strong>{t("统计数据")}</strong>
|
<strong>{t("统计数据")}</strong>
|
||||||
<small>{storage ? formatBytes(storage.bytes) : t("计算中…")}</small>
|
<small>{storage ? t("调用记录 {calls} 条 · 追踪记录 {traces} 条", { calls: storage.call_count, traces: storage.trace_count }) : t("计算中…")}</small>
|
||||||
</div>
|
</div>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
|
|||||||
@@ -116,7 +116,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"file": "features/settings/CommitSettingsCard.tsx",
|
"file": "features/settings/CommitSettingsCard.tsx",
|
||||||
"line": 176,
|
"line": 178,
|
||||||
"column": 10
|
"column": 10
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -131,7 +131,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 187,
|
"line": 182,
|
||||||
"column": 82
|
"column": 82
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -148,7 +148,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/CommitSettingsCard.tsx",
|
"file": "features/settings/CommitSettingsCard.tsx",
|
||||||
"line": 223,
|
"line": 225,
|
||||||
"column": 23
|
"column": 23
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -372,7 +372,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 96,
|
"line": 99,
|
||||||
"column": 38
|
"column": 38
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -401,7 +401,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 282,
|
"line": 277,
|
||||||
"column": 26
|
"column": 26
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -674,12 +674,12 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/CommitSettingsCard.tsx",
|
"file": "features/settings/CommitSettingsCard.tsx",
|
||||||
"line": 173,
|
"line": 175,
|
||||||
"column": 10
|
"column": 10
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"file": "features/settings/CommitSettingsCard.tsx",
|
"file": "features/settings/CommitSettingsCard.tsx",
|
||||||
"line": 205,
|
"line": 207,
|
||||||
"column": 16
|
"column": 16
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -764,8 +764,8 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 286,
|
"line": 281,
|
||||||
"column": 60
|
"column": 131
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -790,17 +790,17 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 66,
|
"line": 69,
|
||||||
"column": 42
|
"column": 42
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 192,
|
"line": 187,
|
||||||
"column": 22
|
"column": 22
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 219,
|
"line": 214,
|
||||||
"column": 58
|
"column": 58
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -899,7 +899,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 259,
|
"line": 254,
|
||||||
"column": 43
|
"column": 43
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -923,7 +923,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 121,
|
"line": 124,
|
||||||
"column": 15
|
"column": 15
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -947,7 +947,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 309,
|
"line": 304,
|
||||||
"column": 24
|
"column": 24
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -1115,12 +1115,12 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"file": "features/settings/CommitSettingsCard.tsx",
|
"file": "features/settings/CommitSettingsCard.tsx",
|
||||||
"line": 165,
|
"line": 167,
|
||||||
"column": 78
|
"column": 78
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"file": "features/settings/CommitSettingsCard.tsx",
|
"file": "features/settings/CommitSettingsCard.tsx",
|
||||||
"line": 212,
|
"line": 214,
|
||||||
"column": 21
|
"column": 21
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -1135,12 +1135,12 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 183,
|
"line": 178,
|
||||||
"column": 81
|
"column": 81
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 301,
|
"line": 296,
|
||||||
"column": 22
|
"column": 22
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -1246,7 +1246,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 145,
|
"line": 148,
|
||||||
"column": 15
|
"column": 15
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -1396,7 +1396,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 244,
|
"line": 239,
|
||||||
"column": 27
|
"column": 27
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -1469,7 +1469,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 311,
|
"line": 306,
|
||||||
"column": 42
|
"column": 42
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -1534,7 +1534,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 293,
|
"line": 288,
|
||||||
"column": 14
|
"column": 14
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -1563,7 +1563,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 244,
|
"line": 239,
|
||||||
"column": 39
|
"column": 39
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -1630,12 +1630,12 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 251,
|
"line": 246,
|
||||||
"column": 22
|
"column": 22
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 257,
|
"line": 252,
|
||||||
"column": 26
|
"column": 26
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -1717,7 +1717,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 160,
|
"line": 155,
|
||||||
"column": 66
|
"column": 66
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -1729,7 +1729,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 277,
|
"line": 272,
|
||||||
"column": 52
|
"column": 52
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -1903,7 +1903,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/CommitSettingsCard.tsx",
|
"file": "features/settings/CommitSettingsCard.tsx",
|
||||||
"line": 162,
|
"line": 164,
|
||||||
"column": 8
|
"column": 8
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -2179,7 +2179,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 181,
|
"line": 176,
|
||||||
"column": 26
|
"column": 26
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -2244,7 +2244,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/CommitSettingsCard.tsx",
|
"file": "features/settings/CommitSettingsCard.tsx",
|
||||||
"line": 183,
|
"line": 185,
|
||||||
"column": 26
|
"column": 26
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -2302,7 +2302,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 237,
|
"line": 232,
|
||||||
"column": 78
|
"column": 78
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -2348,7 +2348,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 241,
|
"line": 236,
|
||||||
"column": 21
|
"column": 21
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -2649,7 +2649,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "shared/api.ts",
|
"file": "shared/api.ts",
|
||||||
"line": 528,
|
"line": 527,
|
||||||
"column": 43
|
"column": 43
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -2776,7 +2776,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 96,
|
"line": 99,
|
||||||
"column": 55
|
"column": 55
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -2940,7 +2940,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 171,
|
"line": 166,
|
||||||
"column": 16
|
"column": 16
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -2964,7 +2964,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 269,
|
"line": 264,
|
||||||
"column": 26
|
"column": 26
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -2988,7 +2988,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "shared/api.ts",
|
"file": "shared/api.ts",
|
||||||
"line": 523,
|
"line": 522,
|
||||||
"column": 43
|
"column": 43
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -3012,7 +3012,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 302,
|
"line": 297,
|
||||||
"column": 23
|
"column": 23
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -3067,7 +3067,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 139,
|
"line": 142,
|
||||||
"column": 83
|
"column": 83
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -3142,7 +3142,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "shared/api.ts",
|
"file": "shared/api.ts",
|
||||||
"line": 457,
|
"line": 456,
|
||||||
"column": 21
|
"column": 21
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -3387,7 +3387,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 240,
|
"line": 235,
|
||||||
"column": 22
|
"column": 22
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -3514,7 +3514,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 163,
|
"line": 158,
|
||||||
"column": 7
|
"column": 7
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -3838,7 +3838,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 248,
|
"line": 243,
|
||||||
"column": 26
|
"column": 26
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -3874,7 +3874,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 59,
|
"line": 62,
|
||||||
"column": 34
|
"column": 34
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -3963,12 +3963,12 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"file": "features/settings/CommitSettingsCard.tsx",
|
"file": "features/settings/CommitSettingsCard.tsx",
|
||||||
"line": 167,
|
"line": 169,
|
||||||
"column": 36
|
"column": 36
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"file": "features/settings/CommitSettingsCard.tsx",
|
"file": "features/settings/CommitSettingsCard.tsx",
|
||||||
"line": 211,
|
"line": 213,
|
||||||
"column": 22
|
"column": 22
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -3983,7 +3983,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 184,
|
"line": 179,
|
||||||
"column": 133
|
"column": 133
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -4350,7 +4350,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/CommitSettingsCard.tsx",
|
"file": "features/settings/CommitSettingsCard.tsx",
|
||||||
"line": 57,
|
"line": 59,
|
||||||
"column": 63
|
"column": 63
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -4495,7 +4495,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 160,
|
"line": 155,
|
||||||
"column": 45
|
"column": 45
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -4521,7 +4521,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 285,
|
"line": 280,
|
||||||
"column": 22
|
"column": 22
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -4603,7 +4603,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/CommitSettingsCard.tsx",
|
"file": "features/settings/CommitSettingsCard.tsx",
|
||||||
"line": 215,
|
"line": 217,
|
||||||
"column": 14
|
"column": 14
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -4669,6 +4669,21 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"bb4e1ee4a6ae46df": {
|
||||||
|
"source": "调用记录 {calls} 条 · 追踪记录 {traces} 条",
|
||||||
|
"kind": "template",
|
||||||
|
"placeholders": [
|
||||||
|
"calls",
|
||||||
|
"traces"
|
||||||
|
],
|
||||||
|
"refs": [
|
||||||
|
{
|
||||||
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
|
"line": 281,
|
||||||
|
"column": 31
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
"bb7efdcb6af6e805": {
|
"bb7efdcb6af6e805": {
|
||||||
"source": "默认暗色",
|
"source": "默认暗色",
|
||||||
"kind": "text",
|
"kind": "text",
|
||||||
@@ -4676,7 +4691,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 277,
|
"line": 272,
|
||||||
"column": 40
|
"column": 40
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -4962,12 +4977,12 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 169,
|
"line": 164,
|
||||||
"column": 22
|
"column": 22
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 175,
|
"line": 170,
|
||||||
"column": 20
|
"column": 20
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -4979,7 +4994,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 206,
|
"line": 201,
|
||||||
"column": 21
|
"column": 21
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -5015,7 +5030,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 162,
|
"line": 157,
|
||||||
"column": 7
|
"column": 7
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -5236,7 +5251,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/CommitSettingsCard.tsx",
|
"file": "features/settings/CommitSettingsCard.tsx",
|
||||||
"line": 147,
|
"line": 149,
|
||||||
"column": 15
|
"column": 15
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -5383,7 +5398,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 321,
|
"line": 316,
|
||||||
"column": 30
|
"column": 30
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -5577,12 +5592,12 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/CommitSettingsCard.tsx",
|
"file": "features/settings/CommitSettingsCard.tsx",
|
||||||
"line": 187,
|
"line": 189,
|
||||||
"column": 24
|
"column": 24
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"file": "features/settings/CommitSettingsCard.tsx",
|
"file": "features/settings/CommitSettingsCard.tsx",
|
||||||
"line": 195,
|
"line": 197,
|
||||||
"column": 24
|
"column": 24
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -5647,7 +5662,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 72,
|
"line": 75,
|
||||||
"column": 17
|
"column": 17
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -5741,7 +5756,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 166,
|
"line": 161,
|
||||||
"column": 26
|
"column": 26
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -5856,7 +5871,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 225,
|
"line": 220,
|
||||||
"column": 16
|
"column": 16
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -6017,7 +6032,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 252,
|
"line": 247,
|
||||||
"column": 21
|
"column": 21
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -6103,7 +6118,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 193,
|
"line": 188,
|
||||||
"column": 21
|
"column": 21
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -6301,7 +6316,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 312,
|
"line": 307,
|
||||||
"column": 38
|
"column": 38
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -6313,7 +6328,7 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/CommitSettingsCard.tsx",
|
"file": "features/settings/CommitSettingsCard.tsx",
|
||||||
"line": 167,
|
"line": 169,
|
||||||
"column": 24
|
"column": 24
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -6328,7 +6343,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 184,
|
"line": 179,
|
||||||
"column": 121
|
"column": 121
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -6357,17 +6372,17 @@
|
|||||||
"refs": [
|
"refs": [
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 67,
|
"line": 70,
|
||||||
"column": 46
|
"column": 46
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 205,
|
"line": 200,
|
||||||
"column": 22
|
"column": 22
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"file": "features/settings/SettingsPage.tsx",
|
"file": "features/settings/SettingsPage.tsx",
|
||||||
"line": 220,
|
"line": 215,
|
||||||
"column": 58
|
"column": 58
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -318,6 +318,7 @@
|
|||||||
"ba6403d22876d626": "Cooling down",
|
"ba6403d22876d626": "Cooling down",
|
||||||
"baff6c144180b185": "Connectivity tests completed: {successful} succeeded, {failed} failed",
|
"baff6c144180b185": "Connectivity tests completed: {successful} succeeded, {failed} failed",
|
||||||
"bb2b7736433ae867": "Cursor tracing",
|
"bb2b7736433ae867": "Cursor tracing",
|
||||||
|
"bb4e1ee4a6ae46df": "{calls} call records · {traces} trace records",
|
||||||
"bb7efdcb6af6e805": "Default dark",
|
"bb7efdcb6af6e805": "Default dark",
|
||||||
"bda62ce1d5e4ace9": "Tell us why",
|
"bda62ce1d5e4ace9": "Tell us why",
|
||||||
"bda74b5674b6a57d": "Initialize plugins",
|
"bda74b5674b6a57d": "Initialize plugins",
|
||||||
|
|||||||
@@ -318,6 +318,7 @@
|
|||||||
"ba6403d22876d626": "Em resfriamento",
|
"ba6403d22876d626": "Em resfriamento",
|
||||||
"baff6c144180b185": "Testes de conectividade concluídos: {successful} com sucesso, {failed} com falha",
|
"baff6c144180b185": "Testes de conectividade concluídos: {successful} com sucesso, {failed} com falha",
|
||||||
"bb2b7736433ae867": "Rastreamento do Cursor",
|
"bb2b7736433ae867": "Rastreamento do Cursor",
|
||||||
|
"bb4e1ee4a6ae46df": "{calls} registros de chamadas · {traces} registros de rastreamento",
|
||||||
"bb7efdcb6af6e805": "Escuro padrão",
|
"bb7efdcb6af6e805": "Escuro padrão",
|
||||||
"bda62ce1d5e4ace9": "Conte-nos o motivo",
|
"bda62ce1d5e4ace9": "Conte-nos o motivo",
|
||||||
"bda74b5674b6a57d": "Inicializar plugins",
|
"bda74b5674b6a57d": "Inicializar plugins",
|
||||||
|
|||||||
@@ -318,6 +318,7 @@
|
|||||||
"ba6403d22876d626": "冷却中",
|
"ba6403d22876d626": "冷却中",
|
||||||
"baff6c144180b185": "连通性测试完成:成功 {successful},失败 {failed}",
|
"baff6c144180b185": "连通性测试完成:成功 {successful},失败 {failed}",
|
||||||
"bb2b7736433ae867": "Cursor 追踪",
|
"bb2b7736433ae867": "Cursor 追踪",
|
||||||
|
"bb4e1ee4a6ae46df": "调用记录 {calls} 条 · 追踪记录 {traces} 条",
|
||||||
"bb7efdcb6af6e805": "默认暗色",
|
"bb7efdcb6af6e805": "默认暗色",
|
||||||
"bda62ce1d5e4ace9": "可以告诉我们原因",
|
"bda62ce1d5e4ace9": "可以告诉我们原因",
|
||||||
"bda74b5674b6a57d": "初始化插件",
|
"bda74b5674b6a57d": "初始化插件",
|
||||||
|
|||||||
@@ -114,7 +114,6 @@ export interface PortSettings {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface StatisticsStorage {
|
export interface StatisticsStorage {
|
||||||
bytes: number;
|
|
||||||
call_count: number;
|
call_count: number;
|
||||||
trace_count: number;
|
trace_count: number;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -253,8 +253,7 @@ mod tests {
|
|||||||
else {
|
else {
|
||||||
panic!("expected an InteractionQuery");
|
panic!("expected an InteractionQuery");
|
||||||
};
|
};
|
||||||
let Some(pb::interaction_query::Query::WebSearchRequestQuery(request)) = query.query
|
let Some(pb::interaction_query::Query::WebSearchRequestQuery(request)) = query.query else {
|
||||||
else {
|
|
||||||
panic!("expected a WebSearchRequestQuery");
|
panic!("expected a WebSearchRequestQuery");
|
||||||
};
|
};
|
||||||
assert_eq!(request.args.unwrap().search_term, "lmarena leaderboard");
|
assert_eq!(request.args.unwrap().search_term, "lmarena leaderboard");
|
||||||
|
|||||||
@@ -188,7 +188,11 @@ impl CursorHarness {
|
|||||||
.transpose()?
|
.transpose()?
|
||||||
.unwrap_or(false);
|
.unwrap_or(false);
|
||||||
if !settings_applied {
|
if !settings_applied {
|
||||||
process::terminate_cursor().await?;
|
// Terminating Cursor only makes the freshly written http.proxy take effect
|
||||||
|
// sooner; it is optional, so a failed probe or kill must not block takeover.
|
||||||
|
if let Err(error) = process::terminate_cursor().await {
|
||||||
|
tracing::warn!(%error, "could not terminate Cursor before applying proxy settings");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if proxy.running() {
|
if proxy.running() {
|
||||||
if let Some(url) = proxy.url() {
|
if let Some(url) = proxy.url() {
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
//! Persists content-addressed blobs and their edges.
|
//! Row accounting and cleanup for disposable observability data.
|
||||||
//! Storage accounting and cleanup for disposable observability data.
|
|
||||||
|
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
@@ -9,7 +8,6 @@ use super::Store;
|
|||||||
|
|
||||||
#[derive(Clone, Copy, Debug, Default, Serialize)]
|
#[derive(Clone, Copy, Debug, Default, Serialize)]
|
||||||
pub struct StatisticsStorage {
|
pub struct StatisticsStorage {
|
||||||
pub bytes: i64,
|
|
||||||
pub call_count: i64,
|
pub call_count: i64,
|
||||||
pub trace_count: i64,
|
pub trace_count: i64,
|
||||||
}
|
}
|
||||||
@@ -24,39 +22,13 @@ pub enum StatisticsStorageScope {
|
|||||||
|
|
||||||
impl Store {
|
impl Store {
|
||||||
pub async fn statistics_storage(&self) -> Result<StatisticsStorage> {
|
pub async fn statistics_storage(&self) -> Result<StatisticsStorage> {
|
||||||
let (bytes, call_count, trace_count) = sqlx::query_as::<_, (i64, i64, i64)>(
|
let (call_count, trace_count) = sqlx::query_as::<_, (i64, i64)>(
|
||||||
r#"
|
"SELECT (SELECT COUNT(*) FROM llm_calls), (SELECT COUNT(*) FROM cursor_run_traces)",
|
||||||
SELECT
|
|
||||||
COALESCE((
|
|
||||||
SELECT SUM(
|
|
||||||
LENGTH(call_id) + LENGTH(run_id) + LENGTH(conversation_id) +
|
|
||||||
LENGTH(provider_type) + LENGTH(provider_url) + LENGTH(request_type) +
|
|
||||||
LENGTH(request_url) + LENGTH(model_id) + LENGTH(display_name) +
|
|
||||||
LENGTH(status) + COALESCE(LENGTH(finish_reason), 0) +
|
|
||||||
COALESCE(LENGTH(usage_json), 0) + COALESCE(LENGTH(error_kind), 0) +
|
|
||||||
COALESCE(LENGTH(error_message), 0) + 256
|
|
||||||
) FROM llm_calls
|
|
||||||
), 0) +
|
|
||||||
COALESCE((SELECT SUM(LENGTH(headers_json) + LENGTH(body_json) + 24) FROM llm_call_requests), 0) +
|
|
||||||
COALESCE((SELECT SUM(LENGTH(data) + 24) FROM llm_call_response_chunks), 0) +
|
|
||||||
COALESCE((
|
|
||||||
SELECT SUM(
|
|
||||||
LENGTH(request_id) + COALESCE(LENGTH(conversation_id), 0) +
|
|
||||||
LENGTH(route) + COALESCE(LENGTH(model_id), 0) + LENGTH(status) +
|
|
||||||
COALESCE(LENGTH(error_message), 0) + 96
|
|
||||||
) FROM cursor_run_traces
|
|
||||||
), 0) +
|
|
||||||
COALESCE((SELECT SUM(LENGTH(artifact_type) + LENGTH(source) + LENGTH(metadata_json) + 48) FROM cursor_run_trace_artifacts), 0) +
|
|
||||||
COALESCE((SELECT SUM(LENGTH(data)) FROM blobs WHERE blob_id IN (SELECT blob_id FROM cursor_run_trace_artifacts)), 0),
|
|
||||||
(SELECT COUNT(*) FROM llm_calls),
|
|
||||||
(SELECT COUNT(*) FROM cursor_run_traces)
|
|
||||||
"#,
|
|
||||||
)
|
)
|
||||||
.fetch_one(&self.pool)
|
.fetch_one(&self.pool)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
Ok(StatisticsStorage {
|
Ok(StatisticsStorage {
|
||||||
bytes,
|
|
||||||
call_count,
|
call_count,
|
||||||
trace_count,
|
trace_count,
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user