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 +17 -4
- package/dist/main.js.map +1 -1
- package/package.json +1 -1
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
|
-
|
|
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
|
|
1133
|
-
queued: queue
|
|
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();
|