@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,99 @@
1
+ /*
2
+ * Copyright OpenSearch Contributors
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import { spansToTrajectory, scanSessionSignals } from '../../services/traces/spansToTrajectory.js';
6
+ /**
7
+ * Profile a session from its spans — deterministic, reuses #267 primitives.
8
+ * Pass `spans` directly (unit-testable) or resolve them via a seam upstream.
9
+ */
10
+ export function profileSpans(sessionId, spans, opts = {}) {
11
+ const trajectory = spansToTrajectory(spans, opts.serviceName);
12
+ const signals = scanSessionSignals(spans, opts.serviceName);
13
+ const traceIds = [...new Set(spans.map((s) => s.traceId).filter(Boolean))];
14
+ return {
15
+ sessionId,
16
+ serviceName: opts.serviceName,
17
+ trajectory,
18
+ signals,
19
+ evaluator: opts.evaluator,
20
+ traceIds,
21
+ };
22
+ }
23
+ /**
24
+ * Build the reasoner prompt from profiles + the cumulative ledger. Pure, so the
25
+ * exact instruction surface is unit-testable and reviewable.
26
+ */
27
+ export function buildAgentEditsPrompt(profiles, opts = {}) {
28
+ const rubric = profiles.find((p) => p.evaluator?.systemPrompt)?.evaluator?.systemPrompt;
29
+ const ledger = opts.ledger?.render();
30
+ const signalLines = profiles.flatMap((p) => p.signals.map((s) => ` - [${s.severity}] ${p.sessionId}: ${s.title}`));
31
+ return [
32
+ `You are improving the agent in its OWN repo${opts.repo ? ` (${opts.repo})` : ''}.`,
33
+ '',
34
+ rubric ? `## Rubric (evaluator)\n${rubric}` : '',
35
+ '',
36
+ ledger ? `${ledger}\n(Weight this human feedback ABOVE the signals.)` : '',
37
+ '',
38
+ '## Deterministic signals observed across the profiled sessions',
39
+ signalLines.length ? signalLines.join('\n') : ' (none)',
40
+ '',
41
+ '## Task',
42
+ 'Propose concrete, minimal, generalizable edits. Return ONLY a JSON array:',
43
+ '[{ "file": "...", "change": "...", "why": "<tie to a signal/rubric/feedback + cite session ids>", "priority": "high|medium|low", "evidence": ["sessionId/traceId"] }]',
44
+ ]
45
+ .filter((l) => l !== '')
46
+ .join('\n');
47
+ }
48
+ /** Default reasoner: spawn `claude -p <prompt>` and return stdout. */
49
+ export const defaultReason = async (prompt) => {
50
+ const { spawn } = await import('child_process');
51
+ return await new Promise((resolve, reject) => {
52
+ const child = spawn('claude', ['-p', prompt, '--model', 'sonnet'], { stdio: ['ignore', 'pipe', 'pipe'] });
53
+ let out = '';
54
+ let err = '';
55
+ child.stdout.on('data', (d) => (out += d.toString()));
56
+ child.stderr.on('data', (d) => (err += d.toString()));
57
+ child.on('error', reject);
58
+ child.on('close', (code) => (code === 0 ? resolve(out) : reject(new Error(`claude exited ${code}: ${err}`))));
59
+ });
60
+ };
61
+ /** Parse the reasoner output into AgentEdits (tolerant of fenced JSON). */
62
+ export function parseAgentEdits(raw) {
63
+ const fenced = raw.match(/```(?:json)?\s*([\s\S]*?)```/);
64
+ const body = fenced ? fenced[1] : raw;
65
+ const start = body.indexOf('[');
66
+ const end = body.lastIndexOf(']');
67
+ if (start === -1 || end === -1 || end < start)
68
+ return [];
69
+ try {
70
+ const arr = JSON.parse(body.slice(start, end + 1));
71
+ if (!Array.isArray(arr))
72
+ return [];
73
+ return arr
74
+ .filter((e) => e && typeof e.file === 'string' && typeof e.change === 'string')
75
+ .map((e) => ({
76
+ file: e.file,
77
+ change: e.change,
78
+ why: e.why ?? '',
79
+ priority: ((p) => (p === 'high' || p === 'low' ? p : 'medium'))(String(e.priority ?? '').toLowerCase()),
80
+ evidence: Array.isArray(e.evidence) ? e.evidence : undefined,
81
+ }));
82
+ }
83
+ catch {
84
+ return [];
85
+ }
86
+ }
87
+ /**
88
+ * Derive concrete agent-repo edits from session profiles + the cumulative
89
+ * ledger. `reason` is injectable (defaults to `claude -p`).
90
+ */
91
+ export async function deriveAgentEdits(profiles, opts = {}) {
92
+ if (profiles.length === 0)
93
+ return [];
94
+ const prompt = buildAgentEditsPrompt(profiles, { repo: opts.repo, ledger: opts.ledger });
95
+ const reason = opts.reason ?? defaultReason;
96
+ const raw = await reason(prompt);
97
+ return parseAgentEdits(raw);
98
+ }
99
+ //# sourceMappingURL=stepB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stepB.js","sourceRoot":"","sources":["../../../workflow/stepB.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Workflow SDK — shared types.
3
+ *
4
+ * A workflow is a deterministic series of steps with two stochastic nodes
5
+ * (the agent calls). Sources, the feedback ledger, staging and consolidation
6
+ * are all deterministic plumbing around those calls. See lib/workflow/workflow.ts.
7
+ */
8
+ import type { TrajectoryStep } from '../../types/index.js';
9
+ import type { FeedbackLedger } from './ledger.js';
10
+ /** A unit of work. Duck-typed — a source returns plain objects of this shape. */
11
+ export interface WorkItem {
12
+ /** Stable dedup key (ticket id, page id, email msg-id). */
13
+ id: string;
14
+ /** What the agent receives (a ticket URL or body). */
15
+ prompt: string;
16
+ /** Free-form provenance the sink can use (cti, severity, raw payload). */
17
+ meta?: Record<string, unknown>;
18
+ }
19
+ /** A source is just an async function returning WorkItems — no interface to implement. */
20
+ export type SourceFetchFn = (args: {
21
+ since?: string;
22
+ }) => Promise<WorkItem[]> | WorkItem[];
23
+ export interface SourceHandle {
24
+ readonly name: string;
25
+ readonly fetch: SourceFetchFn;
26
+ }
27
+ /** Result of one agent invocation against one WorkItem. */
28
+ export interface AgentRunResult {
29
+ item: WorkItem;
30
+ trajectory: TrajectoryStep[];
31
+ output: string;
32
+ runId: string | null;
33
+ /** Clustering key for consolidation (derived from cti / diagnosis). */
34
+ signature: string;
35
+ /**
36
+ * Run-correlation ids (currently the agent `runId` == OTel `gen_ai.request.id`),
37
+ * used to look up this run's spans in the Traces UI / as PR evidence — these are
38
+ * correlation handles, not raw OTel trace ids.
39
+ */
40
+ traceIds: string[];
41
+ }
42
+ export interface StagedItem {
43
+ item: WorkItem;
44
+ run: AgentRunResult;
45
+ signature: string;
46
+ }
47
+ /** A group of similar staged fixes → one consolidated PR. */
48
+ export interface Cluster {
49
+ label: string;
50
+ signature: string;
51
+ items: StagedItem[];
52
+ tickets: WorkItem[];
53
+ traceIds: string[];
54
+ /** Placeholder fix artifact — the real derivation is a downstream node. */
55
+ fix: {
56
+ summary: string;
57
+ };
58
+ }
59
+ export type WritesMode = 'shadow' | 'live';
60
+ export interface RunAgentOptions {
61
+ /** Cumulative feedback injected into the agent's context this run. */
62
+ feedback?: FeedbackLedger;
63
+ /**
64
+ * 'shadow' (default): [READ] real, [WRITE] proposed-only. Instructs the agent not
65
+ * to mutate; actual enforcement is connector- and human-gated (PRs are merged by a
66
+ * human) — not guaranteed by this option alone.
67
+ */
68
+ writes?: WritesMode;
69
+ }
70
+ export interface WorkflowConfig {
71
+ /** Agent key resolved from agent-health config (connector). */
72
+ agent: string;
73
+ /** Max agent calls in flight (cost + blast-radius cap). Default 1. */
74
+ concurrency?: number;
75
+ /** Evaluator id used as the profiling rubric in Step B. */
76
+ evaluator?: string;
77
+ /** The agent's own repo (for improvement PRs). */
78
+ repo?: string;
79
+ }
80
+ export interface PRRequest {
81
+ title: string;
82
+ body?: string;
83
+ repo?: string;
84
+ evidence?: string[];
85
+ }
86
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../workflow/types.ts"],"names":[],"mappings":"AAKA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,iFAAiF;AACjF,MAAM,WAAW,QAAQ;IACvB,2DAA2D;IAC3D,EAAE,EAAE,MAAM,CAAC;IACX,sDAAsD;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,0FAA0F;AAC1F,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC;AAE3F,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;CAC/B;AAED,2DAA2D;AAC3D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,uEAAuE;IACvE,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,EAAE,cAAc,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,6DAA6D;AAC7D,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,2EAA2E;IAC3E,GAAG,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1B;AAED,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE3C,MAAM,WAAW,eAAe;IAC9B,sEAAsE;IACtE,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B;;;;OAIG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,+DAA+D;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB"}
@@ -0,0 +1,6 @@
1
+ /*
2
+ * Copyright OpenSearch Contributors
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../workflow/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * workflow() — a deterministic series of steps with stochastic agent nodes.
3
+ *
4
+ * The shell (steps, concurrency fan-out, ledger, staging, consolidation) is
5
+ * deterministic; the only non-deterministic nodes are the agent calls
6
+ * (`runAgent`, and the Step-B `deriveAgentEdits`). This mirrors durable
7
+ * workflow engines: deterministic control flow, stochastic activities.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * export default workflow('oncall-queue-and-improve', { agent: 'aos-oncall', concurrency: 4 })
12
+ * .step('fix-the-queue', async (wf) => {
13
+ * await wf.forEach(queue, { since: '24h' }, async (ticket) => {
14
+ * const run = await wf.runAgent(ticket, { feedback: wf.ledger(), writes: 'shadow' });
15
+ * wf.stage({ item: ticket, run });
16
+ * });
17
+ * })
18
+ * .step('consolidate-and-pr', async (wf) => {
19
+ * for (const c of await wf.consolidate(wf.staged()))
20
+ * await wf.raisePR(c.fix, { title: `fix: ${c.label}`, body: wf.ledger().render() });
21
+ * });
22
+ * ```
23
+ */
24
+ import type { AgentRunResult, Cluster, PRRequest, RunAgentOptions, SourceHandle, StagedItem, WorkItem, WorkflowConfig } from './types.js';
25
+ import { FeedbackLedger } from './ledger.js';
26
+ import { type SessionProfile, type AgentEdit, type ReasonFn } from './stepB.js';
27
+ import type { Span } from '../../types/index.js';
28
+ /** Seams the runner/CLI/tests can inject (agent invocation, PR raising, steering). */
29
+ export interface WorkflowRunOptions {
30
+ since?: string;
31
+ /** Overrides config.concurrency for this run. */
32
+ concurrency?: number;
33
+ /** Cap total items processed (e.g. `--limit 5` for a smoke loop). */
34
+ limit?: number;
35
+ mode?: 'new' | 'existing' | 'both';
36
+ /** Don't raise PRs — log what would be raised. Default true for safety. */
37
+ dryRun?: boolean;
38
+ /** Replace the agent invocation (tests / headless). Defaults to connector resolution. */
39
+ invoke?: (item: WorkItem, opts: RunAgentOptions) => Promise<AgentRunResult>;
40
+ /** Replace PR raising (tests / GitHub wiring). Defaults to a dry-run log. */
41
+ onPR?: (pr: PRRequest, artifact: unknown) => Promise<void>;
42
+ /** Per-item human steering — return text to append to the ledger. */
43
+ steer?: (run: AgentRunResult) => Promise<string | void> | string | void;
44
+ /** Resolve guided sessions to profile. Default: warns + []. */
45
+ fetchGuidedSessions?: (opts: {
46
+ since?: string;
47
+ }) => Promise<Array<{
48
+ sessionId: string;
49
+ spans: Span[];
50
+ serviceName?: string;
51
+ evaluator?: {
52
+ id: string;
53
+ systemPrompt?: string;
54
+ };
55
+ }>>;
56
+ /** Fetch a session's spans by id (when profile() is called with just a sessionId). */
57
+ fetchSpans?: (sessionId: string) => Promise<Span[]>;
58
+ /** Reasoner for deriveAgentEdits. Default: `claude -p`. */
59
+ reason?: ReasonFn;
60
+ }
61
+ export interface ForEachOptions {
62
+ since?: string;
63
+ concurrency?: number;
64
+ limit?: number;
65
+ }
66
+ export interface WorkflowContext {
67
+ readonly config: WorkflowConfig;
68
+ /** The run's cumulative feedback ledger (stable across steps). */
69
+ ledger(): FeedbackLedger;
70
+ /** Fan out over a source at bounded concurrency, invoking `handler` per item. */
71
+ forEach(handle: SourceHandle, opts: ForEachOptions, handler: (item: WorkItem) => Promise<void>): Promise<void>;
72
+ /** Invoke the agent once for a work item. */
73
+ runAgent(item: WorkItem, opts?: RunAgentOptions): Promise<AgentRunResult>;
74
+ /** Stash a candidate fix without raising a PR. */
75
+ stage(s: {
76
+ item: WorkItem;
77
+ run: AgentRunResult;
78
+ signature?: string;
79
+ }): void;
80
+ staged(): StagedItem[];
81
+ /** Cluster staged fixes → one per fix-class. */
82
+ consolidate(staged: StagedItem[]): Promise<Cluster[]>;
83
+ /** Raise (or, in dry-run, log) a PR. */
84
+ raisePR(artifact: unknown, pr: PRRequest): Promise<void>;
85
+ guidedSessions(opts?: {
86
+ since?: string;
87
+ }): Promise<SessionProfile[]>;
88
+ profile(session: {
89
+ sessionId: string;
90
+ spans?: Span[];
91
+ serviceName?: string;
92
+ evaluator?: {
93
+ id: string;
94
+ systemPrompt?: string;
95
+ };
96
+ }): Promise<SessionProfile>;
97
+ deriveAgentEdits(profiles: SessionProfile[], opts?: {
98
+ repo?: string;
99
+ ledger?: FeedbackLedger;
100
+ }): Promise<AgentEdit[]>;
101
+ }
102
+ export interface WorkflowResult {
103
+ name: string;
104
+ staged: StagedItem[];
105
+ clusters: Cluster[];
106
+ ledgerSize: number;
107
+ prsRaised: number;
108
+ peakConcurrency: number;
109
+ }
110
+ type StepFn = (wf: WorkflowContext) => Promise<void> | void;
111
+ export interface Workflow {
112
+ readonly name: string;
113
+ readonly config: WorkflowConfig;
114
+ step(name: string, fn: StepFn): Workflow;
115
+ run(opts?: WorkflowRunOptions): Promise<WorkflowResult>;
116
+ }
117
+ export declare function workflow(name: string, config: WorkflowConfig): Workflow;
118
+ export {};
119
+ //# sourceMappingURL=workflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../../workflow/workflow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,195 @@
1
+ /*
2
+ * Copyright OpenSearch Contributors
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import { FeedbackLedger } from './ledger.js';
6
+ import { mapPool } from './pool.js';
7
+ import { consolidate as consolidateFn } from './consolidate.js';
8
+ import { profileSpans, deriveAgentEdits as deriveAgentEditsFn, } from './stepB.js';
9
+ /** Derive a clustering signature for a run (cti → diagnosis line → unknown). */
10
+ function deriveSignature(item, output) {
11
+ const cti = item.meta?.['cti'];
12
+ if (typeof cti === 'string' && cti.trim())
13
+ return cti.trim();
14
+ const firstLine = (output || '').split('\n').map((l) => l.trim()).find(Boolean);
15
+ return firstLine ? firstLine.slice(0, 80) : 'unknown';
16
+ }
17
+ /** Default agent invocation: resolve the connector from config and execute. */
18
+ async function connectorInvoke(config, item, opts) {
19
+ const [{ loadConfig }, { getConnectorForAgent }] = await Promise.all([
20
+ import('../../lib/config/index.js'),
21
+ import('../../services/connectors/registry.js'),
22
+ ]);
23
+ // Importing the connectors barrel auto-registers the browser-safe connectors
24
+ // (agui, mock, rest, ...). server.js adds the server-only ones (claude-code,
25
+ // subprocess, strands). Both are needed depending on the agent's connector.
26
+ await import('../../services/connectors/index.js');
27
+ try {
28
+ await import('../../services/connectors/server.js');
29
+ }
30
+ catch {
31
+ /* server-only connectors unavailable in this context — browser-safe still work */
32
+ }
33
+ const resolved = await loadConfig();
34
+ const agent = resolved.agents.find((a) => a.key === config.agent || a.name.toLowerCase() === config.agent.toLowerCase());
35
+ if (!agent) {
36
+ throw new Error(`workflow agent '${config.agent}' not found in config. ` +
37
+ `Define it in agent-health.config.ts (connectorType: 'claude-code' for aos-oncall).`);
38
+ }
39
+ // Inject cumulative feedback as context the agent reads this run.
40
+ const feedbackText = opts.feedback?.render();
41
+ const context = feedbackText
42
+ ? [{ description: 'Cumulative oncall feedback', value: feedbackText }]
43
+ : [];
44
+ const connector = getConnectorForAgent(agent);
45
+ const testCase = {
46
+ id: item.id,
47
+ name: item.id,
48
+ description: '',
49
+ initialPrompt: item.prompt,
50
+ context,
51
+ };
52
+ const modelId = Object.keys(resolved.models)[0] || 'claude-sonnet';
53
+ const response = await connector.execute(agent.endpoint, { testCase, modelId, connectorConfig: agent.connectorConfig }, { type: 'none' });
54
+ const output = response.trajectory
55
+ .filter((s) => s.type === 'response' || s.type === 'assistant')
56
+ .map((s) => s.content || '')
57
+ .join('\n')
58
+ .trim();
59
+ return {
60
+ item,
61
+ trajectory: response.trajectory,
62
+ output,
63
+ runId: response.runId,
64
+ signature: deriveSignature(item, output),
65
+ traceIds: response.runId ? [response.runId] : [],
66
+ };
67
+ }
68
+ export function workflow(name, config) {
69
+ const steps = [];
70
+ const wf = {
71
+ name,
72
+ config,
73
+ step(stepName, fn) {
74
+ steps.push({ name: stepName, fn });
75
+ return wf;
76
+ },
77
+ async run(runOpts = {}) {
78
+ const ledger = new FeedbackLedger();
79
+ const stagedItems = [];
80
+ let clusters = [];
81
+ let prsRaised = 0;
82
+ const stats = { peakConcurrency: 0 };
83
+ const dryRun = runOpts.dryRun ?? true;
84
+ const invoke = runOpts.invoke ?? ((item, o) => connectorInvoke(config, item, o));
85
+ const ctx = {
86
+ config,
87
+ ledger: () => ledger,
88
+ async forEach(handle, opts, handler) {
89
+ const since = opts.since ?? runOpts.since;
90
+ const all = await handle.fetch({ since });
91
+ // Dedup on id, then cap with limit (CLI --limit / opts.limit).
92
+ const seen = new Set();
93
+ const deduped = all.filter((i) => {
94
+ if (seen.has(i.id))
95
+ return false;
96
+ seen.add(i.id);
97
+ return true;
98
+ });
99
+ const limit = opts.limit ?? runOpts.limit;
100
+ // Only slice for a finite, non-negative limit; ignore NaN / negative
101
+ // (a bad --limit) rather than silently processing 0 or odd slices.
102
+ const items = typeof limit === 'number' && Number.isFinite(limit) && limit >= 0
103
+ ? deduped.slice(0, limit)
104
+ : deduped;
105
+ const concurrency = opts.concurrency ?? runOpts.concurrency ?? config.concurrency ?? 1;
106
+ await mapPool(items, concurrency, (item) => handler(item), stats);
107
+ },
108
+ runAgent(item, opts = {}) {
109
+ return invoke(item, { writes: 'shadow', ...opts });
110
+ },
111
+ stage(s) {
112
+ const signature = s.signature ?? s.run.signature;
113
+ stagedItems.push({ item: s.item, run: s.run, signature });
114
+ },
115
+ staged: () => stagedItems,
116
+ async consolidate(staged) {
117
+ clusters = await consolidateFn(staged);
118
+ return clusters;
119
+ },
120
+ async raisePR(artifact, pr) {
121
+ prsRaised++;
122
+ if (runOpts.onPR) {
123
+ await runOpts.onPR(pr, artifact);
124
+ return;
125
+ }
126
+ if (dryRun) {
127
+ // eslint-disable-next-line no-console
128
+ console.log(`[workflow:${name}] (dry-run) would raise PR: ${pr.title}` +
129
+ (pr.repo ? ` → ${pr.repo}` : ''));
130
+ return;
131
+ }
132
+ throw new Error('raisePR: no onPR handler and dryRun=false. Wire a GitHub PR ' +
133
+ 'handler via run({ onPR }) or run with --dry-run.');
134
+ },
135
+ // ── Step B — wired onto the #267 profile primitives ──
136
+ async guidedSessions(opts = {}) {
137
+ if (!runOpts.fetchGuidedSessions) {
138
+ console.warn(`[workflow:${name}] guidedSessions(): no fetchGuidedSessions seam provided — ` +
139
+ 'returning []. Wire run({ fetchGuidedSessions }) or pass profiles directly.');
140
+ return [];
141
+ }
142
+ const sessions = await runOpts.fetchGuidedSessions({ since: opts.since ?? runOpts.since });
143
+ return sessions.map((s) => profileSpans(s.sessionId, s.spans, { serviceName: s.serviceName, evaluator: s.evaluator }));
144
+ },
145
+ async profile(session) {
146
+ let spans = session.spans;
147
+ if (!spans) {
148
+ if (!runOpts.fetchSpans) {
149
+ throw new Error('wf.profile(): session has no spans and no fetchSpans seam was provided. ' +
150
+ 'Pass { spans } or run({ fetchSpans }).');
151
+ }
152
+ spans = await runOpts.fetchSpans(session.sessionId);
153
+ }
154
+ return profileSpans(session.sessionId, spans, {
155
+ serviceName: session.serviceName,
156
+ evaluator: session.evaluator,
157
+ });
158
+ },
159
+ async deriveAgentEdits(profiles, opts = {}) {
160
+ return deriveAgentEditsFn(profiles, {
161
+ repo: opts.repo ?? config.repo,
162
+ ledger: opts.ledger ?? ledger,
163
+ reason: runOpts.reason,
164
+ });
165
+ },
166
+ };
167
+ // Expose steer so a step's handler can append per-item feedback.
168
+ // (Steps call ctx.runAgent then optionally ctx.ledger().append(...).)
169
+ if (runOpts.steer) {
170
+ const baseRunAgent = ctx.runAgent.bind(ctx);
171
+ ctx.runAgent = async (item, opts) => {
172
+ const run = await baseRunAgent(item, opts);
173
+ const fb = await runOpts.steer(run);
174
+ if (typeof fb === 'string' && fb.trim()) {
175
+ ledger.append(fb, { ticketId: item.id });
176
+ }
177
+ return run;
178
+ };
179
+ }
180
+ for (const s of steps) {
181
+ await s.fn(ctx);
182
+ }
183
+ return {
184
+ name,
185
+ staged: stagedItems,
186
+ clusters,
187
+ ledgerSize: ledger.size,
188
+ prsRaised,
189
+ peakConcurrency: stats.peakConcurrency,
190
+ };
191
+ },
192
+ };
193
+ return wf;
194
+ }
195
+ //# sourceMappingURL=workflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../../workflow/workflow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import { TrajectoryStep } from '../../types/index.js';
2
+ import { AGUIEvent } from '../../types/agui.js';
3
+ export declare class AGUIToTrajectoryConverter {
4
+ private currentTextMessage;
5
+ private activeTools;
6
+ private hasEmittedAction;
7
+ private runFinished;
8
+ private pendingTextIsResponse;
9
+ private runId;
10
+ private threadId;
11
+ private isThinking;
12
+ private currentThinkingMessage;
13
+ /**
14
+ * Process a single AG UI event and convert it to TrajectoryStep(s)
15
+ * Returns an array of steps (usually 0 or 1, sometimes more)
16
+ */
17
+ processEvent(event: AGUIEvent): TrajectoryStep[];
18
+ private handleRunStarted;
19
+ getRunId(): string | null;
20
+ getThreadId(): string | null;
21
+ private handleRunFinished;
22
+ private handleRunError;
23
+ private handleTextMessageStart;
24
+ private handleTextMessageContent;
25
+ private handleTextMessageEnd;
26
+ private handleActivitySnapshot;
27
+ private handleActivityDelta;
28
+ private handleToolCallStart;
29
+ private handleToolCallArgs;
30
+ /**
31
+ * Handle TOOL_CALL_END - emits the action step with complete args
32
+ * This is called when the agent is done sending tool call arguments
33
+ * and expects the client to execute the tool
34
+ */
35
+ private handleToolCallEnd;
36
+ private handleToolCallResult;
37
+ private handleThinkingStart;
38
+ private handleThinkingEnd;
39
+ private handleThinkingTextMessageStart;
40
+ private handleThinkingTextMessageContent;
41
+ private handleThinkingTextMessageEnd;
42
+ private extractToolName;
43
+ private parseToolArgs;
44
+ }
45
+ /**
46
+ * Compute trajectory from raw AG-UI events
47
+ * Use this to derive trajectory on-demand instead of storing both
48
+ */
49
+ export declare function computeTrajectoryFromRawEvents(rawEvents: AGUIEvent[]): TrajectoryStep[];
50
+ //# sourceMappingURL=aguiConverter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aguiConverter.d.ts","sourceRoot":"","sources":["../../../../services/agent/aguiConverter.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,cAAc,EAAkB,MAAM,SAAS,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAiB,MAAM,cAAc,CAAC;AAoCxD,qBAAa,yBAAyB;IACpC,OAAO,CAAC,kBAAkB,CAAiC;IAC3D,OAAO,CAAC,WAAW,CAAqC;IACxD,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,QAAQ,CAAuB;IAGvC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,sBAAsB,CAAqC;IAEnE;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,cAAc,EAAE;IAuFhD,OAAO,CAAC,gBAAgB;IAgBxB,QAAQ,IAAI,MAAM,GAAG,IAAI;IAIzB,WAAW,IAAI,MAAM,GAAG,IAAI;IAI5B,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,wBAAwB;IAOhC,OAAO,CAAC,oBAAoB;IAuC5B,OAAO,CAAC,sBAAsB;IA4B9B,OAAO,CAAC,mBAAmB;IA0B3B,OAAO,CAAC,mBAAmB;IAqB3B,OAAO,CAAC,kBAAkB;IAW1B;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAyCzB,OAAO,CAAC,oBAAoB;IA8D5B,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,8BAA8B;IAStC,OAAO,CAAC,gCAAgC;IAOxC,OAAO,CAAC,4BAA4B;IA4BpC,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,aAAa;CA8BtB;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,cAAc,EAAE,CAgBvF"}