@slkiser/opencode-quota 2.5.1 → 2.6.1

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.
Files changed (47) hide show
  1. package/README.md +45 -10
  2. package/dist/lib/alibaba-auth.d.ts +21 -0
  3. package/dist/lib/alibaba-auth.d.ts.map +1 -0
  4. package/dist/lib/alibaba-auth.js +92 -0
  5. package/dist/lib/alibaba-auth.js.map +1 -0
  6. package/dist/lib/config.d.ts.map +1 -1
  7. package/dist/lib/config.js +4 -0
  8. package/dist/lib/config.js.map +1 -1
  9. package/dist/lib/copilot.d.ts +4 -4
  10. package/dist/lib/copilot.d.ts.map +1 -1
  11. package/dist/lib/copilot.js +177 -30
  12. package/dist/lib/copilot.js.map +1 -1
  13. package/dist/lib/entries.d.ts +1 -0
  14. package/dist/lib/entries.d.ts.map +1 -1
  15. package/dist/lib/provider-metadata.d.ts.map +1 -1
  16. package/dist/lib/provider-metadata.js +2 -0
  17. package/dist/lib/provider-metadata.js.map +1 -1
  18. package/dist/lib/quota-status.d.ts +1 -0
  19. package/dist/lib/quota-status.d.ts.map +1 -1
  20. package/dist/lib/quota-status.js +43 -6
  21. package/dist/lib/quota-status.js.map +1 -1
  22. package/dist/lib/qwen-auth.d.ts +10 -0
  23. package/dist/lib/qwen-auth.d.ts.map +1 -1
  24. package/dist/lib/qwen-auth.js +22 -5
  25. package/dist/lib/qwen-auth.js.map +1 -1
  26. package/dist/lib/qwen-local-quota.d.ts +41 -0
  27. package/dist/lib/qwen-local-quota.d.ts.map +1 -1
  28. package/dist/lib/qwen-local-quota.js +132 -20
  29. package/dist/lib/qwen-local-quota.js.map +1 -1
  30. package/dist/lib/types.d.ts +22 -6
  31. package/dist/lib/types.d.ts.map +1 -1
  32. package/dist/lib/types.js +1 -0
  33. package/dist/lib/types.js.map +1 -1
  34. package/dist/plugin.d.ts.map +1 -1
  35. package/dist/plugin.js +88 -28
  36. package/dist/plugin.js.map +1 -1
  37. package/dist/providers/alibaba-coding-plan.d.ts +3 -0
  38. package/dist/providers/alibaba-coding-plan.d.ts.map +1 -0
  39. package/dist/providers/alibaba-coding-plan.js +87 -0
  40. package/dist/providers/alibaba-coding-plan.js.map +1 -0
  41. package/dist/providers/qwen-code.d.ts.map +1 -1
  42. package/dist/providers/qwen-code.js +11 -10
  43. package/dist/providers/qwen-code.js.map +1 -1
  44. package/dist/providers/registry.d.ts.map +1 -1
  45. package/dist/providers/registry.js +2 -0
  46. package/dist/providers/registry.js.map +1 -1
  47. package/package.json +1 -1
@@ -3,10 +3,27 @@ import { dirname, join } from "path";
3
3
  import { clampPercent } from "./format-utils.js";
4
4
  import { getOpencodeRuntimeDirs } from "./opencode-runtime-paths.js";
5
5
  const QWEN_LOCAL_QUOTA_STATE_VERSION = 1;
6
- const QWEN_DAILY_LIMIT = 1000;
7
- const QWEN_RPM_LIMIT = 60;
6
+ const ALIBABA_CODING_PLAN_STATE_VERSION = 1;
7
+ const QWEN_FREE_DAILY_LIMIT = 1000;
8
+ const QWEN_FREE_RPM_LIMIT = 60;
8
9
  const RPM_WINDOW_MS = 60_000;
9
- const MAX_RECENT_TIMESTAMPS = 300;
10
+ const FIVE_HOUR_WINDOW_MS = 5 * 60 * 60 * 1000;
11
+ const WEEKLY_WINDOW_MS = 7 * 24 * 60 * 60 * 1000;
12
+ const MONTHLY_WINDOW_MS = 30 * 24 * 60 * 60 * 1000;
13
+ const MAX_QWEN_RECENT_TIMESTAMPS = 300;
14
+ export const ALIBABA_CODING_PLAN_LIMITS = {
15
+ lite: {
16
+ fiveHour: 1200,
17
+ weekly: 9000,
18
+ monthly: 18000,
19
+ },
20
+ pro: {
21
+ fiveHour: 6000,
22
+ weekly: 45000,
23
+ monthly: 90000,
24
+ },
25
+ };
26
+ const MAX_ALIBABA_MONTHLY_LIMIT = Math.max(...Object.values(ALIBABA_CODING_PLAN_LIMITS).map((limits) => limits.monthly));
10
27
  function utcDayKey(tsMs) {
11
28
  return new Date(tsMs).toISOString().slice(0, 10);
12
29
  }
