@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,365 @@
1
+ /*
2
+ * Copyright OpenSearch Contributors
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import { ENV_CONFIG } from '../lib/config.js';
6
+ export const CONNECTOR_TYPE_INFO = {
7
+ 'agui-streaming': {
8
+ label: 'AG-UI Streaming',
9
+ description: 'AG-UI protocol over SSE. Use for ML-Commons and AG-UI compatible agents.',
10
+ serverOnly: false,
11
+ },
12
+ 'rest': {
13
+ label: 'REST',
14
+ description: 'Standard HTTP POST. Agent receives JSON, returns JSON. No streaming.',
15
+ serverOnly: false,
16
+ },
17
+ 'openai-compatible': {
18
+ label: 'OpenAI Compatible',
19
+ description: 'OpenAI chat completions format (POST /v1/chat/completions). Works with LiteLLM, Ollama, vLLM.',
20
+ serverOnly: false,
21
+ },
22
+ 'subprocess': {
23
+ label: 'Subprocess',
24
+ description: 'Runs a CLI command as a child process. Server-only — use the CLI or benchmark runner.',
25
+ serverOnly: true,
26
+ },
27
+ 'claude-code': {
28
+ label: 'Claude Code',
29
+ description: 'Invokes the Claude Code CLI. Server-only — use the CLI or benchmark runner.',
30
+ serverOnly: true,
31
+ },
32
+ 'pi': {
33
+ label: 'Pi (pi.dev)',
34
+ description: 'Invokes the pi.dev coding agent CLI. Server-only — use the CLI or benchmark runner.',
35
+ serverOnly: true,
36
+ },
37
+ 'strands': {
38
+ label: 'Amazon Strands',
39
+ description: 'Amazon Strands agent framework via Bedrock Agent Runtime API. Server-only — requires AWS SDK.',
40
+ serverOnly: true,
41
+ },
42
+ 'langgraph': {
43
+ label: 'LangGraph (REST)',
44
+ description: 'LangGraph agent via direct REST API. Use for non-AG-UI LangGraph instances.',
45
+ serverOnly: false,
46
+ },
47
+ 'mock': {
48
+ label: 'Mock',
49
+ description: 'Built-in demo agent for testing. No real endpoint needed.',
50
+ serverOnly: false,
51
+ },
52
+ };
53
+ /** All valid connector protocol types, derived from CONNECTOR_TYPE_INFO. */
54
+ export const VALID_CONNECTOR_TYPES = Object.keys(CONNECTOR_TYPE_INFO);
55
+ /** Connector types that work in the browser (non-serverOnly). */
56
+ export const BROWSER_SAFE_CONNECTORS = Object.entries(CONNECTOR_TYPE_INFO)
57
+ .filter(([, info]) => !info.serverOnly)
58
+ .map(([type]) => type);
59
+ /** Keys of built-in agents shipped with the tool. */
60
+ export const BUILT_IN_AGENT_KEYS = new Set(['demo', 'observio', 'claude-code', 'strands', 'langgraph-rest']);
61
+ /**
62
+ * Ordered list of preferred default agent keys, used when picking an initial
63
+ * agent for popups/forms (e.g. QuickRunModal). The first entry that exists in
64
+ * `DEFAULT_CONFIG.agents` (and is enabled) wins.
65
+ *
66
+ * `observio` is preferred because it's a fully-featured local sample agent
67
+ * users can run end-to-end without external infra.
68
+ */
69
+ export const PREFERRED_DEFAULT_AGENT_KEYS = ['observio', 'demo'];
70
+ /**
71
+ * Pick a sensible default agent key.
72
+ *
73
+ * Resolution order:
74
+ * 1. First entry in PREFERRED_DEFAULT_AGENT_KEYS that exists and is enabled
75
+ * 2. First enabled agent in DEFAULT_CONFIG.agents
76
+ * 3. First agent in DEFAULT_CONFIG.agents (even if disabled)
77
+ * 4. Empty string
78
+ */
79
+ export function getPreferredDefaultAgentKey() {
80
+ const agents = DEFAULT_CONFIG.agents || [];
81
+ const isEnabled = (a) => a.enabled !== false;
82
+ for (const preferred of PREFERRED_DEFAULT_AGENT_KEYS) {
83
+ const found = agents.find(a => a.key === preferred && isEnabled(a));
84
+ if (found)
85
+ return found.key;
86
+ }
87
+ const firstEnabled = agents.find(isEnabled);
88
+ if (firstEnabled)
89
+ return firstEnabled.key;
90
+ return agents[0]?.key || '';
91
+ }
92
+ /**
93
+ * Get Claude Code connector environment variables at runtime.
94
+ * Evaluated lazily so env vars are read when needed, not at module load time.
95
+ */
96
+ function getClaudeCodeConnectorEnv() {
97
+ const env = {
98
+ AWS_PROFILE: ENV_CONFIG.awsProfile || 'Bedrock',
99
+ CLAUDE_CODE_USE_BEDROCK: '1',
100
+ AWS_REGION: ENV_CONFIG.awsRegion || 'us-west-2',
101
+ DISABLE_PROMPT_CACHING: '1',
102
+ DISABLE_ERROR_REPORTING: '1',
103
+ };
104
+ if (ENV_CONFIG.claudeCodeTelemetryEnabled && ENV_CONFIG.otelExporterEndpoint) {
105
+ env.CLAUDE_CODE_ENABLE_TELEMETRY = '1';
106
+ env.OTEL_EXPORTER_OTLP_ENDPOINT = ENV_CONFIG.otelExporterEndpoint;
107
+ env.OTEL_SERVICE_NAME = ENV_CONFIG.otelServiceName;
108
+ if (ENV_CONFIG.otelExporterProtocol) {
109
+ env.OTEL_EXPORTER_OTLP_PROTOCOL = ENV_CONFIG.otelExporterProtocol;
110
+ }
111
+ if (ENV_CONFIG.otelExporterHeaders) {
112
+ env.OTEL_EXPORTER_OTLP_HEADERS = ENV_CONFIG.otelExporterHeaders;
113
+ }
114
+ }
115
+ else {
116
+ env.DISABLE_TELEMETRY = '1';
117
+ }
118
+ return env;
119
+ }
120
+ // Model pricing per 1M tokens (USD)
121
+ export const MODEL_PRICING = {
122
+ // Claude Opus models
123
+ 'us.anthropic.claude-opus-4-6-v1': { input: 5.0, output: 25.0 },
124
+ 'us.anthropic.claude-opus-4-5-20251101-v1:0': { input: 5.0, output: 25.0 },
125
+ 'us.anthropic.claude-opus-4-1-20250805-v1:0': { input: 15.0, output: 75.0 },
126
+ 'us.anthropic.claude-opus-4-20250514-v1:0': { input: 15.0, output: 75.0 },
127
+ // Claude Sonnet models
128
+ 'us.anthropic.claude-sonnet-4-6': { input: 3.0, output: 15.0 },
129
+ 'us.anthropic.claude-sonnet-4-20250514-v1:0': { input: 3.0, output: 15.0 },
130
+ 'us.anthropic.claude-sonnet-4-5-20250929-v1:0': { input: 3.0, output: 15.0 },
131
+ // Claude Haiku models
132
+ 'us.anthropic.claude-haiku-4-5-20251001-v1:0': { input: 1.0, output: 5.0 },
133
+ 'us.anthropic.claude-3-5-haiku-20241022-v1:0': { input: 0.80, output: 4.0 },
134
+ // Default fallback
135
+ 'default': { input: 3.0, output: 15.0 },
136
+ };
137
+ export const DEFAULT_CONFIG = {
138
+ agents: [
139
+ {
140
+ key: "demo",
141
+ name: "Demo Agent",
142
+ endpoint: "mock://demo",
143
+ description: "Mock agent for testing (simulated responses)",
144
+ connectorType: "mock",
145
+ headers: {},
146
+ useTraces: false,
147
+ },
148
+ {
149
+ key: "observio",
150
+ name: "Observio Sample Agent",
151
+ endpoint: ENV_CONFIG.observioEndpoint || "http://localhost:3001/run-agent",
152
+ description: "Observio sample agent — ReAct pattern with LangGraph and Bedrock. Start with: cd observio-sample-agent && npm run start:ag-ui",
153
+ connectorType: "agui-streaming",
154
+ headers: {},
155
+ useTraces: true,
156
+ // OTel `service.name` differs from the agent key for the observio sample
157
+ // agent (see observio-sample-agent/src/telemetry/provider.ts), so the
158
+ // Agent Traces page translates `prefs:agentFilter == 'observio'` to a
159
+ // service-name filter of 'observio-sample-agent' at query time.
160
+ traceServiceName: "observio-sample-agent",
161
+ },
162
+ {
163
+ key: "claude-code",
164
+ name: "Claude Code",
165
+ endpoint: "claude",
166
+ description: "Claude Code CLI agent (requires claude command installed)",
167
+ connectorType: "claude-code",
168
+ headers: {},
169
+ // OTel `service.name` for claude-code is OTEL_SERVICE_NAME (default
170
+ // 'claude-code-agent'), which differs from the agent key — so the Agent
171
+ // Traces filter must translate key 'claude-code' to this service name,
172
+ // otherwise filtering by Claude Code matches no spans.
173
+ traceServiceName: ENV_CONFIG.otelServiceName,
174
+ useTraces: ENV_CONFIG.claudeCodeTelemetryEnabled && !!ENV_CONFIG.otelExporterEndpoint,
175
+ connectorConfig: { env: getClaudeCodeConnectorEnv() },
176
+ },
177
+ {
178
+ key: "strands",
179
+ name: "Amazon Strands",
180
+ endpoint: "${STRANDS_AGENT_ID}",
181
+ description: "Amazon Strands agent framework (Bedrock Agent Runtime)",
182
+ connectorType: "strands",
183
+ headers: {},
184
+ useTraces: false,
185
+ connectorConfig: {
186
+ agentAliasId: "${STRANDS_ALIAS_ID:-TSTALIASID}",
187
+ region: "${AWS_REGION:-us-east-1}",
188
+ },
189
+ enabled: false,
190
+ },
191
+ {
192
+ key: "pi",
193
+ name: "Pi (pi.dev)",
194
+ endpoint: "pi",
195
+ description: "Pi.dev coding agent with Agent Health package (requires pi CLI installed)",
196
+ connectorType: "pi",
197
+ headers: {},
198
+ useTraces: false,
199
+ connectorConfig: {
200
+ packagePath: './observio-sample-agent/pi-package',
201
+ },
202
+ enabled: false,
203
+ },
204
+ {
205
+ key: "langgraph-rest",
206
+ name: "LangGraph (REST)",
207
+ endpoint: "${LANGGRAPH_API_ENDPOINT:-http://localhost:8000}",
208
+ description: "LangGraph agent via direct REST API",
209
+ connectorType: "langgraph",
210
+ headers: {},
211
+ useTraces: false,
212
+ enabled: false,
213
+ },
214
+ ],
215
+ models: {
216
+ "demo-model": {
217
+ model_id: "mock://demo-model",
218
+ display_name: "Demo Model",
219
+ provider: "demo",
220
+ context_window: 200000,
221
+ max_output_tokens: 4096
222
+ },
223
+ "claude-opus-4.8": {
224
+ // Real Bedrock inference profile id is `us.anthropic.claude-opus-4-8`. The
225
+ // `-v1` suffix does not exist for 4.7+ (verified via
226
+ // `aws bedrock list-inference-profiles --region us-west-2`); Bedrock
227
+ // returns `ValidationException: The provided model identifier is invalid`
228
+ // for `us.anthropic.claude-opus-4-8-v1`. 4.6 keeps the `-v1` suffix.
229
+ model_id: "us.anthropic.claude-opus-4-8",
230
+ display_name: "Claude Opus 4.8",
231
+ provider: "bedrock",
232
+ context_window: 200000,
233
+ max_output_tokens: 128000
234
+ },
235
+ "claude-opus-4.7": {
236
+ // `-v1` does not exist for 4.7 either (verified via list-inference-profiles
237
+ // — real id is `us.anthropic.claude-opus-4-7`). PR #347 fixed only 4.8.
238
+ model_id: "us.anthropic.claude-opus-4-7",
239
+ display_name: "Claude Opus 4.7",
240
+ provider: "bedrock",
241
+ context_window: 200000,
242
+ max_output_tokens: 128000
243
+ },
244
+ "claude-opus-4.6": {
245
+ model_id: "us.anthropic.claude-opus-4-6-v1",
246
+ display_name: "Claude Opus 4.6",
247
+ provider: "bedrock",
248
+ context_window: 200000,
249
+ max_output_tokens: 128000
250
+ },
251
+ "claude-sonnet-4.6": {
252
+ model_id: "us.anthropic.claude-sonnet-4-6",
253
+ display_name: "Claude Sonnet 4.6",
254
+ provider: "bedrock",
255
+ context_window: 200000,
256
+ max_output_tokens: 64000
257
+ },
258
+ "claude-sonnet-4.5": {
259
+ model_id: "us.anthropic.claude-sonnet-4-5-20250929-v1:0",
260
+ display_name: "Claude Sonnet 4.5",
261
+ provider: "bedrock",
262
+ context_window: 200000,
263
+ max_output_tokens: 4096
264
+ },
265
+ "claude-haiku-4.5": {
266
+ model_id: "us.anthropic.claude-haiku-4-5-20251001-v1:0",
267
+ display_name: "Claude Haiku 4.5",
268
+ provider: "bedrock",
269
+ context_window: 200000,
270
+ max_output_tokens: 64000
271
+ },
272
+ "claude-code-judge": {
273
+ model_id: "claude-code-judge",
274
+ display_name: "Claude Code (Judge)",
275
+ provider: "claude-code",
276
+ context_window: 200000,
277
+ max_output_tokens: 16384
278
+ },
279
+ "agentic-claude-code": {
280
+ model_id: "agentic-claude-code",
281
+ display_name: "Claude Code (Agentic)",
282
+ provider: "agentic",
283
+ context_window: 200000,
284
+ max_output_tokens: 16384
285
+ },
286
+ "agentic-custom": {
287
+ model_id: "agentic-custom",
288
+ display_name: "Custom Agentic Judge",
289
+ provider: "agentic",
290
+ context_window: 200000,
291
+ max_output_tokens: 16384
292
+ },
293
+ "gpt-4o": {
294
+ model_id: "gpt-4o",
295
+ display_name: "GPT-4o",
296
+ provider: "openai-compatible",
297
+ context_window: 128000,
298
+ max_output_tokens: 4096
299
+ },
300
+ },
301
+ defaults: {
302
+ retry_attempts: 2,
303
+ retry_delay_ms: 1000
304
+ }
305
+ };
306
+ export const MOCK_TOOLS = [
307
+ { name: 'opensearch_cluster_health', description: 'Get cluster health status' },
308
+ { name: 'opensearch_cat_nodes', description: 'List nodes and their metrics' },
309
+ { name: 'opensearch_nodes_stats', description: 'Get extensive node statistics' },
310
+ { name: 'opensearch_nodes_hot_threads', description: 'Get hot threads for nodes' },
311
+ { name: 'opensearch_cat_indices', description: 'List indices' },
312
+ { name: 'opensearch_cat_shards', description: 'List shard information' },
313
+ { name: 'opensearch_cluster_allocation_explain', description: 'Explain shard allocation' },
314
+ { name: 'opensearch_list_indices', description: 'List all indices with detailed information' },
315
+ ];
316
+ /**
317
+ * Metadata about agents, updated when refreshConfig() succeeds.
318
+ */
319
+ export let agentsMeta = {
320
+ hasCustomAgents: false, customCount: 0, builtInCount: 0,
321
+ };
322
+ const configListeners = new Set();
323
+ /**
324
+ * Subscribe to config changes. Returns an unsubscribe function.
325
+ */
326
+ export function subscribeConfigChange(listener) {
327
+ configListeners.add(listener);
328
+ return () => { configListeners.delete(listener); };
329
+ }
330
+ /**
331
+ * Fetch agent and model config from the server and update DEFAULT_CONFIG in place.
332
+ * Notifies subscribers so React trees re-render with the new values.
333
+ */
334
+ export async function refreshConfig() {
335
+ try {
336
+ const [agentsRes, modelsRes] = await Promise.all([
337
+ fetch('/api/agents'),
338
+ fetch('/api/models'),
339
+ ]);
340
+ if (agentsRes.ok) {
341
+ const { agents, meta } = await agentsRes.json();
342
+ DEFAULT_CONFIG.agents = agents;
343
+ if (meta) {
344
+ agentsMeta = {
345
+ hasCustomAgents: meta.hasCustomAgents ?? false,
346
+ customCount: meta.customCount ?? 0,
347
+ builtInCount: meta.builtInCount ?? 0,
348
+ };
349
+ }
350
+ }
351
+ if (modelsRes.ok) {
352
+ const { models: modelsArray } = await modelsRes.json();
353
+ const modelsRecord = {};
354
+ for (const { key, ...cfg } of modelsArray) {
355
+ modelsRecord[key] = cfg;
356
+ }
357
+ DEFAULT_CONFIG.models = modelsRecord;
358
+ }
359
+ }
360
+ catch {
361
+ // Server unreachable — keep hardcoded defaults
362
+ }
363
+ configListeners.forEach(fn => fn());
364
+ }
365
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../constants.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Resolve a model's context-window size (in tokens) from the registry.
3
+ *
4
+ * Matches a model reference against either the registry key or the provider
5
+ * `model_id`, case-insensitively. Returns `undefined` for unknown models so
6
+ * callers can omit Ctx% rather than display a misleading 0 / 100%.
7
+ */
8
+ export declare function resolveContextWindow(model: string | undefined | null): number | undefined;
9
+ /**
10
+ * Context-window utilization as a percentage (0–100+), or `undefined` when it
11
+ * cannot be computed (unknown model, non-positive window, missing tokens).
12
+ *
13
+ * Not clamped to 100: a value above 100 is a meaningful signal that the peak
14
+ * request exceeded the configured window (stale registry, or a larger-context
15
+ * model variant), and the caller can surface it as an over-budget warning.
16
+ */
17
+ export declare function contextUtilizationPct(peakInputTokens: number | undefined | null, model: string | undefined | null): number | undefined;
18
+ /**
19
+ * Format a Ctx% value for display: one decimal place under 10%, none above,
20
+ * with a trailing `%`. Returns `undefined` passthrough for unknown values.
21
+ */
22
+ export declare function formatContextPct(pct: number | undefined): string | undefined;
23
+ //# sourceMappingURL=contextUtilization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contextUtilization.d.ts","sourceRoot":"","sources":["../../contextUtilization.ts"],"names":[],"mappings":"AAuBA;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAczF;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,eAAe,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EAC1C,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAC/B,MAAM,GAAG,SAAS,CAKpB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAG5E"}
@@ -0,0 +1,72 @@
1
+ /*
2
+ * Copyright OpenSearch Contributors
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ /**
6
+ * Context-window utilization
7
+ *
8
+ * "Ctx%" = how close a single LLM request came to filling the model's
9
+ * context window. It is computed from the *peak* single-request input-token
10
+ * count (NOT the sum across the whole trace — each turn re-sends the running
11
+ * context, so summing would massively overcount and routinely exceed 100%)
12
+ * divided by the model's configured `context_window`.
13
+ *
14
+ * The model registry in {@link DEFAULT_CONFIG} carries `context_window` per
15
+ * model, keyed by both a short key (e.g. `claude-opus-4.6`) and a provider
16
+ * `model_id` (e.g. `us.anthropic.claude-opus-4-6-v1`). Traces report the
17
+ * `model_id` via `gen_ai.request.model`, while the rest of the app uses the
18
+ * short key — so we resolve against both.
19
+ */
20
+ import { DEFAULT_CONFIG } from '../lib/constants.js';
21
+ /**
22
+ * Resolve a model's context-window size (in tokens) from the registry.
23
+ *
24
+ * Matches a model reference against either the registry key or the provider
25
+ * `model_id`, case-insensitively. Returns `undefined` for unknown models so
26
+ * callers can omit Ctx% rather than display a misleading 0 / 100%.
27
+ */
28
+ export function resolveContextWindow(model) {
29
+ if (!model)
30
+ return undefined;
31
+ const needle = model.trim().toLowerCase();
32
+ if (!needle)
33
+ return undefined;
34
+ const models = DEFAULT_CONFIG.models;
35
+ if (!models)
36
+ return undefined;
37
+ for (const [key, def] of Object.entries(models)) {
38
+ if (!def || typeof def.context_window !== 'number' || def.context_window <= 0)
39
+ continue;
40
+ if (key.toLowerCase() === needle)
41
+ return def.context_window;
42
+ if (typeof def.model_id === 'string' && def.model_id.toLowerCase() === needle)
43
+ return def.context_window;
44
+ }
45
+ return undefined;
46
+ }
47
+ /**
48
+ * Context-window utilization as a percentage (0–100+), or `undefined` when it
49
+ * cannot be computed (unknown model, non-positive window, missing tokens).
50
+ *
51
+ * Not clamped to 100: a value above 100 is a meaningful signal that the peak
52
+ * request exceeded the configured window (stale registry, or a larger-context
53
+ * model variant), and the caller can surface it as an over-budget warning.
54
+ */
55
+ export function contextUtilizationPct(peakInputTokens, model) {
56
+ if (typeof peakInputTokens !== 'number' || !(peakInputTokens > 0))
57
+ return undefined;
58
+ const window = resolveContextWindow(model);
59
+ if (!window)
60
+ return undefined;
61
+ return (peakInputTokens / window) * 100;
62
+ }
63
+ /**
64
+ * Format a Ctx% value for display: one decimal place under 10%, none above,
65
+ * with a trailing `%`. Returns `undefined` passthrough for unknown values.
66
+ */
67
+ export function formatContextPct(pct) {
68
+ if (typeof pct !== 'number' || !isFinite(pct))
69
+ return undefined;
70
+ return pct < 10 ? `${pct.toFixed(1)}%` : `${Math.round(pct)}%`;
71
+ }
72
+ //# sourceMappingURL=contextUtilization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contextUtilization.js","sourceRoot":"","sources":["../../contextUtilization.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAgC;IACnE,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC1C,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAE9B,MAAM,MAAM,GAAI,cAA8F,CAAC,MAAM,CAAC;IACtH,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAE9B,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAChD,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,CAAC,cAAc,KAAK,QAAQ,IAAI,GAAG,CAAC,cAAc,IAAI,CAAC;YAAE,SAAS;QACxF,IAAI,GAAG,CAAC,WAAW,EAAE,KAAK,MAAM;YAAE,OAAO,GAAG,CAAC,cAAc,CAAC;QAC5D,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,MAAM;YAAE,OAAO,GAAG,CAAC,cAAc,CAAC;IAC3G,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACnC,eAA0C,EAC1C,KAAgC;IAEhC,IAAI,OAAO,eAAe,KAAK,QAAQ,IAAI,CAAC,CAAC,eAAe,GAAG,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACpF,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,OAAO,CAAC,eAAe,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC;AAC1C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAuB;IACtD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAChE,OAAO,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AACjE,CAAC"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Dashboard Metrics Aggregation Utilities
3
+ *
4
+ * Provides functions to aggregate benchmark run data for dashboard visualization.
5
+ */
6
+ import { Benchmark, EvaluationReport } from '../types/index.js';
7
+ /**
8
+ * A single data point for the trend chart, representing metrics at a point in time
9
+ */
10
+ export interface TrendDataPoint {
11
+ date: string;
12
+ agentKey: string;
13
+ agentName: string;
14
+ avgCostUsd: number;
15
+ avgDurationMs: number;
16
+ avgTokens: number;
17
+ passRate: number;
18
+ runCount: number;
19
+ }
20
+ /**
21
+ * Aggregated metrics for a benchmark × agent combination
22
+ */
23
+ export interface BenchmarkAgentMetrics {
24
+ benchmarkId: string;
25
+ benchmarkName: string;
26
+ agentKey: string;
27
+ agentName: string;
28
+ runCount: number;
29
+ avgLatencyMs: number;
30
+ avgCostUsd: number;
31
+ avgTokens: number;
32
+ avgPassRate: number;
33
+ lastRunDate: string;
34
+ }
35
+ /**
36
+ * Filter configuration for dashboard
37
+ */
38
+ export interface DashboardFilter {
39
+ benchmarkId?: string;
40
+ agentKey?: string;
41
+ }
42
+ /**
43
+ * Time range options for filtering
44
+ */
45
+ export type TimeRange = '7d' | '30d' | 'all';
46
+ /**
47
+ * Calculate the date cutoff for a given time range
48
+ */
49
+ export declare function getDateCutoff(timeRange: TimeRange): Date | null;
50
+ /**
51
+ * Get display name for an agent key
52
+ */
53
+ export declare function getAgentDisplayName(agentKey: string): string;
54
+ /**
55
+ * Aggregate metrics by date and agent for trend chart.
56
+ * Groups runs by date and agent, calculating average metrics for each group.
57
+ */
58
+ export declare function aggregateMetricsByDate(benchmarks: Benchmark[], reports: EvaluationReport[], metricsMap: Map<string, {
59
+ costUsd: number;
60
+ durationMs: number;
61
+ tokens: number;
62
+ }>, filters?: DashboardFilter, timeRange?: TimeRange): TrendDataPoint[];
63
+ /**
64
+ * Aggregate metrics by benchmark × agent combination for the metrics table.
65
+ * Creates one row per unique benchmark-agent pair.
66
+ */
67
+ export declare function aggregateMetricsByBenchmarkAgent(benchmarks: Benchmark[], reports: EvaluationReport[], metricsMap: Map<string, {
68
+ costUsd: number;
69
+ durationMs: number;
70
+ tokens: number;
71
+ }>): BenchmarkAgentMetrics[];
72
+ /**
73
+ * Get unique agent keys from benchmarks for chart legend/filtering
74
+ */
75
+ export declare function getUniqueAgents(benchmarks: Benchmark[]): Array<{
76
+ key: string;
77
+ name: string;
78
+ }>;
79
+ /**
80
+ * Color palette for agents (matches existing chart patterns)
81
+ */
82
+ export declare const AGENT_COLORS: Record<string, string>;
83
+ /**
84
+ * Get color for an agent key
85
+ */
86
+ export declare function getAgentColor(agentKey: string): string;
87
+ //# sourceMappingURL=dashboardMetrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboardMetrics.d.ts","sourceRoot":"","sources":["../../dashboardMetrics.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAgB,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAuBpE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;AAE7C;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI,CAM/D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAK5D;AAkBD;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,SAAS,EAAE,EACvB,OAAO,EAAE,gBAAgB,EAAE,EAC3B,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,EAChF,OAAO,CAAC,EAAE,eAAe,EACzB,SAAS,GAAE,SAAgB,GAC1B,cAAc,EAAE,CAiGlB;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAC9C,UAAU,EAAE,SAAS,EAAE,EACvB,OAAO,EAAE,gBAAgB,EAAE,EAC3B,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GAC/E,qBAAqB,EAAE,CA+FzB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAa7F;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAE/C,CAAC;AAEF;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEtD"}