@jeffreycao/copilot-api 2.7.13 → 2.7.14
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 +1 -1
- package/dist/{server-DqfE4x5m.js → server-CeyKV5sQ.js} +83 -9
- package/dist/server-CeyKV5sQ.js.map +1 -0
- package/dist/{start-Mpyr_cO_.js → start-COhhmcdU.js} +2 -2
- package/dist/{start-Mpyr_cO_.js.map → start-COhhmcdU.js.map} +1 -1
- package/package.json +1 -1
- package/pages/index.html +115 -10
- package/dist/server-DqfE4x5m.js.map +0 -1
package/dist/main.js
CHANGED
|
@@ -30,7 +30,7 @@ if (isMcpFastPath(process.argv)) {
|
|
|
30
30
|
const { auth } = await import("./auth-1hGXVwvW.js");
|
|
31
31
|
const { debug } = await import("./debug-BPNjSHgl.js");
|
|
32
32
|
const { mcp } = await import("./mcp-Dd_hxxuG.js");
|
|
33
|
-
const { start } = await import("./start-
|
|
33
|
+
const { start } = await import("./start-COhhmcdU.js");
|
|
34
34
|
const { provider } = await import("./provider-Dg-3-rrN.js");
|
|
35
35
|
await runMain(defineCommand({
|
|
36
36
|
meta: {
|
|
@@ -988,6 +988,55 @@ function getModelCostMap(db, range) {
|
|
|
988
988
|
}
|
|
989
989
|
return costMap;
|
|
990
990
|
}
|
|
991
|
+
function getSessionSummaries(db, range, limit, offset) {
|
|
992
|
+
const rows = db.prepare(`
|
|
993
|
+
SELECT
|
|
994
|
+
session_id,
|
|
995
|
+
COUNT(*) AS request_count,
|
|
996
|
+
COALESCE(SUM(input_tokens), 0) AS input_tokens,
|
|
997
|
+
COALESCE(SUM(output_tokens), 0) AS output_tokens,
|
|
998
|
+
COALESCE(SUM(cache_read_input_tokens), 0) AS cache_read_input_tokens,
|
|
999
|
+
COALESCE(SUM(cache_creation_input_tokens), 0) AS cache_creation_input_tokens,
|
|
1000
|
+
SUM(total_nano_aiu) AS total_nano_aiu,
|
|
1001
|
+
COALESCE(SUM(total_tokens), 0) AS total_tokens
|
|
1002
|
+
FROM token_usage_events
|
|
1003
|
+
WHERE created_at_ms >= ? AND created_at_ms < ?
|
|
1004
|
+
GROUP BY session_id
|
|
1005
|
+
ORDER BY total_tokens DESC, session_id ASC
|
|
1006
|
+
LIMIT ? OFFSET ?
|
|
1007
|
+
`).all(range.startMs, range.endMs, limit, offset);
|
|
1008
|
+
const sessionIds = rows.map((row) => stringFromRow(row, "session_id"));
|
|
1009
|
+
const costRows = db.prepare(`
|
|
1010
|
+
SELECT
|
|
1011
|
+
session_id,
|
|
1012
|
+
cost_currency,
|
|
1013
|
+
COALESCE(SUM(total_cost_nanos), 0) AS total_cost_nanos
|
|
1014
|
+
FROM token_usage_events
|
|
1015
|
+
WHERE
|
|
1016
|
+
created_at_ms >= ?
|
|
1017
|
+
AND created_at_ms < ?
|
|
1018
|
+
AND session_id IN (${sessionIds.map(() => "?").join(", ")})
|
|
1019
|
+
AND cost_currency IS NOT NULL
|
|
1020
|
+
AND total_cost_nanos IS NOT NULL
|
|
1021
|
+
GROUP BY session_id, cost_currency
|
|
1022
|
+
ORDER BY session_id ASC, cost_currency ASC
|
|
1023
|
+
`).all(range.startMs, range.endMs, ...sessionIds);
|
|
1024
|
+
const costMap = /* @__PURE__ */ new Map();
|
|
1025
|
+
for (const row of costRows) {
|
|
1026
|
+
const cost = costFromRow(row);
|
|
1027
|
+
if (cost) {
|
|
1028
|
+
const id = stringFromRow(row, "session_id");
|
|
1029
|
+
costMap.set(id, [...costMap.get(id) ?? [], cost]);
|
|
1030
|
+
}
|
|
1031
|
+
}
|
|
1032
|
+
return rows.map((row) => {
|
|
1033
|
+
const session_id = stringFromRow(row, "session_id");
|
|
1034
|
+
return {
|
|
1035
|
+
...totalsFromRow(row, costMap.get(session_id) ?? []),
|
|
1036
|
+
session_id
|
|
1037
|
+
};
|
|
1038
|
+
});
|
|
1039
|
+
}
|
|
991
1040
|
function getModelSummaries(db, range) {
|
|
992
1041
|
const costMap = getModelCostMap(db, range);
|
|
993
1042
|
return getModelRows(db, range).map((row) => {
|
|
@@ -1152,6 +1201,31 @@ async function getTokenUsageEventsPage(input) {
|
|
|
1152
1201
|
total_pages: Math.max(1, Math.ceil(total / pageSize))
|
|
1153
1202
|
};
|
|
1154
1203
|
}
|
|
1204
|
+
async function getTokenUsageSessionsPage(input) {
|
|
1205
|
+
const page = Math.max(1, Math.floor(input.page));
|
|
1206
|
+
const pageSize = Math.min(100, Math.max(1, Math.floor(input.pageSize)));
|
|
1207
|
+
if (!isTokenUsageStorageEnabled()) return {
|
|
1208
|
+
...createEmptyEventsPage(input),
|
|
1209
|
+
items: []
|
|
1210
|
+
};
|
|
1211
|
+
await flushTokenUsageEvents();
|
|
1212
|
+
const db = await getDb();
|
|
1213
|
+
const range = getPeriodRangeFromDb(db, input.period);
|
|
1214
|
+
const total = numberFromRow(db.prepare(`
|
|
1215
|
+
SELECT COUNT(DISTINCT session_id) AS total
|
|
1216
|
+
FROM token_usage_events
|
|
1217
|
+
WHERE created_at_ms >= ? AND created_at_ms < ?
|
|
1218
|
+
`).get(range.startMs, range.endMs), "total");
|
|
1219
|
+
return {
|
|
1220
|
+
items: getSessionSummaries(db, range, pageSize, (page - 1) * pageSize),
|
|
1221
|
+
page,
|
|
1222
|
+
page_size: pageSize,
|
|
1223
|
+
period: input.period,
|
|
1224
|
+
range: rangePayload(range),
|
|
1225
|
+
total,
|
|
1226
|
+
total_pages: Math.max(1, Math.ceil(total / pageSize))
|
|
1227
|
+
};
|
|
1228
|
+
}
|
|
1155
1229
|
async function closeUsageStore() {
|
|
1156
1230
|
await flushTokenUsageEvents();
|
|
1157
1231
|
await tokenUsageDbStore.close({ beforeClose: (db) => {
|
|
@@ -12911,15 +12985,15 @@ tokenUsageRoute.get("/daily", async (c) => {
|
|
|
12911
12985
|
const summary = await getTokenUsageDailySummary(parsePeriod(c.req.query("period")));
|
|
12912
12986
|
return c.json(summary);
|
|
12913
12987
|
});
|
|
12914
|
-
|
|
12915
|
-
|
|
12916
|
-
|
|
12988
|
+
function parsePageQuery(c) {
|
|
12989
|
+
return {
|
|
12990
|
+
period: parsePeriod(c.req.query("period")),
|
|
12917
12991
|
page: parsePositiveInt(c.req.query("page"), 1),
|
|
12918
|
-
pageSize: parsePositiveInt(c.req.query("page_size"), DEFAULT_EVENTS_PAGE_SIZE)
|
|
12919
|
-
|
|
12920
|
-
|
|
12921
|
-
|
|
12922
|
-
|
|
12992
|
+
pageSize: parsePositiveInt(c.req.query("page_size"), DEFAULT_EVENTS_PAGE_SIZE)
|
|
12993
|
+
};
|
|
12994
|
+
}
|
|
12995
|
+
tokenUsageRoute.get("/events", async (c) => c.json(await getTokenUsageEventsPage(parsePageQuery(c))));
|
|
12996
|
+
tokenUsageRoute.get("/sessions", async (c) => c.json(await getTokenUsageSessionsPage(parsePageQuery(c))));
|
|
12923
12997
|
//#endregion
|
|
12924
12998
|
//#region src/routes/usage/route.ts
|
|
12925
12999
|
const usageRoute = new Hono();
|
|
@@ -13000,4 +13074,4 @@ createServer();
|
|
|
13000
13074
|
//#endregion
|
|
13001
13075
|
export { createServer };
|
|
13002
13076
|
|
|
13003
|
-
//# sourceMappingURL=server-
|
|
13077
|
+
//# sourceMappingURL=server-CeyKV5sQ.js.map
|