berget 2.2.6 → 2.2.7
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/.github/workflows/publish.yml +6 -6
- package/.github/workflows/test.yml +11 -5
- package/.husky/pre-commit +1 -0
- package/.prettierignore +15 -0
- package/.prettierrc +5 -3
- package/CONTRIBUTING.md +38 -0
- package/README.md +2 -148
- package/dist/index.js +21 -21
- package/dist/package.json +28 -2
- package/dist/src/agents/app.js +28 -0
- package/dist/src/agents/backend.js +25 -0
- package/dist/src/agents/devops.js +34 -0
- package/dist/src/agents/frontend.js +25 -0
- package/dist/src/agents/fullstack.js +25 -0
- package/dist/src/agents/index.js +61 -0
- package/dist/src/agents/quality.js +70 -0
- package/dist/src/agents/security.js +26 -0
- package/dist/src/agents/types.js +2 -0
- package/dist/src/client.js +54 -62
- package/dist/src/commands/api-keys.js +132 -140
- package/dist/src/commands/auth.js +9 -9
- package/dist/src/commands/autocomplete.js +9 -9
- package/dist/src/commands/billing.js +7 -9
- package/dist/src/commands/chat.js +90 -92
- package/dist/src/commands/clusters.js +12 -12
- package/dist/src/commands/code/__tests__/auth-sync.test.js +348 -0
- package/dist/src/commands/code/__tests__/fake-api-key-service.js +23 -0
- package/dist/src/commands/code/__tests__/fake-auth-service.js +55 -0
- package/dist/src/commands/code/__tests__/fake-command-runner.js +5 -7
- package/dist/src/commands/code/__tests__/fake-file-store.js +9 -0
- package/dist/src/commands/code/__tests__/fake-prompter.js +60 -18
- package/dist/src/commands/code/__tests__/setup-flow.test.js +374 -107
- package/dist/src/commands/code/adapters/clack-prompter.js +10 -0
- package/dist/src/commands/code/adapters/fs-file-store.js +8 -3
- package/dist/src/commands/code/adapters/spawn-command-runner.js +15 -11
- package/dist/src/commands/code/auth-sync.js +283 -0
- package/dist/src/commands/code/errors.js +4 -4
- package/dist/src/commands/code/ports/auth-services.js +2 -0
- package/dist/src/commands/code/setup.js +234 -93
- package/dist/src/commands/code.js +139 -251
- package/dist/src/commands/models.js +13 -15
- package/dist/src/commands/users.js +6 -8
- package/dist/src/constants/command-structure.js +116 -116
- package/dist/src/services/api-key-service.js +43 -48
- package/dist/src/services/auth-service.js +60 -299
- package/dist/src/services/browser-auth.js +278 -0
- package/dist/src/services/chat-service.js +78 -91
- package/dist/src/services/cluster-service.js +6 -6
- package/dist/src/services/collaborator-service.js +5 -8
- package/dist/src/services/flux-service.js +5 -8
- package/dist/src/services/helm-service.js +5 -8
- package/dist/src/services/kubectl-service.js +7 -10
- package/dist/src/utils/config-checker.js +5 -5
- package/dist/src/utils/config-loader.js +25 -25
- package/dist/src/utils/default-api-key.js +23 -23
- package/dist/src/utils/env-manager.js +7 -7
- package/dist/src/utils/error-handler.js +60 -61
- package/dist/src/utils/logger.js +7 -7
- package/dist/src/utils/markdown-renderer.js +2 -2
- package/dist/src/utils/opencode-validator.js +17 -20
- package/dist/src/utils/token-manager.js +38 -11
- package/dist/tests/commands/chat.test.js +24 -24
- package/dist/tests/commands/code.test.js +147 -147
- package/dist/tests/utils/config-loader.test.js +114 -114
- package/dist/tests/utils/env-manager.test.js +57 -57
- package/dist/tests/utils/opencode-validator.test.js +33 -33
- package/dist/vitest.config.js +1 -1
- package/eslint.config.mjs +47 -0
- package/index.ts +42 -48
- package/package.json +28 -2
- package/src/agents/app.ts +27 -0
- package/src/agents/backend.ts +24 -0
- package/src/agents/devops.ts +33 -0
- package/src/agents/frontend.ts +24 -0
- package/src/agents/fullstack.ts +24 -0
- package/src/agents/index.ts +71 -0
- package/src/agents/quality.ts +69 -0
- package/src/agents/security.ts +26 -0
- package/src/agents/types.ts +17 -0
- package/src/client.ts +125 -167
- package/src/commands/api-keys.ts +261 -358
- package/src/commands/auth.ts +24 -30
- package/src/commands/autocomplete.ts +12 -12
- package/src/commands/billing.ts +22 -27
- package/src/commands/chat.ts +230 -323
- package/src/commands/clusters.ts +33 -33
- package/src/commands/code/__tests__/auth-sync.test.ts +481 -0
- package/src/commands/code/__tests__/fake-api-key-service.ts +13 -0
- package/src/commands/code/__tests__/fake-auth-service.ts +50 -0
- package/src/commands/code/__tests__/fake-command-runner.ts +39 -42
- package/src/commands/code/__tests__/fake-file-store.ts +32 -23
- package/src/commands/code/__tests__/fake-prompter.ts +107 -69
- package/src/commands/code/__tests__/setup-flow.test.ts +624 -270
- package/src/commands/code/adapters/clack-prompter.ts +50 -38
- package/src/commands/code/adapters/fs-file-store.ts +31 -27
- package/src/commands/code/adapters/spawn-command-runner.ts +33 -29
- package/src/commands/code/auth-sync.ts +329 -0
- package/src/commands/code/errors.ts +15 -15
- package/src/commands/code/ports/auth-services.ts +14 -0
- package/src/commands/code/ports/command-runner.ts +8 -4
- package/src/commands/code/ports/file-store.ts +5 -4
- package/src/commands/code/ports/prompter.ts +24 -18
- package/src/commands/code/setup.ts +545 -317
- package/src/commands/code.ts +271 -473
- package/src/commands/index.ts +19 -19
- package/src/commands/models.ts +32 -37
- package/src/commands/users.ts +15 -22
- package/src/constants/command-structure.ts +119 -142
- package/src/services/api-key-service.ts +96 -113
- package/src/services/auth-service.ts +92 -339
- package/src/services/browser-auth.ts +296 -0
- package/src/services/chat-service.ts +246 -279
- package/src/services/cluster-service.ts +29 -32
- package/src/services/collaborator-service.ts +13 -18
- package/src/services/flux-service.ts +16 -18
- package/src/services/helm-service.ts +16 -18
- package/src/services/kubectl-service.ts +12 -14
- package/src/types/api.d.ts +924 -926
- package/src/types/json.d.ts +3 -3
- package/src/utils/config-checker.ts +10 -10
- package/src/utils/config-loader.ts +110 -127
- package/src/utils/default-api-key.ts +81 -93
- package/src/utils/env-manager.ts +36 -40
- package/src/utils/error-handler.ts +83 -78
- package/src/utils/logger.ts +41 -41
- package/src/utils/markdown-renderer.ts +11 -11
- package/src/utils/opencode-validator.ts +51 -56
- package/src/utils/token-manager.ts +84 -64
- package/templates/agents/app.md +1 -0
- package/templates/agents/backend.md +1 -0
- package/templates/agents/devops.md +2 -0
- package/templates/agents/frontend.md +1 -0
- package/templates/agents/fullstack.md +1 -0
- package/templates/agents/quality.md +45 -40
- package/templates/agents/security.md +1 -0
- package/tests/commands/chat.test.ts +60 -70
- package/tests/commands/code.test.ts +330 -376
- package/tests/utils/config-loader.test.ts +260 -260
- package/tests/utils/env-manager.test.ts +127 -134
- package/tests/utils/opencode-validator.test.ts +58 -63
- package/tsconfig.json +2 -2
- package/vitest.config.ts +3 -3
- package/AGENTS.md +0 -374
- package/TODO.md +0 -19
|
@@ -17,52 +17,50 @@ const error_handler_1 = require("../utils/error-handler");
|
|
|
17
17
|
* Register models commands
|
|
18
18
|
*/
|
|
19
19
|
function registerModelCommands(program) {
|
|
20
|
-
const models = program
|
|
21
|
-
.command(command_structure_1.COMMAND_GROUPS.MODELS)
|
|
22
|
-
.description('Manage AI models');
|
|
20
|
+
const models = program.command(command_structure_1.COMMAND_GROUPS.MODELS).description("Manage AI models");
|
|
23
21
|
models
|
|
24
22
|
.command(command_structure_1.SUBCOMMANDS.MODELS.LIST)
|
|
25
|
-
.description(
|
|
26
|
-
.option(
|
|
23
|
+
.description("List available AI models")
|
|
24
|
+
.option("--id <modelId>", "Get details for a specific model")
|
|
27
25
|
.action((options) => __awaiter(this, void 0, void 0, function* () {
|
|
28
26
|
try {
|
|
29
27
|
const client = (0, client_1.createAuthenticatedClient)();
|
|
30
28
|
let response;
|
|
31
29
|
if (options.id) {
|
|
32
|
-
const { data, error } = yield client.GET(
|
|
30
|
+
const { data, error } = yield client.GET("/v1/models/{modelId}", {
|
|
33
31
|
params: { path: { modelId: options.id } },
|
|
34
32
|
});
|
|
35
33
|
if (error)
|
|
36
34
|
throw new Error(JSON.stringify(error));
|
|
37
35
|
response = data;
|
|
38
|
-
console.log(
|
|
36
|
+
console.log("Model Details:");
|
|
39
37
|
console.log(JSON.stringify(response, null, 2));
|
|
40
38
|
}
|
|
41
39
|
else {
|
|
42
|
-
const { data, error } = yield client.GET(
|
|
40
|
+
const { data, error } = yield client.GET("/v1/models");
|
|
43
41
|
if (error)
|
|
44
42
|
throw new Error(JSON.stringify(error));
|
|
45
43
|
response = data;
|
|
46
|
-
console.log(
|
|
47
|
-
console.log(
|
|
44
|
+
console.log("Available Models:");
|
|
45
|
+
console.log("ID OWNED BY CAPABILITIES");
|
|
48
46
|
// Ensure response has the expected structure
|
|
49
47
|
const modelData = response;
|
|
50
48
|
if (modelData.data) {
|
|
51
49
|
modelData.data.forEach((model) => {
|
|
52
50
|
const capabilities = [];
|
|
53
51
|
if (model.capabilities.vision)
|
|
54
|
-
capabilities.push(
|
|
52
|
+
capabilities.push("vision");
|
|
55
53
|
if (model.capabilities.function_calling)
|
|
56
|
-
capabilities.push(
|
|
54
|
+
capabilities.push("function_calling");
|
|
57
55
|
if (model.capabilities.json_mode)
|
|
58
|
-
capabilities.push(
|
|
59
|
-
console.log(`${model.root.padEnd(50)} ${model.owned_by.padEnd(24)} ${capabilities.join(
|
|
56
|
+
capabilities.push("json_mode");
|
|
57
|
+
console.log(`${model.root.padEnd(50)} ${model.owned_by.padEnd(24)} ${capabilities.join(", ")}`);
|
|
60
58
|
});
|
|
61
59
|
}
|
|
62
60
|
}
|
|
63
61
|
}
|
|
64
62
|
catch (error) {
|
|
65
|
-
(0, error_handler_1.handleError)(
|
|
63
|
+
(0, error_handler_1.handleError)("Failed to get models", error);
|
|
66
64
|
}
|
|
67
65
|
}));
|
|
68
66
|
}
|
|
@@ -17,26 +17,24 @@ const error_handler_1 = require("../utils/error-handler");
|
|
|
17
17
|
* Register user commands
|
|
18
18
|
*/
|
|
19
19
|
function registerUserCommands(program) {
|
|
20
|
-
const users = program
|
|
21
|
-
.command(command_structure_1.COMMAND_GROUPS.USERS)
|
|
22
|
-
.description('Manage users');
|
|
20
|
+
const users = program.command(command_structure_1.COMMAND_GROUPS.USERS).description("Manage users");
|
|
23
21
|
users
|
|
24
22
|
.command(command_structure_1.SUBCOMMANDS.USERS.LIST)
|
|
25
|
-
.description(
|
|
23
|
+
.description("List team members")
|
|
26
24
|
.action(() => __awaiter(this, void 0, void 0, function* () {
|
|
27
25
|
try {
|
|
28
26
|
const client = (0, client_1.createAuthenticatedClient)();
|
|
29
|
-
const { data, error } = yield client.GET(
|
|
27
|
+
const { data, error } = yield client.GET("/v1/users");
|
|
30
28
|
if (error)
|
|
31
29
|
throw new Error(JSON.stringify(error));
|
|
32
|
-
console.log(
|
|
33
|
-
console.log(
|
|
30
|
+
console.log("Team Members:");
|
|
31
|
+
console.log("NAME EMAIL ROLE");
|
|
34
32
|
data.forEach((user) => {
|
|
35
33
|
console.log(`${user.name.padEnd(24)} ${user.email.padEnd(30)} ${user.role}`);
|
|
36
34
|
});
|
|
37
35
|
}
|
|
38
36
|
catch (error) {
|
|
39
|
-
(0, error_handler_1.handleError)(
|
|
37
|
+
(0, error_handler_1.handleError)("Failed to list team members", error);
|
|
40
38
|
}
|
|
41
39
|
}));
|
|
42
40
|
}
|
|
@@ -7,174 +7,174 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
7
7
|
exports.COMMAND_DESCRIPTIONS = exports.SUBCOMMANDS = exports.COMMAND_GROUPS = void 0;
|
|
8
8
|
// Main command groups
|
|
9
9
|
exports.COMMAND_GROUPS = {
|
|
10
|
-
AUTH:
|
|
11
|
-
API_KEYS:
|
|
12
|
-
CLUSTERS:
|
|
13
|
-
APPS:
|
|
14
|
-
MODELS:
|
|
15
|
-
HELM:
|
|
16
|
-
KUBECTL:
|
|
17
|
-
FLUX:
|
|
18
|
-
USERS:
|
|
19
|
-
BILLING:
|
|
20
|
-
CHAT:
|
|
21
|
-
CODE:
|
|
10
|
+
AUTH: "auth",
|
|
11
|
+
API_KEYS: "api-keys",
|
|
12
|
+
CLUSTERS: "clusters",
|
|
13
|
+
APPS: "apps",
|
|
14
|
+
MODELS: "models",
|
|
15
|
+
HELM: "helm",
|
|
16
|
+
KUBECTL: "kubectl",
|
|
17
|
+
FLUX: "flux",
|
|
18
|
+
USERS: "users",
|
|
19
|
+
BILLING: "billing",
|
|
20
|
+
CHAT: "chat",
|
|
21
|
+
CODE: "code",
|
|
22
22
|
};
|
|
23
23
|
// Subcommands for each group
|
|
24
24
|
exports.SUBCOMMANDS = {
|
|
25
25
|
// Auth commands
|
|
26
26
|
AUTH: {
|
|
27
|
-
LOGIN:
|
|
28
|
-
LOGOUT:
|
|
29
|
-
WHOAMI:
|
|
27
|
+
LOGIN: "login",
|
|
28
|
+
LOGOUT: "logout",
|
|
29
|
+
WHOAMI: "whoami",
|
|
30
30
|
},
|
|
31
31
|
// Chat commands
|
|
32
32
|
CHAT: {
|
|
33
|
-
RUN:
|
|
34
|
-
LIST:
|
|
33
|
+
RUN: "run",
|
|
34
|
+
LIST: "list",
|
|
35
35
|
},
|
|
36
36
|
// Code commands
|
|
37
37
|
CODE: {
|
|
38
|
-
INIT:
|
|
39
|
-
RUN:
|
|
40
|
-
UPDATE:
|
|
41
|
-
SERVE:
|
|
42
|
-
SETUP:
|
|
38
|
+
INIT: "init",
|
|
39
|
+
RUN: "run",
|
|
40
|
+
UPDATE: "update",
|
|
41
|
+
SERVE: "serve",
|
|
42
|
+
SETUP: "setup",
|
|
43
43
|
},
|
|
44
44
|
// API Keys commands
|
|
45
45
|
API_KEYS: {
|
|
46
|
-
LIST:
|
|
47
|
-
CREATE:
|
|
48
|
-
DELETE:
|
|
49
|
-
ROTATE:
|
|
50
|
-
DESCRIBE:
|
|
51
|
-
SET_DEFAULT:
|
|
52
|
-
GET_DEFAULT:
|
|
46
|
+
LIST: "list",
|
|
47
|
+
CREATE: "create",
|
|
48
|
+
DELETE: "delete",
|
|
49
|
+
ROTATE: "rotate",
|
|
50
|
+
DESCRIBE: "describe",
|
|
51
|
+
SET_DEFAULT: "set-default",
|
|
52
|
+
GET_DEFAULT: "get-default",
|
|
53
53
|
},
|
|
54
54
|
// Clusters commands
|
|
55
55
|
CLUSTERS: {
|
|
56
|
-
LIST:
|
|
57
|
-
DESCRIBE:
|
|
58
|
-
GET_USAGE:
|
|
56
|
+
LIST: "list",
|
|
57
|
+
DESCRIBE: "describe",
|
|
58
|
+
GET_USAGE: "get-usage",
|
|
59
59
|
},
|
|
60
60
|
// Apps commands
|
|
61
61
|
APPS: {
|
|
62
|
-
LIST_TEMPLATES:
|
|
63
|
-
DESCRIBE_TEMPLATE:
|
|
64
|
-
LIST_INSTALLATIONS:
|
|
65
|
-
INSTALL:
|
|
66
|
-
UNINSTALL:
|
|
67
|
-
DESCRIBE_INSTALLATION:
|
|
62
|
+
LIST_TEMPLATES: "list-templates",
|
|
63
|
+
DESCRIBE_TEMPLATE: "describe-template",
|
|
64
|
+
LIST_INSTALLATIONS: "list-installations",
|
|
65
|
+
INSTALL: "install",
|
|
66
|
+
UNINSTALL: "uninstall",
|
|
67
|
+
DESCRIBE_INSTALLATION: "describe-installation",
|
|
68
68
|
},
|
|
69
69
|
// Models commands
|
|
70
70
|
MODELS: {
|
|
71
|
-
LIST:
|
|
72
|
-
DESCRIBE:
|
|
71
|
+
LIST: "list",
|
|
72
|
+
DESCRIBE: "describe",
|
|
73
73
|
},
|
|
74
74
|
// Helm commands
|
|
75
75
|
HELM: {
|
|
76
|
-
ADD_REPO:
|
|
77
|
-
INSTALL:
|
|
76
|
+
ADD_REPO: "add-repo",
|
|
77
|
+
INSTALL: "install",
|
|
78
78
|
},
|
|
79
79
|
// Kubectl commands
|
|
80
80
|
KUBECTL: {
|
|
81
|
-
CREATE_NAMESPACE:
|
|
82
|
-
APPLY:
|
|
83
|
-
GET:
|
|
81
|
+
CREATE_NAMESPACE: "create-namespace",
|
|
82
|
+
APPLY: "apply",
|
|
83
|
+
GET: "get",
|
|
84
84
|
},
|
|
85
85
|
// Flux commands
|
|
86
86
|
FLUX: {
|
|
87
|
-
INSTALL:
|
|
88
|
-
BOOTSTRAP:
|
|
87
|
+
INSTALL: "install",
|
|
88
|
+
BOOTSTRAP: "bootstrap",
|
|
89
89
|
},
|
|
90
90
|
// Users commands
|
|
91
91
|
USERS: {
|
|
92
|
-
LIST:
|
|
93
|
-
DESCRIBE:
|
|
94
|
-
UPDATE:
|
|
95
|
-
INVITE:
|
|
92
|
+
LIST: "list",
|
|
93
|
+
DESCRIBE: "describe",
|
|
94
|
+
UPDATE: "update",
|
|
95
|
+
INVITE: "invite",
|
|
96
96
|
},
|
|
97
97
|
// Billing commands
|
|
98
98
|
BILLING: {
|
|
99
|
-
GET_USAGE:
|
|
100
|
-
LIST_INVOICES:
|
|
101
|
-
DESCRIBE_INVOICE:
|
|
102
|
-
LIST_PAYMENT_METHODS:
|
|
103
|
-
ADD_PAYMENT_METHOD:
|
|
104
|
-
REMOVE_PAYMENT_METHOD:
|
|
105
|
-
UPDATE_SUBSCRIPTION:
|
|
99
|
+
GET_USAGE: "get-usage",
|
|
100
|
+
LIST_INVOICES: "list-invoices",
|
|
101
|
+
DESCRIBE_INVOICE: "describe-invoice",
|
|
102
|
+
LIST_PAYMENT_METHODS: "list-payment-methods",
|
|
103
|
+
ADD_PAYMENT_METHOD: "add-payment-method",
|
|
104
|
+
REMOVE_PAYMENT_METHOD: "remove-payment-method",
|
|
105
|
+
UPDATE_SUBSCRIPTION: "update-subscription",
|
|
106
106
|
},
|
|
107
107
|
};
|
|
108
108
|
// Command descriptions
|
|
109
109
|
exports.COMMAND_DESCRIPTIONS = {
|
|
110
110
|
// Auth group
|
|
111
|
-
[exports.COMMAND_GROUPS.AUTH]:
|
|
112
|
-
[`${exports.COMMAND_GROUPS.AUTH} ${exports.SUBCOMMANDS.AUTH.LOGIN}`]:
|
|
113
|
-
[`${exports.COMMAND_GROUPS.AUTH} ${exports.SUBCOMMANDS.AUTH.LOGOUT}`]:
|
|
114
|
-
[`${exports.COMMAND_GROUPS.AUTH} ${exports.SUBCOMMANDS.AUTH.WHOAMI}`]:
|
|
111
|
+
[exports.COMMAND_GROUPS.AUTH]: "Manage authentication and authorization",
|
|
112
|
+
[`${exports.COMMAND_GROUPS.AUTH} ${exports.SUBCOMMANDS.AUTH.LOGIN}`]: "Log in to Berget AI",
|
|
113
|
+
[`${exports.COMMAND_GROUPS.AUTH} ${exports.SUBCOMMANDS.AUTH.LOGOUT}`]: "Log out from Berget AI",
|
|
114
|
+
[`${exports.COMMAND_GROUPS.AUTH} ${exports.SUBCOMMANDS.AUTH.WHOAMI}`]: "Display current user information",
|
|
115
115
|
// API Keys group
|
|
116
|
-
[exports.COMMAND_GROUPS.API_KEYS]:
|
|
117
|
-
[`${exports.COMMAND_GROUPS.API_KEYS} ${exports.SUBCOMMANDS.API_KEYS.LIST}`]:
|
|
118
|
-
[`${exports.COMMAND_GROUPS.API_KEYS} ${exports.SUBCOMMANDS.API_KEYS.CREATE}`]:
|
|
119
|
-
[`${exports.COMMAND_GROUPS.API_KEYS} ${exports.SUBCOMMANDS.API_KEYS.DELETE}`]:
|
|
120
|
-
[`${exports.COMMAND_GROUPS.API_KEYS} ${exports.SUBCOMMANDS.API_KEYS.ROTATE}`]:
|
|
121
|
-
[`${exports.COMMAND_GROUPS.API_KEYS} ${exports.SUBCOMMANDS.API_KEYS.DESCRIBE}`]:
|
|
122
|
-
[`${exports.COMMAND_GROUPS.API_KEYS} ${exports.SUBCOMMANDS.API_KEYS.SET_DEFAULT}`]:
|
|
123
|
-
[`${exports.COMMAND_GROUPS.API_KEYS} ${exports.SUBCOMMANDS.API_KEYS.GET_DEFAULT}`]:
|
|
116
|
+
[exports.COMMAND_GROUPS.API_KEYS]: "Manage API keys",
|
|
117
|
+
[`${exports.COMMAND_GROUPS.API_KEYS} ${exports.SUBCOMMANDS.API_KEYS.LIST}`]: "List all API keys",
|
|
118
|
+
[`${exports.COMMAND_GROUPS.API_KEYS} ${exports.SUBCOMMANDS.API_KEYS.CREATE}`]: "Create a new API key",
|
|
119
|
+
[`${exports.COMMAND_GROUPS.API_KEYS} ${exports.SUBCOMMANDS.API_KEYS.DELETE}`]: "Delete an API key",
|
|
120
|
+
[`${exports.COMMAND_GROUPS.API_KEYS} ${exports.SUBCOMMANDS.API_KEYS.ROTATE}`]: "Rotate an API key",
|
|
121
|
+
[`${exports.COMMAND_GROUPS.API_KEYS} ${exports.SUBCOMMANDS.API_KEYS.DESCRIBE}`]: "Get usage statistics for an API key",
|
|
122
|
+
[`${exports.COMMAND_GROUPS.API_KEYS} ${exports.SUBCOMMANDS.API_KEYS.SET_DEFAULT}`]: "Set an API key as the default for chat commands",
|
|
123
|
+
[`${exports.COMMAND_GROUPS.API_KEYS} ${exports.SUBCOMMANDS.API_KEYS.GET_DEFAULT}`]: "Show the current default API key",
|
|
124
124
|
// Clusters group
|
|
125
|
-
[exports.COMMAND_GROUPS.CLUSTERS]:
|
|
126
|
-
[`${exports.COMMAND_GROUPS.CLUSTERS} ${exports.SUBCOMMANDS.CLUSTERS.LIST}`]:
|
|
127
|
-
[`${exports.COMMAND_GROUPS.CLUSTERS} ${exports.SUBCOMMANDS.CLUSTERS.DESCRIBE}`]:
|
|
128
|
-
[`${exports.COMMAND_GROUPS.CLUSTERS} ${exports.SUBCOMMANDS.CLUSTERS.GET_USAGE}`]:
|
|
125
|
+
[exports.COMMAND_GROUPS.CLUSTERS]: "Manage Kubernetes clusters",
|
|
126
|
+
[`${exports.COMMAND_GROUPS.CLUSTERS} ${exports.SUBCOMMANDS.CLUSTERS.LIST}`]: "List all clusters",
|
|
127
|
+
[`${exports.COMMAND_GROUPS.CLUSTERS} ${exports.SUBCOMMANDS.CLUSTERS.DESCRIBE}`]: "Get detailed information about a cluster",
|
|
128
|
+
[`${exports.COMMAND_GROUPS.CLUSTERS} ${exports.SUBCOMMANDS.CLUSTERS.GET_USAGE}`]: "Get resource usage for a cluster",
|
|
129
129
|
// Apps group
|
|
130
|
-
[exports.COMMAND_GROUPS.APPS]:
|
|
131
|
-
[`${exports.COMMAND_GROUPS.APPS} ${exports.SUBCOMMANDS.APPS.LIST_TEMPLATES}`]:
|
|
132
|
-
[`${exports.COMMAND_GROUPS.APPS} ${exports.SUBCOMMANDS.APPS.DESCRIBE_TEMPLATE}`]:
|
|
133
|
-
[`${exports.COMMAND_GROUPS.APPS} ${exports.SUBCOMMANDS.APPS.LIST_INSTALLATIONS}`]:
|
|
134
|
-
[`${exports.COMMAND_GROUPS.APPS} ${exports.SUBCOMMANDS.APPS.INSTALL}`]:
|
|
135
|
-
[`${exports.COMMAND_GROUPS.APPS} ${exports.SUBCOMMANDS.APPS.UNINSTALL}`]:
|
|
136
|
-
[`${exports.COMMAND_GROUPS.APPS} ${exports.SUBCOMMANDS.APPS.DESCRIBE_INSTALLATION}`]:
|
|
130
|
+
[exports.COMMAND_GROUPS.APPS]: "Manage applications",
|
|
131
|
+
[`${exports.COMMAND_GROUPS.APPS} ${exports.SUBCOMMANDS.APPS.LIST_TEMPLATES}`]: "List available application templates",
|
|
132
|
+
[`${exports.COMMAND_GROUPS.APPS} ${exports.SUBCOMMANDS.APPS.DESCRIBE_TEMPLATE}`]: "Get detailed information about an application template",
|
|
133
|
+
[`${exports.COMMAND_GROUPS.APPS} ${exports.SUBCOMMANDS.APPS.LIST_INSTALLATIONS}`]: "List installed applications",
|
|
134
|
+
[`${exports.COMMAND_GROUPS.APPS} ${exports.SUBCOMMANDS.APPS.INSTALL}`]: "Install an application",
|
|
135
|
+
[`${exports.COMMAND_GROUPS.APPS} ${exports.SUBCOMMANDS.APPS.UNINSTALL}`]: "Uninstall an application",
|
|
136
|
+
[`${exports.COMMAND_GROUPS.APPS} ${exports.SUBCOMMANDS.APPS.DESCRIBE_INSTALLATION}`]: "Get detailed information about an installed application",
|
|
137
137
|
// Models group
|
|
138
|
-
[exports.COMMAND_GROUPS.MODELS]:
|
|
139
|
-
[`${exports.COMMAND_GROUPS.MODELS} ${exports.SUBCOMMANDS.MODELS.LIST}`]:
|
|
140
|
-
[`${exports.COMMAND_GROUPS.MODELS} ${exports.SUBCOMMANDS.MODELS.DESCRIBE}`]:
|
|
138
|
+
[exports.COMMAND_GROUPS.MODELS]: "Manage AI models",
|
|
139
|
+
[`${exports.COMMAND_GROUPS.MODELS} ${exports.SUBCOMMANDS.MODELS.LIST}`]: "List available AI models",
|
|
140
|
+
[`${exports.COMMAND_GROUPS.MODELS} ${exports.SUBCOMMANDS.MODELS.DESCRIBE}`]: "Get detailed information about an AI model",
|
|
141
141
|
// Helm group
|
|
142
|
-
[exports.COMMAND_GROUPS.HELM]:
|
|
143
|
-
[`${exports.COMMAND_GROUPS.HELM} ${exports.SUBCOMMANDS.HELM.ADD_REPO}`]:
|
|
144
|
-
[`${exports.COMMAND_GROUPS.HELM} ${exports.SUBCOMMANDS.HELM.INSTALL}`]:
|
|
142
|
+
[exports.COMMAND_GROUPS.HELM]: "Manage Helm charts",
|
|
143
|
+
[`${exports.COMMAND_GROUPS.HELM} ${exports.SUBCOMMANDS.HELM.ADD_REPO}`]: "Add a Helm repository",
|
|
144
|
+
[`${exports.COMMAND_GROUPS.HELM} ${exports.SUBCOMMANDS.HELM.INSTALL}`]: "Install a Helm chart",
|
|
145
145
|
// Kubectl group
|
|
146
|
-
[exports.COMMAND_GROUPS.KUBECTL]:
|
|
147
|
-
[`${exports.COMMAND_GROUPS.KUBECTL} ${exports.SUBCOMMANDS.KUBECTL.CREATE_NAMESPACE}`]:
|
|
148
|
-
[`${exports.COMMAND_GROUPS.KUBECTL} ${exports.SUBCOMMANDS.KUBECTL.APPLY}`]:
|
|
149
|
-
[`${exports.COMMAND_GROUPS.KUBECTL} ${exports.SUBCOMMANDS.KUBECTL.GET}`]:
|
|
146
|
+
[exports.COMMAND_GROUPS.KUBECTL]: "Manage Kubernetes resources",
|
|
147
|
+
[`${exports.COMMAND_GROUPS.KUBECTL} ${exports.SUBCOMMANDS.KUBECTL.CREATE_NAMESPACE}`]: "Create a Kubernetes namespace",
|
|
148
|
+
[`${exports.COMMAND_GROUPS.KUBECTL} ${exports.SUBCOMMANDS.KUBECTL.APPLY}`]: "Apply a Kubernetes configuration",
|
|
149
|
+
[`${exports.COMMAND_GROUPS.KUBECTL} ${exports.SUBCOMMANDS.KUBECTL.GET}`]: "Get Kubernetes resources",
|
|
150
150
|
// Flux group
|
|
151
|
-
[exports.COMMAND_GROUPS.FLUX]:
|
|
152
|
-
[`${exports.COMMAND_GROUPS.FLUX} ${exports.SUBCOMMANDS.FLUX.INSTALL}`]:
|
|
153
|
-
[`${exports.COMMAND_GROUPS.FLUX} ${exports.SUBCOMMANDS.FLUX.BOOTSTRAP}`]:
|
|
151
|
+
[exports.COMMAND_GROUPS.FLUX]: "Manage Flux CD",
|
|
152
|
+
[`${exports.COMMAND_GROUPS.FLUX} ${exports.SUBCOMMANDS.FLUX.INSTALL}`]: "Install Flux CD",
|
|
153
|
+
[`${exports.COMMAND_GROUPS.FLUX} ${exports.SUBCOMMANDS.FLUX.BOOTSTRAP}`]: "Bootstrap Flux CD",
|
|
154
154
|
// Users group
|
|
155
|
-
[exports.COMMAND_GROUPS.USERS]:
|
|
156
|
-
[`${exports.COMMAND_GROUPS.USERS} ${exports.SUBCOMMANDS.USERS.LIST}`]:
|
|
157
|
-
[`${exports.COMMAND_GROUPS.USERS} ${exports.SUBCOMMANDS.USERS.DESCRIBE}`]:
|
|
158
|
-
[`${exports.COMMAND_GROUPS.USERS} ${exports.SUBCOMMANDS.USERS.UPDATE}`]:
|
|
159
|
-
[`${exports.COMMAND_GROUPS.USERS} ${exports.SUBCOMMANDS.USERS.INVITE}`]:
|
|
155
|
+
[exports.COMMAND_GROUPS.USERS]: "Manage users",
|
|
156
|
+
[`${exports.COMMAND_GROUPS.USERS} ${exports.SUBCOMMANDS.USERS.LIST}`]: "List all users in your organization",
|
|
157
|
+
[`${exports.COMMAND_GROUPS.USERS} ${exports.SUBCOMMANDS.USERS.DESCRIBE}`]: "Get detailed information about a user",
|
|
158
|
+
[`${exports.COMMAND_GROUPS.USERS} ${exports.SUBCOMMANDS.USERS.UPDATE}`]: "Update user information",
|
|
159
|
+
[`${exports.COMMAND_GROUPS.USERS} ${exports.SUBCOMMANDS.USERS.INVITE}`]: "Invite a new user to your organization",
|
|
160
160
|
// Billing group
|
|
161
|
-
[exports.COMMAND_GROUPS.BILLING]:
|
|
162
|
-
[`${exports.COMMAND_GROUPS.BILLING} ${exports.SUBCOMMANDS.BILLING.GET_USAGE}`]:
|
|
163
|
-
[`${exports.COMMAND_GROUPS.BILLING} ${exports.SUBCOMMANDS.BILLING.LIST_INVOICES}`]:
|
|
164
|
-
[`${exports.COMMAND_GROUPS.BILLING} ${exports.SUBCOMMANDS.BILLING.DESCRIBE_INVOICE}`]:
|
|
165
|
-
[`${exports.COMMAND_GROUPS.BILLING} ${exports.SUBCOMMANDS.BILLING.LIST_PAYMENT_METHODS}`]:
|
|
166
|
-
[`${exports.COMMAND_GROUPS.BILLING} ${exports.SUBCOMMANDS.BILLING.ADD_PAYMENT_METHOD}`]:
|
|
167
|
-
[`${exports.COMMAND_GROUPS.BILLING} ${exports.SUBCOMMANDS.BILLING.REMOVE_PAYMENT_METHOD}`]:
|
|
168
|
-
[`${exports.COMMAND_GROUPS.BILLING} ${exports.SUBCOMMANDS.BILLING.UPDATE_SUBSCRIPTION}`]:
|
|
161
|
+
[exports.COMMAND_GROUPS.BILLING]: "Manage billing and usage",
|
|
162
|
+
[`${exports.COMMAND_GROUPS.BILLING} ${exports.SUBCOMMANDS.BILLING.GET_USAGE}`]: "Get current usage metrics",
|
|
163
|
+
[`${exports.COMMAND_GROUPS.BILLING} ${exports.SUBCOMMANDS.BILLING.LIST_INVOICES}`]: "List all invoices",
|
|
164
|
+
[`${exports.COMMAND_GROUPS.BILLING} ${exports.SUBCOMMANDS.BILLING.DESCRIBE_INVOICE}`]: "Get detailed information about an invoice",
|
|
165
|
+
[`${exports.COMMAND_GROUPS.BILLING} ${exports.SUBCOMMANDS.BILLING.LIST_PAYMENT_METHODS}`]: "List all payment methods",
|
|
166
|
+
[`${exports.COMMAND_GROUPS.BILLING} ${exports.SUBCOMMANDS.BILLING.ADD_PAYMENT_METHOD}`]: "Add a new payment method",
|
|
167
|
+
[`${exports.COMMAND_GROUPS.BILLING} ${exports.SUBCOMMANDS.BILLING.REMOVE_PAYMENT_METHOD}`]: "Remove a payment method",
|
|
168
|
+
[`${exports.COMMAND_GROUPS.BILLING} ${exports.SUBCOMMANDS.BILLING.UPDATE_SUBSCRIPTION}`]: "Update subscription plan",
|
|
169
169
|
// Chat group
|
|
170
|
-
[exports.COMMAND_GROUPS.CHAT]:
|
|
171
|
-
[`${exports.COMMAND_GROUPS.CHAT} ${exports.SUBCOMMANDS.CHAT.RUN}`]:
|
|
172
|
-
[`${exports.COMMAND_GROUPS.CHAT} ${exports.SUBCOMMANDS.CHAT.LIST}`]:
|
|
170
|
+
[exports.COMMAND_GROUPS.CHAT]: "Interact with AI chat models",
|
|
171
|
+
[`${exports.COMMAND_GROUPS.CHAT} ${exports.SUBCOMMANDS.CHAT.RUN}`]: "Run a chat session with a specified model",
|
|
172
|
+
[`${exports.COMMAND_GROUPS.CHAT} ${exports.SUBCOMMANDS.CHAT.LIST}`]: "List available chat models",
|
|
173
173
|
// Code group
|
|
174
|
-
[exports.COMMAND_GROUPS.CODE]:
|
|
175
|
-
[`${exports.COMMAND_GROUPS.CODE} ${exports.SUBCOMMANDS.CODE.SETUP}`]:
|
|
176
|
-
[`${exports.COMMAND_GROUPS.CODE} ${exports.SUBCOMMANDS.CODE.INIT}`]:
|
|
177
|
-
[`${exports.COMMAND_GROUPS.CODE} ${exports.SUBCOMMANDS.CODE.RUN}`]:
|
|
178
|
-
[`${exports.COMMAND_GROUPS.CODE} ${exports.SUBCOMMANDS.CODE.SERVE}`]:
|
|
179
|
-
[`${exports.COMMAND_GROUPS.CODE} ${exports.SUBCOMMANDS.CODE.UPDATE}`]:
|
|
174
|
+
[exports.COMMAND_GROUPS.CODE]: "AI-powered coding assistant with OpenCode",
|
|
175
|
+
[`${exports.COMMAND_GROUPS.CODE} ${exports.SUBCOMMANDS.CODE.SETUP}`]: "Interactive setup for Berget AI coding tools",
|
|
176
|
+
[`${exports.COMMAND_GROUPS.CODE} ${exports.SUBCOMMANDS.CODE.INIT}`]: "Initialize project for AI coding assistant",
|
|
177
|
+
[`${exports.COMMAND_GROUPS.CODE} ${exports.SUBCOMMANDS.CODE.RUN}`]: "Run AI coding assistant",
|
|
178
|
+
[`${exports.COMMAND_GROUPS.CODE} ${exports.SUBCOMMANDS.CODE.SERVE}`]: "Start OpenCode web server",
|
|
179
|
+
[`${exports.COMMAND_GROUPS.CODE} ${exports.SUBCOMMANDS.CODE.UPDATE}`]: "Update OpenCode and agents to latest versions",
|
|
180
180
|
};
|
|
@@ -34,13 +34,13 @@ class ApiKeyService {
|
|
|
34
34
|
list() {
|
|
35
35
|
return __awaiter(this, void 0, void 0, function* () {
|
|
36
36
|
try {
|
|
37
|
-
const { data, error } = yield this.client.GET(
|
|
37
|
+
const { data, error } = yield this.client.GET("/v1/api-keys");
|
|
38
38
|
if (error)
|
|
39
39
|
throw error;
|
|
40
40
|
return data || [];
|
|
41
41
|
}
|
|
42
42
|
catch (error) {
|
|
43
|
-
(0, error_handler_1.handleError)(
|
|
43
|
+
(0, error_handler_1.handleError)("Failed to list API keys", error);
|
|
44
44
|
throw error;
|
|
45
45
|
}
|
|
46
46
|
});
|
|
@@ -55,76 +55,71 @@ class ApiKeyService {
|
|
|
55
55
|
try {
|
|
56
56
|
// Validate input before sending request
|
|
57
57
|
if (!options.name || options.name.trim().length === 0) {
|
|
58
|
-
throw new Error(
|
|
58
|
+
throw new Error("API key name is required and cannot be empty");
|
|
59
59
|
}
|
|
60
60
|
if (options.name.length > 100) {
|
|
61
|
-
throw new Error(
|
|
61
|
+
throw new Error("API key name must be 100 characters or less");
|
|
62
62
|
}
|
|
63
63
|
if (options.description && options.description.length > 500) {
|
|
64
|
-
throw new Error(
|
|
64
|
+
throw new Error("API key description must be 500 characters or less");
|
|
65
65
|
}
|
|
66
|
-
const { data, error } = yield this.client.POST(
|
|
66
|
+
const { data, error } = yield this.client.POST("/v1/api-keys", {
|
|
67
67
|
body: options,
|
|
68
68
|
});
|
|
69
69
|
if (error) {
|
|
70
70
|
// Enhanced error handling with specific troubleshooting
|
|
71
71
|
// Handle specific error cases
|
|
72
|
-
if (typeof error ===
|
|
72
|
+
if (typeof error === "object" && error !== null) {
|
|
73
73
|
const errorObj = error;
|
|
74
|
-
if (((_a = errorObj.error) === null || _a === void 0 ? void 0 : _a.code) ===
|
|
75
|
-
let detailedMessage =
|
|
76
|
-
detailedMessage +=
|
|
77
|
-
detailedMessage +=
|
|
78
|
-
|
|
79
|
-
detailedMessage +=
|
|
80
|
-
detailedMessage +=
|
|
81
|
-
detailedMessage +=
|
|
82
|
-
detailedMessage +=
|
|
83
|
-
|
|
84
|
-
detailedMessage +=
|
|
85
|
-
|
|
86
|
-
detailedMessage += '3. Check your billing status and subscription\n';
|
|
87
|
-
detailedMessage +=
|
|
88
|
-
'4. Try again in a few minutes if this is a temporary issue\n';
|
|
89
|
-
detailedMessage += '5. Contact support if the problem persists';
|
|
74
|
+
if (((_a = errorObj.error) === null || _a === void 0 ? void 0 : _a.code) === "API_KEY_CREATION_FAILED") {
|
|
75
|
+
let detailedMessage = "Failed to create API key. This could be due to:\n";
|
|
76
|
+
detailedMessage += "• Account limits or quota restrictions\n";
|
|
77
|
+
detailedMessage += "• Insufficient permissions for API key creation\n";
|
|
78
|
+
detailedMessage += "• Temporary server issues\n";
|
|
79
|
+
detailedMessage += "• Billing or subscription issues\n\n";
|
|
80
|
+
detailedMessage += "Troubleshooting steps:\n";
|
|
81
|
+
detailedMessage += "1. Check if you have reached your API key limit\n";
|
|
82
|
+
detailedMessage += "2. Verify your account has API key creation permissions\n";
|
|
83
|
+
detailedMessage += "3. Check your billing status and subscription\n";
|
|
84
|
+
detailedMessage += "4. Try again in a few minutes if this is a temporary issue\n";
|
|
85
|
+
detailedMessage += "5. Contact support if the problem persists";
|
|
90
86
|
throw new Error(detailedMessage);
|
|
91
87
|
}
|
|
92
|
-
if (((_b = errorObj.error) === null || _b === void 0 ? void 0 : _b.code) ===
|
|
93
|
-
throw new Error(
|
|
88
|
+
if (((_b = errorObj.error) === null || _b === void 0 ? void 0 : _b.code) === "USER_NOT_FOUND") {
|
|
89
|
+
throw new Error("Your account is still being set up. Please wait a moment and try again.\n\nIf this issue persists, please contact support at support@berget.ai");
|
|
94
90
|
}
|
|
95
|
-
if (((_c = errorObj.error) === null || _c === void 0 ? void 0 : _c.code) ===
|
|
96
|
-
throw new Error(
|
|
91
|
+
if (((_c = errorObj.error) === null || _c === void 0 ? void 0 : _c.code) === "QUOTA_EXCEEDED") {
|
|
92
|
+
throw new Error("You have reached your API key limit. Please delete existing keys or contact support to increase your quota.");
|
|
97
93
|
}
|
|
98
|
-
if (((_d = errorObj.error) === null || _d === void 0 ? void 0 : _d.code) ===
|
|
99
|
-
throw new Error(
|
|
94
|
+
if (((_d = errorObj.error) === null || _d === void 0 ? void 0 : _d.code) === "INSUFFICIENT_PERMISSIONS") {
|
|
95
|
+
throw new Error("Your account does not have permission to create API keys. Please contact your administrator.");
|
|
100
96
|
}
|
|
101
|
-
if (((_e = errorObj.error) === null || _e === void 0 ? void 0 : _e.code) ===
|
|
102
|
-
throw new Error(
|
|
97
|
+
if (((_e = errorObj.error) === null || _e === void 0 ? void 0 : _e.code) === "BILLING_REQUIRED") {
|
|
98
|
+
throw new Error("A valid billing method is required to create API keys. Please add a payment method.");
|
|
103
99
|
}
|
|
104
100
|
}
|
|
105
101
|
throw new Error(JSON.stringify(error));
|
|
106
102
|
}
|
|
107
103
|
if (!data) {
|
|
108
|
-
throw new Error(
|
|
104
|
+
throw new Error("No data received from server");
|
|
109
105
|
}
|
|
110
106
|
return data;
|
|
111
107
|
}
|
|
112
108
|
catch (error) {
|
|
113
|
-
console.error(
|
|
109
|
+
console.error("Failed to create API key:", error);
|
|
114
110
|
// Add additional context for common issues
|
|
115
111
|
if (error instanceof Error) {
|
|
116
|
-
if (error.message.includes(
|
|
117
|
-
throw new Error(
|
|
112
|
+
if (error.message.includes("ECONNREFUSED")) {
|
|
113
|
+
throw new Error("Cannot connect to Berget API. Please check your internet connection.");
|
|
118
114
|
}
|
|
119
|
-
if (error.message.includes(
|
|
120
|
-
throw new Error(
|
|
115
|
+
if (error.message.includes("ENOTFOUND")) {
|
|
116
|
+
throw new Error("Cannot resolve Berget API hostname. Please check your DNS settings.");
|
|
121
117
|
}
|
|
122
|
-
if (error.message.includes(
|
|
123
|
-
|
|
124
|
-
throw new Error('Authentication failed. Please run `berget auth login` to log in again.');
|
|
118
|
+
if (error.message.includes("401") || error.message.includes("Unauthorized")) {
|
|
119
|
+
throw new Error("Authentication failed. Please run `berget auth login` to log in again.");
|
|
125
120
|
}
|
|
126
|
-
if (error.message.includes(
|
|
127
|
-
throw new Error(
|
|
121
|
+
if (error.message.includes("403")) {
|
|
122
|
+
throw new Error("Access forbidden. Your account may not have permission to create API keys.");
|
|
128
123
|
}
|
|
129
124
|
}
|
|
130
125
|
throw error;
|
|
@@ -138,7 +133,7 @@ class ApiKeyService {
|
|
|
138
133
|
delete(id) {
|
|
139
134
|
return __awaiter(this, void 0, void 0, function* () {
|
|
140
135
|
try {
|
|
141
|
-
const { error } = yield this.client.DELETE(
|
|
136
|
+
const { error } = yield this.client.DELETE("/v1/api-keys/{id}", {
|
|
142
137
|
params: { path: { id } },
|
|
143
138
|
});
|
|
144
139
|
if (error)
|
|
@@ -146,7 +141,7 @@ class ApiKeyService {
|
|
|
146
141
|
return true;
|
|
147
142
|
}
|
|
148
143
|
catch (error) {
|
|
149
|
-
console.error(
|
|
144
|
+
console.error("Failed to delete API key:", error);
|
|
150
145
|
throw error;
|
|
151
146
|
}
|
|
152
147
|
});
|
|
@@ -158,7 +153,7 @@ class ApiKeyService {
|
|
|
158
153
|
rotate(id) {
|
|
159
154
|
return __awaiter(this, void 0, void 0, function* () {
|
|
160
155
|
try {
|
|
161
|
-
const { data, error } = yield this.client.PUT(
|
|
156
|
+
const { data, error } = yield this.client.PUT("/v1/api-keys/{id}/rotate", {
|
|
162
157
|
params: { path: { id } },
|
|
163
158
|
});
|
|
164
159
|
if (error)
|
|
@@ -166,7 +161,7 @@ class ApiKeyService {
|
|
|
166
161
|
return data;
|
|
167
162
|
}
|
|
168
163
|
catch (error) {
|
|
169
|
-
console.error(
|
|
164
|
+
console.error("Failed to rotate API key:", error);
|
|
170
165
|
throw error;
|
|
171
166
|
}
|
|
172
167
|
});
|
|
@@ -178,7 +173,7 @@ class ApiKeyService {
|
|
|
178
173
|
describe(id) {
|
|
179
174
|
return __awaiter(this, void 0, void 0, function* () {
|
|
180
175
|
try {
|
|
181
|
-
const { data, error } = yield this.client.GET(
|
|
176
|
+
const { data, error } = yield this.client.GET("/v1/api-keys/{id}/usage", {
|
|
182
177
|
params: { path: { id } },
|
|
183
178
|
});
|
|
184
179
|
if (error)
|
|
@@ -186,7 +181,7 @@ class ApiKeyService {
|
|
|
186
181
|
return data;
|
|
187
182
|
}
|
|
188
183
|
catch (error) {
|
|
189
|
-
console.error(
|
|
184
|
+
console.error("Failed to get API key usage:", error);
|
|
190
185
|
throw error;
|
|
191
186
|
}
|
|
192
187
|
});
|