@@ -15,7 +32,7 @@ function nextUtcMidnightIso(tsMs) {
15
32
  const nextMidnight = Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate() + 1, 0, 0, 0);
16
33
  return new Date(nextMidnight).toISOString();
17
34
  }
18
- function defaultState(nowMs) {
35
+ function defaultQwenState(nowMs) {
19
36
  return {
20
37
  version: QWEN_LOCAL_QUOTA_STATE_VERSION,
21
38
  utcDay: utcDayKey(nowMs),
@@ -24,22 +41,46 @@ function defaultState(nowMs) {
24
41
  updatedAt: nowMs,
25
42
  };
26
43
  }
27
- function normalizeState(raw, nowMs) {
28
- if (!raw || typeof raw !== "object") {
29
- return defaultState(nowMs);
44
+ function defaultAlibabaState(nowMs) {
45
+ return {
46
+ version: ALIBABA_CODING_PLAN_STATE_VERSION,
47
+ recent: [],
48
+ updatedAt: nowMs,
49
+ };
50
+ }
51
+ function normalizeRecent(raw) {
52
+ if (!Array.isArray(raw)) {
53
+ return [];
30
54
  }
31
- const obj = raw;
32
- const recentRaw = Array.isArray(obj.recent) ? obj.recent : [];
33
- const recent = recentRaw
55
+ return raw
34
56
  .filter((x) => typeof x === "number" && Number.isFinite(x) && x > 0)
35
57
  .map((x) => Math.trunc(x));
58
+ }
59
+ function normalizeQwenState(raw, nowMs) {
60
+ if (!raw || typeof raw !== "object") {
61
+ return defaultQwenState(nowMs);
62
+ }
63
+ const obj = raw;
36
64
  return {
37
65
  version: QWEN_LOCAL_QUOTA_STATE_VERSION,
38
66
  utcDay: typeof obj.utcDay === "string" && obj.utcDay.length === 10 ? obj.utcDay : utcDayKey(nowMs),
39
67
  dayCount: typeof obj.dayCount === "number" && Number.isFinite(obj.dayCount) && obj.dayCount >= 0
40
68
  ? Math.trunc(obj.dayCount)
41
69
  : 0,
42
- recent,
70
+ recent: normalizeRecent(obj.recent),
71
+ updatedAt: typeof obj.updatedAt === "number" && Number.isFinite(obj.updatedAt) && obj.updatedAt > 0
72
+ ? Math.trunc(obj.updatedAt)
73
+ : nowMs,
74
+ };
75
+ }
76
+ function normalizeAlibabaState(raw, nowMs) {
77
+ if (!raw || typeof raw !== "object") {
78
+ return defaultAlibabaState(nowMs);
79
+ }
80
+ const obj = raw;
81
+ return {
82
+ version: ALIBABA_CODING_PLAN_STATE_VERSION,
83
+ recent: normalizeRecent(obj.recent),
43
84
  updatedAt: typeof obj.updatedAt === "number" && Number.isFinite(obj.updatedAt) && obj.updatedAt > 0
44
85
  ? Math.trunc(obj.updatedAt)
45
86
  : nowMs,
@@ -50,7 +91,7 @@ function applyUtcResetAndPrune(state, nowMs) {
50
91
  const recentFloor = nowMs - RPM_WINDOW_MS;
51
92
  const recent = state.recent
52
93
  .filter((ts) => ts >= recentFloor && ts <= nowMs)
53
- .slice(-MAX_RECENT_TIMESTAMPS);
94
+ .slice(-MAX_QWEN_RECENT_TIMESTAMPS);
54
95
  if (state.utcDay !== today) {
55
96
  return {
56
97
  version: QWEN_LOCAL_QUOTA_STATE_VERSION,
@@ -68,19 +109,30 @@ function applyUtcResetAndPrune(state, nowMs) {
68
109
  updatedAt: nowMs,
69
110
  };
70
111
  }
112
+ function pruneAlibabaState(state, nowMs) {
113
+ const recentFloor = nowMs - MONTHLY_WINDOW_MS;
114
+ const recent = state.recent
115
+ .filter((ts) => ts >= recentFloor && ts <= nowMs)
116
+ .slice(-MAX_ALIBABA_MONTHLY_LIMIT);
117
+ return {
118
+ version: ALIBABA_CODING_PLAN_STATE_VERSION,
119
+ recent,
120
+ updatedAt: nowMs,
121
+ };
122
+ }
71
123
  function toPercentRemaining(used, limit) {
72
124
  if (limit <= 0)
73
125
  return 0;
74
126
  const remaining = ((limit - used) / limit) * 100;
75
127
  return clampPercent(remaining);
76
128
  }
77
- async function readStateFromDisk(path, nowMs) {
129
+ async function readJsonState(path, fallback, normalize) {
78
130
  try {
79
131
  const raw = await readFile(path, "utf-8");
80
- return normalizeState(JSON.parse(raw), nowMs);
132
+ return normalize(JSON.parse(raw));
81
133
  }
82
134
  catch {
83
- return defaultState(nowMs);
135
+ return fallback;
84
136
  }
85
137
  }
86
138
  async function writeStateToDisk(path, state) {
@@ -112,25 +164,59 @@ async function writeStateToDisk(path, state) {
112
164
  await rename(tmp, path);
113
165
  }
114
166
  }
167
+ function computeRollingWindow(params) {
168
+ const windowFloor = params.nowMs - params.windowMs;
169
+ const matches = params.recent.filter((ts) => ts >= windowFloor && ts <= params.nowMs);
170
+ const oldest = matches.length > 0 ? Math.min(...matches) : undefined;
171
+ return {
172
+ used: matches.length,
173
+ limit: params.limit,
174
+ percentRemaining: toPercentRemaining(matches.length, params.limit),
175
+ resetTimeIso: typeof oldest === "number" ? new Date(oldest + params.windowMs).toISOString() : undefined,
176
+ };
177
+ }
115
178
  export function getQwenLocalQuotaPath() {
116
179
  const { stateDir } = getOpencodeRuntimeDirs();
117
180
  return join(stateDir, "opencode-quota", "qwen-local-quota.json");
118
181
  }
182
+ export function getAlibabaCodingPlanQuotaPath() {
183
+ const { stateDir } = getOpencodeRuntimeDirs();
184
+ return join(stateDir, "opencode-quota", "alibaba-coding-plan-local-quota.json");
185
+ }
119
186
  export async function readQwenLocalQuotaState(params) {
120
187
  const nowMs = params?.nowMs ?? Date.now();
121
188
  const path = getQwenLocalQuotaPath();
122
- const state = await readStateFromDisk(path, nowMs);
189
+ const state = await readJsonState(path, defaultQwenState(nowMs), (raw) => normalizeQwenState(raw, nowMs));
123
190
  return applyUtcResetAndPrune(state, nowMs);
124
191
  }
192
+ export async function readAlibabaCodingPlanQuotaState(params) {
193
+ const nowMs = params?.nowMs ?? Date.now();
194
+ const path = getAlibabaCodingPlanQuotaPath();
195
+ const state = await readJsonState(path, defaultAlibabaState(nowMs), (raw) => normalizeAlibabaState(raw, nowMs));
196
+ return pruneAlibabaState(state, nowMs);
197
+ }
125
198
  export async function recordQwenCompletion(params) {
126
199
  const nowMs = params?.atMs ?? Date.now();
127
200
  const path = getQwenLocalQuotaPath();
128
- const loaded = await readStateFromDisk(path, nowMs);
201
+ const loaded = await readJsonState(path, defaultQwenState(nowMs), (raw) => normalizeQwenState(raw, nowMs));
129
202
  const state = applyUtcResetAndPrune(loaded, nowMs);
130
203
  const next = {
131
204
  ...state,
132
205
  dayCount: state.dayCount + 1,
133
- recent: [...state.recent, nowMs].slice(-MAX_RECENT_TIMESTAMPS),
206
+ recent: [...state.recent, nowMs].slice(-MAX_QWEN_RECENT_TIMESTAMPS),
207
+ updatedAt: nowMs,
208
+ };
209
+ await writeStateToDisk(path, next);
210
+ return next;
211
+ }
212
+ export async function recordAlibabaCodingPlanCompletion(params) {
213
+ const nowMs = params?.atMs ?? Date.now();
214
+ const path = getAlibabaCodingPlanQuotaPath();
215
+ const loaded = await readJsonState(path, defaultAlibabaState(nowMs), (raw) => normalizeAlibabaState(raw, nowMs));
216
+ const state = pruneAlibabaState(loaded, nowMs);
217
+ const next = {
218
+ ...state,
219
+ recent: [...state.recent, nowMs].slice(-MAX_ALIBABA_MONTHLY_LIMIT),
134
220
  updatedAt: nowMs,
135
221
  };
136
222
  await writeStateToDisk(path, next);
@@ -138,8 +224,8 @@ export async function recordQwenCompletion(params) {
138
224
  }
139
225
  export function computeQwenQuota(params) {
140
226
  const nowMs = params.nowMs ?? Date.now();
141
- const dayLimit = params.dayLimit ?? QWEN_DAILY_LIMIT;
142
- const rpmLimit = params.rpmLimit ?? QWEN_RPM_LIMIT;
227
+ const dayLimit = params.dayLimit ?? QWEN_FREE_DAILY_LIMIT;
228
+ const rpmLimit = params.rpmLimit ?? QWEN_FREE_RPM_LIMIT;
143
229
  const state = applyUtcResetAndPrune(params.state, nowMs);
144
230
  const dayUsed = Math.max(0, Math.trunc(state.dayCount));
145
231
  const rpmUsed = state.recent.length;
@@ -159,4 +245,30 @@ export function computeQwenQuota(params) {
159
245
  },
160
246
  };
161
247
  }
248
+ export function computeAlibabaCodingPlanQuota(params) {
249
+ const nowMs = params.nowMs ?? Date.now();
250
+ const state = pruneAlibabaState(params.state, nowMs);
251
+ const limits = params.limits ?? ALIBABA_CODING_PLAN_LIMITS[params.tier];
252
+ return {
253
+ tier: params.tier,
254
+ fiveHour: computeRollingWindow({
255
+ recent: state.recent,
256
+ nowMs,
257
+ windowMs: FIVE_HOUR_WINDOW_MS,
258
+ limit: limits.fiveHour,
259
+ }),
260
+ weekly: computeRollingWindow({
261
+ recent: state.recent,
262
+ nowMs,
263
+ windowMs: WEEKLY_WINDOW_MS,
264
+ limit: limits.weekly,
265
+ }),
266
+ monthly: computeRollingWindow({
267
+ recent: state.recent,
268
+ nowMs,
269
+ windowMs: MONTHLY_WINDOW_MS,
270
+ limit: limits.monthly,
271
+ }),
272
+ };
273
+ }
162
274
  //# sourceMappingURL=qwen-local-quota.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"qwen-local-quota.js","sourceRoot":"","sources":["../../src/lib/qwen-local-quota.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"qwen-local-quota.js","sourceRoot":"","sources":["../../src/lib/qwen-local-quota.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,7 @@ export interface QuotaToastConfig {
30
30
  */
31
31
  enabledProviders: string[] | "auto";
32
32
  googleModels: GoogleModelId[];
33
+ alibabaCodingPlanTier: AlibabaCodingPlanTier;
33
34
  showOnIdle: boolean;
34
35
  showOnQuestion: boolean;
35
36
  showOnCompact: boolean;
@@ -59,6 +60,24 @@ export interface CopilotAuthData {
59
60
  access?: string;
60
61
  expires?: number;
61
62
  }
63
+ export type AlibabaCodingPlanTier = "lite" | "pro";
64
+ export interface QwenOAuthAuthData {
65
+ type: string;
66
+ access?: string;
67
+ refresh?: string;
68
+ expires?: number;
69
+ plan?: string;
70
+ tier?: string;
71
+ [key: string]: unknown;
72
+ }
73
+ export interface AlibabaAuthData {
74
+ type: string;
75
+ key?: string;
76
+ access?: string;
77
+ tier?: string;
78
+ plan?: string;
79
+ [key: string]: unknown;
80
+ }
62
81
  /**
63
82
  * Copilot subscription tier.
64
83
  * See: https://docs.github.com/en/copilot/about-github-copilot/subscription-plans-for-github-copilot
@@ -145,12 +164,9 @@ export interface AuthData {
145
164
  type: string;
146
165
  key?: string;
147
166
  };
148
- "opencode-qwencode-auth"?: {
149
- type: string;
150
- access?: string;
151
- refresh?: string;
152
- expires?: number;
153
- };
167
+ "opencode-qwencode-auth"?: QwenOAuthAuthData;
168
+ alibaba?: AlibabaAuthData;
169
+ "alibaba-coding-plan"?: AlibabaAuthData;
154
170
  "zai-coding-plan"?: {
155
171
  type: "api";
156
172
  key: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"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"}
package/dist/lib/types.js CHANGED
@@ -12,6 +12,7 @@ export const DEFAULT_CONFIG = {
12
12
  enabledProviders: "auto",
13
13
  // If Google Antigravity is enabled, default to Claude only.
14
14
  googleModels: ["CLAUDE"],
15
+ alibabaCodingPlanTier: "lite",
15
16
  showOnIdle: true,
16
17
  showOnQuestion: true,
17
18
  showOnCompact: true,
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAiEH,mCAAmC;AACnC,MAAM,CAAC,MAAM,cAAc,GAAqB;IAC9C,OAAO,EAAE,IAAI;IAEb,WAAW,EAAE,IAAI;IACjB,UAAU,EAAE,SAAS;IACrB,aAAa,EAAE,MAAM,EAAE,YAAY;IAEnC,KAAK,EAAE,KAAK;IAEZ,mFAAmF;IACnF,gBAAgB,EAAE,MAAe;IAEjC,4DAA4D;IAC5D,YAAY,EAAE,CAAC,QAAQ,CAAC;IAExB,UAAU,EAAE,IAAI;IAChB,cAAc,EAAE,IAAI;IACpB,aAAa,EAAE,IAAI;IACnB,cAAc,EAAE,IAAI;IACpB,eAAe,EAAE,IAAI;IACrB,gBAAgB,EAAE,KAAK;IACvB,iBAAiB,EAAE,IAAI;IACvB,MAAM,EAAE;QACN,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,EAAE;KACX;CACF,CAAC;AAiTF,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,sCAAsC;AACtC,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEvC,uCAAuC;AACvC,MAAM,CAAC,MAAM,iBAAiB,GAG1B;IACF,KAAK,EAAE,EAAE,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE,2EAA2E,EAAE,OAAO,EAAE,OAAO,EAAE;IACvI,OAAO,EAAE,EAAE,GAAG,EAAE,gBAAgB,EAAE,OAAO,EAAE,SAAS,EAAE;IACtD,MAAM,EAAE,EAAE,GAAG,EAAE,0BAA0B,EAAE,MAAM,EAAE,0CAA0C,EAAE,OAAO,EAAE,QAAQ,EAAE;IAClH,OAAO,EAAE,EAAE,GAAG,EAAE,oBAAoB,EAAE,OAAO,EAAE,SAAS,EAAE;CAC3D,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAkEH,mCAAmC;AACnC,MAAM,CAAC,MAAM,cAAc,GAAqB;IAC9C,OAAO,EAAE,IAAI;IAEb,WAAW,EAAE,IAAI;IACjB,UAAU,EAAE,SAAS;IACrB,aAAa,EAAE,MAAM,EAAE,YAAY;IAEnC,KAAK,EAAE,KAAK;IAEZ,mFAAmF;IACnF,gBAAgB,EAAE,MAAe;IAEjC,4DAA4D;IAC5D,YAAY,EAAE,CAAC,QAAQ,CAAC;IACxB,qBAAqB,EAAE,MAAM;IAE7B,UAAU,EAAE,IAAI;IAChB,cAAc,EAAE,IAAI;IACpB,aAAa,EAAE,IAAI;IACnB,cAAc,EAAE,IAAI;IACpB,eAAe,EAAE,IAAI;IACrB,gBAAgB,EAAE,KAAK;IACvB,iBAAiB,EAAE,IAAI;IACvB,MAAM,EAAE;QACN,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,EAAE;KACX;CACF,CAAC;AAmUF,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,sCAAsC;AACtC,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEvC,uCAAuC;AACvC,MAAM,CAAC,MAAM,iBAAiB,GAG1B;IACF,KAAK,EAAE,EAAE,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE,2EAA2E,EAAE,OAAO,EAAE,OAAO,EAAE;IACvI,OAAO,EAAE,EAAE,GAAG,EAAE,gBAAgB,EAAE,OAAO,EAAE,SAAS,EAAE;IACtD,MAAM,EAAE,EAAE,GAAG,EAAE,0BAA0B,EAAE,MAAM,EAAE,0CAA0C,EAAE,OAAO,EAAE,QAAQ,EAAE;IAClH,OAAO,EAAE,EAAE,GAAG,EAAE,oBAAoB,EAAE,OAAO,EAAE,SAAS,EAAE;CAC3D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AA2PlD;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAwhC9B,CAAC"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AA8QlD;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,MA8lC9B,CAAC"}
package/dist/plugin.js CHANGED
@@ -19,8 +19,9 @@ import { buildQuotaStatusReport } from "./lib/quota-status.js";
19
19
  import { maybeRefreshPricingSnapshot } from "./lib/modelsdev-pricing.js";
20
20
  import { refreshGoogleTokensForAllAccounts } from "./lib/google.js";
21
21
  import { getQuotaProviderDisplayLabel } from "./lib/provider-metadata.js";
22
- import { hasQwenOAuthAuthCached, isQwenCodeModelId } from "./lib/qwen-auth.js";
23
- import { recordQwenCompletion } from "./lib/qwen-local-quota.js";
22
+ import { DEFAULT_ALIBABA_AUTH_CACHE_MAX_AGE_MS, isAlibabaModelId, resolveAlibabaCodingPlanAuthCached, } from "./lib/alibaba-auth.js";
23
+ import { isQwenCodeModelId, resolveQwenLocalPlanCached, } from "./lib/qwen-auth.js";
24
+ import { recordAlibabaCodingPlanCompletion, recordQwenCompletion, } from "./lib/qwen-local-quota.js";
24
25
  import { parseOptionalJsonArgs, parseQuotaBetweenArgs, startOfLocalDayMs, startOfNextLocalDayMs, formatYmd, } from "./lib/command-parsing.js";
25
26
  import { handled } from "./lib/command-handled.js";
26
27
  import { renderCommandHeading } from "./lib/format-utils.js";
@@ -105,6 +106,7 @@ function isTokenReportCommand(cmd) {
105
106
  // =============================================================================
106
107
  // Plugin Implementation
107
108
  // =============================================================================
109
+ const LOCAL_REQUEST_PLAN_PROVIDER_IDS = new Set(["qwen-code", "alibaba-coding-plan"]);
108
110
  /**
109
111
  * Main plugin export
110
112
  */
@@ -149,6 +151,22 @@ export const QuotaToastPlugin = async ({ client }) => {
149
151
  // Track last session token error for /quota_status diagnostics
150
152
  let lastSessionTokenError;
151
153
  const providerFetchCache = new Map();
154
+ function getQuotaCommandCache() {
155
+ let quotaCache = globalThis.__opencodeQuotaCommandCache;
156
+ if (!quotaCache) {
157
+ quotaCache = { body: "", timestamp: 0 };
158
+ globalThis.__opencodeQuotaCommandCache = quotaCache;
159
+ }
160
+ return quotaCache;
161
+ }
162
+ function clearQuotaCommandCache() {
163
+ const quotaCache = globalThis.__opencodeQuotaCommandCache;
164
+ if (!quotaCache)
165
+ return;
166
+ quotaCache.body = "";
167
+ quotaCache.timestamp = 0;
168
+ quotaCache.inFlight = undefined;
169
+ }
152
170
  function asRecord(value) {
153
171
  return value && typeof value === "object" ? value : null;
154
172
  }
@@ -191,14 +209,15 @@ export const QuotaToastPlugin = async ({ client }) => {
191
209
  function makeProviderFetchCacheKey(providerId, ctx) {
192
210
  const style = ctx.config.toastStyle ?? "classic";
193
211
  const googleModels = ctx.config.googleModels.join(",");
212
+ const alibabaCodingPlanTier = ctx.config.alibabaCodingPlanTier;
194
213
  const onlyCurrentModel = ctx.config.onlyCurrentModel ? "yes" : "no";
195
214
  const currentModel = ctx.config.currentModel ?? "";
196
- return `${providerId}|style=${style}|googleModels=${googleModels}|onlyCurrentModel=${onlyCurrentModel}|currentModel=${currentModel}`;
215
+ return `${providerId}|style=${style}|googleModels=${googleModels}|alibabaTier=${alibabaCodingPlanTier}|onlyCurrentModel=${onlyCurrentModel}|currentModel=${currentModel}`;
197
216
  }
198
217
  async function fetchProviderWithCache(params) {
199
218
  const { provider, ctx, ttlMs } = params;
200
- // Qwen is local-only and should update per completion for accurate RPM.
201
- if (provider.id === "qwen-code") {
219
+ // Local request-plan providers should update per completion for accurate rolling counters.
220
+ if (LOCAL_REQUEST_PLAN_PROVIDER_IDS.has(provider.id)) {
202
221
  return await provider.fetch(ctx);
203
222
  }
204
223
  const cacheKey = makeProviderFetchCacheKey(provider.id, ctx);
@@ -236,15 +255,30 @@ export const QuotaToastPlugin = async ({ client }) => {
236
255
  });
237
256
  return promise;
238
257
  }
239
- async function shouldBypassToastCacheForQwen(trigger, sessionID) {
258
+ async function shouldBypassToastCacheForLocalRequestPlan(trigger, sessionID) {
240
259
  if (trigger !== "question")
241
260
  return false;
242
- if (config.enabledProviders !== "auto" && !config.enabledProviders.includes("qwen-code"))
243
- return false;
244
261
  const currentModel = await getCurrentModel(sessionID);
245
- if (!isQwenCodeModelId(currentModel))
246
- return false;
247
- return await hasQwenOAuthAuthCached();
262
+ if (isQwenCodeModelId(currentModel)) {
263
+ const plan = await resolveQwenLocalPlanCached();
264
+ return (plan.state === "qwen_free" &&
265
+ (config.enabledProviders === "auto" || config.enabledProviders.includes("qwen-code")));
266
+ }
267
+ if (isAlibabaModelId(currentModel)) {
268
+ const plan = await resolveAlibabaCodingPlanAuthCached({
269
+ maxAgeMs: DEFAULT_ALIBABA_AUTH_CACHE_MAX_AGE_MS,
270
+ fallbackTier: config.alibabaCodingPlanTier,
271
+ });
272
+ return (plan.state === "configured" &&
273
+ (config.enabledProviders === "auto" ||
274
+ config.enabledProviders.includes("alibaba-coding-plan")));
275
+ }
276
+ return false;
277
+ }
278
+ async function shouldBypassQuotaCommandCache(sessionID) {
279
+ if (config.debug || !sessionID)
280
+ return config.debug;
281
+ return await shouldBypassToastCacheForLocalRequestPlan("question", sessionID);
248
282
  }
249
283
  async function refreshConfig() {
250
284
  if (configInFlight)
@@ -422,6 +456,7 @@ export const QuotaToastPlugin = async ({ client }) => {
422
456
  client: typedClient,
423
457
  config: {
424
458
  googleModels: config.googleModels,
459
+ alibabaCodingPlanTier: config.alibabaCodingPlanTier,
425
460
  toastStyle: config.toastStyle,
426
461
  onlyCurrentModel: config.onlyCurrentModel,
427
462
  currentModel,
@@ -574,7 +609,7 @@ export const QuotaToastPlugin = async ({ client }) => {
574
609
  }
575
610
  const bypassMessageCache = config.debug
576
611
  ? true
577
- : await shouldBypassToastCacheForQwen(trigger, sessionID);
612
+ : await shouldBypassToastCacheForLocalRequestPlan(trigger, sessionID);
578
613
  const message = bypassMessageCache
579
614
  ? await fetchQuotaMessage(trigger, sessionID)
580
615
  : await getOrFetchWithCacheControl(async () => {
@@ -627,6 +662,7 @@ export const QuotaToastPlugin = async ({ client }) => {
627
662
  client: typedClient,
628
663
  config: {
629
664
  googleModels: config.googleModels,
665
+ alibabaCodingPlanTier: config.alibabaCodingPlanTier,
630
666
  // Always format /quota in grouped mode for a more dashboard-like look.
631
667
  toastStyle: "grouped",
632
668
  onlyCurrentModel: config.onlyCurrentModel,
@@ -644,8 +680,6 @@ export const QuotaToastPlugin = async ({ client }) => {
644
680
  })));
645
681
  const entries = results.flatMap((r) => r.entries);
646
682
  const errors = results.flatMap((r) => r.errors);
647
- if (entries.length === 0)
648
- return null;
649
683
  // Fetch session tokens if enabled and sessionID is available
650
684
  let sessionTokens;
651
685
  if (config.showSessionTokens && sessionID) {
@@ -657,6 +691,11 @@ export const QuotaToastPlugin = async ({ client }) => {
657
691
  // Update diagnostics state: clear on success (no error returned), set on failure
658
692
  lastSessionTokenError = stResult.error;
659
693
  }
694
+ if (entries.length === 0) {
695
+ if (errors.length === 0 && !sessionTokens)
696
+ return null;
697
+ return formatQuotaCommandBody({ entries, errors, sessionTokens });
698
+ }
660
699
  return formatQuotaCommandBody({ entries, errors, sessionTokens });
661
700
  }
662
701
  async function buildQuotaReport(params) {
@@ -693,7 +732,10 @@ export const QuotaToastPlugin = async ({ client }) => {
693
732
  try {
694
733
  ok = await p.isAvailable({
695
734
  client: typedClient,
696
- config: { googleModels: config.googleModels },
735
+ config: {
736
+ googleModels: config.googleModels,
737
+ alibabaCodingPlanTier: config.alibabaCodingPlanTier,
738
+ },
697
739
  });
698
740
  }
699
741
  catch {
@@ -716,6 +758,7 @@ export const QuotaToastPlugin = async ({ client }) => {
716
758
  configSource: configMeta.source,
717
759
  configPaths: configMeta.paths,
718
760
  enabledProviders: config.enabledProviders,
761
+ alibabaCodingPlanTier: config.alibabaCodingPlanTier,
719
762
  onlyCurrentModel: config.onlyCurrentModel,
720
763
  currentModel,
721
764
  sessionModelLookup,
@@ -769,13 +812,12 @@ export const QuotaToastPlugin = async ({ client }) => {
769
812
  if (cmd === "quota") {
770
813
  const generatedAtMs = Date.now();
771
814
  // Separate cache for /quota so it doesn't pollute the toast cache.
772
- let quotaCache = globalThis.__opencodeQuotaCommandCache;
773
- if (!quotaCache) {
774
- quotaCache = { body: "", timestamp: 0 };
775
- globalThis.__opencodeQuotaCommandCache = quotaCache;
776
- }
815
+ const quotaCache = getQuotaCommandCache();
777
816
  const now = generatedAtMs;
778
- const cached = quotaCache.timestamp && now - quotaCache.timestamp < config.minIntervalMs
817
+ const bypassCommandCache = await shouldBypassQuotaCommandCache(sessionID);
818
+ const cached = !bypassCommandCache &&
819
+ quotaCache.timestamp &&
820
+ now - quotaCache.timestamp < config.minIntervalMs
779
821
  ? quotaCache.body
780
822
  : null;
781
823
  const body = cached
@@ -806,7 +848,10 @@ export const QuotaToastPlugin = async ({ client }) => {
806
848
  const allProvs = getProviders();
807
849
  const ctx = {
808
850
  client: typedClient,
809
- config: { googleModels: config.googleModels },
851
+ config: {
852
+ googleModels: config.googleModels,
853
+ alibabaCodingPlanTier: config.alibabaCodingPlanTier,
854
+ },
810
855
  };
811
856
  const avail = await Promise.all(allProvs.map(async (p) => {
812
857
  try {
@@ -985,16 +1030,31 @@ export const QuotaToastPlugin = async ({ client }) => {
985
1030
  return;
986
1031
  if (isSuccessfulQuestionExecution(output)) {
987
1032
  const model = await getCurrentModel(input.sessionID);
988
- if (isQwenCodeModelId(model) && (await hasQwenOAuthAuthCached())) {
989
- try {
990
- await recordQwenCompletion();
1033
+ try {
1034
+ if (isQwenCodeModelId(model)) {
1035
+ const plan = await resolveQwenLocalPlanCached();
1036
+ if (plan.state === "qwen_free") {
1037
+ await recordQwenCompletion();
1038
+ clearQuotaCommandCache();
1039
+ }
991
1040
  }
992
- catch (err) {
993
- await log("Failed to record Qwen local quota completion", {
994
- error: err instanceof Error ? err.message : String(err),
1041
+ else if (isAlibabaModelId(model)) {
1042
+ const plan = await resolveAlibabaCodingPlanAuthCached({
1043
+ maxAgeMs: DEFAULT_ALIBABA_AUTH_CACHE_MAX_AGE_MS,
1044
+ fallbackTier: config.alibabaCodingPlanTier,
995
1045
  });
1046
+ if (plan.state === "configured") {
1047
+ await recordAlibabaCodingPlanCompletion();
1048
+ clearQuotaCommandCache();
1049
+ }
996
1050
  }
997
1051
  }
1052
+ catch (err) {
1053
+ await log("Failed to record local request-plan quota completion", {
1054
+ error: err instanceof Error ? err.message : String(err),
1055
+ model,
1056
+ });
1057
+ }
998
1058
  }
999
1059
  if (config.showOnQuestion) {
1000
1060
  await showQuotaToast(input.sessionID, "question");