@inkeep/agents-api 0.42.0 → 0.43.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/.well-known/workflow/v1/manifest.debug.json +15 -15
- package/dist/.well-known/workflow/v1/step.cjs +45672 -44470
- package/dist/_virtual/rolldown_runtime.js +7 -0
- package/dist/createApp.js +40 -12
- package/dist/domains/evals/api/.well-known/workflow/v1/flow.d.ts +4 -0
- package/dist/domains/evals/api/.well-known/workflow/v1/flow.js +12 -0
- package/dist/domains/evals/api/.well-known/workflow/v1/step.d.ts +4 -0
- package/dist/domains/evals/api/.well-known/workflow/v1/step.js +12 -0
- package/dist/domains/evals/routes/datasetTriggers.d.ts +2 -2
- package/dist/domains/evals/routes/index.d.ts +2 -2
- package/dist/domains/evals/scripts/build-workflow.js +2 -2
- package/dist/domains/evals/workflow/routes.d.ts +2 -2
- package/dist/domains/evals/workflow/world.js +3 -2
- package/dist/domains/github/config.d.ts +14 -0
- package/dist/domains/github/config.js +47 -0
- package/dist/domains/github/index.d.ts +12 -0
- package/dist/domains/github/index.js +18 -0
- package/dist/domains/github/installation.d.ts +34 -0
- package/dist/domains/github/installation.js +172 -0
- package/dist/domains/github/jwks.d.ts +20 -0
- package/dist/domains/github/jwks.js +85 -0
- package/dist/domains/github/oidcToken.d.ts +22 -0
- package/dist/domains/github/oidcToken.js +140 -0
- package/dist/domains/github/routes/tokenExchange.d.ts +7 -0
- package/dist/domains/github/routes/tokenExchange.js +130 -0
- package/dist/domains/manage/index.js +0 -2
- package/dist/domains/manage/routes/agent.js +7 -4
- package/dist/domains/manage/routes/agentFull.js +9 -6
- package/dist/domains/manage/routes/apiKeys.js +1 -2
- package/dist/domains/manage/routes/artifactComponents.js +5 -5
- package/dist/domains/manage/routes/cliAuth.js +3 -3
- package/dist/domains/manage/routes/contextConfigs.js +5 -5
- package/dist/domains/manage/routes/conversations.d.ts +2 -2
- package/dist/domains/manage/routes/credentialStores.js +2 -2
- package/dist/domains/manage/routes/credentials.js +6 -7
- package/dist/domains/manage/routes/dataComponents.js +6 -7
- package/dist/domains/manage/routes/externalAgents.js +1 -2
- package/dist/domains/manage/routes/index.d.ts +2 -2
- package/dist/domains/manage/routes/index.js +4 -0
- package/dist/domains/manage/routes/invitations.js +1 -1
- package/dist/domains/manage/routes/mcp.d.ts +2 -2
- package/dist/domains/manage/routes/playgroundToken.js +1 -2
- package/dist/domains/manage/routes/projectFull.js +33 -11
- package/dist/domains/manage/routes/projectMembers.js +16 -35
- package/dist/domains/manage/routes/projectPermissions.js +17 -10
- package/dist/domains/manage/routes/projects.js +4 -5
- package/dist/domains/manage/routes/signoz.d.ts +2 -2
- package/dist/domains/manage/routes/signoz.js +6 -3
- package/dist/domains/manage/routes/subAgentArtifactComponents.js +5 -5
- package/dist/domains/manage/routes/subAgentDataComponents.js +5 -5
- package/dist/domains/manage/routes/subAgentExternalAgentRelations.js +5 -5
- package/dist/domains/manage/routes/subAgentFunctionTools.js +5 -5
- package/dist/domains/manage/routes/subAgentRelations.js +6 -6
- package/dist/domains/manage/routes/subAgentTeamAgentRelations.js +6 -6
- package/dist/domains/manage/routes/subAgentToolRelations.js +6 -6
- package/dist/domains/manage/routes/subAgents.js +5 -5
- package/dist/domains/manage/routes/tools.js +24 -3
- package/dist/domains/manage/routes/triggers.js +49 -24
- package/dist/domains/manage/routes/userOrganizations.js +4 -4
- package/dist/domains/manage/routes/{agentToolRelations.d.ts → userProjectMemberships.d.ts} +1 -1
- package/dist/domains/manage/routes/userProjectMemberships.js +45 -0
- package/dist/domains/mcp/routes/mcp.d.ts +7 -0
- package/dist/domains/mcp/routes/mcp.js +45 -0
- package/dist/domains/run/agents/Agent.d.ts +1 -0
- package/dist/domains/run/agents/Agent.js +207 -44
- package/dist/domains/run/agents/relationTools.d.ts +2 -2
- package/dist/domains/run/context/ContextFetcher.js +8 -7
- package/dist/domains/run/context/ContextResolver.js +1 -1
- package/dist/domains/run/handlers/executionHandler.js +143 -79
- package/dist/domains/run/routes/agents.js +1 -1
- package/dist/domains/run/routes/chat.js +47 -1
- package/dist/domains/run/routes/chatDataStream.js +107 -14
- package/dist/domains/run/routes/webhooks.js +40 -348
- package/dist/domains/run/services/AgentSession.d.ts +3 -0
- package/dist/domains/run/services/AgentSession.js +9 -0
- package/dist/domains/run/services/BaseCompressor.js +1 -1
- package/dist/domains/run/services/ToolApprovalUiBus.d.ts +28 -0
- package/dist/domains/run/services/ToolApprovalUiBus.js +44 -0
- package/dist/domains/run/services/TriggerService.d.ts +31 -0
- package/dist/domains/run/services/TriggerService.js +543 -0
- package/dist/domains/run/tools/NativeSandboxExecutor.d.ts +3 -2
- package/dist/domains/run/tools/NativeSandboxExecutor.js +76 -48
- package/dist/domains/run/tools/SandboxExecutorFactory.d.ts +11 -1
- package/dist/domains/run/tools/SandboxExecutorFactory.js +27 -3
- package/dist/domains/run/tools/VercelSandboxExecutor.d.ts +3 -11
- package/dist/domains/run/tools/VercelSandboxExecutor.js +137 -127
- package/dist/domains/run/utils/stream-helpers.d.ts +134 -0
- package/dist/domains/run/utils/stream-helpers.js +182 -0
- package/dist/domains/run/utils/token-estimator.d.ts +2 -2
- package/dist/factory.d.ts +24 -24
- package/dist/index.d.ts +24 -24
- package/dist/initialization.js +9 -2
- package/dist/middleware/cors.js +1 -1
- package/dist/middleware/manageAuth.d.ts +2 -2
- package/dist/middleware/projectAccess.d.ts +4 -11
- package/dist/middleware/projectAccess.js +1 -17
- package/dist/middleware/projectConfig.d.ts +3 -3
- package/dist/middleware/requirePermission.d.ts +2 -2
- package/dist/middleware/runAuth.d.ts +4 -4
- package/dist/middleware/sessionAuth.d.ts +3 -3
- package/dist/middleware/tenantAccess.d.ts +2 -2
- package/dist/middleware/tenantAccess.js +4 -4
- package/dist/middleware/tracing.d.ts +3 -3
- package/dist/openapi.d.ts +35 -1
- package/dist/openapi.js +39 -95
- package/dist/routes/healthChecks.d.ts +10 -0
- package/dist/routes/healthChecks.js +75 -0
- package/dist/types/app.d.ts +2 -0
- package/dist/utils/healthChecks.d.ts +8 -0
- package/dist/utils/healthChecks.js +38 -0
- package/dist/utils/signozHelpers.d.ts +2 -2
- package/dist/utils/signozHelpers.js +15 -3
- package/package.json +7 -9
- package/dist/domains/evals/services/startEvaluation.d.ts +0 -19
- package/dist/domains/evals/services/startEvaluation.js +0 -18
- package/dist/domains/index.d.ts +0 -4
- package/dist/domains/index.js +0 -5
- package/dist/domains/manage/routes/agentToolRelations.js +0 -289
- package/dist/domains/run/agents/ModelFactory.d.ts +0 -63
- package/dist/domains/run/agents/ModelFactory.js +0 -194
- package/dist/domains/run/data/agent.d.ts +0 -7
- package/dist/domains/run/data/agent.js +0 -67
- package/dist/domains/run/services/evaluationRunConfigMatcher.d.ts +0 -4
- package/dist/domains/run/services/evaluationRunConfigMatcher.js +0 -7
- package/dist/domains/run/utils/cleanup.d.ts +0 -21
- package/dist/domains/run/utils/cleanup.js +0 -59
- package/dist/utils/tempApiKeys.d.ts +0 -17
- package/dist/utils/tempApiKeys.js +0 -26
- package/dist/utils/workflowApiHelpers.d.ts +0 -1
- package/dist/utils/workflowApiHelpers.js +0 -1
|
@@ -19,7 +19,7 @@ app.openapi(createRoute({
|
|
|
19
19
|
path: "/",
|
|
20
20
|
summary: "List Sub Agent Team Agent Relations",
|
|
21
21
|
operationId: "list-sub-agent-team-agent-relations",
|
|
22
|
-
tags: ["
|
|
22
|
+
tags: ["SubAgents"],
|
|
23
23
|
request: {
|
|
24
24
|
params: TenantProjectAgentSubAgentParamsSchema,
|
|
25
25
|
query: PaginationQueryParamsSchema
|
|
@@ -52,7 +52,7 @@ app.openapi(createRoute({
|
|
|
52
52
|
}
|
|
53
53
|
});
|
|
54
54
|
return c.json(result);
|
|
55
|
-
} catch
|
|
55
|
+
} catch {
|
|
56
56
|
throw createApiError({
|
|
57
57
|
code: "internal_server_error",
|
|
58
58
|
message: "Failed to retrieve sub agent team agent relations"
|
|
@@ -64,7 +64,7 @@ app.openapi(createRoute({
|
|
|
64
64
|
path: "/{id}",
|
|
65
65
|
summary: "Get Sub Agent Team Agent Relation",
|
|
66
66
|
operationId: "get-sub-agent-team-agent-relation-by-id",
|
|
67
|
-
tags: ["
|
|
67
|
+
tags: ["SubAgents"],
|
|
68
68
|
request: { params: TenantProjectAgentSubAgentIdParamsSchema },
|
|
69
69
|
responses: {
|
|
70
70
|
200: {
|
|
@@ -96,7 +96,7 @@ app.openapi(createRoute({
|
|
|
96
96
|
path: "/",
|
|
97
97
|
summary: "Create Sub Agent Team Agent Relation",
|
|
98
98
|
operationId: "create-sub-agent-team-agent-relation",
|
|
99
|
-
tags: ["
|
|
99
|
+
tags: ["SubAgents"],
|
|
100
100
|
request: {
|
|
101
101
|
params: TenantProjectAgentSubAgentParamsSchema,
|
|
102
102
|
body: { content: { "application/json": { schema: SubAgentTeamAgentRelationApiInsertSchema } } }
|
|
@@ -147,7 +147,7 @@ app.openapi(createRoute({
|
|
|
147
147
|
path: "/{id}",
|
|
148
148
|
summary: "Update Sub Agent Team Agent Relation",
|
|
149
149
|
operationId: "update-sub-agent-team-agent-relation",
|
|
150
|
-
tags: ["
|
|
150
|
+
tags: ["SubAgents"],
|
|
151
151
|
request: {
|
|
152
152
|
params: TenantProjectAgentSubAgentIdParamsSchema,
|
|
153
153
|
body: { content: { "application/json": { schema: SubAgentTeamAgentRelationApiUpdateSchema } } }
|
|
@@ -184,7 +184,7 @@ app.openapi(createRoute({
|
|
|
184
184
|
path: "/{id}",
|
|
185
185
|
summary: "Delete Sub Agent Team Agent Relation",
|
|
186
186
|
operationId: "delete-sub-agent-team-agent-relation",
|
|
187
|
-
tags: ["
|
|
187
|
+
tags: ["SubAgents"],
|
|
188
188
|
request: { params: TenantProjectAgentSubAgentIdParamsSchema },
|
|
189
189
|
responses: {
|
|
190
190
|
204: { description: "Sub Agent Team Agent Relation deleted successfully" },
|
|
@@ -19,7 +19,7 @@ app.openapi(createRoute({
|
|
|
19
19
|
path: "/",
|
|
20
20
|
summary: "List SubAgent Tool Relations",
|
|
21
21
|
operationId: "list-subagent-tool-relations",
|
|
22
|
-
tags: ["
|
|
22
|
+
tags: ["SubAgents", "Tools"],
|
|
23
23
|
request: {
|
|
24
24
|
params: TenantProjectAgentParamsSchema,
|
|
25
25
|
query: PaginationQueryParamsSchema.extend({
|
|
@@ -98,7 +98,7 @@ app.openapi(createRoute({
|
|
|
98
98
|
path: "/{id}",
|
|
99
99
|
summary: "Get SubAgent Tool Relation",
|
|
100
100
|
operationId: "get-subagent-tool-relation",
|
|
101
|
-
tags: ["
|
|
101
|
+
tags: ["SubAgents", "Tools"],
|
|
102
102
|
request: { params: TenantProjectAgentIdParamsSchema },
|
|
103
103
|
responses: {
|
|
104
104
|
200: {
|
|
@@ -130,7 +130,7 @@ app.openapi(createRoute({
|
|
|
130
130
|
path: "/tool/{toolId}/sub-agents",
|
|
131
131
|
summary: "Get SubAgents for Tool",
|
|
132
132
|
operationId: "get-subagents-for-tool",
|
|
133
|
-
tags: ["
|
|
133
|
+
tags: ["SubAgents", "Tools"],
|
|
134
134
|
request: {
|
|
135
135
|
params: TenantProjectAgentParamsSchema.extend({ toolId: z.string() }),
|
|
136
136
|
query: PaginationQueryParamsSchema
|
|
@@ -165,7 +165,7 @@ app.openapi(createRoute({
|
|
|
165
165
|
path: "/",
|
|
166
166
|
summary: "Create SubAgent Tool Relation",
|
|
167
167
|
operationId: "create-subagent-tool-relation",
|
|
168
|
-
tags: ["
|
|
168
|
+
tags: ["SubAgents", "Tools"],
|
|
169
169
|
request: {
|
|
170
170
|
params: TenantProjectAgentParamsSchema,
|
|
171
171
|
body: { content: { "application/json": { schema: SubAgentToolRelationApiInsertSchema } } }
|
|
@@ -218,7 +218,7 @@ app.openapi(createRoute({
|
|
|
218
218
|
path: "/{id}",
|
|
219
219
|
summary: "Update SubAgent Tool Relation",
|
|
220
220
|
operationId: "update-subagent-tool-relation",
|
|
221
|
-
tags: ["
|
|
221
|
+
tags: ["SubAgents", "Tools"],
|
|
222
222
|
request: {
|
|
223
223
|
params: TenantProjectAgentIdParamsSchema,
|
|
224
224
|
body: { content: { "application/json": { schema: SubAgentToolRelationApiUpdateSchema } } }
|
|
@@ -258,7 +258,7 @@ app.openapi(createRoute({
|
|
|
258
258
|
path: "/{id}",
|
|
259
259
|
summary: "Delete SubAgent Tool Relation",
|
|
260
260
|
operationId: "delete-subagent-tool-relation",
|
|
261
|
-
tags: ["
|
|
261
|
+
tags: ["SubAgents", "Tools"],
|
|
262
262
|
request: { params: TenantProjectAgentIdParamsSchema },
|
|
263
263
|
responses: {
|
|
264
264
|
204: { description: "SubAgent tool relation deleted successfully" },
|
|
@@ -20,7 +20,7 @@ app.openapi(createRoute({
|
|
|
20
20
|
path: "/",
|
|
21
21
|
summary: "List SubAgents",
|
|
22
22
|
operationId: "list-subagents",
|
|
23
|
-
tags: ["
|
|
23
|
+
tags: ["SubAgents"],
|
|
24
24
|
request: {
|
|
25
25
|
params: TenantProjectAgentParamsSchema,
|
|
26
26
|
query: PaginationQueryParamsSchema
|
|
@@ -62,7 +62,7 @@ app.openapi(createRoute({
|
|
|
62
62
|
path: "/{id}",
|
|
63
63
|
summary: "Get SubAgent",
|
|
64
64
|
operationId: "get-subagent-by-id",
|
|
65
|
-
tags: ["
|
|
65
|
+
tags: ["SubAgents"],
|
|
66
66
|
request: { params: TenantProjectAgentIdParamsSchema },
|
|
67
67
|
responses: {
|
|
68
68
|
200: {
|
|
@@ -96,7 +96,7 @@ app.openapi(createRoute({
|
|
|
96
96
|
path: "/",
|
|
97
97
|
summary: "Create SubAgent",
|
|
98
98
|
operationId: "create-subagent",
|
|
99
|
-
tags: ["
|
|
99
|
+
tags: ["SubAgents"],
|
|
100
100
|
request: {
|
|
101
101
|
params: TenantProjectAgentParamsSchema,
|
|
102
102
|
body: { content: { "application/json": { schema: SubAgentApiInsertSchema } } }
|
|
@@ -129,7 +129,7 @@ app.openapi(createRoute({
|
|
|
129
129
|
path: "/{id}",
|
|
130
130
|
summary: "Update SubAgent",
|
|
131
131
|
operationId: "update-subagent",
|
|
132
|
-
tags: ["
|
|
132
|
+
tags: ["SubAgents"],
|
|
133
133
|
request: {
|
|
134
134
|
params: TenantProjectAgentIdParamsSchema,
|
|
135
135
|
body: { content: { "application/json": { schema: SubAgentApiUpdateSchema } } }
|
|
@@ -168,7 +168,7 @@ app.openapi(createRoute({
|
|
|
168
168
|
path: "/{id}",
|
|
169
169
|
summary: "Delete SubAgent",
|
|
170
170
|
operationId: "delete-subagent",
|
|
171
|
-
tags: ["
|
|
171
|
+
tags: ["SubAgents"],
|
|
172
172
|
request: { params: TenantProjectAgentIdParamsSchema },
|
|
173
173
|
responses: {
|
|
174
174
|
204: { description: "SubAgent deleted successfully" },
|
|
@@ -2,7 +2,8 @@ import { getLogger as getLogger$1 } from "../../../logger.js";
|
|
|
2
2
|
import { requireProjectPermission } from "../../../middleware/projectAccess.js";
|
|
3
3
|
import { speakeasyOffsetLimitPagination } from "../../../utils/speakeasy.js";
|
|
4
4
|
import { OpenAPIHono, createRoute } from "@hono/zod-openapi";
|
|
5
|
-
import { CredentialReferenceApiSelectSchema, CredentialReferenceResponse, McpToolListResponse, McpToolResponse, PaginationQueryParamsSchema, TenantProjectIdParamsSchema, TenantProjectParamsSchema, ToolApiInsertSchema, ToolApiUpdateSchema, ToolStatusSchema, commonGetErrorResponses, createApiError, createTool, dbResultToMcpTool, deleteTool, generateId, getToolById, getUserScopedCredentialReference, listTools, updateTool } from "@inkeep/agents-core";
|
|
5
|
+
import { CredentialReferenceApiSelectSchema, CredentialReferenceResponse, McpToolListResponse, McpToolResponse, PaginationQueryParamsSchema, TenantProjectIdParamsSchema, TenantProjectParamsSchema, ToolApiInsertSchema, ToolApiUpdateSchema, ToolStatusSchema, commonGetErrorResponses, createApiError, createTool, dbResultToMcpTool, dbResultToMcpToolSkeleton, deleteTool, generateId, getToolById, getUserScopedCredentialReference, listTools, updateTool } from "@inkeep/agents-core";
|
|
6
|
+
import { z as z$1 } from "zod";
|
|
6
7
|
|
|
7
8
|
//#region src/domains/manage/routes/tools.ts
|
|
8
9
|
const logger = getLogger$1("tools");
|
|
@@ -24,7 +25,10 @@ app.openapi(createRoute({
|
|
|
24
25
|
tags: ["Tools"],
|
|
25
26
|
request: {
|
|
26
27
|
params: TenantProjectParamsSchema,
|
|
27
|
-
query: PaginationQueryParamsSchema.extend({
|
|
28
|
+
query: PaginationQueryParamsSchema.extend({
|
|
29
|
+
status: ToolStatusSchema.optional(),
|
|
30
|
+
skipDiscovery: z$1.enum(["true", "false"]).optional().transform((val) => val === "true").describe("Skip MCP server discovery for faster response. Status will be \"unknown\".")
|
|
31
|
+
})
|
|
28
32
|
},
|
|
29
33
|
responses: {
|
|
30
34
|
200: {
|
|
@@ -37,10 +41,27 @@ app.openapi(createRoute({
|
|
|
37
41
|
}), async (c) => {
|
|
38
42
|
const db = c.get("db");
|
|
39
43
|
const { tenantId, projectId } = c.req.valid("param");
|
|
40
|
-
const { page, limit, status } = c.req.valid("query");
|
|
44
|
+
const { page, limit, status, skipDiscovery } = c.req.valid("query");
|
|
41
45
|
let result;
|
|
42
46
|
const credentialStores = c.get("credentialStores");
|
|
43
47
|
const userId = c.get("userId");
|
|
48
|
+
if (skipDiscovery) {
|
|
49
|
+
const dbResult = await listTools(db)({
|
|
50
|
+
scopes: {
|
|
51
|
+
tenantId,
|
|
52
|
+
projectId
|
|
53
|
+
},
|
|
54
|
+
pagination: {
|
|
55
|
+
page,
|
|
56
|
+
limit
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
result = {
|
|
60
|
+
data: dbResult.data.map((tool) => dbResultToMcpToolSkeleton(tool)),
|
|
61
|
+
pagination: dbResult.pagination
|
|
62
|
+
};
|
|
63
|
+
return c.json(result);
|
|
64
|
+
}
|
|
44
65
|
if (status) {
|
|
45
66
|
const dbResult = await listTools(db)({
|
|
46
67
|
scopes: {
|
|
@@ -4,21 +4,11 @@ import runDbClient_default from "../../../data/db/runDbClient.js";
|
|
|
4
4
|
import { requireProjectPermission } from "../../../middleware/projectAccess.js";
|
|
5
5
|
import { speakeasyOffsetLimitPagination } from "../../../utils/speakeasy.js";
|
|
6
6
|
import { OpenAPIHono, createRoute, z } from "@hono/zod-openapi";
|
|
7
|
-
import { PaginationQueryParamsSchema, TenantProjectAgentIdParamsSchema, TenantProjectAgentParamsSchema, TriggerApiInsertSchema,
|
|
7
|
+
import { PaginationQueryParamsSchema, TenantProjectAgentIdParamsSchema, TenantProjectAgentParamsSchema, TriggerApiInsertSchema, TriggerApiUpdateSchema, TriggerInvocationListResponse, TriggerInvocationResponse, TriggerInvocationStatusEnum, TriggerWithWebhookUrlListResponse, TriggerWithWebhookUrlResponse, commonGetErrorResponses, createApiError, createTrigger, deleteTrigger, generateId, getCredentialReference, getTriggerById, getTriggerInvocationById, hashAuthenticationHeaders, listTriggerInvocationsPaginated, listTriggersPaginated, updateTrigger } from "@inkeep/agents-core";
|
|
8
8
|
|
|
9
9
|
//#region src/domains/manage/routes/triggers.ts
|
|
10
10
|
const logger = getLogger$1("triggers");
|
|
11
11
|
const app = new OpenAPIHono();
|
|
12
|
-
const TriggerResponse = z.object({ data: TriggerApiSelectSchema.extend({ webhookUrl: z.string().describe("Fully qualified webhook URL for this trigger") }) });
|
|
13
|
-
const TriggerListResponse = z.object({
|
|
14
|
-
data: z.array(TriggerApiSelectSchema.extend({ webhookUrl: z.string().describe("Fully qualified webhook URL for this trigger") })),
|
|
15
|
-
pagination: z.object({
|
|
16
|
-
page: z.number(),
|
|
17
|
-
limit: z.number(),
|
|
18
|
-
total: z.number(),
|
|
19
|
-
pages: z.number()
|
|
20
|
-
})
|
|
21
|
-
});
|
|
22
12
|
app.use("/", async (c, next) => {
|
|
23
13
|
if (c.req.method === "POST") return requireProjectPermission("edit")(c, next);
|
|
24
14
|
return next();
|
|
@@ -51,7 +41,7 @@ app.openapi(createRoute({
|
|
|
51
41
|
responses: {
|
|
52
42
|
200: {
|
|
53
43
|
description: "List of triggers retrieved successfully",
|
|
54
|
-
content: { "application/json": { schema:
|
|
44
|
+
content: { "application/json": { schema: TriggerWithWebhookUrlListResponse } }
|
|
55
45
|
},
|
|
56
46
|
...commonGetErrorResponses
|
|
57
47
|
},
|
|
@@ -103,7 +93,7 @@ app.openapi(createRoute({
|
|
|
103
93
|
responses: {
|
|
104
94
|
200: {
|
|
105
95
|
description: "Trigger found",
|
|
106
|
-
content: { "application/json": { schema:
|
|
96
|
+
content: { "application/json": { schema: TriggerWithWebhookUrlResponse } }
|
|
107
97
|
},
|
|
108
98
|
...commonGetErrorResponses
|
|
109
99
|
}
|
|
@@ -151,7 +141,7 @@ app.openapi(createRoute({
|
|
|
151
141
|
responses: {
|
|
152
142
|
201: {
|
|
153
143
|
description: "Trigger created successfully",
|
|
154
|
-
content: { "application/json": { schema:
|
|
144
|
+
content: { "application/json": { schema: TriggerWithWebhookUrlResponse } }
|
|
155
145
|
},
|
|
156
146
|
...commonGetErrorResponses
|
|
157
147
|
}
|
|
@@ -161,12 +151,29 @@ app.openapi(createRoute({
|
|
|
161
151
|
const body = c.req.valid("json");
|
|
162
152
|
const apiBaseUrl = env.INKEEP_AGENTS_API_URL;
|
|
163
153
|
const id = body.id || generateId();
|
|
164
|
-
logger.
|
|
154
|
+
logger.debug({
|
|
165
155
|
tenantId,
|
|
166
156
|
projectId,
|
|
167
157
|
agentId,
|
|
168
158
|
triggerId: id
|
|
169
159
|
}, "Creating trigger");
|
|
160
|
+
if (body.signingSecretCredentialReferenceId) {
|
|
161
|
+
const credentialRef = await getCredentialReference(db)({
|
|
162
|
+
scopes: {
|
|
163
|
+
tenantId,
|
|
164
|
+
projectId
|
|
165
|
+
},
|
|
166
|
+
id: body.signingSecretCredentialReferenceId
|
|
167
|
+
});
|
|
168
|
+
if (!credentialRef) throw createApiError({
|
|
169
|
+
code: "bad_request",
|
|
170
|
+
message: `Credential reference not found: ${body.signingSecretCredentialReferenceId}`
|
|
171
|
+
});
|
|
172
|
+
if (credentialRef.userId) throw createApiError({
|
|
173
|
+
code: "bad_request",
|
|
174
|
+
message: "Only project-scoped credentials can be attached to triggers. User-scoped credentials are not allowed."
|
|
175
|
+
});
|
|
176
|
+
}
|
|
170
177
|
let hashedAuthentication;
|
|
171
178
|
const authInput = body.authentication;
|
|
172
179
|
if (authInput?.headers && authInput.headers.length > 0) hashedAuthentication = { headers: await hashAuthenticationHeaders(authInput.headers) };
|
|
@@ -182,7 +189,8 @@ app.openapi(createRoute({
|
|
|
182
189
|
outputTransform: body.outputTransform,
|
|
183
190
|
messageTemplate: body.messageTemplate,
|
|
184
191
|
authentication: hashedAuthentication,
|
|
185
|
-
|
|
192
|
+
signingSecretCredentialReferenceId: body.signingSecretCredentialReferenceId,
|
|
193
|
+
signatureVerification: body.signatureVerification
|
|
186
194
|
});
|
|
187
195
|
const { tenantId: _tid, projectId: _pid, agentId: _aid, ...triggerWithoutScopes } = trigger;
|
|
188
196
|
return c.json({ data: {
|
|
@@ -212,7 +220,7 @@ app.openapi(createRoute({
|
|
|
212
220
|
responses: {
|
|
213
221
|
200: {
|
|
214
222
|
description: "Trigger updated successfully",
|
|
215
|
-
content: { "application/json": { schema:
|
|
223
|
+
content: { "application/json": { schema: TriggerWithWebhookUrlResponse } }
|
|
216
224
|
},
|
|
217
225
|
...commonGetErrorResponses
|
|
218
226
|
}
|
|
@@ -221,16 +229,33 @@ app.openapi(createRoute({
|
|
|
221
229
|
const { tenantId, projectId, agentId, id } = c.req.valid("param");
|
|
222
230
|
const body = c.req.valid("json");
|
|
223
231
|
const apiBaseUrl = env.INKEEP_AGENTS_API_URL;
|
|
224
|
-
if (!(body.name !== void 0 || body.description !== void 0 || body.enabled !== void 0 || body.inputSchema !== void 0 || body.outputTransform !== void 0 || body.messageTemplate !== void 0 || body.authentication !== void 0 || body.
|
|
232
|
+
if (!(body.name !== void 0 || body.description !== void 0 || body.enabled !== void 0 || body.inputSchema !== void 0 || body.outputTransform !== void 0 || body.messageTemplate !== void 0 || body.authentication !== void 0 || body.signingSecretCredentialReferenceId !== void 0 || body.signatureVerification !== void 0)) throw createApiError({
|
|
225
233
|
code: "bad_request",
|
|
226
234
|
message: "No fields to update"
|
|
227
235
|
});
|
|
228
|
-
logger.
|
|
236
|
+
logger.debug({
|
|
229
237
|
tenantId,
|
|
230
238
|
projectId,
|
|
231
239
|
agentId,
|
|
232
240
|
triggerId: id
|
|
233
241
|
}, "Updating trigger");
|
|
242
|
+
if (body.signingSecretCredentialReferenceId) {
|
|
243
|
+
const credentialRef = await getCredentialReference(db)({
|
|
244
|
+
scopes: {
|
|
245
|
+
tenantId,
|
|
246
|
+
projectId
|
|
247
|
+
},
|
|
248
|
+
id: body.signingSecretCredentialReferenceId
|
|
249
|
+
});
|
|
250
|
+
if (!credentialRef) throw createApiError({
|
|
251
|
+
code: "bad_request",
|
|
252
|
+
message: `Credential reference not found: ${body.signingSecretCredentialReferenceId}`
|
|
253
|
+
});
|
|
254
|
+
if (credentialRef.userId) throw createApiError({
|
|
255
|
+
code: "bad_request",
|
|
256
|
+
message: "Only project-scoped credentials can be attached to triggers. User-scoped credentials are not allowed."
|
|
257
|
+
});
|
|
258
|
+
}
|
|
234
259
|
let hashedAuthentication;
|
|
235
260
|
const authInput = body.authentication;
|
|
236
261
|
if (authInput?.headers && authInput.headers.length > 0) {
|
|
@@ -259,7 +284,6 @@ app.openapi(createRoute({
|
|
|
259
284
|
}
|
|
260
285
|
hashedAuthentication = hashedHeaders.length > 0 ? { headers: hashedHeaders } : void 0;
|
|
261
286
|
} else if (body.authentication !== void 0) hashedAuthentication = body.authentication;
|
|
262
|
-
const signingSecretUpdate = body.keepExistingSigningSecret ? void 0 : body.signingSecret;
|
|
263
287
|
const updatedTrigger = await updateTrigger(db)({
|
|
264
288
|
scopes: {
|
|
265
289
|
tenantId,
|
|
@@ -275,7 +299,8 @@ app.openapi(createRoute({
|
|
|
275
299
|
outputTransform: body.outputTransform,
|
|
276
300
|
messageTemplate: body.messageTemplate,
|
|
277
301
|
authentication: hashedAuthentication,
|
|
278
|
-
|
|
302
|
+
signingSecretCredentialReferenceId: body.signingSecretCredentialReferenceId,
|
|
303
|
+
signatureVerification: body.signatureVerification
|
|
279
304
|
}
|
|
280
305
|
});
|
|
281
306
|
if (!updatedTrigger) throw createApiError({
|
|
@@ -311,7 +336,7 @@ app.openapi(createRoute({
|
|
|
311
336
|
}), async (c) => {
|
|
312
337
|
const db = c.get("db");
|
|
313
338
|
const { tenantId, projectId, agentId, id } = c.req.valid("param");
|
|
314
|
-
logger.
|
|
339
|
+
logger.debug({
|
|
315
340
|
tenantId,
|
|
316
341
|
projectId,
|
|
317
342
|
agentId,
|
|
@@ -372,7 +397,7 @@ app.openapi(createRoute({
|
|
|
372
397
|
}), async (c) => {
|
|
373
398
|
const { tenantId, projectId, agentId, id: triggerId } = c.req.valid("param");
|
|
374
399
|
const { page, limit, status, from, to } = c.req.valid("query");
|
|
375
|
-
logger.
|
|
400
|
+
logger.debug({
|
|
376
401
|
tenantId,
|
|
377
402
|
projectId,
|
|
378
403
|
agentId,
|
|
@@ -426,7 +451,7 @@ app.openapi(createRoute({
|
|
|
426
451
|
}
|
|
427
452
|
}), async (c) => {
|
|
428
453
|
const { tenantId, projectId, agentId, id: triggerId, invocationId } = c.req.valid("param");
|
|
429
|
-
logger.
|
|
454
|
+
logger.debug({
|
|
430
455
|
tenantId,
|
|
431
456
|
projectId,
|
|
432
457
|
agentId,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import runDbClient_default from "../../../data/db/runDbClient.js";
|
|
2
2
|
import { OpenAPIHono, createRoute, z } from "@hono/zod-openapi";
|
|
3
|
-
import { addUserToOrganization,
|
|
3
|
+
import { addUserToOrganization, getUserOrganizationsFromDb } from "@inkeep/agents-core";
|
|
4
4
|
import { AddUserToOrganizationRequestSchema, AddUserToOrganizationResponseSchema, UserOrganizationsResponseSchema } from "@inkeep/agents-core/auth/validation";
|
|
5
5
|
|
|
6
6
|
//#region src/domains/manage/routes/userOrganizations.ts
|
|
@@ -8,7 +8,7 @@ const userOrganizationsRoutes = new OpenAPIHono();
|
|
|
8
8
|
userOrganizationsRoutes.openapi(createRoute({
|
|
9
9
|
method: "get",
|
|
10
10
|
path: "/",
|
|
11
|
-
tags: ["
|
|
11
|
+
tags: ["User Organizations"],
|
|
12
12
|
summary: "List user organizations",
|
|
13
13
|
description: "Get all organizations associated with a user",
|
|
14
14
|
request: { params: z.object({ userId: z.string().describe("User ID") }) },
|
|
@@ -18,7 +18,7 @@ userOrganizationsRoutes.openapi(createRoute({
|
|
|
18
18
|
} }
|
|
19
19
|
}), async (c) => {
|
|
20
20
|
const { userId } = c.req.valid("param");
|
|
21
|
-
const userOrganizations = (await
|
|
21
|
+
const userOrganizations = (await getUserOrganizationsFromDb(runDbClient_default)(userId)).map((org) => ({
|
|
22
22
|
...org,
|
|
23
23
|
createdAt: org.createdAt.toISOString()
|
|
24
24
|
}));
|
|
@@ -27,7 +27,7 @@ userOrganizationsRoutes.openapi(createRoute({
|
|
|
27
27
|
userOrganizationsRoutes.openapi(createRoute({
|
|
28
28
|
method: "post",
|
|
29
29
|
path: "/",
|
|
30
|
-
tags: ["
|
|
30
|
+
tags: ["User Organizations"],
|
|
31
31
|
summary: "Add user to organization",
|
|
32
32
|
description: "Associate a user with an organization",
|
|
33
33
|
request: {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ManageAppVariables } from "../../../types/app.js";
|
|
2
2
|
import { OpenAPIHono } from "@hono/zod-openapi";
|
|
3
3
|
|
|
4
|
-
//#region src/domains/manage/routes/
|
|
4
|
+
//#region src/domains/manage/routes/userProjectMemberships.d.ts
|
|
5
5
|
declare const app: OpenAPIHono<{
|
|
6
6
|
Variables: ManageAppVariables;
|
|
7
7
|
}, {}, "/">;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { OpenAPIHono, createRoute, z } from "@hono/zod-openapi";
|
|
2
|
+
import { ProjectRoles, commonGetErrorResponses, isAuthzEnabled, listUserProjectMembershipsInSpiceDb } from "@inkeep/agents-core";
|
|
3
|
+
|
|
4
|
+
//#region src/domains/manage/routes/userProjectMemberships.ts
|
|
5
|
+
const app = new OpenAPIHono();
|
|
6
|
+
const projectRoleEnum = z.enum([
|
|
7
|
+
ProjectRoles.ADMIN,
|
|
8
|
+
ProjectRoles.MEMBER,
|
|
9
|
+
ProjectRoles.VIEWER
|
|
10
|
+
]);
|
|
11
|
+
const UserProjectMembershipParamsSchema = z.object({
|
|
12
|
+
tenantId: z.string(),
|
|
13
|
+
userId: z.string()
|
|
14
|
+
});
|
|
15
|
+
app.openapi(createRoute({
|
|
16
|
+
method: "get",
|
|
17
|
+
path: "/",
|
|
18
|
+
summary: "List User Project Memberships",
|
|
19
|
+
description: "List all projects a user has explicit access to and their role in each. Requires authz to be enabled.",
|
|
20
|
+
operationId: "list-user-project-memberships",
|
|
21
|
+
tags: ["User Project Memberships"],
|
|
22
|
+
request: { params: UserProjectMembershipParamsSchema },
|
|
23
|
+
responses: {
|
|
24
|
+
200: {
|
|
25
|
+
description: "List of project memberships for the user",
|
|
26
|
+
content: { "application/json": { schema: z.object({ data: z.array(z.object({
|
|
27
|
+
projectId: z.string(),
|
|
28
|
+
role: projectRoleEnum
|
|
29
|
+
})) }) } }
|
|
30
|
+
},
|
|
31
|
+
...commonGetErrorResponses
|
|
32
|
+
}
|
|
33
|
+
}), async (c) => {
|
|
34
|
+
const { tenantId, userId } = c.req.valid("param");
|
|
35
|
+
if (!isAuthzEnabled()) return c.json({ data: [] });
|
|
36
|
+
const memberships = await listUserProjectMembershipsInSpiceDb({
|
|
37
|
+
tenantId,
|
|
38
|
+
userId
|
|
39
|
+
});
|
|
40
|
+
return c.json({ data: memberships });
|
|
41
|
+
});
|
|
42
|
+
var userProjectMemberships_default = app;
|
|
43
|
+
|
|
44
|
+
//#endregion
|
|
45
|
+
export { userProjectMemberships_default as default };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { env } from "../../../env.js";
|
|
2
|
+
import { Hono } from "hono";
|
|
3
|
+
import { StreamableHTTPTransport } from "@hono/mcp";
|
|
4
|
+
import { HeaderForwardingHook, InkeepAgentsCore, SDKHooks, createConsoleLogger, createMCPServer } from "@inkeep/agents-mcp";
|
|
5
|
+
|
|
6
|
+
//#region src/domains/mcp/routes/mcp.ts
|
|
7
|
+
const app = new Hono();
|
|
8
|
+
/**
|
|
9
|
+
* Headers to forward from incoming requests to downstream API calls.
|
|
10
|
+
* x-forwarded-cookie is mapped to cookie for browser compatibility
|
|
11
|
+
* (browsers don't allow setting Cookie header directly).
|
|
12
|
+
*/
|
|
13
|
+
const FORWARDED_HEADERS = [
|
|
14
|
+
"x-forwarded-cookie",
|
|
15
|
+
"authorization",
|
|
16
|
+
"cookie"
|
|
17
|
+
];
|
|
18
|
+
app.all("/", async (c) => {
|
|
19
|
+
const transport = new StreamableHTTPTransport();
|
|
20
|
+
const noOpLogger = createConsoleLogger("error");
|
|
21
|
+
const headersToForward = {};
|
|
22
|
+
for (const headerName of FORWARDED_HEADERS) {
|
|
23
|
+
const value = c.req.header(headerName);
|
|
24
|
+
if (value) headersToForward[headerName] = value;
|
|
25
|
+
}
|
|
26
|
+
if (headersToForward["x-forwarded-cookie"] && !headersToForward.cookie) headersToForward.cookie = headersToForward["x-forwarded-cookie"];
|
|
27
|
+
const createSDKWithHeaders = () => {
|
|
28
|
+
const hooks = new SDKHooks();
|
|
29
|
+
hooks.registerBeforeRequestHook(new HeaderForwardingHook(headersToForward));
|
|
30
|
+
return new InkeepAgentsCore({
|
|
31
|
+
serverURL: env.INKEEP_AGENTS_API_URL,
|
|
32
|
+
hooks
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
await createMCPServer({
|
|
36
|
+
logger: noOpLogger,
|
|
37
|
+
serverURL: env.INKEEP_AGENTS_API_URL,
|
|
38
|
+
getSDK: createSDKWithHeaders
|
|
39
|
+
}).server.connect(transport);
|
|
40
|
+
return transport.handleRequest(c);
|
|
41
|
+
});
|
|
42
|
+
var mcp_default = app;
|
|
43
|
+
|
|
44
|
+
//#endregion
|
|
45
|
+
export { mcp_default as default };
|
|
@@ -99,6 +99,7 @@ declare class Agent {
|
|
|
99
99
|
private mcpConnectionLocks;
|
|
100
100
|
private currentCompressor;
|
|
101
101
|
private executionContext;
|
|
102
|
+
private functionToolRelationshipIdByName;
|
|
102
103
|
constructor(config: AgentConfig, executionContext: FullExecutionContext, credentialStoreRegistry?: CredentialStoreRegistry);
|
|
103
104
|
/**
|
|
104
105
|
* Get the maximum number of generation steps for this agent
|