axusage 3.8.1 → 3.8.3
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/README.md +19 -8
- package/dist/adapters/claude.d.ts +1 -0
- package/dist/adapters/claude.d.ts.map +1 -0
- package/dist/adapters/claude.js +1 -0
- package/dist/adapters/claude.js.map +1 -0
- package/dist/adapters/coalesce-claude-usage-response.d.ts +1 -0
- package/dist/adapters/coalesce-claude-usage-response.d.ts.map +1 -0
- package/dist/adapters/coalesce-claude-usage-response.js +1 -0
- package/dist/adapters/coalesce-claude-usage-response.js.map +1 -0
- package/dist/adapters/codex.d.ts +1 -0
- package/dist/adapters/codex.d.ts.map +1 -0
- package/dist/adapters/codex.js +1 -0
- package/dist/adapters/codex.js.map +1 -0
- package/dist/adapters/copilot.d.ts +1 -0
- package/dist/adapters/copilot.d.ts.map +1 -0
- package/dist/adapters/copilot.js +1 -0
- package/dist/adapters/copilot.js.map +1 -0
- package/dist/adapters/gemini.d.ts +1 -0
- package/dist/adapters/gemini.d.ts.map +1 -0
- package/dist/adapters/gemini.js +1 -0
- package/dist/adapters/gemini.js.map +1 -0
- package/dist/adapters/parse-claude-usage.d.ts +1 -0
- package/dist/adapters/parse-claude-usage.d.ts.map +1 -0
- package/dist/adapters/parse-claude-usage.js +1 -0
- package/dist/adapters/parse-claude-usage.js.map +1 -0
- package/dist/adapters/parse-codex-usage.d.ts +1 -0
- package/dist/adapters/parse-codex-usage.d.ts.map +1 -0
- package/dist/adapters/parse-codex-usage.js +1 -0
- package/dist/adapters/parse-codex-usage.js.map +1 -0
- package/dist/adapters/parse-copilot-usage.d.ts +1 -0
- package/dist/adapters/parse-copilot-usage.d.ts.map +1 -0
- package/dist/adapters/parse-copilot-usage.js +1 -0
- package/dist/adapters/parse-copilot-usage.js.map +1 -0
- package/dist/adapters/parse-gemini-usage.d.ts +1 -0
- package/dist/adapters/parse-gemini-usage.d.ts.map +1 -0
- package/dist/adapters/parse-gemini-usage.js +1 -0
- package/dist/adapters/parse-gemini-usage.js.map +1 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +3 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/auth-setup-command.d.ts +1 -0
- package/dist/commands/auth-setup-command.d.ts.map +1 -0
- package/dist/commands/auth-setup-command.js +1 -0
- package/dist/commands/auth-setup-command.js.map +1 -0
- package/dist/commands/auth-status-command.d.ts +1 -0
- package/dist/commands/auth-status-command.d.ts.map +1 -0
- package/dist/commands/auth-status-command.js +1 -0
- package/dist/commands/auth-status-command.js.map +1 -0
- package/dist/commands/fetch-service-usage.d.ts +5 -3
- package/dist/commands/fetch-service-usage.d.ts.map +1 -0
- package/dist/commands/fetch-service-usage.js +14 -27
- package/dist/commands/fetch-service-usage.js.map +1 -0
- package/dist/commands/run-auth-setup.d.ts +1 -0
- package/dist/commands/run-auth-setup.d.ts.map +1 -0
- package/dist/commands/run-auth-setup.js +1 -0
- package/dist/commands/run-auth-setup.js.map +1 -0
- package/dist/commands/serve-command.d.ts +2 -19
- package/dist/commands/serve-command.d.ts.map +1 -0
- package/dist/commands/serve-command.js +43 -104
- package/dist/commands/serve-command.js.map +1 -0
- package/dist/commands/usage-command.d.ts +3 -1
- package/dist/commands/usage-command.d.ts.map +1 -0
- package/dist/commands/usage-command.js +5 -0
- package/dist/commands/usage-command.js.map +1 -0
- package/dist/config/credential-sources.d.ts +1 -0
- package/dist/config/credential-sources.d.ts.map +1 -0
- package/dist/config/credential-sources.js +2 -0
- package/dist/config/credential-sources.js.map +1 -0
- package/dist/config/serve-config.d.ts +16 -0
- package/dist/config/serve-config.d.ts.map +1 -0
- package/dist/config/serve-config.js +58 -18
- package/dist/config/serve-config.js.map +1 -0
- package/dist/server/routes.d.ts +15 -8
- package/dist/server/routes.d.ts.map +1 -0
- package/dist/server/routes.js +112 -60
- package/dist/server/routes.js.map +1 -0
- package/dist/server/serve-logger.d.ts +5 -0
- package/dist/server/serve-logger.d.ts.map +1 -0
- package/dist/server/serve-logger.js +88 -0
- package/dist/server/serve-logger.js.map +1 -0
- package/dist/server/server.d.ts +15 -7
- package/dist/server/server.d.ts.map +1 -0
- package/dist/server/server.js +91 -56
- package/dist/server/server.js.map +1 -0
- package/dist/server/usage-cache.d.ts +26 -0
- package/dist/server/usage-cache.d.ts.map +1 -0
- package/dist/server/usage-cache.js +77 -0
- package/dist/server/usage-cache.js.map +1 -0
- package/dist/services/gemini-api.d.ts +1 -0
- package/dist/services/gemini-api.d.ts.map +1 -0
- package/dist/services/gemini-api.js +1 -0
- package/dist/services/gemini-api.js.map +1 -0
- package/dist/services/get-instance-access-token.d.ts +3 -1
- package/dist/services/get-instance-access-token.d.ts.map +1 -0
- package/dist/services/get-instance-access-token.js +1 -0
- package/dist/services/get-instance-access-token.js.map +1 -0
- package/dist/services/resolve-service-instances.d.ts +1 -0
- package/dist/services/resolve-service-instances.d.ts.map +1 -0
- package/dist/services/resolve-service-instances.js +1 -0
- package/dist/services/resolve-service-instances.js.map +1 -0
- package/dist/services/service-adapter-registry.d.ts +4 -2
- package/dist/services/service-adapter-registry.d.ts.map +1 -0
- package/dist/services/service-adapter-registry.js +4 -3
- package/dist/services/service-adapter-registry.js.map +1 -0
- package/dist/services/service-diagnostics.d.ts +1 -0
- package/dist/services/service-diagnostics.d.ts.map +1 -0
- package/dist/services/service-diagnostics.js +1 -0
- package/dist/services/service-diagnostics.js.map +1 -0
- package/dist/services/supported-service.d.ts +1 -0
- package/dist/services/supported-service.d.ts.map +1 -0
- package/dist/services/supported-service.js +6 -1
- package/dist/services/supported-service.js.map +1 -0
- package/dist/types/codex.d.ts +1 -0
- package/dist/types/codex.d.ts.map +1 -0
- package/dist/types/codex.js +1 -0
- package/dist/types/codex.js.map +1 -0
- package/dist/types/copilot.d.ts +1 -0
- package/dist/types/copilot.d.ts.map +1 -0
- package/dist/types/copilot.js +1 -0
- package/dist/types/copilot.js.map +1 -0
- package/dist/types/domain.d.ts +1 -0
- package/dist/types/domain.d.ts.map +1 -0
- package/dist/types/domain.js +1 -0
- package/dist/types/domain.js.map +1 -0
- package/dist/types/gemini.d.ts +1 -0
- package/dist/types/gemini.d.ts.map +1 -0
- package/dist/types/gemini.js +1 -0
- package/dist/types/gemini.js.map +1 -0
- package/dist/types/serve-api.d.ts +53 -0
- package/dist/types/serve-api.d.ts.map +1 -0
- package/dist/types/serve-api.js +34 -0
- package/dist/types/serve-api.js.map +1 -0
- package/dist/types/usage.d.ts +1 -0
- package/dist/types/usage.d.ts.map +1 -0
- package/dist/types/usage.js +1 -0
- package/dist/types/usage.js.map +1 -0
- package/dist/utils/calculate-usage-rate.d.ts +1 -0
- package/dist/utils/calculate-usage-rate.d.ts.map +1 -0
- package/dist/utils/calculate-usage-rate.js +1 -0
- package/dist/utils/calculate-usage-rate.js.map +1 -0
- package/dist/utils/check-cli-dependency.d.ts +1 -0
- package/dist/utils/check-cli-dependency.d.ts.map +1 -0
- package/dist/utils/check-cli-dependency.js +1 -0
- package/dist/utils/check-cli-dependency.js.map +1 -0
- package/dist/utils/classify-usage-rate.d.ts +1 -0
- package/dist/utils/classify-usage-rate.d.ts.map +1 -0
- package/dist/utils/classify-usage-rate.js +1 -0
- package/dist/utils/classify-usage-rate.js.map +1 -0
- package/dist/utils/color.d.ts +1 -0
- package/dist/utils/color.d.ts.map +1 -0
- package/dist/utils/color.js +1 -0
- package/dist/utils/color.js.map +1 -0
- package/dist/utils/copilot-gh-token.d.ts +1 -0
- package/dist/utils/copilot-gh-token.d.ts.map +1 -0
- package/dist/utils/copilot-gh-token.js +1 -0
- package/dist/utils/copilot-gh-token.js.map +1 -0
- package/dist/utils/format-prometheus-metrics.d.ts +1 -0
- package/dist/utils/format-prometheus-metrics.d.ts.map +1 -0
- package/dist/utils/format-prometheus-metrics.js +9 -2
- package/dist/utils/format-prometheus-metrics.js.map +1 -0
- package/dist/utils/format-requires-help-text.d.ts +1 -0
- package/dist/utils/format-requires-help-text.d.ts.map +1 -0
- package/dist/utils/format-requires-help-text.js +1 -0
- package/dist/utils/format-requires-help-text.js.map +1 -0
- package/dist/utils/format-service-usage.d.ts +3 -1
- package/dist/utils/format-service-usage.d.ts.map +1 -0
- package/dist/utils/format-service-usage.js +3 -2
- package/dist/utils/format-service-usage.js.map +1 -0
- package/dist/utils/validate-root-options.d.ts +1 -0
- package/dist/utils/validate-root-options.d.ts.map +1 -0
- package/dist/utils/validate-root-options.js +1 -0
- package/dist/utils/validate-root-options.js.map +1 -0
- package/package.json +16 -13
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { FastifyBaseLogger } from "fastify";
|
|
2
|
+
export type ServeLogger = Pick<FastifyBaseLogger, "info" | "warn" | "error">;
|
|
3
|
+
export declare function createConsoleServeLogger(): ServeLogger;
|
|
4
|
+
export declare function createDeferredServeLogger(getLogger: () => FastifyBaseLogger | undefined): ServeLogger;
|
|
5
|
+
//# sourceMappingURL=serve-logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serve-logger.d.ts","sourceRoot":"","sources":["../../src/server/serve-logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;AAE7E,wBAAgB,wBAAwB,IAAI,WAAW,CAwBtD;AAED,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,iBAAiB,GAAG,SAAS,GAC7C,WAAW,CAwDb"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
export function createConsoleServeLogger() {
|
|
2
|
+
return {
|
|
3
|
+
info(objectOrMessage, message) {
|
|
4
|
+
if (typeof objectOrMessage === "string") {
|
|
5
|
+
console.error(objectOrMessage);
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
console.error(message ?? "", objectOrMessage);
|
|
9
|
+
},
|
|
10
|
+
warn(objectOrMessage, message) {
|
|
11
|
+
if (typeof objectOrMessage === "string") {
|
|
12
|
+
console.error(objectOrMessage);
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
console.error(message ?? "", objectOrMessage);
|
|
16
|
+
},
|
|
17
|
+
error(objectOrMessage, message) {
|
|
18
|
+
if (typeof objectOrMessage === "string") {
|
|
19
|
+
console.error(objectOrMessage);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
console.error(message ?? "", objectOrMessage);
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export function createDeferredServeLogger(getLogger) {
|
|
27
|
+
const fallback = createConsoleServeLogger();
|
|
28
|
+
return {
|
|
29
|
+
info(objectOrMessage, message) {
|
|
30
|
+
const logger = getLogger();
|
|
31
|
+
if (typeof objectOrMessage === "string") {
|
|
32
|
+
if (logger) {
|
|
33
|
+
logger.info(objectOrMessage);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
fallback.info(objectOrMessage);
|
|
37
|
+
}
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const resolvedMessage = message ?? "";
|
|
41
|
+
if (logger) {
|
|
42
|
+
logger.info(objectOrMessage, resolvedMessage);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
fallback.info(objectOrMessage, resolvedMessage);
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
warn(objectOrMessage, message) {
|
|
49
|
+
const logger = getLogger();
|
|
50
|
+
if (typeof objectOrMessage === "string") {
|
|
51
|
+
if (logger) {
|
|
52
|
+
logger.warn(objectOrMessage);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
fallback.warn(objectOrMessage);
|
|
56
|
+
}
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const resolvedMessage = message ?? "";
|
|
60
|
+
if (logger) {
|
|
61
|
+
logger.warn(objectOrMessage, resolvedMessage);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
fallback.warn(objectOrMessage, resolvedMessage);
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
error(objectOrMessage, message) {
|
|
68
|
+
const logger = getLogger();
|
|
69
|
+
if (typeof objectOrMessage === "string") {
|
|
70
|
+
if (logger) {
|
|
71
|
+
logger.error(objectOrMessage);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
fallback.error(objectOrMessage);
|
|
75
|
+
}
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
const resolvedMessage = message ?? "";
|
|
79
|
+
if (logger) {
|
|
80
|
+
logger.error(objectOrMessage, resolvedMessage);
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
fallback.error(objectOrMessage, resolvedMessage);
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=serve-logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serve-logger.js","sourceRoot":"","sources":["../../src/server/serve-logger.ts"],"names":[],"mappings":"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"}
|
package/dist/server/server.d.ts
CHANGED
|
@@ -1,19 +1,27 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Fastify HTTP server for axusage metrics.
|
|
3
3
|
*
|
|
4
4
|
* Designed for both CLI and library usage via factory pattern.
|
|
5
5
|
*/
|
|
6
|
-
import { type
|
|
6
|
+
import { type FastifyInstance } from "fastify";
|
|
7
|
+
import { type FastifyPluginCallbackZod } from "fastify-type-provider-zod";
|
|
7
8
|
import type { ServeConfig } from "../config/serve-config.js";
|
|
8
|
-
/**
|
|
9
|
+
/**
|
|
10
|
+
* Server instance with lifecycle methods.
|
|
11
|
+
*
|
|
12
|
+
* Extend the server by passing plugins to {@link createServer}, not by
|
|
13
|
+
* mutating `app` directly — `start()` rebuilds the Fastify instance after
|
|
14
|
+
* a `stop()` call, so any ad-hoc additions would be lost.
|
|
15
|
+
*/
|
|
9
16
|
type AxusageServer = {
|
|
10
|
-
/** The
|
|
11
|
-
readonly app:
|
|
12
|
-
/** Start listening on the configured host:port */
|
|
17
|
+
/** The current Fastify application instance. Rebuilt after `stop()` + `start()`. */
|
|
18
|
+
readonly app: FastifyInstance;
|
|
19
|
+
/** Start listening on the configured host:port. Throws if already running. */
|
|
13
20
|
start(): Promise<void>;
|
|
14
21
|
/** Stop the server gracefully */
|
|
15
22
|
stop(): Promise<void>;
|
|
16
23
|
};
|
|
17
24
|
/** Create an axusage server instance */
|
|
18
|
-
export declare function createServer(config: Pick<ServeConfig, "port" | "host">,
|
|
25
|
+
export declare function createServer(config: Pick<ServeConfig, "port" | "host" | "logLevel" | "trustProxy">, plugins: FastifyPluginCallbackZod[]): AxusageServer;
|
|
19
26
|
export {};
|
|
27
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAgB,EAAqB,KAAK,eAAe,EAAE,MAAM,SAAS,CAAC;AAC3E,OAAO,EACL,KAAK,wBAAwB,EAM9B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D;;;;;;GAMG;AACH,KAAK,aAAa,GAAG;IACnB,oFAAoF;IACpF,QAAQ,CAAC,GAAG,EAAE,eAAe,CAAC;IAC9B,8EAA8E;IAC9E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,iCAAiC;IACjC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB,CAAC;AAgFF,wCAAwC;AACxC,wBAAgB,YAAY,CAC1B,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,YAAY,CAAC,EACtE,OAAO,EAAE,wBAAwB,EAAE,GAClC,aAAa,CA2Cf"}
|
package/dist/server/server.js
CHANGED
|
@@ -1,72 +1,107 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Fastify HTTP server for axusage metrics.
|
|
3
3
|
*
|
|
4
4
|
* Designed for both CLI and library usage via factory pattern.
|
|
5
5
|
*/
|
|
6
|
-
import
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
app
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
6
|
+
import helmet from "@fastify/helmet";
|
|
7
|
+
import rateLimit from "@fastify/rate-limit";
|
|
8
|
+
import Fastify, {} from "fastify";
|
|
9
|
+
import { hasZodFastifySchemaValidationErrors, isResponseSerializationError, serializerCompiler, validatorCompiler, } from "fastify-type-provider-zod";
|
|
10
|
+
function buildApp(config, plugins) {
|
|
11
|
+
const app = Fastify({
|
|
12
|
+
logger: {
|
|
13
|
+
level: config.logLevel,
|
|
14
|
+
redact: [
|
|
15
|
+
"req.headers.authorization",
|
|
16
|
+
"req.headers.cookie",
|
|
17
|
+
"headers.authorization",
|
|
18
|
+
"headers.cookie",
|
|
19
|
+
],
|
|
20
|
+
},
|
|
21
|
+
connectionTimeout: 30_000,
|
|
22
|
+
requestTimeout: 30_000,
|
|
23
|
+
trustProxy: config.trustProxy,
|
|
24
|
+
});
|
|
25
|
+
app.setValidatorCompiler(validatorCompiler);
|
|
26
|
+
app.setSerializerCompiler(serializerCompiler);
|
|
27
|
+
app.register(helmet);
|
|
28
|
+
app.register(rateLimit, {
|
|
29
|
+
max: 100,
|
|
30
|
+
timeWindow: "1 minute",
|
|
31
|
+
errorResponseBuilder: (_request, context) => {
|
|
32
|
+
const error = new Error("Too many requests");
|
|
33
|
+
// @fastify/rate-limit throws whatever errorResponseBuilder returns.
|
|
34
|
+
// Fastify's error handler reads statusCode from the thrown object to
|
|
35
|
+
// set the HTTP status; without it the response falls back to 500.
|
|
36
|
+
error.statusCode = context.statusCode;
|
|
37
|
+
return error;
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
const typedApp = app.withTypeProvider();
|
|
41
|
+
typedApp.setErrorHandler((error, request, reply) => {
|
|
42
|
+
request.log.error({ err: error }, "Request error");
|
|
43
|
+
if (hasZodFastifySchemaValidationErrors(error)) {
|
|
44
|
+
return reply.code(400).send({ error: "Validation failed" });
|
|
45
|
+
}
|
|
46
|
+
if (isResponseSerializationError(error)) {
|
|
47
|
+
return reply.code(500).send({ error: "Internal Server Error" });
|
|
48
|
+
}
|
|
49
|
+
const statusCode = error.statusCode !== undefined && error.statusCode >= 400
|
|
50
|
+
? error.statusCode
|
|
51
|
+
: 500;
|
|
52
|
+
const message = statusCode >= 500 ? "Internal Server Error" : error.message;
|
|
53
|
+
return reply.code(statusCode).send({ error: message });
|
|
54
|
+
});
|
|
55
|
+
for (const plugin of plugins) {
|
|
56
|
+
typedApp.register(plugin);
|
|
15
57
|
}
|
|
16
|
-
// 404 handler
|
|
17
|
-
|
|
18
|
-
|
|
58
|
+
// Rate-limit the 404 handler. setNotFoundHandler must receive the
|
|
59
|
+
// rateLimit() preHandler, otherwise custom 404s bypass rate limiting
|
|
60
|
+
// entirely (@fastify/rate-limit README, "Preventing guessing of URLs
|
|
61
|
+
// through 404s"). The decorator is available after the plugin queue
|
|
62
|
+
// has been processed, so we defer via after().
|
|
63
|
+
typedApp.after(() => {
|
|
64
|
+
typedApp.setNotFoundHandler({ preHandler: app.rateLimit() }, async (_request, reply) => {
|
|
65
|
+
return reply.code(404).send({ error: "Not found" });
|
|
66
|
+
});
|
|
19
67
|
});
|
|
20
68
|
return app;
|
|
21
69
|
}
|
|
22
70
|
/** Create an axusage server instance */
|
|
23
|
-
export function createServer(config,
|
|
24
|
-
|
|
25
|
-
let
|
|
26
|
-
let
|
|
27
|
-
|
|
28
|
-
app
|
|
29
|
-
|
|
30
|
-
if (server) {
|
|
31
|
-
return Promise.reject(new Error("Server is already running. Call stop() before restarting."));
|
|
32
|
-
}
|
|
33
|
-
stopPromise = undefined;
|
|
34
|
-
return new Promise((resolve, reject) => {
|
|
35
|
-
const onStartupError = (error) => {
|
|
36
|
-
server = undefined;
|
|
37
|
-
reject(error);
|
|
38
|
-
};
|
|
39
|
-
server = app.listen(config.port, config.host, () => {
|
|
40
|
-
server?.removeListener("error", onStartupError);
|
|
41
|
-
server?.on("error", (error) => {
|
|
42
|
-
console.error("Server error:", error);
|
|
43
|
-
});
|
|
44
|
-
console.error(`axusage listening on http://${config.host}:${String(config.port)}`);
|
|
45
|
-
resolve();
|
|
46
|
-
});
|
|
47
|
-
server.once("error", onStartupError);
|
|
48
|
-
});
|
|
71
|
+
export function createServer(config, plugins) {
|
|
72
|
+
let app = buildApp(config, plugins);
|
|
73
|
+
let started = false;
|
|
74
|
+
let stopped = false;
|
|
75
|
+
const server = {
|
|
76
|
+
get app() {
|
|
77
|
+
return app;
|
|
49
78
|
},
|
|
50
|
-
|
|
51
|
-
if (
|
|
52
|
-
|
|
79
|
+
async start() {
|
|
80
|
+
if (started) {
|
|
81
|
+
throw new Error("Server is already running. Call stop() before restarting.");
|
|
53
82
|
}
|
|
54
|
-
|
|
55
|
-
|
|
83
|
+
// Fastify instances cannot be reopened after close, so rebuild
|
|
84
|
+
// on restart. Skip rebuild on first start since we already have
|
|
85
|
+
// a fresh instance from createServer.
|
|
86
|
+
if (stopped) {
|
|
87
|
+
app = buildApp(config, plugins);
|
|
56
88
|
}
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
serverToClose.close((error) => {
|
|
61
|
-
if (error) {
|
|
62
|
-
reject(error);
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
resolve();
|
|
66
|
-
}
|
|
67
|
-
});
|
|
89
|
+
const address = await app.listen({
|
|
90
|
+
port: config.port,
|
|
91
|
+
host: config.host,
|
|
68
92
|
});
|
|
69
|
-
|
|
93
|
+
// eslint-disable-next-line require-atomic-updates -- guarded by the started check above; no concurrent callers
|
|
94
|
+
started = true;
|
|
95
|
+
app.log.info({ address }, "axusage listening");
|
|
96
|
+
},
|
|
97
|
+
async stop() {
|
|
98
|
+
if (!started)
|
|
99
|
+
return;
|
|
100
|
+
started = false;
|
|
101
|
+
stopped = true;
|
|
102
|
+
await app.close();
|
|
70
103
|
},
|
|
71
104
|
};
|
|
105
|
+
return server;
|
|
72
106
|
}
|
|
107
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { ServiceResult } from "../types/domain.js";
|
|
2
|
+
import { type ServeLogger } from "./serve-logger.js";
|
|
3
|
+
import type { ServerState } from "./routes.js";
|
|
4
|
+
type UsageCache = {
|
|
5
|
+
readonly getState: () => ServerState | undefined;
|
|
6
|
+
/** Waits for a fresh snapshot before returning. Use for data endpoints where staleness is unacceptable. */
|
|
7
|
+
readonly getFreshState: () => Promise<ServerState | undefined>;
|
|
8
|
+
/** Serves the current snapshot immediately; triggers a background refresh when stale.
|
|
9
|
+
* Blocks only if no snapshot exists yet (first ever request). Use for Prometheus /metrics
|
|
10
|
+
* where scrape latency matters more than strict freshness. */
|
|
11
|
+
readonly getStateStaleWhileRevalidate: () => Promise<ServerState | undefined>;
|
|
12
|
+
/** Waits for any in-flight refresh to complete. Use during shutdown to avoid dangling promises. */
|
|
13
|
+
readonly waitForPending: () => Promise<void>;
|
|
14
|
+
/** Signal that the server is shutting down. Prevents new fetches from starting. */
|
|
15
|
+
readonly shutdown: () => void;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Creates an on-demand usage cache. Data is fetched via `doFetch` when a
|
|
19
|
+
* caller requests fresh state and the cached snapshot is older than `intervalMs`.
|
|
20
|
+
* Concurrent callers during a refresh all receive the same in-flight promise.
|
|
21
|
+
* When all services fail, the cache retries after a short backoff (≤5s) rather
|
|
22
|
+
* than waiting the full interval.
|
|
23
|
+
*/
|
|
24
|
+
export declare function createUsageCache(doFetch: () => Promise<ServiceResult[]>, intervalMs: number, logger?: ServeLogger): UsageCache;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=usage-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage-cache.d.ts","sourceRoot":"","sources":["../../src/server/usage-cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAoB,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,KAAK,WAAW,EAA4B,MAAM,mBAAmB,CAAC;AAC/E,OAAO,KAAK,EAAe,WAAW,EAAE,MAAM,aAAa,CAAC;AAE5D,KAAK,UAAU,GAAG;IAChB,QAAQ,CAAC,QAAQ,EAAE,MAAM,WAAW,GAAG,SAAS,CAAC;IACjD,2GAA2G;IAC3G,QAAQ,CAAC,aAAa,EAAE,MAAM,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;IAC/D;;mEAE+D;IAC/D,QAAQ,CAAC,4BAA4B,EAAE,MAAM,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;IAC9E,mGAAmG;IACnG,QAAQ,CAAC,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,mFAAmF;IACnF,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;CAC/B,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC,EACvC,UAAU,EAAE,MAAM,EAClB,MAAM,GAAE,WAAwC,GAC/C,UAAU,CA0EZ"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { createConsoleServeLogger } from "./serve-logger.js";
|
|
2
|
+
/**
|
|
3
|
+
* Creates an on-demand usage cache. Data is fetched via `doFetch` when a
|
|
4
|
+
* caller requests fresh state and the cached snapshot is older than `intervalMs`.
|
|
5
|
+
* Concurrent callers during a refresh all receive the same in-flight promise.
|
|
6
|
+
* When all services fail, the cache retries after a short backoff (≤5s) rather
|
|
7
|
+
* than waiting the full interval.
|
|
8
|
+
*/
|
|
9
|
+
export function createUsageCache(doFetch, intervalMs, logger = createConsoleServeLogger()) {
|
|
10
|
+
let state;
|
|
11
|
+
let refreshPromise;
|
|
12
|
+
let isShutDown = false;
|
|
13
|
+
async function doRefresh() {
|
|
14
|
+
const results = await doFetch();
|
|
15
|
+
const usage = [];
|
|
16
|
+
const errors = [];
|
|
17
|
+
for (const { service, result } of results) {
|
|
18
|
+
if (result.ok) {
|
|
19
|
+
usage.push(result.value);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
errors.push({
|
|
23
|
+
service,
|
|
24
|
+
message: result.error.message,
|
|
25
|
+
status: result.error.status,
|
|
26
|
+
});
|
|
27
|
+
logger.warn({ service, error: result.error.message, status: result.error.status }, "Failed to fetch service");
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
state = { usage, refreshedAt: new Date(), errors };
|
|
31
|
+
}
|
|
32
|
+
const FAILURE_RETRY_MS = 5000;
|
|
33
|
+
function ensureFresh() {
|
|
34
|
+
if (isShutDown)
|
|
35
|
+
return Promise.resolve();
|
|
36
|
+
const age = state === undefined ? Infinity : Date.now() - state.refreshedAt.getTime();
|
|
37
|
+
// If the last refresh produced no data (all services failed), retry on a
|
|
38
|
+
// short backoff (capped at 5s) so the server recovers promptly after
|
|
39
|
+
// transient failures without hammering failing services.
|
|
40
|
+
const hasData = state !== undefined && state.usage.length > 0;
|
|
41
|
+
const maxAge = hasData
|
|
42
|
+
? intervalMs
|
|
43
|
+
: Math.min(intervalMs, FAILURE_RETRY_MS);
|
|
44
|
+
if (age < maxAge)
|
|
45
|
+
return Promise.resolve();
|
|
46
|
+
refreshPromise ??= doRefresh().finally(() => {
|
|
47
|
+
refreshPromise = undefined;
|
|
48
|
+
});
|
|
49
|
+
return refreshPromise;
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
getState: () => state,
|
|
53
|
+
getFreshState: async () => {
|
|
54
|
+
await ensureFresh();
|
|
55
|
+
return state;
|
|
56
|
+
},
|
|
57
|
+
getStateStaleWhileRevalidate: async () => {
|
|
58
|
+
if (state === undefined) {
|
|
59
|
+
// No snapshot yet — block until we have something to serve.
|
|
60
|
+
await ensureFresh();
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
// Serve the current snapshot immediately; kick off a background
|
|
64
|
+
// refresh if stale. Errors are logged; callers are not affected.
|
|
65
|
+
void ensureFresh().catch((error) => {
|
|
66
|
+
logger.error({ err: error }, "Background metrics refresh failed");
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
return state;
|
|
70
|
+
},
|
|
71
|
+
waitForPending: () => refreshPromise ?? Promise.resolve(),
|
|
72
|
+
shutdown: () => {
|
|
73
|
+
isShutDown = true;
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=usage-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage-cache.js","sourceRoot":"","sources":["../../src/server/usage-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,3 +9,4 @@ export declare function fetchGeminiProject(accessToken: string): Promise<string
|
|
|
9
9
|
* Fetch quota data from Gemini API
|
|
10
10
|
*/
|
|
11
11
|
export declare function fetchGeminiQuota(accessToken: string, projectId?: string): Promise<Result<GeminiQuotaResponse, ApiError>>;
|
|
12
|
+
//# sourceMappingURL=gemini-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini-api.d.ts","sourceRoot":"","sources":["../../src/services/gemini-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAe9D;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA0C7B;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC,CAiFhD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini-api.js","sourceRoot":"","sources":["../../src/services/gemini-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* returning vault metadata (displayName) alongside the token.
|
|
6
6
|
*/
|
|
7
7
|
import type { ResolvedInstanceConfig } from "../config/credential-sources.js";
|
|
8
|
+
import type { SupportedService } from "./supported-service.js";
|
|
8
9
|
/** Result of resolving an instance token */
|
|
9
10
|
interface InstanceTokenResult {
|
|
10
11
|
token: string | undefined;
|
|
@@ -16,5 +17,6 @@ interface InstanceTokenResult {
|
|
|
16
17
|
* Returns vault metadata (displayName) alongside the token
|
|
17
18
|
* for multi-instance identification.
|
|
18
19
|
*/
|
|
19
|
-
declare function getInstanceAccessToken(service:
|
|
20
|
+
declare function getInstanceAccessToken(service: SupportedService, config: ResolvedInstanceConfig): Promise<InstanceTokenResult>;
|
|
20
21
|
export { getInstanceAccessToken };
|
|
22
|
+
//# sourceMappingURL=get-instance-access-token.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-instance-access-token.d.ts","sourceRoot":"","sources":["../../src/services/get-instance-access-token.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AA8C/D,4CAA4C;AAC5C,UAAU,mBAAmB;IAC3B,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAwDD;;;;;GAKG;AACH,iBAAe,sBAAsB,CACnC,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,mBAAmB,CAAC,CA6C9B;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-instance-access-token.js","sourceRoot":"","sources":["../../src/services/get-instance-access-token.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,3 +11,4 @@
|
|
|
11
11
|
*/
|
|
12
12
|
declare function resolveInstanceDisplayName(configDisplayName: string | undefined, vaultDisplayName: string | undefined, defaultName: string, index: number, total: number): string;
|
|
13
13
|
export { resolveInstanceDisplayName };
|
|
14
|
+
//# sourceMappingURL=resolve-service-instances.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-service-instances.d.ts","sourceRoot":"","sources":["../../src/services/resolve-service-instances.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;GAKG;AACH,iBAAS,0BAA0B,CACjC,iBAAiB,EAAE,MAAM,GAAG,SAAS,EACrC,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,MAAM,CAUR;AAED,OAAO,EAAE,0BAA0B,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-service-instances.js","sourceRoot":"","sources":["../../src/services/resolve-service-instances.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;GAKG;AACH,SAAS,0BAA0B,CACjC,iBAAqC,EACrC,gBAAoC,EACpC,WAAmB,EACnB,KAAa,EACb,KAAa;IAEb,mCAAmC;IACnC,IAAI,iBAAiB;QAAE,OAAO,iBAAiB,CAAC;IAChD,IAAI,gBAAgB;QAAE,OAAO,gBAAgB,CAAC;IAE9C,uCAAuC;IACvC,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,WAAW,CAAC;IAEpC,kDAAkD;IAClD,OAAO,GAAG,WAAW,KAAK,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;AAChD,CAAC;AAED,OAAO,EAAE,0BAA0B,EAAE,CAAC"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import type { ServiceUsageFetcher } from "../types/domain.js";
|
|
2
|
+
import { type SupportedService } from "./supported-service.js";
|
|
2
3
|
/**
|
|
3
4
|
* Get a token-based usage fetcher by service type
|
|
4
5
|
*/
|
|
5
|
-
export declare function getServiceUsageFetcher(name:
|
|
6
|
+
export declare function getServiceUsageFetcher(name: SupportedService): ServiceUsageFetcher;
|
|
6
7
|
/**
|
|
7
8
|
* Get all available service names
|
|
8
9
|
*/
|
|
9
|
-
export declare function getAvailableServices():
|
|
10
|
+
export declare function getAvailableServices(): SupportedService[];
|
|
11
|
+
//# sourceMappingURL=service-adapter-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-adapter-registry.d.ts","sourceRoot":"","sources":["../../src/services/service-adapter-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAK9D,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,wBAAwB,CAAC;AAYhC;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,gBAAgB,GACrB,mBAAmB,CAErB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,gBAAgB,EAAE,CAEzD"}
|
|
@@ -2,6 +2,7 @@ import { codexUsageFetcher } from "../adapters/codex.js";
|
|
|
2
2
|
import { claudeUsageFetcher } from "../adapters/claude.js";
|
|
3
3
|
import { geminiUsageFetcher } from "../adapters/gemini.js";
|
|
4
4
|
import { copilotUsageFetcher } from "../adapters/copilot.js";
|
|
5
|
+
import { SUPPORTED_SERVICES, } from "./supported-service.js";
|
|
5
6
|
/**
|
|
6
7
|
* Registry of token-based usage fetchers
|
|
7
8
|
*/
|
|
@@ -15,12 +16,12 @@ const SERVICE_USAGE_FETCHERS = {
|
|
|
15
16
|
* Get a token-based usage fetcher by service type
|
|
16
17
|
*/
|
|
17
18
|
export function getServiceUsageFetcher(name) {
|
|
18
|
-
|
|
19
|
-
return SERVICE_USAGE_FETCHERS[key];
|
|
19
|
+
return SERVICE_USAGE_FETCHERS[name];
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
22
22
|
* Get all available service names
|
|
23
23
|
*/
|
|
24
24
|
export function getAvailableServices() {
|
|
25
|
-
return
|
|
25
|
+
return [...SUPPORTED_SERVICES];
|
|
26
26
|
}
|
|
27
|
+
//# sourceMappingURL=service-adapter-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-adapter-registry.js","sourceRoot":"","sources":["../../src/services/service-adapter-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EACL,kBAAkB,GAEnB,MAAM,wBAAwB,CAAC;AAEhC;;GAEG;AACH,MAAM,sBAAsB,GAAG;IAC7B,MAAM,EAAE,kBAAkB;IAC1B,KAAK,EAAE,iBAAiB;IACxB,OAAO,EAAE,mBAAmB;IAC5B,MAAM,EAAE,kBAAkB;CACsC,CAAC;AAEnE;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAAsB;IAEtB,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,CAAC,GAAG,kBAAkB,CAAC,CAAC;AACjC,CAAC"}
|
|
@@ -9,3 +9,4 @@ type ServiceDiagnostic = {
|
|
|
9
9
|
export type { ServiceDiagnostic };
|
|
10
10
|
export declare function getServiceDiagnostic(service: SupportedService): ServiceDiagnostic;
|
|
11
11
|
export declare function getAllServiceDiagnostics(): ServiceDiagnostic[];
|
|
12
|
+
//# sourceMappingURL=service-diagnostics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-diagnostics.d.ts","sourceRoot":"","sources":["../../src/services/service-diagnostics.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACnC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC,CAAC;AAEF,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAElC,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,gBAAgB,GACxB,iBAAiB,CAuBnB;AAED,wBAAgB,wBAAwB,IAAI,iBAAiB,EAAE,CAE9D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-diagnostics.js","sourceRoot":"","sources":["../../src/services/service-diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnC,OAAO,EACL,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAa5D,MAAM,UAAU,oBAAoB,CAClC,OAAyB;IAEzB,MAAM,UAAU,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAEjD,IAAI,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IACpC,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;QACvD,MAAM,iBAAiB,GAAG,+BAA+B,EAAE,CAAC;QAC5D,IAAI,iBAAiB,EAAE,CAAC;YACtB,UAAU,GAAG;gBACX,GAAG,UAAU;gBACb,aAAa,EAAE,IAAI;gBACnB,MAAM,EAAE,8BAA8B;aACvC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO;QACP,YAAY,EAAE,SAAS,CAAC,EAAE;QAC1B,OAAO,EAAE,SAAS,CAAC,IAAI;QACvB,aAAa,EAAE,UAAU,CAAC,aAAa;QACvC,UAAU,EAAE,UAAU,CAAC,MAAM;KAC9B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5E,CAAC"}
|
|
@@ -8,3 +8,4 @@ import type { AgentCli } from "axauth";
|
|
|
8
8
|
export type SupportedService = Exclude<AgentCli, "opencode">;
|
|
9
9
|
export declare const SUPPORTED_SERVICES: SupportedService[];
|
|
10
10
|
export declare function validateService(service: string | undefined): SupportedService;
|
|
11
|
+
//# sourceMappingURL=supported-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supported-service.d.ts","sourceRoot":"","sources":["../../src/services/supported-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAGvC;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAE7D,eAAO,MAAM,kBAAkB,EAAE,gBAAgB,EAEhD,CAAC;AAQF,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,gBAAgB,CAgB7E"}
|
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
import { AGENT_CLIS } from "axauth";
|
|
2
2
|
export const SUPPORTED_SERVICES = AGENT_CLIS.filter((cli) => cli !== "opencode");
|
|
3
|
+
const SUPPORTED_SERVICE_SET = new Set(SUPPORTED_SERVICES);
|
|
4
|
+
function isSupportedService(service) {
|
|
5
|
+
return SUPPORTED_SERVICE_SET.has(service);
|
|
6
|
+
}
|
|
3
7
|
export function validateService(service) {
|
|
4
8
|
if (!service) {
|
|
5
9
|
throw new Error(`Service is required. Supported services: ${SUPPORTED_SERVICES.join(", ")}. ` +
|
|
6
10
|
"Run 'axusage --help' for usage.");
|
|
7
11
|
}
|
|
8
12
|
const normalizedService = service.toLowerCase();
|
|
9
|
-
if (!
|
|
13
|
+
if (!isSupportedService(normalizedService)) {
|
|
10
14
|
throw new Error(`Unsupported service: ${service}. Supported services: ${SUPPORTED_SERVICES.join(", ")}. ` +
|
|
11
15
|
"Run 'axusage --help' for usage.");
|
|
12
16
|
}
|
|
13
17
|
return normalizedService;
|
|
14
18
|
}
|
|
19
|
+
//# sourceMappingURL=supported-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supported-service.js","sourceRoot":"","sources":["../../src/services/supported-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAUpC,MAAM,CAAC,MAAM,kBAAkB,GAAuB,UAAU,CAAC,MAAM,CACrE,CAAC,GAAG,EAA2B,EAAE,CAAC,GAAG,KAAK,UAAU,CACrD,CAAC;AAEF,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAS,kBAAkB,CAAC,CAAC;AAElE,SAAS,kBAAkB,CAAC,OAAe;IACzC,OAAO,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAA2B;IACzD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,4CAA4C,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YAC3E,iCAAiC,CACpC,CAAC;IACJ,CAAC;IAED,MAAM,iBAAiB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAChD,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CACb,wBAAwB,OAAO,yBAAyB,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YACvF,iCAAiC,CACpC,CAAC;IACJ,CAAC;IACD,OAAO,iBAAiB,CAAC;AAC3B,CAAC"}
|