@opensearch-project/agent-health 0.4.0 → 0.6.0

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 (551) hide show
  1. package/README.md +36 -5
  2. package/cli/dist/index.js +8292 -2938
  3. package/deployment/cloudformation/agent-health-observability.yaml +223 -32
  4. package/dist/assets/index-BfxtxmKc.css +1 -0
  5. package/dist/assets/index-CrjAfDHu.js +243 -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 +474 -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 +397 -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 +626 -0
  22. package/docs/SKILLS.md +264 -0
  23. package/docs/STORAGE_INDEX_FIELD_LIMITS.md +216 -0
  24. package/docs/blogs/2026-02-28-opensearch-agent-health.md +200 -0
  25. package/docs/blogs/getting-started-blog.md +608 -0
  26. package/docs/diagrams/Agent-health.excalidraw +5656 -0
  27. package/docs/diagrams/architecture.png +0 -0
  28. package/docs/plans/field-redesign.md +468 -0
  29. package/docs/rfcs/001-coding-agent-analytics.md +374 -0
  30. package/docs/rfcs/002-enterprise-leaderboard.md +267 -0
  31. package/docs/rfcs/003-remote-aggregation.md +146 -0
  32. package/docs/rfcs/004-test-sdk-v2.md +599 -0
  33. package/docs/skills/AGENT_HEALTH.md +652 -0
  34. package/docs/skills/AGENT_PROFILE.md +191 -0
  35. package/docs/skills/add-connector/SKILL.md +68 -0
  36. package/docs/skills/agent-health-profile/SKILL.md +40 -0
  37. package/docs/skills/config-auth/SKILL.md +194 -0
  38. package/docs/skills/config-auth/evals/evals.json +35 -0
  39. package/docs/skills/create-pr/SKILL.md +73 -0
  40. package/docs/skills/instrument-otel/SKILL.md +84 -0
  41. package/docs/skills/write-test/SKILL.md +124 -0
  42. package/docs/ui prd.md +376 -0
  43. package/examples/README.md +53 -0
  44. package/examples/config/agent-health.config.example.ts +155 -0
  45. package/examples/connectors/echo-connector.ts +131 -0
  46. package/examples/eval-files/demo.eval.js +128 -0
  47. package/examples/eval-files/ops-rca-classification.eval.js +71 -0
  48. package/examples/eval-files/ops-rca-evaluator.json +15 -0
  49. package/examples/eval-files/sdk-demo.eval.js +72 -0
  50. package/examples/eval-files/sdk-describe-demo.eval.js +50 -0
  51. package/examples/eval-files/sdk-hooks-demo.eval.js +99 -0
  52. package/examples/pi-profiling/README.md +77 -0
  53. package/examples/pi-profiling/agent-health-profile.ts +417 -0
  54. package/lib/dist/lib/agentUtils.d.ts +29 -0
  55. package/lib/dist/lib/agentUtils.d.ts.map +1 -0
  56. package/lib/dist/lib/agentUtils.js +43 -0
  57. package/lib/dist/lib/agentUtils.js.map +1 -0
  58. package/lib/dist/lib/bedrockCompat.d.ts +27 -0
  59. package/lib/dist/lib/bedrockCompat.d.ts.map +1 -0
  60. package/lib/dist/lib/bedrockCompat.js +83 -0
  61. package/lib/dist/lib/bedrockCompat.js.map +1 -0
  62. package/lib/dist/lib/benchmarkExport.d.ts +14 -0
  63. package/lib/dist/lib/benchmarkExport.d.ts.map +1 -0
  64. package/lib/dist/lib/benchmarkExport.js +41 -0
  65. package/lib/dist/lib/benchmarkExport.js.map +1 -0
  66. package/lib/dist/lib/benchmarkImage.d.ts +52 -0
  67. package/lib/dist/lib/benchmarkImage.d.ts.map +1 -0
  68. package/lib/dist/lib/benchmarkImage.js +113 -0
  69. package/lib/dist/lib/benchmarkImage.js.map +1 -0
  70. package/lib/dist/lib/benchmarkVersionUtils.d.ts +50 -0
  71. package/lib/dist/lib/benchmarkVersionUtils.d.ts.map +1 -0
  72. package/lib/dist/lib/benchmarkVersionUtils.js +89 -0
  73. package/lib/dist/lib/benchmarkVersionUtils.js.map +1 -0
  74. package/lib/dist/lib/chunkedFetch.d.ts +18 -0
  75. package/lib/dist/lib/chunkedFetch.d.ts.map +1 -0
  76. package/lib/dist/lib/chunkedFetch.js +40 -0
  77. package/lib/dist/lib/chunkedFetch.js.map +1 -0
  78. package/lib/dist/lib/comparisonInsights.d.ts +104 -0
  79. package/lib/dist/lib/comparisonInsights.d.ts.map +1 -0
  80. package/lib/dist/lib/comparisonInsights.js +212 -0
  81. package/lib/dist/lib/comparisonInsights.js.map +1 -0
  82. package/lib/dist/lib/config/defineConfig.d.ts +27 -0
  83. package/lib/dist/lib/config/defineConfig.d.ts.map +1 -0
  84. package/lib/dist/lib/config/defineConfig.js +28 -0
  85. package/lib/dist/lib/config/defineConfig.js.map +1 -0
  86. package/lib/dist/lib/config/index.d.ts +9 -0
  87. package/lib/dist/lib/config/index.d.ts.map +1 -0
  88. package/lib/dist/lib/config/index.js +8 -0
  89. package/lib/dist/lib/config/index.js.map +1 -0
  90. package/lib/dist/lib/config/loader.d.ts +39 -0
  91. package/lib/dist/lib/config/loader.d.ts.map +1 -0
  92. package/lib/dist/lib/config/loader.js +263 -0
  93. package/lib/dist/lib/config/loader.js.map +1 -0
  94. package/lib/dist/lib/config/statePaths.d.ts +61 -0
  95. package/lib/dist/lib/config/statePaths.d.ts.map +1 -0
  96. package/lib/dist/lib/config/statePaths.js +188 -0
  97. package/lib/dist/lib/config/statePaths.js.map +1 -0
  98. package/lib/dist/lib/config/types.d.ts +245 -0
  99. package/lib/dist/lib/config/types.d.ts.map +1 -0
  100. package/lib/dist/lib/config/types.js +6 -0
  101. package/lib/dist/lib/config/types.js.map +1 -0
  102. package/lib/dist/lib/config.d.ts +39 -0
  103. package/lib/dist/lib/config.d.ts.map +1 -0
  104. package/lib/dist/lib/config.js +118 -0
  105. package/lib/dist/lib/config.js.map +1 -0
  106. package/lib/dist/lib/constants.d.ts +81 -0
  107. package/lib/dist/lib/constants.d.ts.map +1 -0
  108. package/lib/dist/lib/constants.js +374 -0
  109. package/lib/dist/lib/constants.js.map +1 -0
  110. package/lib/dist/lib/contextFormat.d.ts +26 -0
  111. package/lib/dist/lib/contextFormat.d.ts.map +1 -0
  112. package/lib/dist/lib/contextFormat.js +28 -0
  113. package/lib/dist/lib/contextFormat.js.map +1 -0
  114. package/lib/dist/lib/contextUtilization.d.ts +23 -0
  115. package/lib/dist/lib/contextUtilization.d.ts.map +1 -0
  116. package/lib/dist/lib/contextUtilization.js +72 -0
  117. package/lib/dist/lib/contextUtilization.js.map +1 -0
  118. package/lib/dist/lib/dashboardMetrics.d.ts +87 -0
  119. package/lib/dist/lib/dashboardMetrics.d.ts.map +1 -0
  120. package/lib/dist/lib/dashboardMetrics.js +242 -0
  121. package/lib/dist/lib/dashboardMetrics.js.map +1 -0
  122. package/lib/dist/lib/dataSourceConfig.d.ts +108 -0
  123. package/lib/dist/lib/dataSourceConfig.d.ts.map +1 -0
  124. package/lib/dist/lib/dataSourceConfig.js +166 -0
  125. package/lib/dist/lib/dataSourceConfig.js.map +1 -0
  126. package/lib/dist/lib/debug.d.ts +26 -0
  127. package/lib/dist/lib/debug.d.ts.map +1 -0
  128. package/lib/dist/lib/debug.js +132 -0
  129. package/lib/dist/lib/debug.js.map +1 -0
  130. package/lib/dist/lib/diagnostics.d.ts +28 -0
  131. package/lib/dist/lib/diagnostics.d.ts.map +1 -0
  132. package/lib/dist/lib/diagnostics.js +65 -0
  133. package/lib/dist/lib/diagnostics.js.map +1 -0
  134. package/lib/dist/lib/envCompat.d.ts +27 -0
  135. package/lib/dist/lib/envCompat.d.ts.map +1 -0
  136. package/lib/dist/lib/envCompat.js +82 -0
  137. package/lib/dist/lib/envCompat.js.map +1 -0
  138. package/lib/dist/lib/evaluationRerun.d.ts +63 -0
  139. package/lib/dist/lib/evaluationRerun.d.ts.map +1 -0
  140. package/lib/dist/lib/evaluationRerun.js +85 -0
  141. package/lib/dist/lib/evaluationRerun.js.map +1 -0
  142. package/lib/dist/lib/findPackageRoot.d.ts +7 -0
  143. package/lib/dist/lib/findPackageRoot.d.ts.map +1 -0
  144. package/lib/dist/lib/findPackageRoot.js +57 -0
  145. package/lib/dist/lib/findPackageRoot.js.map +1 -0
  146. package/lib/dist/lib/hooks.d.ts +36 -0
  147. package/lib/dist/lib/hooks.d.ts.map +1 -0
  148. package/lib/dist/lib/hooks.js +112 -0
  149. package/lib/dist/lib/hooks.js.map +1 -0
  150. package/lib/dist/lib/index.d.ts +47 -0
  151. package/lib/dist/lib/index.d.ts.map +1 -0
  152. package/lib/dist/lib/index.js +62 -0
  153. package/lib/dist/lib/index.js.map +1 -0
  154. package/lib/dist/lib/labels.d.ts +90 -0
  155. package/lib/dist/lib/labels.d.ts.map +1 -0
  156. package/lib/dist/lib/labels.js +158 -0
  157. package/lib/dist/lib/labels.js.map +1 -0
  158. package/lib/dist/lib/markdown.d.ts +16 -0
  159. package/lib/dist/lib/markdown.d.ts.map +1 -0
  160. package/lib/dist/lib/markdown.js +42 -0
  161. package/lib/dist/lib/markdown.js.map +1 -0
  162. package/lib/dist/lib/matchers/expect.d.ts +3 -0
  163. package/lib/dist/lib/matchers/expect.d.ts.map +1 -0
  164. package/lib/dist/lib/matchers/expect.js +225 -0
  165. package/lib/dist/lib/matchers/expect.js.map +1 -0
  166. package/lib/dist/lib/matchers/index.d.ts +8 -0
  167. package/lib/dist/lib/matchers/index.d.ts.map +1 -0
  168. package/lib/dist/lib/matchers/index.js +9 -0
  169. package/lib/dist/lib/matchers/index.js.map +1 -0
  170. package/lib/dist/lib/matchers/judgeAccessor.d.ts +113 -0
  171. package/lib/dist/lib/matchers/judgeAccessor.d.ts.map +1 -0
  172. package/lib/dist/lib/matchers/judgeAccessor.js +183 -0
  173. package/lib/dist/lib/matchers/judgeAccessor.js.map +1 -0
  174. package/lib/dist/lib/matchers/session.d.ts +39 -0
  175. package/lib/dist/lib/matchers/session.d.ts.map +1 -0
  176. package/lib/dist/lib/matchers/session.js +116 -0
  177. package/lib/dist/lib/matchers/session.js.map +1 -0
  178. package/lib/dist/lib/matchers/traces.d.ts +70 -0
  179. package/lib/dist/lib/matchers/traces.d.ts.map +1 -0
  180. package/lib/dist/lib/matchers/traces.js +236 -0
  181. package/lib/dist/lib/matchers/traces.js.map +1 -0
  182. package/lib/dist/lib/matchers/tracesPricing.d.ts +38 -0
  183. package/lib/dist/lib/matchers/tracesPricing.d.ts.map +1 -0
  184. package/lib/dist/lib/matchers/tracesPricing.js +64 -0
  185. package/lib/dist/lib/matchers/tracesPricing.js.map +1 -0
  186. package/lib/dist/lib/matchers/types.d.ts +75 -0
  187. package/lib/dist/lib/matchers/types.d.ts.map +1 -0
  188. package/lib/dist/lib/matchers/types.js +6 -0
  189. package/lib/dist/lib/matchers/types.js.map +1 -0
  190. package/lib/dist/lib/packagePaths.d.ts +29 -0
  191. package/lib/dist/lib/packagePaths.d.ts.map +1 -0
  192. package/lib/dist/lib/packagePaths.js +63 -0
  193. package/lib/dist/lib/packagePaths.js.map +1 -0
  194. package/lib/dist/lib/performance.d.ts +51 -0
  195. package/lib/dist/lib/performance.d.ts.map +1 -0
  196. package/lib/dist/lib/performance.js +159 -0
  197. package/lib/dist/lib/performance.js.map +1 -0
  198. package/lib/dist/lib/portConfig.d.ts +29 -0
  199. package/lib/dist/lib/portConfig.d.ts.map +1 -0
  200. package/lib/dist/lib/portConfig.js +64 -0
  201. package/lib/dist/lib/portConfig.js.map +1 -0
  202. package/lib/dist/lib/preferences.d.ts +63 -0
  203. package/lib/dist/lib/preferences.d.ts.map +1 -0
  204. package/lib/dist/lib/preferences.js +117 -0
  205. package/lib/dist/lib/preferences.js.map +1 -0
  206. package/lib/dist/lib/resolveAgentModel.d.ts +22 -0
  207. package/lib/dist/lib/resolveAgentModel.d.ts.map +1 -0
  208. package/lib/dist/lib/resolveAgentModel.js +37 -0
  209. package/lib/dist/lib/resolveAgentModel.js.map +1 -0
  210. package/lib/dist/lib/runStats.d.ts +116 -0
  211. package/lib/dist/lib/runStats.d.ts.map +1 -0
  212. package/lib/dist/lib/runStats.js +192 -0
  213. package/lib/dist/lib/runStats.js.map +1 -0
  214. package/lib/dist/lib/telemetry/constants.d.ts +60 -0
  215. package/lib/dist/lib/telemetry/constants.d.ts.map +1 -0
  216. package/lib/dist/lib/telemetry/constants.js +87 -0
  217. package/lib/dist/lib/telemetry/constants.js.map +1 -0
  218. package/lib/dist/lib/telemetry/evalSpans.d.ts +61 -0
  219. package/lib/dist/lib/telemetry/evalSpans.d.ts.map +1 -0
  220. package/lib/dist/lib/telemetry/evalSpans.js +254 -0
  221. package/lib/dist/lib/telemetry/evalSpans.js.map +1 -0
  222. package/lib/dist/lib/telemetry/index.d.ts +11 -0
  223. package/lib/dist/lib/telemetry/index.d.ts.map +1 -0
  224. package/lib/dist/lib/telemetry/index.js +15 -0
  225. package/lib/dist/lib/telemetry/index.js.map +1 -0
  226. package/lib/dist/lib/telemetry/opensearchExporter.d.ts +43 -0
  227. package/lib/dist/lib/telemetry/opensearchExporter.d.ts.map +1 -0
  228. package/lib/dist/lib/telemetry/opensearchExporter.js +217 -0
  229. package/lib/dist/lib/telemetry/opensearchExporter.js.map +1 -0
  230. package/lib/dist/lib/telemetry/provider.d.ts +55 -0
  231. package/lib/dist/lib/telemetry/provider.d.ts.map +1 -0
  232. package/lib/dist/lib/telemetry/provider.js +140 -0
  233. package/lib/dist/lib/telemetry/provider.js.map +1 -0
  234. package/lib/dist/lib/testCaseLabels.d.ts +34 -0
  235. package/lib/dist/lib/testCaseLabels.d.ts.map +1 -0
  236. package/lib/dist/lib/testCaseLabels.js +88 -0
  237. package/lib/dist/lib/testCaseLabels.js.map +1 -0
  238. package/lib/dist/lib/testCaseValidation.d.ts +140 -0
  239. package/lib/dist/lib/testCaseValidation.d.ts.map +1 -0
  240. package/lib/dist/lib/testCaseValidation.js +162 -0
  241. package/lib/dist/lib/testCaseValidation.js.map +1 -0
  242. package/lib/dist/lib/testCases/agentFixture.d.ts +80 -0
  243. package/lib/dist/lib/testCases/agentFixture.d.ts.map +1 -0
  244. package/lib/dist/lib/testCases/agentFixture.js +43 -0
  245. package/lib/dist/lib/testCases/agentFixture.js.map +1 -0
  246. package/lib/dist/lib/testCases/authoringSurface.d.ts +10 -0
  247. package/lib/dist/lib/testCases/authoringSurface.d.ts.map +1 -0
  248. package/lib/dist/lib/testCases/authoringSurface.js +54 -0
  249. package/lib/dist/lib/testCases/authoringSurface.js.map +1 -0
  250. package/lib/dist/lib/testCases/codemod.d.ts +13 -0
  251. package/lib/dist/lib/testCases/codemod.d.ts.map +1 -0
  252. package/lib/dist/lib/testCases/codemod.js +169 -0
  253. package/lib/dist/lib/testCases/codemod.js.map +1 -0
  254. package/lib/dist/lib/testCases/define.d.ts +114 -0
  255. package/lib/dist/lib/testCases/define.d.ts.map +1 -0
  256. package/lib/dist/lib/testCases/define.js +253 -0
  257. package/lib/dist/lib/testCases/define.js.map +1 -0
  258. package/lib/dist/lib/testCases/evaluators.d.ts +80 -0
  259. package/lib/dist/lib/testCases/evaluators.d.ts.map +1 -0
  260. package/lib/dist/lib/testCases/evaluators.js +105 -0
  261. package/lib/dist/lib/testCases/evaluators.js.map +1 -0
  262. package/lib/dist/lib/testCases/index.d.ts +14 -0
  263. package/lib/dist/lib/testCases/index.d.ts.map +1 -0
  264. package/lib/dist/lib/testCases/index.js +12 -0
  265. package/lib/dist/lib/testCases/index.js.map +1 -0
  266. package/lib/dist/lib/testCases/judge.d.ts +165 -0
  267. package/lib/dist/lib/testCases/judge.d.ts.map +1 -0
  268. package/lib/dist/lib/testCases/judge.js +359 -0
  269. package/lib/dist/lib/testCases/judge.js.map +1 -0
  270. package/lib/dist/lib/testCases/loader.d.ts +36 -0
  271. package/lib/dist/lib/testCases/loader.d.ts.map +1 -0
  272. package/lib/dist/lib/testCases/loader.js +179 -0
  273. package/lib/dist/lib/testCases/loader.js.map +1 -0
  274. package/lib/dist/lib/testCases/types.d.ts +242 -0
  275. package/lib/dist/lib/testCases/types.d.ts.map +1 -0
  276. package/lib/dist/lib/testCases/types.js +6 -0
  277. package/lib/dist/lib/testCases/types.js.map +1 -0
  278. package/lib/dist/lib/theme.d.ts +6 -0
  279. package/lib/dist/lib/theme.d.ts.map +1 -0
  280. package/lib/dist/lib/theme.js +36 -0
  281. package/lib/dist/lib/theme.js.map +1 -0
  282. package/lib/dist/lib/uiTelemetry.d.ts +7 -0
  283. package/lib/dist/lib/uiTelemetry.d.ts.map +1 -0
  284. package/lib/dist/lib/uiTelemetry.js +25 -0
  285. package/lib/dist/lib/uiTelemetry.js.map +1 -0
  286. package/lib/dist/lib/utils.d.ts +111 -0
  287. package/lib/dist/lib/utils.d.ts.map +1 -0
  288. package/lib/dist/lib/utils.js +254 -0
  289. package/lib/dist/lib/utils.js.map +1 -0
  290. package/lib/dist/lib/workflow/consolidate.d.ts +12 -0
  291. package/lib/dist/lib/workflow/consolidate.d.ts.map +1 -0
  292. package/lib/dist/lib/workflow/consolidate.js +33 -0
  293. package/lib/dist/lib/workflow/consolidate.js.map +1 -0
  294. package/lib/dist/lib/workflow/index.d.ts +13 -0
  295. package/lib/dist/lib/workflow/index.d.ts.map +1 -0
  296. package/lib/dist/lib/workflow/index.js +12 -0
  297. package/lib/dist/lib/workflow/index.js.map +1 -0
  298. package/lib/dist/lib/workflow/ledger.d.ts +30 -0
  299. package/lib/dist/lib/workflow/ledger.d.ts.map +1 -0
  300. package/lib/dist/lib/workflow/ledger.js +41 -0
  301. package/lib/dist/lib/workflow/ledger.js.map +1 -0
  302. package/lib/dist/lib/workflow/pool.d.ts +13 -0
  303. package/lib/dist/lib/workflow/pool.d.ts.map +1 -0
  304. package/lib/dist/lib/workflow/pool.js +44 -0
  305. package/lib/dist/lib/workflow/pool.js.map +1 -0
  306. package/lib/dist/lib/workflow/source.d.ts +22 -0
  307. package/lib/dist/lib/workflow/source.d.ts.map +1 -0
  308. package/lib/dist/lib/workflow/source.js +29 -0
  309. package/lib/dist/lib/workflow/source.js.map +1 -0
  310. package/lib/dist/lib/workflow/stepB.d.ts +71 -0
  311. package/lib/dist/lib/workflow/stepB.d.ts.map +1 -0
  312. package/lib/dist/lib/workflow/stepB.js +99 -0
  313. package/lib/dist/lib/workflow/stepB.js.map +1 -0
  314. package/lib/dist/lib/workflow/types.d.ts +86 -0
  315. package/lib/dist/lib/workflow/types.d.ts.map +1 -0
  316. package/lib/dist/lib/workflow/types.js +6 -0
  317. package/lib/dist/lib/workflow/types.js.map +1 -0
  318. package/lib/dist/lib/workflow/workflow.d.ts +119 -0
  319. package/lib/dist/lib/workflow/workflow.d.ts.map +1 -0
  320. package/lib/dist/lib/workflow/workflow.js +195 -0
  321. package/lib/dist/lib/workflow/workflow.js.map +1 -0
  322. package/lib/dist/services/agent/aguiConverter.d.ts +50 -0
  323. package/lib/dist/services/agent/aguiConverter.d.ts.map +1 -0
  324. package/lib/dist/services/agent/aguiConverter.js +449 -0
  325. package/lib/dist/services/agent/aguiConverter.js.map +1 -0
  326. package/lib/dist/services/agent/index.d.ts +10 -0
  327. package/lib/dist/services/agent/index.d.ts.map +1 -0
  328. package/lib/dist/services/agent/index.js +12 -0
  329. package/lib/dist/services/agent/index.js.map +1 -0
  330. package/lib/dist/services/agent/payloadBuilder.d.ts +33 -0
  331. package/lib/dist/services/agent/payloadBuilder.d.ts.map +1 -0
  332. package/lib/dist/services/agent/payloadBuilder.js +75 -0
  333. package/lib/dist/services/agent/payloadBuilder.js.map +1 -0
  334. package/lib/dist/services/agent/sseStream.d.ts +43 -0
  335. package/lib/dist/services/agent/sseStream.d.ts.map +1 -0
  336. package/lib/dist/services/agent/sseStream.js +223 -0
  337. package/lib/dist/services/agent/sseStream.js.map +1 -0
  338. package/lib/dist/services/connectors/agui/AGUIStreamingConnector.d.ts +44 -0
  339. package/lib/dist/services/connectors/agui/AGUIStreamingConnector.d.ts.map +1 -0
  340. package/lib/dist/services/connectors/agui/AGUIStreamingConnector.js +95 -0
  341. package/lib/dist/services/connectors/agui/AGUIStreamingConnector.js.map +1 -0
  342. package/lib/dist/services/connectors/base/BaseConnector.d.ts +81 -0
  343. package/lib/dist/services/connectors/base/BaseConnector.d.ts.map +1 -0
  344. package/lib/dist/services/connectors/base/BaseConnector.js +170 -0
  345. package/lib/dist/services/connectors/base/BaseConnector.js.map +1 -0
  346. package/lib/dist/services/connectors/claude-code/ClaudeCodeConnector.d.ts +126 -0
  347. package/lib/dist/services/connectors/claude-code/ClaudeCodeConnector.d.ts.map +1 -0
  348. package/lib/dist/services/connectors/claude-code/ClaudeCodeConnector.js +417 -0
  349. package/lib/dist/services/connectors/claude-code/ClaudeCodeConnector.js.map +1 -0
  350. package/lib/dist/services/connectors/index.d.ts +13 -0
  351. package/lib/dist/services/connectors/index.d.ts.map +1 -0
  352. package/lib/dist/services/connectors/index.js +32 -0
  353. package/lib/dist/services/connectors/index.js.map +1 -0
  354. package/lib/dist/services/connectors/kiro/KiroConnector.d.ts +48 -0
  355. package/lib/dist/services/connectors/kiro/KiroConnector.d.ts.map +1 -0
  356. package/lib/dist/services/connectors/kiro/KiroConnector.js +158 -0
  357. package/lib/dist/services/connectors/kiro/KiroConnector.js.map +1 -0
  358. package/lib/dist/services/connectors/langgraph/LangGraphConnector.d.ts +36 -0
  359. package/lib/dist/services/connectors/langgraph/LangGraphConnector.d.ts.map +1 -0
  360. package/lib/dist/services/connectors/langgraph/LangGraphConnector.js +175 -0
  361. package/lib/dist/services/connectors/langgraph/LangGraphConnector.js.map +1 -0
  362. package/lib/dist/services/connectors/mock/MockConnector.d.ts +37 -0
  363. package/lib/dist/services/connectors/mock/MockConnector.d.ts.map +1 -0
  364. package/lib/dist/services/connectors/mock/MockConnector.js +120 -0
  365. package/lib/dist/services/connectors/mock/MockConnector.js.map +1 -0
  366. package/lib/dist/services/connectors/openai-compatible/OpenAICompatibleConnector.d.ts +42 -0
  367. package/lib/dist/services/connectors/openai-compatible/OpenAICompatibleConnector.d.ts.map +1 -0
  368. package/lib/dist/services/connectors/openai-compatible/OpenAICompatibleConnector.js +133 -0
  369. package/lib/dist/services/connectors/openai-compatible/OpenAICompatibleConnector.js.map +1 -0
  370. package/lib/dist/services/connectors/pi/PiConnector.d.ts +87 -0
  371. package/lib/dist/services/connectors/pi/PiConnector.d.ts.map +1 -0
  372. package/lib/dist/services/connectors/pi/PiConnector.js +274 -0
  373. package/lib/dist/services/connectors/pi/PiConnector.js.map +1 -0
  374. package/lib/dist/services/connectors/registry.d.ts +57 -0
  375. package/lib/dist/services/connectors/registry.d.ts.map +1 -0
  376. package/lib/dist/services/connectors/registry.js +106 -0
  377. package/lib/dist/services/connectors/registry.js.map +1 -0
  378. package/lib/dist/services/connectors/rest/RESTConnector.d.ts +38 -0
  379. package/lib/dist/services/connectors/rest/RESTConnector.d.ts.map +1 -0
  380. package/lib/dist/services/connectors/rest/RESTConnector.js +117 -0
  381. package/lib/dist/services/connectors/rest/RESTConnector.js.map +1 -0
  382. package/lib/dist/services/connectors/server.d.ts +13 -0
  383. package/lib/dist/services/connectors/server.d.ts.map +1 -0
  384. package/lib/dist/services/connectors/server.js +34 -0
  385. package/lib/dist/services/connectors/server.js.map +1 -0
  386. package/lib/dist/services/connectors/strands/StrandsConnector.d.ts +48 -0
  387. package/lib/dist/services/connectors/strands/StrandsConnector.d.ts.map +1 -0
  388. package/lib/dist/services/connectors/strands/StrandsConnector.js +221 -0
  389. package/lib/dist/services/connectors/strands/StrandsConnector.js.map +1 -0
  390. package/lib/dist/services/connectors/subprocess/SubprocessConnector.d.ts +88 -0
  391. package/lib/dist/services/connectors/subprocess/SubprocessConnector.d.ts.map +1 -0
  392. package/lib/dist/services/connectors/subprocess/SubprocessConnector.js +426 -0
  393. package/lib/dist/services/connectors/subprocess/SubprocessConnector.js.map +1 -0
  394. package/lib/dist/services/connectors/types.d.ts +213 -0
  395. package/lib/dist/services/connectors/types.d.ts.map +1 -0
  396. package/lib/dist/services/connectors/types.js +6 -0
  397. package/lib/dist/services/connectors/types.js.map +1 -0
  398. package/lib/dist/services/evaluation/bedrockJudge.d.ts +71 -0
  399. package/lib/dist/services/evaluation/bedrockJudge.d.ts.map +1 -0
  400. package/lib/dist/services/evaluation/bedrockJudge.js +169 -0
  401. package/lib/dist/services/evaluation/bedrockJudge.js.map +1 -0
  402. package/lib/dist/services/evaluation/evaluatorError.d.ts +56 -0
  403. package/lib/dist/services/evaluation/evaluatorError.d.ts.map +1 -0
  404. package/lib/dist/services/evaluation/evaluatorError.js +56 -0
  405. package/lib/dist/services/evaluation/evaluatorError.js.map +1 -0
  406. package/lib/dist/services/evaluation/index.d.ts +106 -0
  407. package/lib/dist/services/evaluation/index.d.ts.map +1 -0
  408. package/lib/dist/services/evaluation/index.js +684 -0
  409. package/lib/dist/services/evaluation/index.js.map +1 -0
  410. package/lib/dist/services/evaluation/mockTrajectory.d.ts +3 -0
  411. package/lib/dist/services/evaluation/mockTrajectory.d.ts.map +1 -0
  412. package/lib/dist/services/evaluation/mockTrajectory.js +72 -0
  413. package/lib/dist/services/evaluation/mockTrajectory.js.map +1 -0
  414. package/lib/dist/services/opensearch/client.d.ts +26 -0
  415. package/lib/dist/services/opensearch/client.d.ts.map +1 -0
  416. package/lib/dist/services/opensearch/client.js +131 -0
  417. package/lib/dist/services/opensearch/client.js.map +1 -0
  418. package/lib/dist/services/opensearch/index.d.ts +16 -0
  419. package/lib/dist/services/opensearch/index.d.ts.map +1 -0
  420. package/lib/dist/services/opensearch/index.js +25 -0
  421. package/lib/dist/services/opensearch/index.js.map +1 -0
  422. package/lib/dist/services/storage/asyncBenchmarkStorage.d.ts +123 -0
  423. package/lib/dist/services/storage/asyncBenchmarkStorage.d.ts.map +1 -0
  424. package/lib/dist/services/storage/asyncBenchmarkStorage.js +440 -0
  425. package/lib/dist/services/storage/asyncBenchmarkStorage.js.map +1 -0
  426. package/lib/dist/services/storage/asyncRunStorage.d.ts +135 -0
  427. package/lib/dist/services/storage/asyncRunStorage.d.ts.map +1 -0
  428. package/lib/dist/services/storage/asyncRunStorage.js +524 -0
  429. package/lib/dist/services/storage/asyncRunStorage.js.map +1 -0
  430. package/lib/dist/services/storage/asyncTestCaseStorage.d.ts +170 -0
  431. package/lib/dist/services/storage/asyncTestCaseStorage.d.ts.map +1 -0
  432. package/lib/dist/services/storage/asyncTestCaseStorage.js +301 -0
  433. package/lib/dist/services/storage/asyncTestCaseStorage.js.map +1 -0
  434. package/lib/dist/services/storage/index.d.ts +17 -0
  435. package/lib/dist/services/storage/index.d.ts.map +1 -0
  436. package/lib/dist/services/storage/index.js +20 -0
  437. package/lib/dist/services/storage/index.js.map +1 -0
  438. package/lib/dist/services/storage/migration.d.ts +54 -0
  439. package/lib/dist/services/storage/migration.d.ts.map +1 -0
  440. package/lib/dist/services/storage/migration.js +296 -0
  441. package/lib/dist/services/storage/migration.js.map +1 -0
  442. package/lib/dist/services/storage/opensearchClient.d.ts +947 -0
  443. package/lib/dist/services/storage/opensearchClient.d.ts.map +1 -0
  444. package/lib/dist/services/storage/opensearchClient.js +442 -0
  445. package/lib/dist/services/storage/opensearchClient.js.map +1 -0
  446. package/lib/dist/services/traces/browserRecovery.d.ts +37 -0
  447. package/lib/dist/services/traces/browserRecovery.d.ts.map +1 -0
  448. package/lib/dist/services/traces/browserRecovery.js +108 -0
  449. package/lib/dist/services/traces/browserRecovery.js.map +1 -0
  450. package/lib/dist/services/traces/categoryStyles.d.ts +21 -0
  451. package/lib/dist/services/traces/categoryStyles.d.ts.map +1 -0
  452. package/lib/dist/services/traces/categoryStyles.js +56 -0
  453. package/lib/dist/services/traces/categoryStyles.js.map +1 -0
  454. package/lib/dist/services/traces/executionOrderTransform.d.ts +35 -0
  455. package/lib/dist/services/traces/executionOrderTransform.d.ts.map +1 -0
  456. package/lib/dist/services/traces/executionOrderTransform.js +313 -0
  457. package/lib/dist/services/traces/executionOrderTransform.js.map +1 -0
  458. package/lib/dist/services/traces/fetchSpansForRun.d.ts +86 -0
  459. package/lib/dist/services/traces/fetchSpansForRun.d.ts.map +1 -0
  460. package/lib/dist/services/traces/fetchSpansForRun.js +69 -0
  461. package/lib/dist/services/traces/fetchSpansForRun.js.map +1 -0
  462. package/lib/dist/services/traces/flowTransform.d.ts +24 -0
  463. package/lib/dist/services/traces/flowTransform.d.ts.map +1 -0
  464. package/lib/dist/services/traces/flowTransform.js +228 -0
  465. package/lib/dist/services/traces/flowTransform.js.map +1 -0
  466. package/lib/dist/services/traces/index.d.ts +121 -0
  467. package/lib/dist/services/traces/index.d.ts.map +1 -0
  468. package/lib/dist/services/traces/index.js +255 -0
  469. package/lib/dist/services/traces/index.js.map +1 -0
  470. package/lib/dist/services/traces/intentTransform.d.ts +20 -0
  471. package/lib/dist/services/traces/intentTransform.d.ts.map +1 -0
  472. package/lib/dist/services/traces/intentTransform.js +131 -0
  473. package/lib/dist/services/traces/intentTransform.js.map +1 -0
  474. package/lib/dist/services/traces/judgeAgentsHints.d.ts +63 -0
  475. package/lib/dist/services/traces/judgeAgentsHints.d.ts.map +1 -0
  476. package/lib/dist/services/traces/judgeAgentsHints.js +89 -0
  477. package/lib/dist/services/traces/judgeAgentsHints.js.map +1 -0
  478. package/lib/dist/services/traces/messageExtraction.d.ts +15 -0
  479. package/lib/dist/services/traces/messageExtraction.d.ts.map +1 -0
  480. package/lib/dist/services/traces/messageExtraction.js +313 -0
  481. package/lib/dist/services/traces/messageExtraction.js.map +1 -0
  482. package/lib/dist/services/traces/spanCategorization.d.ts +63 -0
  483. package/lib/dist/services/traces/spanCategorization.d.ts.map +1 -0
  484. package/lib/dist/services/traces/spanCategorization.js +276 -0
  485. package/lib/dist/services/traces/spanCategorization.js.map +1 -0
  486. package/lib/dist/services/traces/spanPreprocessing.d.ts +37 -0
  487. package/lib/dist/services/traces/spanPreprocessing.d.ts.map +1 -0
  488. package/lib/dist/services/traces/spanPreprocessing.js +102 -0
  489. package/lib/dist/services/traces/spanPreprocessing.js.map +1 -0
  490. package/lib/dist/services/traces/spansToTrajectory.d.ts +36 -0
  491. package/lib/dist/services/traces/spansToTrajectory.d.ts.map +1 -0
  492. package/lib/dist/services/traces/spansToTrajectory.js +425 -0
  493. package/lib/dist/services/traces/spansToTrajectory.js.map +1 -0
  494. package/lib/dist/services/traces/toolSimilarity.d.ts +35 -0
  495. package/lib/dist/services/traces/toolSimilarity.d.ts.map +1 -0
  496. package/lib/dist/services/traces/toolSimilarity.js +203 -0
  497. package/lib/dist/services/traces/toolSimilarity.js.map +1 -0
  498. package/lib/dist/services/traces/traceComparison.d.ts +31 -0
  499. package/lib/dist/services/traces/traceComparison.d.ts.map +1 -0
  500. package/lib/dist/services/traces/traceComparison.js +318 -0
  501. package/lib/dist/services/traces/traceComparison.js.map +1 -0
  502. package/lib/dist/services/traces/traceGrouping.d.ts +19 -0
  503. package/lib/dist/services/traces/traceGrouping.d.ts.map +1 -0
  504. package/lib/dist/services/traces/traceGrouping.js +107 -0
  505. package/lib/dist/services/traces/traceGrouping.js.map +1 -0
  506. package/lib/dist/services/traces/tracePoller.d.ts +108 -0
  507. package/lib/dist/services/traces/tracePoller.d.ts.map +1 -0
  508. package/lib/dist/services/traces/tracePoller.js +475 -0
  509. package/lib/dist/services/traces/tracePoller.js.map +1 -0
  510. package/lib/dist/services/traces/traceStats.d.ts +45 -0
  511. package/lib/dist/services/traces/traceStats.d.ts.map +1 -0
  512. package/lib/dist/services/traces/traceStats.js +114 -0
  513. package/lib/dist/services/traces/traceStats.js.map +1 -0
  514. package/lib/dist/services/traces/traceSummary.d.ts +47 -0
  515. package/lib/dist/services/traces/traceSummary.d.ts.map +1 -0
  516. package/lib/dist/services/traces/traceSummary.js +68 -0
  517. package/lib/dist/services/traces/traceSummary.js.map +1 -0
  518. package/lib/dist/services/traces/utils.d.ts +33 -0
  519. package/lib/dist/services/traces/utils.d.ts.map +1 -0
  520. package/lib/dist/services/traces/utils.js +114 -0
  521. package/lib/dist/services/traces/utils.js.map +1 -0
  522. package/lib/dist/types/agui.d.ts +13 -0
  523. package/lib/dist/types/agui.d.ts.map +1 -0
  524. package/lib/dist/types/agui.js +16 -0
  525. package/lib/dist/types/agui.js.map +1 -0
  526. package/lib/dist/types/index.d.ts +1229 -0
  527. package/lib/dist/types/index.d.ts.map +1 -0
  528. package/lib/dist/types/index.js +12 -0
  529. package/lib/dist/types/index.js.map +1 -0
  530. package/lib/dist/types/skills.d.ts +146 -0
  531. package/lib/dist/types/skills.d.ts.map +1 -0
  532. package/lib/dist/types/skills.js +6 -0
  533. package/lib/dist/types/skills.js.map +1 -0
  534. package/observio-sample-agent/pi-package/README.md +112 -0
  535. package/observio-sample-agent/pi-package/extensions/agent-health.ts +373 -0
  536. package/observio-sample-agent/pi-package/package.json +17 -0
  537. package/observio-sample-agent/pi-package/prompts/agent-health.md +37 -0
  538. package/observio-sample-agent/pi-package/skills/create-pr/SKILL.md +88 -0
  539. package/observio-sample-agent/pi-package/skills/fix-bug/SKILL.md +71 -0
  540. package/observio-sample-agent/pi-package/skills/implement-feature/SKILL.md +156 -0
  541. package/observio-sample-agent/pi-package/skills/instrument-otel/SKILL.md +208 -0
  542. package/observio-sample-agent/pi-package/skills/setup-collector/SKILL.md +146 -0
  543. package/observio-sample-agent/pi-package/skills/write-test/SKILL.md +115 -0
  544. package/package.json +45 -9
  545. package/server/dist/app.js +34031 -18731
  546. package/server/dist/index.js +30737 -15338
  547. package/tsconfig.lib.json +71 -0
  548. package/dist/assets/index-BOIP5L7h.js +0 -246
  549. package/dist/assets/index-CU9YKpAL.css +0 -1
  550. package/lib/dist/config/index.js +0 -452
  551. package/lib/dist/index.js +0 -1725
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Absolute path to the agent-health package root, computed once per process.
3
+ *
4
+ * Works in three runtime contexts:
5
+ * - Production (`node_modules/@opensearch-project/agent-health/...`)
6
+ * - Local dev from a checkout (`<repo>/...`)
7
+ * - Bundled output from esbuild (`<root>/server/dist/...`)
8
+ *
9
+ * @throws if the package root cannot be located.
10
+ */
11
+ export declare function getPackageRoot(): string;
12
+ /**
13
+ * Resolve a path inside `<package_root>/docs/skills/`.
14
+ *
15
+ * @param fileName Defaults to `AGENT_HEALTH.md` for the top-level skill.
16
+ */
17
+ export declare function getSkillPath(fileName?: string): string;
18
+ /**
19
+ * Resolve the bundled pi-package directory shipped alongside the
20
+ * Observio sample agent. Used by the Pi judge service.
21
+ */
22
+ export declare function getPiPackagePath(): string;
23
+ /**
24
+ * TEST-ONLY: reset the cached root. Exported so unit tests for the
25
+ * resolver itself (or downstream services) can re-evaluate without
26
+ * spawning a fresh process.
27
+ */
28
+ export declare function _resetPackageRootCacheForTests(): void;
29
+ //# sourceMappingURL=packagePaths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packagePaths.d.ts","sourceRoot":"","sources":["../../packagePaths.ts"],"names":[],"mappings":"AA4BA;;;;;;;;;GASG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAIvC;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,QAAQ,GAAE,MAA0B,GAAG,MAAM,CAEzE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,IAAI,IAAI,CAErD"}
@@ -0,0 +1,63 @@
1
+ /*
2
+ * Copyright OpenSearch Contributors
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ /**
6
+ * Package asset path resolution.
7
+ *
8
+ * Resolves the location of files that ship inside the agent-health package
9
+ * (skill markdown files, the bundled pi-package, etc.) regardless of the
10
+ * caller's working directory. This unblocks running agent-health from a
11
+ * directory other than the repo root (e.g., from inside the user's own
12
+ * agent project).
13
+ *
14
+ * Anchors on `import.meta.url` of THIS module, then walks upwards looking
15
+ * for the agent-health package's own `package.json`. The pure walking
16
+ * logic lives in `findPackageRoot.ts` so it can be unit-tested under
17
+ * Jest's CommonJS loader (which doesn't support `import.meta.url`).
18
+ */
19
+ import { fileURLToPath } from 'url';
20
+ import { dirname, join } from 'path';
21
+ import { findPackageRootFrom } from './findPackageRoot.js';
22
+ const __dirname = dirname(fileURLToPath(import.meta.url));
23
+ let cachedRoot = null;
24
+ /**
25
+ * Absolute path to the agent-health package root, computed once per process.
26
+ *
27
+ * Works in three runtime contexts:
28
+ * - Production (`node_modules/@opensearch-project/agent-health/...`)
29
+ * - Local dev from a checkout (`<repo>/...`)
30
+ * - Bundled output from esbuild (`<root>/server/dist/...`)
31
+ *
32
+ * @throws if the package root cannot be located.
33
+ */
34
+ export function getPackageRoot() {
35
+ if (cachedRoot)
36
+ return cachedRoot;
37
+ cachedRoot = findPackageRootFrom(__dirname);
38
+ return cachedRoot;
39
+ }
40
+ /**
41
+ * Resolve a path inside `<package_root>/docs/skills/`.
42
+ *
43
+ * @param fileName Defaults to `AGENT_HEALTH.md` for the top-level skill.
44
+ */
45
+ export function getSkillPath(fileName = 'AGENT_HEALTH.md') {
46
+ return join(getPackageRoot(), 'docs', 'skills', fileName);
47
+ }
48
+ /**
49
+ * Resolve the bundled pi-package directory shipped alongside the
50
+ * Observio sample agent. Used by the Pi judge service.
51
+ */
52
+ export function getPiPackagePath() {
53
+ return join(getPackageRoot(), 'observio-sample-agent', 'pi-package');
54
+ }
55
+ /**
56
+ * TEST-ONLY: reset the cached root. Exported so unit tests for the
57
+ * resolver itself (or downstream services) can re-evaluate without
58
+ * spawning a fresh process.
59
+ */
60
+ export function _resetPackageRootCacheForTests() {
61
+ cachedRoot = null;
62
+ }
63
+ //# sourceMappingURL=packagePaths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packagePaths.js","sourceRoot":"","sources":["../../packagePaths.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,IAAI,UAAU,GAAkB,IAAI,CAAC;AAErC;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc;IAC5B,IAAI,UAAU;QAAE,OAAO,UAAU,CAAC;IAClC,UAAU,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAC5C,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,WAAmB,iBAAiB;IAC/D,OAAO,IAAI,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC5D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,IAAI,CAAC,cAAc,EAAE,EAAE,uBAAuB,EAAE,YAAY,CAAC,CAAC;AACvE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,8BAA8B;IAC5C,UAAU,GAAG,IAAI,CAAC;AACpB,CAAC"}
@@ -0,0 +1,51 @@
1
+ interface PerformanceMetric {
2
+ name: string;
3
+ duration: number;
4
+ timestamp: number;
5
+ }
6
+ /**
7
+ * Start a performance measurement
8
+ */
9
+ export declare function startMeasure(name: string): void;
10
+ /**
11
+ * End a performance measurement and log the duration
12
+ */
13
+ export declare function endMeasure(name: string, logToConsole?: boolean): number | null;
14
+ /**
15
+ * Measure a synchronous function
16
+ */
17
+ export declare function measureSync<T>(name: string, fn: () => T, logToConsole?: boolean): T;
18
+ /**
19
+ * Measure an async function
20
+ */
21
+ export declare function measureAsync<T>(name: string, fn: () => Promise<T>, logToConsole?: boolean): Promise<T>;
22
+ /**
23
+ * Get all recorded metrics
24
+ */
25
+ export declare function getMetrics(): PerformanceMetric[];
26
+ /**
27
+ * Get metrics for a specific measurement name
28
+ */
29
+ export declare function getMetricsByName(name: string): PerformanceMetric[];
30
+ /**
31
+ * Get average duration for a metric
32
+ */
33
+ export declare function getAverageDuration(name: string): number | null;
34
+ /**
35
+ * Clear all metrics
36
+ */
37
+ export declare function clearMetrics(): void;
38
+ /**
39
+ * Log a summary of all metrics
40
+ */
41
+ export declare function logSummary(): void;
42
+ /**
43
+ * Enable performance monitoring
44
+ */
45
+ export declare function enable(): void;
46
+ /**
47
+ * Disable performance monitoring
48
+ */
49
+ export declare function disable(): void;
50
+ export {};
51
+ //# sourceMappingURL=performance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"performance.d.ts","sourceRoot":"","sources":["../../performance.ts"],"names":[],"mappings":"AAiBA,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAgBD;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAO/C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,UAAO,GAAG,MAAM,GAAG,IAAI,CA2B3E;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,YAAY,UAAO,GAAG,CAAC,CAShF;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAClC,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,YAAY,UAAO,GAClB,OAAO,CAAC,CAAC,CAAC,CASZ;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,iBAAiB,EAAE,CAEhD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAElE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM9D;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAGnC;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,IAAI,CA+BjC;AAED;;GAEG;AACH,wBAAgB,MAAM,IAAI,IAAI,CAO7B;AAED;;GAEG;AACH,wBAAgB,OAAO,IAAI,IAAI,CAO9B"}
@@ -0,0 +1,159 @@
1
+ /*
2
+ * Copyright OpenSearch Contributors
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ // In-memory storage for performance marks and metrics
6
+ const marks = new Map();
7
+ const metrics = [];
8
+ // Performance monitoring enabled in development or when DEBUG=true
9
+ const isEnabled = () => {
10
+ if (typeof window !== 'undefined') {
11
+ return localStorage.getItem('DEBUG_PERFORMANCE') === 'true' ||
12
+ process.env.NODE_ENV === 'development';
13
+ }
14
+ return process.env.DEBUG_PERFORMANCE === 'true' ||
15
+ process.env.NODE_ENV === 'development';
16
+ };
17
+ /**
18
+ * Start a performance measurement
19
+ */
20
+ export function startMeasure(name) {
21
+ if (!isEnabled())
22
+ return;
23
+ marks.set(name, {
24
+ name,
25
+ startTime: performance.now(),
26
+ });
27
+ }
28
+ /**
29
+ * End a performance measurement and log the duration
30
+ */
31
+ export function endMeasure(name, logToConsole = true) {
32
+ if (!isEnabled())
33
+ return null;
34
+ const mark = marks.get(name);
35
+ if (!mark) {
36
+ console.warn(`[Performance] No start mark found for: ${name}`);
37
+ return null;
38
+ }
39
+ const duration = performance.now() - mark.startTime;
40
+ const metric = {
41
+ name,
42
+ duration,
43
+ timestamp: Date.now(),
44
+ };
45
+ metrics.push(metric);
46
+ marks.delete(name);
47
+ if (logToConsole) {
48
+ const color = duration < 50 ? '🟢' : duration < 200 ? '🟡' : '🔴';
49
+ console.log(`[Performance] ${color} ${name}: ${duration.toFixed(2)}ms`);
50
+ }
51
+ return duration;
52
+ }
53
+ /**
54
+ * Measure a synchronous function
55
+ */
56
+ export function measureSync(name, fn, logToConsole = true) {
57
+ if (!isEnabled())
58
+ return fn();
59
+ startMeasure(name);
60
+ try {
61
+ return fn();
62
+ }
63
+ finally {
64
+ endMeasure(name, logToConsole);
65
+ }
66
+ }
67
+ /**
68
+ * Measure an async function
69
+ */
70
+ export async function measureAsync(name, fn, logToConsole = true) {
71
+ if (!isEnabled())
72
+ return fn();
73
+ startMeasure(name);
74
+ try {
75
+ return await fn();
76
+ }
77
+ finally {
78
+ endMeasure(name, logToConsole);
79
+ }
80
+ }
81
+ /**
82
+ * Get all recorded metrics
83
+ */
84
+ export function getMetrics() {
85
+ return [...metrics];
86
+ }
87
+ /**
88
+ * Get metrics for a specific measurement name
89
+ */
90
+ export function getMetricsByName(name) {
91
+ return metrics.filter(m => m.name === name);
92
+ }
93
+ /**
94
+ * Get average duration for a metric
95
+ */
96
+ export function getAverageDuration(name) {
97
+ const metricsForName = getMetricsByName(name);
98
+ if (metricsForName.length === 0)
99
+ return null;
100
+ const sum = metricsForName.reduce((acc, m) => acc + m.duration, 0);
101
+ return sum / metricsForName.length;
102
+ }
103
+ /**
104
+ * Clear all metrics
105
+ */
106
+ export function clearMetrics() {
107
+ metrics.length = 0;
108
+ marks.clear();
109
+ }
110
+ /**
111
+ * Log a summary of all metrics
112
+ */
113
+ export function logSummary() {
114
+ if (!isEnabled() || metrics.length === 0)
115
+ return;
116
+ console.group('📊 Performance Summary');
117
+ // Group metrics by name
118
+ const grouped = new Map();
119
+ metrics.forEach(m => {
120
+ if (!grouped.has(m.name)) {
121
+ grouped.set(m.name, []);
122
+ }
123
+ grouped.get(m.name).push(m);
124
+ });
125
+ // Calculate stats for each metric
126
+ grouped.forEach((metricsForName, name) => {
127
+ const durations = metricsForName.map(m => m.duration);
128
+ const avg = durations.reduce((a, b) => a + b, 0) / durations.length;
129
+ const min = Math.min(...durations);
130
+ const max = Math.max(...durations);
131
+ console.log(`${name}:`, `avg=${avg.toFixed(2)}ms`, `min=${min.toFixed(2)}ms`, `max=${max.toFixed(2)}ms`, `count=${metricsForName.length}`);
132
+ });
133
+ console.groupEnd();
134
+ }
135
+ /**
136
+ * Enable performance monitoring
137
+ */
138
+ export function enable() {
139
+ if (typeof window !== 'undefined') {
140
+ localStorage.setItem('DEBUG_PERFORMANCE', 'true');
141
+ }
142
+ else {
143
+ process.env.DEBUG_PERFORMANCE = 'true';
144
+ }
145
+ console.log('✅ Performance monitoring enabled');
146
+ }
147
+ /**
148
+ * Disable performance monitoring
149
+ */
150
+ export function disable() {
151
+ if (typeof window !== 'undefined') {
152
+ localStorage.removeItem('DEBUG_PERFORMANCE');
153
+ }
154
+ else {
155
+ delete process.env.DEBUG_PERFORMANCE;
156
+ }
157
+ console.log('❌ Performance monitoring disabled');
158
+ }
159
+ //# sourceMappingURL=performance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"performance.js","sourceRoot":"","sources":["../../performance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ export declare const DEFAULT_BACKEND_PORT = 4001;
2
+ export declare const DEFAULT_DEV_PORT = 4000;
3
+ /**
4
+ * Resolve the backend server port from AH_PORT env var (legacy: AGENT_HEALTH_PORT).
5
+ */
6
+ export declare function resolveBackendPort(): number;
7
+ /**
8
+ * Resolve the frontend dev server port from AH_DEV_PORT env var (legacy: AGENT_HEALTH_DEV_PORT).
9
+ */
10
+ export declare function resolveDevPort(): number;
11
+ /**
12
+ * Whether the backend port was *explicitly* configured (AH_PORT /
13
+ * AGENT_HEALTH_PORT set) vs. silently defaulted to {@link DEFAULT_BACKEND_PORT}.
14
+ *
15
+ * Callers that dial the backend over HTTP (e.g. the SDK `judge()` matcher
16
+ * run outside the server lifecycle) use this to warn before defaulting to
17
+ * 4001 — where a foreign instance (a live demo, another checkout) may be
18
+ * listening. See AGENTS.md → server lifecycle.
19
+ *
20
+ * Only a value that parses to a valid integer counts as explicit — a
21
+ * garbage `AH_PORT=abc` silently falls back to the default in
22
+ * {@link resolveBackendPort}, so the warn-once must still fire for it.
23
+ */
24
+ export declare function isBackendPortExplicit(): boolean;
25
+ /**
26
+ * Get the full backend URL (http://localhost:<port>).
27
+ */
28
+ export declare function getBackendUrl(): string;
29
+ //# sourceMappingURL=portConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portConfig.d.ts","sourceRoot":"","sources":["../../portConfig.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,oBAAoB,OAAO,CAAC;AACzC,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAErC;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAO3C;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAOvC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAG/C;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC"}
@@ -0,0 +1,64 @@
1
+ /*
2
+ * Copyright OpenSearch Contributors
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ /**
6
+ * Port Configuration - Single source of truth for all port settings.
7
+ *
8
+ * Backend port: AH_PORT (default 4001)
9
+ * Frontend dev port: AH_DEV_PORT (default 4000)
10
+ *
11
+ * The legacy names AGENT_HEALTH_PORT and AGENT_HEALTH_DEV_PORT are still
12
+ * accepted for one release with a deprecation warning.
13
+ */
14
+ import { readEnv } from './envCompat.js';
15
+ export const DEFAULT_BACKEND_PORT = 4001;
16
+ export const DEFAULT_DEV_PORT = 4000;
17
+ /**
18
+ * Resolve the backend server port from AH_PORT env var (legacy: AGENT_HEALTH_PORT).
19
+ */
20
+ export function resolveBackendPort() {
21
+ const port = readEnv('AH_PORT', 'AGENT_HEALTH_PORT');
22
+ if (port) {
23
+ const parsed = parseInt(port, 10);
24
+ if (!isNaN(parsed))
25
+ return parsed;
26
+ }
27
+ return DEFAULT_BACKEND_PORT;
28
+ }
29
+ /**
30
+ * Resolve the frontend dev server port from AH_DEV_PORT env var (legacy: AGENT_HEALTH_DEV_PORT).
31
+ */
32
+ export function resolveDevPort() {
33
+ const port = readEnv('AH_DEV_PORT', 'AGENT_HEALTH_DEV_PORT');
34
+ if (port) {
35
+ const parsed = parseInt(port, 10);
36
+ if (!isNaN(parsed))
37
+ return parsed;
38
+ }
39
+ return DEFAULT_DEV_PORT;
40
+ }
41
+ /**
42
+ * Whether the backend port was *explicitly* configured (AH_PORT /
43
+ * AGENT_HEALTH_PORT set) vs. silently defaulted to {@link DEFAULT_BACKEND_PORT}.
44
+ *
45
+ * Callers that dial the backend over HTTP (e.g. the SDK `judge()` matcher
46
+ * run outside the server lifecycle) use this to warn before defaulting to
47
+ * 4001 — where a foreign instance (a live demo, another checkout) may be
48
+ * listening. See AGENTS.md → server lifecycle.
49
+ *
50
+ * Only a value that parses to a valid integer counts as explicit — a
51
+ * garbage `AH_PORT=abc` silently falls back to the default in
52
+ * {@link resolveBackendPort}, so the warn-once must still fire for it.
53
+ */
54
+ export function isBackendPortExplicit() {
55
+ const port = readEnv('AH_PORT', 'AGENT_HEALTH_PORT');
56
+ return !!port && !isNaN(parseInt(port, 10));
57
+ }
58
+ /**
59
+ * Get the full backend URL (http://localhost:<port>).
60
+ */
61
+ export function getBackendUrl() {
62
+ return `http://localhost:${resolveBackendPort()}`;
63
+ }
64
+ //# sourceMappingURL=portConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portConfig.js","sourceRoot":"","sources":["../../portConfig.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AACzC,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAErC;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;IACrD,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;IACpC,CAAC;IACD,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,EAAE,uBAAuB,CAAC,CAAC;IAC7D,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;IACpC,CAAC;IACD,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;IACrD,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,oBAAoB,kBAAkB,EAAE,EAAE,CAAC;AACpD,CAAC"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Cross-page user preferences.
3
+ *
4
+ * Each entry below is a single localStorage key (under the
5
+ * `agent-health:` prefix) shared by every page that exposes the
6
+ * corresponding control, so e.g. picking "30d" on the Eval Runs page is
7
+ * also reflected on Benchmarks and Test Cases.
8
+ *
9
+ * Storage layout is intentionally a flat, JSON-serialisable key/value
10
+ * map: each preference is its own localStorage entry. That keeps the
11
+ * format portable so prefs can be exported, copied across environments,
12
+ * or backed up to a server store later without rewriting call sites.
13
+ *
14
+ * Helpers `getPreferencesSnapshot()` / `applyPreferencesSnapshot()`
15
+ * below give a single-call dump and restore for that bundle, which is
16
+ * the natural shape to send over the network.
17
+ */
18
+ /** Stable, user-facing namespace for all cross-page preferences. */
19
+ export declare const PREFS_KEYS: {
20
+ /** Run-config: agent the user wants to RUN (QuickRunModal, NewRunPage). */
21
+ readonly agentKey: "prefs:agentKey";
22
+ /** Run-config: model the user wants to RUN (QuickRunModal, NewRunPage). */
23
+ readonly modelId: "prefs:modelId";
24
+ /** Time-range filter, shared by evaluation list pages and Agent Traces. */
25
+ readonly timeRange: "prefs:timeRange";
26
+ /** Agent filter dropdown shared by Benchmarks and Eval Runs. Defaults to `'all'`. */
27
+ readonly agentFilter: "prefs:agentFilter";
28
+ /** Benchmark filter dropdown shared by Test Cases (and any future page). */
29
+ readonly benchmarkFilter: "prefs:benchmarkFilter";
30
+ /** Flat / grouped view mode shared by list pages. */
31
+ readonly viewMode: "prefs:viewMode";
32
+ };
33
+ /** Possible string values for {@link PREFS_KEYS.timeRange}. */
34
+ export type SharedTimeRange = '1h' | '6h' | '1d' | '7d' | '30d' | 'all';
35
+ /**
36
+ * Convert a {@link SharedTimeRange} to a "minutes ago" cutoff suitable
37
+ * for the AgentTraces query. `'all'` is mapped to a very large window
38
+ * (90d) so that there's always *some* finite cutoff sent to the server.
39
+ */
40
+ export declare function sharedTimeRangeToMinutes(range: SharedTimeRange): number;
41
+ /**
42
+ * Return a portable snapshot of every cross-page preference currently
43
+ * stored in localStorage. Keys are the unprefixed identifiers (e.g.
44
+ * `'prefs:timeRange'`) and values are already JSON-decoded.
45
+ *
46
+ * Use this to copy a user's preferences to clipboard, persist them
47
+ * server-side, or assert against them in tests.
48
+ */
49
+ export declare function getPreferencesSnapshot(): Record<string, unknown>;
50
+ /**
51
+ * Apply a snapshot produced by {@link getPreferencesSnapshot}.
52
+ * Unknown keys are ignored so the snapshot format stays forward-
53
+ * compatible with future preferences. Pass an empty object to clear
54
+ * every preference (sets nothing — call {@link clearPreferences} for
55
+ * an explicit reset).
56
+ */
57
+ export declare function applyPreferencesSnapshot(snapshot: Record<string, unknown>): void;
58
+ /**
59
+ * Remove every preference from localStorage. Useful for "Reset
60
+ * preferences" buttons and tests.
61
+ */
62
+ export declare function clearPreferences(): void;
63
+ //# sourceMappingURL=preferences.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preferences.d.ts","sourceRoot":"","sources":["../../preferences.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;GAgBG;AAEH,oEAAoE;AACpE,eAAO,MAAM,UAAU;IACrB,2EAA2E;;IAE3E,2EAA2E;;IAE3E,2EAA2E;;IAE3E,qFAAqF;;IAErF,4EAA4E;;IAE5E,qDAAqD;;CAE7C,CAAC;AAEX,+DAA+D;AAC/D,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;AAExE;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CASvE;AAID;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAchE;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAWhF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CASvC"}
@@ -0,0 +1,117 @@
1
+ /*
2
+ * Copyright OpenSearch Contributors
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ /**
6
+ * Cross-page user preferences.
7
+ *
8
+ * Each entry below is a single localStorage key (under the
9
+ * `agent-health:` prefix) shared by every page that exposes the
10
+ * corresponding control, so e.g. picking "30d" on the Eval Runs page is
11
+ * also reflected on Benchmarks and Test Cases.
12
+ *
13
+ * Storage layout is intentionally a flat, JSON-serialisable key/value
14
+ * map: each preference is its own localStorage entry. That keeps the
15
+ * format portable so prefs can be exported, copied across environments,
16
+ * or backed up to a server store later without rewriting call sites.
17
+ *
18
+ * Helpers `getPreferencesSnapshot()` / `applyPreferencesSnapshot()`
19
+ * below give a single-call dump and restore for that bundle, which is
20
+ * the natural shape to send over the network.
21
+ */
22
+ /** Stable, user-facing namespace for all cross-page preferences. */
23
+ export const PREFS_KEYS = {
24
+ /** Run-config: agent the user wants to RUN (QuickRunModal, NewRunPage). */
25
+ agentKey: 'prefs:agentKey',
26
+ /** Run-config: model the user wants to RUN (QuickRunModal, NewRunPage). */
27
+ modelId: 'prefs:modelId',
28
+ /** Time-range filter, shared by evaluation list pages and Agent Traces. */
29
+ timeRange: 'prefs:timeRange',
30
+ /** Agent filter dropdown shared by Benchmarks and Eval Runs. Defaults to `'all'`. */
31
+ agentFilter: 'prefs:agentFilter',
32
+ /** Benchmark filter dropdown shared by Test Cases (and any future page). */
33
+ benchmarkFilter: 'prefs:benchmarkFilter',
34
+ /** Flat / grouped view mode shared by list pages. */
35
+ viewMode: 'prefs:viewMode',
36
+ };
37
+ /**
38
+ * Convert a {@link SharedTimeRange} to a "minutes ago" cutoff suitable
39
+ * for the AgentTraces query. `'all'` is mapped to a very large window
40
+ * (90d) so that there's always *some* finite cutoff sent to the server.
41
+ */
42
+ export function sharedTimeRangeToMinutes(range) {
43
+ switch (range) {
44
+ case '1h': return 60;
45
+ case '6h': return 360;
46
+ case '1d': return 1440;
47
+ case '7d': return 10080;
48
+ case '30d': return 43200;
49
+ case 'all': return 60 * 24 * 90; // 90 days as a practical "all"
50
+ }
51
+ }
52
+ const STORAGE_PREFIX = 'agent-health:';
53
+ /**
54
+ * Return a portable snapshot of every cross-page preference currently
55
+ * stored in localStorage. Keys are the unprefixed identifiers (e.g.
56
+ * `'prefs:timeRange'`) and values are already JSON-decoded.
57
+ *
58
+ * Use this to copy a user's preferences to clipboard, persist them
59
+ * server-side, or assert against them in tests.
60
+ */
61
+ export function getPreferencesSnapshot() {
62
+ if (typeof window === 'undefined')
63
+ return {};
64
+ const out = {};
65
+ for (const key of Object.values(PREFS_KEYS)) {
66
+ try {
67
+ const raw = localStorage.getItem(STORAGE_PREFIX + key);
68
+ if (raw === null)
69
+ continue;
70
+ out[key] = JSON.parse(raw);
71
+ }
72
+ catch {
73
+ // Skip entries we can't decode; the caller will treat them as
74
+ // missing and the corresponding page will fall back to its default.
75
+ }
76
+ }
77
+ return out;
78
+ }
79
+ /**
80
+ * Apply a snapshot produced by {@link getPreferencesSnapshot}.
81
+ * Unknown keys are ignored so the snapshot format stays forward-
82
+ * compatible with future preferences. Pass an empty object to clear
83
+ * every preference (sets nothing — call {@link clearPreferences} for
84
+ * an explicit reset).
85
+ */
86
+ export function applyPreferencesSnapshot(snapshot) {
87
+ if (typeof window === 'undefined')
88
+ return;
89
+ const known = new Set(Object.values(PREFS_KEYS));
90
+ for (const [key, value] of Object.entries(snapshot)) {
91
+ if (!known.has(key))
92
+ continue;
93
+ try {
94
+ localStorage.setItem(STORAGE_PREFIX + key, JSON.stringify(value));
95
+ }
96
+ catch {
97
+ // Quota / storage disabled — ignore.
98
+ }
99
+ }
100
+ }
101
+ /**
102
+ * Remove every preference from localStorage. Useful for "Reset
103
+ * preferences" buttons and tests.
104
+ */
105
+ export function clearPreferences() {
106
+ if (typeof window === 'undefined')
107
+ return;
108
+ for (const key of Object.values(PREFS_KEYS)) {
109
+ try {
110
+ localStorage.removeItem(STORAGE_PREFIX + key);
111
+ }
112
+ catch {
113
+ // ignore
114
+ }
115
+ }
116
+ }
117
+ //# sourceMappingURL=preferences.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preferences.js","sourceRoot":"","sources":["../../preferences.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;GAgBG;AAEH,oEAAoE;AACpE,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,2EAA2E;IAC3E,QAAQ,EAAE,gBAAgB;IAC1B,2EAA2E;IAC3E,OAAO,EAAE,eAAe;IACxB,2EAA2E;IAC3E,SAAS,EAAE,iBAAiB;IAC5B,qFAAqF;IACrF,WAAW,EAAE,mBAAmB;IAChC,4EAA4E;IAC5E,eAAe,EAAE,uBAAuB;IACxC,qDAAqD;IACrD,QAAQ,EAAE,gBAAgB;CAClB,CAAC;AAKX;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAsB;IAC7D,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;QACrB,KAAK,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC;QACtB,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC;QACvB,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC;QACxB,KAAK,KAAK,CAAC,CAAC,OAAO,KAAK,CAAC;QACzB,KAAK,KAAK,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,+BAA+B;IAClE,CAAC;AACH,CAAC;AAED,MAAM,cAAc,GAAG,eAAe,CAAC;AAEvC;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB;IACpC,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,EAAE,CAAC;IAC7C,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,cAAc,GAAG,GAAG,CAAC,CAAC;YACvD,IAAI,GAAG,KAAK,IAAI;gBAAE,SAAS;YAC3B,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,8DAA8D;YAC9D,oEAAoE;QACtE,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CAAC,QAAiC;IACxE,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO;IAC1C,MAAM,KAAK,GAAG,IAAI,GAAG,CAAS,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IACzD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAC9B,IAAI,CAAC;YACH,YAAY,CAAC,OAAO,CAAC,cAAc,GAAG,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QACpE,CAAC;QAAC,MAAM,CAAC;YACP,qCAAqC;QACvC,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO;IAC1C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC;YACH,YAAY,CAAC,UAAU,CAAC,cAAc,GAAG,GAAG,CAAC,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { AgentConfig } from '../types/index.js';
2
+ /**
3
+ * Resolve the LLM an agent runs on.
4
+ *
5
+ * The agent's model is owned by the agent's OWN config (`agent-health.config.ts`),
6
+ * NOT a user-facing "agent model" selector. There is intentionally no run-level
7
+ * or UI/CLI way to override it — picking a model separately from the agent is a
8
+ * leaky abstraction (subprocess agents like Claude Code / pi ignore it and run
9
+ * on whatever their connector is configured with). Claude-like agents that DO
10
+ * accept a model take it via their connector config.
11
+ *
12
+ * Resolution order (all from the agent's `connectorConfig`):
13
+ * 1. `connectorConfig.model` — pi / streaming / openai-compatible
14
+ * 2. `connectorConfig.env.ANTHROPIC_MODEL` — claude-code
15
+ * 3. `connectorConfig.args` `--model <id>` — any subprocess agent passing a flag
16
+ *
17
+ * `fallback` exists only for backward compatibility with runs/agents created
18
+ * before the agent-model concept was removed (where the run carried a
19
+ * user-selected `modelId`). New code should not rely on it.
20
+ */
21
+ export declare function resolveAgentModel(agent: AgentConfig | undefined | null, fallback?: string): string;
22
+ //# sourceMappingURL=resolveAgentModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveAgentModel.d.ts","sourceRoot":"","sources":["../../resolveAgentModel.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,EACrC,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,CAWR"}