@inkeep/agents-api 0.0.1

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 +46446 -0
  4. package/dist/.well-known/workflow/v1/flow.cjs.debug.json +8 -0
  5. package/dist/.well-known/workflow/v1/manifest.debug.json +93 -0
  6. package/dist/.well-known/workflow/v1/step.cjs +219923 -0
  7. package/dist/.well-known/workflow/v1/step.cjs.debug.json +8 -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 +28 -0
  40. package/dist/domains/evals/workflow/functions/evaluateConversation.js +134 -0
  41. package/dist/domains/evals/workflow/functions/runDatasetItem.d.ts +36 -0
  42. package/dist/domains/evals/workflow/functions/runDatasetItem.js +204 -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 +264 -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 +423 -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 +582 -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 +79 -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 +384 -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 +42 -0
  204. package/dist/domains/run/handlers/executionHandler.js +484 -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 +396 -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 +9 -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 +44 -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 +126 -0
@@ -0,0 +1,629 @@
1
+ import { getLogger as getLogger$1 } from "../../../logger.js";
2
+ import runDbClient_default from "../../../data/db/runDbClient.js";
3
+ import { toolSessionManager } from "../agents/ToolSessionManager.js";
4
+ import { extractFullFields, extractPreviewFields } from "../utils/schema-validation.js";
5
+ import { agentSessionManager } from "./AgentSession.js";
6
+ import { getLedgerArtifacts, getTask, listTaskIdsByContextId, upsertLedgerArtifact } from "@inkeep/agents-core";
7
+ import jmespath from "jmespath";
8
+
9
+ //#region src/domains/run/services/ArtifactService.ts
10
+ const logger = getLogger$1("ArtifactService");
11
+ /**
12
+ * Service class responsible for artifact business logic operations
13
+ * Handles database persistence, tool result extraction, and artifact management
14
+ * Separated from parsing concerns for better architecture
15
+ */
16
+ var ArtifactService = class ArtifactService {
17
+ createdArtifacts = /* @__PURE__ */ new Map();
18
+ static selectorCache = /* @__PURE__ */ new Map();
19
+ constructor(context) {
20
+ this.context = context;
21
+ }
22
+ /**
23
+ * Clear static caches to prevent memory leaks between sessions
24
+ */
25
+ static clearCaches() {
26
+ ArtifactService.selectorCache.clear();
27
+ }
28
+ /**
29
+ * Update artifact components in the context
30
+ */
31
+ updateArtifactComponents(artifactComponents) {
32
+ this.context.artifactComponents = artifactComponents;
33
+ }
34
+ /**
35
+ * Get all artifacts for a context from database
36
+ */
37
+ async getContextArtifacts(contextId) {
38
+ const artifacts = /* @__PURE__ */ new Map();
39
+ const { tenantId, projectId } = this.context.executionContext;
40
+ try {
41
+ const taskIds = await listTaskIdsByContextId(runDbClient_default)({ contextId });
42
+ for (const taskId of taskIds) {
43
+ if (!await getTask(runDbClient_default)({ id: taskId })) {
44
+ logger.warn({ taskId }, "Task not found when fetching artifacts");
45
+ continue;
46
+ }
47
+ const taskArtifacts = await getLedgerArtifacts(runDbClient_default)({
48
+ scopes: {
49
+ tenantId,
50
+ projectId
51
+ },
52
+ taskId
53
+ });
54
+ for (const artifact of taskArtifacts) {
55
+ const toolCallId = artifact.metadata?.toolCallId || "";
56
+ if (toolCallId) {
57
+ const key = `${artifact.artifactId}:${toolCallId}`;
58
+ artifacts.set(key, artifact);
59
+ }
60
+ const taskKey = `${artifact.artifactId}:${artifact.taskId}`;
61
+ artifacts.set(taskKey, artifact);
62
+ }
63
+ }
64
+ } catch (error) {
65
+ logger.error({
66
+ error,
67
+ contextId
68
+ }, "Error loading context artifacts");
69
+ }
70
+ return artifacts;
71
+ }
72
+ /**
73
+ * Create artifact from tool result and request data
74
+ */
75
+ async createArtifact(request, subAgentId) {
76
+ if (!this.context.sessionId) {
77
+ logger.warn({ request }, "No session ID available for artifact creation");
78
+ return null;
79
+ }
80
+ const toolResult = toolSessionManager.getToolResult(this.context.sessionId, request.toolCallId);
81
+ if (!toolResult) {
82
+ logger.warn({
83
+ request,
84
+ sessionId: this.context.sessionId
85
+ }, "Tool result not found for artifact");
86
+ return null;
87
+ }
88
+ try {
89
+ const toolResultData = toolResult && typeof toolResult === "object" && !Array.isArray(toolResult) ? Object.fromEntries(Object.entries(toolResult).filter(([key]) => key !== "_structureHints")) : toolResult;
90
+ const sanitizedBaseSelector = this.sanitizeJMESPathSelector(request.baseSelector);
91
+ let selectedData = jmespath.search(toolResultData, sanitizedBaseSelector);
92
+ if (Array.isArray(selectedData)) selectedData = selectedData.length > 0 ? selectedData[0] : {};
93
+ if (!selectedData) {
94
+ logger.warn({
95
+ request,
96
+ baseSelector: request.baseSelector
97
+ }, "Base selector returned no data - using empty object as fallback");
98
+ selectedData = {};
99
+ }
100
+ const component = this.context.artifactComponents?.find((ac) => ac.name === request.type);
101
+ let summaryData = {};
102
+ let fullData = {};
103
+ let previewSchema = null;
104
+ let fullSchema = null;
105
+ if (component?.props) {
106
+ previewSchema = extractPreviewFields(component.props);
107
+ fullSchema = extractFullFields(component.props);
108
+ summaryData = this.extractPropsFromSchema(selectedData, previewSchema, request.detailsSelector || {});
109
+ fullData = this.extractPropsFromSchema(selectedData, fullSchema, request.detailsSelector || {});
110
+ } else {
111
+ summaryData = selectedData;
112
+ fullData = selectedData;
113
+ }
114
+ if (!fullData || Object.keys(fullData).length === 0 || Object.values(fullData).every((val) => val === null || val === void 0 || val === "" || Array.isArray(val) && val.length === 0 || typeof val === "object" && Object.keys(val).length === 0)) fullData = { baseSelector: selectedData };
115
+ const cleanedSummaryData = this.cleanEscapedContent(summaryData);
116
+ const cleanedFullData = this.cleanEscapedContent(fullData);
117
+ const schemaValidation = this.validateExtractedData(request.artifactId, request.type, cleanedSummaryData, cleanedFullData, previewSchema, fullSchema, component?.props);
118
+ const artifactData = {
119
+ artifactId: request.artifactId,
120
+ toolCallId: request.toolCallId,
121
+ name: "Processing...",
122
+ description: "Name and description being generated...",
123
+ type: request.type,
124
+ data: cleanedSummaryData
125
+ };
126
+ await this.persistArtifact(request, cleanedSummaryData, cleanedFullData, subAgentId, schemaValidation);
127
+ await this.cacheArtifact(request.artifactId, request.toolCallId, artifactData, cleanedFullData);
128
+ return artifactData;
129
+ } catch (error) {
130
+ logger.error({
131
+ error,
132
+ request
133
+ }, "Failed to create artifact");
134
+ const errorMessage = error instanceof Error ? error.message : "Unknown error";
135
+ throw new Error(`Artifact creation failed for ${request.artifactId}: ${errorMessage}`);
136
+ }
137
+ }
138
+ /**
139
+ * Get artifact summary data by ID and tool call ID
140
+ */
141
+ async getArtifactSummary(artifactId, toolCallId, artifactMap) {
142
+ const key = `${artifactId}:${toolCallId}`;
143
+ const { tenantId, projectId } = this.context.executionContext;
144
+ if (this.context.streamRequestId) {
145
+ const cachedArtifact = await agentSessionManager.getArtifactCache(this.context.streamRequestId, key);
146
+ if (cachedArtifact) return this.formatArtifactSummaryData(cachedArtifact, artifactId, toolCallId);
147
+ }
148
+ if (this.createdArtifacts.has(key)) {
149
+ const cached = this.createdArtifacts.get(key);
150
+ if (!cached) {
151
+ logger.warn({
152
+ artifactId,
153
+ toolCallId
154
+ }, "Cached artifact not found");
155
+ return null;
156
+ }
157
+ return this.formatArtifactSummaryData(cached, artifactId, toolCallId);
158
+ }
159
+ if (artifactMap?.has(key)) {
160
+ const artifact = artifactMap.get(key);
161
+ return this.formatArtifactSummaryData(artifact, artifactId, toolCallId);
162
+ }
163
+ try {
164
+ if (!projectId || !this.context.taskId) {
165
+ logger.warn({
166
+ artifactId,
167
+ toolCallId
168
+ }, "No projectId or taskId available for artifact lookup");
169
+ return null;
170
+ }
171
+ let artifacts = [];
172
+ artifacts = await getLedgerArtifacts(runDbClient_default)({
173
+ scopes: {
174
+ tenantId,
175
+ projectId
176
+ },
177
+ artifactId,
178
+ toolCallId
179
+ });
180
+ if (artifacts.length > 0) return this.formatArtifactSummaryData(artifacts[0], artifactId, toolCallId);
181
+ artifacts = await getLedgerArtifacts(runDbClient_default)({
182
+ scopes: {
183
+ tenantId,
184
+ projectId
185
+ },
186
+ artifactId,
187
+ taskId: this.context.taskId
188
+ });
189
+ if (artifacts.length > 0) return this.formatArtifactSummaryData(artifacts[0], artifactId, toolCallId);
190
+ } catch (error) {
191
+ logger.warn({
192
+ artifactId,
193
+ toolCallId,
194
+ taskId: this.context.taskId,
195
+ error
196
+ }, "Failed to fetch artifact");
197
+ }
198
+ return null;
199
+ }
200
+ /**
201
+ * Get artifact full data by ID and tool call ID
202
+ */
203
+ async getArtifactFull(artifactId, toolCallId, artifactMap) {
204
+ const key = `${artifactId}:${toolCallId}`;
205
+ const { tenantId, projectId } = this.context.executionContext;
206
+ if (this.context.streamRequestId) {
207
+ const cachedArtifact = await agentSessionManager.getArtifactCache(this.context.streamRequestId, key);
208
+ if (cachedArtifact) return this.formatArtifactFullData(cachedArtifact, artifactId, toolCallId);
209
+ }
210
+ if (this.createdArtifacts.has(key)) {
211
+ const cached = this.createdArtifacts.get(key);
212
+ if (!cached) {
213
+ logger.warn({
214
+ artifactId,
215
+ toolCallId
216
+ }, "Cached artifact not found");
217
+ return null;
218
+ }
219
+ return this.formatArtifactFullData(cached, artifactId, toolCallId);
220
+ }
221
+ if (artifactMap?.has(key)) {
222
+ const artifact = artifactMap.get(key);
223
+ return this.formatArtifactFullData(artifact, artifactId, toolCallId);
224
+ }
225
+ try {
226
+ if (!projectId || !this.context.taskId) {
227
+ logger.warn({
228
+ artifactId,
229
+ toolCallId
230
+ }, "No projectId or taskId available for artifact lookup");
231
+ return null;
232
+ }
233
+ let artifacts = [];
234
+ artifacts = await getLedgerArtifacts(runDbClient_default)({
235
+ scopes: {
236
+ tenantId,
237
+ projectId
238
+ },
239
+ artifactId,
240
+ toolCallId
241
+ });
242
+ if (artifacts.length > 0) return this.formatArtifactFullData(artifacts[0], artifactId, toolCallId);
243
+ artifacts = await getLedgerArtifacts(runDbClient_default)({
244
+ scopes: {
245
+ tenantId,
246
+ projectId
247
+ },
248
+ artifactId,
249
+ taskId: this.context.taskId
250
+ });
251
+ if (artifacts.length > 0) return this.formatArtifactFullData(artifacts[0], artifactId, toolCallId);
252
+ } catch (error) {
253
+ logger.warn({
254
+ artifactId,
255
+ toolCallId,
256
+ taskId: this.context.taskId,
257
+ error
258
+ }, "Failed to fetch artifact");
259
+ }
260
+ return null;
261
+ }
262
+ /**
263
+ * Format raw artifact to standardized summary data format
264
+ */
265
+ formatArtifactSummaryData(artifact, artifactId, toolCallId) {
266
+ let data = artifact.parts?.[0]?.data?.summary;
267
+ let dataSource = "parts[0].data.summary";
268
+ if (!data || typeof data === "object" && Object.keys(data).length === 0) {
269
+ data = artifact.parts?.[0]?.data;
270
+ if (data && !(typeof data === "object" && Object.keys(data).length === 0)) {
271
+ dataSource = "parts[0].data (fallback)";
272
+ logger.debug({
273
+ artifactId,
274
+ toolCallId,
275
+ dataSource
276
+ }, "Using fallback data source for artifact summary");
277
+ } else {
278
+ data = artifact.data;
279
+ if (data && !(typeof data === "object" && Object.keys(data).length === 0)) {
280
+ dataSource = "artifact.data (fallback)";
281
+ logger.debug({
282
+ artifactId,
283
+ toolCallId,
284
+ dataSource
285
+ }, "Using fallback data source for artifact summary");
286
+ } else {
287
+ data = {};
288
+ dataSource = "empty (no data found)";
289
+ logger.warn({
290
+ artifactId,
291
+ toolCallId,
292
+ artifactStructure: {
293
+ hasParts: !!artifact.parts,
294
+ partsLength: artifact.parts?.length,
295
+ hasPartsData: !!artifact.parts?.[0]?.data,
296
+ hasPartsSummary: !!artifact.parts?.[0]?.data?.summary,
297
+ hasArtifactData: !!artifact.data,
298
+ artifactKeys: Object.keys(artifact || {})
299
+ }
300
+ }, "No valid data found for artifact summary - using empty object");
301
+ }
302
+ }
303
+ }
304
+ return {
305
+ artifactId,
306
+ toolCallId,
307
+ name: artifact.name || "Processing...",
308
+ description: artifact.description || "Name and description being generated...",
309
+ type: artifact.metadata?.artifactType || artifact.artifactType,
310
+ data
311
+ };
312
+ }
313
+ /**
314
+ * Format raw artifact to standardized full data format
315
+ */
316
+ formatArtifactFullData(artifact, artifactId, toolCallId) {
317
+ let data = artifact.parts?.[0]?.data?.full;
318
+ let dataSource = "parts[0].data.full";
319
+ if (!data || typeof data === "object" && Object.keys(data).length === 0) {
320
+ data = artifact.parts?.[0]?.data;
321
+ if (data && !(typeof data === "object" && Object.keys(data).length === 0)) {
322
+ dataSource = "parts[0].data (fallback)";
323
+ logger.debug({
324
+ artifactId,
325
+ toolCallId,
326
+ dataSource
327
+ }, "Using fallback data source for artifact full data");
328
+ } else {
329
+ data = artifact.data;
330
+ if (data && !(typeof data === "object" && Object.keys(data).length === 0)) {
331
+ dataSource = "artifact.data (fallback)";
332
+ logger.debug({
333
+ artifactId,
334
+ toolCallId,
335
+ dataSource
336
+ }, "Using fallback data source for artifact full data");
337
+ } else {
338
+ data = {};
339
+ dataSource = "empty (no data found)";
340
+ logger.warn({
341
+ artifactId,
342
+ toolCallId,
343
+ artifactStructure: {
344
+ hasParts: !!artifact.parts,
345
+ partsLength: artifact.parts?.length,
346
+ hasPartsData: !!artifact.parts?.[0]?.data,
347
+ hasPartsFull: !!artifact.parts?.[0]?.data?.full,
348
+ hasArtifactData: !!artifact.data,
349
+ artifactKeys: Object.keys(artifact || {})
350
+ }
351
+ }, "No valid data found for artifact full data - using empty object");
352
+ }
353
+ }
354
+ }
355
+ return {
356
+ artifactId,
357
+ toolCallId,
358
+ name: artifact.name || "Processing...",
359
+ description: artifact.description || "Name and description being generated...",
360
+ type: artifact.metadata?.artifactType || artifact.artifactType,
361
+ data
362
+ };
363
+ }
364
+ /**
365
+ * Validate extracted data against the schemas used for extraction
366
+ */
367
+ validateExtractedData(artifactId, artifactType, summaryData, fullData, previewSchema, fullSchema, originalProps) {
368
+ const validateAgainstSchema = (data, schema) => {
369
+ const actualFields = Object.keys(data || {});
370
+ const expectedFields = schema?.properties ? Object.keys(schema.properties) : [];
371
+ const missingFields = expectedFields.filter((field) => !(field in (data || {})));
372
+ const extraFields = actualFields.filter((field) => !expectedFields.includes(field));
373
+ const missingRequired = (schema?.required || []).filter((field) => !(field in (data || {})));
374
+ return {
375
+ hasExpectedFields: missingFields.length === 0,
376
+ missingFields,
377
+ extraFields,
378
+ expectedFields,
379
+ actualFields,
380
+ hasRequiredFields: missingRequired.length === 0,
381
+ missingRequired
382
+ };
383
+ };
384
+ const summaryValidation = validateAgainstSchema(summaryData, previewSchema);
385
+ const fullValidation = validateAgainstSchema(fullData, fullSchema);
386
+ if (!summaryValidation.hasRequiredFields) {
387
+ `${summaryValidation.missingRequired.join(", ")}${artifactType}${summaryValidation.missingRequired.join(", ")}${summaryValidation.actualFields.join(", ")}`;
388
+ logger.error({
389
+ artifactId,
390
+ artifactType,
391
+ requiredFields: summaryValidation.missingRequired,
392
+ actualFields: summaryValidation.actualFields,
393
+ schemaExpected: previewSchema?.properties ? Object.keys(previewSchema.properties) : []
394
+ }, "Artifact creation failed due to missing required fields - continuing with generation");
395
+ return {
396
+ summary: summaryValidation,
397
+ full: fullValidation,
398
+ schemaFound: !!previewSchema
399
+ };
400
+ }
401
+ if (!summaryValidation.hasExpectedFields || summaryValidation.extraFields.length > 0) logger.warn({
402
+ artifactId,
403
+ artifactType,
404
+ dataType: "summary",
405
+ expectedFields: summaryValidation.expectedFields,
406
+ actualFields: summaryValidation.actualFields,
407
+ missingFields: summaryValidation.missingFields,
408
+ extraFields: summaryValidation.extraFields
409
+ }, "Summary data structure does not match preview schema");
410
+ if (!fullValidation.hasExpectedFields || fullValidation.extraFields.length > 0) logger.warn({
411
+ artifactId,
412
+ artifactType,
413
+ dataType: "full",
414
+ expectedFields: fullValidation.expectedFields,
415
+ actualFields: fullValidation.actualFields,
416
+ missingFields: fullValidation.missingFields,
417
+ extraFields: fullValidation.extraFields
418
+ }, "Full data structure does not match full schema");
419
+ return {
420
+ summary: summaryValidation,
421
+ full: fullValidation,
422
+ schemaFound: !!originalProps
423
+ };
424
+ }
425
+ /**
426
+ * Persist artifact to database vian agent session
427
+ */
428
+ async persistArtifact(request, summaryData, fullData, subAgentId, schemaValidation) {
429
+ const effectiveAgentId = subAgentId || this.context.subAgentId;
430
+ if (this.context.streamRequestId && effectiveAgentId && this.context.taskId) await agentSessionManager.recordEvent(this.context.streamRequestId, "artifact_saved", effectiveAgentId, {
431
+ artifactId: request.artifactId,
432
+ taskId: this.context.taskId,
433
+ toolCallId: request.toolCallId,
434
+ artifactType: request.type,
435
+ summaryData,
436
+ data: fullData,
437
+ subAgentId: effectiveAgentId,
438
+ metadata: {
439
+ toolCallId: request.toolCallId,
440
+ baseSelector: request.baseSelector,
441
+ detailsSelector: request.detailsSelector,
442
+ sessionId: this.context.sessionId,
443
+ artifactType: request.type
444
+ },
445
+ schemaValidation: schemaValidation || {
446
+ summary: {
447
+ hasExpectedFields: true,
448
+ missingFields: [],
449
+ extraFields: [],
450
+ expectedFields: [],
451
+ actualFields: [],
452
+ hasRequiredFields: true,
453
+ missingRequired: []
454
+ },
455
+ full: {
456
+ hasExpectedFields: true,
457
+ missingFields: [],
458
+ extraFields: [],
459
+ expectedFields: [],
460
+ actualFields: [],
461
+ hasRequiredFields: true,
462
+ missingRequired: []
463
+ },
464
+ schemaFound: false
465
+ },
466
+ tenantId: this.context.executionContext.tenantId,
467
+ projectId: this.context.executionContext.projectId,
468
+ contextId: this.context.contextId,
469
+ pendingGeneration: true
470
+ });
471
+ else logger.warn({
472
+ artifactId: request.artifactId,
473
+ hasStreamRequestId: !!this.context.streamRequestId,
474
+ hasAgentId: !!effectiveAgentId,
475
+ hasTaskId: !!this.context.taskId,
476
+ passedAgentId: subAgentId,
477
+ contextAgentId: this.context.subAgentId
478
+ }, "Skipping artifact_saved event - missing required context");
479
+ }
480
+ /**
481
+ * Cache artifact for immediate access
482
+ */
483
+ async cacheArtifact(artifactId, toolCallId, artifactData, fullData) {
484
+ const cacheKey = `${artifactId}:${toolCallId}`;
485
+ const artifactForCache = {
486
+ ...artifactData,
487
+ parts: [{ data: {
488
+ summary: artifactData.data,
489
+ data: fullData
490
+ } }],
491
+ metadata: {
492
+ artifactType: artifactData.type,
493
+ toolCallId
494
+ },
495
+ taskId: this.context.taskId
496
+ };
497
+ this.createdArtifacts.set(cacheKey, artifactForCache);
498
+ if (this.context.streamRequestId) await agentSessionManager.setArtifactCache(this.context.streamRequestId, cacheKey, artifactForCache);
499
+ }
500
+ /**
501
+ * Sanitize JMESPath selector to fix common syntax issues (with caching)
502
+ */
503
+ sanitizeJMESPathSelector(selector) {
504
+ const cached = ArtifactService.selectorCache.get(selector);
505
+ if (cached !== void 0) return cached;
506
+ let sanitized = selector.replace(/=="([^"]*)"/g, "=='$1'");
507
+ sanitized = sanitized.replace(/\[\?(\w+)\s*~\s*contains\(@,\s*"([^"]*)"\)\]/g, "[?contains($1, `$2`)]");
508
+ sanitized = sanitized.replace(/\[\?(\w+)\s*~\s*contains\(@,\s*'([^']*)'\)\]/g, "[?contains($1, `$2`)]");
509
+ sanitized = sanitized.replace(/\s*~\s*/g, " ");
510
+ if (ArtifactService.selectorCache.size < 1e3) ArtifactService.selectorCache.set(selector, sanitized);
511
+ return sanitized;
512
+ }
513
+ /**
514
+ * Save an already-created artifact directly to the database
515
+ * Used by AgentSession to save artifacts after name/description generation
516
+ */
517
+ async saveArtifact(artifact) {
518
+ let summaryData = artifact.summaryData || artifact.data;
519
+ let fullData = artifact.data;
520
+ const { tenantId, projectId } = this.context.executionContext;
521
+ if (this.context.artifactComponents) {
522
+ const artifactComponent = this.context.artifactComponents.find((ac) => ac.name === artifact.type);
523
+ if (artifactComponent?.props) try {
524
+ const schema = artifactComponent.props;
525
+ const previewSchema = extractPreviewFields(schema);
526
+ const fullSchema = extractFullFields(schema);
527
+ summaryData = this.filterBySchema(artifact.data, previewSchema);
528
+ fullData = this.filterBySchema(artifact.data, fullSchema);
529
+ } catch (error) {
530
+ logger.warn({
531
+ artifactType: artifact.type,
532
+ error: error instanceof Error ? error.message : "Unknown error"
533
+ }, "Failed to extract preview/full fields from schema, using full data for both");
534
+ }
535
+ }
536
+ const artifactToSave = {
537
+ artifactId: artifact.artifactId,
538
+ name: artifact.name,
539
+ description: artifact.description,
540
+ type: artifact.type,
541
+ taskId: this.context.taskId,
542
+ parts: [{
543
+ kind: "data",
544
+ data: {
545
+ summary: summaryData,
546
+ full: fullData
547
+ }
548
+ }],
549
+ metadata: artifact.metadata || {},
550
+ createdAt: (/* @__PURE__ */ new Date()).toISOString()
551
+ };
552
+ const result = await upsertLedgerArtifact(runDbClient_default)({
553
+ scopes: {
554
+ tenantId,
555
+ projectId
556
+ },
557
+ contextId: this.context.contextId,
558
+ taskId: this.context.taskId,
559
+ toolCallId: artifact.toolCallId,
560
+ artifact: artifactToSave
561
+ });
562
+ if (!result.created && result.existing) logger.debug({
563
+ artifactId: artifact.artifactId,
564
+ taskId: this.context.taskId
565
+ }, "Artifact already exists, skipping duplicate creation");
566
+ }
567
+ /**
568
+ * Clean up over-escaped strings that have been through multiple JSON serialization cycles
569
+ */
570
+ cleanEscapedContent(value) {
571
+ if (typeof value === "string") {
572
+ let cleaned = value;
573
+ cleaned = cleaned.replace(/\u0000/g, "").replace(/[\u0001-\u0008\u000B\u000C\u000E-\u001F]/g, "");
574
+ cleaned = cleaned.replace(/\\"([^"]+)\\"/g, "\"$1\"").replace(/\\'/g, "'").replace(/\\`/g, "`").replace(/\\\\/g, "\\");
575
+ const maxIterations = 10;
576
+ let iteration = 0;
577
+ let previousLength;
578
+ do {
579
+ previousLength = cleaned.length;
580
+ cleaned = cleaned.replace(/\\\\\\\\n/g, "\n").replace(/\\\\\\\\/g, "\\").replace(/\\\\n/g, "\n").replace(/\\\\/g, "\\").replace(/\\n/g, "\n").replace(/\\"/g, "\"").replace(/\\'/g, "'");
581
+ iteration++;
582
+ } while (cleaned.length !== previousLength && iteration < maxIterations);
583
+ cleaned = cleaned.replace(/\\\\/g, "\\");
584
+ return cleaned;
585
+ }
586
+ if (Array.isArray(value)) return value.map((item) => this.cleanEscapedContent(item));
587
+ if (value && typeof value === "object") {
588
+ const cleaned = {};
589
+ for (const [key, val] of Object.entries(value)) cleaned[key] = this.cleanEscapedContent(val);
590
+ return cleaned;
591
+ }
592
+ return value;
593
+ }
594
+ /**
595
+ * Extract properties from data using schema-defined fields and custom selectors
596
+ */
597
+ extractPropsFromSchema(item, schema, customSelectors) {
598
+ const extracted = {};
599
+ if (schema.properties) for (const fieldName of Object.keys(schema.properties)) try {
600
+ const customSelector = customSelectors[fieldName];
601
+ let rawValue;
602
+ if (customSelector) {
603
+ const sanitizedSelector = this.sanitizeJMESPathSelector(customSelector);
604
+ rawValue = jmespath.search(item, sanitizedSelector);
605
+ } else rawValue = item[fieldName];
606
+ if (rawValue !== null && rawValue !== void 0) extracted[fieldName] = this.cleanEscapedContent(rawValue);
607
+ } catch (error) {
608
+ logger.warn({
609
+ fieldName,
610
+ error: error instanceof Error ? error.message : "Unknown error"
611
+ }, "Failed to extract schema field");
612
+ const fallbackValue = item[fieldName];
613
+ if (fallbackValue !== null && fallbackValue !== void 0) extracted[fieldName] = this.cleanEscapedContent(fallbackValue);
614
+ }
615
+ return extracted;
616
+ }
617
+ /**
618
+ * Filter extracted props based on schema
619
+ */
620
+ filterBySchema(props, schema) {
621
+ if (!schema?.properties) return props;
622
+ const filtered = {};
623
+ for (const key of Object.keys(schema.properties)) if (key in props) filtered[key] = props[key];
624
+ return filtered;
625
+ }
626
+ };
627
+
628
+ //#endregion
629
+ export { ArtifactService };