@inkeep/agents-api 0.0.0-dev-20260219033751 → 0.0.0-dev-20260219045007

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.
Files changed (109) hide show
  1. package/dist/.well-known/workflow/v1/manifest.json +34 -34
  2. package/dist/createApp.js +16 -90
  3. package/dist/data/db/manageDbClient.d.ts +2 -2
  4. package/dist/domains/evals/routes/datasetTriggers.d.ts +2 -2
  5. package/dist/domains/evals/routes/datasetTriggers.js +5 -2
  6. package/dist/domains/evals/routes/evaluationTriggers.js +9 -4
  7. package/dist/domains/evals/routes/index.d.ts +2 -2
  8. package/dist/domains/evals/workflow/routes.d.ts +2 -2
  9. package/dist/domains/manage/index.js +4 -0
  10. package/dist/domains/manage/routes/agent.js +16 -20
  11. package/dist/domains/manage/routes/agentFull.js +10 -17
  12. package/dist/domains/manage/routes/apiKeys.js +12 -14
  13. package/dist/domains/manage/routes/artifactComponents.js +12 -15
  14. package/dist/domains/manage/routes/availableAgents.d.ts +2 -2
  15. package/dist/domains/manage/routes/availableAgents.js +4 -2
  16. package/dist/domains/manage/routes/branches.js +12 -14
  17. package/dist/domains/manage/routes/cliAuth.js +4 -3
  18. package/dist/domains/manage/routes/contextConfigs.js +12 -15
  19. package/dist/domains/manage/routes/conversations.d.ts +2 -2
  20. package/dist/domains/manage/routes/conversations.js +5 -2
  21. package/dist/domains/manage/routes/credentialStores.js +7 -8
  22. package/dist/domains/manage/routes/credentials.js +12 -14
  23. package/dist/domains/manage/routes/dataComponents.js +12 -14
  24. package/dist/domains/manage/routes/evals/datasetItems.js +14 -19
  25. package/dist/domains/manage/routes/evals/datasetRunConfigs.js +13 -6
  26. package/dist/domains/manage/routes/evals/datasetRuns.js +7 -3
  27. package/dist/domains/manage/routes/evals/datasets.js +12 -14
  28. package/dist/domains/manage/routes/evals/evaluationJobConfigEvaluatorRelations.js +8 -8
  29. package/dist/domains/manage/routes/evals/evaluationJobConfigs.js +12 -14
  30. package/dist/domains/manage/routes/evals/evaluationResults.js +10 -13
  31. package/dist/domains/manage/routes/evals/evaluationRunConfigs.js +14 -15
  32. package/dist/domains/manage/routes/evals/evaluationSuiteConfigEvaluatorRelations.js +8 -8
  33. package/dist/domains/manage/routes/evals/evaluationSuiteConfigs.js +12 -14
  34. package/dist/domains/manage/routes/evals/evaluators.js +14 -15
  35. package/dist/domains/manage/routes/externalAgents.js +12 -14
  36. package/dist/domains/manage/routes/functionTools.js +12 -15
  37. package/dist/domains/manage/routes/functions.js +12 -15
  38. package/dist/domains/manage/routes/github.js +16 -8
  39. package/dist/domains/manage/routes/index.d.ts +2 -2
  40. package/dist/domains/manage/routes/index.js +0 -4
  41. package/dist/domains/manage/routes/invitations.d.ts +2 -2
  42. package/dist/domains/manage/routes/mcpCatalog.js +5 -2
  43. package/dist/domains/manage/routes/mcpToolGithubAccess.js +6 -4
  44. package/dist/domains/manage/routes/oauth.js +6 -66
  45. package/dist/domains/manage/routes/passwordResetLinks.d.ts +2 -2
  46. package/dist/domains/manage/routes/playgroundToken.js +4 -2
  47. package/dist/domains/manage/routes/projectFull.js +13 -26
  48. package/dist/domains/manage/routes/projectGithubAccess.js +7 -3
  49. package/dist/domains/manage/routes/projectMembers.js +14 -13
  50. package/dist/domains/manage/routes/projectPermissions.js +5 -2
  51. package/dist/domains/manage/routes/projects.js +12 -16
  52. package/dist/domains/manage/routes/ref.js +5 -2
  53. package/dist/domains/manage/routes/scheduledTriggers.js +24 -21
  54. package/dist/domains/manage/routes/signoz.d.ts +2 -2
  55. package/dist/domains/manage/routes/skills.js +12 -15
  56. package/dist/domains/manage/routes/subAgentArtifactComponents.js +12 -14
  57. package/dist/domains/manage/routes/subAgentDataComponents.js +12 -14
  58. package/dist/domains/manage/routes/subAgentExternalAgentRelations.js +12 -15
  59. package/dist/domains/manage/routes/subAgentFunctionTools.js +12 -14
  60. package/dist/domains/manage/routes/subAgentRelations.js +12 -15
  61. package/dist/domains/manage/routes/subAgentSkills.js +8 -12
  62. package/dist/domains/manage/routes/subAgentTeamAgentRelations.js +12 -15
  63. package/dist/domains/manage/routes/subAgentToolRelations.js +14 -16
  64. package/dist/domains/manage/routes/subAgents.js +12 -15
  65. package/dist/domains/manage/routes/thirdPartyMCPServers.js +7 -3
  66. package/dist/domains/manage/routes/tools.js +79 -16
  67. package/dist/domains/manage/routes/triggers.js +18 -22
  68. package/dist/domains/manage/routes/userProjectMemberships.js +5 -3
  69. package/dist/domains/manage/routes/users.d.ts +2 -2
  70. package/dist/domains/mcp/routes/mcp.d.ts +2 -2
  71. package/dist/domains/run/agents/relationTools.d.ts +2 -2
  72. package/dist/domains/run/routes/agents.js +4 -2
  73. package/dist/domains/run/routes/chat.js +4 -2
  74. package/dist/domains/run/routes/chatDataStream.js +6 -3
  75. package/dist/domains/run/routes/mcp.js +4 -2
  76. package/dist/domains/run/routes/webhooks.js +5 -3
  77. package/dist/domains/run/tools/distill-conversation-history-tool.d.ts +1 -1
  78. package/dist/domains/run/types/chat.d.ts +4 -4
  79. package/dist/domains/run/utils/token-estimator.d.ts +2 -2
  80. package/dist/domains/run/workflow/steps/scheduledTriggerSteps.d.ts +5 -5
  81. package/dist/factory.d.ts +21 -21
  82. package/dist/index.d.ts +18 -18
  83. package/dist/middleware/evalsAuth.d.ts +2 -2
  84. package/dist/middleware/evalsAuth.js +37 -32
  85. package/dist/middleware/index.d.ts +2 -3
  86. package/dist/middleware/index.js +3 -4
  87. package/dist/middleware/manageAuth.d.ts +9 -4
  88. package/dist/middleware/manageAuth.js +24 -2
  89. package/dist/middleware/projectAccess.d.ts +4 -3
  90. package/dist/middleware/projectAccess.js +78 -64
  91. package/dist/middleware/projectConfig.d.ts +3 -3
  92. package/dist/middleware/ref.d.ts +1 -5
  93. package/dist/middleware/ref.js +1 -21
  94. package/dist/middleware/requirePermission.d.ts +2 -2
  95. package/dist/middleware/requirePermission.js +64 -64
  96. package/dist/middleware/runAuth.d.ts +4 -4
  97. package/dist/middleware/sessionAuth.d.ts +3 -3
  98. package/dist/middleware/sessionAuth.js +23 -18
  99. package/dist/middleware/tenantAccess.d.ts +3 -2
  100. package/dist/middleware/tenantAccess.js +12 -1
  101. package/dist/middleware/tracing.d.ts +3 -3
  102. package/dist/middleware/tracing.js +1 -1
  103. package/dist/routes/capabilities.d.ts +10 -0
  104. package/dist/routes/capabilities.js +35 -0
  105. package/dist/routes/healthChecks.js +6 -3
  106. package/dist/routes/workflowProcess.d.ts +10 -0
  107. package/dist/routes/workflowProcess.js +23 -0
  108. package/dist/types/app.d.ts +3 -3
  109. package/package.json +4 -4
