@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,158 @@
1
+ /*
2
+ * Copyright OpenSearch Contributors
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ /**
6
+ * Kiro CLI Connector
7
+ *
8
+ * Specialized subprocess connector for `kiro-cli chat --no-interactive`.
9
+ *
10
+ * Why this exists
11
+ * ---------------
12
+ * The base `SubprocessConnector` parses Kiro's stdout as a stream of plain
13
+ * text lines (assistant chunks). That works for live UI streaming but loses
14
+ * all evidence of which tools the agent actually invoked. The judge then has
15
+ * nothing to evidence-check against — a polished hallucinated narrative
16
+ * scores the same as a tool-grounded investigation.
17
+ *
18
+ * Kiro DOES emit structured tool events, but on stderr in a line-oriented
19
+ * format:
20
+ *
21
+ * [tool] Running: <command_or_invocation>
22
+ * [tool] status: <Completed|Failed|Cancelled|...>
23
+ *
24
+ * This connector intercepts those stderr lines and converts them into
25
+ * proper `action` + `tool_result` trajectory steps, so:
26
+ * - The judge can see what tools ran (and whether they succeeded).
27
+ * - SDK matchers like `expect(traj).to.haveCalledTool('glob')` actually
28
+ * have something to assert against.
29
+ * - A future "RCA + Grounded" evaluator can require that any factual
30
+ * claim be backed by at least one `tool_result` step.
31
+ *
32
+ * Stdout streaming behaviour (line-by-line `assistant` chunks plus a final
33
+ * consolidated `response`) is inherited unchanged from the base class.
34
+ */
35
+ import { ToolCallStatus } from '../../../types/index.js';
36
+ import { SubprocessConnector } from '../../../services/connectors/subprocess/SubprocessConnector.js';
37
+ /**
38
+ * Default Kiro configuration.
39
+ *
40
+ * `--agent-engine v2` is required so slash commands like `/<slash-command> ...`
41
+ * route through the agent registry. The default (v1) non-interactive parser
42
+ * treats `/<word>` as an unknown subcommand and exits early.
43
+ *
44
+ * `--no-interactive` is required for headless invocation but suppresses
45
+ * sqlite session persistence, which is why we rely on stderr `[tool]`
46
+ * markers rather than the on-disk conversations_v2 table.
47
+ */
48
+ const KIRO_DEFAULT_CONFIG = {
49
+ command: 'kiro-cli',
50
+ args: [
51
+ 'chat',
52
+ '--agent-engine', 'v2',
53
+ '--no-interactive',
54
+ '--trust-all-tools',
55
+ ],
56
+ env: {},
57
+ inputMode: 'arg',
58
+ outputParser: 'streaming',
59
+ timeout: 600000, // 10 minutes
60
+ };
61
+ export class KiroConnector extends SubprocessConnector {
62
+ constructor(config) {
63
+ super({ ...KIRO_DEFAULT_CONFIG, ...config });
64
+ this.type = 'kiro';
65
+ this.name = 'Kiro CLI';
66
+ this.traceContext = { propagateEnv: true, serviceName: 'kiro-agent' };
67
+ /** Carry-over for a partial last line on stderr stream */
68
+ this.stderrLineBuffer = '';
69
+ /** Tool name from the last unmatched `[tool] Running:` line, used to
70
+ * attach the same toolName to the corresponding `[tool] status:` row. */
71
+ this.pendingToolName = null;
72
+ }
73
+ /**
74
+ * Convert kiro-cli's stderr `[tool]` markers into trajectory steps.
75
+ *
76
+ * Each chunk may straddle line boundaries, so we accumulate into
77
+ * `stderrLineBuffer` and only consume complete lines (the trailing
78
+ * partial line is held until the next chunk or `onBeforeStreamEnd`).
79
+ */
80
+ parseStderrChunk(chunk, trajectory, onProgress) {
81
+ this.stderrLineBuffer += chunk;
82
+ const lines = this.stderrLineBuffer.split('\n');
83
+ this.stderrLineBuffer = lines.pop() || '';
84
+ for (const raw of lines) {
85
+ this.processStderrLine(raw, trajectory, onProgress);
86
+ }
87
+ }
88
+ /**
89
+ * Drain any held partial line from the stderr buffer and reset
90
+ * per-run state, then defer to the base class to flush the
91
+ * consolidated stdout response step.
92
+ */
93
+ onBeforeStreamEnd(trajectory, onProgress) {
94
+ if (this.stderrLineBuffer.trim()) {
95
+ this.processStderrLine(this.stderrLineBuffer, trajectory, onProgress);
96
+ }
97
+ this.stderrLineBuffer = '';
98
+ this.pendingToolName = null;
99
+ // Base class emits the consolidated `response` step from buffered stdout.
100
+ super.onBeforeStreamEnd(trajectory, onProgress);
101
+ }
102
+ /**
103
+ * Parse a single stderr line. Recognised forms:
104
+ *
105
+ * [tool] Running: <command> -> emit `action` step
106
+ * [tool] status: Completed -> emit `tool_result` (SUCCESS)
107
+ * [tool] status: Failed -> emit `tool_result` (FAILURE)
108
+ * [tool] status: <anything else> -> emit `tool_result` (FAILURE)
109
+ *
110
+ * Other stderr lines (AWS SDK warnings, telemetry info, etc.) are ignored.
111
+ */
112
+ processStderrLine(raw, trajectory, onProgress) {
113
+ // Drop NUL/control bytes that occasionally slip into stderr
114
+ const line = raw.replace(/[\x00-\x08\x0b-\x1f\x7f]/g, '').trim();
115
+ if (!line.startsWith('[tool]'))
116
+ return;
117
+ const m = line.match(/^\[tool\]\s+(Running|status):\s*(.*)$/i);
118
+ if (!m)
119
+ return;
120
+ const kind = m[1].toLowerCase();
121
+ const payload = m[2].trim();
122
+ if (kind === 'running') {
123
+ // Best-effort tool name: first whitespace-separated token. For
124
+ // shell tool calls this is the command (e.g. `wc`, `find`); for
125
+ // first-party tools (e.g. `glob`, `use_subagent`) it's the tool
126
+ // name itself. We keep the full payload as `command` in toolArgs
127
+ // so SDK matchers and judges can pattern-match on it.
128
+ const toolName = payload.split(/\s+/)[0] || 'unknown';
129
+ const toolArgs = { command: payload };
130
+ this.pendingToolName = toolName;
131
+ const step = this.createStep('action', JSON.stringify(toolArgs), {
132
+ toolName,
133
+ toolArgs,
134
+ });
135
+ trajectory.push(step);
136
+ onProgress?.(step);
137
+ return;
138
+ }
139
+ if (kind === 'status') {
140
+ const success = /^(Completed|Success)/i.test(payload);
141
+ const step = this.createStep('tool_result', `status: ${payload}`, {
142
+ status: success ? ToolCallStatus.SUCCESS : ToolCallStatus.FAILURE,
143
+ toolName: this.pendingToolName ?? undefined,
144
+ });
145
+ trajectory.push(step);
146
+ onProgress?.(step);
147
+ this.pendingToolName = null;
148
+ }
149
+ }
150
+ async healthCheck(endpoint, auth) {
151
+ return super.healthCheck(endpoint || 'kiro-cli', auth);
152
+ }
153
+ }
154
+ /**
155
+ * Default instance for convenience.
156
+ */
157
+ export const kiroConnector = new KiroConnector();
158
+ //# sourceMappingURL=KiroConnector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KiroConnector.js","sourceRoot":"","sources":["../../../../../services/connectors/kiro/KiroConnector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * LangGraph REST Connector
3
+ * Handles non-streaming REST calls to LangGraph agents
4
+ *
5
+ * For AG-UI streaming LangGraph agents, use the existing agui-streaming connector.
6
+ * This connector is for LangGraph instances exposed via direct REST API.
7
+ */
8
+ import type { TrajectoryStep } from '../../../types/index.js';
9
+ import { BaseConnector } from '../../../services/connectors/base/BaseConnector.js';
10
+ import type { ConnectorAuth, ConnectorRequest, ConnectorResponse, ConnectorProgressCallback, ConnectorRawEventCallback } from '../../../services/connectors/types.js';
11
+ /**
12
+ * LangGraph REST Connector
13
+ *
14
+ * Communicates with LangGraph agents via the LangGraph REST API.
15
+ * Uses the /invoke endpoint for synchronous execution.
16
+ * For streaming LangGraph agents, use the agui-streaming connector instead.
17
+ *
18
+ * Configuration:
19
+ * - endpoint: Base URL of the LangGraph server (e.g., "http://localhost:8123")
20
+ * - connectorConfig.graphId: Graph/assistant ID (defaults to "agent")
21
+ * - connectorConfig.threadId: Optional thread ID for multi-turn
22
+ */
23
+ export declare class LangGraphConnector extends BaseConnector {
24
+ readonly type: "langgraph";
25
+ readonly name = "LangGraph (REST)";
26
+ traceContext: {
27
+ propagateHeader: boolean;
28
+ };
29
+ readonly supportsStreaming = false;
30
+ buildPayload(request: ConnectorRequest): any;
31
+ execute(endpoint: string, request: ConnectorRequest, auth: ConnectorAuth, onProgress?: ConnectorProgressCallback, onRawEvent?: ConnectorRawEventCallback): Promise<ConnectorResponse>;
32
+ parseResponse(data: any): TrajectoryStep[];
33
+ healthCheck(endpoint: string, auth: ConnectorAuth): Promise<boolean>;
34
+ }
35
+ export declare const langgraphConnector: LangGraphConnector;
36
+ //# sourceMappingURL=LangGraphConnector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LangGraphConnector.d.ts","sourceRoot":"","sources":["../../../../../services/connectors/langgraph/LangGraphConnector.ts"],"names":[],"mappings":"AAKA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,SAAS,CAAC;AAC9D,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;;;;;;;;;;;GAWG;AACH,qBAAa,kBAAmB,SAAQ,aAAa;IACnD,QAAQ,CAAC,IAAI,EAAG,WAAW,CAAU;IACrC,QAAQ,CAAC,IAAI,sBAAsB;IAE1B,YAAY;;MAA6B;IAClD,QAAQ,CAAC,iBAAiB,SAAS;IAEnC,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,GAAG;IAoBtC,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;IAgD7B,aAAa,CAAC,IAAI,EAAE,GAAG,GAAG,cAAc,EAAE;IA2EpC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;CAoB3E;AAED,eAAO,MAAM,kBAAkB,oBAA2B,CAAC"}
@@ -0,0 +1,175 @@
1
+ /*
2
+ * Copyright OpenSearch Contributors
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import { BaseConnector } from '../../../services/connectors/base/BaseConnector.js';
6
+ /**
7
+ * LangGraph REST Connector
8
+ *
9
+ * Communicates with LangGraph agents via the LangGraph REST API.
10
+ * Uses the /invoke endpoint for synchronous execution.
11
+ * For streaming LangGraph agents, use the agui-streaming connector instead.
12
+ *
13
+ * Configuration:
14
+ * - endpoint: Base URL of the LangGraph server (e.g., "http://localhost:8123")
15
+ * - connectorConfig.graphId: Graph/assistant ID (defaults to "agent")
16
+ * - connectorConfig.threadId: Optional thread ID for multi-turn
17
+ */
18
+ export class LangGraphConnector extends BaseConnector {
19
+ constructor() {
20
+ super(...arguments);
21
+ this.type = 'langgraph';
22
+ this.name = 'LangGraph (REST)';
23
+ this.traceContext = { propagateHeader: true };
24
+ this.supportsStreaming = false;
25
+ }
26
+ buildPayload(request) {
27
+ const config = request.connectorConfig || {};
28
+ return {
29
+ input: {
30
+ messages: [
31
+ {
32
+ role: 'user',
33
+ content: request.testCase.initialPrompt,
34
+ },
35
+ ],
36
+ },
37
+ config: {
38
+ configurable: {
39
+ ...(request.modelId && { model: request.modelId }),
40
+ ...config.configurable,
41
+ },
42
+ },
43
+ };
44
+ }
45
+ async execute(endpoint, request, auth, onProgress, onRawEvent) {
46
+ const payload = request.payload || this.buildPayload(request);
47
+ const headers = this.buildAuthHeaders(auth);
48
+ this.injectTraceparentHeaders(headers);
49
+ const config = request.connectorConfig || {};
50
+ const graphId = config.graphId || 'agent';
51
+ // Build the invoke URL
52
+ const baseUrl = endpoint.replace(/\/+$/, '');
53
+ const threadId = config.threadId || request.threadId;
54
+ const invokeUrl = threadId
55
+ ? `${baseUrl}/threads/${threadId}/runs/wait`
56
+ : `${baseUrl}/assistants/${graphId}/invoke`;
57
+ this.debug('Executing LangGraph request');
58
+ this.debug('URL:', invokeUrl);
59
+ const response = await fetch(invokeUrl, {
60
+ method: 'POST',
61
+ headers: {
62
+ 'Content-Type': 'application/json',
63
+ ...headers,
64
+ },
65
+ body: JSON.stringify(payload),
66
+ });
67
+ if (!response.ok) {
68
+ const errorText = await response.text();
69
+ throw new Error(`LangGraph request failed: ${response.status} - ${errorText}`);
70
+ }
71
+ const data = await response.json();
72
+ onRawEvent?.(data);
73
+ const trajectory = this.parseResponse(data);
74
+ trajectory.forEach(step => onProgress?.(step));
75
+ return {
76
+ trajectory,
77
+ runId: data.run_id || data.thread_id || threadId || null,
78
+ rawEvents: [data],
79
+ metadata: {
80
+ graphId,
81
+ threadId: data.thread_id || threadId,
82
+ },
83
+ };
84
+ }
85
+ parseResponse(data) {
86
+ const steps = [];
87
+ // LangGraph invoke response format: { output: { messages: [...] } }
88
+ // Or thread-based: { values: { messages: [...] } }
89
+ const messages = data.output?.messages || data.values?.messages || data.messages || [];
90
+ for (const msg of messages) {
91
+ const role = msg.type || msg.role;
92
+ const content = typeof msg.content === 'string'
93
+ ? msg.content
94
+ : Array.isArray(msg.content)
95
+ ? msg.content.map((c) => c.text || JSON.stringify(c)).join('\n')
96
+ : JSON.stringify(msg.content);
97
+ if (role === 'ai' || role === 'assistant') {
98
+ // Check for tool calls in the AI message
99
+ if (msg.tool_calls && Array.isArray(msg.tool_calls) && msg.tool_calls.length > 0) {
100
+ for (const toolCall of msg.tool_calls) {
101
+ steps.push(this.createStep('action', `Calling ${toolCall.name}...`, {
102
+ toolName: toolCall.name,
103
+ toolArgs: toolCall.args,
104
+ }));
105
+ }
106
+ }
107
+ // AI reasoning or intermediate response
108
+ if (content && !msg.tool_calls?.length) {
109
+ steps.push(this.createStep('assistant', content));
110
+ }
111
+ }
112
+ else if (role === 'tool') {
113
+ steps.push(this.createStep('tool_result', content, {
114
+ toolName: msg.name,
115
+ status: 'SUCCESS',
116
+ }));
117
+ }
118
+ }
119
+ // The last AI message without tool calls is the final response
120
+ const lastAssistant = [...steps].reverse().find(s => s.type === 'assistant');
121
+ if (lastAssistant) {
122
+ lastAssistant.type = 'response';
123
+ }
124
+ // Handle intermediate_steps format (older LangGraph versions)
125
+ if (data.intermediate_steps && Array.isArray(data.intermediate_steps)) {
126
+ for (const [action, observation] of data.intermediate_steps) {
127
+ if (action?.tool) {
128
+ steps.push(this.createStep('action', `Calling ${action.tool}...`, {
129
+ toolName: action.tool,
130
+ toolArgs: action.tool_input,
131
+ }));
132
+ }
133
+ if (observation !== undefined) {
134
+ const obsContent = typeof observation === 'string' ? observation : JSON.stringify(observation);
135
+ steps.push(this.createStep('tool_result', obsContent, {
136
+ status: 'SUCCESS',
137
+ }));
138
+ }
139
+ }
140
+ }
141
+ // Handle direct output field
142
+ if (data.output && typeof data.output === 'string' && steps.length === 0) {
143
+ steps.push(this.createStep('response', data.output));
144
+ }
145
+ // Fallback
146
+ if (steps.length === 0 && data) {
147
+ steps.push(this.createStep('response', JSON.stringify(data, null, 2)));
148
+ }
149
+ return steps;
150
+ }
151
+ async healthCheck(endpoint, auth) {
152
+ try {
153
+ const headers = this.buildAuthHeaders(auth);
154
+ const baseUrl = endpoint.replace(/\/+$/, '');
155
+ const response = await fetch(`${baseUrl}/ok`, {
156
+ method: 'GET',
157
+ headers,
158
+ });
159
+ return response.ok;
160
+ }
161
+ catch {
162
+ // Try root endpoint as fallback
163
+ try {
164
+ const headers = this.buildAuthHeaders(auth);
165
+ const response = await fetch(endpoint, { method: 'GET', headers });
166
+ return response.ok;
167
+ }
168
+ catch {
169
+ return false;
170
+ }
171
+ }
172
+ }
173
+ }
174
+ export const langgraphConnector = new LangGraphConnector();
175
+ //# sourceMappingURL=LangGraphConnector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LangGraphConnector.js","sourceRoot":"","sources":["../../../../../services/connectors/langgraph/LangGraphConnector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Mock Connector
3
+ * Generates demo/test trajectory without calling a real agent
4
+ */
5
+ import type { TrajectoryStep } from '../../../types/index.js';
6
+ import { BaseConnector } from '../../../services/connectors/base/BaseConnector.js';
7
+ import type { ConnectorAuth, ConnectorRequest, ConnectorResponse, ConnectorProgressCallback, ConnectorRawEventCallback } from '../../../services/connectors/types.js';
8
+ /**
9
+ * Mock Connector for demo and testing
10
+ * Generates a realistic trajectory without calling a real agent
11
+ */
12
+ export declare class MockConnector extends BaseConnector {
13
+ readonly type: "mock";
14
+ readonly name = "Demo Agent (Mock)";
15
+ readonly supportsStreaming = true;
16
+ /**
17
+ * Build payload - not used for mock but required by interface
18
+ */
19
+ buildPayload(request: ConnectorRequest): any;
20
+ /**
21
+ * Execute mock request - generates realistic trajectory with delays
22
+ */
23
+ execute(endpoint: string, request: ConnectorRequest, auth: ConnectorAuth, onProgress?: ConnectorProgressCallback, onRawEvent?: ConnectorRawEventCallback): Promise<ConnectorResponse>;
24
+ /**
25
+ * Parse raw events - for mock, just extract steps from our custom format
26
+ */
27
+ parseResponse(rawEvents: any[]): TrajectoryStep[];
28
+ /**
29
+ * Health check - mock is always "healthy"
30
+ */
31
+ healthCheck(endpoint: string, auth: ConnectorAuth): Promise<boolean>;
32
+ }
33
+ /**
34
+ * Default instance for convenience
35
+ */
36
+ export declare const mockConnector: MockConnector;
37
+ //# sourceMappingURL=MockConnector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MockConnector.d.ts","sourceRoot":"","sources":["../../../../../services/connectors/mock/MockConnector.ts"],"names":[],"mappings":"AAKA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,SAAS,CAAC;AAC9D,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;;;GAGG;AACH,qBAAa,aAAc,SAAQ,aAAa;IAC9C,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAU;IAChC,QAAQ,CAAC,IAAI,uBAAuB;IACpC,QAAQ,CAAC,iBAAiB,QAAQ;IAElC;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,GAAG;IAO5C;;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;IAsG7B;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE;IAMjD;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;CAG3E;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,eAAsB,CAAC"}
@@ -0,0 +1,120 @@
1
+ /*
2
+ * Copyright OpenSearch Contributors
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import { BaseConnector } from '../../../services/connectors/base/BaseConnector.js';
6
+ /**
7
+ * Mock Connector for demo and testing
8
+ * Generates a realistic trajectory without calling a real agent
9
+ */
10
+ export class MockConnector extends BaseConnector {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.type = 'mock';
14
+ this.name = 'Demo Agent (Mock)';
15
+ this.supportsStreaming = true;
16
+ }
17
+ /**
18
+ * Build payload - not used for mock but required by interface
19
+ */
20
+ buildPayload(request) {
21
+ return {
22
+ question: request.testCase.initialPrompt,
23
+ context: request.testCase.context,
24
+ };
25
+ }
26
+ /**
27
+ * Execute mock request - generates realistic trajectory with delays
28
+ */
29
+ async execute(endpoint, request, auth, onProgress, onRawEvent) {
30
+ const trajectory = [];
31
+ const rawEvents = [];
32
+ const runId = `mock-run-${Date.now()}`;
33
+ const sleep = (ms) => new Promise(r => setTimeout(r, ms));
34
+ this.debug('Generating mock trajectory for:', request.testCase.name);
35
+ // Helper to emit step
36
+ const emitStep = (step) => {
37
+ trajectory.push(step);
38
+ onProgress?.(step);
39
+ // Also emit as "raw event" for consistency
40
+ rawEvents.push({ type: 'MOCK_STEP', step });
41
+ onRawEvent?.({ type: 'MOCK_STEP', step });
42
+ };
43
+ // Step 1: Initial thinking/analysis
44
+ await sleep(100);
45
+ emitStep(this.createStep('assistant', 'I need to investigate this issue. Let me start by checking the cluster health and then drill down into specific metrics.'));
46
+ // Step 2: First tool call
47
+ await sleep(300);
48
+ emitStep(this.createStep('action', 'Calling opensearch_cluster_health...', {
49
+ toolName: 'opensearch_cluster_health',
50
+ toolArgs: { local: true },
51
+ }));
52
+ // Step 3: First tool result
53
+ await sleep(500);
54
+ emitStep(this.createStep('tool_result', JSON.stringify({ status: 'yellow', number_of_nodes: 3, unassigned_shards: 0 }, null, 2), {
55
+ status: 'SUCCESS',
56
+ latencyMs: 500,
57
+ }));
58
+ // Step 4: Analysis after first tool
59
+ await sleep(300);
60
+ emitStep(this.createStep('assistant', 'The cluster is in yellow state. Let me check the node stats to identify which node might be causing issues.'));
61
+ // Step 5: Second tool call
62
+ await sleep(300);
63
+ emitStep(this.createStep('action', 'Calling opensearch_nodes_stats...', {
64
+ toolName: 'opensearch_nodes_stats',
65
+ toolArgs: { metric: 'jvm,os' },
66
+ }));
67
+ // Step 6: Second tool result
68
+ await sleep(600);
69
+ emitStep(this.createStep('tool_result', 'Node-1: CPU 12%, JVM Heap 45%\nNode-2: CPU 15%, JVM Heap 52%\nNode-3: CPU 98%, JVM Heap 89% (Data Node)', {
70
+ status: 'SUCCESS',
71
+ latencyMs: 600,
72
+ }));
73
+ // Step 7: Final response with RCA
74
+ await sleep(400);
75
+ emitStep(this.createStep('response', `## Root Cause Analysis Complete
76
+
77
+ **Finding:** High CPU utilization detected on Node-3 (98% CPU, 89% JVM Heap)
78
+
79
+ **Root Cause:** Node-3 is experiencing resource exhaustion, likely due to:
80
+ 1. Heavy indexing or search operations
81
+ 2. Garbage collection pressure from high heap usage
82
+ 3. Possible hot spot in shard distribution
83
+
84
+ **Recommendations:**
85
+ 1. Check hot threads on Node-3 using \`_nodes/Node-3/hot_threads\`
86
+ 2. Review shard distribution and consider rebalancing
87
+ 3. Monitor GC logs for long pauses
88
+ 4. Consider scaling horizontally if load persists`));
89
+ this.debug('Mock trajectory completed. Steps:', trajectory.length);
90
+ return {
91
+ trajectory,
92
+ runId,
93
+ rawEvents,
94
+ metadata: {
95
+ mock: true,
96
+ testCaseId: request.testCase.id,
97
+ testCaseName: request.testCase.name,
98
+ },
99
+ };
100
+ }
101
+ /**
102
+ * Parse raw events - for mock, just extract steps from our custom format
103
+ */
104
+ parseResponse(rawEvents) {
105
+ return rawEvents
106
+ .filter(e => e.type === 'MOCK_STEP' && e.step)
107
+ .map(e => e.step);
108
+ }
109
+ /**
110
+ * Health check - mock is always "healthy"
111
+ */
112
+ async healthCheck(endpoint, auth) {
113
+ return true;
114
+ }
115
+ }
116
+ /**
117
+ * Default instance for convenience
118
+ */
119
+ export const mockConnector = new MockConnector();
120
+ //# sourceMappingURL=MockConnector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MockConnector.js","sourceRoot":"","sources":["../../../../../services/connectors/mock/MockConnector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * OpenAI-compatible Connector
3
+ *
4
+ * Connector for any OpenAI-compatible API endpoint.
5
+ * Formats requests as OpenAI Chat Completions and parses the response.
6
+ *
7
+ * Works with:
8
+ * - OpenAI API directly
9
+ * - Azure OpenAI
10
+ * - Any OpenAI-compatible endpoint (vLLM, Ollama, LiteLLM proxy, etc.)
11
+ */
12
+ import type { TrajectoryStep } from '../../../types/index.js';
13
+ import { BaseConnector } from '../../../services/connectors/base/BaseConnector.js';
14
+ import type { ConnectorAuth, ConnectorRequest, ConnectorResponse, ConnectorProgressCallback, ConnectorRawEventCallback } from '../../../services/connectors/types.js';
15
+ /**
16
+ * OpenAI-compatible connector
17
+ */
18
+ export declare class OpenAICompatibleConnector extends BaseConnector {
19
+ readonly type: "openai-compatible";
20
+ readonly name = "OpenAI-compatible";
21
+ traceContext: {
22
+ propagateHeader: boolean;
23
+ };
24
+ readonly supportsStreaming = false;
25
+ /**
26
+ * Build OpenAI Chat Completion payload from test case
27
+ */
28
+ buildPayload(request: ConnectorRequest): any;
29
+ /**
30
+ * Execute OpenAI-compatible Chat Completion request
31
+ */
32
+ execute(endpoint: string, request: ConnectorRequest, auth: ConnectorAuth, onProgress?: ConnectorProgressCallback, onRawEvent?: ConnectorRawEventCallback): Promise<ConnectorResponse>;
33
+ /**
34
+ * Parse OpenAI Chat Completion response into trajectory steps
35
+ */
36
+ parseResponse(data: any): TrajectoryStep[];
37
+ }
38
+ /**
39
+ * Default instance for convenience
40
+ */
41
+ export declare const openaiCompatibleConnector: OpenAICompatibleConnector;
42
+ //# sourceMappingURL=OpenAICompatibleConnector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenAICompatibleConnector.d.ts","sourceRoot":"","sources":["../../../../../services/connectors/openai-compatible/OpenAICompatibleConnector.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,yBAAyB,EACzB,yBAAyB,EAC1B,MAAM,6BAA6B,CAAC;AA0CrC;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,aAAa;IAC1D,QAAQ,CAAC,IAAI,EAAG,mBAAmB,CAAU;IAC7C,QAAQ,CAAC,IAAI,uBAAuB;IAE3B,YAAY;;MAA6B;IAClD,QAAQ,CAAC,iBAAiB,SAAS;IAEnC;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,GAAG;IAwC5C;;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;IAwC7B;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,GAAG,GAAG,cAAc,EAAE;CAwC3C;AAED;;GAEG;AACH,eAAO,MAAM,yBAAyB,2BAAkC,CAAC"}