zcode-acp-server 0.53.3 → 0.55.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,25 @@
1
+ /**
2
+ * BigModel/Z.AI monitor-usage HTTP client (platform usage statistics).
3
+ *
4
+ * The monitor family lives on the same hosts and uses the same auth as the
5
+ * quota endpoint (`client.ts`): the active provider's apiKey over the host
6
+ * derived from its baseURL. Every endpoint answers the `{code, msg, success,
7
+ * data}` envelope; classification (auth / rate-limit / empty) happens in the
8
+ * consumer, `src/quota/platform-usage.ts`.
9
+ */
10
+ /** Monitor endpoints this client serves. */
11
+ export type MonitorEndpoint = "/api/monitor/credit-usage/activity" | "/api/monitor/credit-usage/usage-detail" | "/api/monitor/usage/model-usage" | "/api/monitor/usage/tool-usage";
12
+ /** Raw response from a monitor endpoint, pre-classification. */
13
+ export interface MonitorResponse {
14
+ status: number;
15
+ json: unknown;
16
+ text: string;
17
+ }
18
+ /**
19
+ * Fetch one monitor endpoint for the active account.
20
+ *
21
+ * @throws if the active provider has no apiKey in config, or on network/timeout
22
+ * errors. The caller maps these to `unavailable`.
23
+ */
24
+ export declare function fetchMonitorResponse(endpoint: MonitorEndpoint, search: Record<string, string>, fetchImpl?: typeof globalThis.fetch): Promise<MonitorResponse>;
25
+ //# sourceMappingURL=monitor-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monitor-client.d.ts","sourceRoot":"","sources":["../../src/quota/monitor-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,4CAA4C;AAC5C,MAAM,MAAM,eAAe,GACvB,oCAAoC,GACpC,wCAAwC,GACxC,gCAAgC,GAChC,+BAA+B,CAAC;AAQpC,gEAAgE;AAChE,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,eAAe,EACzB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,SAAS,GAAE,OAAO,UAAU,CAAC,KAAwB,GACpD,OAAO,CAAC,eAAe,CAAC,CA2B1B"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * BigModel/Z.AI monitor-usage HTTP client (platform usage statistics).
3
+ *
4
+ * The monitor family lives on the same hosts and uses the same auth as the
5
+ * quota endpoint (`client.ts`): the active provider's apiKey over the host
6
+ * derived from its baseURL. Every endpoint answers the `{code, msg, success,
7
+ * data}` envelope; classification (auth / rate-limit / empty) happens in the
8
+ * consumer, `src/quota/platform-usage.ts`.
9
+ */
10
+ import { loadZcodeCredentials } from "../backend/credentials.js";
11
+ import { resolveQuotaHost } from "./client.js";
12
+ /**
13
+ * Request timeout. Desktop parity — the 365-day activity series is the worst
14
+ * case, so this is looser than the quota client's 8s.
15
+ */
16
+ const TIMEOUT_MS = 15_000;
17
+ /**
18
+ * Fetch one monitor endpoint for the active account.
19
+ *
20
+ * @throws if the active provider has no apiKey in config, or on network/timeout
21
+ * errors. The caller maps these to `unavailable`.
22
+ */
23
+ export async function fetchMonitorResponse(endpoint, search, fetchImpl = globalThis.fetch) {
24
+ const { ANTHROPIC_API_KEY, providerBaseURL } = loadZcodeCredentials();
25
+ if (!ANTHROPIC_API_KEY) {
26
+ throw new Error("no apiKey in ZCode config — cannot query platform usage");
27
+ }
28
+ const url = new URL(resolveQuotaHost(providerBaseURL ?? "") + endpoint);
29
+ for (const [key, value] of Object.entries(search))
30
+ url.searchParams.set(key, value);
31
+ const resp = await fetchImpl(url, {
32
+ method: "GET",
33
+ headers: {
34
+ Accept: "application/json, text/plain, */*",
35
+ Authorization: `Bearer ${ANTHROPIC_API_KEY}`,
36
+ },
37
+ signal: AbortSignal.timeout(TIMEOUT_MS),
38
+ });
39
+ const text = await resp.text();
40
+ let json = null;
41
+ try {
42
+ json = text ? JSON.parse(text) : null;
43
+ }
44
+ catch {
45
+ // Non-JSON body — leave json null; the classifier treats it as unavailable.
46
+ }
47
+ return { status: resp.status, json, text };
48
+ }
49
+ //# sourceMappingURL=monitor-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monitor-client.js","sourceRoot":"","sources":["../../src/quota/monitor-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAS/C;;;GAGG;AACH,MAAM,UAAU,GAAG,MAAM,CAAC;AAS1B;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,QAAyB,EACzB,MAA8B,EAC9B,YAAqC,UAAU,CAAC,KAAK;IAErD,MAAM,EAAE,iBAAiB,EAAE,eAAe,EAAE,GAAG,oBAAoB,EAAE,CAAC;IACtE,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,eAAe,IAAI,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC;IACxE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAEpF,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE;QAChC,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACP,MAAM,EAAE,mCAAmC;YAC3C,aAAa,EAAE,UAAU,iBAAiB,EAAE;SAC7C;QACD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC;KACxC,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,IAAI,GAAY,IAAI,CAAC;IACzB,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,4EAA4E;IAC9E,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC7C,CAAC"}
@@ -17,6 +17,10 @@ import type { QuotaItem, QuotaResult, RawLimit } from "./types.js";
17
17
  * can be computed (the limit is then dropped from display).
