@inkeep/agents-manage-api 0.39.5 → 0.41.0
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/create-app.d.ts +21 -0
- package/dist/create-app.js +144 -0
- package/dist/data/agentFull.d.ts +15 -0
- package/dist/data/agentFull.js +84 -0
- package/dist/data/conversations.d.ts +77 -0
- package/dist/data/conversations.js +152 -0
- package/dist/data/db/dbClient.d.ts +6 -0
- package/dist/data/db/dbClient.js +17 -0
- package/dist/env.d.ts +61 -0
- package/dist/env.js +55 -0
- package/dist/factory.d.ts +17 -2
- package/dist/factory.js +35 -2
- package/dist/index.d.ts +163 -57
- package/dist/index.js +8 -5
- package/dist/initialization.d.ts +6 -0
- package/dist/initialization.js +79 -0
- package/dist/logger.d.ts +2 -0
- package/dist/logger.js +3 -0
- package/dist/middleware/auth.d.ts +24 -0
- package/dist/middleware/auth.js +64 -0
- package/dist/middleware/error-handler.d.ts +12 -0
- package/dist/middleware/error-handler.js +88 -0
- package/dist/middleware/require-permission.d.ts +19 -0
- package/dist/middleware/require-permission.js +80 -0
- package/dist/middleware/session-auth.d.ts +6 -0
- package/dist/middleware/session-auth.js +26 -0
- package/dist/middleware/tenant-access.d.ts +12 -0
- package/dist/middleware/tenant-access.js +54 -0
- package/dist/openapi.d.ts +7 -0
- package/dist/openapi.js +157 -0
- package/dist/routes/agent.d.ts +9 -0
- package/dist/routes/agent.js +244 -0
- package/dist/routes/agentFull.d.ts +9 -0
- package/dist/routes/agentFull.js +188 -0
- package/dist/routes/agentToolRelations.d.ts +9 -0
- package/dist/routes/agentToolRelations.js +284 -0
- package/dist/routes/apiKeys.d.ts +9 -0
- package/dist/routes/apiKeys.js +217 -0
- package/dist/routes/artifactComponents.d.ts +9 -0
- package/dist/routes/artifactComponents.js +206 -0
- package/dist/routes/cliAuth.d.ts +9 -0
- package/dist/routes/cliAuth.js +60 -0
- package/dist/routes/contextConfigs.d.ts +9 -0
- package/dist/routes/contextConfigs.js +175 -0
- package/dist/routes/conversations.d.ts +7 -0
- package/dist/routes/conversations.js +59 -0
- package/dist/routes/credentialStores.d.ts +9 -0
- package/dist/routes/credentialStores.js +81 -0
- package/dist/routes/credentials.d.ts +9 -0
- package/dist/routes/credentials.js +204 -0
- package/dist/routes/dataComponents.d.ts +9 -0
- package/dist/routes/dataComponents.js +188 -0
- package/dist/routes/externalAgents.d.ts +9 -0
- package/dist/routes/externalAgents.js +195 -0
- package/dist/routes/functionTools.d.ts +9 -0
- package/dist/routes/functionTools.js +252 -0
- package/dist/routes/functions.d.ts +9 -0
- package/dist/routes/functions.js +281 -0
- package/dist/routes/index.d.ts +7 -0
- package/dist/routes/index.js +54 -0
- package/dist/routes/invitations.d.ts +9 -0
- package/dist/routes/invitations.js +41 -0
- package/dist/routes/mcp.d.ts +7 -0
- package/dist/routes/mcp.js +45 -0
- package/dist/routes/mcpCatalog.d.ts +13 -0
- package/dist/routes/mcpCatalog.js +454 -0
- package/dist/routes/oauth.d.ts +10 -0
- package/dist/routes/oauth.js +314 -0
- package/dist/routes/playgroundToken.d.ts +9 -0
- package/dist/routes/playgroundToken.js +108 -0
- package/dist/routes/projectFull.d.ts +9 -0
- package/dist/routes/projectFull.js +193 -0
- package/dist/routes/projects.d.ts +9 -0
- package/dist/routes/projects.js +188 -0
- package/dist/routes/shared.d.ts +93 -0
- package/dist/routes/shared.js +44 -0
- package/dist/routes/signoz.d.ts +10 -0
- package/dist/routes/signoz.js +155 -0
- package/dist/routes/subAgentArtifactComponents.d.ts +9 -0
- package/dist/routes/subAgentArtifactComponents.js +198 -0
- package/dist/routes/subAgentDataComponents.d.ts +9 -0
- package/dist/routes/subAgentDataComponents.js +197 -0
- package/dist/routes/subAgentExternalAgentRelations.d.ts +9 -0
- package/dist/routes/subAgentExternalAgentRelations.js +213 -0
- package/dist/routes/subAgentRelations.d.ts +9 -0
- package/dist/routes/subAgentRelations.js +259 -0
- package/dist/routes/subAgentTeamAgentRelations.d.ts +9 -0
- package/dist/routes/subAgentTeamAgentRelations.js +213 -0
- package/dist/routes/subAgentToolRelations.d.ts +9 -0
- package/dist/routes/subAgentToolRelations.js +284 -0
- package/dist/routes/subAgents.d.ts +9 -0
- package/dist/routes/subAgents.js +210 -0
- package/dist/routes/thirdPartyMCPServers.d.ts +14 -0
- package/dist/routes/thirdPartyMCPServers.js +72 -0
- package/dist/routes/tools.d.ts +9 -0
- package/dist/routes/tools.js +256 -0
- package/dist/routes/userOrganizations.d.ts +9 -0
- package/dist/routes/userOrganizations.js +58 -0
- package/dist/sso-helpers.d.ts +20 -0
- package/dist/sso-helpers.js +51 -0
- package/dist/types/app.d.ts +47 -0
- package/dist/types/app.js +1 -0
- package/dist/utils/cors.d.ts +33 -0
- package/dist/utils/cors.js +98 -0
- package/dist/utils/oauth-service.d.ts +71 -0
- package/dist/utils/oauth-service.js +106 -0
- package/dist/utils/signoz-helpers.d.ts +9 -0
- package/dist/utils/signoz-helpers.js +33 -0
- package/dist/utils/temp-api-keys.d.ts +17 -0
- package/dist/utils/temp-api-keys.js +26 -0
- package/package.json +6 -13
- package/dist/chunk-VBDAOXYI.js +0 -832
- package/dist/chunk-VBDAOXYI.js.map +0 -1
- package/dist/factory2.d.ts +0 -41
- package/dist/factory2.d.ts.map +0 -1
- package/dist/factory2.js +0 -37085
- package/dist/factory2.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/nodefs.js +0 -27
- package/dist/nodefs.js.map +0 -1
- package/dist/opfs-ahp.js +0 -368
- package/dist/opfs-ahp.js.map +0 -1
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
import dbClient_default from "../data/db/dbClient.js";
|
|
2
|
+
import { requirePermission } from "../middleware/require-permission.js";
|
|
3
|
+
import { speakeasyOffsetLimitPagination } from "./shared.js";
|
|
4
|
+
import { OpenAPIHono, createRoute, z } from "@hono/zod-openapi";
|
|
5
|
+
import { ErrorResponseSchema, PaginationQueryParamsSchema, SubAgentToolRelationApiInsertSchema, SubAgentToolRelationApiUpdateSchema, SubAgentToolRelationListResponse, SubAgentToolRelationResponse, TenantProjectAgentIdParamsSchema, TenantProjectAgentParamsSchema, commonGetErrorResponses, createAgentToolRelation, createApiError, deleteAgentToolRelation, getAgentToolRelationByAgent, getAgentToolRelationById, getAgentToolRelationByTool, getAgentsForTool, listAgentToolRelations, updateAgentToolRelation } from "@inkeep/agents-core";
|
|
6
|
+
|
|
7
|
+
//#region src/routes/agentToolRelations.ts
|
|
8
|
+
const app = new OpenAPIHono();
|
|
9
|
+
app.use("/", async (c, next) => {
|
|
10
|
+
if (c.req.method === "POST") return requirePermission({ agent: ["create"] })(c, next);
|
|
11
|
+
return next();
|
|
12
|
+
});
|
|
13
|
+
app.use("/:id", async (c, next) => {
|
|
14
|
+
if (c.req.method === "PUT") return requirePermission({ agent: ["update"] })(c, next);
|
|
15
|
+
if (c.req.method === "DELETE") return requirePermission({ agent: ["delete"] })(c, next);
|
|
16
|
+
return next();
|
|
17
|
+
});
|
|
18
|
+
app.openapi(createRoute({
|
|
19
|
+
method: "get",
|
|
20
|
+
path: "/",
|
|
21
|
+
summary: "List Agent Tool Relations",
|
|
22
|
+
operationId: "list-agent-tool-relations",
|
|
23
|
+
tags: ["Agent Tool Relations"],
|
|
24
|
+
request: {
|
|
25
|
+
params: TenantProjectAgentParamsSchema,
|
|
26
|
+
query: PaginationQueryParamsSchema.extend({
|
|
27
|
+
subAgentId: z.string().optional(),
|
|
28
|
+
toolId: z.string().optional()
|
|
29
|
+
})
|
|
30
|
+
},
|
|
31
|
+
responses: {
|
|
32
|
+
200: {
|
|
33
|
+
description: "List of agent tool relations retrieved successfully",
|
|
34
|
+
content: { "application/json": { schema: SubAgentToolRelationListResponse } }
|
|
35
|
+
},
|
|
36
|
+
...commonGetErrorResponses
|
|
37
|
+
},
|
|
38
|
+
...speakeasyOffsetLimitPagination
|
|
39
|
+
}), async (c) => {
|
|
40
|
+
const { tenantId, projectId, agentId } = c.req.valid("param");
|
|
41
|
+
const { page, limit, subAgentId, toolId } = c.req.valid("query");
|
|
42
|
+
let result;
|
|
43
|
+
if (subAgentId) {
|
|
44
|
+
const dbResult = await getAgentToolRelationByAgent(dbClient_default)({
|
|
45
|
+
scopes: {
|
|
46
|
+
tenantId,
|
|
47
|
+
projectId,
|
|
48
|
+
agentId,
|
|
49
|
+
subAgentId
|
|
50
|
+
},
|
|
51
|
+
pagination: {
|
|
52
|
+
page,
|
|
53
|
+
limit
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
result = {
|
|
57
|
+
data: dbResult.data,
|
|
58
|
+
pagination: dbResult.pagination
|
|
59
|
+
};
|
|
60
|
+
} else if (toolId) {
|
|
61
|
+
const dbResult = await getAgentToolRelationByTool(dbClient_default)({
|
|
62
|
+
scopes: {
|
|
63
|
+
tenantId,
|
|
64
|
+
projectId,
|
|
65
|
+
agentId
|
|
66
|
+
},
|
|
67
|
+
toolId,
|
|
68
|
+
pagination: {
|
|
69
|
+
page,
|
|
70
|
+
limit
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
result = {
|
|
74
|
+
data: dbResult.data,
|
|
75
|
+
pagination: dbResult.pagination
|
|
76
|
+
};
|
|
77
|
+
} else {
|
|
78
|
+
const dbResult = await listAgentToolRelations(dbClient_default)({
|
|
79
|
+
scopes: {
|
|
80
|
+
tenantId,
|
|
81
|
+
projectId,
|
|
82
|
+
agentId
|
|
83
|
+
},
|
|
84
|
+
pagination: {
|
|
85
|
+
page,
|
|
86
|
+
limit
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
result = {
|
|
90
|
+
data: dbResult.data,
|
|
91
|
+
pagination: dbResult.pagination
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
return c.json(result);
|
|
95
|
+
});
|
|
96
|
+
app.openapi(createRoute({
|
|
97
|
+
method: "get",
|
|
98
|
+
path: "/{id}",
|
|
99
|
+
summary: "Get Agent Tool Relation",
|
|
100
|
+
operationId: "get-agent-tool-relation",
|
|
101
|
+
tags: ["Agent Tool Relations"],
|
|
102
|
+
request: { params: TenantProjectAgentIdParamsSchema },
|
|
103
|
+
responses: {
|
|
104
|
+
200: {
|
|
105
|
+
description: "Agent tool relation found",
|
|
106
|
+
content: { "application/json": { schema: SubAgentToolRelationResponse } }
|
|
107
|
+
},
|
|
108
|
+
...commonGetErrorResponses
|
|
109
|
+
}
|
|
110
|
+
}), async (c) => {
|
|
111
|
+
const { tenantId, projectId, agentId, id } = c.req.valid("param");
|
|
112
|
+
const agentToolRelation = await getAgentToolRelationById(dbClient_default)({
|
|
113
|
+
scopes: {
|
|
114
|
+
tenantId,
|
|
115
|
+
projectId,
|
|
116
|
+
agentId,
|
|
117
|
+
subAgentId: id
|
|
118
|
+
},
|
|
119
|
+
relationId: id
|
|
120
|
+
});
|
|
121
|
+
if (!agentToolRelation) throw createApiError({
|
|
122
|
+
code: "not_found",
|
|
123
|
+
message: "Agent tool relation not found"
|
|
124
|
+
});
|
|
125
|
+
return c.json({ data: agentToolRelation });
|
|
126
|
+
});
|
|
127
|
+
app.openapi(createRoute({
|
|
128
|
+
method: "get",
|
|
129
|
+
path: "/tool/{toolId}/agents",
|
|
130
|
+
summary: "Get Agents for Tool",
|
|
131
|
+
operationId: "get-agents-for-tool",
|
|
132
|
+
tags: ["Agent Tool Relations"],
|
|
133
|
+
request: {
|
|
134
|
+
params: TenantProjectAgentParamsSchema.extend({ toolId: z.string() }),
|
|
135
|
+
query: PaginationQueryParamsSchema
|
|
136
|
+
},
|
|
137
|
+
responses: {
|
|
138
|
+
200: {
|
|
139
|
+
description: "Agents for tool retrieved successfully",
|
|
140
|
+
content: { "application/json": { schema: SubAgentToolRelationListResponse } }
|
|
141
|
+
},
|
|
142
|
+
...commonGetErrorResponses
|
|
143
|
+
}
|
|
144
|
+
}), async (c) => {
|
|
145
|
+
const { tenantId, projectId, agentId, toolId } = c.req.valid("param");
|
|
146
|
+
const { page, limit } = c.req.valid("query");
|
|
147
|
+
const dbResult = await getAgentsForTool(dbClient_default)({
|
|
148
|
+
scopes: {
|
|
149
|
+
tenantId,
|
|
150
|
+
projectId,
|
|
151
|
+
agentId
|
|
152
|
+
},
|
|
153
|
+
toolId,
|
|
154
|
+
pagination: {
|
|
155
|
+
page,
|
|
156
|
+
limit
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
return c.json(dbResult);
|
|
160
|
+
});
|
|
161
|
+
app.openapi(createRoute({
|
|
162
|
+
method: "post",
|
|
163
|
+
path: "/",
|
|
164
|
+
summary: "Create Agent Tool Relation",
|
|
165
|
+
operationId: "create-agent-tool-relation",
|
|
166
|
+
tags: ["Agent Tool Relations"],
|
|
167
|
+
request: {
|
|
168
|
+
params: TenantProjectAgentParamsSchema,
|
|
169
|
+
body: { content: { "application/json": { schema: SubAgentToolRelationApiInsertSchema } } }
|
|
170
|
+
},
|
|
171
|
+
responses: {
|
|
172
|
+
201: {
|
|
173
|
+
description: "Agent tool relation created successfully",
|
|
174
|
+
content: { "application/json": { schema: SubAgentToolRelationResponse } }
|
|
175
|
+
},
|
|
176
|
+
...commonGetErrorResponses
|
|
177
|
+
}
|
|
178
|
+
}), async (c) => {
|
|
179
|
+
const { tenantId, projectId, agentId } = c.req.valid("param");
|
|
180
|
+
const body = c.req.valid("json");
|
|
181
|
+
if ((await listAgentToolRelations(dbClient_default)({
|
|
182
|
+
scopes: {
|
|
183
|
+
tenantId,
|
|
184
|
+
projectId,
|
|
185
|
+
agentId
|
|
186
|
+
},
|
|
187
|
+
pagination: { limit: 1e3 }
|
|
188
|
+
})).data.some((relation) => {
|
|
189
|
+
const typedRelation = relation;
|
|
190
|
+
return typedRelation.subAgentId === body.subAgentId && typedRelation.toolId === body.toolId;
|
|
191
|
+
})) throw createApiError({
|
|
192
|
+
code: "unprocessable_entity",
|
|
193
|
+
message: "Agent tool relation already exists"
|
|
194
|
+
});
|
|
195
|
+
try {
|
|
196
|
+
const agentToolRelation = await createAgentToolRelation(dbClient_default)({
|
|
197
|
+
scopes: {
|
|
198
|
+
tenantId,
|
|
199
|
+
projectId,
|
|
200
|
+
agentId
|
|
201
|
+
},
|
|
202
|
+
data: body
|
|
203
|
+
});
|
|
204
|
+
return c.json({ data: agentToolRelation }, 201);
|
|
205
|
+
} catch (error) {
|
|
206
|
+
if (error?.cause?.code === "23503") throw createApiError({
|
|
207
|
+
code: "bad_request",
|
|
208
|
+
message: "Invalid agent ID or tool ID - referenced entity does not exist"
|
|
209
|
+
});
|
|
210
|
+
throw error;
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
app.openapi(createRoute({
|
|
214
|
+
method: "put",
|
|
215
|
+
path: "/{id}",
|
|
216
|
+
summary: "Update Agent Tool Relation",
|
|
217
|
+
operationId: "update-agent-tool-relation",
|
|
218
|
+
tags: ["Agent Tool Relations"],
|
|
219
|
+
request: {
|
|
220
|
+
params: TenantProjectAgentIdParamsSchema,
|
|
221
|
+
body: { content: { "application/json": { schema: SubAgentToolRelationApiUpdateSchema } } }
|
|
222
|
+
},
|
|
223
|
+
responses: {
|
|
224
|
+
200: {
|
|
225
|
+
description: "Agent tool relation updated successfully",
|
|
226
|
+
content: { "application/json": { schema: SubAgentToolRelationResponse } }
|
|
227
|
+
},
|
|
228
|
+
...commonGetErrorResponses
|
|
229
|
+
}
|
|
230
|
+
}), async (c) => {
|
|
231
|
+
const { tenantId, projectId, agentId, id } = c.req.valid("param");
|
|
232
|
+
const body = await c.req.valid("json");
|
|
233
|
+
if (Object.keys(body).length === 0) throw createApiError({
|
|
234
|
+
code: "bad_request",
|
|
235
|
+
message: "No fields to update"
|
|
236
|
+
});
|
|
237
|
+
const updatedSubAgentToolRelation = await updateAgentToolRelation(dbClient_default)({
|
|
238
|
+
scopes: {
|
|
239
|
+
tenantId,
|
|
240
|
+
projectId,
|
|
241
|
+
agentId
|
|
242
|
+
},
|
|
243
|
+
relationId: id,
|
|
244
|
+
data: body
|
|
245
|
+
});
|
|
246
|
+
if (!updatedSubAgentToolRelation) throw createApiError({
|
|
247
|
+
code: "not_found",
|
|
248
|
+
message: "Agent tool relation not found"
|
|
249
|
+
});
|
|
250
|
+
return c.json({ data: updatedSubAgentToolRelation });
|
|
251
|
+
});
|
|
252
|
+
app.openapi(createRoute({
|
|
253
|
+
method: "delete",
|
|
254
|
+
path: "/{id}",
|
|
255
|
+
summary: "Delete Agent Tool Relation",
|
|
256
|
+
operationId: "delete-agent-tool-relation",
|
|
257
|
+
tags: ["Agent Tool Relations"],
|
|
258
|
+
request: { params: TenantProjectAgentIdParamsSchema },
|
|
259
|
+
responses: {
|
|
260
|
+
204: { description: "Agent tool relation deleted successfully" },
|
|
261
|
+
404: {
|
|
262
|
+
description: "Agent tool relation not found",
|
|
263
|
+
content: { "application/json": { schema: ErrorResponseSchema } }
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}), async (c) => {
|
|
267
|
+
const { tenantId, projectId, agentId, id } = c.req.valid("param");
|
|
268
|
+
if (!await deleteAgentToolRelation(dbClient_default)({
|
|
269
|
+
scopes: {
|
|
270
|
+
tenantId,
|
|
271
|
+
projectId,
|
|
272
|
+
agentId
|
|
273
|
+
},
|
|
274
|
+
relationId: id
|
|
275
|
+
})) throw createApiError({
|
|
276
|
+
code: "not_found",
|
|
277
|
+
message: "Agent tool relation not found"
|
|
278
|
+
});
|
|
279
|
+
return c.body(null, 204);
|
|
280
|
+
});
|
|
281
|
+
var agentToolRelations_default = app;
|
|
282
|
+
|
|
283
|
+
//#endregion
|
|
284
|
+
export { agentToolRelations_default as default };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { BaseAppVariables } from "../types/app.js";
|
|
2
|
+
import { OpenAPIHono } from "@hono/zod-openapi";
|
|
3
|
+
|
|
4
|
+
//#region src/routes/apiKeys.d.ts
|
|
5
|
+
declare const app: OpenAPIHono<{
|
|
6
|
+
Variables: BaseAppVariables;
|
|
7
|
+
}, {}, "/">;
|
|
8
|
+
//#endregion
|
|
9
|
+
export { app as default };
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import dbClient_default from "../data/db/dbClient.js";
|
|
2
|
+
import { requirePermission } from "../middleware/require-permission.js";
|
|
3
|
+
import { speakeasyOffsetLimitPagination } from "./shared.js";
|
|
4
|
+
import { OpenAPIHono, createRoute, z } from "@hono/zod-openapi";
|
|
5
|
+
import { ApiKeyApiCreationResponseSchema, ApiKeyApiInsertSchema, ApiKeyApiUpdateSchema, ApiKeyListResponse, ApiKeyResponse, ErrorResponseSchema, PaginationQueryParamsSchema, TenantProjectIdParamsSchema, TenantProjectParamsSchema, commonGetErrorResponses, createApiError, createApiKey, deleteApiKey, generateApiKey, getApiKeyById, listApiKeysPaginated, updateApiKey } from "@inkeep/agents-core";
|
|
6
|
+
|
|
7
|
+
//#region src/routes/apiKeys.ts
|
|
8
|
+
const app = new OpenAPIHono();
|
|
9
|
+
app.use("/", async (c, next) => {
|
|
10
|
+
if (c.req.method === "POST") return requirePermission({ api_key: ["create"] })(c, next);
|
|
11
|
+
return next();
|
|
12
|
+
});
|
|
13
|
+
app.use("/:id", async (c, next) => {
|
|
14
|
+
if (c.req.method === "PATCH") return requirePermission({ api_key: ["update"] })(c, next);
|
|
15
|
+
if (c.req.method === "DELETE") return requirePermission({ api_key: ["delete"] })(c, next);
|
|
16
|
+
return next();
|
|
17
|
+
});
|
|
18
|
+
app.openapi(createRoute({
|
|
19
|
+
method: "get",
|
|
20
|
+
path: "/",
|
|
21
|
+
summary: "List API Keys",
|
|
22
|
+
description: "List all API keys for a tenant with optional pagination",
|
|
23
|
+
operationId: "list-api-keys",
|
|
24
|
+
tags: ["API Keys"],
|
|
25
|
+
request: {
|
|
26
|
+
params: TenantProjectParamsSchema,
|
|
27
|
+
query: PaginationQueryParamsSchema.extend({ agentId: z.string().optional().describe("Filter by agent ID") })
|
|
28
|
+
},
|
|
29
|
+
responses: {
|
|
30
|
+
200: {
|
|
31
|
+
description: "List of API keys retrieved successfully",
|
|
32
|
+
content: { "application/json": { schema: ApiKeyListResponse } }
|
|
33
|
+
},
|
|
34
|
+
...commonGetErrorResponses
|
|
35
|
+
},
|
|
36
|
+
...speakeasyOffsetLimitPagination
|
|
37
|
+
}), async (c) => {
|
|
38
|
+
const { tenantId, projectId } = c.req.valid("param");
|
|
39
|
+
const page = Number(c.req.query("page")) || 1;
|
|
40
|
+
const limit = Math.min(Number(c.req.query("limit")) || 10, 100);
|
|
41
|
+
const agentId = c.req.query("agentId");
|
|
42
|
+
const result = await listApiKeysPaginated(dbClient_default)({
|
|
43
|
+
scopes: {
|
|
44
|
+
tenantId,
|
|
45
|
+
projectId
|
|
46
|
+
},
|
|
47
|
+
pagination: {
|
|
48
|
+
page,
|
|
49
|
+
limit
|
|
50
|
+
},
|
|
51
|
+
agentId
|
|
52
|
+
});
|
|
53
|
+
const sanitizedData = result.data.map(({ keyHash, tenantId: tenantId$1, projectId: projectId$1, ...apiKey }) => apiKey);
|
|
54
|
+
return c.json({
|
|
55
|
+
data: sanitizedData,
|
|
56
|
+
pagination: result.pagination
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
app.openapi(createRoute({
|
|
60
|
+
method: "get",
|
|
61
|
+
path: "/{id}",
|
|
62
|
+
summary: "Get API Key",
|
|
63
|
+
description: "Get a specific API key by ID (does not return the actual key)",
|
|
64
|
+
operationId: "get-api-key-by-id",
|
|
65
|
+
tags: ["API Keys"],
|
|
66
|
+
request: { params: TenantProjectIdParamsSchema },
|
|
67
|
+
responses: {
|
|
68
|
+
200: {
|
|
69
|
+
description: "API key found",
|
|
70
|
+
content: { "application/json": { schema: ApiKeyResponse } }
|
|
71
|
+
},
|
|
72
|
+
...commonGetErrorResponses
|
|
73
|
+
}
|
|
74
|
+
}), async (c) => {
|
|
75
|
+
const { tenantId, projectId, id } = c.req.valid("param");
|
|
76
|
+
const apiKey = await getApiKeyById(dbClient_default)({
|
|
77
|
+
scopes: {
|
|
78
|
+
tenantId,
|
|
79
|
+
projectId
|
|
80
|
+
},
|
|
81
|
+
id
|
|
82
|
+
});
|
|
83
|
+
if (!apiKey || apiKey === void 0) throw createApiError({
|
|
84
|
+
code: "not_found",
|
|
85
|
+
message: "API key not found"
|
|
86
|
+
});
|
|
87
|
+
const { keyHash: _, tenantId: __, projectId: ___, ...sanitizedApiKey } = apiKey;
|
|
88
|
+
return c.json({ data: {
|
|
89
|
+
...sanitizedApiKey,
|
|
90
|
+
lastUsedAt: sanitizedApiKey.lastUsedAt ?? null,
|
|
91
|
+
expiresAt: sanitizedApiKey.expiresAt ?? null
|
|
92
|
+
} });
|
|
93
|
+
});
|
|
94
|
+
app.openapi(createRoute({
|
|
95
|
+
method: "post",
|
|
96
|
+
path: "/",
|
|
97
|
+
summary: "Create API Key",
|
|
98
|
+
description: "Create a new API key for an agent. Returns the full key (shown only once).",
|
|
99
|
+
operationId: "create-api-key",
|
|
100
|
+
tags: ["API Keys"],
|
|
101
|
+
request: {
|
|
102
|
+
params: TenantProjectParamsSchema,
|
|
103
|
+
body: { content: { "application/json": { schema: ApiKeyApiInsertSchema } } }
|
|
104
|
+
},
|
|
105
|
+
responses: {
|
|
106
|
+
201: {
|
|
107
|
+
description: "API key created successfully",
|
|
108
|
+
content: { "application/json": { schema: ApiKeyApiCreationResponseSchema } }
|
|
109
|
+
},
|
|
110
|
+
...commonGetErrorResponses
|
|
111
|
+
}
|
|
112
|
+
}), async (c) => {
|
|
113
|
+
const { tenantId, projectId } = c.req.valid("param");
|
|
114
|
+
const body = c.req.valid("json");
|
|
115
|
+
const { key, ...keyDataWithoutKey } = await generateApiKey();
|
|
116
|
+
const insertData = {
|
|
117
|
+
tenantId,
|
|
118
|
+
projectId,
|
|
119
|
+
name: body.name,
|
|
120
|
+
agentId: body.agentId,
|
|
121
|
+
...keyDataWithoutKey,
|
|
122
|
+
expiresAt: body.expiresAt || void 0
|
|
123
|
+
};
|
|
124
|
+
try {
|
|
125
|
+
const { keyHash: _, tenantId: __, projectId: ___, ...sanitizedApiKey } = await createApiKey(dbClient_default)(insertData);
|
|
126
|
+
return c.json({ data: {
|
|
127
|
+
apiKey: {
|
|
128
|
+
...sanitizedApiKey,
|
|
129
|
+
lastUsedAt: sanitizedApiKey.lastUsedAt ?? null,
|
|
130
|
+
expiresAt: sanitizedApiKey.expiresAt ?? null
|
|
131
|
+
},
|
|
132
|
+
key
|
|
133
|
+
} }, 201);
|
|
134
|
+
} catch (error) {
|
|
135
|
+
if (error?.cause?.code === "23503") throw createApiError({
|
|
136
|
+
code: "bad_request",
|
|
137
|
+
message: "Invalid agentId - agent does not exist"
|
|
138
|
+
});
|
|
139
|
+
throw error;
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
app.openapi(createRoute({
|
|
143
|
+
method: "put",
|
|
144
|
+
path: "/{id}",
|
|
145
|
+
summary: "Update API Key",
|
|
146
|
+
description: "Update an API key (currently only expiration date can be changed)",
|
|
147
|
+
operationId: "update-api-key",
|
|
148
|
+
tags: ["API Keys"],
|
|
149
|
+
request: {
|
|
150
|
+
params: TenantProjectIdParamsSchema,
|
|
151
|
+
body: { content: { "application/json": { schema: ApiKeyApiUpdateSchema } } }
|
|
152
|
+
},
|
|
153
|
+
responses: {
|
|
154
|
+
200: {
|
|
155
|
+
description: "API key updated successfully",
|
|
156
|
+
content: { "application/json": { schema: ApiKeyResponse } }
|
|
157
|
+
},
|
|
158
|
+
...commonGetErrorResponses
|
|
159
|
+
}
|
|
160
|
+
}), async (c) => {
|
|
161
|
+
const { tenantId, projectId, id } = c.req.valid("param");
|
|
162
|
+
const body = c.req.valid("json");
|
|
163
|
+
const updatedApiKey = await updateApiKey(dbClient_default)({
|
|
164
|
+
scopes: {
|
|
165
|
+
tenantId,
|
|
166
|
+
projectId
|
|
167
|
+
},
|
|
168
|
+
id,
|
|
169
|
+
data: {
|
|
170
|
+
expiresAt: body.expiresAt,
|
|
171
|
+
name: body.name
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
if (!updatedApiKey) throw createApiError({
|
|
175
|
+
code: "not_found",
|
|
176
|
+
message: "API key not found"
|
|
177
|
+
});
|
|
178
|
+
const { keyHash: _, tenantId: __, projectId: ___, ...sanitizedApiKey } = updatedApiKey;
|
|
179
|
+
return c.json({ data: {
|
|
180
|
+
...sanitizedApiKey,
|
|
181
|
+
lastUsedAt: sanitizedApiKey.lastUsedAt ?? null,
|
|
182
|
+
expiresAt: sanitizedApiKey.expiresAt ?? null
|
|
183
|
+
} });
|
|
184
|
+
});
|
|
185
|
+
app.openapi(createRoute({
|
|
186
|
+
method: "delete",
|
|
187
|
+
path: "/{id}",
|
|
188
|
+
summary: "Delete API Key",
|
|
189
|
+
description: "Delete an API key permanently",
|
|
190
|
+
operationId: "delete-api-key",
|
|
191
|
+
tags: ["API Keys"],
|
|
192
|
+
request: { params: TenantProjectIdParamsSchema },
|
|
193
|
+
responses: {
|
|
194
|
+
204: { description: "API key deleted successfully" },
|
|
195
|
+
404: {
|
|
196
|
+
description: "API key not found",
|
|
197
|
+
content: { "application/json": { schema: ErrorResponseSchema } }
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}), async (c) => {
|
|
201
|
+
const { tenantId, projectId, id } = c.req.valid("param");
|
|
202
|
+
if (!await deleteApiKey(dbClient_default)({
|
|
203
|
+
scopes: {
|
|
204
|
+
tenantId,
|
|
205
|
+
projectId
|
|
206
|
+
},
|
|
207
|
+
id
|
|
208
|
+
})) throw createApiError({
|
|
209
|
+
code: "not_found",
|
|
210
|
+
message: "API key not found"
|
|
211
|
+
});
|
|
212
|
+
return c.body(null, 204);
|
|
213
|
+
});
|
|
214
|
+
var apiKeys_default = app;
|
|
215
|
+
|
|
216
|
+
//#endregion
|
|
217
|
+
export { apiKeys_default as default };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { BaseAppVariables } from "../types/app.js";
|
|
2
|
+
import { OpenAPIHono } from "@hono/zod-openapi";
|
|
3
|
+
|
|
4
|
+
//#region src/routes/artifactComponents.d.ts
|
|
5
|
+
declare const app: OpenAPIHono<{
|
|
6
|
+
Variables: BaseAppVariables;
|
|
7
|
+
}, {}, "/">;
|
|
8
|
+
//#endregion
|
|
9
|
+
export { app as default };
|