@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,300 @@
1
+ import { getLogger as getLogger$1 } from "../../../logger.js";
2
+ import runDbClient_default from "../../../data/db/runDbClient.js";
3
+ import { contextValidationMiddleware } from "../context/validation.js";
4
+ import { handleContextResolution } from "../context/context.js";
5
+ import "../context/index.js";
6
+ import { errorOp } from "../utils/agent-operations.js";
7
+ import { createSSEStreamHelper } from "../utils/stream-helpers.js";
8
+ import { ExecutionHandler } from "../handlers/executionHandler.js";
9
+ import { OpenAPIHono, createRoute, z } from "@hono/zod-openapi";
10
+ import { createApiError, createMessage, createOrGetConversation, generateId, getActiveAgentForConversation, getConversationId, setActiveAgentForConversation } from "@inkeep/agents-core";
11
+ import { streamSSE } from "hono/streaming";
12
+ import { context, propagation, trace } from "@opentelemetry/api";
13
+
14
+ //#region src/domains/run/routes/chat.ts
15
+ const app = new OpenAPIHono();
16
+ const logger = getLogger$1("completionsHandler");
17
+ const chatCompletionsRoute = createRoute({
18
+ method: "post",
19
+ path: "/completions",
20
+ tags: ["chat"],
21
+ summary: "Create chat completion",
22
+ description: "Creates a new chat completion with streaming SSE response using the configured agent",
23
+ security: [{ bearerAuth: [] }],
24
+ request: { body: { content: { "application/json": { schema: z.object({
25
+ model: z.string().describe("The model to use for the completion"),
26
+ messages: z.array(z.object({
27
+ role: z.enum([
28
+ "system",
29
+ "user",
30
+ "assistant",
31
+ "function",
32
+ "tool"
33
+ ]).describe("The role of the message"),
34
+ content: z.union([z.string(), z.array(z.strictObject({
35
+ type: z.string(),
36
+ text: z.string().optional()
37
+ }))]).describe("The message content"),
38
+ name: z.string().optional().describe("The name of the message sender")
39
+ })).describe("The conversation messages"),
40
+ temperature: z.number().optional().describe("Controls randomness (0-1)"),
41
+ top_p: z.number().optional().describe("Controls nucleus sampling"),
42
+ n: z.number().optional().describe("Number of completions to generate"),
43
+ stream: z.boolean().optional().describe("Whether to stream the response"),
44
+ max_tokens: z.number().optional().describe("Maximum tokens to generate"),
45
+ presence_penalty: z.number().optional().describe("Presence penalty (-2 to 2)"),
46
+ frequency_penalty: z.number().optional().describe("Frequency penalty (-2 to 2)"),
47
+ logit_bias: z.record(z.string(), z.number()).optional().describe("Token logit bias"),
48
+ user: z.string().optional().describe("User identifier"),
49
+ conversationId: z.string().optional().describe("Conversation ID for multi-turn chat"),
50
+ tools: z.array(z.string()).optional().describe("Available tools"),
51
+ runConfig: z.record(z.string(), z.unknown()).optional().describe("Run configuration"),
52
+ headers: z.record(z.string(), z.unknown()).optional().describe("Headers data for template processing (validated against context config schema)")
53
+ }) } } } },
54
+ responses: {
55
+ 200: {
56
+ description: "Streaming chat completion response in Server-Sent Events format",
57
+ headers: z.object({
58
+ "Content-Type": z.string().default("text/event-stream"),
59
+ "Cache-Control": z.string().default("no-cache"),
60
+ Connection: z.string().default("keep-alive")
61
+ }),
62
+ content: { "text/event-stream": { schema: z.string().describe("Server-Sent Events stream with chat completion chunks") } }
63
+ },
64
+ 400: {
65
+ description: "Invalid request context or parameters",
66
+ content: { "application/json": { schema: z.object({
67
+ error: z.string(),
68
+ details: z.array(z.object({
69
+ field: z.string(),
70
+ message: z.string(),
71
+ value: z.unknown().optional()
72
+ })).optional()
73
+ }) } }
74
+ },
75
+ 404: {
76
+ description: "Agent or agent not found",
77
+ content: { "application/json": { schema: z.object({ error: z.string() }) } }
78
+ },
79
+ 500: {
80
+ description: "Internal server error",
81
+ content: { "application/json": { schema: z.object({
82
+ error: z.string(),
83
+ message: z.string()
84
+ }) } }
85
+ }
86
+ }
87
+ });
88
+ app.use("/completions", contextValidationMiddleware);
89
+ app.openapi(chatCompletionsRoute, async (c) => {
90
+ getLogger$1("chat").info({
91
+ path: c.req.path,
92
+ method: c.req.method,
93
+ params: c.req.param()
94
+ }, "Chat route accessed");
95
+ const otelHeaders = {
96
+ traceparent: c.req.header("traceparent"),
97
+ tracestate: c.req.header("tracestate"),
98
+ baggage: c.req.header("baggage")
99
+ };
100
+ logger.info({
101
+ otelHeaders,
102
+ path: c.req.path,
103
+ method: c.req.method
104
+ }, "OpenTelemetry headers: chat");
105
+ try {
106
+ const executionContext = c.get("executionContext");
107
+ const { tenantId, projectId, agentId } = executionContext;
108
+ getLogger$1("chat").debug({
109
+ tenantId,
110
+ agentId
111
+ }, "Extracted chat parameters from API key context");
112
+ const body = c.get("requestBody") || {};
113
+ const conversationId = body.conversationId || getConversationId();
114
+ const targetTenantId = c.req.header("x-target-tenant-id");
115
+ const targetProjectId = c.req.header("x-target-project-id");
116
+ const targetAgentId = c.req.header("x-target-agent-id");
117
+ const activeSpan = trace.getActiveSpan();
118
+ if (activeSpan) activeSpan.setAttributes({
119
+ "conversation.id": conversationId,
120
+ "tenant.id": tenantId,
121
+ "agent.id": agentId,
122
+ "project.id": projectId,
123
+ ...targetTenantId && { "target.tenant.id": targetTenantId },
124
+ ...targetProjectId && { "target.project.id": targetProjectId },
125
+ ...targetAgentId && { "target.agent.id": targetAgentId }
126
+ });
127
+ let currentBag = propagation.getBaggage(context.active());
128
+ if (!currentBag) currentBag = propagation.createBaggage();
129
+ currentBag = currentBag.setEntry("conversation.id", { value: conversationId });
130
+ const ctxWithBaggage = propagation.setBaggage(context.active(), currentBag);
131
+ return await context.with(ctxWithBaggage, async () => {
132
+ const fullAgent = executionContext.project.agents[agentId];
133
+ if (!fullAgent) throw createApiError({
134
+ code: "not_found",
135
+ message: "Agent not found"
136
+ });
137
+ const agent = fullAgent;
138
+ let defaultSubAgentId;
139
+ const agentKeys = Object.keys(fullAgent.subAgents || {});
140
+ const firstAgentId = agentKeys.length > 0 ? agentKeys[0] : "";
141
+ defaultSubAgentId = fullAgent.defaultSubAgentId || firstAgentId;
142
+ if (!defaultSubAgentId) throw createApiError({
143
+ code: "not_found",
144
+ message: "No default agent found in agent"
145
+ });
146
+ await createOrGetConversation(runDbClient_default)({
147
+ tenantId,
148
+ projectId,
149
+ id: conversationId,
150
+ agentId,
151
+ activeSubAgentId: defaultSubAgentId,
152
+ ref: executionContext.resolvedRef
153
+ });
154
+ const activeAgent = await getActiveAgentForConversation(runDbClient_default)({
155
+ scopes: {
156
+ tenantId,
157
+ projectId
158
+ },
159
+ conversationId
160
+ });
161
+ if (!activeAgent) await setActiveAgentForConversation(runDbClient_default)({
162
+ scopes: {
163
+ tenantId,
164
+ projectId
165
+ },
166
+ conversationId,
167
+ agentId,
168
+ subAgentId: defaultSubAgentId,
169
+ ref: executionContext.resolvedRef
170
+ });
171
+ const subAgentId = activeAgent?.activeSubAgentId || defaultSubAgentId;
172
+ if (!executionContext.project.agents[agentId]?.subAgents[subAgentId]) throw createApiError({
173
+ code: "not_found",
174
+ message: "Agent not found"
175
+ });
176
+ const validatedContext = c.get("validatedContext") || body.headers || {};
177
+ await handleContextResolution({
178
+ executionContext,
179
+ conversationId,
180
+ headers: validatedContext,
181
+ credentialStores: c.get("credentialStores")
182
+ });
183
+ logger.info({
184
+ tenantId,
185
+ projectId,
186
+ agentId,
187
+ conversationId,
188
+ defaultSubAgentId,
189
+ activeSubAgentId: activeAgent?.activeSubAgentId || "none",
190
+ hasContextConfig: !!agent.contextConfigId,
191
+ hasHeaders: !!body.headers,
192
+ hasValidatedContext: !!validatedContext,
193
+ validatedContextKeys: Object.keys(validatedContext)
194
+ }, "parameters");
195
+ const requestId = `chatcmpl-${Date.now()}`;
196
+ const timestamp = Math.floor(Date.now() / 1e3);
197
+ const lastUserMessage = body.messages.filter((msg) => msg.role === "user").slice(-1)[0];
198
+ const userMessage = lastUserMessage ? getMessageText(lastUserMessage.content) : "";
199
+ const messageSpan = trace.getActiveSpan();
200
+ if (messageSpan) {
201
+ messageSpan.setAttributes({
202
+ "message.content": userMessage,
203
+ "message.timestamp": Date.now()
204
+ });
205
+ if (executionContext.metadata?.initiatedBy) {
206
+ messageSpan.setAttribute("user.type", executionContext.metadata.initiatedBy.type);
207
+ messageSpan.setAttribute("user.id", executionContext.metadata.initiatedBy.id);
208
+ }
209
+ }
210
+ await createMessage(runDbClient_default)({
211
+ id: generateId(),
212
+ tenantId,
213
+ projectId,
214
+ conversationId,
215
+ role: "user",
216
+ content: { text: userMessage },
217
+ visibility: "user-facing",
218
+ messageType: "chat"
219
+ });
220
+ if (messageSpan) messageSpan.addEvent("user.message.stored", {
221
+ "message.id": conversationId,
222
+ "database.operation": "insert"
223
+ });
224
+ return streamSSE(c, async (stream$1) => {
225
+ try {
226
+ const sseHelper = createSSEStreamHelper(stream$1, requestId, timestamp);
227
+ await sseHelper.writeRole();
228
+ logger.info({ subAgentId }, "Starting execution");
229
+ const emitOperations = c.req.header("x-emit-operations") === "true";
230
+ const forwardedHeaders = {};
231
+ const xForwardedCookie = c.req.header("x-forwarded-cookie");
232
+ const cookie = c.req.header("cookie");
233
+ const clientTimezone = c.req.header("x-inkeep-client-timezone");
234
+ const clientTimestamp = c.req.header("x-inkeep-client-timestamp");
235
+ if (xForwardedCookie) forwardedHeaders["x-forwarded-cookie"] = xForwardedCookie;
236
+ else if (cookie) forwardedHeaders["x-forwarded-cookie"] = cookie;
237
+ if (clientTimezone && clientTimestamp) {
238
+ const isValidTimezone = clientTimezone.length < 100 && /^[A-Za-z0-9_/\-+]+$/.test(clientTimezone);
239
+ const isValidTimestamp = clientTimestamp.length < 50 && /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{3})?Z$/.test(clientTimestamp);
240
+ if (isValidTimezone && isValidTimestamp) {
241
+ forwardedHeaders["x-inkeep-client-timezone"] = clientTimezone;
242
+ forwardedHeaders["x-inkeep-client-timestamp"] = clientTimestamp;
243
+ } else logger.warn({
244
+ clientTimezone: isValidTimezone ? clientTimezone : clientTimezone.substring(0, 100),
245
+ clientTimestamp: isValidTimestamp ? clientTimestamp : clientTimestamp.substring(0, 50),
246
+ isValidTimezone,
247
+ isValidTimestamp
248
+ }, "Invalid client timezone or timestamp format, ignoring both");
249
+ } else if (clientTimezone || clientTimestamp) logger.warn({
250
+ hasTimezone: !!clientTimezone,
251
+ hasTimestamp: !!clientTimestamp
252
+ }, "Client timezone and timestamp must both be present, ignoring");
253
+ const result = await new ExecutionHandler().execute({
254
+ executionContext,
255
+ conversationId,
256
+ userMessage,
257
+ initialAgentId: subAgentId,
258
+ requestId,
259
+ sseHelper,
260
+ emitOperations,
261
+ forwardedHeaders
262
+ });
263
+ logger.info({ result }, `Execution completed: ${result.success ? "success" : "failed"} after ${result.iterations} iterations`);
264
+ if (!result.success) await sseHelper.writeOperation(errorOp("Sorry, I was unable to process your request at this time. Please try again.", "system"));
265
+ await sseHelper.complete();
266
+ } catch (error) {
267
+ logger.error({
268
+ error: error instanceof Error ? error.message : error,
269
+ stack: error instanceof Error ? error.stack : void 0
270
+ }, "Error during streaming execution");
271
+ try {
272
+ const sseHelper = createSSEStreamHelper(stream$1, requestId, timestamp);
273
+ await sseHelper.writeOperation(errorOp("Sorry, I was unable to process your request at this time. Please try again.", "system"));
274
+ await sseHelper.complete();
275
+ } catch (streamError) {
276
+ logger.error({ streamError }, "Failed to write error to stream");
277
+ }
278
+ }
279
+ });
280
+ });
281
+ } catch (error) {
282
+ logger.error({
283
+ error: error instanceof Error ? error.message : error,
284
+ stack: error instanceof Error ? error.stack : void 0
285
+ }, "Error in chat completions endpoint before streaming");
286
+ if (error && typeof error === "object" && "status" in error) throw error;
287
+ throw createApiError({
288
+ code: "internal_server_error",
289
+ message: error instanceof Error ? error.message : "Failed to process chat completion"
290
+ });
291
+ }
292
+ });
293
+ const getMessageText = (content) => {
294
+ if (typeof content === "string") return content;
295
+ return content.filter((item) => item.type === "text" && item.text).map((item) => item.text).join(" ");
296
+ };
297
+ var chat_default = app;
298
+
299
+ //#endregion
300
+ export { chat_default as default };
@@ -0,0 +1,14 @@
1
+ import { OpenAPIHono } from "@hono/zod-openapi";
2
+ import { CredentialStoreRegistry, FullExecutionContext } from "@inkeep/agents-core";
3
+
4
+ //#region src/domains/run/routes/chatDataStream.d.ts
5
+ type AppVariables = {
6
+ credentialStores: CredentialStoreRegistry;
7
+ requestBody?: any;
8
+ executionContext: FullExecutionContext;
9
+ };
10
+ declare const app: OpenAPIHono<{
11
+ Variables: AppVariables;
12
+ }, {}, "/">;
13
+ //#endregion
14
+ export { app as default };
@@ -0,0 +1,381 @@
1
+ import { getLogger as getLogger$1 } from "../../../logger.js";
2
+ import runDbClient_default from "../../../data/db/runDbClient.js";
3
+ import { contextValidationMiddleware } from "../context/validation.js";
4
+ import { handleContextResolution } from "../context/context.js";
5
+ import "../context/index.js";
6
+ import { pendingToolApprovalManager } from "../services/PendingToolApprovalManager.js";
7
+ import { errorOp } from "../utils/agent-operations.js";
8
+ import { createBufferingStreamHelper, createVercelStreamHelper } from "../utils/stream-helpers.js";
9
+ import { ExecutionHandler } from "../handlers/executionHandler.js";
10
+ import { OpenAPIHono, createRoute, z } from "@hono/zod-openapi";
11
+ import { commonGetErrorResponses, createApiError, createMessage, generateId, getActiveAgentForConversation, getConversation, getConversationId, loggerFactory, setActiveAgentForConversation } from "@inkeep/agents-core";
12
+ import { JsonToSseTransformStream, createUIMessageStream } from "ai";
13
+ import { stream } from "hono/streaming";
14
+ import { context, propagation, trace } from "@opentelemetry/api";
15
+
16
+ //#region src/domains/run/routes/chatDataStream.ts
17
+ const app = new OpenAPIHono();
18
+ const logger = getLogger$1("chatDataStream");
19
+ const chatDataStreamRoute = createRoute({
20
+ method: "post",
21
+ path: "/chat",
22
+ tags: ["chat"],
23
+ summary: "Chat (Vercel Streaming Protocol)",
24
+ description: "Chat completion endpoint streaming with Vercel data stream protocol.",
25
+ security: [{ bearerAuth: [] }],
26
+ request: { body: { content: { "application/json": { schema: z.object({
27
+ model: z.string().optional(),
28
+ messages: z.array(z.object({
29
+ role: z.enum([
30
+ "system",
31
+ "user",
32
+ "assistant",
33
+ "function",
34
+ "tool"
35
+ ]),
36
+ content: z.any(),
37
+ parts: z.array(z.object({
38
+ type: z.union([z.enum([
39
+ "text",
40
+ "image",
41
+ "audio",
42
+ "video",
43
+ "file"
44
+ ]), z.string().regex(/^data-/, "Type must start with \"data-\"")]),
45
+ text: z.string().optional()
46
+ })).optional()
47
+ })),
48
+ id: z.string().optional(),
49
+ conversationId: z.string().optional(),
50
+ stream: z.boolean().optional().describe("Whether to stream the response").default(true),
51
+ max_tokens: z.number().optional().describe("Maximum tokens to generate"),
52
+ headers: z.record(z.string(), z.unknown()).optional().describe("Headers data for template processing"),
53
+ runConfig: z.record(z.string(), z.unknown()).optional().describe("Run configuration")
54
+ }) } } } },
55
+ responses: {
56
+ 200: {
57
+ description: "Streamed chat completion",
58
+ headers: z.object({
59
+ "Content-Type": z.string().default("text/plain; charset=utf-8"),
60
+ "x-vercel-ai-data-stream": z.string().default("v1")
61
+ })
62
+ },
63
+ ...commonGetErrorResponses
64
+ }
65
+ });
66
+ app.use("/chat", contextValidationMiddleware);
67
+ app.openapi(chatDataStreamRoute, async (c) => {
68
+ try {
69
+ const executionContext = c.get("executionContext");
70
+ const { tenantId, projectId, agentId } = executionContext;
71
+ loggerFactory.getLogger("chatDataStream").debug({
72
+ tenantId,
73
+ projectId,
74
+ agentId
75
+ }, "Extracted chatDataStream parameters");
76
+ const body = c.get("requestBody") || {};
77
+ const conversationId = body.conversationId || getConversationId();
78
+ const targetTenantId = c.req.header("x-target-tenant-id");
79
+ const targetProjectId = c.req.header("x-target-project-id");
80
+ const targetAgentId = c.req.header("x-target-agent-id");
81
+ const forwardedHeaders = {};
82
+ const xForwardedCookie = c.req.header("x-forwarded-cookie");
83
+ const cookie = c.req.header("cookie");
84
+ const clientTimezone = c.req.header("x-inkeep-client-timezone");
85
+ const clientTimestamp = c.req.header("x-inkeep-client-timestamp");
86
+ if (xForwardedCookie) forwardedHeaders["x-forwarded-cookie"] = xForwardedCookie;
87
+ else if (cookie) forwardedHeaders["x-forwarded-cookie"] = cookie;
88
+ if (clientTimezone && clientTimestamp) {
89
+ const isValidTimezone = clientTimezone.length < 100 && /^[A-Za-z0-9_/\-+]+$/.test(clientTimezone);
90
+ const isValidTimestamp = clientTimestamp.length < 50 && /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{3})?Z$/.test(clientTimestamp);
91
+ if (isValidTimezone && isValidTimestamp) {
92
+ forwardedHeaders["x-inkeep-client-timezone"] = clientTimezone;
93
+ forwardedHeaders["x-inkeep-client-timestamp"] = clientTimestamp;
94
+ } else logger.warn({
95
+ clientTimezone: isValidTimezone ? clientTimezone : clientTimezone.substring(0, 100),
96
+ clientTimestamp: isValidTimestamp ? clientTimestamp : clientTimestamp.substring(0, 50),
97
+ isValidTimezone,
98
+ isValidTimestamp
99
+ }, "Invalid client timezone or timestamp format, ignoring both");
100
+ } else if (clientTimezone || clientTimestamp) logger.warn({
101
+ hasTimezone: !!clientTimezone,
102
+ hasTimestamp: !!clientTimestamp
103
+ }, "Client timezone and timestamp must both be present, ignoring");
104
+ const activeSpan = trace.getActiveSpan();
105
+ if (activeSpan) activeSpan.setAttributes({
106
+ "conversation.id": conversationId,
107
+ "tenant.id": tenantId,
108
+ "agent.id": agentId,
109
+ "project.id": projectId,
110
+ ...targetTenantId && { "target.tenant.id": targetTenantId },
111
+ ...targetProjectId && { "target.project.id": targetProjectId },
112
+ ...targetAgentId && { "target.agent.id": targetAgentId }
113
+ });
114
+ let currentBag = propagation.getBaggage(context.active());
115
+ if (!currentBag) currentBag = propagation.createBaggage();
116
+ currentBag = currentBag.setEntry("conversation.id", { value: conversationId });
117
+ const ctxWithBaggage = propagation.setBaggage(context.active(), currentBag);
118
+ return await context.with(ctxWithBaggage, async () => {
119
+ const agent = executionContext.project.agents[agentId];
120
+ if (!agent) throw createApiError({
121
+ code: "not_found",
122
+ message: "Agent not found"
123
+ });
124
+ const defaultSubAgentId = agent.defaultSubAgentId;
125
+ const agentName = agent.name;
126
+ if (!defaultSubAgentId) throw createApiError({
127
+ code: "bad_request",
128
+ message: "Agent does not have a default agent configured"
129
+ });
130
+ const activeAgent = await getActiveAgentForConversation(runDbClient_default)({
131
+ scopes: {
132
+ tenantId,
133
+ projectId
134
+ },
135
+ conversationId
136
+ });
137
+ if (!activeAgent) await setActiveAgentForConversation(runDbClient_default)({
138
+ scopes: {
139
+ tenantId,
140
+ projectId
141
+ },
142
+ conversationId,
143
+ subAgentId: defaultSubAgentId,
144
+ ref: executionContext.resolvedRef,
145
+ agentId
146
+ });
147
+ const subAgentId = activeAgent?.activeSubAgentId || defaultSubAgentId;
148
+ logger.info({ subAgentId }, "subAgentId");
149
+ if (!executionContext.project.agents[agentId]?.subAgents[subAgentId]) {
150
+ logger.error({ subAgentId }, "subAgentId not found");
151
+ throw createApiError({
152
+ code: "not_found",
153
+ message: "Agent not found"
154
+ });
155
+ }
156
+ await handleContextResolution({
157
+ executionContext,
158
+ conversationId,
159
+ headers: c.get("validatedContext") || body.headers || {},
160
+ credentialStores: c.get("credentialStores")
161
+ });
162
+ const lastUserMessage = body.messages.filter((m) => m.role === "user").slice(-1)[0];
163
+ const userText = typeof lastUserMessage?.content === "string" ? lastUserMessage.content : lastUserMessage?.parts?.map((p) => p.text).join("") || "";
164
+ logger.info({
165
+ userText,
166
+ lastUserMessage
167
+ }, "userText");
168
+ const messageSpan = trace.getActiveSpan();
169
+ if (messageSpan) {
170
+ messageSpan.setAttributes({
171
+ "message.timestamp": (/* @__PURE__ */ new Date()).toISOString(),
172
+ "message.content": userText,
173
+ "agent.name": agentName
174
+ });
175
+ if (executionContext.metadata?.initiatedBy) {
176
+ messageSpan.setAttribute("user.type", executionContext.metadata.initiatedBy.type);
177
+ messageSpan.setAttribute("user.id", executionContext.metadata.initiatedBy.id);
178
+ }
179
+ }
180
+ await createMessage(runDbClient_default)({
181
+ id: generateId(),
182
+ tenantId,
183
+ projectId,
184
+ conversationId,
185
+ role: "user",
186
+ content: { text: userText },
187
+ visibility: "user-facing",
188
+ messageType: "chat"
189
+ });
190
+ if (messageSpan) messageSpan.addEvent("user.message.stored", {
191
+ "message.id": conversationId,
192
+ "database.operation": "insert"
193
+ });
194
+ if (!(body.stream !== false)) {
195
+ const emitOperations = c.req.header("x-emit-operations") === "true";
196
+ const bufferingHelper = createBufferingStreamHelper();
197
+ const result = await new ExecutionHandler().execute({
198
+ executionContext,
199
+ conversationId,
200
+ userMessage: userText,
201
+ initialAgentId: subAgentId,
202
+ requestId: `chat-${Date.now()}`,
203
+ sseHelper: bufferingHelper,
204
+ emitOperations,
205
+ forwardedHeaders
206
+ });
207
+ const captured = bufferingHelper.getCapturedResponse();
208
+ return c.json({
209
+ id: `chat-${Date.now()}`,
210
+ object: "chat.completion",
211
+ created: Math.floor(Date.now() / 1e3),
212
+ model: agentName,
213
+ choices: [{
214
+ index: 0,
215
+ message: {
216
+ role: "assistant",
217
+ content: captured.hasError ? captured.errorMessage : captured.text
218
+ },
219
+ finish_reason: result.success && !captured.hasError ? "stop" : "error"
220
+ }],
221
+ usage: {
222
+ prompt_tokens: 0,
223
+ completion_tokens: 0,
224
+ total_tokens: 0
225
+ }
226
+ });
227
+ }
228
+ const dataStream = createUIMessageStream({ execute: async ({ writer }) => {
229
+ const streamHelper = createVercelStreamHelper(writer);
230
+ try {
231
+ const emitOperations = c.req.header("x-emit-operations") === "true";
232
+ const executionHandler = new ExecutionHandler();
233
+ const datasetRunId = c.req.header("x-inkeep-dataset-run-id");
234
+ if (!(await executionHandler.execute({
235
+ executionContext,
236
+ conversationId,
237
+ userMessage: userText,
238
+ initialAgentId: subAgentId,
239
+ requestId: `chatds-${Date.now()}`,
240
+ sseHelper: streamHelper,
241
+ emitOperations,
242
+ datasetRunId: datasetRunId || void 0,
243
+ forwardedHeaders
244
+ })).success) await streamHelper.writeOperation(errorOp("Unable to process request", "system"));
245
+ } catch (err) {
246
+ logger.error({ err }, "Streaming error");
247
+ await streamHelper.writeOperation(errorOp("Internal server error", "system"));
248
+ } finally {
249
+ if ("cleanup" in streamHelper && typeof streamHelper.cleanup === "function") streamHelper.cleanup();
250
+ }
251
+ } });
252
+ c.header("content-type", "text/event-stream");
253
+ c.header("cache-control", "no-cache");
254
+ c.header("connection", "keep-alive");
255
+ c.header("x-vercel-ai-data-stream", "v2");
256
+ c.header("x-accel-buffering", "no");
257
+ return stream(c, (stream$1) => stream$1.pipe(dataStream.pipeThrough(new JsonToSseTransformStream()).pipeThrough(new TextEncoderStream())));
258
+ });
259
+ } catch (error) {
260
+ logger.error({
261
+ error,
262
+ errorMessage: error instanceof Error ? error.message : String(error),
263
+ errorStack: error instanceof Error ? error.stack : void 0,
264
+ errorType: error?.constructor?.name
265
+ }, "chatDataStream error - DETAILED");
266
+ throw createApiError({
267
+ code: "internal_server_error",
268
+ message: "Failed to process chat completion"
269
+ });
270
+ }
271
+ });
272
+ const toolApprovalRoute = createRoute({
273
+ method: "post",
274
+ path: "/tool-approvals",
275
+ tags: ["chat"],
276
+ summary: "Approve or deny tool execution",
277
+ description: "Handle user approval/denial of tool execution requests during conversations",
278
+ security: [{ bearerAuth: [] }],
279
+ request: { body: { content: { "application/json": { schema: z.object({
280
+ conversationId: z.string().describe("The conversation ID"),
281
+ toolCallId: z.string().describe("The tool call ID to respond to"),
282
+ approved: z.boolean().describe("Whether the tool execution is approved"),
283
+ reason: z.string().optional().describe("Optional reason for the decision")
284
+ }) } } } },
285
+ responses: {
286
+ 200: {
287
+ description: "Tool approval response processed successfully",
288
+ content: { "application/json": { schema: z.object({
289
+ success: z.boolean(),
290
+ message: z.string().optional()
291
+ }) } }
292
+ },
293
+ 400: {
294
+ description: "Bad request - invalid tool call ID or conversation ID",
295
+ content: { "application/json": { schema: z.object({ error: z.string() }) } }
296
+ },
297
+ 404: {
298
+ description: "Tool call not found or already processed",
299
+ content: { "application/json": { schema: z.object({ error: z.string() }) } }
300
+ },
301
+ 500: {
302
+ description: "Internal server error",
303
+ content: { "application/json": { schema: z.object({
304
+ error: z.string(),
305
+ message: z.string()
306
+ }) } }
307
+ }
308
+ }
309
+ });
310
+ app.openapi(toolApprovalRoute, async (c) => {
311
+ return trace.getTracer("tool-approval-handler").startActiveSpan("tool_approval_request", async (span) => {
312
+ try {
313
+ const { tenantId, projectId } = c.get("executionContext");
314
+ const { conversationId, toolCallId, approved, reason } = await c.req.json();
315
+ logger.info({
316
+ conversationId,
317
+ toolCallId,
318
+ approved,
319
+ reason,
320
+ tenantId,
321
+ projectId
322
+ }, "Processing tool approval request");
323
+ if (!await getConversation(runDbClient_default)({
324
+ scopes: {
325
+ tenantId,
326
+ projectId
327
+ },
328
+ conversationId
329
+ })) {
330
+ span.setStatus({
331
+ code: 1,
332
+ message: "Conversation not found"
333
+ });
334
+ return c.json({ error: "Conversation not found" }, 404);
335
+ }
336
+ let success = false;
337
+ if (approved) success = pendingToolApprovalManager.approveToolCall(toolCallId);
338
+ else success = pendingToolApprovalManager.denyToolCall(toolCallId, reason);
339
+ if (!success) {
340
+ span.setStatus({
341
+ code: 1,
342
+ message: "Tool call not found"
343
+ });
344
+ return c.json({ error: "Tool call not found or already processed" }, 404);
345
+ }
346
+ logger.info({
347
+ conversationId,
348
+ toolCallId,
349
+ approved
350
+ }, "Tool approval processed successfully");
351
+ span.setStatus({
352
+ code: 1,
353
+ message: "Success"
354
+ });
355
+ return c.json({
356
+ success: true,
357
+ message: approved ? "Tool execution approved" : "Tool execution denied"
358
+ });
359
+ } catch (error) {
360
+ const errorMessage = error instanceof Error ? error.message : "Unknown error";
361
+ logger.error({
362
+ error: errorMessage,
363
+ stack: error instanceof Error ? error.stack : void 0
364
+ }, "Failed to process tool approval");
365
+ span.setStatus({
366
+ code: 2,
367
+ message: errorMessage
368
+ });
369
+ return c.json({
370
+ error: "Internal server error",
371
+ message: errorMessage
372
+ }, 500);
373
+ } finally {
374
+ span.end();
375
+ }
376
+ });
377
+ });
378
+ var chatDataStream_default = app;
379
+
380
+ //#endregion
381
+ export { chatDataStream_default as default };