@inkeep/agents-api 0.0.0-dev-20260121145510

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 (352) hide show
  1. package/LICENSE.md +56 -0
  2. package/SUPPLEMENTAL_TERMS.md +40 -0
  3. package/dist/.well-known/workflow/v1/flow.cjs +46383 -0
  4. package/dist/.well-known/workflow/v1/flow.cjs.debug.json +6 -0
  5. package/dist/.well-known/workflow/v1/manifest.debug.json +55 -0
  6. package/dist/.well-known/workflow/v1/step.cjs +218683 -0
  7. package/dist/.well-known/workflow/v1/step.cjs.debug.json +6 -0
  8. package/dist/.well-known/workflow/v1/webhook.mjs +29 -0
  9. package/dist/createApp.d.ts +10 -0
  10. package/dist/createApp.js +170 -0
  11. package/dist/data/db/index.d.ts +4 -0
  12. package/dist/data/db/index.js +5 -0
  13. package/dist/data/db/manageDbClient.d.ts +6 -0
  14. package/dist/data/db/manageDbClient.js +9 -0
  15. package/dist/data/db/manageDbPool.d.ts +6 -0
  16. package/dist/data/db/manageDbPool.js +9 -0
  17. package/dist/data/db/runDbClient.d.ts +6 -0
  18. package/dist/data/db/runDbClient.js +9 -0
  19. package/dist/domains/evals/index.d.ts +13 -0
  20. package/dist/domains/evals/index.js +13 -0
  21. package/dist/domains/evals/routes/datasetTriggers.d.ts +7 -0
  22. package/dist/domains/evals/routes/datasetTriggers.js +65 -0
  23. package/dist/domains/evals/routes/evaluationTriggers.d.ts +11 -0
  24. package/dist/domains/evals/routes/evaluationTriggers.js +311 -0
  25. package/dist/domains/evals/routes/index.d.ts +7 -0
  26. package/dist/domains/evals/routes/index.js +12 -0
  27. package/dist/domains/evals/scripts/build-workflow.d.ts +1 -0
  28. package/dist/domains/evals/scripts/build-workflow.js +31 -0
  29. package/dist/domains/evals/services/EvaluationService.d.ts +96 -0
  30. package/dist/domains/evals/services/EvaluationService.js +863 -0
  31. package/dist/domains/evals/services/conversationEvaluation.d.ts +15 -0
  32. package/dist/domains/evals/services/conversationEvaluation.js +102 -0
  33. package/dist/domains/evals/services/datasetRun.d.ts +16 -0
  34. package/dist/domains/evals/services/datasetRun.js +43 -0
  35. package/dist/domains/evals/services/evaluationJob.d.ts +17 -0
  36. package/dist/domains/evals/services/evaluationJob.js +65 -0
  37. package/dist/domains/evals/services/startEvaluation.d.ts +19 -0
  38. package/dist/domains/evals/services/startEvaluation.js +18 -0
  39. package/dist/domains/evals/workflow/functions/evaluateConversation.d.ts +31 -0
  40. package/dist/domains/evals/workflow/functions/evaluateConversation.js +135 -0
  41. package/dist/domains/evals/workflow/functions/runDatasetItem.d.ts +39 -0
  42. package/dist/domains/evals/workflow/functions/runDatasetItem.js +205 -0
  43. package/dist/domains/evals/workflow/index.d.ts +4 -0
  44. package/dist/domains/evals/workflow/index.js +5 -0
  45. package/dist/domains/evals/workflow/routes.d.ts +7 -0
  46. package/dist/domains/evals/workflow/routes.js +106 -0
  47. package/dist/domains/evals/workflow/world.d.ts +4 -0
  48. package/dist/domains/evals/workflow/world.js +36 -0
  49. package/dist/domains/index.d.ts +4 -0
  50. package/dist/domains/index.js +5 -0
  51. package/dist/domains/manage/index.d.ts +12 -0
  52. package/dist/domains/manage/index.js +31 -0
  53. package/dist/domains/manage/routes/agent.d.ts +9 -0
  54. package/dist/domains/manage/routes/agent.js +266 -0
  55. package/dist/domains/manage/routes/agentFull.d.ts +9 -0
  56. package/dist/domains/manage/routes/agentFull.js +207 -0
  57. package/dist/domains/manage/routes/agentToolRelations.d.ts +9 -0
  58. package/dist/domains/manage/routes/agentToolRelations.js +289 -0
  59. package/dist/domains/manage/routes/apiKeys.d.ts +9 -0
  60. package/dist/domains/manage/routes/apiKeys.js +217 -0
  61. package/dist/domains/manage/routes/artifactComponents.d.ts +9 -0
  62. package/dist/domains/manage/routes/artifactComponents.js +210 -0
  63. package/dist/domains/manage/routes/branches.d.ts +9 -0
  64. package/dist/domains/manage/routes/branches.js +182 -0
  65. package/dist/domains/manage/routes/cliAuth.d.ts +9 -0
  66. package/dist/domains/manage/routes/cliAuth.js +60 -0
  67. package/dist/domains/manage/routes/contextConfigs.d.ts +9 -0
  68. package/dist/domains/manage/routes/contextConfigs.js +189 -0
  69. package/dist/domains/manage/routes/conversations.d.ts +7 -0
  70. package/dist/domains/manage/routes/conversations.js +59 -0
  71. package/dist/domains/manage/routes/credentialStores.d.ts +9 -0
  72. package/dist/domains/manage/routes/credentialStores.js +86 -0
  73. package/dist/domains/manage/routes/credentials.d.ts +9 -0
  74. package/dist/domains/manage/routes/credentials.js +207 -0
  75. package/dist/domains/manage/routes/dataComponents.d.ts +9 -0
  76. package/dist/domains/manage/routes/dataComponents.js +192 -0
  77. package/dist/domains/manage/routes/evals/datasetItems.d.ts +9 -0
  78. package/dist/domains/manage/routes/evals/datasetItems.js +310 -0
  79. package/dist/domains/manage/routes/evals/datasetRunConfigs.d.ts +9 -0
  80. package/dist/domains/manage/routes/evals/datasetRunConfigs.js +402 -0
  81. package/dist/domains/manage/routes/evals/datasetRuns.d.ts +9 -0
  82. package/dist/domains/manage/routes/evals/datasetRuns.js +256 -0
  83. package/dist/domains/manage/routes/evals/datasets.d.ts +9 -0
  84. package/dist/domains/manage/routes/evals/datasets.js +238 -0
  85. package/dist/domains/manage/routes/evals/evaluationJobConfigEvaluatorRelations.d.ts +9 -0
  86. package/dist/domains/manage/routes/evals/evaluationJobConfigEvaluatorRelations.js +146 -0
  87. package/dist/domains/manage/routes/evals/evaluationJobConfigs.d.ts +9 -0
  88. package/dist/domains/manage/routes/evals/evaluationJobConfigs.js +364 -0
  89. package/dist/domains/manage/routes/evals/evaluationResults.d.ts +7 -0
  90. package/dist/domains/manage/routes/evals/evaluationResults.js +192 -0
  91. package/dist/domains/manage/routes/evals/evaluationRunConfigs.d.ts +9 -0
  92. package/dist/domains/manage/routes/evals/evaluationRunConfigs.js +403 -0
  93. package/dist/domains/manage/routes/evals/evaluationSuiteConfigEvaluatorRelations.d.ts +9 -0
  94. package/dist/domains/manage/routes/evals/evaluationSuiteConfigEvaluatorRelations.js +146 -0
  95. package/dist/domains/manage/routes/evals/evaluationSuiteConfigs.d.ts +9 -0
  96. package/dist/domains/manage/routes/evals/evaluationSuiteConfigs.js +246 -0
  97. package/dist/domains/manage/routes/evals/evaluators.d.ts +9 -0
  98. package/dist/domains/manage/routes/evals/evaluators.js +281 -0
  99. package/dist/domains/manage/routes/evals/index.d.ts +9 -0
  100. package/dist/domains/manage/routes/evals/index.js +26 -0
  101. package/dist/domains/manage/routes/externalAgents.d.ts +9 -0
  102. package/dist/domains/manage/routes/externalAgents.js +199 -0
  103. package/dist/domains/manage/routes/functionTools.d.ts +9 -0
  104. package/dist/domains/manage/routes/functionTools.js +256 -0
  105. package/dist/domains/manage/routes/functions.d.ts +9 -0
  106. package/dist/domains/manage/routes/functions.js +285 -0
  107. package/dist/domains/manage/routes/index.d.ts +7 -0
  108. package/dist/domains/manage/routes/index.js +68 -0
  109. package/dist/domains/manage/routes/invitations.d.ts +9 -0
  110. package/dist/domains/manage/routes/invitations.js +41 -0
  111. package/dist/domains/manage/routes/mcp.d.ts +7 -0
  112. package/dist/domains/manage/routes/mcp.js +45 -0
  113. package/dist/domains/manage/routes/mcpCatalog.d.ts +9 -0
  114. package/dist/domains/manage/routes/mcpCatalog.js +454 -0
  115. package/dist/domains/manage/routes/oauth.d.ts +10 -0
  116. package/dist/domains/manage/routes/oauth.js +327 -0
  117. package/dist/domains/manage/routes/playgroundToken.d.ts +9 -0
  118. package/dist/domains/manage/routes/playgroundToken.js +127 -0
  119. package/dist/domains/manage/routes/projectFull.d.ts +9 -0
  120. package/dist/domains/manage/routes/projectFull.js +304 -0
  121. package/dist/domains/manage/routes/projectMembers.d.ts +9 -0
  122. package/dist/domains/manage/routes/projectMembers.js +201 -0
  123. package/dist/domains/manage/routes/projectPermissions.d.ts +9 -0
  124. package/dist/domains/manage/routes/projectPermissions.js +68 -0
  125. package/dist/domains/manage/routes/projects.d.ts +9 -0
  126. package/dist/domains/manage/routes/projects.js +279 -0
  127. package/dist/domains/manage/routes/ref.d.ts +9 -0
  128. package/dist/domains/manage/routes/ref.js +33 -0
  129. package/dist/domains/manage/routes/signoz.d.ts +10 -0
  130. package/dist/domains/manage/routes/signoz.js +159 -0
  131. package/dist/domains/manage/routes/subAgentArtifactComponents.d.ts +9 -0
  132. package/dist/domains/manage/routes/subAgentArtifactComponents.js +202 -0
  133. package/dist/domains/manage/routes/subAgentDataComponents.d.ts +9 -0
  134. package/dist/domains/manage/routes/subAgentDataComponents.js +201 -0
  135. package/dist/domains/manage/routes/subAgentExternalAgentRelations.d.ts +9 -0
  136. package/dist/domains/manage/routes/subAgentExternalAgentRelations.js +216 -0
  137. package/dist/domains/manage/routes/subAgentFunctionTools.d.ts +9 -0
  138. package/dist/domains/manage/routes/subAgentFunctionTools.js +205 -0
  139. package/dist/domains/manage/routes/subAgentRelations.d.ts +9 -0
  140. package/dist/domains/manage/routes/subAgentRelations.js +263 -0
  141. package/dist/domains/manage/routes/subAgentTeamAgentRelations.d.ts +9 -0
  142. package/dist/domains/manage/routes/subAgentTeamAgentRelations.js +216 -0
  143. package/dist/domains/manage/routes/subAgentToolRelations.d.ts +9 -0
  144. package/dist/domains/manage/routes/subAgentToolRelations.js +289 -0
  145. package/dist/domains/manage/routes/subAgents.d.ts +9 -0
  146. package/dist/domains/manage/routes/subAgents.js +220 -0
  147. package/dist/domains/manage/routes/thirdPartyMCPServers.d.ts +9 -0
  148. package/dist/domains/manage/routes/thirdPartyMCPServers.js +72 -0
  149. package/dist/domains/manage/routes/tools.d.ts +9 -0
  150. package/dist/domains/manage/routes/tools.js +261 -0
  151. package/dist/domains/manage/routes/triggers.d.ts +9 -0
  152. package/dist/domains/manage/routes/triggers.js +455 -0
  153. package/dist/domains/manage/routes/userOrganizations.d.ts +9 -0
  154. package/dist/domains/manage/routes/userOrganizations.js +58 -0
  155. package/dist/domains/run/a2a/client.d.ts +186 -0
  156. package/dist/domains/run/a2a/client.js +524 -0
  157. package/dist/domains/run/a2a/handlers.d.ts +7 -0
  158. package/dist/domains/run/a2a/handlers.js +574 -0
  159. package/dist/domains/run/a2a/transfer.d.ts +27 -0
  160. package/dist/domains/run/a2a/transfer.js +50 -0
  161. package/dist/domains/run/a2a/types.d.ts +75 -0
  162. package/dist/domains/run/a2a/types.js +22 -0
  163. package/dist/domains/run/agents/Agent.d.ts +273 -0
  164. package/dist/domains/run/agents/Agent.js +2104 -0
  165. package/dist/domains/run/agents/ModelFactory.d.ts +63 -0
  166. package/dist/domains/run/agents/ModelFactory.js +194 -0
  167. package/dist/domains/run/agents/SystemPromptBuilder.d.ts +21 -0
  168. package/dist/domains/run/agents/SystemPromptBuilder.js +48 -0
  169. package/dist/domains/run/agents/ToolSessionManager.d.ts +63 -0
  170. package/dist/domains/run/agents/ToolSessionManager.js +146 -0
  171. package/dist/domains/run/agents/generateTaskHandler.d.ts +44 -0
  172. package/dist/domains/run/agents/generateTaskHandler.js +396 -0
  173. package/dist/domains/run/agents/relationTools.d.ts +64 -0
  174. package/dist/domains/run/agents/relationTools.js +365 -0
  175. package/dist/domains/run/agents/types.d.ts +31 -0
  176. package/dist/domains/run/agents/types.js +1 -0
  177. package/dist/domains/run/agents/versions/v1/Phase1Config.d.ts +29 -0
  178. package/dist/domains/run/agents/versions/v1/Phase1Config.js +458 -0
  179. package/dist/domains/run/agents/versions/v1/Phase2Config.d.ts +33 -0
  180. package/dist/domains/run/agents/versions/v1/Phase2Config.js +341 -0
  181. package/dist/domains/run/constants/execution-limits/defaults.d.ts +51 -0
  182. package/dist/domains/run/constants/execution-limits/defaults.js +52 -0
  183. package/dist/domains/run/constants/execution-limits/index.d.ts +6 -0
  184. package/dist/domains/run/constants/execution-limits/index.js +21 -0
  185. package/dist/domains/run/context/ContextFetcher.d.ts +68 -0
  186. package/dist/domains/run/context/ContextFetcher.js +276 -0
  187. package/dist/domains/run/context/ContextResolver.d.ts +56 -0
  188. package/dist/domains/run/context/ContextResolver.js +273 -0
  189. package/dist/domains/run/context/context.d.ts +19 -0
  190. package/dist/domains/run/context/context.js +108 -0
  191. package/dist/domains/run/context/contextCache.d.ts +56 -0
  192. package/dist/domains/run/context/contextCache.js +174 -0
  193. package/dist/domains/run/context/index.d.ts +6 -0
  194. package/dist/domains/run/context/index.js +7 -0
  195. package/dist/domains/run/context/validation.d.ts +39 -0
  196. package/dist/domains/run/context/validation.js +255 -0
  197. package/dist/domains/run/data/agent.d.ts +7 -0
  198. package/dist/domains/run/data/agent.js +67 -0
  199. package/dist/domains/run/data/agents.d.ts +34 -0
  200. package/dist/domains/run/data/agents.js +131 -0
  201. package/dist/domains/run/data/conversations.d.ts +129 -0
  202. package/dist/domains/run/data/conversations.js +517 -0
  203. package/dist/domains/run/handlers/executionHandler.d.ts +44 -0
  204. package/dist/domains/run/handlers/executionHandler.js +485 -0
  205. package/dist/domains/run/index.d.ts +13 -0
  206. package/dist/domains/run/index.js +21 -0
  207. package/dist/domains/run/routes/agents.d.ts +13 -0
  208. package/dist/domains/run/routes/agents.js +141 -0
  209. package/dist/domains/run/routes/chat.d.ts +14 -0
  210. package/dist/domains/run/routes/chat.js +300 -0
  211. package/dist/domains/run/routes/chatDataStream.d.ts +14 -0
  212. package/dist/domains/run/routes/chatDataStream.js +381 -0
  213. package/dist/domains/run/routes/mcp.d.ts +14 -0
  214. package/dist/domains/run/routes/mcp.js +483 -0
  215. package/dist/domains/run/routes/webhooks.d.ts +15 -0
  216. package/dist/domains/run/routes/webhooks.js +416 -0
  217. package/dist/domains/run/services/AgentSession.d.ts +354 -0
  218. package/dist/domains/run/services/AgentSession.js +1203 -0
  219. package/dist/domains/run/services/ArtifactParser.d.ts +105 -0
  220. package/dist/domains/run/services/ArtifactParser.js +338 -0
  221. package/dist/domains/run/services/ArtifactService.d.ts +122 -0
  222. package/dist/domains/run/services/ArtifactService.js +629 -0
  223. package/dist/domains/run/services/BaseCompressor.d.ts +183 -0
  224. package/dist/domains/run/services/BaseCompressor.js +500 -0
  225. package/dist/domains/run/services/ConversationCompressor.d.ts +32 -0
  226. package/dist/domains/run/services/ConversationCompressor.js +91 -0
  227. package/dist/domains/run/services/IncrementalStreamParser.d.ts +98 -0
  228. package/dist/domains/run/services/IncrementalStreamParser.js +327 -0
  229. package/dist/domains/run/services/MidGenerationCompressor.d.ts +63 -0
  230. package/dist/domains/run/services/MidGenerationCompressor.js +104 -0
  231. package/dist/domains/run/services/PendingToolApprovalManager.d.ts +62 -0
  232. package/dist/domains/run/services/PendingToolApprovalManager.js +133 -0
  233. package/dist/domains/run/services/ResponseFormatter.d.ts +39 -0
  234. package/dist/domains/run/services/ResponseFormatter.js +152 -0
  235. package/dist/domains/run/services/evaluationRunConfigMatcher.d.ts +4 -0
  236. package/dist/domains/run/services/evaluationRunConfigMatcher.js +7 -0
  237. package/dist/domains/run/tools/NativeSandboxExecutor.d.ts +38 -0
  238. package/dist/domains/run/tools/NativeSandboxExecutor.js +432 -0
  239. package/dist/domains/run/tools/SandboxExecutorFactory.d.ts +36 -0
  240. package/dist/domains/run/tools/SandboxExecutorFactory.js +80 -0
  241. package/dist/domains/run/tools/VercelSandboxExecutor.d.ts +71 -0
  242. package/dist/domains/run/tools/VercelSandboxExecutor.js +340 -0
  243. package/dist/domains/run/tools/distill-conversation-history-tool.d.ts +62 -0
  244. package/dist/domains/run/tools/distill-conversation-history-tool.js +206 -0
  245. package/dist/domains/run/tools/distill-conversation-tool.d.ts +41 -0
  246. package/dist/domains/run/tools/distill-conversation-tool.js +141 -0
  247. package/dist/domains/run/tools/sandbox-utils.d.ts +18 -0
  248. package/dist/domains/run/tools/sandbox-utils.js +53 -0
  249. package/dist/domains/run/types/chat.d.ts +27 -0
  250. package/dist/domains/run/types/chat.js +1 -0
  251. package/dist/domains/run/types/executionContext.d.ts +40 -0
  252. package/dist/domains/run/types/executionContext.js +28 -0
  253. package/dist/domains/run/types/xml.d.ts +5 -0
  254. package/dist/domains/run/utils/SchemaProcessor.d.ts +52 -0
  255. package/dist/domains/run/utils/SchemaProcessor.js +182 -0
  256. package/dist/domains/run/utils/agent-operations.d.ts +62 -0
  257. package/dist/domains/run/utils/agent-operations.js +53 -0
  258. package/dist/domains/run/utils/artifact-component-schema.d.ts +42 -0
  259. package/dist/domains/run/utils/artifact-component-schema.js +186 -0
  260. package/dist/domains/run/utils/cleanup.d.ts +21 -0
  261. package/dist/domains/run/utils/cleanup.js +59 -0
  262. package/dist/domains/run/utils/data-component-schema.d.ts +2 -0
  263. package/dist/domains/run/utils/data-component-schema.js +3 -0
  264. package/dist/domains/run/utils/default-status-schemas.d.ts +20 -0
  265. package/dist/domains/run/utils/default-status-schemas.js +24 -0
  266. package/dist/domains/run/utils/json-postprocessor.d.ts +13 -0
  267. package/dist/domains/run/utils/json-postprocessor.js +19 -0
  268. package/dist/domains/run/utils/model-context-utils.d.ts +39 -0
  269. package/dist/domains/run/utils/model-context-utils.js +181 -0
  270. package/dist/domains/run/utils/model-resolver.d.ts +6 -0
  271. package/dist/domains/run/utils/model-resolver.js +24 -0
  272. package/dist/domains/run/utils/project.d.ts +207 -0
  273. package/dist/domains/run/utils/project.js +315 -0
  274. package/dist/domains/run/utils/schema-validation.d.ts +44 -0
  275. package/dist/domains/run/utils/schema-validation.js +97 -0
  276. package/dist/domains/run/utils/stream-helpers.d.ts +193 -0
  277. package/dist/domains/run/utils/stream-helpers.js +510 -0
  278. package/dist/domains/run/utils/stream-registry.d.ts +22 -0
  279. package/dist/domains/run/utils/stream-registry.js +33 -0
  280. package/dist/domains/run/utils/token-estimator.d.ts +23 -0
  281. package/dist/domains/run/utils/token-estimator.js +17 -0
  282. package/dist/domains/run/utils/tracer.d.ts +7 -0
  283. package/dist/domains/run/utils/tracer.js +7 -0
  284. package/dist/env.d.ts +89 -0
  285. package/dist/env.js +69 -0
  286. package/dist/factory.d.ts +1535 -0
  287. package/dist/factory.js +42 -0
  288. package/dist/index.d.ts +1530 -0
  289. package/dist/index.js +59 -0
  290. package/dist/initialization.d.ts +6 -0
  291. package/dist/initialization.js +65 -0
  292. package/dist/instrumentation.d.ts +17 -0
  293. package/dist/instrumentation.js +68 -0
  294. package/dist/logger.d.ts +2 -0
  295. package/dist/logger.js +3 -0
  296. package/dist/middleware/branchScopedDb.d.ts +31 -0
  297. package/dist/middleware/branchScopedDb.js +137 -0
  298. package/dist/middleware/cors.d.ts +36 -0
  299. package/dist/middleware/cors.js +131 -0
  300. package/dist/middleware/errorHandler.d.ts +12 -0
  301. package/dist/middleware/errorHandler.js +88 -0
  302. package/dist/middleware/evalsAuth.d.ts +16 -0
  303. package/dist/middleware/evalsAuth.js +52 -0
  304. package/dist/middleware/index.d.ts +8 -0
  305. package/dist/middleware/index.js +9 -0
  306. package/dist/middleware/manageAuth.d.ts +25 -0
  307. package/dist/middleware/manageAuth.js +80 -0
  308. package/dist/middleware/projectAccess.d.ts +31 -0
  309. package/dist/middleware/projectAccess.js +118 -0
  310. package/dist/middleware/projectConfig.d.ts +25 -0
  311. package/dist/middleware/projectConfig.js +89 -0
  312. package/dist/middleware/ref.d.ts +61 -0
  313. package/dist/middleware/ref.js +239 -0
  314. package/dist/middleware/requirePermission.d.ts +14 -0
  315. package/dist/middleware/requirePermission.js +80 -0
  316. package/dist/middleware/runAuth.d.ts +29 -0
  317. package/dist/middleware/runAuth.js +253 -0
  318. package/dist/middleware/sessionAuth.d.ts +17 -0
  319. package/dist/middleware/sessionAuth.js +58 -0
  320. package/dist/middleware/tenantAccess.d.ts +22 -0
  321. package/dist/middleware/tenantAccess.js +63 -0
  322. package/dist/middleware/tracing.d.ts +7 -0
  323. package/dist/middleware/tracing.js +50 -0
  324. package/dist/openapi.d.ts +7 -0
  325. package/dist/openapi.js +156 -0
  326. package/dist/ssoHelpers.d.ts +20 -0
  327. package/dist/ssoHelpers.js +51 -0
  328. package/dist/templates/v1/phase1/system-prompt.js +5 -0
  329. package/dist/templates/v1/phase1/thinking-preparation.js +5 -0
  330. package/dist/templates/v1/phase1/tool.js +5 -0
  331. package/dist/templates/v1/phase2/data-component.js +5 -0
  332. package/dist/templates/v1/phase2/data-components.js +5 -0
  333. package/dist/templates/v1/phase2/system-prompt.js +5 -0
  334. package/dist/templates/v1/shared/artifact-retrieval-guidance.js +5 -0
  335. package/dist/templates/v1/shared/artifact.js +5 -0
  336. package/dist/types/app.d.ts +64 -0
  337. package/dist/types/app.js +1 -0
  338. package/dist/types/index.d.ts +2 -0
  339. package/dist/types/index.js +1 -0
  340. package/dist/types/runExecutionContext.d.ts +25 -0
  341. package/dist/types/runExecutionContext.js +28 -0
  342. package/dist/utils/oauthService.d.ts +71 -0
  343. package/dist/utils/oauthService.js +106 -0
  344. package/dist/utils/signozHelpers.d.ts +9 -0
  345. package/dist/utils/signozHelpers.js +33 -0
  346. package/dist/utils/speakeasy.d.ts +93 -0
  347. package/dist/utils/speakeasy.js +44 -0
  348. package/dist/utils/tempApiKeys.d.ts +17 -0
  349. package/dist/utils/tempApiKeys.js +26 -0
  350. package/dist/utils/workflowApiHelpers.d.ts +1 -0
  351. package/dist/utils/workflowApiHelpers.js +1 -0
  352. package/package.json +125 -0