@@ -1,28 +1,22 @@
1
1
  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
- import { OpenAPIHono, createRoute } from "@hono/zod-openapi";
4
+ import { oauthService } from "../../../utils/oauthService.js";
5
+ import { OpenAPIHono } from "@hono/zod-openapi";
5
6
  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";
7
+ import { createProtectedRoute } from "@inkeep/agents-core/middleware";
6
8
  import { z as z$1 } from "zod";
7
9
 
8
10
  //#region src/domains/manage/routes/tools.ts
9
11
  const logger = getLogger$1("tools");
10
12
  const app = new OpenAPIHono();
11
- app.use("/", async (c, next) => {
12
- if (c.req.method === "POST") return requireProjectPermission("edit")(c, next);
13
- return next();
14
- });
15
- app.use("/:id", async (c, next) => {
16
- if (c.req.method === "PUT") return requireProjectPermission("edit")(c, next);
17
- if (c.req.method === "DELETE") return requireProjectPermission("edit")(c, next);
18
- return next();
19
- });
20
- app.openapi(createRoute({
13
+ app.openapi(createProtectedRoute({
21
14
  method: "get",
22
15
  path: "/",
23
16
  summary: "List Tools",
24
17
  operationId: "list-tools",
25
18
  tags: ["Tools"],
19
+ permission: requireProjectPermission("view"),
26
20
  request: {
27
21
  params: TenantProjectParamsSchema,
28
22
  query: PaginationQueryParamsSchema.extend({
@@ -95,12 +89,13 @@ app.openapi(createRoute({
95
89
  }
96
90
  return c.json(result);
97
91
  });
98
- app.openapi(createRoute({
92
+ app.openapi(createProtectedRoute({
99
93
  method: "get",
100
94
  path: "/{id}",
101
95
  summary: "Get Tool",
102
96
  operationId: "get-tool",
103
97
  tags: ["Tools"],
98
+ permission: requireProjectPermission("view"),
104
99
  request: { params: TenantProjectIdParamsSchema },
105
100
  responses: {
106
101
  200: {
@@ -127,12 +122,13 @@ app.openapi(createRoute({
127
122
  const userId = c.get("userId");
128
123
  return c.json({ data: await dbResultToMcpTool(tool, db, credentialStores, void 0, userId) });
129
124
  });
130
- app.openapi(createRoute({
125
+ app.openapi(createProtectedRoute({
131
126
  method: "post",
132
127
  path: "/",
133
128
  summary: "Create Tool",
134
129
  operationId: "create-tool",
135
130
  tags: ["Tools"],
131
+ permission: requireProjectPermission("edit"),
136
132
  request: {
137
133
  params: TenantProjectParamsSchema,
138
134
  body: { content: { "application/json": { schema: ToolApiInsertSchema } } }
@@ -166,12 +162,13 @@ app.openapi(createRoute({
166
162
  });
167
163
  return c.json({ data: await dbResultToMcpTool(tool, db, credentialStores, void 0, userId) }, 201);
168
164
  });
169
- app.openapi(createRoute({
165
+ app.openapi(createProtectedRoute({
170
166
  method: "put",
171
167
  path: "/{id}",
172
168
  summary: "Update Tool",
173
169
  operationId: "update-tool",
174
170
  tags: ["Tools"],
171
+ permission: requireProjectPermission("edit"),
175
172
  request: {
176
173
  params: TenantProjectIdParamsSchema,
177
174
  body: { content: { "application/json": { schema: ToolApiUpdateSchema } } }
@@ -215,12 +212,13 @@ app.openapi(createRoute({
215
212
  });
216
213
  return c.json({ data: await dbResultToMcpTool(updatedTool, db, credentialStores, void 0, userId) });
217
214
  });
218
- app.openapi(createRoute({
215
+ app.openapi(createProtectedRoute({
219
216
  method: "get",
220
217
  path: "/{id}/user-credential",
221
218
  summary: "Get User Credential for Tool",
222
219
  operationId: "get-user-credential-for-tool",
223
220
  tags: ["Tools"],
221
+ permission: requireProjectPermission("view"),
224
222
  request: { params: TenantProjectIdParamsSchema },
225
223
  responses: {
226
224
  200: {
@@ -252,12 +250,13 @@ app.openapi(createRoute({
252
250
  const validatedCredential = CredentialReferenceApiSelectSchema.parse(credential);
253
251
  return c.json({ data: validatedCredential });
254
252
  });
255
- app.openapi(createRoute({
253
+ app.openapi(createProtectedRoute({
256
254
  method: "delete",
257
255
  path: "/{id}",
258
256
  summary: "Delete Tool",
259
257
  operationId: "delete-tool",
260
258
  tags: ["Tools"],
259
+ permission: requireProjectPermission("edit"),
261
260
  request: { params: TenantProjectIdParamsSchema },
262
261
  responses: {
263
262
  204: { description: "Tool deleted successfully" },
@@ -278,6 +277,70 @@ app.openapi(createRoute({
278
277
  });
279
278
  return c.body(null, 204);
280
279
  });
280
+ app.openapi(createProtectedRoute({
281
+ method: "get",
282
+ path: "/{id}/oauth/login",
283
+ summary: "Initiate OAuth login for MCP tool",
284
+ description: "Detects OAuth requirements and redirects to the authorization server for the specified tool",
285
+ operationId: "initiate-tool-oauth-login",
286
+ tags: ["Tools"],
287
+ permission: requireProjectPermission("view"),
288
+ request: { params: TenantProjectIdParamsSchema },
289
+ responses: {
290
+ 302: { description: "Redirect to OAuth authorization server" },
291
+ 400: {
292
+ description: "OAuth not supported or configuration error",
293
+ content: { "text/html": { schema: z$1.string() } }
294
+ },
295
+ 404: {
296
+ description: "Tool not found",
297
+ content: { "text/html": { schema: z$1.string() } }
298
+ },
299
+ 500: {
300
+ description: "Internal server error",
301
+ content: { "text/html": { schema: z$1.string() } }
302
+ }
303
+ }
304
+ }), async (c) => {
305
+ const { tenantId, projectId, id: toolId } = c.req.valid("param");
306
+ const db = c.get("db");
307
+ try {
308
+ const tool = await getToolById(db)({
309
+ scopes: {
310
+ tenantId,
311
+ projectId
312
+ },
313
+ toolId
314
+ });
315
+ if (!tool) {
316
+ logger.error({
317
+ toolId,
318
+ tenantId,
319
+ projectId
320
+ }, "Tool not found for OAuth login");
321
+ return c.text("Tool not found", 404);
322
+ }
323
+ const url = new URL(c.req.url);
324
+ const baseUrl = `${url.protocol}//${url.host}`;
325
+ const { redirectUrl } = await oauthService.initiateOAuthFlow({
326
+ tenantId,
327
+ projectId,
328
+ toolId,
329
+ mcpServerUrl: tool.config.mcp.server.url,
330
+ baseUrl
331
+ });
332
+ return c.redirect(redirectUrl, 302);
333
+ } catch (error) {
334
+ logger.error({
335
+ toolId,
336
+ tenantId,
337
+ projectId,
338
+ error
339
+ }, "OAuth login failed");
340
+ const errorMessage = error instanceof Error ? error.message : "Failed to initiate OAuth login";
341
+ return c.text(`OAuth Error: ${errorMessage}`, 500);
342
+ }
343
+ });
281
344
  var tools_default = app;
282
345
 
283
346
  //#endregion
@@ -4,21 +4,13 @@ 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 { dispatchExecution } from "../../run/services/TriggerService.js";
7
- import { OpenAPIHono, createRoute, z } from "@hono/zod-openapi";
7
+ import { OpenAPIHono, z } from "@hono/zod-openapi";
8
8
  import { DateTimeFilterQueryParamsSchema, PaginationQueryParamsSchema, PartSchema, TenantProjectAgentIdParamsSchema, TenantProjectAgentParamsSchema, TriggerApiInsertSchema, TriggerApiUpdateSchema, TriggerInvocationListResponse, TriggerInvocationResponse, TriggerInvocationStatusEnum, TriggerWithWebhookUrlListResponse, TriggerWithWebhookUrlResponse, commonGetErrorResponses, createApiError, createTrigger, deleteTrigger, errorSchemaFactory, generateId, getCredentialReference, getTriggerById, getTriggerInvocationById, hashAuthenticationHeaders, listTriggerInvocationsPaginated, listTriggersPaginated, updateTrigger } from "@inkeep/agents-core";
9
+ import { createProtectedRoute } from "@inkeep/agents-core/middleware";
9
10
 
10
11
  //#region src/domains/manage/routes/triggers.ts
11
12
  const logger = getLogger$1("triggers");
12
13
  const app = new OpenAPIHono();
13
- app.use("/", async (c, next) => {
14
- if (c.req.method === "POST") return requireProjectPermission("edit")(c, next);
15
- return next();
16
- });
17
- app.use("/:id", async (c, next) => {
18
- if (c.req.method === "PATCH") return requireProjectPermission("edit")(c, next);
19
- if (c.req.method === "DELETE") return requireProjectPermission("edit")(c, next);
20
- return next();
21
- });
22
14
  /**
23
15
  * Generate webhook URL for a trigger
24
16
  */
@@ -29,12 +21,13 @@ function generateWebhookUrl(params) {
29
21
  /**
30
22
  * List Triggers for an Agent
31
23
  */
32
- app.openapi(createRoute({
24
+ app.openapi(createProtectedRoute({
33
25
  method: "get",
34
26
  path: "/",
35
27
  summary: "List Triggers",
36
28
  operationId: "list-triggers",
37
29
  tags: ["Triggers"],
30
+ permission: requireProjectPermission("view"),
38
31
  request: {
39
32
  params: TenantProjectAgentParamsSchema,
40
33
  query: PaginationQueryParamsSchema
@@ -84,12 +77,13 @@ app.openapi(createRoute({
84
77
  /**
85
78
  * Get Trigger by ID
86
79
  */
87
- app.openapi(createRoute({
80
+ app.openapi(createProtectedRoute({
88
81
  method: "get",
89
82
  path: "/{id}",
90
83
  summary: "Get Trigger",
91
84
  operationId: "get-trigger-by-id",
92
85
  tags: ["Triggers"],
86
+ permission: requireProjectPermission("view"),
93
87
  request: { params: TenantProjectAgentIdParamsSchema },
94
88
  responses: {
95
89
  200: {
@@ -129,12 +123,13 @@ app.openapi(createRoute({
129
123
  /**
130
124
  * Create Trigger
131
125
  */
132
- app.openapi(createRoute({
126
+ app.openapi(createProtectedRoute({
133
127
  method: "post",
134
128
  path: "/",
135
129
  summary: "Create Trigger",
136
130
  operationId: "create-trigger",
137
131
  tags: ["Triggers"],
132
+ permission: requireProjectPermission("edit"),
138
133
  request: {
139
134
  params: TenantProjectAgentParamsSchema,
140
135
  body: { content: { "application/json": { schema: TriggerApiInsertSchema } } }
@@ -208,12 +203,13 @@ app.openapi(createRoute({
208
203
  /**
209
204
  * Update Trigger
210
205
  */
211
- app.openapi(createRoute({
206
+ app.openapi(createProtectedRoute({
212
207
  method: "patch",
213
208
  path: "/{id}",
214
209
  summary: "Update Trigger",
215
210
  operationId: "update-trigger",
216
211
  tags: ["Triggers"],
212
+ permission: requireProjectPermission("edit"),
217
213
  request: {
218
214
  params: TenantProjectAgentIdParamsSchema,
219
215
  body: { content: { "application/json": { schema: TriggerApiUpdateSchema } } }
@@ -323,12 +319,13 @@ app.openapi(createRoute({
323
319
  /**
324
320
  * Delete Trigger
325
321
  */
326
- app.openapi(createRoute({
322
+ app.openapi(createProtectedRoute({
327
323
  method: "delete",
328
324
  path: "/{id}",
329
325
  summary: "Delete Trigger",
330
326
  operationId: "delete-trigger",
331
327
  tags: ["Triggers"],
328
+ permission: requireProjectPermission("edit"),
332
329
  request: { params: TenantProjectAgentIdParamsSchema },
333
330
  responses: {
334
331
  204: { description: "Trigger deleted successfully" },
@@ -373,12 +370,13 @@ const TriggerInvocationQueryParamsSchema = PaginationQueryParamsSchema.merge(Dat
373
370
  /**
374
371
  * List Trigger Invocations
375
372
  */
376
- app.openapi(createRoute({
373
+ app.openapi(createProtectedRoute({
377
374
  method: "get",
378
375
  path: "/{id}/invocations",
379
376
  summary: "List Trigger Invocations",
380
377
  operationId: "list-trigger-invocations",
381
378
  tags: ["Triggers"],
379
+ permission: requireProjectPermission("view"),
382
380
  request: {
383
381
  params: TenantProjectAgentIdParamsSchema,
384
382
  query: TriggerInvocationQueryParamsSchema
@@ -432,12 +430,13 @@ app.openapi(createRoute({
432
430
  /**
433
431
  * Get Trigger Invocation by ID
434
432
  */
435
- app.openapi(createRoute({
433
+ app.openapi(createProtectedRoute({
436
434
  method: "get",
437
435
  path: "/{id}/invocations/{invocationId}",
438
436
  summary: "Get Trigger Invocation",
439
437
  operationId: "get-trigger-invocation-by-id",
440
438
  tags: ["Triggers"],
439
+ permission: requireProjectPermission("view"),
441
440
  request: { params: TenantProjectAgentIdParamsSchema.extend({ invocationId: z.string().describe("Trigger Invocation ID") }) },
442
441
  responses: {
443
442
  200: {
@@ -475,16 +474,13 @@ app.openapi(createRoute({
475
474
  * Rerun Trigger
476
475
  * Re-executes a trigger with the provided user message (from a previous trace).
477
476
  */
478
- app.use("/:id/rerun", async (c, next) => {
479
- if (c.req.method === "POST") return requireProjectPermission("use")(c, next);
480
- return next();
481
- });
482
- app.openapi(createRoute({
477
+ app.openapi(createProtectedRoute({
483
478
  method: "post",
484
479
  path: "/{id}/rerun",
485
480
  summary: "Rerun Trigger",
486
481
  operationId: "rerun-trigger",
487
482
  tags: ["Triggers"],
483
+ permission: requireProjectPermission("use"),
488
484
  request: {
489
485
  params: TenantProjectAgentIdParamsSchema,
490
486
  body: { content: { "application/json": { schema: z.object({
@@ -1,5 +1,6 @@
1
- import { OpenAPIHono, createRoute, z } from "@hono/zod-openapi";
1
+ import { OpenAPIHono, z } from "@hono/zod-openapi";
2
2
  import { ProjectRoles, commonGetErrorResponses, listUserProjectMembershipsInSpiceDb } from "@inkeep/agents-core";
3
+ import { createProtectedRoute, inheritedManageTenantAuth } from "@inkeep/agents-core/middleware";
3
4
 
4
5
  //#region src/domains/manage/routes/userProjectMemberships.ts
5
6
  const app = new OpenAPIHono();
@@ -12,13 +13,14 @@ const UserProjectMembershipParamsSchema = z.object({
12
13
  tenantId: z.string(),
13
14
  userId: z.string()
14
15
  });
15
- app.openapi(createRoute({
16
+ app.openapi(createProtectedRoute({
16
17
  method: "get",
17
18
  path: "/",
18
19
  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
+ description: "List all projects a user has explicit access to and their role in each.",
20
21
  operationId: "list-user-project-memberships",
21
22
  tags: ["User Project Memberships"],
23
+ permission: inheritedManageTenantAuth(),
22
24
  request: { params: UserProjectMembershipParamsSchema },
23
25
  responses: {
24
26
  200: {
@@ -1,10 +1,10 @@
1
1
  import { ManageAppVariables } from "../../../types/app.js";
2
2
  import { Hono } from "hono";
3
- import * as hono_types7 from "hono/types";
3
+ import * as hono_types10 from "hono/types";
4
4
 
5
5
  //#region src/domains/manage/routes/users.d.ts
6
6
  declare const usersRoutes: Hono<{
7
7
  Variables: ManageAppVariables;
8
- }, hono_types7.BlankSchema, "/">;
8
+ }, hono_types10.BlankSchema, "/">;
9
9
  //#endregion
10
10
  export { usersRoutes as default };
@@ -1,7 +1,7 @@
1
1
  import { Hono } from "hono";
2
- import * as hono_types4 from "hono/types";
2
+ import * as hono_types11 from "hono/types";
3
3
 
4
4
  //#region src/domains/mcp/routes/mcp.d.ts
5
- declare const app: Hono<hono_types4.BlankEnv, hono_types4.BlankSchema, "/">;
5
+ declare const app: Hono<hono_types11.BlankEnv, hono_types11.BlankSchema, "/">;
6
6
  //#endregion
7
7
  export { app as default };
@@ -1,6 +1,6 @@
1
1
  import { AgentConfig, DelegateRelation } from "./Agent.js";
2
2
  import { InternalRelation } from "../utils/project.js";
3
- import * as _inkeep_agents_core1 from "@inkeep/agents-core";
3
+ import * as _inkeep_agents_core0 from "@inkeep/agents-core";
4
4
  import { CredentialStoreRegistry, FullExecutionContext } from "@inkeep/agents-core";
5
5
  import * as ai0 from "ai";
6
6
 
@@ -44,7 +44,7 @@ declare function createDelegateToAgentTool({
44
44
  message: string;
45
45
  }, {
46
46
  toolCallId: any;
47
- result: _inkeep_agents_core1.Message | _inkeep_agents_core1.Task;
47
+ result: _inkeep_agents_core0.Message | _inkeep_agents_core0.Task;
48
48
  }>;
49
49
  /**
50
50
  * Parameters for building a transfer relation config
@@ -1,18 +1,20 @@
1
1
  import { getLogger as getLogger$1 } from "../../../logger.js";
2
2
  import { a2aHandler } from "../a2a/handlers.js";
3
3
  import { getRegisteredAgent } from "../data/agents.js";
4
- import { OpenAPIHono, createRoute, z } from "@hono/zod-openapi";
4
+ import { OpenAPIHono, z } from "@hono/zod-openapi";
5
5
  import { HeadersScopeSchema, createApiError } from "@inkeep/agents-core";
6
+ import { createProtectedRoute, inheritedRunApiKeyAuth } from "@inkeep/agents-core/middleware";
6
7
 
7
8
  //#region src/domains/run/routes/agents.ts
8
9
  const app = new OpenAPIHono();
9
10
  const logger = getLogger$1("agents");
10
- app.openapi(createRoute({
11
+ app.openapi(createProtectedRoute({
11
12
  method: "get",
12
13
  path: "/.well-known/agent.json",
13
14
  request: { headers: HeadersScopeSchema },
14
15
  tags: ["A2A"],
15
16
  security: [{ bearerAuth: [] }],
17
+ permission: inheritedRunApiKeyAuth(),
16
18
  responses: {
17
19
  200: {
18
20
  description: "Agent Card for A2A discovery",
@@ -10,21 +10,23 @@ import "../context/index.js";
10
10
  import { toolApprovalUiBus } from "../services/ToolApprovalUiBus.js";
11
11
  import { ImageContentItemSchema } from "../types/chat.js";
12
12
  import { extractTextFromParts, getMessagePartsFromOpenAIContent } from "../utils/message-parts.js";
13
- import { OpenAPIHono, createRoute, z } from "@hono/zod-openapi";
13
+ import { OpenAPIHono, z } from "@hono/zod-openapi";
14
14
  import { PartSchema, createApiError, createMessage, createOrGetConversation, generateId, getActiveAgentForConversation, getConversationId, setActiveAgentForConversation } from "@inkeep/agents-core";
15
+ import { createProtectedRoute, inheritedRunApiKeyAuth } from "@inkeep/agents-core/middleware";
15
16
  import { context, propagation, trace } from "@opentelemetry/api";
16
17
  import { streamSSE } from "hono/streaming";
17
18
 
18
19
  //#region src/domains/run/routes/chat.ts
19
20
  const app = new OpenAPIHono();
20
21
  const logger = getLogger$1("completionsHandler");
21
- const chatCompletionsRoute = createRoute({
22
+ const chatCompletionsRoute = createProtectedRoute({
22
23
  method: "post",
23
24
  path: "/completions",
24
25
  tags: ["Chat"],
25
26
  summary: "Create chat completion",
26
27
  description: "Creates a new chat completion with streaming SSE response using the configured agent",
27
28
  security: [{ bearerAuth: [] }],
29
+ permission: inheritedRunApiKeyAuth(),
28
30
  request: { body: { content: { "application/json": { schema: z.object({
29
31
  model: z.string().describe("The model to use for the completion"),
30
32
  messages: z.array(z.object({
@@ -11,8 +11,9 @@ import { pendingToolApprovalManager } from "../services/PendingToolApprovalManag
11
11
  import { toolApprovalUiBus } from "../services/ToolApprovalUiBus.js";
12
12
  import { ImageUrlSchema } from "../types/chat.js";
13
13
  import { extractTextFromParts, getMessagePartsFromVercelContent } from "../utils/message-parts.js";
14
- import { OpenAPIHono, createRoute, z } from "@hono/zod-openapi";
14
+ import { OpenAPIHono, z } from "@hono/zod-openapi";
15
15
  import { PartSchema, commonGetErrorResponses, createApiError, createMessage, generateId, getActiveAgentForConversation, getConversation, getConversationId, loggerFactory, setActiveAgentForConversation } from "@inkeep/agents-core";
16
+ import { createProtectedRoute, inheritedRunApiKeyAuth } from "@inkeep/agents-core/middleware";
16
17
  import { JsonToSseTransformStream, createUIMessageStream } from "ai";
17
18
  import { context, propagation, trace } from "@opentelemetry/api";
18
19
  import { stream } from "hono/streaming";
@@ -20,13 +21,14 @@ import { stream } from "hono/streaming";
20
21
  //#region src/domains/run/routes/chatDataStream.ts
21
22
  const app = new OpenAPIHono();
22
23
  const logger = getLogger$1("chatDataStream");
23
- const chatDataStreamRoute = createRoute({
24
+ const chatDataStreamRoute = createProtectedRoute({
24
25
  method: "post",
25
26
  path: "/chat",
26
27
  tags: ["Chat"],
27
28
  summary: "Chat (Vercel Streaming Protocol)",
28
29
  description: "Chat completion endpoint streaming with Vercel data stream protocol.",
29
30
  security: [{ bearerAuth: [] }],
31
+ permission: inheritedRunApiKeyAuth(),
30
32
  request: { body: { content: { "application/json": { schema: z.object({
31
33
  model: z.string().optional(),
32
34
  messages: z.array(z.object({
@@ -375,13 +377,14 @@ app.openapi(chatDataStreamRoute, async (c) => {
375
377
  });
376
378
  }
377
379
  });
378
- const toolApprovalRoute = createRoute({
380
+ const toolApprovalRoute = createProtectedRoute({
379
381
  method: "post",
380
382
  path: "/tool-approvals",
381
383
  tags: ["Chat"],
382
384
  summary: "Approve or deny tool execution",
383
385
  description: "Handle user approval/denial of tool execution requests during conversations",
384
386
  security: [{ bearerAuth: [] }],
387
+ permission: inheritedRunApiKeyAuth(),
385
388
  request: { body: { content: { "application/json": { schema: z.object({
386
389
  conversationId: z.string().describe("The conversation ID"),
387
390
  toolCallId: z.string().describe("The tool call ID to respond to"),
@@ -5,8 +5,9 @@ import { ExecutionHandler } from "../handlers/executionHandler.js";
5
5
  import { contextValidationMiddleware } from "../context/validation.js";
6
6
  import { handleContextResolution } from "../context/context.js";
7
7
  import "../context/index.js";
8
- import { OpenAPIHono, createRoute, z } from "@hono/zod-openapi";
8
+ import { OpenAPIHono, z } from "@hono/zod-openapi";
9
9
  import { HeadersScopeSchema, createMessage, createOrGetConversation, generateId, getConversation, getConversationId, updateConversation } from "@inkeep/agents-core";
10
+ import { createProtectedRoute, inheritedRunApiKeyAuth } from "@inkeep/agents-core/middleware";
10
11
  import { context, propagation, trace } from "@opentelemetry/api";
11
12
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
12
13
  import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
@@ -415,13 +416,14 @@ const createErrorResponse = (code, message, id = null) => ({
415
416
  },
416
417
  id
417
418
  });
418
- app.openapi(createRoute({
419
+ app.openapi(createProtectedRoute({
419
420
  method: "post",
420
421
  path: "/",
421
422
  tags: ["MCP"],
422
423
  summary: "MCP Protocol",
423
424
  description: "Handles Model Context Protocol (MCP) JSON-RPC requests",
424
425
  security: [{ bearerAuth: [] }],
426
+ permission: inheritedRunApiKeyAuth(),
425
427
  request: { headers: HeadersScopeSchema },
426
428
  responses: {
427
429
  200: { description: "MCP response" },
@@ -1,6 +1,7 @@
1
1
  import { getLogger } from "../../../logger.js";
2
2
  import { processWebhook } from "../services/TriggerService.js";
3
- import { OpenAPIHono, createRoute, z } from "@hono/zod-openapi";
3
+ import { OpenAPIHono, z } from "@hono/zod-openapi";
4
+ import { createProtectedRoute, noAuth } from "@inkeep/agents-core/middleware";
4
5
 
5
6
  //#region src/domains/run/routes/webhooks.ts
6
7
  const app = new OpenAPIHono();
@@ -9,12 +10,13 @@ const logger = getLogger("webhooks");
9
10
  * Webhook endpoint for trigger invocation
10
11
  * POST /tenants/{tenantId}/projects/{projectId}/agents/{agentId}/triggers/{triggerId}
11
12
  */
12
- const triggerWebhookRoute = createRoute({
13
+ const triggerWebhookRoute = createProtectedRoute({
13
14
  method: "post",
14
15
  path: "/tenants/{tenantId}/projects/{projectId}/agents/{agentId}/triggers/{triggerId}",
15
16
  tags: ["Webhooks"],
16
17
  summary: "Invoke agent via trigger webhook",
17
18
  description: "Webhook endpoint for third-party services to invoke an agent via a configured trigger",
19
+ permission: noAuth(),
18
20
  request: {
19
21
  params: z.object({
20
22
  tenantId: z.string().describe("Tenant ID"),
@@ -63,7 +65,7 @@ const triggerWebhookRoute = createRoute({
63
65
  }
64
66
  });
65
67
  app.openapi(triggerWebhookRoute, async (c) => {
66
- const { tenantId, projectId, agentId, triggerId } = c.req.param();
68
+ const { tenantId, projectId, agentId, triggerId } = c.req.valid("param");
67
69
  const resolvedRef = c.get("resolvedRef");
68
70
  logger.info({
69
71
  tenantId,
@@ -32,9 +32,9 @@ declare const ConversationHistorySummarySchema: z.ZodObject<{
32
32
  tool_call_id: z.ZodString;
33
33
  content_summary: z.ZodString;
34
34
  relevance: z.ZodEnum<{
35
- low: "low";
36
35
  high: "high";
37
36
  medium: "medium";
37
+ low: "low";
38
38
  }>;
39
39
  }, z.core.$strip>>>;
40
40
  conversation_flow: z.ZodObject<{
@@ -9,9 +9,9 @@ declare const ImageUrlSchema: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
9
9
  /** OpenAI-specific image detail level. Has no effect on other providers. */
10
10
  declare const ImageDetailEnum: readonly ["auto", "low", "high"];
11
11
  declare const ImageDetailSchema: z.ZodEnum<{
12
- auto: "auto";
13
- low: "low";
14
12
  high: "high";
13
+ low: "low";
14
+ auto: "auto";
15
15
  }>;
16
16
  type ImageDetail = z.infer<typeof ImageDetailSchema>;
17
17
  declare const ImageContentItemSchema: z.ZodObject<{
@@ -19,9 +19,9 @@ declare const ImageContentItemSchema: z.ZodObject<{
19
19
  image_url: z.ZodObject<{
20
20
  url: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
21
21
  detail: z.ZodOptional<z.ZodEnum<{
22
- auto: "auto";
23
- low: "low";
24
22
  high: "high";
23
+ low: "low";
24
+ auto: "auto";
25
25
  }>>;
26
26
  }, z.core.$strip>;
27
27
  }, z.core.$strip>;
@@ -1,4 +1,4 @@
1
- import * as _inkeep_agents_core3 from "@inkeep/agents-core";
1
+ import * as _inkeep_agents_core2 from "@inkeep/agents-core";
2
2
  import { BreakdownComponentDef, ContextBreakdown, calculateBreakdownTotal, createEmptyBreakdown } from "@inkeep/agents-core";
3
3
 
4
4
  //#region src/domains/run/utils/token-estimator.d.ts
@@ -17,7 +17,7 @@ interface AssembleResult {
17
17
  /** The assembled prompt string */
18
18
  prompt: string;
19
19
  /** Token breakdown for each component */
20
- breakdown: _inkeep_agents_core3.ContextBreakdown;
20
+ breakdown: _inkeep_agents_core2.ContextBreakdown;
21
21
  }
22
22
  //#endregion
23
23
  export { AssembleResult, type BreakdownComponentDef, type ContextBreakdown, calculateBreakdownTotal, createEmptyBreakdown, estimateTokens };
@@ -105,7 +105,7 @@ declare function createInvocationIdempotentStep(params: {
105
105
  projectId: string;
106
106
  tenantId: string;
107
107
  id: string;
108
- status: "pending" | "completed" | "running" | "failed" | "cancelled";
108
+ status: "pending" | "completed" | "failed" | "running" | "cancelled";
109
109
  resolvedPayload?: Record<string, unknown> | null | undefined;
110
110
  };
111
111
  alreadyExists: boolean;
@@ -145,7 +145,7 @@ declare function markRunningStep(params: {
145
145
  projectId: string;
146
146
  tenantId: string;
147
147
  id: string;
148
- status: "pending" | "completed" | "running" | "failed" | "cancelled";
148
+ status: "pending" | "completed" | "failed" | "running" | "cancelled";
149
149
  resolvedPayload?: Record<string, unknown> | null | undefined;
150
150
  }>;
151
151
  /**
@@ -172,7 +172,7 @@ declare function addConversationIdStep(params: {
172
172
  projectId: string;
173
173
  tenantId: string;
174
174
  id: string;
175
- status: "pending" | "completed" | "running" | "failed" | "cancelled";
175
+ status: "pending" | "completed" | "failed" | "running" | "cancelled";
176
176
  resolvedPayload?: Record<string, unknown> | null | undefined;
177
177
  } | undefined>;
178
178
  /**
@@ -197,7 +197,7 @@ declare function markCompletedStep(params: {
197
197
  projectId: string;
198
198
  tenantId: string;
199
199
  id: string;
200
- status: "pending" | "completed" | "running" | "failed" | "cancelled";
200
+ status: "pending" | "completed" | "failed" | "running" | "cancelled";
201
201
  resolvedPayload?: Record<string, unknown> | null | undefined;
202
202
  } | undefined>;
203
203
  /**
@@ -222,7 +222,7 @@ declare function markFailedStep(params: {
222
222
  projectId: string;
223
223
  tenantId: string;
224
224
  id: string;
225
- status: "pending" | "completed" | "running" | "failed" | "cancelled";
225
+ status: "pending" | "completed" | "failed" | "running" | "cancelled";
226
226
  resolvedPayload?: Record<string, unknown> | null | undefined;
227
227
  } | undefined>;
228
228
  /**