@opensearch-project/agent-health 0.3.0 → 0.5.2

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 (518) hide show
  1. package/README.md +77 -6
  2. package/cli/dist/index.js +10072 -4502
  3. package/deployment/cloudformation/agent-health-observability.yaml +762 -0
  4. package/dist/assets/index-CCQRDlO0.js +243 -0
  5. package/dist/assets/index-CNHQVbcj.css +1 -0
  6. package/dist/index.html +2 -2
  7. package/docs/ARCHITECTURE.md +450 -0
  8. package/docs/BACKEND_JOB_QUEUE.md +405 -0
  9. package/docs/CLAUDE_CODE_TELEMETRY.md +283 -0
  10. package/docs/CLI.md +431 -0
  11. package/docs/CODING_AGENT_ANALYTICS.md +298 -0
  12. package/docs/CONFIGURATION.md +388 -0
  13. package/docs/CONNECTORS.md +536 -0
  14. package/docs/INSTRUMENT_WITH_OTEL.md +390 -0
  15. package/docs/ML-COMMONS-SETUP.md +289 -0
  16. package/docs/NPX_PACKAGING.md +195 -0
  17. package/docs/PERFORMANCE-MONITORING.md +200 -0
  18. package/docs/PERFORMANCE.md +390 -0
  19. package/docs/PI_PROFILING.md +169 -0
  20. package/docs/PLAN-non-agui-agent-support.md +525 -0
  21. package/docs/SDK.md +577 -0
  22. package/docs/SKILLS.md +264 -0
  23. package/docs/blogs/2026-02-28-opensearch-agent-health.md +200 -0
  24. package/docs/blogs/getting-started-blog.md +608 -0
  25. package/docs/diagrams/Agent-health.excalidraw +5656 -0
  26. package/docs/diagrams/architecture.png +0 -0
  27. package/docs/plans/field-redesign.md +468 -0
  28. package/docs/rfcs/001-coding-agent-analytics.md +374 -0
  29. package/docs/rfcs/002-enterprise-leaderboard.md +267 -0
  30. package/docs/rfcs/003-remote-aggregation.md +146 -0
  31. package/docs/rfcs/004-test-sdk-v2.md +599 -0
  32. package/docs/skills/AGENT_HEALTH.md +598 -0
  33. package/docs/skills/AGENT_PROFILE.md +191 -0
  34. package/docs/skills/add-connector/SKILL.md +68 -0
  35. package/docs/skills/agent-health-profile/SKILL.md +40 -0
  36. package/docs/skills/config-auth/SKILL.md +194 -0
  37. package/docs/skills/config-auth/evals/evals.json +35 -0
  38. package/docs/skills/create-pr/SKILL.md +73 -0
  39. package/docs/skills/instrument-otel/SKILL.md +84 -0
  40. package/docs/skills/write-test/SKILL.md +124 -0
  41. package/docs/ui prd.md +376 -0
  42. package/examples/README.md +53 -0
  43. package/examples/config/agent-health.config.example.ts +155 -0
  44. package/examples/connectors/echo-connector.ts +131 -0
  45. package/examples/eval-files/demo.eval.js +128 -0
  46. package/examples/eval-files/sdk-hooks-demo.eval.js +99 -0
  47. package/examples/pi-profiling/README.md +77 -0
  48. package/examples/pi-profiling/agent-health-profile.ts +417 -0
  49. package/lib/dist/lib/agentUtils.d.ts +29 -0
  50. package/lib/dist/lib/agentUtils.d.ts.map +1 -0
  51. package/lib/dist/lib/agentUtils.js +43 -0
  52. package/lib/dist/lib/agentUtils.js.map +1 -0
  53. package/lib/dist/lib/benchmarkExport.d.ts +14 -0
  54. package/lib/dist/lib/benchmarkExport.d.ts.map +1 -0
  55. package/lib/dist/lib/benchmarkExport.js +41 -0
  56. package/lib/dist/lib/benchmarkExport.js.map +1 -0
  57. package/lib/dist/lib/benchmarkVersionUtils.d.ts +37 -0
  58. package/lib/dist/lib/benchmarkVersionUtils.d.ts.map +1 -0
  59. package/lib/dist/lib/benchmarkVersionUtils.js +68 -0
  60. package/lib/dist/lib/benchmarkVersionUtils.js.map +1 -0
  61. package/lib/dist/lib/config/defineConfig.d.ts +27 -0
  62. package/lib/dist/lib/config/defineConfig.d.ts.map +1 -0
  63. package/lib/dist/lib/config/defineConfig.js +28 -0
  64. package/lib/dist/lib/config/defineConfig.js.map +1 -0
  65. package/lib/dist/lib/config/index.d.ts +9 -0
  66. package/lib/dist/lib/config/index.d.ts.map +1 -0
  67. package/lib/dist/lib/config/index.js +8 -0
  68. package/lib/dist/lib/config/index.js.map +1 -0
  69. package/lib/dist/lib/config/loader.d.ts +39 -0
  70. package/lib/dist/lib/config/loader.d.ts.map +1 -0
  71. package/lib/dist/lib/config/loader.js +258 -0
  72. package/lib/dist/lib/config/loader.js.map +1 -0
  73. package/lib/dist/lib/config/statePaths.d.ts +61 -0
  74. package/lib/dist/lib/config/statePaths.d.ts.map +1 -0
  75. package/lib/dist/lib/config/statePaths.js +188 -0
  76. package/lib/dist/lib/config/statePaths.js.map +1 -0
  77. package/lib/dist/lib/config/types.d.ts +231 -0
  78. package/lib/dist/lib/config/types.d.ts.map +1 -0
  79. package/lib/dist/lib/config/types.js +6 -0
  80. package/lib/dist/lib/config/types.js.map +1 -0
  81. package/lib/dist/lib/config.d.ts +39 -0
  82. package/lib/dist/lib/config.d.ts.map +1 -0
  83. package/lib/dist/lib/config.js +118 -0
  84. package/lib/dist/lib/config.js.map +1 -0
  85. package/lib/dist/lib/constants.d.ts +70 -0
  86. package/lib/dist/lib/constants.d.ts.map +1 -0
  87. package/lib/dist/lib/constants.js +365 -0
  88. package/lib/dist/lib/constants.js.map +1 -0
  89. package/lib/dist/lib/contextUtilization.d.ts +23 -0
  90. package/lib/dist/lib/contextUtilization.d.ts.map +1 -0
  91. package/lib/dist/lib/contextUtilization.js +72 -0
  92. package/lib/dist/lib/contextUtilization.js.map +1 -0
  93. package/lib/dist/lib/dashboardMetrics.d.ts +87 -0
  94. package/lib/dist/lib/dashboardMetrics.d.ts.map +1 -0
  95. package/lib/dist/lib/dashboardMetrics.js +242 -0
  96. package/lib/dist/lib/dashboardMetrics.js.map +1 -0
  97. package/lib/dist/lib/dataSourceConfig.d.ts +108 -0
  98. package/lib/dist/lib/dataSourceConfig.d.ts.map +1 -0
  99. package/lib/dist/lib/dataSourceConfig.js +166 -0
  100. package/lib/dist/lib/dataSourceConfig.js.map +1 -0
  101. package/lib/dist/lib/debug.d.ts +26 -0
  102. package/lib/dist/lib/debug.d.ts.map +1 -0
  103. package/lib/dist/lib/debug.js +132 -0
  104. package/lib/dist/lib/debug.js.map +1 -0
  105. package/lib/dist/lib/diagnostics.d.ts +28 -0
  106. package/lib/dist/lib/diagnostics.d.ts.map +1 -0
  107. package/lib/dist/lib/diagnostics.js +65 -0
  108. package/lib/dist/lib/diagnostics.js.map +1 -0
  109. package/lib/dist/lib/envCompat.d.ts +27 -0
  110. package/lib/dist/lib/envCompat.d.ts.map +1 -0
  111. package/lib/dist/lib/envCompat.js +73 -0
  112. package/lib/dist/lib/envCompat.js.map +1 -0
  113. package/lib/dist/lib/findPackageRoot.d.ts +7 -0
  114. package/lib/dist/lib/findPackageRoot.d.ts.map +1 -0
  115. package/lib/dist/lib/findPackageRoot.js +57 -0
  116. package/lib/dist/lib/findPackageRoot.js.map +1 -0
  117. package/lib/dist/lib/hooks.d.ts +36 -0
  118. package/lib/dist/lib/hooks.d.ts.map +1 -0
  119. package/lib/dist/lib/hooks.js +112 -0
  120. package/lib/dist/lib/hooks.js.map +1 -0
  121. package/lib/dist/lib/index.d.ts +47 -0
  122. package/lib/dist/lib/index.d.ts.map +1 -0
  123. package/lib/dist/lib/index.js +62 -0
  124. package/lib/dist/lib/index.js.map +1 -0
  125. package/lib/dist/lib/labels.d.ts +90 -0
  126. package/lib/dist/lib/labels.d.ts.map +1 -0
  127. package/lib/dist/lib/labels.js +158 -0
  128. package/lib/dist/lib/labels.js.map +1 -0
  129. package/lib/dist/lib/markdown.d.ts +16 -0
  130. package/lib/dist/lib/markdown.d.ts.map +1 -0
  131. package/lib/dist/lib/markdown.js +42 -0
  132. package/lib/dist/lib/markdown.js.map +1 -0
  133. package/lib/dist/lib/matchers/expect.d.ts +3 -0
  134. package/lib/dist/lib/matchers/expect.d.ts.map +1 -0
  135. package/lib/dist/lib/matchers/expect.js +225 -0
  136. package/lib/dist/lib/matchers/expect.js.map +1 -0
  137. package/lib/dist/lib/matchers/index.d.ts +8 -0
  138. package/lib/dist/lib/matchers/index.d.ts.map +1 -0
  139. package/lib/dist/lib/matchers/index.js +9 -0
  140. package/lib/dist/lib/matchers/index.js.map +1 -0
  141. package/lib/dist/lib/matchers/judgeAccessor.d.ts +113 -0
  142. package/lib/dist/lib/matchers/judgeAccessor.d.ts.map +1 -0
  143. package/lib/dist/lib/matchers/judgeAccessor.js +183 -0
  144. package/lib/dist/lib/matchers/judgeAccessor.js.map +1 -0
  145. package/lib/dist/lib/matchers/session.d.ts +39 -0
  146. package/lib/dist/lib/matchers/session.d.ts.map +1 -0
  147. package/lib/dist/lib/matchers/session.js +116 -0
  148. package/lib/dist/lib/matchers/session.js.map +1 -0
  149. package/lib/dist/lib/matchers/traces.d.ts +55 -0
  150. package/lib/dist/lib/matchers/traces.d.ts.map +1 -0
  151. package/lib/dist/lib/matchers/traces.js +116 -0
  152. package/lib/dist/lib/matchers/traces.js.map +1 -0
  153. package/lib/dist/lib/matchers/types.d.ts +75 -0
  154. package/lib/dist/lib/matchers/types.d.ts.map +1 -0
  155. package/lib/dist/lib/matchers/types.js +6 -0
  156. package/lib/dist/lib/matchers/types.js.map +1 -0
  157. package/lib/dist/lib/packagePaths.d.ts +29 -0
  158. package/lib/dist/lib/packagePaths.d.ts.map +1 -0
  159. package/lib/dist/lib/packagePaths.js +63 -0
  160. package/lib/dist/lib/packagePaths.js.map +1 -0
  161. package/lib/dist/lib/performance.d.ts +51 -0
  162. package/lib/dist/lib/performance.d.ts.map +1 -0
  163. package/lib/dist/lib/performance.js +159 -0
  164. package/lib/dist/lib/performance.js.map +1 -0
  165. package/lib/dist/lib/portConfig.d.ts +29 -0
  166. package/lib/dist/lib/portConfig.d.ts.map +1 -0
  167. package/lib/dist/lib/portConfig.js +64 -0
  168. package/lib/dist/lib/portConfig.js.map +1 -0
  169. package/lib/dist/lib/preferences.d.ts +63 -0
  170. package/lib/dist/lib/preferences.d.ts.map +1 -0
  171. package/lib/dist/lib/preferences.js +117 -0
  172. package/lib/dist/lib/preferences.js.map +1 -0
  173. package/lib/dist/lib/resolveAgentModel.d.ts +22 -0
  174. package/lib/dist/lib/resolveAgentModel.d.ts.map +1 -0
  175. package/lib/dist/lib/resolveAgentModel.js +37 -0
  176. package/lib/dist/lib/resolveAgentModel.js.map +1 -0
  177. package/lib/dist/lib/runStats.d.ts +92 -0
  178. package/lib/dist/lib/runStats.d.ts.map +1 -0
  179. package/lib/dist/lib/runStats.js +160 -0
  180. package/lib/dist/lib/runStats.js.map +1 -0
  181. package/lib/dist/lib/telemetry/constants.d.ts +60 -0
  182. package/lib/dist/lib/telemetry/constants.d.ts.map +1 -0
  183. package/lib/dist/lib/telemetry/constants.js +87 -0
  184. package/lib/dist/lib/telemetry/constants.js.map +1 -0
  185. package/lib/dist/lib/telemetry/evalSpans.d.ts +61 -0
  186. package/lib/dist/lib/telemetry/evalSpans.d.ts.map +1 -0
  187. package/lib/dist/lib/telemetry/evalSpans.js +254 -0
  188. package/lib/dist/lib/telemetry/evalSpans.js.map +1 -0
  189. package/lib/dist/lib/telemetry/index.d.ts +11 -0
  190. package/lib/dist/lib/telemetry/index.d.ts.map +1 -0
  191. package/lib/dist/lib/telemetry/index.js +15 -0
  192. package/lib/dist/lib/telemetry/index.js.map +1 -0
  193. package/lib/dist/lib/telemetry/opensearchExporter.d.ts +43 -0
  194. package/lib/dist/lib/telemetry/opensearchExporter.d.ts.map +1 -0
  195. package/lib/dist/lib/telemetry/opensearchExporter.js +217 -0
  196. package/lib/dist/lib/telemetry/opensearchExporter.js.map +1 -0
  197. package/lib/dist/lib/telemetry/provider.d.ts +55 -0
  198. package/lib/dist/lib/telemetry/provider.d.ts.map +1 -0
  199. package/lib/dist/lib/telemetry/provider.js +140 -0
  200. package/lib/dist/lib/telemetry/provider.js.map +1 -0
  201. package/lib/dist/lib/testCaseLabels.d.ts +34 -0
  202. package/lib/dist/lib/testCaseLabels.d.ts.map +1 -0
  203. package/lib/dist/lib/testCaseLabels.js +88 -0
  204. package/lib/dist/lib/testCaseLabels.js.map +1 -0
  205. package/lib/dist/lib/testCaseValidation.d.ts +140 -0
  206. package/lib/dist/lib/testCaseValidation.d.ts.map +1 -0
  207. package/lib/dist/lib/testCaseValidation.js +162 -0
  208. package/lib/dist/lib/testCaseValidation.js.map +1 -0
  209. package/lib/dist/lib/testCases/agentFixture.d.ts +80 -0
  210. package/lib/dist/lib/testCases/agentFixture.d.ts.map +1 -0
  211. package/lib/dist/lib/testCases/agentFixture.js +43 -0
  212. package/lib/dist/lib/testCases/agentFixture.js.map +1 -0
  213. package/lib/dist/lib/testCases/authoringSurface.d.ts +10 -0
  214. package/lib/dist/lib/testCases/authoringSurface.d.ts.map +1 -0
  215. package/lib/dist/lib/testCases/authoringSurface.js +54 -0
  216. package/lib/dist/lib/testCases/authoringSurface.js.map +1 -0
  217. package/lib/dist/lib/testCases/codemod.d.ts +13 -0
  218. package/lib/dist/lib/testCases/codemod.d.ts.map +1 -0
  219. package/lib/dist/lib/testCases/codemod.js +169 -0
  220. package/lib/dist/lib/testCases/codemod.js.map +1 -0
  221. package/lib/dist/lib/testCases/define.d.ts +114 -0
  222. package/lib/dist/lib/testCases/define.d.ts.map +1 -0
  223. package/lib/dist/lib/testCases/define.js +253 -0
  224. package/lib/dist/lib/testCases/define.js.map +1 -0
  225. package/lib/dist/lib/testCases/evaluators.d.ts +80 -0
  226. package/lib/dist/lib/testCases/evaluators.d.ts.map +1 -0
  227. package/lib/dist/lib/testCases/evaluators.js +105 -0
  228. package/lib/dist/lib/testCases/evaluators.js.map +1 -0
  229. package/lib/dist/lib/testCases/index.d.ts +14 -0
  230. package/lib/dist/lib/testCases/index.d.ts.map +1 -0
  231. package/lib/dist/lib/testCases/index.js +12 -0
  232. package/lib/dist/lib/testCases/index.js.map +1 -0
  233. package/lib/dist/lib/testCases/judge.d.ts +165 -0
  234. package/lib/dist/lib/testCases/judge.d.ts.map +1 -0
  235. package/lib/dist/lib/testCases/judge.js +359 -0
  236. package/lib/dist/lib/testCases/judge.js.map +1 -0
  237. package/lib/dist/lib/testCases/loader.d.ts +26 -0
  238. package/lib/dist/lib/testCases/loader.d.ts.map +1 -0
  239. package/lib/dist/lib/testCases/loader.js +149 -0
  240. package/lib/dist/lib/testCases/loader.js.map +1 -0
  241. package/lib/dist/lib/testCases/types.d.ts +242 -0
  242. package/lib/dist/lib/testCases/types.d.ts.map +1 -0
  243. package/lib/dist/lib/testCases/types.js +6 -0
  244. package/lib/dist/lib/testCases/types.js.map +1 -0
  245. package/lib/dist/lib/theme.d.ts +6 -0
  246. package/lib/dist/lib/theme.d.ts.map +1 -0
  247. package/lib/dist/lib/theme.js +36 -0
  248. package/lib/dist/lib/theme.js.map +1 -0
  249. package/lib/dist/lib/uiTelemetry.d.ts +7 -0
  250. package/lib/dist/lib/uiTelemetry.d.ts.map +1 -0
  251. package/lib/dist/lib/uiTelemetry.js +25 -0
  252. package/lib/dist/lib/uiTelemetry.js.map +1 -0
  253. package/lib/dist/lib/utils.d.ts +96 -0
  254. package/lib/dist/lib/utils.d.ts.map +1 -0
  255. package/lib/dist/lib/utils.js +232 -0
  256. package/lib/dist/lib/utils.js.map +1 -0
  257. package/lib/dist/lib/workflow/consolidate.d.ts +12 -0
  258. package/lib/dist/lib/workflow/consolidate.d.ts.map +1 -0
  259. package/lib/dist/lib/workflow/consolidate.js +33 -0
  260. package/lib/dist/lib/workflow/consolidate.js.map +1 -0
  261. package/lib/dist/lib/workflow/index.d.ts +13 -0
  262. package/lib/dist/lib/workflow/index.d.ts.map +1 -0
  263. package/lib/dist/lib/workflow/index.js +12 -0
  264. package/lib/dist/lib/workflow/index.js.map +1 -0
  265. package/lib/dist/lib/workflow/ledger.d.ts +30 -0
  266. package/lib/dist/lib/workflow/ledger.d.ts.map +1 -0
  267. package/lib/dist/lib/workflow/ledger.js +41 -0
  268. package/lib/dist/lib/workflow/ledger.js.map +1 -0
  269. package/lib/dist/lib/workflow/pool.d.ts +13 -0
  270. package/lib/dist/lib/workflow/pool.d.ts.map +1 -0
  271. package/lib/dist/lib/workflow/pool.js +44 -0
  272. package/lib/dist/lib/workflow/pool.js.map +1 -0
  273. package/lib/dist/lib/workflow/source.d.ts +22 -0
  274. package/lib/dist/lib/workflow/source.d.ts.map +1 -0
  275. package/lib/dist/lib/workflow/source.js +29 -0
  276. package/lib/dist/lib/workflow/source.js.map +1 -0
  277. package/lib/dist/lib/workflow/stepB.d.ts +71 -0
  278. package/lib/dist/lib/workflow/stepB.d.ts.map +1 -0
  279. package/lib/dist/lib/workflow/stepB.js +99 -0
  280. package/lib/dist/lib/workflow/stepB.js.map +1 -0
  281. package/lib/dist/lib/workflow/types.d.ts +86 -0
  282. package/lib/dist/lib/workflow/types.d.ts.map +1 -0
  283. package/lib/dist/lib/workflow/types.js +6 -0
  284. package/lib/dist/lib/workflow/types.js.map +1 -0
  285. package/lib/dist/lib/workflow/workflow.d.ts +119 -0
  286. package/lib/dist/lib/workflow/workflow.d.ts.map +1 -0
  287. package/lib/dist/lib/workflow/workflow.js +195 -0
  288. package/lib/dist/lib/workflow/workflow.js.map +1 -0
  289. package/lib/dist/services/agent/aguiConverter.d.ts +50 -0
  290. package/lib/dist/services/agent/aguiConverter.d.ts.map +1 -0
  291. package/lib/dist/services/agent/aguiConverter.js +449 -0
  292. package/lib/dist/services/agent/aguiConverter.js.map +1 -0
  293. package/lib/dist/services/agent/index.d.ts +10 -0
  294. package/lib/dist/services/agent/index.d.ts.map +1 -0
  295. package/lib/dist/services/agent/index.js +12 -0
  296. package/lib/dist/services/agent/index.js.map +1 -0
  297. package/lib/dist/services/agent/payloadBuilder.d.ts +33 -0
  298. package/lib/dist/services/agent/payloadBuilder.d.ts.map +1 -0
  299. package/lib/dist/services/agent/payloadBuilder.js +75 -0
  300. package/lib/dist/services/agent/payloadBuilder.js.map +1 -0
  301. package/lib/dist/services/agent/sseStream.d.ts +43 -0
  302. package/lib/dist/services/agent/sseStream.d.ts.map +1 -0
  303. package/lib/dist/services/agent/sseStream.js +223 -0
  304. package/lib/dist/services/agent/sseStream.js.map +1 -0
  305. package/lib/dist/services/connectors/agui/AGUIStreamingConnector.d.ts +44 -0
  306. package/lib/dist/services/connectors/agui/AGUIStreamingConnector.d.ts.map +1 -0
  307. package/lib/dist/services/connectors/agui/AGUIStreamingConnector.js +95 -0
  308. package/lib/dist/services/connectors/agui/AGUIStreamingConnector.js.map +1 -0
  309. package/lib/dist/services/connectors/base/BaseConnector.d.ts +81 -0
  310. package/lib/dist/services/connectors/base/BaseConnector.d.ts.map +1 -0
  311. package/lib/dist/services/connectors/base/BaseConnector.js +170 -0
  312. package/lib/dist/services/connectors/base/BaseConnector.js.map +1 -0
  313. package/lib/dist/services/connectors/claude-code/ClaudeCodeConnector.d.ts +116 -0
  314. package/lib/dist/services/connectors/claude-code/ClaudeCodeConnector.d.ts.map +1 -0
  315. package/lib/dist/services/connectors/claude-code/ClaudeCodeConnector.js +403 -0
  316. package/lib/dist/services/connectors/claude-code/ClaudeCodeConnector.js.map +1 -0
  317. package/lib/dist/services/connectors/index.d.ts +13 -0
  318. package/lib/dist/services/connectors/index.d.ts.map +1 -0
  319. package/lib/dist/services/connectors/index.js +32 -0
  320. package/lib/dist/services/connectors/index.js.map +1 -0
  321. package/lib/dist/services/connectors/kiro/KiroConnector.d.ts +48 -0
  322. package/lib/dist/services/connectors/kiro/KiroConnector.d.ts.map +1 -0
  323. package/lib/dist/services/connectors/kiro/KiroConnector.js +158 -0
  324. package/lib/dist/services/connectors/kiro/KiroConnector.js.map +1 -0
  325. package/lib/dist/services/connectors/langgraph/LangGraphConnector.d.ts +36 -0
  326. package/lib/dist/services/connectors/langgraph/LangGraphConnector.d.ts.map +1 -0
  327. package/lib/dist/services/connectors/langgraph/LangGraphConnector.js +175 -0
  328. package/lib/dist/services/connectors/langgraph/LangGraphConnector.js.map +1 -0
  329. package/lib/dist/services/connectors/mock/MockConnector.d.ts +37 -0
  330. package/lib/dist/services/connectors/mock/MockConnector.d.ts.map +1 -0
  331. package/lib/dist/services/connectors/mock/MockConnector.js +120 -0
  332. package/lib/dist/services/connectors/mock/MockConnector.js.map +1 -0
  333. package/lib/dist/services/connectors/openai-compatible/OpenAICompatibleConnector.d.ts +42 -0
  334. package/lib/dist/services/connectors/openai-compatible/OpenAICompatibleConnector.d.ts.map +1 -0
  335. package/lib/dist/services/connectors/openai-compatible/OpenAICompatibleConnector.js +133 -0
  336. package/lib/dist/services/connectors/openai-compatible/OpenAICompatibleConnector.js.map +1 -0
  337. package/lib/dist/services/connectors/pi/PiConnector.d.ts +87 -0
  338. package/lib/dist/services/connectors/pi/PiConnector.d.ts.map +1 -0
  339. package/lib/dist/services/connectors/pi/PiConnector.js +274 -0
  340. package/lib/dist/services/connectors/pi/PiConnector.js.map +1 -0
  341. package/lib/dist/services/connectors/registry.d.ts +57 -0
  342. package/lib/dist/services/connectors/registry.d.ts.map +1 -0
  343. package/lib/dist/services/connectors/registry.js +106 -0
  344. package/lib/dist/services/connectors/registry.js.map +1 -0
  345. package/lib/dist/services/connectors/rest/RESTConnector.d.ts +38 -0
  346. package/lib/dist/services/connectors/rest/RESTConnector.d.ts.map +1 -0
  347. package/lib/dist/services/connectors/rest/RESTConnector.js +117 -0
  348. package/lib/dist/services/connectors/rest/RESTConnector.js.map +1 -0
  349. package/lib/dist/services/connectors/server.d.ts +13 -0
  350. package/lib/dist/services/connectors/server.d.ts.map +1 -0
  351. package/lib/dist/services/connectors/server.js +34 -0
  352. package/lib/dist/services/connectors/server.js.map +1 -0
  353. package/lib/dist/services/connectors/strands/StrandsConnector.d.ts +48 -0
  354. package/lib/dist/services/connectors/strands/StrandsConnector.d.ts.map +1 -0
  355. package/lib/dist/services/connectors/strands/StrandsConnector.js +221 -0
  356. package/lib/dist/services/connectors/strands/StrandsConnector.js.map +1 -0
  357. package/lib/dist/services/connectors/subprocess/SubprocessConnector.d.ts +88 -0
  358. package/lib/dist/services/connectors/subprocess/SubprocessConnector.d.ts.map +1 -0
  359. package/lib/dist/services/connectors/subprocess/SubprocessConnector.js +418 -0
  360. package/lib/dist/services/connectors/subprocess/SubprocessConnector.js.map +1 -0
  361. package/lib/dist/services/connectors/types.d.ts +213 -0
  362. package/lib/dist/services/connectors/types.d.ts.map +1 -0
  363. package/lib/dist/services/connectors/types.js +6 -0
  364. package/lib/dist/services/connectors/types.js.map +1 -0
  365. package/lib/dist/services/evaluation/bedrockJudge.d.ts +64 -0
  366. package/lib/dist/services/evaluation/bedrockJudge.d.ts.map +1 -0
  367. package/lib/dist/services/evaluation/bedrockJudge.js +167 -0
  368. package/lib/dist/services/evaluation/bedrockJudge.js.map +1 -0
  369. package/lib/dist/services/evaluation/evaluatorError.d.ts +56 -0
  370. package/lib/dist/services/evaluation/evaluatorError.d.ts.map +1 -0
  371. package/lib/dist/services/evaluation/evaluatorError.js +56 -0
  372. package/lib/dist/services/evaluation/evaluatorError.js.map +1 -0
  373. package/lib/dist/services/evaluation/index.d.ts +106 -0
  374. package/lib/dist/services/evaluation/index.d.ts.map +1 -0
  375. package/lib/dist/services/evaluation/index.js +684 -0
  376. package/lib/dist/services/evaluation/index.js.map +1 -0
  377. package/lib/dist/services/evaluation/mockTrajectory.d.ts +3 -0
  378. package/lib/dist/services/evaluation/mockTrajectory.d.ts.map +1 -0
  379. package/lib/dist/services/evaluation/mockTrajectory.js +72 -0
  380. package/lib/dist/services/evaluation/mockTrajectory.js.map +1 -0
  381. package/lib/dist/services/opensearch/client.d.ts +26 -0
  382. package/lib/dist/services/opensearch/client.d.ts.map +1 -0
  383. package/lib/dist/services/opensearch/client.js +131 -0
  384. package/lib/dist/services/opensearch/client.js.map +1 -0
  385. package/lib/dist/services/opensearch/index.d.ts +16 -0
  386. package/lib/dist/services/opensearch/index.d.ts.map +1 -0
  387. package/lib/dist/services/opensearch/index.js +25 -0
  388. package/lib/dist/services/opensearch/index.js.map +1 -0
  389. package/lib/dist/services/storage/asyncBenchmarkStorage.d.ts +123 -0
  390. package/lib/dist/services/storage/asyncBenchmarkStorage.d.ts.map +1 -0
  391. package/lib/dist/services/storage/asyncBenchmarkStorage.js +429 -0
  392. package/lib/dist/services/storage/asyncBenchmarkStorage.js.map +1 -0
  393. package/lib/dist/services/storage/asyncRunStorage.d.ts +127 -0
  394. package/lib/dist/services/storage/asyncRunStorage.d.ts.map +1 -0
  395. package/lib/dist/services/storage/asyncRunStorage.js +448 -0
  396. package/lib/dist/services/storage/asyncRunStorage.js.map +1 -0
  397. package/lib/dist/services/storage/asyncTestCaseStorage.d.ts +156 -0
  398. package/lib/dist/services/storage/asyncTestCaseStorage.d.ts.map +1 -0
  399. package/lib/dist/services/storage/asyncTestCaseStorage.js +285 -0
  400. package/lib/dist/services/storage/asyncTestCaseStorage.js.map +1 -0
  401. package/lib/dist/services/storage/index.d.ts +17 -0
  402. package/lib/dist/services/storage/index.d.ts.map +1 -0
  403. package/lib/dist/services/storage/index.js +20 -0
  404. package/lib/dist/services/storage/index.js.map +1 -0
  405. package/lib/dist/services/storage/migration.d.ts +54 -0
  406. package/lib/dist/services/storage/migration.d.ts.map +1 -0
  407. package/lib/dist/services/storage/migration.js +296 -0
  408. package/lib/dist/services/storage/migration.js.map +1 -0
  409. package/lib/dist/services/storage/opensearchClient.d.ts +924 -0
  410. package/lib/dist/services/storage/opensearchClient.d.ts.map +1 -0
  411. package/lib/dist/services/storage/opensearchClient.js +435 -0
  412. package/lib/dist/services/storage/opensearchClient.js.map +1 -0
  413. package/lib/dist/services/traces/browserRecovery.d.ts +26 -0
  414. package/lib/dist/services/traces/browserRecovery.d.ts.map +1 -0
  415. package/lib/dist/services/traces/browserRecovery.js +81 -0
  416. package/lib/dist/services/traces/browserRecovery.js.map +1 -0
  417. package/lib/dist/services/traces/categoryStyles.d.ts +21 -0
  418. package/lib/dist/services/traces/categoryStyles.d.ts.map +1 -0
  419. package/lib/dist/services/traces/categoryStyles.js +56 -0
  420. package/lib/dist/services/traces/categoryStyles.js.map +1 -0
  421. package/lib/dist/services/traces/executionOrderTransform.d.ts +35 -0
  422. package/lib/dist/services/traces/executionOrderTransform.d.ts.map +1 -0
  423. package/lib/dist/services/traces/executionOrderTransform.js +313 -0
  424. package/lib/dist/services/traces/executionOrderTransform.js.map +1 -0
  425. package/lib/dist/services/traces/fetchSpansForRun.d.ts +86 -0
  426. package/lib/dist/services/traces/fetchSpansForRun.d.ts.map +1 -0
  427. package/lib/dist/services/traces/fetchSpansForRun.js +69 -0
  428. package/lib/dist/services/traces/fetchSpansForRun.js.map +1 -0
  429. package/lib/dist/services/traces/flowTransform.d.ts +24 -0
  430. package/lib/dist/services/traces/flowTransform.d.ts.map +1 -0
  431. package/lib/dist/services/traces/flowTransform.js +228 -0
  432. package/lib/dist/services/traces/flowTransform.js.map +1 -0
  433. package/lib/dist/services/traces/index.d.ts +121 -0
  434. package/lib/dist/services/traces/index.d.ts.map +1 -0
  435. package/lib/dist/services/traces/index.js +255 -0
  436. package/lib/dist/services/traces/index.js.map +1 -0
  437. package/lib/dist/services/traces/intentTransform.d.ts +20 -0
  438. package/lib/dist/services/traces/intentTransform.d.ts.map +1 -0
  439. package/lib/dist/services/traces/intentTransform.js +131 -0
  440. package/lib/dist/services/traces/intentTransform.js.map +1 -0
  441. package/lib/dist/services/traces/judgeAgentsHints.d.ts +63 -0
  442. package/lib/dist/services/traces/judgeAgentsHints.d.ts.map +1 -0
  443. package/lib/dist/services/traces/judgeAgentsHints.js +89 -0
  444. package/lib/dist/services/traces/judgeAgentsHints.js.map +1 -0
  445. package/lib/dist/services/traces/messageExtraction.d.ts +15 -0
  446. package/lib/dist/services/traces/messageExtraction.d.ts.map +1 -0
  447. package/lib/dist/services/traces/messageExtraction.js +251 -0
  448. package/lib/dist/services/traces/messageExtraction.js.map +1 -0
  449. package/lib/dist/services/traces/spanCategorization.d.ts +63 -0
  450. package/lib/dist/services/traces/spanCategorization.d.ts.map +1 -0
  451. package/lib/dist/services/traces/spanCategorization.js +276 -0
  452. package/lib/dist/services/traces/spanCategorization.js.map +1 -0
  453. package/lib/dist/services/traces/spanPreprocessing.d.ts +37 -0
  454. package/lib/dist/services/traces/spanPreprocessing.d.ts.map +1 -0
  455. package/lib/dist/services/traces/spanPreprocessing.js +102 -0
  456. package/lib/dist/services/traces/spanPreprocessing.js.map +1 -0
  457. package/lib/dist/services/traces/spansToTrajectory.d.ts +36 -0
  458. package/lib/dist/services/traces/spansToTrajectory.d.ts.map +1 -0
  459. package/lib/dist/services/traces/spansToTrajectory.js +387 -0
  460. package/lib/dist/services/traces/spansToTrajectory.js.map +1 -0
  461. package/lib/dist/services/traces/toolSimilarity.d.ts +35 -0
  462. package/lib/dist/services/traces/toolSimilarity.d.ts.map +1 -0
  463. package/lib/dist/services/traces/toolSimilarity.js +203 -0
  464. package/lib/dist/services/traces/toolSimilarity.js.map +1 -0
  465. package/lib/dist/services/traces/traceComparison.d.ts +31 -0
  466. package/lib/dist/services/traces/traceComparison.d.ts.map +1 -0
  467. package/lib/dist/services/traces/traceComparison.js +318 -0
  468. package/lib/dist/services/traces/traceComparison.js.map +1 -0
  469. package/lib/dist/services/traces/traceGrouping.d.ts +19 -0
  470. package/lib/dist/services/traces/traceGrouping.d.ts.map +1 -0
  471. package/lib/dist/services/traces/traceGrouping.js +107 -0
  472. package/lib/dist/services/traces/traceGrouping.js.map +1 -0
  473. package/lib/dist/services/traces/tracePoller.d.ts +84 -0
  474. package/lib/dist/services/traces/tracePoller.d.ts.map +1 -0
  475. package/lib/dist/services/traces/tracePoller.js +309 -0
  476. package/lib/dist/services/traces/tracePoller.js.map +1 -0
  477. package/lib/dist/services/traces/traceStats.d.ts +45 -0
  478. package/lib/dist/services/traces/traceStats.d.ts.map +1 -0
  479. package/lib/dist/services/traces/traceStats.js +114 -0
  480. package/lib/dist/services/traces/traceStats.js.map +1 -0
  481. package/lib/dist/services/traces/traceSummary.d.ts +47 -0
  482. package/lib/dist/services/traces/traceSummary.d.ts.map +1 -0
  483. package/lib/dist/services/traces/traceSummary.js +68 -0
  484. package/lib/dist/services/traces/traceSummary.js.map +1 -0
  485. package/lib/dist/services/traces/utils.d.ts +33 -0
  486. package/lib/dist/services/traces/utils.d.ts.map +1 -0
  487. package/lib/dist/services/traces/utils.js +114 -0
  488. package/lib/dist/services/traces/utils.js.map +1 -0
  489. package/lib/dist/types/agui.d.ts +13 -0
  490. package/lib/dist/types/agui.d.ts.map +1 -0
  491. package/lib/dist/types/agui.js +16 -0
  492. package/lib/dist/types/agui.js.map +1 -0
  493. package/lib/dist/types/index.d.ts +1175 -0
  494. package/lib/dist/types/index.d.ts.map +1 -0
  495. package/lib/dist/types/index.js +12 -0
  496. package/lib/dist/types/index.js.map +1 -0
  497. package/lib/dist/types/skills.d.ts +146 -0
  498. package/lib/dist/types/skills.d.ts.map +1 -0
  499. package/lib/dist/types/skills.js +6 -0
  500. package/lib/dist/types/skills.js.map +1 -0
  501. package/observio-sample-agent/pi-package/README.md +112 -0
  502. package/observio-sample-agent/pi-package/extensions/agent-health.ts +373 -0
  503. package/observio-sample-agent/pi-package/package.json +17 -0
  504. package/observio-sample-agent/pi-package/prompts/agent-health.md +37 -0
  505. package/observio-sample-agent/pi-package/skills/create-pr/SKILL.md +88 -0
  506. package/observio-sample-agent/pi-package/skills/fix-bug/SKILL.md +71 -0
  507. package/observio-sample-agent/pi-package/skills/implement-feature/SKILL.md +156 -0
  508. package/observio-sample-agent/pi-package/skills/instrument-otel/SKILL.md +208 -0
  509. package/observio-sample-agent/pi-package/skills/setup-collector/SKILL.md +146 -0
  510. package/observio-sample-agent/pi-package/skills/write-test/SKILL.md +115 -0
  511. package/package.json +64 -13
  512. package/server/dist/app.js +32651 -17637
  513. package/server/dist/index.js +29875 -14638
  514. package/tsconfig.lib.json +71 -0
  515. package/dist/assets/index-EvPLSTAS.js +0 -267
  516. package/dist/assets/index-RXasQKUs.css +0 -1
  517. package/lib/dist/config/index.js +0 -404
  518. package/lib/dist/index.js +0 -1665
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sseStream.d.ts","sourceRoot":"","sources":["../../../../services/agent/sseStream.ts"],"names":[],"mappings":"AAKA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAiB,MAAM,cAAc,CAAC;AAGxD,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACpC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,mFAAmF;IACnF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,eAAe,CAAgC;IAEvD;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgHvD;;;OAGG;YACW,aAAa;IAgG3B;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,GAAG,EACZ,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,EACnC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,OAAO,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GACnC,OAAO,CAAC,IAAI,CAAC,CAkBf"}
@@ -0,0 +1,223 @@
1
+ /*
2
+ * Copyright OpenSearch Contributors
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ /**
6
+ * Server-Sent Events (SSE) Stream Consumer
7
+ * Handles streaming connections to the agent endpoint
8
+ */
9
+ import { AGUIEventType } from '../../types/agui.js';
10
+ import { debug, isDebugEnabled } from '../../lib/debug.js';
11
+ export class SSEClient {
12
+ constructor() {
13
+ this.abortController = null;
14
+ }
15
+ /**
16
+ * Start consuming SSE stream from the agent endpoint
17
+ */
18
+ async consume(options) {
19
+ const { url, method = 'POST', headers = {}, body, onEvent, onError, onComplete, completeOnRunEnd = false, idleTimeoutMs = 120000, // 2 minute idle timeout by default (LLM agents can be slow)
20
+ } = options;
21
+ this.abortController = new AbortController();
22
+ debug('SSE', 'Connecting to', url);
23
+ debug('SSE', 'Method:', method);
24
+ debug('SSE', 'Headers:', headers);
25
+ debug('SSE', 'Payload:', body ? JSON.stringify(body, null, 2).substring(0, 500) : 'none');
26
+ debug('SSE', 'Timeout:', idleTimeoutMs, 'ms');
27
+ try {
28
+ const requestConfig = {
29
+ method,
30
+ headers: {
31
+ 'Content-Type': 'application/json',
32
+ Accept: 'text/event-stream',
33
+ ...headers,
34
+ },
35
+ body: body ? JSON.stringify(body) : undefined,
36
+ signal: this.abortController.signal,
37
+ };
38
+ debug('SSE', 'Request config:', JSON.stringify(requestConfig, null, 2).substring(0, 500));
39
+ const response = await fetch(url, requestConfig);
40
+ debug('SSE', 'Response received:', response.status, response.statusText);
41
+ if (!response.ok) {
42
+ // Try to get error response body for debugging
43
+ let errorBody = '';
44
+ try {
45
+ errorBody = await response.text();
46
+ debug('SSE', 'Error response body:', errorBody.substring(0, 500));
47
+ }
48
+ catch {
49
+ debug('SSE', 'Could not read error response body');
50
+ }
51
+ throw new Error(`HTTP ${response.status}: ${response.statusText}${errorBody ? ` - ${errorBody}` : ''}`);
52
+ }
53
+ if (!response.body) {
54
+ throw new Error('Response body is null');
55
+ }
56
+ console.info('[SSE] Connected to agent endpoint, streaming events...');
57
+ debug('SSE', 'Response status:', response.status);
58
+ debug('SSE', 'Content-Type:', response.headers.get('content-type'));
59
+ // Process the stream with idle timeout support
60
+ const completionReason = await this.processStream(response.body, onEvent, completeOnRunEnd, idleTimeoutMs);
61
+ console.info(`[SSE] Stream completed: ${completionReason}`);
62
+ debug('SSE', `Stream completed: ${completionReason}`);
63
+ onComplete?.();
64
+ }
65
+ catch (error) {
66
+ if (error instanceof Error) {
67
+ if (error.name === 'AbortError') {
68
+ // AbortError after completeOnRunEnd is expected, call onComplete
69
+ debug('SSE', 'Stream aborted (expected after run completion)');
70
+ onComplete?.();
71
+ }
72
+ else {
73
+ console.error('[SSE] Stream error:', error.message);
74
+ console.error('[SSE] Debug mode is:', isDebugEnabled() ? 'ENABLED ✅' : 'DISABLED ❌');
75
+ // Detailed debug logging with diagnostics
76
+ const errorDetails = {
77
+ name: error.name,
78
+ message: error.message,
79
+ stack: error.stack,
80
+ cause: error.cause,
81
+ url,
82
+ method,
83
+ headers: headers,
84
+ };
85
+ debug('SSE', 'Error details:', errorDetails);
86
+ // Provide diagnostic hints based on error type
87
+ if (error.message.includes('fetch failed')) {
88
+ debug('SSE', '💡 Diagnostic: "fetch failed" typically means:');
89
+ debug('SSE', ' - Connection refused (endpoint not running)');
90
+ debug('SSE', ' - DNS resolution failed (invalid hostname)');
91
+ debug('SSE', ' - Network unreachable (firewall/VPN issues)');
92
+ debug('SSE', ' - SSL/TLS certificate issues (self-signed cert)');
93
+ debug('SSE', ` Check if ${url} is accessible`);
94
+ }
95
+ else if (error.message.includes('timeout')) {
96
+ debug('SSE', '💡 Diagnostic: Request timed out - endpoint may be slow or unresponsive');
97
+ }
98
+ else if (error.message.includes('ENOTFOUND')) {
99
+ debug('SSE', '💡 Diagnostic: DNS lookup failed - hostname not found');
100
+ }
101
+ else if (error.message.includes('ECONNREFUSED')) {
102
+ debug('SSE', '💡 Diagnostic: Connection refused - service not listening on this port');
103
+ }
104
+ onError?.(error);
105
+ }
106
+ }
107
+ else {
108
+ console.error('[SSE] Unknown error:', error);
109
+ debug('SSE', 'Unknown error details:', error);
110
+ onError?.(new Error('Unknown error occurred'));
111
+ }
112
+ }
113
+ }
114
+ /**
115
+ * Process the ReadableStream and parse SSE events
116
+ * @returns Reason for stream completion
117
+ */
118
+ async processStream(stream, onEvent, completeOnRunEnd = false, idleTimeoutMs = 120000) {
119
+ const reader = stream.getReader();
120
+ const decoder = new TextDecoder();
121
+ let buffer = '';
122
+ let lastEventTime = Date.now();
123
+ let eventCount = 0;
124
+ let idleCheckInterval = null;
125
+ // Set up idle timeout checker
126
+ const idleTimeoutPromise = new Promise((resolve) => {
127
+ idleCheckInterval = setInterval(() => {
128
+ const idleTime = Date.now() - lastEventTime;
129
+ if (eventCount > 0 && idleTime > idleTimeoutMs) {
130
+ debug('SSE', `Idle timeout: no events for ${idleTime}ms (threshold: ${idleTimeoutMs}ms)`);
131
+ this.abort();
132
+ resolve('idle_timeout');
133
+ }
134
+ }, 1000); // Check every second
135
+ });
136
+ try {
137
+ // Race between stream processing and idle timeout
138
+ const streamPromise = (async () => {
139
+ while (true) {
140
+ const { done, value } = await reader.read();
141
+ if (done) {
142
+ return 'connection_closed';
143
+ }
144
+ // Update last event time on any data received
145
+ lastEventTime = Date.now();
146
+ // Decode chunk and add to buffer
147
+ buffer += decoder.decode(value, { stream: true });
148
+ // Process complete SSE messages
149
+ const lines = buffer.split('\n');
150
+ // Keep the last incomplete line in the buffer
151
+ buffer = lines.pop() || '';
152
+ for (const line of lines) {
153
+ if (line.startsWith('data: ')) {
154
+ const data = line.slice(6); // Remove "data: " prefix
155
+ if (data.trim()) {
156
+ debug('SSE', 'Raw event:', data.substring(0, 200) + (data.length > 200 ? '...' : ''));
157
+ try {
158
+ const event = JSON.parse(data);
159
+ debug('SSE', 'Parsed event:', event.type);
160
+ eventCount++;
161
+ // Log progress milestone every 10 events
162
+ if (eventCount % 10 === 0) {
163
+ console.info(`[SSE] Processed ${eventCount} events...`);
164
+ }
165
+ onEvent(event);
166
+ // Check for run-ending events when completeOnRunEnd is enabled
167
+ if (completeOnRunEnd && (event.type === AGUIEventType.RUN_FINISHED ||
168
+ event.type === AGUIEventType.RUN_ERROR)) {
169
+ debug('SSE', `Received ${event.type}, completing stream`);
170
+ this.abort();
171
+ return `event:${event.type}`;
172
+ }
173
+ }
174
+ catch (parseError) {
175
+ console.error('[SSE] Parse error:', parseError);
176
+ debug('SSE', 'Failed data:', data);
177
+ }
178
+ }
179
+ }
180
+ // Ignore other SSE fields (id:, event:, retry:, comments)
181
+ }
182
+ }
183
+ })();
184
+ const reason = await Promise.race([streamPromise, idleTimeoutPromise]);
185
+ return reason;
186
+ }
187
+ finally {
188
+ if (idleCheckInterval) {
189
+ clearInterval(idleCheckInterval);
190
+ }
191
+ reader.releaseLock();
192
+ }
193
+ }
194
+ /**
195
+ * Abort the current stream connection
196
+ */
197
+ abort() {
198
+ this.abortController?.abort();
199
+ }
200
+ }
201
+ /**
202
+ * Convenience function for simple SSE consumption
203
+ * Completes when RUN_FINISHED/RUN_ERROR event is received, or when connection closes
204
+ */
205
+ export async function consumeSSEStream(url, payload, onEvent, headers, options) {
206
+ const client = new SSEClient();
207
+ return new Promise((resolve, reject) => {
208
+ client.consume({
209
+ url,
210
+ method: 'POST',
211
+ headers,
212
+ body: payload,
213
+ onEvent,
214
+ onError: (error) => reject(error),
215
+ onComplete: () => resolve(),
216
+ // Enable auto-completion on RUN_FINISHED/RUN_ERROR events
217
+ // This prevents hanging when the agent doesn't close the connection
218
+ completeOnRunEnd: true,
219
+ idleTimeoutMs: options?.idleTimeoutMs,
220
+ });
221
+ });
222
+ }
223
+ //# sourceMappingURL=sseStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sseStream.js","sourceRoot":"","sources":["../../../../services/agent/sseStream.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * AG-UI Streaming Connector
3
+ * Handles communication with agents using the AG-UI protocol over SSE
4
+ */
5
+ import type { TrajectoryStep } from '../../../types/index.js';
6
+ import type { AGUIEvent } from '../../../types/agui.js';
7
+ import { BaseConnector } from '../../../services/connectors/base/BaseConnector.js';
8
+ import type { ConnectorAuth, ConnectorRequest, ConnectorResponse, ConnectorProgressCallback, ConnectorRawEventCallback } from '../../../services/connectors/types.js';
9
+ import { AgentRequestPayload } from '../../../services/agent/payloadBuilder.js';
10
+ /**
11
+ * AG-UI Streaming Connector
12
+ * Uses Server-Sent Events (SSE) to stream agent responses in AG-UI format
13
+ */
14
+ export declare class AGUIStreamingConnector extends BaseConnector {
15
+ readonly type: "agui-streaming";
16
+ readonly name = "AG-UI Streaming";
17
+ traceContext: {
18
+ propagateHeader: boolean;
19
+ };
20
+ readonly supportsStreaming = true;
21
+ /**
22
+ * Build AG-UI payload from standard request
23
+ */
24
+ buildPayload(request: ConnectorRequest): AgentRequestPayload;
25
+ /**
26
+ * Execute the request using SSE streaming
27
+ */
28
+ execute(endpoint: string, request: ConnectorRequest, auth: ConnectorAuth, onProgress?: ConnectorProgressCallback, onRawEvent?: ConnectorRawEventCallback): Promise<ConnectorResponse>;
29
+ /**
30
+ * Parse raw AG-UI events into trajectory steps
31
+ * Used for re-processing stored raw events
32
+ */
33
+ parseResponse(rawEvents: AGUIEvent[]): TrajectoryStep[];
34
+ /**
35
+ * Health check for AG-UI endpoint
36
+ * Tries to connect without sending a full request
37
+ */
38
+ healthCheck(endpoint: string, auth: ConnectorAuth): Promise<boolean>;
39
+ }
40
+ /**
41
+ * Default instance for convenience
42
+ */
43
+ export declare const aguiStreamingConnector: AGUIStreamingConnector;
44
+ //# sourceMappingURL=AGUIStreamingConnector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AGUIStreamingConnector.d.ts","sourceRoot":"","sources":["../../../../../services/connectors/agui/AGUIStreamingConnector.ts"],"names":[],"mappings":"AAKA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,yBAAyB,EACzB,yBAAyB,EAC1B,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAqB,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAGzF;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,aAAa;IACvD,QAAQ,CAAC,IAAI,EAAG,gBAAgB,CAAU;IAC1C,QAAQ,CAAC,IAAI,qBAAqB;IAEzB,YAAY;;MAA6B;IAClD,QAAQ,CAAC,iBAAiB,QAAQ;IAElC;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,mBAAmB;IAS5D;;OAEG;IACG,OAAO,CACX,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,aAAa,EACnB,UAAU,CAAC,EAAE,yBAAyB,EACtC,UAAU,CAAC,EAAE,yBAAyB,GACrC,OAAO,CAAC,iBAAiB,CAAC;IA2C7B;;;OAGG;IACH,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,cAAc,EAAE;IAIvD;;;OAGG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;CAgB3E;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,wBAA+B,CAAC"}
@@ -0,0 +1,95 @@
1
+ /*
2
+ * Copyright OpenSearch Contributors
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import { BaseConnector } from '../../../services/connectors/base/BaseConnector.js';
6
+ import { consumeSSEStream } from '../../../services/agent/sseStream.js';
7
+ import { buildAgentPayload } from '../../../services/agent/payloadBuilder.js';
8
+ import { AGUIToTrajectoryConverter, computeTrajectoryFromRawEvents } from '../../../services/agent/aguiConverter.js';
9
+ /**
10
+ * AG-UI Streaming Connector
11
+ * Uses Server-Sent Events (SSE) to stream agent responses in AG-UI format
12
+ */
13
+ export class AGUIStreamingConnector extends BaseConnector {
14
+ constructor() {
15
+ super(...arguments);
16
+ this.type = 'agui-streaming';
17
+ this.name = 'AG-UI Streaming';
18
+ this.traceContext = { propagateHeader: true };
19
+ this.supportsStreaming = true;
20
+ }
21
+ /**
22
+ * Build AG-UI payload from standard request
23
+ */
24
+ buildPayload(request) {
25
+ return buildAgentPayload(request.testCase, request.modelId, request.threadId, request.runId);
26
+ }
27
+ /**
28
+ * Execute the request using SSE streaming
29
+ */
30
+ async execute(endpoint, request, auth, onProgress, onRawEvent) {
31
+ // Use pre-built payload from hook if available, otherwise build fresh
32
+ const hasPrebuiltPayload = !!request.payload;
33
+ const payload = request.payload || this.buildPayload(request);
34
+ const headers = this.buildAuthHeaders(auth);
35
+ this.injectTraceparentHeaders(headers);
36
+ const trajectory = [];
37
+ const rawEvents = [];
38
+ const converter = new AGUIToTrajectoryConverter();
39
+ this.debug('Executing AG-UI streaming request');
40
+ await consumeSSEStream(endpoint, payload, (event) => {
41
+ // Capture raw event for debugging
42
+ rawEvents.push(event);
43
+ onRawEvent?.(event);
44
+ // Convert to trajectory steps
45
+ const steps = converter.processEvent(event);
46
+ steps.forEach(step => {
47
+ trajectory.push(step);
48
+ onProgress?.(step);
49
+ });
50
+ }, headers);
51
+ const runId = converter.getRunId();
52
+ this.debug('Stream completed. RunId:', runId, 'Steps:', trajectory.length);
53
+ return {
54
+ trajectory,
55
+ runId,
56
+ rawEvents,
57
+ metadata: {
58
+ threadId: converter.getThreadId(),
59
+ },
60
+ };
61
+ }
62
+ /**
63
+ * Parse raw AG-UI events into trajectory steps
64
+ * Used for re-processing stored raw events
65
+ */
66
+ parseResponse(rawEvents) {
67
+ return computeTrajectoryFromRawEvents(rawEvents);
68
+ }
69
+ /**
70
+ * Health check for AG-UI endpoint
71
+ * Tries to connect without sending a full request
72
+ */
73
+ async healthCheck(endpoint, auth) {
74
+ try {
75
+ const headers = this.buildAuthHeaders(auth);
76
+ // For AG-UI endpoints, we can't really do a health check without
77
+ // making a full request, so just check if the endpoint is reachable
78
+ const response = await fetch(endpoint, {
79
+ method: 'OPTIONS',
80
+ headers,
81
+ });
82
+ // Accept any response that isn't a network error
83
+ return true;
84
+ }
85
+ catch (error) {
86
+ this.error('Health check failed:', error);
87
+ return false;
88
+ }
89
+ }
90
+ }
91
+ /**
92
+ * Default instance for convenience
93
+ */
94
+ export const aguiStreamingConnector = new AGUIStreamingConnector();
95
+ //# sourceMappingURL=AGUIStreamingConnector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AGUIStreamingConnector.js","sourceRoot":"","sources":["../../../../../services/connectors/agui/AGUIStreamingConnector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ import type { TrajectoryStep } from '../../../types/index.js';
2
+ import type { AgentConnector, ConnectorAuth, ConnectorProtocol, ConnectorRequest, ConnectorResponse, ConnectorProgressCallback, ConnectorRawEventCallback, TraceContextStrategy } from '../../../services/connectors/types.js';
3
+ /**
4
+ * Abstract base class for connectors
5
+ * Provides common functionality like auth header building and error handling
6
+ */
7
+ export declare abstract class BaseConnector implements AgentConnector {
8
+ abstract readonly type: ConnectorProtocol;
9
+ abstract readonly name: string;
10
+ abstract readonly supportsStreaming: boolean;
11
+ /**
12
+ * Trace-context propagation strategy. Subclasses set defaults; users can
13
+ * override per-agent via `connectorConfig.traceContext` (merged in execute()).
14
+ */
15
+ traceContext?: TraceContextStrategy;
16
+ /**
17
+ * Build payload for the agent request
18
+ * Subclasses must implement this to transform standard format to agent-specific format
19
+ */
20
+ abstract buildPayload(request: ConnectorRequest): any;
21
+ /**
22
+ * Execute the request
23
+ * Subclasses must implement the actual execution logic
24
+ */
25
+ abstract execute(endpoint: string, request: ConnectorRequest, auth: ConnectorAuth, onProgress?: ConnectorProgressCallback, onRawEvent?: ConnectorRawEventCallback): Promise<ConnectorResponse>;
26
+ /**
27
+ * Parse raw response into TrajectoryStep array
28
+ * Subclasses must implement protocol-specific parsing
29
+ */
30
+ abstract parseResponse(rawResponse: any): TrajectoryStep[];
31
+ /**
32
+ * Build HTTP headers from auth configuration
33
+ * @param auth Authentication configuration
34
+ * @returns Headers object ready for fetch/axios
35
+ */
36
+ protected buildAuthHeaders(auth: ConnectorAuth): Record<string, string>;
37
+ /**
38
+ * Build environment variables from auth configuration
39
+ * Used by subprocess connectors
40
+ */
41
+ protected buildAuthEnv(auth: ConnectorAuth): Record<string, string>;
42
+ /**
43
+ * Generate a unique ID for trajectory steps
44
+ */
45
+ protected generateId(): string;
46
+ /**
47
+ * Create a trajectory step with common fields
48
+ */
49
+ protected createStep(type: TrajectoryStep['type'], content: string, extra?: Partial<TrajectoryStep>): TrajectoryStep;
50
+ /**
51
+ * Default health check implementation
52
+ * Subclasses can override for protocol-specific checks
53
+ */
54
+ healthCheck(endpoint: string, auth: ConnectorAuth): Promise<boolean>;
55
+ /**
56
+ * Log debug message with connector type prefix
57
+ */
58
+ protected debug(message: string, ...args: any[]): void;
59
+ /**
60
+ * Log error message with connector type prefix
61
+ */
62
+ protected error(message: string, ...args: any[]): void;
63
+ /**
64
+ * Build a W3C `TRACEPARENT` env var string from the active OTel span,
65
+ * if any. Returns an env-fragment object (empty if no active span or
66
+ * propagation is disabled for this connector).
67
+ *
68
+ * Used by subprocess connectors to make the child's OTel SDK adopt the
69
+ * eval `test_case` span as parent context (Strategy A).
70
+ */
71
+ protected buildTraceparentEnv(): Record<string, string>;
72
+ /**
73
+ * Inject W3C `traceparent` (and `tracestate`) headers into an outgoing
74
+ * HTTP request, if a span is active and propagation is enabled.
75
+ *
76
+ * Used by REST/SSE connectors so the remote agent's OTel SDK adopts the
77
+ * eval `test_case` span as parent context (Strategy A).
78
+ */
79
+ protected injectTraceparentHeaders(headers: Record<string, string>): void;
80
+ }
81
+ //# sourceMappingURL=BaseConnector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseConnector.d.ts","sourceRoot":"","sources":["../../../../../services/connectors/base/BaseConnector.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAG9C,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,yBAAyB,EACzB,yBAAyB,EACzB,oBAAoB,EACrB,MAAM,6BAA6B,CAAC;AAErC;;;GAGG;AACH,8BAAsB,aAAc,YAAW,cAAc;IAC3D,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAC1C,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IAE7C;;;OAGG;IACH,YAAY,CAAC,EAAE,oBAAoB,CAAC;IAEpC;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,GAAG;IAErD;;;OAGG;IACH,QAAQ,CAAC,OAAO,CACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,aAAa,EACnB,UAAU,CAAC,EAAE,yBAAyB,EACtC,UAAU,CAAC,EAAE,yBAAyB,GACrC,OAAO,CAAC,iBAAiB,CAAC;IAE7B;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAC,WAAW,EAAE,GAAG,GAAG,cAAc,EAAE;IAE1D;;;;OAIG;IACH,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IA6CvE;;;OAGG;IACH,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAanE;;OAEG;IACH,SAAS,CAAC,UAAU,IAAI,MAAM;IAI9B;;OAEG;IACH,SAAS,CAAC,UAAU,CAClB,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,EAC5B,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAC9B,cAAc;IAUjB;;;OAGG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAe1E;;OAEG;IACH,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAItD;;OAEG;IACH,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAItD;;;;;;;OAOG;IACH,SAAS,CAAC,mBAAmB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAwBvD;;;;;;OAMG;IACH,SAAS,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;CAI1E"}
@@ -0,0 +1,170 @@
1
+ /*
2
+ * Copyright OpenSearch Contributors
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import { debug as centralDebug } from '../../../lib/debug.js';
6
+ import { trace, context as otelContext, propagation } from '@opentelemetry/api';
7
+ /**
8
+ * Abstract base class for connectors
9
+ * Provides common functionality like auth header building and error handling
10
+ */
11
+ export class BaseConnector {
12
+ /**
13
+ * Build HTTP headers from auth configuration
14
+ * @param auth Authentication configuration
15
+ * @returns Headers object ready for fetch/axios
16
+ */
17
+ buildAuthHeaders(auth) {
18
+ const headers = {};
19
+ switch (auth.type) {
20
+ case 'basic':
21
+ if (auth.username && auth.password) {
22
+ const credentials = Buffer.from(`${auth.username}:${auth.password}`).toString('base64');
23
+ headers['Authorization'] = `Basic ${credentials}`;
24
+ }
25
+ break;
26
+ case 'bearer':
27
+ if (auth.token) {
28
+ headers['Authorization'] = `Bearer ${auth.token}`;
29
+ }
30
+ break;
31
+ case 'api-key':
32
+ if (auth.token) {
33
+ // Common API key header patterns
34
+ headers['X-API-Key'] = auth.token;
35
+ headers['x-api-key'] = auth.token; // Some APIs use lowercase
36
+ }
37
+ break;
38
+ case 'aws-sigv4':
39
+ // AWS SigV4 signing would be handled separately
40
+ // This is a placeholder - actual implementation would use aws4 or @aws-sdk/signature-v4
41
+ console.warn('[BaseConnector] AWS SigV4 auth requires runtime signing');
42
+ break;
43
+ case 'none':
44
+ default:
45
+ // No auth headers needed
46
+ break;
47
+ }
48
+ // Always apply custom headers (can override auth headers if needed)
49
+ if (auth.headers) {
50
+ Object.assign(headers, auth.headers);
51
+ }
52
+ return headers;
53
+ }
54
+ /**
55
+ * Build environment variables from auth configuration
56
+ * Used by subprocess connectors
57
+ */
58
+ buildAuthEnv(auth) {
59
+ const env = {};
60
+ if (auth.type === 'aws-sigv4') {
61
+ if (auth.awsRegion)
62
+ env['AWS_REGION'] = auth.awsRegion;
63
+ if (auth.awsAccessKeyId)
64
+ env['AWS_ACCESS_KEY_ID'] = auth.awsAccessKeyId;
65
+ if (auth.awsSecretAccessKey)
66
+ env['AWS_SECRET_ACCESS_KEY'] = auth.awsSecretAccessKey;
67
+ if (auth.awsSessionToken)
68
+ env['AWS_SESSION_TOKEN'] = auth.awsSessionToken;
69
+ }
70
+ return env;
71
+ }
72
+ /**
73
+ * Generate a unique ID for trajectory steps
74
+ */
75
+ generateId() {
76
+ return `${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;
77
+ }
78
+ /**
79
+ * Create a trajectory step with common fields
80
+ */
81
+ createStep(type, content, extra) {
82
+ return {
83
+ id: this.generateId(),
84
+ timestamp: Date.now(),
85
+ type,
86
+ content,
87
+ ...extra,
88
+ };
89
+ }
90
+ /**
91
+ * Default health check implementation
92
+ * Subclasses can override for protocol-specific checks
93
+ */
94
+ async healthCheck(endpoint, auth) {
95
+ try {
96
+ // Default: try a simple fetch with HEAD method
97
+ const headers = this.buildAuthHeaders(auth);
98
+ const response = await fetch(endpoint, {
99
+ method: 'HEAD',
100
+ headers,
101
+ });
102
+ return response.ok;
103
+ }
104
+ catch (error) {
105
+ console.error(`[${this.type}] Health check failed:`, error);
106
+ return false;
107
+ }
108
+ }
109
+ /**
110
+ * Log debug message with connector type prefix
111
+ */
112
+ debug(message, ...args) {
113
+ centralDebug(this.type, message, ...args);
114
+ }
115
+ /**
116
+ * Log error message with connector type prefix
117
+ */
118
+ error(message, ...args) {
119
+ console.error(`[${this.type}] ${message}`, ...args);
120
+ }
121
+ /**
122
+ * Build a W3C `TRACEPARENT` env var string from the active OTel span,
123
+ * if any. Returns an env-fragment object (empty if no active span or
124
+ * propagation is disabled for this connector).
125
+ *
126
+ * Used by subprocess connectors to make the child's OTel SDK adopt the
127
+ * eval `test_case` span as parent context (Strategy A).
128
+ */
129
+ buildTraceparentEnv() {
130
+ if (!this.traceContext?.propagateEnv)
131
+ return {};
132
+ const span = trace.getSpan(otelContext.active());
133
+ if (!span)
134
+ return {};
135
+ const ctx = span.spanContext();
136
+ if (!ctx.traceId || !ctx.spanId)
137
+ return {};
138
+ // Both trace-id and parent-id must be non-zero per W3C trace context spec
139
+ // (https://www.w3.org/TR/trace-context/#trace-id). Emitting an all-zero
140
+ // value would produce an invalid traceparent that downstream SDKs
141
+ // typically reject silently — the agent's root span won't adopt our
142
+ // context as parent and we'd get back to two unrelated trace trees.
143
+ if (ctx.traceId === '0'.repeat(32) || ctx.spanId === '0'.repeat(16))
144
+ return {};
145
+ // 00 = W3C version; flags=01 means SAMPLED so the agent's exporter forwards.
146
+ const flags = (ctx.traceFlags ?? 1).toString(16).padStart(2, '0');
147
+ const env = {
148
+ TRACEPARENT: `00-${ctx.traceId}-${ctx.spanId}-${flags}`,
149
+ };
150
+ if (ctx.traceState) {
151
+ const ts = ctx.traceState.serialize();
152
+ if (ts)
153
+ env.TRACESTATE = ts;
154
+ }
155
+ return env;
156
+ }
157
+ /**
158
+ * Inject W3C `traceparent` (and `tracestate`) headers into an outgoing
159
+ * HTTP request, if a span is active and propagation is enabled.
160
+ *
161
+ * Used by REST/SSE connectors so the remote agent's OTel SDK adopts the
162
+ * eval `test_case` span as parent context (Strategy A).
163
+ */
164
+ injectTraceparentHeaders(headers) {
165
+ if (!this.traceContext?.propagateHeader)
166
+ return;
167
+ propagation.inject(otelContext.active(), headers);
168
+ }
169
+ }
170
+ //# sourceMappingURL=BaseConnector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseConnector.js","sourceRoot":"","sources":["../../../../../services/connectors/base/BaseConnector.ts"],"names":[],"mappings":"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"}