qwenproxy-cli 1.0.0 → 1.0.2
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/LICENSE +14 -14
- package/README.md +906 -906
- package/bin/qwenproxy.js +5 -1
- package/package.json +77 -78
- package/src/api/error-classifier.ts +159 -159
- package/src/api/error-helpers.ts +118 -118
- package/src/api/models.ts +261 -261
- package/src/api/server.ts +860 -859
- package/src/cache/memory-cache.ts +385 -385
- package/src/clean-cache.ts +204 -204
- package/src/core/account-concurrency.ts +671 -671
- package/src/core/account-manager.ts +301 -297
- package/src/core/account-priority.ts +163 -163
- package/src/core/accounts.ts +186 -186
- package/src/core/config.ts +383 -383
- package/src/core/crypto-utils.ts +79 -79
- package/src/core/database.ts +276 -276
- package/src/core/errors.ts +118 -118
- package/src/core/logger.ts +269 -269
- package/src/core/memory-usage.ts +84 -84
- package/src/core/metrics.ts +291 -291
- package/src/core/model-alias.ts +77 -77
- package/src/core/model-registry.ts +544 -544
- package/src/core/mutex.ts +119 -119
- package/src/core/paths.ts +199 -199
- package/src/core/prompt-limits.ts +214 -214
- package/src/core/reasoning-effort.ts +102 -102
- package/src/core/stream-registry.ts +96 -96
- package/src/core/waf-isolation.ts +117 -117
- package/src/core/watchdog.ts +195 -195
- package/src/delete-chats.ts +23 -23
- package/src/index.ts +65 -64
- package/src/login.ts +147 -147
- package/src/reset-cooldowns.ts +11 -11
- package/src/routes/anthropic/index.ts +355 -355
- package/src/routes/anthropic/translate.ts +522 -522
- package/src/routes/anthropic/types.ts +154 -154
- package/src/routes/anthropic/validation.ts +144 -144
- package/src/routes/chat/account.ts +1817 -1817
- package/src/routes/chat/context.ts +241 -241
- package/src/routes/chat/errors.ts +85 -85
- package/src/routes/chat/helpers.ts +268 -268
- package/src/routes/chat/index.ts +618 -618
- package/src/routes/chat/media.ts +285 -285
- package/src/routes/chat/retry-policy.ts +754 -754
- package/src/routes/chat/stop.ts +98 -98
- package/src/routes/chat/streaming.ts +2710 -2710
- package/src/routes/chat/validation.ts +526 -526
- package/src/routes/chat.ts +2 -2
- package/src/routes/completions.ts +290 -290
- package/src/routes/images.ts +139 -139
- package/src/routes/responses/adapter.ts +503 -503
- package/src/routes/responses/index.ts +405 -405
- package/src/routes/responses/state.ts +230 -230
- package/src/routes/responses/streaming.ts +528 -528
- package/src/routes/responses/types.ts +285 -285
- package/src/routes/responses/validation.ts +202 -202
- package/src/routes/upload.ts +731 -731
- package/src/routes/videos.ts +214 -214
- package/src/services/auth-playwright.ts +173 -173
- package/src/services/captcha-coordinator.ts +161 -161
- package/src/services/captcha-solver.ts +553 -553
- package/src/services/chat-cleanup.ts +80 -80
- package/src/services/context-meter.ts +317 -317
- package/src/services/fingerprint.ts +242 -242
- package/src/services/human-behavior.ts +173 -173
- package/src/services/media-generation.ts +1748 -1748
- package/src/services/playwright.ts +2878 -2800
- package/src/services/qwen-chat-pool.ts +345 -345
- package/src/services/qwen-errors.ts +133 -133
- package/src/services/qwen-headers.ts +79 -79
- package/src/services/qwen-thread-state.ts +393 -393
- package/src/services/qwen-url.ts +19 -19
- package/src/services/qwen.ts +3126 -3126
- package/src/services/session-keeper.ts +88 -88
- package/src/services/token-estimation-metrics.ts +118 -118
- package/src/sync/claude-code.ts +75 -75
- package/src/sync/codex.ts +123 -123
- package/src/sync/index.ts +362 -362
- package/src/sync/omp.ts +105 -105
- package/src/sync/opencode.ts +214 -214
- package/src/sync/types.ts +53 -53
- package/src/sync/utils.ts +27 -27
- package/src/sync-clients.ts +189 -189
- package/src/tools/instructions.ts +137 -137
- package/src/tools/manifest.ts +81 -81
- package/src/tools/parser.ts +2989 -2989
- package/src/tools/toolcall-tags.ts +142 -142
- package/src/tui/app.ts +259 -264
- package/src/tui/index.ts +61 -61
- package/src/tui/markdown.ts +258 -258
- package/src/tui/proxy-client.ts +331 -326
- package/src/tui/screen.ts +294 -278
- package/src/tui/server-manager.ts +270 -270
- package/src/tui/theme.ts +432 -432
- package/src/tui/types.ts +33 -33
- package/src/tui/views/accounts-view.ts +656 -656
- package/src/tui/views/chat-view.ts +1018 -823
- package/src/tui/views/logs-view.ts +479 -413
- package/src/tui/views/status-view.ts +204 -204
- package/src/tui/views/storage-view.ts +304 -291
- package/src/tui/views/sync-view.ts +409 -409
- package/src/types/ali-oss.d.ts +32 -32
- package/src/update-cli.ts +121 -0
- package/src/utils/context-truncation.ts +84 -84
- package/src/utils/json.ts +380 -380
- package/src/utils/session-id.ts +37 -37
- package/src/utils/tool-call-guard.ts +84 -84
- package/src/utils/types.ts +109 -109
package/src/core/memory-usage.ts
CHANGED
|
@@ -1,84 +1,84 @@
|
|
|
1
|
-
import v8 from "v8";
|
|
2
|
-
import os from "os";
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Heap pressure relative to V8 heap_size_limit (not heapTotal).
|
|
6
|
-
* heapUsed/heapTotal is almost always high (~95%+) and caused false criticals.
|
|
7
|
-
*/
|
|
8
|
-
export interface HeapUsageSnapshot {
|
|
9
|
-
heapUsed: number;
|
|
10
|
-
heapTotal: number;
|
|
11
|
-
heapSizeLimit: number;
|
|
12
|
-
rss: number;
|
|
13
|
-
usagePercent: number;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export function getHeapUsageSnapshot(
|
|
17
|
-
mem: NodeJS.MemoryUsage = process.memoryUsage(),
|
|
18
|
-
heapSizeLimit: number = v8.getHeapStatistics().heap_size_limit,
|
|
19
|
-
): HeapUsageSnapshot {
|
|
20
|
-
const limit =
|
|
21
|
-
Number.isFinite(heapSizeLimit) && heapSizeLimit > 0
|
|
22
|
-
? heapSizeLimit
|
|
23
|
-
: Math.max(mem.heapTotal, 1);
|
|
24
|
-
const usagePercent = (mem.heapUsed / limit) * 100;
|
|
25
|
-
return {
|
|
26
|
-
heapUsed: mem.heapUsed,
|
|
27
|
-
heapTotal: mem.heapTotal,
|
|
28
|
-
heapSizeLimit: limit,
|
|
29
|
-
rss: mem.rss,
|
|
30
|
-
usagePercent,
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export function classifyRamUsage(
|
|
35
|
-
usagePercent: number,
|
|
36
|
-
warningThreshold: number,
|
|
37
|
-
criticalThreshold: number,
|
|
38
|
-
): "ok" | "warning" | "critical" {
|
|
39
|
-
if (usagePercent > criticalThreshold) return "critical";
|
|
40
|
-
if (usagePercent > warningThreshold) return "warning";
|
|
41
|
-
return "ok";
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* RSS pressure relative to TOTAL system memory. The heap-vs-limit ratio misses
|
|
46
|
-
* Playwright browser processes (RSS lives outside the V8 heap); RSS vs total
|
|
47
|
-
* RAM is the metric that actually predicts OOM on a VPS.
|
|
48
|
-
*/
|
|
49
|
-
export interface RssUsageSnapshot {
|
|
50
|
-
rss: number;
|
|
51
|
-
totalSystemMemory: number;
|
|
52
|
-
/** RSS as a percentage of total system memory. */
|
|
53
|
-
usagePercent: number;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
export function getRssUsageSnapshot(
|
|
57
|
-
mem: NodeJS.MemoryUsage = process.memoryUsage(),
|
|
58
|
-
totalSystemMemory: number = os.totalmem(),
|
|
59
|
-
): RssUsageSnapshot {
|
|
60
|
-
const usagePercent =
|
|
61
|
-
Number.isFinite(totalSystemMemory) && totalSystemMemory > 0
|
|
62
|
-
? (mem.rss / totalSystemMemory) * 100
|
|
63
|
-
: 0;
|
|
64
|
-
return {
|
|
65
|
-
rss: mem.rss,
|
|
66
|
-
totalSystemMemory,
|
|
67
|
-
usagePercent,
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
/** % of system RAM used by this process (RSS), rounded to one decimal. */
|
|
72
|
-
export function getMemoryUsagePct(
|
|
73
|
-
mem: NodeJS.MemoryUsage = process.memoryUsage(),
|
|
74
|
-
totalSystemMemory: number = os.totalmem(),
|
|
75
|
-
): number {
|
|
76
|
-
const snap = getRssUsageSnapshot(mem, totalSystemMemory);
|
|
77
|
-
if (
|
|
78
|
-
!Number.isFinite(snap.rss) ||
|
|
79
|
-
snap.totalSystemMemory <= 0
|
|
80
|
-
) {
|
|
81
|
-
return 0;
|
|
82
|
-
}
|
|
83
|
-
return Number(snap.usagePercent.toFixed(1));
|
|
84
|
-
}
|
|
1
|
+
import v8 from "v8";
|
|
2
|
+
import os from "os";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Heap pressure relative to V8 heap_size_limit (not heapTotal).
|
|
6
|
+
* heapUsed/heapTotal is almost always high (~95%+) and caused false criticals.
|
|
7
|
+
*/
|
|
8
|
+
export interface HeapUsageSnapshot {
|
|
9
|
+
heapUsed: number;
|
|
10
|
+
heapTotal: number;
|
|
11
|
+
heapSizeLimit: number;
|
|
12
|
+
rss: number;
|
|
13
|
+
usagePercent: number;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export function getHeapUsageSnapshot(
|
|
17
|
+
mem: NodeJS.MemoryUsage = process.memoryUsage(),
|
|
18
|
+
heapSizeLimit: number = v8.getHeapStatistics().heap_size_limit,
|
|
19
|
+
): HeapUsageSnapshot {
|
|
20
|
+
const limit =
|
|
21
|
+
Number.isFinite(heapSizeLimit) && heapSizeLimit > 0
|
|
22
|
+
? heapSizeLimit
|
|
23
|
+
: Math.max(mem.heapTotal, 1);
|
|
24
|
+
const usagePercent = (mem.heapUsed / limit) * 100;
|
|
25
|
+
return {
|
|
26
|
+
heapUsed: mem.heapUsed,
|
|
27
|
+
heapTotal: mem.heapTotal,
|
|
28
|
+
heapSizeLimit: limit,
|
|
29
|
+
rss: mem.rss,
|
|
30
|
+
usagePercent,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function classifyRamUsage(
|
|
35
|
+
usagePercent: number,
|
|
36
|
+
warningThreshold: number,
|
|
37
|
+
criticalThreshold: number,
|
|
38
|
+
): "ok" | "warning" | "critical" {
|
|
39
|
+
if (usagePercent > criticalThreshold) return "critical";
|
|
40
|
+
if (usagePercent > warningThreshold) return "warning";
|
|
41
|
+
return "ok";
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* RSS pressure relative to TOTAL system memory. The heap-vs-limit ratio misses
|
|
46
|
+
* Playwright browser processes (RSS lives outside the V8 heap); RSS vs total
|
|
47
|
+
* RAM is the metric that actually predicts OOM on a VPS.
|
|
48
|
+
*/
|
|
49
|
+
export interface RssUsageSnapshot {
|
|
50
|
+
rss: number;
|
|
51
|
+
totalSystemMemory: number;
|
|
52
|
+
/** RSS as a percentage of total system memory. */
|
|
53
|
+
usagePercent: number;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export function getRssUsageSnapshot(
|
|
57
|
+
mem: NodeJS.MemoryUsage = process.memoryUsage(),
|
|
58
|
+
totalSystemMemory: number = os.totalmem(),
|
|
59
|
+
): RssUsageSnapshot {
|
|
60
|
+
const usagePercent =
|
|
61
|
+
Number.isFinite(totalSystemMemory) && totalSystemMemory > 0
|
|
62
|
+
? (mem.rss / totalSystemMemory) * 100
|
|
63
|
+
: 0;
|
|
64
|
+
return {
|
|
65
|
+
rss: mem.rss,
|
|
66
|
+
totalSystemMemory,
|
|
67
|
+
usagePercent,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/** % of system RAM used by this process (RSS), rounded to one decimal. */
|
|
72
|
+
export function getMemoryUsagePct(
|
|
73
|
+
mem: NodeJS.MemoryUsage = process.memoryUsage(),
|
|
74
|
+
totalSystemMemory: number = os.totalmem(),
|
|
75
|
+
): number {
|
|
76
|
+
const snap = getRssUsageSnapshot(mem, totalSystemMemory);
|
|
77
|
+
if (
|
|
78
|
+
!Number.isFinite(snap.rss) ||
|
|
79
|
+
snap.totalSystemMemory <= 0
|
|
80
|
+
) {
|
|
81
|
+
return 0;
|
|
82
|
+
}
|
|
83
|
+
return Number(snap.usagePercent.toFixed(1));
|
|
84
|
+
}
|