18
18
  */
19
19
  export declare function parseLimit(limit: RawLimit): QuotaItem | null;
20
+ /** Auth-failure detection from the business-layer `msg` (zh/en keywords). */
21
+ export declare function isAuthFailureMessage(msg: unknown): boolean;
22
+ /** Rate-limit detection from the business-layer `msg` (zh/en keywords). */
23
+ export declare function isRateLimitedMessage(msg: unknown): boolean;
20
24
  /**
21
25
  * Parse the full API response (already classified by the fetch layer as a
22
26
  * `response` with a status + body) into a {@link QuotaResult}.
@@ -1 +1 @@
1
- {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/quota/parse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAmGnE;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI,CA8B5D;AAuBD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,WAAW,CAmCd"}
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/quota/parse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAmGnE;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI,CA8B5D;AAED,6EAA6E;AAC7E,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAE1D;AAED,2EAA2E;AAC3E,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAK1D;AAUD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,WAAW,CAmCd"}
@@ -129,11 +129,11 @@ export function parseLimit(limit) {
129
129
  return item;
130
130
  }
131
131
  /** Auth-failure detection from the business-layer `msg` (zh/en keywords). */
132
- function isAuthFailureMessage(msg) {
132
+ export function isAuthFailureMessage(msg) {
133
133
  return typeof msg === "string" && /authorization|auth|token|鉴权|授权|未登录/i.test(msg);
134
134
  }
135
135
  /** Rate-limit detection from the business-layer `msg` (zh/en keywords). */
136
- function isRateLimitedMessage(msg) {
136
+ export function isRateLimitedMessage(msg) {
137
137
  return (typeof msg === "string" &&
138
138
  /rate\s*limit|too many requests|too frequent|frequency|限流|频率|过于频繁|稍后再试/i.test(msg));
139
139
  }
@@ -1 +1 @@
1
- {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/quota/parse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/quota/parse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Platform usage statistics — the account-level monitor data behind the
3
+ * desktop app's Coding Plan usage tab, aggregated for the mobile app's Usage
4
+ * page (contract: `.zcode/docs/platform-usage-backend-requirements.md` in the
5
+ * app repo).
6
+ *
7
+ * Lives in `src/quota/` next to the monitor client: same upstream family
8
+ * (BigModel/Z.AI monitor API), same host derivation and credentials as the
9
+ * quota windows. The settings route (`src/remote/settings-endpoint.ts`) mounts
10
+ * it under `GET /settings/usage-platform`.
11
+ *
12
+ * Three upstream blocks are read in parallel (activity is a fixed 365-day
13
+ * window; model/tool detail follow the requested range), each defensively
14
+ * parsed: a missing block is empty data, not an error, and only a total
15
+ * failure surfaces an error kind. Normalization is ported from the desktop
16
+ * mapper (`packages/services/src/usage-stats/providers/bigmodelUsageMonitorMapper.ts`),
17
+ * including its two load-bearing quirks:
18
+ *
19
+ * - credit-usage "cached/uncached/output" rows are billing components, not
20
+ * models — unfiltered they would double the totals;
21
+ * - every numeric field may arrive as number, numeric string or null.
22
+ */
23
+ export type PlatformUsageRange = "today" | "7d" | "30d";
24
+ export type PlatformUsageKind = "success" | "auth_error" | "rate_limited" | "unavailable";
25
+ export declare const PLATFORM_USAGE_RANGES: ReadonlySet<string>;
26
+ export declare function isPlatformUsageRange(value: string): value is PlatformUsageRange;
27
+ export interface PlatformHeatmapCell {
28
+ date: string;
29
+ level: number;
30
+ tokens: number;
31
+ }
32
+ export interface PlatformActivity {
33
+ summary: {
34
+ totalTokens: number;
35
+ peakDailyTokens: number;
36
+ peakDailyTokensDate: string | null;
37
+ totalUsageDurationMs: number;
38
+ currentStreakDays: number;
39
+ longestStreakDays: number;
40
+ };
41
+ heatmap: {
42
+ startDate: string | null;
43
+ endDate: string | null;
44
+ maxTokens: number;
45
+ weeks: Array<{
46
+ days: Array<PlatformHeatmapCell | null>;
47
+ }>;
48
+ };
49
+ }
50
+ export interface PlatformDetailSummary {
51
+ cacheHitRate: number | null;
52
+ cacheHitRateTrend: number | null;
53
+ totalCredits: number;
54
+ totalCreditsTrend: number | null;
55
+ averageDailyCredits: number;
56
+ averageDailyCreditsTrend: number | null;
57
+ }
58
+ export interface PlatformModelRow {
59
+ name: string;
60
+ totalTokens: number;
61
+ totalCredits?: number;
62
+ cachedInputTokens?: number;
63
+ uncachedInputTokens?: number;
64
+ outputTokens?: number;
65
+ sortOrder: number;
66
+ }
67
+ export interface PlatformToolRow {
68
+ name: string;
69
+ totalUsageCount: number;
70
+ totalCredits?: number;
71
+ }
72
+ export interface PlatformSeries {
73
+ granularity: "hour" | "day";
74
+ xTime: string[];
75
+ totals: number[];
76
+ }
77
+ export interface PlatformUsageResult {
78
+ kind: PlatformUsageKind;
79
+ range: PlatformUsageRange;
80
+ generatedAt: number;
81
+ activity?: PlatformActivity;
82
+ detail?: {
83
+ model: PlatformDetailSummary | null;
84
+ tool: PlatformDetailSummary | null;
85
+ };
86
+ models?: PlatformModelRow[];
87
+ tools?: PlatformToolRow[];
88
+ series?: PlatformSeries;
89
+ }
90
+ /**
91
+ * Read the platform usage snapshot for a range.
92
+ *
93
+ * Serves a cached result when fresh (< 15s); concurrent reads for the same
94
+ * range share one upstream round trip (the 365-day activity fetch is the
95
+ * expensive one, and a burst of range taps must not fan out).
96
+ */
97
+ export declare function readPlatformUsage(range?: PlatformUsageRange): Promise<PlatformUsageResult>;
98
+ /** Test helper: drop cached results and in-flight promises. */
99
+ export declare function resetPlatformUsageCacheForTest(): void;
100
+ /** Test helper: inject a fake clock. Pass `undefined` to restore real time. */
101
+ export declare function setPlatformUsageClockForTest(fn?: () => number): void;
102
+ //# sourceMappingURL=platform-usage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-usage.d.ts","sourceRoot":"","sources":["../../src/quota/platform-usage.ts"],"names":[],"mappings":"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"}