tokentracker-cli 0.87.14 → 0.87.16
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.
- package/README.de.md +2 -2
- package/README.ja.md +2 -2
- package/README.ko.md +2 -2
- package/README.md +3 -3
- package/README.zh-CN.md +2 -2
- package/dashboard/dist/assets/{AchievementBadge-D06ffgXR.js → AchievementBadge-DaKHLTL2.js} +1 -1
- package/dashboard/dist/assets/{AchievementsPage-D6uGfLgx.js → AchievementsPage-DJdtjodG.js} +2 -2
- package/dashboard/dist/assets/{AchievementsSection-Chjq16ns.js → AchievementsSection-DVtxGDIP.js} +1 -1
- package/dashboard/dist/assets/{BadgeDetailModal-D42zXSN1.js → BadgeDetailModal-CF2dlQkT.js} +1 -1
- package/dashboard/dist/assets/{Card-DGOEtq_3.js → Card-DuQWS5aB.js} +1 -1
- package/dashboard/dist/assets/{ClawdAnimated-B6HFLXEb.js → ClawdAnimated-l8AN6_pc.js} +1 -1
- package/dashboard/dist/assets/{CommandPalette-1tyBT_Gf.js → CommandPalette-DWKyGhWG.js} +1 -1
- package/dashboard/dist/assets/{CommunityStatsModal-Cvbk67o1.js → CommunityStatsModal-CoJ9i3QH.js} +1 -1
- package/dashboard/dist/assets/{ConfirmModal-RHQRpQG1.js → ConfirmModal-DM6A6p4g.js} +1 -1
- package/dashboard/dist/assets/{Controls-WATRUYwX.js → Controls-DBUMibne.js} +1 -1
- package/dashboard/dist/assets/{DashboardPage-B-jHLRu6.js → DashboardPage-BgVXjT0v.js} +1 -1
- package/dashboard/dist/assets/{DevicePage-CgYxNWgU.js → DevicePage-Beby6BhC.js} +1 -1
- package/dashboard/dist/assets/{DialogClose-CIQziRo4.js → DialogClose-nwx-N3WL.js} +1 -1
- package/dashboard/dist/assets/DialogDescription-BFVB627n.js +1 -0
- package/dashboard/dist/assets/{DialogTitle-DG5OaNy0.js → DialogTitle-Cw53obf0.js} +1 -1
- package/dashboard/dist/assets/{FadeIn-BmtyZXeb.js → FadeIn-CTTwoVh-.js} +1 -1
- package/dashboard/dist/assets/{HeaderGithubStar-Cg7Ap56b.js → HeaderGithubStar-BvaEHM9B.js} +1 -1
- package/dashboard/dist/assets/{HoverTooltip-Dh1v-yph.js → HoverTooltip-CbJqz6cF.js} +1 -1
- package/dashboard/dist/assets/{IpCheckPage-CqQqdE3D.js → IpCheckPage-I0REWeew.js} +1 -1
- package/dashboard/dist/assets/{LandingPage-Ct4m67m9.js → LandingPage-CuMWPQBC.js} +2 -2
- package/dashboard/dist/assets/{LeaderboardAvatar-3ZA9tDrh.js → LeaderboardAvatar-MHfIP4_U.js} +1 -1
- package/dashboard/dist/assets/{LeaderboardPage-CQZf8G8t.js → LeaderboardPage-DfDM-dH9.js} +2 -2
- package/dashboard/dist/assets/{LeaderboardProfileModal-KaaGOK3_.js → LeaderboardProfileModal-hmpU-JV7.js} +3 -3
- package/dashboard/dist/assets/{LeaderboardProfilePage-DsiYvLlz.js → LeaderboardProfilePage-DtUb4dDZ.js} +1 -1
- package/dashboard/dist/assets/LimitsPage-CtA0c2G5.js +4 -0
- package/dashboard/dist/assets/{LocalOnlyNotice-DMrkrlZY.js → LocalOnlyNotice-WI3Oke4U.js} +1 -1
- package/dashboard/dist/assets/{LoginCard-BFQJZmKV.js → LoginCard-DMprjRI7.js} +1 -1
- package/dashboard/dist/assets/{LoginModal-Dx4_4UfW.js → LoginModal-DffmK0ro.js} +1 -1
- package/dashboard/dist/assets/{LoginPage-AmxdJOiw.js → LoginPage-B2ZgB6K7.js} +1 -1
- package/dashboard/dist/assets/{PetPage-DbMcLOoc.js → PetPage-D_U7yXgF.js} +1 -1
- package/dashboard/dist/assets/{PopoverPopup-CwOPhh6g.js → PopoverPopup-Ph-9l9jU.js} +1 -1
- package/dashboard/dist/assets/{ProviderIcon-C2183DbB.js → ProviderIcon-D2s_KSYC.js} +1 -1
- package/dashboard/dist/assets/{ResetPasswordPage-CwQt9Jh0.js → ResetPasswordPage-Cpg2C8BI.js} +1 -1
- package/dashboard/dist/assets/{SegmentedControl-2gfEdOHR.js → SegmentedControl-C89jlPzS.js} +1 -1
- package/dashboard/dist/assets/{Select-BknJIua6.js → Select-BLPgobGl.js} +1 -1
- package/dashboard/dist/assets/{SelectItemText-BNfM6qJ0.js → SelectItemText-CLTEQqQZ.js} +1 -1
- package/dashboard/dist/assets/{ServiceStatusPage-_C25Txd5.js → ServiceStatusPage-Bd1ec7bz.js} +1 -1
- package/dashboard/dist/assets/{SessionsPage-B_QkotAc.js → SessionsPage-HPbQDLZ5.js} +1 -1
- package/dashboard/dist/assets/{SettingsPage-B-vif0ea.js → SettingsPage-CwfcRYYu.js} +1 -1
- package/dashboard/dist/assets/{SkillsPage-BX2rApOM.js → SkillsPage-DflhF8pa.js} +1 -1
- package/dashboard/dist/assets/{TokenGalaxy-C9LrhOJ1.js → TokenGalaxy-CylVSV2J.js} +1 -1
- package/dashboard/dist/assets/{ToolbarRootContext-Bevy5CSh.js → ToolbarRootContext-BzBAJ8C5.js} +1 -1
- package/dashboard/dist/assets/{TrendMonitor-C6axjU1E.js → TrendMonitor-B0IzqLaN.js} +1 -1
- package/dashboard/dist/assets/{WidgetsPage-gmpxGRU-.js → WidgetsPage-Bvt5JCoS.js} +1 -1
- package/dashboard/dist/assets/{WrappedPage-Lyyj4Lfy.js → WrappedPage-BXjDpjD_.js} +1 -1
- package/dashboard/dist/assets/{__vite-browser-external-DsFkaOPr.js → __vite-browser-external-CDv96ZcG.js} +14 -11
- package/dashboard/dist/assets/{agent-logos-CmI9Jrx-.js → agent-logos-bPIt1QVl.js} +1 -1
- package/dashboard/dist/assets/{arrow-up-right-BDsE7MjI.js → arrow-up-right-C_6NrnRB.js} +1 -1
- package/dashboard/dist/assets/{check-Dv03s0Oi.js → check-ovHAYNwt.js} +1 -1
- package/dashboard/dist/assets/{chevron-right-Bg0LlTK2.js → chevron-right-BeHvjzPf.js} +1 -1
- package/dashboard/dist/assets/{copy-M7jcXrOp.js → copy-DRQHwFKm.js} +1 -1
- package/dashboard/dist/assets/{download-B7-6bJLc.js → download-qPfSWDyf.js} +1 -1
- package/dashboard/dist/assets/{external-link-C2dWQL59.js → external-link-t7Qbyp7r.js} +1 -1
- package/dashboard/dist/assets/{flame-fuODmpET.js → flame-DlRdMOxO.js} +1 -1
- package/dashboard/dist/assets/{format-tokens-BKb3uo9Y.js → format-tokens-DP1DrOxZ.js} +1 -1
- package/dashboard/dist/assets/{icons-CZ3rB5D9.js → icons-DBgKdjpV.js} +1 -1
- package/dashboard/dist/assets/{index-CMfErAEy.js → index-BFaAjCwg.js} +1 -1
- package/dashboard/dist/assets/{index-CyzVAu8L.js → index-C1wNjCL_.js} +1 -1
- package/dashboard/dist/assets/{index-DSLv7Mj8.js → index-Dtzl1NhK.js} +1 -1
- package/dashboard/dist/assets/{info-gtQU6mdi.js → info-D9fn_ZQQ.js} +1 -1
- package/dashboard/dist/assets/limits-providers-JyTKN-3e.js +1 -0
- package/dashboard/dist/assets/{link-2-DAoauLvL.js → link-2-CmnuQiZs.js} +1 -1
- package/dashboard/dist/assets/{loader-circle-C6-hnHM5.js → loader-circle-Bm3FqDLX.js} +1 -1
- package/dashboard/dist/assets/{maximize-2-DBWhzAmU.js → maximize-2-CutKDynW.js} +1 -1
- package/dashboard/dist/assets/{modifiers.esm-Cg5lp-7f.js → modifiers.esm-C94MH21S.js} +1 -1
- package/dashboard/dist/assets/{monitor-smartphone-BVkQLoJM.js → monitor-smartphone-wSLhNWq5.js} +1 -1
- package/dashboard/dist/assets/{provider-display-N7MWKGSI.js → provider-display-CR8o_M3v.js} +1 -1
- package/dashboard/dist/assets/{react-DDPYgpAM.js → react-Cc1Ca2uE.js} +1 -1
- package/dashboard/dist/assets/{search-M9zIhfTN.js → search-BXeDDAWS.js} +1 -1
- package/dashboard/dist/assets/{skills-api-DPJzchQg.js → skills-api-DBP8kM7W.js} +1 -1
- package/dashboard/dist/assets/{sortable.esm-B1tZenH5.js → sortable.esm-Cd_ODlnX.js} +1 -1
- package/dashboard/dist/assets/{store-DmPQtoHI.js → store-lmptvFHG.js} +1 -1
- package/dashboard/dist/assets/{terminal-BpvBtoDx.js → terminal-965BMhR0.js} +1 -1
- package/dashboard/dist/assets/{trash-2-XKMDw3cY.js → trash-2-wq5YeaAT.js} +1 -1
- package/dashboard/dist/assets/{use-community-stats-B1BMhURp.js → use-community-stats-BCIgHdTZ.js} +1 -1
- package/dashboard/dist/assets/{use-limits-display-prefs-DaZnSXop.js → use-limits-display-prefs-D0MB2ewv.js} +1 -1
- package/dashboard/dist/assets/{use-ordered-list-DKa6gE-O.js → use-ordered-list-DrQsh022.js} +1 -1
- package/dashboard/dist/assets/use-reduced-motion-DhNppA5X.js +1 -0
- package/dashboard/dist/assets/{use-session-efficiency-pref-B9I7_v4k.js → use-session-efficiency-pref-BeBSADa-.js} +1 -1
- package/dashboard/dist/assets/{use-transform-Ce5ESEGX.js → use-transform-fRpwp-G3.js} +1 -1
- package/dashboard/dist/assets/{use-usage-limits-Ex51qVV9.js → use-usage-limits-C0Tk-ghm.js} +1 -1
- package/dashboard/dist/assets/{useCurrency-8kmm6K74.js → useCurrency-BAZNRyKh.js} +1 -1
- package/dashboard/dist/assets/{useScrollLock-D3ximygL.js → useScrollLock-CU659jBG.js} +1 -1
- package/dashboard/dist/assets/{useTokenFormat-BtVvEcPK.js → useTokenFormat-l0Xd62a5.js} +1 -1
- package/dashboard/dist/assets/{zap-y-504T0t.js → zap-CWFkq16a.js} +1 -1
- package/dashboard/dist/index.html +4 -4
- package/dashboard/dist/ip-check.html +1 -1
- package/dashboard/dist/leaderboard.html +1 -1
- package/dashboard/dist/share.html +1 -1
- package/package.json +1 -1
- package/src/commands/serve.js +11 -3
- package/src/commands/status.js +34 -0
- package/src/commands/sync.js +95 -1
- package/src/lib/diagnostics.js +10 -0
- package/src/lib/fs.js +79 -1
- package/src/lib/pricing/seed-snapshot.json +1 -1
- package/src/lib/qoder-limits.js +89 -34
- package/src/lib/rollout.js +226 -43
- package/src/lib/session-analytics.js +45 -5
- package/src/lib/usage-limits.js +93 -14
- package/dashboard/dist/assets/DialogDescription-CMZSKLXB.js +0 -1
- package/dashboard/dist/assets/LimitsPage-Dv1fg4Jh.js +0 -4
- package/dashboard/dist/assets/limits-providers-B9o4daVn.js +0 -1
- package/dashboard/dist/assets/use-reduced-motion-fPvY8iYM.js +0 -1
package/src/lib/usage-limits.js
CHANGED
|
@@ -27,7 +27,7 @@ const {
|
|
|
27
27
|
const { fetchGrokLimits } = require("./grok-limits");
|
|
28
28
|
const { fetchZcodeLimits } = require("./zcode-limits");
|
|
29
29
|
const { fetchOpencodeGoLimits } = require("./opencode-go-limits");
|
|
30
|
-
const { fetchQoderLimits } = require("./qoder-limits");
|
|
30
|
+
const { fetchQoderLimits, fetchQoderCnLimits } = require("./qoder-limits");
|
|
31
31
|
const { fetchProviderServiceStatus } = require("./provider-status");
|
|
32
32
|
const { readSqliteJsonRows, readSqliteJsonRowsAsync } = require("./sqlite-reader");
|
|
33
33
|
|
|
@@ -2153,16 +2153,48 @@ function extractCommandFlag(command, flag) {
|
|
|
2153
2153
|
return match?.[1] || null;
|
|
2154
2154
|
}
|
|
2155
2155
|
|
|
2156
|
-
|
|
2157
|
-
|
|
2158
|
-
|
|
2159
|
-
|
|
2160
|
-
|
|
2156
|
+
function parseWindowsProcesses(output) {
|
|
2157
|
+
let parsed;
|
|
2158
|
+
try {
|
|
2159
|
+
parsed = JSON.parse(String(output || "").trim());
|
|
2160
|
+
} catch (_error) {
|
|
2161
|
+
return [];
|
|
2162
|
+
}
|
|
2163
|
+
return (Array.isArray(parsed) ? parsed : [parsed])
|
|
2164
|
+
.map((entry) => ({
|
|
2165
|
+
pid: Number(entry?.ProcessId),
|
|
2166
|
+
command: typeof entry?.CommandLine === "string" ? entry.CommandLine : "",
|
|
2167
|
+
}))
|
|
2168
|
+
.filter((entry) => Number.isFinite(entry.pid) && entry.command);
|
|
2169
|
+
}
|
|
2170
|
+
|
|
2171
|
+
async function detectAntigravityProcess({ commandRunner, platform = process.platform } = {}) {
|
|
2172
|
+
let processes;
|
|
2173
|
+
if (platform === "win32") {
|
|
2174
|
+
const script = [
|
|
2175
|
+
"$ErrorActionPreference = 'Stop'",
|
|
2176
|
+
"$processes = Get-CimInstance Win32_Process | Select-Object ProcessId, CommandLine",
|
|
2177
|
+
"ConvertTo-Json -Compress -InputObject @($processes)",
|
|
2178
|
+
].join("; ");
|
|
2179
|
+
const result = await runCommand(
|
|
2180
|
+
commandRunner,
|
|
2181
|
+
"powershell.exe",
|
|
2182
|
+
["-NoProfile", "-NonInteractive", "-Command", script],
|
|
2183
|
+
{ timeout: 4000 },
|
|
2184
|
+
);
|
|
2185
|
+
processes = parseWindowsProcesses(result?.stdout);
|
|
2186
|
+
} else {
|
|
2187
|
+
const result = await runCommand(commandRunner, "/bin/ps", ["-ax", "-o", "pid=,command="], {
|
|
2188
|
+
timeout: 4000,
|
|
2189
|
+
});
|
|
2190
|
+
processes = String(result?.stdout || "")
|
|
2191
|
+
.split("\n")
|
|
2192
|
+
.map(parseProcessLine)
|
|
2193
|
+
.filter(Boolean);
|
|
2194
|
+
}
|
|
2161
2195
|
|
|
2162
2196
|
let sawProcess = false;
|
|
2163
|
-
for (const
|
|
2164
|
-
const parsed = parseProcessLine(line);
|
|
2165
|
-
if (!parsed) continue;
|
|
2197
|
+
for (const parsed of processes) {
|
|
2166
2198
|
if (!isAntigravityCommandLine(parsed.command)) continue;
|
|
2167
2199
|
sawProcess = true;
|
|
2168
2200
|
const csrfToken = extractCommandFlag(parsed.command, "--csrf_token") || null;
|
|
@@ -2521,7 +2553,40 @@ function parseListeningPorts(output) {
|
|
|
2521
2553
|
return Array.from(ports).sort((a, b) => a - b);
|
|
2522
2554
|
}
|
|
2523
2555
|
|
|
2524
|
-
|
|
2556
|
+
function windowsEndpointPort(endpoint) {
|
|
2557
|
+
const match = String(endpoint || "").match(/:(\d+)$/);
|
|
2558
|
+
return match ? Number(match[1]) : null;
|
|
2559
|
+
}
|
|
2560
|
+
|
|
2561
|
+
function parseWindowsListeningPorts(output, pid) {
|
|
2562
|
+
const ports = new Set();
|
|
2563
|
+
for (const line of String(output || "").split("\n")) {
|
|
2564
|
+
const fields = line.trim().split(/\s+/);
|
|
2565
|
+
if (fields.length < 5 || fields[0]?.toUpperCase() !== "TCP") continue;
|
|
2566
|
+
if (Number(fields.at(-1)) !== Number(pid)) continue;
|
|
2567
|
+
// netstat localizes its state label. A TCP listener's foreign endpoint is
|
|
2568
|
+
// always the wildcard address with port 0, which stays language-neutral.
|
|
2569
|
+
if (windowsEndpointPort(fields[2]) !== 0) continue;
|
|
2570
|
+
const port = windowsEndpointPort(fields[1]);
|
|
2571
|
+
if (Number.isInteger(port) && port > 0 && port <= 65535) ports.add(port);
|
|
2572
|
+
}
|
|
2573
|
+
return Array.from(ports).sort((a, b) => a - b);
|
|
2574
|
+
}
|
|
2575
|
+
|
|
2576
|
+
async function listAntigravityPorts(pid, { commandRunner, platform = process.platform } = {}) {
|
|
2577
|
+
if (platform === "win32") {
|
|
2578
|
+
const result = await runCommand(
|
|
2579
|
+
commandRunner,
|
|
2580
|
+
"netstat.exe",
|
|
2581
|
+
["-ano", "-p", "tcp"],
|
|
2582
|
+
{ timeout: 4000 },
|
|
2583
|
+
);
|
|
2584
|
+
const ports = parseWindowsListeningPorts(result?.stdout, pid);
|
|
2585
|
+
if (!ports.length) {
|
|
2586
|
+
throw new Error("Antigravity is running but not exposing ports yet. Try again in a few seconds.");
|
|
2587
|
+
}
|
|
2588
|
+
return ports;
|
|
2589
|
+
}
|
|
2525
2590
|
const lsof = await resolveLsofBinary({ commandRunner });
|
|
2526
2591
|
if (!lsof) {
|
|
2527
2592
|
throw new Error("Antigravity port detection needs lsof. Install it, then retry.");
|
|
@@ -2827,7 +2892,7 @@ function hasAntigravityInstallEvidence({ home } = {}) {
|
|
|
2827
2892
|
});
|
|
2828
2893
|
}
|
|
2829
2894
|
|
|
2830
|
-
async function fetchAntigravityLimits({ home, commandRunner, requestFn, fetchImpl = fetch, timeoutMs = 8000, nowMs = Date.now() } = {}) {
|
|
2895
|
+
async function fetchAntigravityLimits({ home, commandRunner, requestFn, fetchImpl = fetch, timeoutMs = 8000, nowMs = Date.now(), platform = process.platform } = {}) {
|
|
2831
2896
|
const finalize = (payload, normalizeOptions) => {
|
|
2832
2897
|
const result = {
|
|
2833
2898
|
configured: true,
|
|
@@ -2849,7 +2914,7 @@ async function fetchAntigravityLimits({ home, commandRunner, requestFn, fetchImp
|
|
|
2849
2914
|
};
|
|
2850
2915
|
|
|
2851
2916
|
try {
|
|
2852
|
-
const processInfo = await detectAntigravityProcess({ commandRunner });
|
|
2917
|
+
const processInfo = await detectAntigravityProcess({ commandRunner, platform });
|
|
2853
2918
|
if (!processInfo.configured) {
|
|
2854
2919
|
const cached = readAntigravityLimitsCache({ home, nowMs });
|
|
2855
2920
|
if (cached) return cached;
|
|
@@ -2863,7 +2928,7 @@ async function fetchAntigravityLimits({ home, commandRunner, requestFn, fetchImp
|
|
|
2863
2928
|
if (processInfo.error) {
|
|
2864
2929
|
return { configured: true, error: processInfo.error };
|
|
2865
2930
|
}
|
|
2866
|
-
const ports = await listAntigravityPorts(processInfo.pid, { commandRunner });
|
|
2931
|
+
const ports = await listAntigravityPorts(processInfo.pid, { commandRunner, platform });
|
|
2867
2932
|
let workingPort = null;
|
|
2868
2933
|
let workingScheme = "https";
|
|
2869
2934
|
for (const port of ports) {
|
|
@@ -3100,7 +3165,7 @@ async function fetchUsageLimitsUncached({
|
|
|
3100
3165
|
: null;
|
|
3101
3166
|
|
|
3102
3167
|
const providerFetch = withFetchTimeout(fetchImpl, providerTimeoutMs);
|
|
3103
|
-
const [claudeResult, codexResult, cursor, kimi, gemini, kiro, antigravity, copilot, grok, zcode, opencodeGo, qoder, claudeServiceStatus] = await Promise.all([
|
|
3168
|
+
const [claudeResult, codexResult, cursor, kimi, gemini, kiro, antigravity, copilot, grok, zcode, opencodeGo, qoder, qoderCn, claudeServiceStatus] = await Promise.all([
|
|
3104
3169
|
claudeToken && !freshClaudeCache && !claudeRetryAtMs
|
|
3105
3170
|
? withProviderTimeout(fetchClaudeUsageLimits(claudeToken, { fetchImpl: providerFetch, maxAttempts: 1 }), "Claude", providerTimeoutMs).then(
|
|
3106
3171
|
(value) => ({ status: "fulfilled", value }),
|
|
@@ -3146,6 +3211,16 @@ async function fetchUsageLimitsUncached({
|
|
|
3146
3211
|
"Qoder",
|
|
3147
3212
|
providerTimeoutMs,
|
|
3148
3213
|
).catch((reason) => ({ configured: true, error: reason?.message || "Unknown error" })),
|
|
3214
|
+
withProviderTimeout(
|
|
3215
|
+
fetchQoderCnLimits({
|
|
3216
|
+
home,
|
|
3217
|
+
env,
|
|
3218
|
+
platform,
|
|
3219
|
+
fetchImpl: providerFetch,
|
|
3220
|
+
}),
|
|
3221
|
+
"Qoder CN",
|
|
3222
|
+
providerTimeoutMs,
|
|
3223
|
+
).catch((reason) => ({ configured: true, error: reason?.message || "Unknown error" })),
|
|
3149
3224
|
// Public status-page probe (fail-soft, own 5-min cache in provider-status.js).
|
|
3150
3225
|
// Only probed for configured accounts — without a token the Claude section
|
|
3151
3226
|
// never renders, so the reading would have nowhere to go.
|
|
@@ -3295,6 +3370,7 @@ async function fetchUsageLimitsUncached({
|
|
|
3295
3370
|
zcode: withPlanLabel(zcode, zcode.plan_label, "ZCode"),
|
|
3296
3371
|
opencodeGo: withPlanLabel(opencodeGo, opencodeGo?.plan_label, "OpenCode Go"),
|
|
3297
3372
|
qoder: withPlanLabel(qoder, qoder?.plan_label, "Qoder"),
|
|
3373
|
+
qoderCn: withPlanLabel(qoderCn, qoderCn?.plan_label, "Qoder CN"),
|
|
3298
3374
|
};
|
|
3299
3375
|
|
|
3300
3376
|
for (const [providerName, provider] of Object.entries(data)) {
|
|
@@ -3342,6 +3418,8 @@ module.exports = {
|
|
|
3342
3418
|
fetchKiroLimits,
|
|
3343
3419
|
normalizeAntigravityResponse,
|
|
3344
3420
|
parseListeningPorts,
|
|
3421
|
+
parseWindowsListeningPorts,
|
|
3422
|
+
listAntigravityPorts,
|
|
3345
3423
|
detectAntigravityProcess,
|
|
3346
3424
|
fetchAntigravityLimits,
|
|
3347
3425
|
fetchCopilotLimits,
|
|
@@ -3355,4 +3433,5 @@ module.exports = {
|
|
|
3355
3433
|
fetchZcodeLimits,
|
|
3356
3434
|
fetchOpencodeGoLimits,
|
|
3357
3435
|
fetchQoderLimits,
|
|
3436
|
+
fetchQoderCnLimits,
|
|
3358
3437
|
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as n,z as a}from"./__vite-browser-external-DsFkaOPr.js";import{u as p}from"./DialogTitle-DG5OaNy0.js";import{u as c}from"./useScrollLock-D3ximygL.js";const x=n.forwardRef(function(e,r){const{render:l,className:u,style:m,id:s,...t}=e,{store:i}=p(),o=c(s);return i.useSyncedValueWithCleanup("descriptionElementId",o),a("p",e,{ref:r,props:[{id:o},t]})});export{x as D};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{m as $,j as t,e as B,c as r,k as W,r as b,ae,d as ie,J as re,L as ne,af as oe,q as se,ag as le}from"./__vite-browser-external-DsFkaOPr.js";import{m as D}from"./react-DDPYgpAM.js";import{P,c as ce,r as M,a as de,u as ue,b as me,s as xe}from"./use-usage-limits-Ex51qVV9.js";import{L as m,u as pe}from"./use-limits-display-prefs-DaZnSXop.js";import{C as U}from"./Card-DGOEtq_3.js";import{F as ge}from"./FadeIn-BmtyZXeb.js";import{L as fe,l as v,a as he}from"./limits-providers-B9o4daVn.js";import{P as be}from"./ProviderIcon-C2183DbB.js";import{H as ye}from"./HoverTooltip-Dh1v-yph.js";import{L as ke}from"./LocalOnlyNotice-DMrkrlZY.js";import{u as ve}from"./use-reduced-motion-fPvY8iYM.js";import"./arrow-up-right-BDsE7MjI.js";import"./download-B7-6bJLc.js";const je=[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M17 17H4a1 1 0 0 1-.74-1.673C4.59 13.956 6 12.499 6 8a6 6 0 0 1 .258-1.742",key:"178tsu"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M8.668 3.01A6 6 0 0 1 18 8c0 2.687.77 4.653 1.707 6.05",key:"1hqiys"}]],_e=$("bell-off",je);const Ne=[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326",key:"11g9vi"}]],we=$("bell",Ne),Me=[3,2,3,3,2,2,3];function f({className:e}){return t.jsx("div",{className:B("rounded bg-oai-gray-200/70 dark:bg-oai-gray-800/70 animate-pulse",e)})}function Ee(){return t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(f,{className:"h-3 w-12 shrink-0"}),t.jsx(f,{className:"flex-1 h-1.5 rounded-full min-w-0"}),t.jsx(f,{className:"h-3 w-[30px] shrink-0"}),t.jsx(f,{className:"h-3 w-6 shrink-0"})]})}function Ie({bars:e,index:a}){const i=a%3===0?"w-24":a%3===1?"w-20":"w-[4.5rem]";return t.jsxs("div",{className:"flex flex-col gap-1.5",children:[t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx(f,{className:"h-[14px] w-[14px] rounded shrink-0"}),t.jsx(f,{className:B("h-4",i)})]}),Array.from({length:e},(o,n)=>t.jsx(Ee,{},n))]})}function Le(){return t.jsx(U,{children:t.jsxs("div",{className:"flex flex-col gap-3",children:[t.jsx(f,{className:"h-3.5 w-28"}),Me.map((e,a)=>t.jsx(Ie,{bars:e,index:a},a))]})})}const O=100;function F(e){const a=Date.parse(e);return Number.isFinite(a)?a:null}function Pe(e){return Math.max(0,Math.min(O,Math.round(e)))}function Oe(e){return new Intl.DateTimeFormat(W(),{month:"numeric",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1}).format(new Date(e))}function Se(e,a,i){if(e==null||e>=a)return O;const o=a-e,n=a-i;return Pe(n/o*O)}function Re(e){const a=e.available_count;return a===null?null:Number.isInteger(a)&&a>=0?a:void 0}function Ce(e,{now:a}={}){if(!e||typeof e!="object")return null;const i=Re(e);if(i===void 0)return null;const o=Array.isArray(e.credits)?e.credits:[],n=a instanceof Date?a.getTime():Number(a??Date.now()),s=[];for(const d of o){const c=F(d?.expires_at);if(c==null)continue;const l=s.length+1;s.push({key:`reset-${l}`,label:r("limits.codex_reset_bank.row_label",{index:l}),expiresAt:Oe(c),expiresMs:c,percent:Se(F(d?.granted_at),c,n)})}return i===0?null:s.length>0?{kind:"rows",availableCount:i??s.length,rows:s}:i>0?{kind:"count_only",availableCount:i,rows:[]}:null}const Te="shrink-0 text-oai-black dark:text-oai-white";function Ae(e){const a=M(e);if(!Number.isFinite(a))return null;const i=a-Date.now();if(i<=0)return r("shared.time.now");const o=Math.floor(i/6e4);if(o<60)return`${o}m`;const n=Math.floor(o/60);return n<24?`${n}h`:`${Math.floor(n/24)}d`}function De(e,a){const i=a===m.REMAINING?100-e:e;return i>=90?"bg-red-500":i>=70?"bg-amber-500":"bg-emerald-500"}function w(e,a="used_percent"){return e?a==="utilization"?e.utilization:e.used_percent:null}function E(e,a="reset_at"){return e?a==="resets_at"?e.resets_at:e.reset_at:null}function I(e){const a=Math.max(0,Math.min(100,Number(e)||0)),i=Math.round(a);return a>0&&i===0?r("limits.bar.sub_one_percent"):String(i)}function _(e,{useGrouping:a=!0,maximumFractionDigits:i}={}){const o=Number(e);return Number.isFinite(o)?new Intl.NumberFormat(void 0,{minimumFractionDigits:0,maximumFractionDigits:i??(o>=100?0:2),useGrouping:a}).format(o):null}function Fe(e){if(!e||typeof e!="object"||!(Number(e.limit_credits)>0))return null;const a={useGrouping:e.unit!=="calls"},i=_(e.used_credits,a),o=_(e.limit_credits,a),n=_(e.remaining_credits,a);if(!i||!o||!n)return null;const s=e.unit==="calls"?"limits.qoder_calls.detail":"limits.codex_credits.detail";return r(s,{used:i,limit:o,remaining:n})}function Ge(e,a){return ce({usedPercent:w(e.window,e.pctField),windowSeconds:de(e,e.window),resetMs:M(E(e.window,e.resetField)),mode:a})}function q(e){return Number.isFinite(e)?new Intl.DateTimeFormat(W(),{month:"numeric",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1}).format(new Date(e)):null}function He(e,a,i){const o=[z(e,a,i)],n=M(E(e.window,e.resetField)),s=q(n);s&&o.push(r(e.timeKind==="expiry"?"limits.hover.expires_at":"limits.hover.resets_at",{time:s}));const d=Fe(e.window);return d&&o.push(d),o.join(`
|
|
2
|
-
`)}const K=ye;function $e({label:e,pct:a,reset:i,mode:o=m.USED,pacePercent:n=null,paceOver:s=!1,title:d=null}){const c=Math.max(0,Math.min(100,Number(a)||0)),l=o===m.REMAINING?100-c:c,u=Math.round(l),x=l>0&&u===0?Math.max(l,.35):l;let k=String(u);l>0&&u===0&&(k=r("limits.bar.sub_one_percent"));const p=n==null?null:Math.max(0,Math.min(100,n));return t.jsxs("div",{className:"group relative flex items-center gap-2",children:[t.jsx(K,{text:d}),t.jsx("span",{"data-limit-label":"",className:"text-[11px] text-oai-gray-500 dark:text-oai-gray-400 shrink-0 whitespace-nowrap",style:{width:"var(--tt-limits-label-w)"},children:e}),t.jsxs("div",{className:"relative flex-1 bg-oai-gray-100 dark:bg-oai-gray-700/50 rounded-full h-1.5 overflow-hidden",children:[t.jsx("div",{className:`${De(l,o)} rounded-full h-full transition-[width] duration-500 ease-out`,style:{width:`${x}%`,minWidth:l>0?"3px":0}}),p!=null&&t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"absolute top-0 h-full bg-oai-gray-100 dark:bg-oai-gray-700/50",style:{left:`calc(${p}% - 3px)`,width:"6px"}}),t.jsx("div",{className:`absolute top-0 h-full ${s?"bg-red-500":"bg-emerald-500"}`,style:{left:`calc(${p}% - 1px)`,width:"2px"}})]})]}),t.jsxs("span",{className:"text-[11px] tabular-nums text-oai-gray-500 dark:text-oai-gray-400 w-9 text-right shrink-0 whitespace-nowrap",children:[k,"%"]}),i&&t.jsx("span",{className:"text-[10px] text-oai-gray-400 dark:text-oai-gray-500 w-6 text-right shrink-0",children:i})]})}function z(e,a,i){const o=e.label??r(e.labelKey),n=i===m.REMAINING,s=l=>n?100-l:l;if(a.expectedPercent==null){const l=Math.max(0,Math.min(100,Number(w(e.window,e.pctField))||0)),u=I(s(l));return n?r("limits.explain.remaining",{label:o,used:u}):r("limits.explain.used",{label:o,used:u})}if(a.paceOver){if(a.runsOutEta)return r("limits.explain.ahead_eta",{label:o,eta:a.runsOutEta});const l=I(s(a.projectedEnd??100));return r(n?"limits.explain.ahead_pct_remaining":"limits.explain.ahead_pct",{label:o,pct:l})}const d=Math.max(0,Math.min(100,Number(w(e.window,e.pctField))||0)),c=I(s(a.projectedEnd??d));return r(n?"limits.explain.on_track_remaining":"limits.explain.on_track",{label:o,pct:c})}function Be({rows:e,mode:a}){if(e.length===0)return null;const i=a===m.REMAINING;return t.jsxs("div",{className:"mt-1 flex flex-col gap-1",children:[e.map(({spec:o,pace:n})=>{const s=q(M(E(o.window,o.resetField)));return t.jsxs("div",{className:"text-[11px] leading-snug text-oai-gray-600 dark:text-oai-gray-300",children:[z(o,n,a),s?t.jsxs("span",{className:"text-oai-gray-400 dark:text-oai-gray-500",children:[" · ",r(o.timeKind==="expiry"?"limits.hover.expires_at":"limits.hover.resets_at",{time:s})]}):null]},o.key)}),t.jsx("div",{className:"mt-1 pt-1.5 border-t border-oai-gray-200/70 dark:border-oai-gray-700/50 text-[10.5px] leading-snug text-oai-gray-400 dark:text-oai-gray-500",children:r(i?"limits.explain.body_remaining":"limits.explain.body")})]})}function j(e){if(!e)return null;const a=Date.now()-new Date(e).getTime();if(a<0)return null;const i=Math.floor(a/6e4);if(i<1)return r("shared.time.now");if(i<60)return r("shared.time.m_ago",{n:i});const o=Math.floor(i/60);if(o<24)return r("shared.time.h_ago",{n:o});const n=Math.floor(o/24);return r("shared.time.d_ago",{n})}const G={live:{surface:"bg-oai-gray-50 dark:bg-oai-gray-800 border-oai-gray-200/60 dark:border-oai-gray-700/60 text-oai-gray-500 dark:text-oai-gray-400",dot:"bg-emerald-500",pulse:"bg-emerald-400"},stale:{surface:"bg-oai-gray-50 dark:bg-oai-gray-800 border-oai-gray-200/60 dark:border-oai-gray-700/60 text-oai-gray-500 dark:text-oai-gray-400",dot:"bg-amber-500",pulse:"bg-amber-400"},cached:{surface:"bg-oai-gray-50 dark:bg-oai-gray-800 border-oai-gray-200/60 dark:border-oai-gray-700/60 text-oai-gray-500 dark:text-oai-gray-400",dot:"bg-amber-500",pulse:"bg-amber-400"}},We={claude:"claude",codex:"codex"};function y({label:e,age:a=null,tone:i="live",tooltip:o=null}){const n=G[i]||G.live,s=i==="live";return t.jsxs("div",{className:"relative inline-flex items-center group cursor-help ml-1",onClick:d=>d.stopPropagation(),children:[t.jsxs("span",{className:`inline-flex items-center gap-1 px-1.5 py-0.5 rounded-full text-[9px] font-semibold uppercase tracking-wider border leading-normal ${n.surface}`,children:[s?t.jsxs("span",{className:"relative flex h-1.5 w-1.5",children:[t.jsx("span",{className:`animate-ping absolute inline-flex h-full w-full rounded-full ${n.pulse} opacity-75`}),t.jsx("span",{className:`relative inline-flex rounded-full h-1.5 w-1.5 ${n.dot}`})]}):t.jsx("span",{className:`h-1.5 w-1.5 rounded-full ${n.dot}`}),e,a?t.jsxs(t.Fragment,{children:[" · ",a]}):null]}),o?t.jsxs("span",{className:"pointer-events-none absolute left-1/2 bottom-full z-20 mb-2 -translate-x-1/2 w-48 rounded-md bg-oai-gray-900 dark:bg-oai-gray-800 px-2.5 py-1.5 text-[10px] font-normal text-white text-center opacity-0 scale-95 translate-y-1 group-hover:opacity-100 group-hover:scale-100 group-hover:translate-y-0 transition-all duration-200 cubic-bezier(0.16, 1, 0.3, 1) leading-normal shadow-lg origin-bottom border border-oai-gray-800 dark:border-oai-gray-700",children:[o,t.jsx("span",{className:"absolute left-1/2 top-full -translate-x-1/2 border-4 border-transparent border-t-oai-gray-900 dark:border-t-oai-gray-800"})]}):null]})}function N({name:e,providerId:a,children:i,expandable:o=!1,expanded:n=!1,onToggle:s,badge:d=null}){const c=he(a),l=t.jsxs("div",{className:"flex items-center gap-1.5",children:[c?t.jsx(be,{provider:c,size:14,className:Te}):null,t.jsx("span",{className:"text-sm font-medium text-oai-black dark:text-oai-white",children:e}),d]});return o?t.jsxs("div",{role:"button",tabIndex:0,"aria-expanded":n,onClick:s,onKeyDown:u=>{(u.key==="Enter"||u.key===" ")&&(u.preventDefault(),s?.())},className:"flex flex-col gap-1.5 -mx-1.5 px-1.5 py-1 rounded-lg cursor-pointer transition-colors hover:bg-oai-gray-50 dark:hover:bg-oai-gray-800/40 aria-expanded:bg-oai-gray-50 dark:aria-expanded:bg-oai-gray-800/40",children:[l,i]}):t.jsxs("div",{className:"flex flex-col gap-1.5",children:[l,i]})}const Ue=fe;function h({children:e,tone:a="neutral"}){const i=a==="error"?"text-red-600 dark:text-red-400":"text-oai-gray-500 dark:text-oai-gray-400";return t.jsx("div",{className:`text-[11px] leading-snug ${i}`,children:e})}function qe({rows:e,mode:a,extra:i=null}){const o=e.length===0&&!i;return t.jsxs(t.Fragment,{children:[e.map(({spec:n,pace:s})=>t.jsx($e,{label:n.label??r(n.labelKey),pct:w(n.window,n.pctField),reset:Ae(E(n.window,n.resetField)),mode:a,pacePercent:s.pacePercent,paceOver:s.paceOver,title:He(n,s,a)},n.key)),o?t.jsx(h,{children:r("limits.status.no_data")}):null,i]})}function Ke(e){if(!Number.isFinite(e.expiresMs))return null;const a=Math.floor((e.expiresMs-Date.now())/864e5);return a<0?null:a===0?r("limits.reset_bank.hover_detail_today",{date:e.expiresAt}):r("limits.reset_bank.hover_detail",{date:e.expiresAt,days:a})}function ze({row:e}){const a=Math.max(0,Math.min(100,Number(e.percent)||0));return t.jsxs("div",{className:"group relative flex items-center gap-2","data-reset-bank-row":"",children:[t.jsx(K,{text:Ke(e)}),t.jsx("span",{"data-limit-label":"",className:"text-[11px] text-oai-gray-500 dark:text-oai-gray-400 shrink-0 whitespace-nowrap",style:{width:"var(--tt-limits-label-w)"},children:e.label}),t.jsx("div",{className:"relative flex-1 bg-oai-gray-100 dark:bg-oai-gray-700/50 rounded-full h-1.5 overflow-hidden",children:t.jsx("div",{className:"bg-oai-gray-400 dark:bg-oai-gray-500 rounded-full h-full transition-[width] duration-500 ease-out",style:{width:`${a}%`,minWidth:a>0?"3px":0}})}),t.jsx("span",{className:"text-[10px] tabular-nums text-oai-gray-400 dark:text-oai-gray-500 w-[4.25rem] text-right shrink-0 whitespace-nowrap",children:e.expiresAt})]})}function Ve({model:e}){const a=e.kind==="count_only"?r("limits.codex_reset_bank.count_only",{count:e.availableCount}):null;return t.jsxs("div",{className:"mt-1 flex flex-col gap-1","data-reset-bank-section":e.kind,children:[t.jsx("div",{className:"text-[10.5px] font-medium uppercase tracking-wide text-oai-gray-400 dark:text-oai-gray-500",children:r("limits.codex_reset_bank.title")}),a?t.jsx("div",{className:"text-[11px] leading-snug text-oai-gray-500 dark:text-oai-gray-400",children:a}):e.rows.map(i=>t.jsx(ze,{row:i},i.key))]})}function V(e,a){if(e==="codex_meta"){const i=Ce(a.reset_credits);return i?t.jsx(Ve,{model:i}):null}if(e==="kimi_parallel"&&a.parallel_limit)return t.jsx(h,{children:r("limits.label.kimi_parallel",{count:a.parallel_limit})});if(e==="kiro_credits"&&Number.isFinite(Number(a.tracked_credits))&&Number(a.tracked_credit_records)>0){const i=_(a.tracked_credits,{maximumFractionDigits:2});return t.jsx(h,{children:r("limits.label.kiro_tracked_credits",{credits:i,count:Number(a.tracked_credit_records)})})}return e==="copilot_otel"&&!a.otel_has_files&&!a.otel_enabled?t.jsx(Je,{defaultDir:a.otel_default_dir}):null}function Xe(e,a,i,o,n,s,d=null){const c=P[e];if(!c)return null;const l=c.windows(a).filter(x=>x.window).map(x=>({spec:x,pace:Ge(x,o)})),u=V(c.extra,a);return t.jsxs(N,{name:i,providerId:e,expandable:l.length>0,expanded:n,onToggle:s,badge:d,children:[t.jsx(qe,{mode:o,rows:l,extra:u}),n?t.jsx(Be,{rows:l,mode:o}):null]},e)}function Ye(e,a,i,o,n){if(!P[e])return null;if(!a?.configured)return t.jsxs(N,{name:v(e),providerId:e,children:[t.jsx(h,{children:r("limits.status.not_connected")}),e==="opencodeGo"?t.jsx(H,{}):null]},e);if(e==="opencodeGo"&&a.subscription_status==="inactive")return t.jsx(N,{name:v(e),providerId:e,children:t.jsx(h,{children:r("limits.opencodeGo.status.inactive")})},e);if(a.error)return t.jsxs(N,{name:v(e),providerId:e,children:[t.jsx(h,{tone:"error",children:r("shared.error.prefix",{error:a.error})}),e==="kiro"?V(P.kiro.extra,a):null,e==="opencodeGo"?t.jsx(H,{}):null]},e);const s=v(e),d=a.plan_label?`${s} ${a.plan_label}`:s;let c=null;if(e==="antigravity")if(a.cached){const u=j(a.cached_at);c=t.jsx(y,{label:r("limits.label.antigravity_cached"),age:u,tone:"cached",tooltip:r("limits.tooltip.antigravity_cached")})}else c=t.jsx(y,{label:r("limits.label.antigravity_live"),tone:"live",tooltip:r("limits.tooltip.antigravity_live")});if(e==="qoder"&&a.cached&&(c=t.jsx(y,{label:r("limits.label.antigravity_cached"),age:j(a.cached_at),tone:"cached",tooltip:r("limits.tooltip.qoder_cached")})),!c&&a.auth_action_required==="reauth"){const u=We[e];c=t.jsx(y,{label:r("limits.reauth.badge"),age:j(a.cached_at),tone:"stale",tooltip:u?r("limits.reauth.tooltip",{command:u}):null})}const l=a.provenance;return l?.stale&&!c&&(c=t.jsx(y,{label:r("limits.provenance.stale"),age:j(l.captured_at),tone:"stale",tooltip:r("limits.provenance.tooltip",{source:l.source,confidence:l.confidence})})),Xe(e,a,d,i,o,n,c)}function Je({defaultDir:e}){const[a,i]=b.useState(!1),n=["export COPILOT_OTEL_ENABLED=true","export COPILOT_OTEL_EXPORTER_TYPE=file",`export COPILOT_OTEL_FILE_EXPORTER_PATH="${e||"$HOME/.copilot/otel"}/copilot-otel-$(date +%Y%m%d).jsonl"`].join(`
|
|
3
|
-
`),s=async d=>{d.stopPropagation();try{await navigator.clipboard.writeText(n),i(!0),setTimeout(()=>i(!1),1600)}catch{}};return t.jsxs("div",{className:"mt-1 rounded-md border border-amber-300/60 dark:border-amber-700/40 bg-amber-50/50 dark:bg-amber-900/10 px-2.5 py-2 text-[11px] text-oai-gray-600 dark:text-oai-gray-300",children:[t.jsx("div",{className:"font-medium text-oai-gray-700 dark:text-oai-gray-200",children:r("limits.copilot.otelHint.title")}),t.jsx("div",{className:"mt-0.5 leading-snug",children:r("limits.copilot.otelHint.body")}),t.jsx("pre",{className:"mt-1.5 overflow-x-auto rounded bg-oai-gray-100 dark:bg-oai-gray-900/60 px-2 py-1.5 font-mono text-[10.5px] leading-tight whitespace-pre",children:n}),t.jsx("button",{type:"button",onClick:s,className:"mt-1 inline-flex items-center gap-1 rounded border border-oai-gray-300 dark:border-oai-gray-700 px-1.5 py-0.5 text-[10.5px] text-oai-gray-700 dark:text-oai-gray-200 hover:bg-oai-gray-100 dark:hover:bg-oai-gray-800 transition-colors",children:a?r("limits.copilot.otelHint.copied"):r("limits.copilot.otelHint.copy")})]})}function L({n:e,children:a}){return t.jsxs("li",{className:"flex gap-2.5",children:[t.jsx("span",{className:"mt-[1px] flex h-4 w-4 shrink-0 items-center justify-center rounded-full bg-oai-brand/15 text-[9px] font-semibold text-oai-brand",children:e}),t.jsx("div",{className:"min-w-0 flex-1 leading-snug",children:a})]})}function Qe(){return t.jsx("svg",{viewBox:"0 0 12 12","aria-hidden":"true",className:"h-2.5 w-2.5",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:t.jsx("path",{d:"M4.5 2.75h4.75V7.5M9.25 2.75 3 9"})})}function H(){const[e,a]=b.useState(!1),i=['export OPENCODE_GO_AUTH_COOKIE="..."','# Optional: export OPENCODE_GO_WORKSPACE_ID="wrk_..." (Only if auto-discovery fails)'].join(`
|
|
4
|
-
`),o=async n=>{n.stopPropagation();try{await navigator.clipboard.writeText(i),a(!0),setTimeout(()=>a(!1),1600)}catch{}};return t.jsxs("div",{className:"mt-1.5 rounded-lg border border-oai-gray-200 dark:border-oai-gray-700/60 bg-oai-gray-50/50 dark:bg-oai-gray-900/20 p-3 text-[11px] text-oai-gray-600 dark:text-oai-gray-300",children:[t.jsx("div",{className:"text-[12px] font-semibold text-oai-gray-800 dark:text-oai-gray-100",children:r("limits.opencodeGo.setupHint.title")}),t.jsx("div",{className:"mt-0.5 leading-snug text-oai-gray-500 dark:text-oai-gray-400",children:r("limits.opencodeGo.setupHint.subtitle")}),t.jsxs("ol",{className:"mt-2.5 space-y-2.5",children:[t.jsxs(L,{n:"1",children:[t.jsx("div",{children:r("limits.opencodeGo.setupHint.step1")}),t.jsxs("a",{href:"https://opencode.ai",target:"_blank",rel:"noreferrer",onClick:n=>n.stopPropagation(),className:"mt-1 inline-flex items-center gap-1 rounded-md bg-oai-brand/10 px-2 py-1 font-medium text-oai-brand hover:bg-oai-brand/15 transition-colors",children:[r("limits.opencodeGo.setupHint.cta"),t.jsx(Qe,{})]})]}),t.jsxs(L,{n:"2",children:[t.jsx("div",{children:r("limits.opencodeGo.setupHint.step2")}),t.jsxs("ul",{className:"mt-1 space-y-0.5 text-oai-gray-500 dark:text-oai-gray-400",children:[t.jsx("li",{children:r("limits.opencodeGo.setupHint.step2_workspace")}),t.jsx("li",{children:r("limits.opencodeGo.setupHint.step2_cookie")})]})]}),t.jsxs(L,{n:"3",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("span",{children:r("limits.opencodeGo.setupHint.step3")}),t.jsx("button",{type:"button",onClick:o,className:"shrink-0 rounded-md border border-oai-gray-300 dark:border-oai-gray-700 px-2 py-0.5 text-[10.5px] text-oai-gray-700 dark:text-oai-gray-200 hover:bg-oai-gray-100 dark:hover:bg-oai-gray-800 transition-colors",children:e?r("limits.opencodeGo.setupHint.copied"):r("limits.opencodeGo.setupHint.copy")})]}),t.jsx("pre",{className:"mt-1.5 overflow-x-auto rounded-md bg-oai-gray-100 dark:bg-oai-gray-900/60 px-2 py-1.5 font-mono text-[10.5px] leading-relaxed whitespace-pre",children:i}),t.jsx("div",{className:"mt-1 text-[10px] text-oai-gray-400 dark:text-oai-gray-500",children:r("limits.opencodeGo.setupHint.note_app")})]})]})]})}function Ze(e){const[a,i]=b.useState(0);return b.useLayoutEffect(()=>{const o=e.current;if(!o)return;const n=o.querySelectorAll("[data-limit-label]");let s=0,d=null;if(n.length>0)try{d=document.createElement("canvas").getContext("2d")}catch{d=null}if(d){const l=window.getComputedStyle(n[0]);d.font=`${l.fontStyle} ${l.fontWeight} ${l.fontSize} ${l.fontFamily}`;for(const u of n)s=Math.max(s,d.measureText(u.textContent).width)}const c=Math.ceil(s);i(l=>l===c?l:c)}),a}function et({claude:e,codex:a,cursor:i,gemini:o,kimi:n,kiro:s,grok:d,antigravity:c,copilot:l,zcode:u,opencodeGo:x,qoder:k,order:p,visibility:S,displayMode:X}){const Y={claude:e,codex:a,cursor:i,gemini:o,kimi:n,kiro:s,grok:d,antigravity:c,copilot:l,zcode:u,opencodeGo:x,qoder:k},R=b.useRef(null),C=Ze(R),[J,Q]=b.useState(null),Z=Array.isArray(p)&&p.length>0?p:Ue,T=X===m.REMAINING?m.REMAINING:m.USED,ee=T===m.REMAINING?r("limits.settings.display_mode_remaining"):r("limits.settings.display_mode_used"),A=Z.filter(g=>!S||S[g]!==!1).map(g=>Ye(g,Y[g],T,J===g,()=>Q(te=>te===g?null:g))).filter(Boolean);return t.jsx(ge,{delay:.15,children:t.jsx(U,{children:t.jsxs("div",{ref:R,className:"flex flex-col gap-3",style:C>0?{"--tt-limits-label-w":`${C}px`}:void 0,children:[t.jsxs("h3",{className:"text-sm font-medium text-oai-gray-500 dark:text-oai-gray-300 uppercase tracking-wide",children:[r("limits.panel.title"),r("limits.panel.mode_separator"),ee]}),A.length>0?A:t.jsx(h,{children:r("limits.status.all_hidden")})]})})})}const tt=typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"),at="x-apple.systempreferences:com.apple.preference.notifications";function it(){const e=ve(),a=se(),i=r("limits.alert.blocked"),o=a?D.button:D.div;return t.jsxs(o,{type:a?"button":void 0,onClick:a?()=>le({type:"action",name:"openURL",value:at}):void 0,initial:e?!1:{opacity:0,x:14,scale:.9},animate:{opacity:1,x:0,scale:1},transition:{type:"spring",stiffness:320,damping:18},title:i,className:`relative hidden sm:inline-flex min-w-0 max-w-[360px] items-center gap-1.5 rounded-full border border-amber-300/70 bg-amber-50 px-3 py-1.5 text-xs text-amber-700 dark:border-amber-500/30 dark:bg-amber-500/10 dark:text-amber-300 ${a?"cursor-pointer transition-colors hover:bg-amber-100 dark:hover:bg-amber-500/20 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-amber-500/60":""}`,children:[t.jsxs("span",{className:"relative flex h-1.5 w-1.5 shrink-0",children:[t.jsx("span",{className:"absolute inline-flex h-full w-full animate-ping rounded-full bg-amber-400 opacity-75"}),t.jsx("span",{className:"relative inline-flex h-1.5 w-1.5 rounded-full bg-amber-500"})]}),t.jsx("span",{className:"truncate",children:i}),t.jsx("span",{"aria-hidden":!0,className:"absolute left-full top-1/2 -translate-y-1/2 border-[5px] border-transparent border-l-amber-300/80 dark:border-l-amber-500/40"})]})}function ht(){const e=ae(),{data:a,error:i,isLoading:o}=ue(e?{initialRefresh:!0,initialState:e,publishToPreloadCache:!0}:{initialRefresh:!0,publishToPreloadCache:!0}),n=pe(),s=me();return ie.useEffect(()=>{s.enabled&&a&&xe(a)},[s.enabled,a]),!tt&&!re()?t.jsx("div",{className:"flex flex-col flex-1 text-oai-black dark:text-oai-white font-oai antialiased",children:t.jsx(ke,{})}):t.jsx("div",{className:"flex flex-col flex-1 text-oai-black dark:text-oai-white font-oai antialiased",children:t.jsx("main",{className:"flex-1 pt-8 sm:pt-10 pb-12 sm:pb-16",children:t.jsxs("div",{className:"mx-auto max-w-6xl px-4 sm:px-6",children:[t.jsxs("div",{className:"flex flex-row items-start justify-between gap-4 mb-8",children:[t.jsxs("div",{className:"min-w-0",children:[t.jsx("h1",{className:"text-3xl sm:text-4xl font-semibold tracking-tight text-oai-black dark:text-white mb-3",children:r("nav.limits")}),t.jsx("p",{className:"text-oai-gray-500 dark:text-oai-gray-400 text-sm sm:text-base",children:r("limits.page.subtitle")})]}),t.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[s.enabled&&s.permissionBlocked?t.jsx(it,{}):null,t.jsx("button",{type:"button",onClick:()=>{s.setEnabled(!s.enabled)},"aria-label":s.enabled?r("limits.alert.disable"):r("limits.alert.enable"),title:s.enabled?r("limits.alert.disable"):r("limits.alert.enable"),className:`inline-flex h-9 w-9 items-center justify-center rounded-lg border border-oai-gray-200 dark:border-oai-gray-800 hover:bg-oai-gray-100 dark:hover:bg-oai-gray-800 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-oai-brand-500 ${s.enabled&&s.permissionBlocked?"text-amber-600 dark:text-amber-400":"text-oai-gray-600 dark:text-oai-gray-400 hover:text-oai-black dark:hover:text-white"}`,children:s.enabled?t.jsx(we,{className:"h-4 w-4","aria-hidden":!0}):t.jsx(_e,{className:"h-4 w-4","aria-hidden":!0})}),t.jsx(ne,{to:"/settings?section=limits","aria-label":r("limits.page.openSettings"),title:r("limits.page.openSettings"),className:"shrink-0 inline-flex h-9 w-9 items-center justify-center rounded-lg border border-oai-gray-200 dark:border-oai-gray-800 text-oai-gray-600 dark:text-oai-gray-400 hover:bg-oai-gray-100 dark:hover:bg-oai-gray-800 hover:text-oai-black dark:hover:text-white transition-colors no-underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-oai-brand-500",children:t.jsx(oe,{className:"h-4 w-4","aria-hidden":!0})})]})]}),o?t.jsx(Le,{}):t.jsxs(t.Fragment,{children:[i?t.jsx("p",{className:"mb-4 text-sm text-red-500 dark:text-red-400",children:r("shared.error.prefix",{error:i})}):null,t.jsx(et,{claude:a?.claude,codex:a?.codex,cursor:a?.cursor,gemini:a?.gemini,kimi:a?.kimi,kiro:a?.kiro,grok:a?.grok,antigravity:a?.antigravity,copilot:a?.copilot,zcode:a?.zcode,opencodeGo:a?.opencodeGo,qoder:a?.qoder,order:n.order,visibility:n.visibility,displayMode:n.displayMode})]})]})})})}export{ht as LimitsPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as r}from"./__vite-browser-external-DsFkaOPr.js";const t=["claude","codex","cursor","gemini","kimi","kiro","grok","copilot","antigravity","zcode","opencodeGo","qoder"],e={claude:"CLAUDE",codex:"CODEX",cursor:"CURSOR",gemini:"GEMINI",kimi:"KIMI",kiro:"KIRO",grok:"GROK",copilot:"COPILOT",antigravity:"ANTIGRAVITY",zcode:"ZCODE",opencodeGo:"OPENCODE",qoder:"QODER"};function c(i){return e[i]||null}function n(i){switch(i){case"claude":return r("limits.provider.claude");case"codex":return r("limits.provider.codex");case"cursor":return r("limits.provider.cursor");case"gemini":return r("limits.provider.gemini");case"kimi":return r("limits.provider.kimi");case"kiro":return r("limits.provider.kiro");case"grok":return r("limits.provider.grok");case"copilot":return r("limits.provider.copilot");case"antigravity":return r("limits.provider.antigravity");case"zcode":return r("limits.provider.zcode");case"opencodeGo":return r("limits.provider.opencode_go");case"qoder":return r("limits.provider.qoder");default:return String(i||"")}}export{t as L,c as a,n as l};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as o}from"./__vite-browser-external-DsFkaOPr.js";import{h as r,i as t,p as s}from"./react-DDPYgpAM.js";function i(){!r.current&&t();const[e]=o.useState(s.current);return e}export{i as u};
|