copilot-api-plus 1.2.36 → 1.2.38

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/dist/main.js CHANGED
@@ -1046,6 +1046,7 @@ const DEFAULT_MAX_CONCURRENCY = 10;
1046
1046
  var ModelRouter = class {
1047
1047
  config;
1048
1048
  queues = /* @__PURE__ */ new Map();
1049
+ requestCounts = /* @__PURE__ */ new Map();
1049
1050
  constructor(config) {
1050
1051
  this.config = config ? { ...config } : {
1051
1052
  ...DEFAULT_CONFIG,
@@ -1098,6 +1099,7 @@ var ModelRouter = class {
1098
1099
  }
1099
1100
  if (queue.active < maxConcurrency) {
1100
1101
  queue.active++;
1102
+ this.requestCounts.set(resolvedModel, (this.requestCounts.get(resolvedModel) ?? 0) + 1);
1101
1103
  consola.debug(`Slot acquired for "${resolvedModel}": ${queue.active}/${maxConcurrency} active`);
1102
1104
  return () => this.releaseSlot(resolvedModel);
1103
1105
  }
@@ -1106,6 +1108,7 @@ var ModelRouter = class {
1106
1108
  return new Promise((resolve) => {
1107
1109
  currentQueue.waiters.push(() => {
1108
1110
  currentQueue.active++;
1111
+ this.requestCounts.set(resolvedModel, (this.requestCounts.get(resolvedModel) ?? 0) + 1);
1109
1112
  consola.debug(`Queued slot acquired for "${resolvedModel}": ${currentQueue.active}/${maxConcurrency} active`);
1110
1113
  resolve(() => this.releaseSlot(resolvedModel));
1111
1114
  });
@@ -1126,16 +1129,22 @@ var ModelRouter = class {
1126
1129
  */
1127
1130
  getStats() {
1128
1131
  const stats = {};
1129
- for (const [model, queue] of this.queues) {
1132
+ const allModels = new Set([...this.queues.keys(), ...this.requestCounts.keys()]);
1133
+ for (const model of allModels) {
1134
+ const queue = this.queues.get(model);
1130
1135
  const maxConcurrency = this.config.concurrency[model] ?? this.config.concurrency["default"] ?? DEFAULT_MAX_CONCURRENCY;
1131
1136
  stats[model] = {
1132
- active: queue.active,
1133
- queued: queue.waiters.length,
1134
- maxConcurrency
1137
+ active: queue?.active ?? 0,
1138
+ queued: queue?.waiters.length ?? 0,
1139
+ maxConcurrency,
1140
+ totalRequests: this.requestCounts.get(model) ?? 0
1135
1141
  };
1136
1142
  }
1137
1143
  return stats;
1138
1144
  }
1145
+ resetStats() {
1146
+ this.requestCounts.clear();
1147
+ }
1139
1148
  /**
1140
1149
  * Update the model name mapping configuration.
1141
1150
  */
@@ -1659,6 +1668,10 @@ statsRoute.get("/", (c) => {
1659
1668
  uptime: process.uptime()
1660
1669
  });
1661
1670
  });
1671
+ statsRoute.delete("/", (c) => {
1672
+ modelRouter.resetStats();
1673
+ return c.json({ success: true });
1674
+ });
1662
1675
  //#endregion
1663
1676
  //#region src/routes/admin/route.ts
1664
1677
  const adminRoutes = new Hono();