@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,140 @@
1
+ import { z } from 'zod';
2
+ import type { AgentContextItem } from '../types/index.js';
3
+ import type { CreateTestCaseInput } from '../services/storage/index.js';
4
+ /**
5
+ * Zod schema for validating test case JSON input.
6
+ * This validates a subset of CreateTestCaseInput fields that are relevant for the JSON editor.
7
+ * The output is compatible with CreateTestCaseInput.
8
+ */
9
+ export declare const testCaseSchema: z.ZodObject<{
10
+ name: z.ZodString;
11
+ description: z.ZodDefault<z.ZodOptional<z.ZodString>>;
12
+ category: z.ZodString;
13
+ subcategory: z.ZodOptional<z.ZodString>;
14
+ difficulty: z.ZodEnum<["Easy", "Medium", "Hard"]>;
15
+ initialPrompt: z.ZodString;
16
+ context: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
17
+ description: z.ZodString;
18
+ value: z.ZodString;
19
+ }, "strip", z.ZodTypeAny, {
20
+ description?: string;
21
+ value?: string;
22
+ }, {
23
+ description?: string;
24
+ value?: string;
25
+ }>, "many">>>;
26
+ expectedOutcomes: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
27
+ }, "strip", z.ZodTypeAny, {
28
+ name?: string;
29
+ description?: string;
30
+ initialPrompt?: string;
31
+ context?: {
32
+ description?: string;
33
+ value?: string;
34
+ }[];
35
+ expectedOutcomes?: string[];
36
+ category?: string;
37
+ subcategory?: string;
38
+ difficulty?: "Easy" | "Medium" | "Hard";
39
+ }, {
40
+ name?: string;
41
+ description?: string;
42
+ initialPrompt?: string;
43
+ context?: {
44
+ description?: string;
45
+ value?: string;
46
+ }[];
47
+ expectedOutcomes?: string[];
48
+ category?: string;
49
+ subcategory?: string;
50
+ difficulty?: "Easy" | "Medium" | "Hard";
51
+ }>;
52
+ export declare const testCasesArraySchema: z.ZodArray<z.ZodObject<{
53
+ name: z.ZodString;
54
+ description: z.ZodDefault<z.ZodOptional<z.ZodString>>;
55
+ category: z.ZodString;
56
+ subcategory: z.ZodOptional<z.ZodString>;
57
+ difficulty: z.ZodEnum<["Easy", "Medium", "Hard"]>;
58
+ initialPrompt: z.ZodString;
59
+ context: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
60
+ description: z.ZodString;
61
+ value: z.ZodString;
62
+ }, "strip", z.ZodTypeAny, {
63
+ description?: string;
64
+ value?: string;
65
+ }, {
66
+ description?: string;
67
+ value?: string;
68
+ }>, "many">>>;
69
+ expectedOutcomes: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
70
+ }, "strip", z.ZodTypeAny, {
71
+ name?: string;
72
+ description?: string;
73
+ initialPrompt?: string;
74
+ context?: {
75
+ description?: string;
76
+ value?: string;
77
+ }[];
78
+ expectedOutcomes?: string[];
79
+ category?: string;
80
+ subcategory?: string;
81
+ difficulty?: "Easy" | "Medium" | "Hard";
82
+ }, {
83
+ name?: string;
84
+ description?: string;
85
+ initialPrompt?: string;
86
+ context?: {
87
+ description?: string;
88
+ value?: string;
89
+ }[];
90
+ expectedOutcomes?: string[];
91
+ category?: string;
92
+ subcategory?: string;
93
+ difficulty?: "Easy" | "Medium" | "Hard";
94
+ }>, "many">;
95
+ /**
96
+ * The validated test case input from JSON.
97
+ * This is a subset of CreateTestCaseInput with only the fields the JSON editor handles.
98
+ * It's structurally compatible with CreateTestCaseInput for use with asyncTestCaseStorage.
99
+ */
100
+ export type ValidatedTestCaseInput = Pick<CreateTestCaseInput, 'name' | 'description' | 'category' | 'subcategory' | 'difficulty' | 'initialPrompt' | 'context' | 'expectedOutcomes'>;
101
+ export interface TestCaseFormState {
102
+ name: string;
103
+ description: string;
104
+ category: string;
105
+ subcategory: string;
106
+ difficulty: 'Easy' | 'Medium' | 'Hard';
107
+ initialPrompt: string;
108
+ context: AgentContextItem[];
109
+ expectedOutcomes: string[];
110
+ }
111
+ export interface ValidationError {
112
+ path: string;
113
+ message: string;
114
+ type: 'error' | 'warning';
115
+ }
116
+ export interface ValidationResult<T = unknown> {
117
+ valid: boolean;
118
+ errors: ValidationError[];
119
+ data?: T;
120
+ }
121
+ /**
122
+ * Validates a single test case JSON object.
123
+ * Returns data compatible with CreateTestCaseInput.
124
+ */
125
+ export declare function validateTestCaseJson(json: unknown): ValidationResult<ValidatedTestCaseInput>;
126
+ /**
127
+ * Validates an array of test cases for bulk import.
128
+ * Also handles single objects by wrapping them in an array.
129
+ * Returns data compatible with CreateTestCaseInput[].
130
+ */
131
+ export declare function validateTestCasesArrayJson(json: unknown): ValidationResult<ValidatedTestCaseInput[]>;
132
+ /**
133
+ * Serializes form state to JSON string for the editor.
134
+ */
135
+ export declare function serializeFormToJson(formState: TestCaseFormState): string;
136
+ /**
137
+ * Parses JSON string and returns form state if valid.
138
+ */
139
+ export declare function parseJsonToFormState(jsonString: string): ValidationResult<TestCaseFormState>;
140
+ //# sourceMappingURL=testCaseValidation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testCaseValidation.d.ts","sourceRoot":"","sources":["../../testCaseValidation.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAa9D;;;;GAIG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyBzB,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAA0D,CAAC;AAI5F;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,IAAI,CACvC,mBAAmB,EACnB,MAAM,GAAG,aAAa,GAAG,UAAU,GAAG,aAAa,GAAG,YAAY,GAAG,eAAe,GAAG,SAAS,GAAG,kBAAkB,CACtH,CAAC;AAGF,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAID,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC,GAAG,OAAO;IAC3C,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,IAAI,CAAC,EAAE,CAAC,CAAC;CACV;AAcD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,CAoB5F;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAAC,sBAAsB,EAAE,CAAC,CAyBpG;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,iBAAiB,GAAG,MAAM,CAuBxE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,CAkC5F"}
@@ -0,0 +1,162 @@
1
+ /*
2
+ * Copyright OpenSearch Contributors
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import { z } from 'zod';
6
+ // ============ Zod Schemas ============
7
+ const contextItemSchema = z
8
+ .object({
9
+ description: z.string(),
10
+ value: z.string(),
11
+ })
12
+ .required();
13
+ const difficultySchema = z.enum(['Easy', 'Medium', 'Hard']);
14
+ /**
15
+ * Zod schema for validating test case JSON input.
16
+ * This validates a subset of CreateTestCaseInput fields that are relevant for the JSON editor.
17
+ * The output is compatible with CreateTestCaseInput.
18
+ */
19
+ export const testCaseSchema = z.object({
20
+ name: z.string().min(1, 'Name is required'),
21
+ description: z.string().optional().default(''),
22
+ category: z.string().min(1, 'Category is required'),
23
+ subcategory: z.string().optional(),
24
+ difficulty: difficultySchema,
25
+ initialPrompt: z.string().min(1, 'Initial prompt is required'),
26
+ context: z.array(contextItemSchema).optional().default([]),
27
+ // expectedOutcomes is optional. SDK code-only tests (`test()` blocks
28
+ // that drive pass/fail via deterministic body or inline `judge()`
29
+ // calls) have no expectedOutcomes — so requiring "at least one
30
+ // non-empty" here would force UI-created cross-surface-equivalent test
31
+ // cases to invent placeholder outcomes that the runner ignores. The
32
+ // server-side judge contract does still require expectedOutcomes when
33
+ // it actually grades a run (see services/evaluation/evaluatorError.ts
34
+ // — issue #242 surfaces "Missing required field" as an evaluator
35
+ // error), but the test case schema itself shouldn't gate authoring.
36
+ //
37
+ // `expectedTrajectory` is intentionally NOT modelled here. It exists on
38
+ // the persisted `TestCase` shape (set by the SDK loader from `test()`
39
+ // options) but the JSON-paste / form authoring path doesn't surface it,
40
+ // and adding it here without plumbing it through `ValidatedTestCaseInput`
41
+ // / `TestCaseFormState` / the editor save path would silently drop it on
42
+ // round-trip (PR #258 review feedback).
43
+ expectedOutcomes: z.array(z.string()).optional().default([]),
44
+ });
45
+ export const testCasesArraySchema = z.array(testCaseSchema).min(1, 'Array cannot be empty');
46
+ // ============ Helper Functions ============
47
+ function zodErrorToValidationErrors(error) {
48
+ return error.errors.map((e) => ({
49
+ path: e.path.join('.'),
50
+ message: e.message,
51
+ type: 'error',
52
+ }));
53
+ }
54
+ // ============ Validation Functions ============
55
+ /**
56
+ * Validates a single test case JSON object.
57
+ * Returns data compatible with CreateTestCaseInput.
58
+ */
59
+ export function validateTestCaseJson(json) {
60
+ // Handle array case - should use bulk import
61
+ if (Array.isArray(json)) {
62
+ return {
63
+ valid: false,
64
+ errors: [{ path: '', message: 'Received an array. Use Bulk Import mode for multiple test cases', type: 'error' }],
65
+ };
66
+ }
67
+ const result = testCaseSchema.safeParse(json);
68
+ if (!result.success) {
69
+ return {
70
+ valid: false,
71
+ errors: zodErrorToValidationErrors(result.error),
72
+ };
73
+ }
74
+ // Cast is safe here - Zod has validated all required fields
75
+ return { valid: true, errors: [], data: result.data };
76
+ }
77
+ /**
78
+ * Validates an array of test cases for bulk import.
79
+ * Also handles single objects by wrapping them in an array.
80
+ * Returns data compatible with CreateTestCaseInput[].
81
+ */
82
+ export function validateTestCasesArrayJson(json) {
83
+ // Handle single object - auto-wrap in array
84
+ if (json && typeof json === 'object' && !Array.isArray(json)) {
85
+ const singleResult = validateTestCaseJson(json);
86
+ if (singleResult.valid && singleResult.data) {
87
+ return {
88
+ valid: true,
89
+ errors: [],
90
+ data: [singleResult.data],
91
+ };
92
+ }
93
+ return { valid: false, errors: singleResult.errors };
94
+ }
95
+ const result = testCasesArraySchema.safeParse(json);
96
+ if (!result.success) {
97
+ return {
98
+ valid: false,
99
+ errors: zodErrorToValidationErrors(result.error),
100
+ };
101
+ }
102
+ // Cast is safe here - Zod has validated all required fields
103
+ return { valid: true, errors: [], data: result.data };
104
+ }
105
+ /**
106
+ * Serializes form state to JSON string for the editor.
107
+ */
108
+ export function serializeFormToJson(formState) {
109
+ const json = {
110
+ name: formState.name,
111
+ category: formState.category,
112
+ difficulty: formState.difficulty,
113
+ initialPrompt: formState.initialPrompt,
114
+ expectedOutcomes: formState.expectedOutcomes.filter((o) => o.trim()),
115
+ };
116
+ // Only include optional fields if they have values
117
+ if (formState.description.trim()) {
118
+ json.description = formState.description;
119
+ }
120
+ if (formState.subcategory.trim()) {
121
+ json.subcategory = formState.subcategory;
122
+ }
123
+ if (formState.context.length > 0) {
124
+ json.context = formState.context;
125
+ }
126
+ return JSON.stringify(json, null, 2);
127
+ }
128
+ /**
129
+ * Parses JSON string and returns form state if valid.
130
+ */
131
+ export function parseJsonToFormState(jsonString) {
132
+ let parsed;
133
+ try {
134
+ parsed = JSON.parse(jsonString);
135
+ }
136
+ catch (e) {
137
+ return {
138
+ valid: false,
139
+ errors: [{ path: '', message: `Invalid JSON: ${e.message}`, type: 'error' }],
140
+ };
141
+ }
142
+ const validation = validateTestCaseJson(parsed);
143
+ if (!validation.valid || !validation.data) {
144
+ return { valid: false, errors: validation.errors };
145
+ }
146
+ const data = validation.data;
147
+ return {
148
+ valid: true,
149
+ errors: [],
150
+ data: {
151
+ name: data.name,
152
+ description: data.description || '',
153
+ category: data.category,
154
+ subcategory: data.subcategory || '',
155
+ difficulty: data.difficulty,
156
+ initialPrompt: data.initialPrompt,
157
+ context: (data.context || []),
158
+ expectedOutcomes: data.expectedOutcomes.length > 0 ? data.expectedOutcomes : [''],
159
+ },
160
+ };
161
+ }
162
+ //# sourceMappingURL=testCaseValidation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testCaseValidation.js","sourceRoot":"","sources":["../../testCaseValidation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * The `agent` fixture — RFC 004 control inversion (#256, §4.1).
3
+ *
4
+ * Instead of the framework eagerly invoking the agent before the test body
5
+ * runs, the body drives invocation itself, exactly the way a Playwright test
6
+ * calls `await page.goto(...)`:
7
+ *
8
+ * ```js
9
+ * test('payment RCA', async ({ agent, expect, judge }) => {
10
+ * const id = await seedTicket(); // setup BEFORE the agent
11
+ * const result = await agent.run(`Triage ${id}`);
12
+ * expect(result).toHaveCalledTool('search_logs');
13
+ * await judge(result, 'identifies the DB outage');
14
+ * });
15
+ * ```
16
+ *
17
+ * **Exactly one invocation per test (enforced).** The goal is to *benchmark*
18
+ * an agent: one test ⇒ one invocation ⇒ one comparable trajectory. A second
19
+ * `agent.run()` throws. Multi-turn conversations, if a connector models them,
20
+ * happen inside that single run — they are not multiple harness invocations.
21
+ *
22
+ * This module owns only the **contract** and the one-run guard. The actual
23
+ * connector invocation + RunResult construction (trajectory accessor, lazy
24
+ * traces, runId correlation) is supplied by the runner via the `invoke`
25
+ * callback, since that requires server-side connector/trace machinery.
26
+ */
27
+ import type { EvalResult } from './types.js';
28
+ /** Options accepted by `agent.run(prompt, options)`. */
29
+ export interface AgentRunOptions {
30
+ /** Context items passed to the agent alongside the prompt. */
31
+ context?: {
32
+ description: string;
33
+ value: string;
34
+ }[];
35
+ /**
36
+ * Structured values forwarded to the connector's payload builder (e.g. a
37
+ * provisioned workspace dir). Stringly-typed env is the lowest common
38
+ * denominator every subprocess connector inherits automatically.
39
+ */
40
+ env?: Record<string, string>;
41
+ }
42
+ /**
43
+ * The single capability the framework hands the test body. `run()` is the
44
+ * agent equivalent of Playwright's `page.goto()`.
45
+ */
46
+ export interface AgentFixture {
47
+ /**
48
+ * Invoke the agent once and return a fully-captured result (trajectory,
49
+ * output, runId, traces). Throws if called more than once in a test, or if
50
+ * no prompt is available (none passed and no `defaultPrompt` configured).
51
+ */
52
+ run(prompt?: string, options?: AgentRunOptions): Promise<EvalResult>;
53
+ /** True once `run()` has been called (read-only introspection). */
54
+ readonly invoked: boolean;
55
+ }
56
+ /** The runner-supplied invocation implementation. */
57
+ export type AgentInvokeFn = (prompt: string, options?: AgentRunOptions) => Promise<EvalResult>;
58
+ export interface CreateAgentFixtureOptions {
59
+ /**
60
+ * Prompt used when `agent.run()` is called with no argument. Mirrors the
61
+ * test's `defaultPrompt` (discovery/UI display). When neither is present,
62
+ * `run()` throws rather than invoking with an empty prompt.
63
+ */
64
+ defaultPrompt?: string;
65
+ /** Default context merged under any per-call context. */
66
+ defaultContext?: {
67
+ description: string;
68
+ value: string;
69
+ }[];
70
+ }
71
+ /**
72
+ * Build an {@link AgentFixture} around a runner-supplied {@link AgentInvokeFn}.
73
+ *
74
+ * Enforces the one-invocation-per-test rule and resolves the effective
75
+ * prompt/context (per-call argument wins over the test's `defaultPrompt` /
76
+ * `defaultContext`). The `invoke` callback does the real work (connector +
77
+ * RunResult wrapping) and is only ever called at most once.
78
+ */
79
+ export declare function createAgentFixture(invoke: AgentInvokeFn, options?: CreateAgentFixtureOptions): AgentFixture;
80
+ //# sourceMappingURL=agentFixture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentFixture.d.ts","sourceRoot":"","sources":["../../../testCases/agentFixture.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,wDAAwD;AACxD,MAAM,WAAW,eAAe;IAC9B,8DAA8D;IAC9D,OAAO,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACnD;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACrE,mEAAmE;IACnE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,qDAAqD;AACrD,MAAM,MAAM,aAAa,GAAG,CAC1B,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,eAAe,KACtB,OAAO,CAAC,UAAU,CAAC,CAAC;AAEzB,MAAM,WAAW,yBAAyB;IACxC;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yDAAyD;IACzD,cAAc,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC3D;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,aAAa,EACrB,OAAO,GAAE,yBAA8B,GACtC,YAAY,CAoCd"}
@@ -0,0 +1,43 @@
1
+ /*
2
+ * Copyright OpenSearch Contributors
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ /**
6
+ * Build an {@link AgentFixture} around a runner-supplied {@link AgentInvokeFn}.
7
+ *
8
+ * Enforces the one-invocation-per-test rule and resolves the effective
9
+ * prompt/context (per-call argument wins over the test's `defaultPrompt` /
10
+ * `defaultContext`). The `invoke` callback does the real work (connector +
11
+ * RunResult wrapping) and is only ever called at most once.
12
+ */
13
+ export function createAgentFixture(invoke, options = {}) {
14
+ let invoked = false;
15
+ return {
16
+ get invoked() {
17
+ return invoked;
18
+ },
19
+ async run(prompt, runOptions) {
20
+ if (invoked) {
21
+ throw new Error('agent.run() may be called at most once per test. Benchmarking ' +
22
+ 'requires exactly one agent invocation per test so trajectories ' +
23
+ 'stay comparable across runs. For multi-turn conversations, model ' +
24
+ 'the turns inside a single run via your connector.');
25
+ }
26
+ const effectivePrompt = prompt ?? options.defaultPrompt;
27
+ if (effectivePrompt == null || effectivePrompt === '') {
28
+ throw new Error('agent.run() requires a prompt — none was passed and the test has ' +
29
+ 'no `defaultPrompt`. Pass a prompt: `await agent.run("...")`.');
30
+ }
31
+ // Mark invoked BEFORE awaiting so a concurrent/re-entrant second call
32
+ // (e.g. forgetting to await) still trips the guard deterministically.
33
+ invoked = true;
34
+ const mergedContext = [
35
+ ...(options.defaultContext ?? []),
36
+ ...(runOptions?.context ?? []),
37
+ ];
38
+ const context = mergedContext.length > 0 ? mergedContext : undefined;
39
+ return invoke(effectivePrompt, { ...runOptions, context });
40
+ },
41
+ };
42
+ }
43
+ //# sourceMappingURL=agentFixture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentFixture.js","sourceRoot":"","sources":["../../../testCases/agentFixture.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA2EH;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAqB,EACrB,UAAqC,EAAE;IAEvC,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,OAAO;QACL,IAAI,OAAO;YACT,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,MAAe,EAAE,UAA4B;YACrD,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CACb,gEAAgE;oBAChE,iEAAiE;oBACjE,mEAAmE;oBACnE,mDAAmD,CACpD,CAAC;YACJ,CAAC;YACD,MAAM,eAAe,GAAG,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC;YACxD,IAAI,eAAe,IAAI,IAAI,IAAI,eAAe,KAAK,EAAE,EAAE,CAAC;gBACtD,MAAM,IAAI,KAAK,CACb,mEAAmE;oBACnE,8DAA8D,CAC/D,CAAC;YACJ,CAAC;YACD,sEAAsE;YACtE,sEAAsE;YACtE,OAAO,GAAG,IAAI,CAAC;YAEf,MAAM,aAAa,GAAG;gBACpB,GAAG,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC;gBACjC,GAAG,CAAC,UAAU,EAAE,OAAO,IAAI,EAAE,CAAC;aAC/B,CAAC;YACF,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;YAErE,OAAO,MAAM,CAAC,eAAe,EAAE,EAAE,GAAG,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;QAC7D,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Build the authoring-surface object handed to code-imported eval files.
3
+ * Must mirror the public `@opensearch-project/agent-health` package exports
4
+ * that a test body uses (the runtime registrars + matchers), so `.js` and
5
+ * `.ts`/`.mjs` files behave identically.
6
+ */
7
+ export declare function getAuthoringSurface(): Record<string, unknown>;
8
+ /** The stable list of authoring-surface export names (for drift tests). */
9
+ export declare const AUTHORING_SURFACE_NAMES: string[];
10
+ //# sourceMappingURL=authoringSurface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authoringSurface.d.ts","sourceRoot":"","sources":["../../../testCases/authoringSurface.ts"],"names":[],"mappings":"AAkCA;;;;;GAKG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoB7D;AAED,2EAA2E;AAC3E,eAAO,MAAM,uBAAuB,UAA4C,CAAC"}
@@ -0,0 +1,54 @@
1
+ /*
2
+ * Copyright OpenSearch Contributors
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ /**
6
+ * The single source of truth for the SDK's **test-authoring surface** — the
7
+ * exact set of names a `.eval.{js,ts,mjs}` file gets when it imports
8
+ * `@opensearch-project/agent-health` (RFC 004 §4.7, #232).
9
+ *
10
+ * Why this exists: the loader binds two ways. `.ts`/`.mjs` files are
11
+ * `import()`-ed and resolve the real package exports; `.js` (CJS) files are
12
+ * executed in a synthetic context where `require('@opensearch-project/...')`
13
+ * is intercepted and handed a hand-built object. Historically that object was
14
+ * a hardcoded subset that silently drifted from the real package exports — so
15
+ * a new export (e.g. `defineEvaluator`) worked in `.ts` files but was
16
+ * `undefined` in `.js` files. Centralizing the surface here, and having BOTH
17
+ * the loader's CJS injection and the package index reference it, kills the
18
+ * drift: add a name once and every loader path sees it.
19
+ */
20
+ import { test, describe, beforeAll, afterAll, beforeEach, afterEach, } from './define.js';
21
+ import { judge } from './judge.js';
22
+ import { defineEvaluator, evaluate } from './evaluators.js';
23
+ import { expect } from '../matchers/expect.js';
24
+ import { source, workflow } from '../workflow/index.js';
25
+ /**
26
+ * Build the authoring-surface object handed to code-imported eval files.
27
+ * Must mirror the public `@opensearch-project/agent-health` package exports
28
+ * that a test body uses (the runtime registrars + matchers), so `.js` and
29
+ * `.ts`/`.mjs` files behave identically.
30
+ */
31
+ export function getAuthoringSurface() {
32
+ return {
33
+ // Registrars (file-scoped singletons — registrations land in the
34
+ // loader's per-file registry).
35
+ test,
36
+ describe,
37
+ beforeAll,
38
+ afterAll,
39
+ beforeEach,
40
+ afterEach,
41
+ // Judge + custom evaluators.
42
+ judge,
43
+ defineEvaluator,
44
+ evaluate,
45
+ // Matcher API.
46
+ expect,
47
+ // Workflow SDK (for .workflow.{js,ts,mjs} files).
48
+ source,
49
+ workflow,
50
+ };
51
+ }
52
+ /** The stable list of authoring-surface export names (for drift tests). */
53
+ export const AUTHORING_SURFACE_NAMES = Object.keys(getAuthoringSurface()).sort();
54
+ //# sourceMappingURL=authoringSurface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authoringSurface.js","sourceRoot":"","sources":["../../../testCases/authoringSurface.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,UAAU,EACV,SAAS,GACV,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAExD;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO;QACL,iEAAiE;QACjE,+BAA+B;QAC/B,IAAI;QACJ,QAAQ;QACR,SAAS;QACT,QAAQ;QACR,UAAU;QACV,SAAS;QACT,6BAA6B;QAC7B,KAAK;QACL,eAAe;QACf,QAAQ;QACR,eAAe;QACf,MAAM;QACN,kDAAkD;QAClD,MAAM;QACN,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,2EAA2E;AAC3E,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC"}
@@ -0,0 +1,13 @@
1
+ export interface CodemodResult {
2
+ /** The transformed source (equals input when nothing changed). */
3
+ code: string;
4
+ /** Whether any edit was applied. */
5
+ changed: boolean;
6
+ /** Human-readable notes per test (migrated / skipped + why). */
7
+ notes: string[];
8
+ }
9
+ /**
10
+ * Run the codemod over a single file's source text.
11
+ */
12
+ export declare function migrateEvalSource(code: string, fileName?: string): CodemodResult;
13
+ //# sourceMappingURL=codemod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codemod.d.ts","sourceRoot":"","sources":["../../../testCases/codemod.ts"],"names":[],"mappings":"AAgCA,MAAM,WAAW,aAAa;IAC5B,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,gEAAgE;IAChE,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AA0CD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAY,GAAG,aAAa,CA4HnF"}