@@ -0,0 +1,239 @@
1
+ import manageDbClient_default from "../data/db/manageDbClient.js";
2
+ import "../data/db/index.js";
3
+ import { createApiError, ensureBranchExists, getLogger, getProjectScopedRef, getTenantScopedRef, isRefWritable, resolveRef } from "@inkeep/agents-core";
4
+
5
+ //#region src/middleware/ref.ts
6
+ const logger = getLogger("ref-middleware");
7
+ /**
8
+ * Default tenant ID extractor - extracts from /tenants/{tenantId} path pattern
9
+ */
10
+ const defaultExtractTenantId = (c) => {
11
+ return c.req.path.match(/^\/(?:manage|run)\/tenants\/([^/]+)/)?.[1];
12
+ };
13
+ /**
14
+ * Default project ID extractor - extracts from /tenants/{tenantId}/projects/{projectId} or
15
+ * /tenants/{tenantId}/project-full/{projectId} path patterns
16
+ */
17
+ const defaultExtractProjectId = (c) => {
18
+ return c.req.path.match(/^\/(?:manage|run)\/tenants\/[^/]+\/(?:projects|project-full)(?:\/([^/]+))?/)?.[1];
19
+ };
20
+ /**
21
+ * Extract tenantId from the executionContext set by apiKeyAuth middleware.
22
+ */
23
+ const extractTenantIdFromExecutionContext = (c) => {
24
+ const executionContext = c.get("executionContext");
25
+ let tenantId;
26
+ if (executionContext) tenantId = executionContext.tenantId;
27
+ else tenantId = defaultExtractTenantId(c);
28
+ return tenantId;
29
+ };
30
+ /**
31
+ * Extract projectId from the executionContext set by apiKeyAuth middleware.
32
+ */
33
+ const extractProjectIdFromExecutionContext = (c) => {
34
+ const executionContext = c.get("executionContext");
35
+ let projectId;
36
+ if (executionContext) projectId = executionContext.projectId;
37
+ else projectId = defaultExtractProjectId(c);
38
+ return projectId;
39
+ };
40
+ /**
41
+ * Creates a ref resolution middleware factory.
42
+ *
43
+ * This middleware:
44
+ * 1. Extracts tenantId and projectId from the request
45
+ * 2. Resolves the `ref` query parameter to a ResolvedRef
46
+ * 3. Creates branches if needed (tenant_main, project_main)
47
+ * 4. Sets `resolvedRef` in the Hono context for downstream handlers
48
+ *
49
+ * @param db - The Doltgres database client to use for ref resolution
50
+ * @param options - Optional configuration for extraction and validation
51
+ * @returns Hono middleware function
52
+ *
53
+ * @example
54
+ * ```typescript
55
+ * import { createRefMiddleware } from '@inkeep/agents-core';
56
+ * import { manageDbClient } from './db';
57
+ *
58
+ * const refMiddleware = createRefMiddleware(manageDbClient);
59
+ * app.use('/tenants/*', refMiddleware);
60
+ * ```
61
+ */
62
+ const createRefMiddleware = (db, options = {}) => {
63
+ const { extractTenantId = defaultExtractTenantId, extractProjectId = defaultExtractProjectId, allowProjectIdFromBody = true } = options;
64
+ return async (c, next) => {
65
+ const ref = c.req.query("ref");
66
+ const pathSplit = c.req.path.split("/");
67
+ const tenantId = extractTenantId(c);
68
+ let projectId = extractProjectId(c);
69
+ if (!projectId && allowProjectIdFromBody && [
70
+ "POST",
71
+ "PUT",
72
+ "PATCH"
73
+ ].includes(c.req.method)) try {
74
+ const body = await c.req.json();
75
+ if (body && typeof body.projectId === "string") {
76
+ projectId = body.projectId;
77
+ logger.debug({ projectId }, "Extracted projectId from request body");
78
+ }
79
+ } catch {
80
+ logger.debug({}, "Could not extract projectId from body");
81
+ }
82
+ if (!tenantId) throw createApiError({
83
+ code: "bad_request",
84
+ message: "Missing tenantId"
85
+ });
86
+ if (process.env.ENVIRONMENT === "test") {
87
+ const defaultRef = {
88
+ type: "branch",
89
+ name: projectId ? getProjectScopedRef(tenantId, projectId, "main") : getTenantScopedRef(tenantId, "main"),
90
+ hash: "test-hash"
91
+ };
92
+ c.set("resolvedRef", defaultRef);
93
+ await next();
94
+ return;
95
+ }
96
+ if (pathSplit.length < 4 && ref !== "main" && ref !== void 0) throw createApiError({
97
+ code: "bad_request",
98
+ message: "Ref is not supported for this path"
99
+ });
100
+ let resolvedRef;
101
+ if (projectId) resolvedRef = await resolveProjectRef(db, c, tenantId, projectId, ref);
102
+ else resolvedRef = await resolveTenantRef(db, tenantId, ref);
103
+ if (c.req.path.includes("/signoz/")) logger.debug({
104
+ resolvedRef,
105
+ projectId,
106
+ tenantId
107
+ }, "Resolved ref");
108
+ else logger.info({
109
+ resolvedRef,
110
+ projectId,
111
+ tenantId
112
+ }, "Resolved ref");
113
+ c.set("resolvedRef", resolvedRef);
114
+ await next();
115
+ };
116
+ };
117
+ /**
118
+ * Resolve ref for project-scoped requests
119
+ */
120
+ async function resolveProjectRef(db, c, tenantId, projectId, ref) {
121
+ const projectMain = getProjectScopedRef(tenantId, projectId, "main");
122
+ const projectScopedRef = ref ? getProjectScopedRef(tenantId, projectId, ref) : projectMain;
123
+ if (ref && ref !== "main") {
124
+ let refResult$1 = await resolveRef(db)(projectScopedRef);
125
+ if (!refResult$1) refResult$1 = await resolveRef(db)(ref);
126
+ if (!refResult$1) throw createApiError({
127
+ code: "not_found",
128
+ message: `Unknown ref: ${ref}`
129
+ });
130
+ return refResult$1;
131
+ }
132
+ let refResult = null;
133
+ try {
134
+ refResult = await resolveRef(db)(projectMain);
135
+ } catch (error) {
136
+ logger.warn({
137
+ error,
138
+ projectMain
139
+ }, "Failed to resolve project main branch");
140
+ refResult = null;
141
+ }
142
+ if (!refResult) {
143
+ if (c.req.method === "PUT") {
144
+ const tenantMain = `${tenantId}_main`;
145
+ let tenantRefResult = await resolveRef(db)(tenantMain);
146
+ if (!tenantRefResult) {
147
+ await ensureBranchExists(db, tenantMain);
148
+ tenantRefResult = await resolveRef(db)(tenantMain);
149
+ }
150
+ if (tenantRefResult) return tenantRefResult;
151
+ throw createApiError({
152
+ code: "internal_server_error",
153
+ message: `Failed to create tenant main branch for upsert`
154
+ });
155
+ }
156
+ throw createApiError({
157
+ code: "not_found",
158
+ message: `Project not found: ${projectId}`
159
+ });
160
+ }
161
+ return refResult;
162
+ }
163
+ /**
164
+ * Resolve ref for tenant-level requests
165
+ */
166
+ async function resolveTenantRef(db, tenantId, ref) {
167
+ const tenantMain = `${tenantId}_main`;
168
+ if (ref && ref !== "main") {
169
+ const tenantScopedRef = `${tenantId}_${ref}`;
170
+ let refResult$1 = await resolveRef(db)(tenantScopedRef);
171
+ if (!refResult$1) refResult$1 = await resolveRef(db)(ref);
172
+ if (!refResult$1) throw createApiError({
173
+ code: "not_found",
174
+ message: `Unknown ref: ${ref}`
175
+ });
176
+ return refResult$1;
177
+ }
178
+ let refResult = await resolveRef(db)(tenantMain);
179
+ if (!refResult) {
180
+ await ensureBranchExists(db, tenantMain);
181
+ refResult = await resolveRef(db)(tenantMain);
182
+ if (!refResult) throw createApiError({
183
+ code: "internal_server_error",
184
+ message: `Failed to create tenant main branch: ${tenantMain}`
185
+ });
186
+ }
187
+ return refResult;
188
+ }
189
+ const writeProtectionMiddleware = async (c, next) => {
190
+ if (process.env.ENVIRONMENT === "test") {
191
+ await next();
192
+ return;
193
+ }
194
+ const resolvedRef = c.get("resolvedRef");
195
+ if (!resolvedRef) {
196
+ await next();
197
+ return;
198
+ }
199
+ const method = c.req.method;
200
+ if ([
201
+ "POST",
202
+ "PUT",
203
+ "PATCH",
204
+ "DELETE"
205
+ ].includes(method) && !isRefWritable(resolvedRef)) throw createApiError({
206
+ code: "bad_request",
207
+ message: `Cannot perform write operation on ${resolvedRef.type}. Tags and commits are immutable. Write to a branch instead.`
208
+ });
209
+ await next();
210
+ };
211
+ const manageRefMiddleware = createRefMiddleware(manageDbClient_default);
212
+ const runRefMiddleware = createRefMiddleware(manageDbClient_default, {
213
+ extractTenantId: extractTenantIdFromExecutionContext,
214
+ extractProjectId: extractProjectIdFromExecutionContext,
215
+ allowProjectIdFromBody: false
216
+ });
217
+ /**
218
+ * Extract tenantId from query parameters (for OAuth routes)
219
+ */
220
+ const extractTenantIdFromQuery = (c) => {
221
+ return c.req.query("tenantId");
222
+ };
223
+ /**
224
+ * Extract projectId from query parameters (for OAuth routes)
225
+ */
226
+ const extractProjectIdFromQuery = (c) => {
227
+ return c.req.query("projectId");
228
+ };
229
+ /**
230
+ * Ref middleware for OAuth routes - extracts tenant/project from query params
231
+ */
232
+ const oauthRefMiddleware = createRefMiddleware(manageDbClient_default, {
233
+ extractTenantId: extractTenantIdFromQuery,
234
+ extractProjectId: extractProjectIdFromQuery,
235
+ allowProjectIdFromBody: false
236
+ });
237
+
238
+ //#endregion
239
+ export { createRefMiddleware, manageRefMiddleware, oauthRefMiddleware, runRefMiddleware, writeProtectionMiddleware };
@@ -0,0 +1,14 @@
1
+ import { ManageAppVariables } from "../types/app.js";
2
+ import * as hono5 from "hono";
3
+
4
+ //#region src/middleware/requirePermission.d.ts
5
+ type Permission = {
6
+ [resource: string]: string | string[];
7
+ };
8
+ declare const requirePermission: <Env$1 extends {
9
+ Variables: ManageAppVariables;
10
+ } = {
11
+ Variables: ManageAppVariables;
12
+ }>(permissions: Permission) => hono5.MiddlewareHandler<Env$1, string, {}, Response>;
13
+ //#endregion
14
+ export { requirePermission };
@@ -0,0 +1,80 @@
1
+ import { env } from "../env.js";
2
+ import { createApiError } from "@inkeep/agents-core";
3
+ import { createMiddleware } from "hono/factory";
4
+ import { HTTPException } from "hono/http-exception";
5
+
6
+ //#region src/middleware/requirePermission.ts
7
+ function formatPermissionsForDisplay(permissions) {
8
+ const formatted = [];
9
+ for (const [resource, actions] of Object.entries(permissions)) {
10
+ const actionList = Array.isArray(actions) ? actions : [actions];
11
+ for (const action of actionList) formatted.push(`${resource}:${action}`);
12
+ }
13
+ return formatted;
14
+ }
15
+ const requirePermission = (permissions) => createMiddleware(async (c, next) => {
16
+ const isTestEnvironment = process.env.ENVIRONMENT === "test";
17
+ const auth = c.get("auth");
18
+ if (env.DISABLE_AUTH || isTestEnvironment || !auth) {
19
+ await next();
20
+ return;
21
+ }
22
+ const userId = c.get("userId");
23
+ const tenantId = c.get("tenantId");
24
+ const tenantRole = c.get("tenantRole");
25
+ const requiredPermissions = formatPermissionsForDisplay(permissions);
26
+ if (userId === "system" || userId?.startsWith("apikey:")) {
27
+ await next();
28
+ return;
29
+ }
30
+ if (!userId || !tenantId) throw createApiError({
31
+ code: "unauthorized",
32
+ message: "User or organization context not found. Ensure you are authenticated and belong to an organization.",
33
+ instance: c.req.path,
34
+ extensions: {
35
+ requiredPermissions,
36
+ context: {
37
+ hasUserId: !!userId,
38
+ hasTenantId: !!tenantId
39
+ }
40
+ }
41
+ });
42
+ try {
43
+ const result = await auth.api.hasPermission({
44
+ body: {
45
+ permissions,
46
+ organizationId: tenantId
47
+ },
48
+ headers: c.req.raw.headers
49
+ });
50
+ if (!result || !result.success) throw createApiError({
51
+ code: "forbidden",
52
+ message: `Permission denied. Required: ${requiredPermissions.join(", ")}`,
53
+ instance: c.req.path,
54
+ extensions: {
55
+ requiredPermissions,
56
+ context: {
57
+ userId,
58
+ organizationId: tenantId,
59
+ currentRole: tenantRole || "unknown"
60
+ }
61
+ }
62
+ });
63
+ await next();
64
+ } catch (error) {
65
+ if (error instanceof HTTPException) throw error;
66
+ const errorMessage = error instanceof Error ? error.message : "Unknown error";
67
+ throw createApiError({
68
+ code: "internal_server_error",
69
+ message: "Failed to verify permissions",
70
+ instance: c.req.path,
71
+ extensions: {
72
+ requiredPermissions,
73
+ internalError: errorMessage
74
+ }
75
+ });
76
+ }
77
+ });
78
+
79
+ //#endregion
80
+ export { requirePermission };
@@ -0,0 +1,29 @@
1
+ import * as hono6 from "hono";
2
+ import { BaseExecutionContext } from "@inkeep/agents-core";
3
+
4
+ //#region src/middleware/runAuth.d.ts
5
+ declare const runApiKeyAuth: () => hono6.MiddlewareHandler<{
6
+ Variables: {
7
+ executionContext: BaseExecutionContext;
8
+ };
9
+ }, string, {}, Response>;
10
+ /**
11
+ * Creates a middleware that applies API key authentication except for specified route patterns
12
+ * @param skipRouteCheck - Function that returns true if the route should skip authentication
13
+ */
14
+ declare const runApiKeyAuthExcept: (skipRouteCheck: (path: string) => boolean) => hono6.MiddlewareHandler<{
15
+ Variables: {
16
+ executionContext: BaseExecutionContext;
17
+ };
18
+ }, string, {}, Response>;
19
+ /**
20
+ * Helper middleware for endpoints that optionally support API key authentication
21
+ * If no auth header is present, it continues without setting the executionContext
22
+ */
23
+ declare const runOptionalAuth: () => hono6.MiddlewareHandler<{
24
+ Variables: {
25
+ executionContext?: BaseExecutionContext;
26
+ };
27
+ }, string, {}, Response>;
28
+ //#endregion
29
+ export { runApiKeyAuth, runApiKeyAuthExcept, runOptionalAuth };
@@ -0,0 +1,253 @@
1
+ import { getLogger as getLogger$1 } from "../logger.js";
2
+ import { env } from "../env.js";
3
+ import runDbClient_default from "../data/db/runDbClient.js";
4
+ import { createBaseExecutionContext } from "../types/runExecutionContext.js";
5
+ import { validateAndGetApiKey, validateTargetAgent, verifyServiceToken, verifyTempToken } from "@inkeep/agents-core";
6
+ import { createMiddleware } from "hono/factory";
7
+ import { HTTPException } from "hono/http-exception";
8
+
9
+ //#region src/middleware/runAuth.ts
10
+ const logger = getLogger$1("env-key-auth");
11
+ /**
12
+ * Extract common request data from the Hono context
13
+ */
14
+ function extractRequestData(c) {
15
+ const authHeader = c.req.header("Authorization");
16
+ const tenantId = c.req.header("x-inkeep-tenant-id");
17
+ const projectId = c.req.header("x-inkeep-project-id");
18
+ const agentId = c.req.header("x-inkeep-agent-id");
19
+ const subAgentId = c.req.header("x-inkeep-sub-agent-id");
20
+ const proto = c.req.header("x-forwarded-proto")?.split(",")[0].trim();
21
+ const host = c.req.header("x-forwarded-host")?.split(",")[0].trim() ?? c.req.header("host");
22
+ const reqUrl = new URL(c.req.url);
23
+ const ref = c.req.query("ref");
24
+ const baseUrl = proto && host ? `${proto}://${host}` : host ? `${reqUrl.protocol}//${host}` : `${reqUrl.origin}`;
25
+ return {
26
+ authHeader,
27
+ apiKey: authHeader?.startsWith("Bearer ") ? authHeader.substring(7) : void 0,
28
+ tenantId,
29
+ projectId,
30
+ agentId,
31
+ subAgentId,
32
+ ref,
33
+ baseUrl
34
+ };
35
+ }
36
+ /**
37
+ * Build the final execution context from auth result and request data
38
+ */
39
+ function buildExecutionContext(authResult, reqData) {
40
+ return createBaseExecutionContext({
41
+ apiKey: authResult.apiKey,
42
+ tenantId: authResult.tenantId,
43
+ projectId: authResult.projectId,
44
+ agentId: authResult.agentId,
45
+ apiKeyId: authResult.apiKeyId,
46
+ baseUrl: reqData.baseUrl,
47
+ subAgentId: reqData.subAgentId,
48
+ ref: reqData.ref,
49
+ metadata: authResult.metadata
50
+ });
51
+ }
52
+ /**
53
+ * Attempts to authenticate using a JWT temporary token
54
+ */
55
+ async function tryTempJwtAuth(apiKey) {
56
+ if (!apiKey.startsWith("eyJ") || !env.INKEEP_AGENTS_TEMP_JWT_PUBLIC_KEY) return null;
57
+ try {
58
+ const payload = await verifyTempToken(Buffer.from(env.INKEEP_AGENTS_TEMP_JWT_PUBLIC_KEY, "base64").toString("utf-8"), apiKey);
59
+ logger.info({}, "JWT temp token authenticated successfully");
60
+ return {
61
+ apiKey,
62
+ tenantId: payload.tenantId,
63
+ projectId: payload.projectId,
64
+ agentId: payload.agentId,
65
+ apiKeyId: "temp-jwt",
66
+ metadata: { initiatedBy: payload.initiatedBy }
67
+ };
68
+ } catch (error) {
69
+ logger.debug({ error }, "JWT verification failed");
70
+ return null;
71
+ }
72
+ }
73
+ /**
74
+ * Authenticate using a regular API key
75
+ */
76
+ async function tryApiKeyAuth(apiKey) {
77
+ const apiKeyRecord = await validateAndGetApiKey(apiKey, runDbClient_default);
78
+ if (!apiKeyRecord) return null;
79
+ logger.debug({
80
+ tenantId: apiKeyRecord.tenantId,
81
+ projectId: apiKeyRecord.projectId,
82
+ agentId: apiKeyRecord.agentId
83
+ }, "API key authenticated successfully");
84
+ return {
85
+ apiKey,
86
+ tenantId: apiKeyRecord.tenantId,
87
+ projectId: apiKeyRecord.projectId,
88
+ agentId: apiKeyRecord.agentId,
89
+ apiKeyId: apiKeyRecord.id
90
+ };
91
+ }
92
+ /**
93
+ * Authenticate using a team agent JWT token (for intra-tenant delegation)
94
+ */
95
+ async function tryTeamAgentAuth(token, expectedSubAgentId) {
96
+ const result = await verifyServiceToken(token);
97
+ if (!result.valid || !result.payload) {
98
+ logger.warn({ error: result.error }, "Invalid team agent JWT token");
99
+ return {
100
+ authResult: null,
101
+ failureMessage: `Invalid team agent token: ${result.error || "Invalid token"}`
102
+ };
103
+ }
104
+ const payload = result.payload;
105
+ if (expectedSubAgentId && !validateTargetAgent(payload, expectedSubAgentId)) {
106
+ logger.error({
107
+ tokenTargetAgentId: payload.aud,
108
+ expectedSubAgentId,
109
+ originAgentId: payload.sub
110
+ }, "Team agent token target mismatch");
111
+ throw new HTTPException(403, { message: "Token not valid for the requested agent" });
112
+ }
113
+ logger.info({
114
+ originAgentId: payload.sub,
115
+ targetAgentId: payload.aud,
116
+ tenantId: payload.tenantId,
117
+ projectId: payload.projectId
118
+ }, "Team agent JWT token authenticated successfully");
119
+ return { authResult: {
120
+ apiKey: "team-agent-jwt",
121
+ tenantId: payload.tenantId,
122
+ projectId: payload.projectId,
123
+ agentId: payload.aud,
124
+ apiKeyId: "team-agent-token",
125
+ metadata: {
126
+ teamDelegation: true,
127
+ originAgentId: payload.sub
128
+ }
129
+ } };
130
+ }
131
+ /**
132
+ * Authenticate using bypass secret (production mode bypass)
133
+ */
134
+ function tryBypassAuth(apiKey, reqData) {
135
+ if (!env.INKEEP_AGENTS_RUN_API_BYPASS_SECRET) return null;
136
+ if (apiKey !== env.INKEEP_AGENTS_RUN_API_BYPASS_SECRET) return null;
137
+ if (!reqData.tenantId || !reqData.projectId || !reqData.agentId) throw new HTTPException(401, { message: "Missing or invalid tenant, project, or agent ID" });
138
+ logger.info({}, "Bypass secret authenticated successfully");
139
+ return {
140
+ apiKey,
141
+ tenantId: reqData.tenantId,
142
+ projectId: reqData.projectId,
143
+ agentId: reqData.agentId,
144
+ apiKeyId: "bypass"
145
+ };
146
+ }
147
+ /**
148
+ * Create default development context
149
+ */
150
+ function createDevContext(reqData) {
151
+ const result = {
152
+ apiKey: "development",
153
+ tenantId: reqData.tenantId || "test-tenant",
154
+ projectId: reqData.projectId || "test-project",
155
+ agentId: reqData.agentId || "test-agent",
156
+ apiKeyId: "test-key"
157
+ };
158
+ if (!reqData.tenantId || !reqData.projectId) logger.warn({
159
+ hasTenantId: !!reqData.tenantId,
160
+ hasProjectId: !!reqData.projectId,
161
+ hasApiKey: !!reqData.apiKey,
162
+ apiKeyPrefix: reqData.apiKey?.substring(0, 10),
163
+ resultTenantId: result.tenantId,
164
+ resultProjectId: result.projectId
165
+ }, "createDevContext: Using fallback test values due to missing tenant/project in request");
166
+ return result;
167
+ }
168
+ /**
169
+ * Try all auth strategies in order, returning the first successful result
170
+ */
171
+ async function authenticateRequest(reqData) {
172
+ const { apiKey, subAgentId } = reqData;
173
+ if (!apiKey) return { authResult: null };
174
+ const jwtResult = await tryTempJwtAuth(apiKey);
175
+ if (jwtResult) return { authResult: jwtResult };
176
+ const bypassResult = tryBypassAuth(apiKey, reqData);
177
+ if (bypassResult) return { authResult: bypassResult };
178
+ const apiKeyResult = await tryApiKeyAuth(apiKey);
179
+ if (apiKeyResult) return { authResult: apiKeyResult };
180
+ const teamAttempt = await tryTeamAgentAuth(apiKey, subAgentId);
181
+ if (teamAttempt.authResult) return { authResult: teamAttempt.authResult };
182
+ return {
183
+ authResult: null,
184
+ failureMessage: teamAttempt.failureMessage
185
+ };
186
+ }
187
+ /**
188
+ * Core authentication handler that can be reused across middleware
189
+ */
190
+ async function runApiKeyAuthHandler(c, next) {
191
+ if (c.req.method === "OPTIONS") {
192
+ await next();
193
+ return;
194
+ }
195
+ const reqData = extractRequestData(c);
196
+ if (process.env.ENVIRONMENT === "development" || process.env.ENVIRONMENT === "test") {
197
+ logger.info({}, "development environment");
198
+ const attempt$1 = await authenticateRequest(reqData);
199
+ if (attempt$1.authResult) c.set("executionContext", buildExecutionContext(attempt$1.authResult, reqData));
200
+ else {
201
+ logger.info({}, reqData.apiKey ? "Development/test environment - fallback to default context due to invalid API key" : "Development/test environment - no API key provided, using default context");
202
+ c.set("executionContext", buildExecutionContext(createDevContext(reqData), reqData));
203
+ }
204
+ await next();
205
+ return;
206
+ }
207
+ if (!reqData.authHeader || !reqData.authHeader.startsWith("Bearer ")) throw new HTTPException(401, { message: "Missing or invalid authorization header. Expected: Bearer <api_key>" });
208
+ if (!reqData.apiKey || reqData.apiKey.length < 16) throw new HTTPException(401, { message: "Invalid API key format" });
209
+ let attempt = { authResult: null };
210
+ try {
211
+ attempt = await authenticateRequest(reqData);
212
+ } catch (error) {
213
+ if (error instanceof HTTPException) throw error;
214
+ logger.error({ error }, "Authentication failed");
215
+ throw new HTTPException(500, { message: "Authentication failed" });
216
+ }
217
+ if (!attempt.authResult) {
218
+ logger.error({}, "API key authentication error - no valid auth method found");
219
+ throw new HTTPException(401, { message: attempt.failureMessage || "Invalid Token" });
220
+ }
221
+ logger.debug({
222
+ tenantId: attempt.authResult.tenantId,
223
+ projectId: attempt.authResult.projectId,
224
+ agentId: attempt.authResult.agentId,
225
+ subAgentId: reqData.subAgentId
226
+ }, "API key authenticated successfully");
227
+ c.set("executionContext", buildExecutionContext(attempt.authResult, reqData));
228
+ await next();
229
+ }
230
+ const runApiKeyAuth = () => createMiddleware(runApiKeyAuthHandler);
231
+ /**
232
+ * Creates a middleware that applies API key authentication except for specified route patterns
233
+ * @param skipRouteCheck - Function that returns true if the route should skip authentication
234
+ */
235
+ const runApiKeyAuthExcept = (skipRouteCheck) => createMiddleware(async (c, next) => {
236
+ if (skipRouteCheck(c.req.path)) return next();
237
+ return runApiKeyAuthHandler(c, next);
238
+ });
239
+ /**
240
+ * Helper middleware for endpoints that optionally support API key authentication
241
+ * If no auth header is present, it continues without setting the executionContext
242
+ */
243
+ const runOptionalAuth = () => createMiddleware(async (c, next) => {
244
+ const authHeader = c.req.header("Authorization");
245
+ if (!authHeader || !authHeader.startsWith("Bearer ")) {
246
+ await next();
247
+ return;
248
+ }
249
+ return runApiKeyAuthHandler(c, next);
250
+ });
251
+
252
+ //#endregion
253
+ export { runApiKeyAuth, runApiKeyAuthExcept, runOptionalAuth };
@@ -0,0 +1,17 @@
1
+ import * as hono9 from "hono";
2
+
3
+ //#region src/middleware/sessionAuth.d.ts
4
+
5
+ /**
6
+ * Middleware to enforce session-based authentication.
7
+ * Requires that a user has already been authenticated via Better Auth session.
8
+ * Used primarily for manage routes that require an active user session.
9
+ */
10
+ declare const sessionAuth: () => hono9.MiddlewareHandler<any, string, {}, Response>;
11
+ /**
12
+ * Global session middleware - sets user and session in context for all routes
13
+ * Used for all routes that require an active user session.
14
+ */
15
+ declare const sessionContext: () => hono9.MiddlewareHandler<any, string, {}, Response>;
16
+ //#endregion
17
+ export { sessionAuth, sessionContext };
@@ -0,0 +1,58 @@
1
+ import { env } from "../env.js";
2
+ import { createApiError } from "@inkeep/agents-core";
3
+ import { createMiddleware } from "hono/factory";
4
+ import { HTTPException } from "hono/http-exception";
5
+
6
+ //#region src/middleware/sessionAuth.ts
7
+ /**
8
+ * Middleware to enforce session-based authentication.
9
+ * Requires that a user has already been authenticated via Better Auth session.
10
+ * Used primarily for manage routes that require an active user session.
11
+ */
12
+ const sessionAuth = () => createMiddleware(async (c, next) => {
13
+ try {
14
+ const user = c.get("user");
15
+ if (!user) throw createApiError({
16
+ code: "unauthorized",
17
+ message: "Please log in to access this resource"
18
+ });
19
+ c.set("userId", user.id);
20
+ c.set("userEmail", user.email);
21
+ await next();
22
+ } catch (error) {
23
+ if (error instanceof HTTPException) throw error;
24
+ throw createApiError({
25
+ code: "unauthorized",
26
+ message: "Authentication failed"
27
+ });
28
+ }
29
+ });
30
+ /**
31
+ * Global session middleware - sets user and session in context for all routes
32
+ * Used for all routes that require an active user session.
33
+ */
34
+ const sessionContext = () => createMiddleware(async (c, next) => {
35
+ const auth = c.get("auth");
36
+ if (env.DISABLE_AUTH || !auth) {
37
+ c.set("user", null);
38
+ c.set("session", null);
39
+ await next();
40
+ return;
41
+ }
42
+ const headers$1 = new Headers(c.req.raw.headers);
43
+ const forwardedCookie = headers$1.get("x-forwarded-cookie");
44
+ if (forwardedCookie && !headers$1.get("cookie")) headers$1.set("cookie", forwardedCookie);
45
+ const session = await auth.api.getSession({ headers: headers$1 });
46
+ if (!session) {
47
+ c.set("user", null);
48
+ c.set("session", null);
49
+ await next();
50
+ return;
51
+ }
52
+ c.set("user", session.user);
53
+ c.set("session", session.session);
54
+ await next();
55
+ });
56
+
57
+ //#endregion
58
+ export { sessionAuth, sessionContext };