@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.
- package/README.md +77 -6
- package/cli/dist/index.js +10072 -4502
- package/deployment/cloudformation/agent-health-observability.yaml +762 -0
- package/dist/assets/index-CCQRDlO0.js +243 -0
- package/dist/assets/index-CNHQVbcj.css +1 -0
- package/dist/index.html +2 -2
- package/docs/ARCHITECTURE.md +450 -0
- package/docs/BACKEND_JOB_QUEUE.md +405 -0
- package/docs/CLAUDE_CODE_TELEMETRY.md +283 -0
- package/docs/CLI.md +431 -0
- package/docs/CODING_AGENT_ANALYTICS.md +298 -0
- package/docs/CONFIGURATION.md +388 -0
- package/docs/CONNECTORS.md +536 -0
- package/docs/INSTRUMENT_WITH_OTEL.md +390 -0
- package/docs/ML-COMMONS-SETUP.md +289 -0
- package/docs/NPX_PACKAGING.md +195 -0
- package/docs/PERFORMANCE-MONITORING.md +200 -0
- package/docs/PERFORMANCE.md +390 -0
- package/docs/PI_PROFILING.md +169 -0
- package/docs/PLAN-non-agui-agent-support.md +525 -0
- package/docs/SDK.md +577 -0
- package/docs/SKILLS.md +264 -0
- package/docs/blogs/2026-02-28-opensearch-agent-health.md +200 -0
- package/docs/blogs/getting-started-blog.md +608 -0
- package/docs/diagrams/Agent-health.excalidraw +5656 -0
- package/docs/diagrams/architecture.png +0 -0
- package/docs/plans/field-redesign.md +468 -0
- package/docs/rfcs/001-coding-agent-analytics.md +374 -0
- package/docs/rfcs/002-enterprise-leaderboard.md +267 -0
- package/docs/rfcs/003-remote-aggregation.md +146 -0
- package/docs/rfcs/004-test-sdk-v2.md +599 -0
- package/docs/skills/AGENT_HEALTH.md +598 -0
- package/docs/skills/AGENT_PROFILE.md +191 -0
- package/docs/skills/add-connector/SKILL.md +68 -0
- package/docs/skills/agent-health-profile/SKILL.md +40 -0
- package/docs/skills/config-auth/SKILL.md +194 -0
- package/docs/skills/config-auth/evals/evals.json +35 -0
- package/docs/skills/create-pr/SKILL.md +73 -0
- package/docs/skills/instrument-otel/SKILL.md +84 -0
- package/docs/skills/write-test/SKILL.md +124 -0
- package/docs/ui prd.md +376 -0
- package/examples/README.md +53 -0
- package/examples/config/agent-health.config.example.ts +155 -0
- package/examples/connectors/echo-connector.ts +131 -0
- package/examples/eval-files/demo.eval.js +128 -0
- package/examples/eval-files/sdk-hooks-demo.eval.js +99 -0
- package/examples/pi-profiling/README.md +77 -0
- package/examples/pi-profiling/agent-health-profile.ts +417 -0
- package/lib/dist/lib/agentUtils.d.ts +29 -0
- package/lib/dist/lib/agentUtils.d.ts.map +1 -0
- package/lib/dist/lib/agentUtils.js +43 -0
- package/lib/dist/lib/agentUtils.js.map +1 -0
- package/lib/dist/lib/benchmarkExport.d.ts +14 -0
- package/lib/dist/lib/benchmarkExport.d.ts.map +1 -0
- package/lib/dist/lib/benchmarkExport.js +41 -0
- package/lib/dist/lib/benchmarkExport.js.map +1 -0
- package/lib/dist/lib/benchmarkVersionUtils.d.ts +37 -0
- package/lib/dist/lib/benchmarkVersionUtils.d.ts.map +1 -0
- package/lib/dist/lib/benchmarkVersionUtils.js +68 -0
- package/lib/dist/lib/benchmarkVersionUtils.js.map +1 -0
- package/lib/dist/lib/config/defineConfig.d.ts +27 -0
- package/lib/dist/lib/config/defineConfig.d.ts.map +1 -0
- package/lib/dist/lib/config/defineConfig.js +28 -0
- package/lib/dist/lib/config/defineConfig.js.map +1 -0
- package/lib/dist/lib/config/index.d.ts +9 -0
- package/lib/dist/lib/config/index.d.ts.map +1 -0
- package/lib/dist/lib/config/index.js +8 -0
- package/lib/dist/lib/config/index.js.map +1 -0
- package/lib/dist/lib/config/loader.d.ts +39 -0
- package/lib/dist/lib/config/loader.d.ts.map +1 -0
- package/lib/dist/lib/config/loader.js +258 -0
- package/lib/dist/lib/config/loader.js.map +1 -0
- package/lib/dist/lib/config/statePaths.d.ts +61 -0
- package/lib/dist/lib/config/statePaths.d.ts.map +1 -0
- package/lib/dist/lib/config/statePaths.js +188 -0
- package/lib/dist/lib/config/statePaths.js.map +1 -0
- package/lib/dist/lib/config/types.d.ts +231 -0
- package/lib/dist/lib/config/types.d.ts.map +1 -0
- package/lib/dist/lib/config/types.js +6 -0
- package/lib/dist/lib/config/types.js.map +1 -0
- package/lib/dist/lib/config.d.ts +39 -0
- package/lib/dist/lib/config.d.ts.map +1 -0
- package/lib/dist/lib/config.js +118 -0
- package/lib/dist/lib/config.js.map +1 -0
- package/lib/dist/lib/constants.d.ts +70 -0
- package/lib/dist/lib/constants.d.ts.map +1 -0
- package/lib/dist/lib/constants.js +365 -0
- package/lib/dist/lib/constants.js.map +1 -0
- package/lib/dist/lib/contextUtilization.d.ts +23 -0
- package/lib/dist/lib/contextUtilization.d.ts.map +1 -0
- package/lib/dist/lib/contextUtilization.js +72 -0
- package/lib/dist/lib/contextUtilization.js.map +1 -0
- package/lib/dist/lib/dashboardMetrics.d.ts +87 -0
- package/lib/dist/lib/dashboardMetrics.d.ts.map +1 -0
- package/lib/dist/lib/dashboardMetrics.js +242 -0
- package/lib/dist/lib/dashboardMetrics.js.map +1 -0
- package/lib/dist/lib/dataSourceConfig.d.ts +108 -0
- package/lib/dist/lib/dataSourceConfig.d.ts.map +1 -0
- package/lib/dist/lib/dataSourceConfig.js +166 -0
- package/lib/dist/lib/dataSourceConfig.js.map +1 -0
- package/lib/dist/lib/debug.d.ts +26 -0
- package/lib/dist/lib/debug.d.ts.map +1 -0
- package/lib/dist/lib/debug.js +132 -0
- package/lib/dist/lib/debug.js.map +1 -0
- package/lib/dist/lib/diagnostics.d.ts +28 -0
- package/lib/dist/lib/diagnostics.d.ts.map +1 -0
- package/lib/dist/lib/diagnostics.js +65 -0
- package/lib/dist/lib/diagnostics.js.map +1 -0
- package/lib/dist/lib/envCompat.d.ts +27 -0
- package/lib/dist/lib/envCompat.d.ts.map +1 -0
- package/lib/dist/lib/envCompat.js +73 -0
- package/lib/dist/lib/envCompat.js.map +1 -0
- package/lib/dist/lib/findPackageRoot.d.ts +7 -0
- package/lib/dist/lib/findPackageRoot.d.ts.map +1 -0
- package/lib/dist/lib/findPackageRoot.js +57 -0
- package/lib/dist/lib/findPackageRoot.js.map +1 -0
- package/lib/dist/lib/hooks.d.ts +36 -0
- package/lib/dist/lib/hooks.d.ts.map +1 -0
- package/lib/dist/lib/hooks.js +112 -0
- package/lib/dist/lib/hooks.js.map +1 -0
- package/lib/dist/lib/index.d.ts +47 -0
- package/lib/dist/lib/index.d.ts.map +1 -0
- package/lib/dist/lib/index.js +62 -0
- package/lib/dist/lib/index.js.map +1 -0
- package/lib/dist/lib/labels.d.ts +90 -0
- package/lib/dist/lib/labels.d.ts.map +1 -0
- package/lib/dist/lib/labels.js +158 -0
- package/lib/dist/lib/labels.js.map +1 -0
- package/lib/dist/lib/markdown.d.ts +16 -0
- package/lib/dist/lib/markdown.d.ts.map +1 -0
- package/lib/dist/lib/markdown.js +42 -0
- package/lib/dist/lib/markdown.js.map +1 -0
- package/lib/dist/lib/matchers/expect.d.ts +3 -0
- package/lib/dist/lib/matchers/expect.d.ts.map +1 -0
- package/lib/dist/lib/matchers/expect.js +225 -0
- package/lib/dist/lib/matchers/expect.js.map +1 -0
- package/lib/dist/lib/matchers/index.d.ts +8 -0
- package/lib/dist/lib/matchers/index.d.ts.map +1 -0
- package/lib/dist/lib/matchers/index.js +9 -0
- package/lib/dist/lib/matchers/index.js.map +1 -0
- package/lib/dist/lib/matchers/judgeAccessor.d.ts +113 -0
- package/lib/dist/lib/matchers/judgeAccessor.d.ts.map +1 -0
- package/lib/dist/lib/matchers/judgeAccessor.js +183 -0
- package/lib/dist/lib/matchers/judgeAccessor.js.map +1 -0
- package/lib/dist/lib/matchers/session.d.ts +39 -0
- package/lib/dist/lib/matchers/session.d.ts.map +1 -0
- package/lib/dist/lib/matchers/session.js +116 -0
- package/lib/dist/lib/matchers/session.js.map +1 -0
- package/lib/dist/lib/matchers/traces.d.ts +55 -0
- package/lib/dist/lib/matchers/traces.d.ts.map +1 -0
- package/lib/dist/lib/matchers/traces.js +116 -0
- package/lib/dist/lib/matchers/traces.js.map +1 -0
- package/lib/dist/lib/matchers/types.d.ts +75 -0
- package/lib/dist/lib/matchers/types.d.ts.map +1 -0
- package/lib/dist/lib/matchers/types.js +6 -0
- package/lib/dist/lib/matchers/types.js.map +1 -0
- package/lib/dist/lib/packagePaths.d.ts +29 -0
- package/lib/dist/lib/packagePaths.d.ts.map +1 -0
- package/lib/dist/lib/packagePaths.js +63 -0
- package/lib/dist/lib/packagePaths.js.map +1 -0
- package/lib/dist/lib/performance.d.ts +51 -0
- package/lib/dist/lib/performance.d.ts.map +1 -0
- package/lib/dist/lib/performance.js +159 -0
- package/lib/dist/lib/performance.js.map +1 -0
- package/lib/dist/lib/portConfig.d.ts +29 -0
- package/lib/dist/lib/portConfig.d.ts.map +1 -0
- package/lib/dist/lib/portConfig.js +64 -0
- package/lib/dist/lib/portConfig.js.map +1 -0
- package/lib/dist/lib/preferences.d.ts +63 -0
- package/lib/dist/lib/preferences.d.ts.map +1 -0
- package/lib/dist/lib/preferences.js +117 -0
- package/lib/dist/lib/preferences.js.map +1 -0
- package/lib/dist/lib/resolveAgentModel.d.ts +22 -0
- package/lib/dist/lib/resolveAgentModel.d.ts.map +1 -0
- package/lib/dist/lib/resolveAgentModel.js +37 -0
- package/lib/dist/lib/resolveAgentModel.js.map +1 -0
- package/lib/dist/lib/runStats.d.ts +92 -0
- package/lib/dist/lib/runStats.d.ts.map +1 -0
- package/lib/dist/lib/runStats.js +160 -0
- package/lib/dist/lib/runStats.js.map +1 -0
- package/lib/dist/lib/telemetry/constants.d.ts +60 -0
- package/lib/dist/lib/telemetry/constants.d.ts.map +1 -0
- package/lib/dist/lib/telemetry/constants.js +87 -0
- package/lib/dist/lib/telemetry/constants.js.map +1 -0
- package/lib/dist/lib/telemetry/evalSpans.d.ts +61 -0
- package/lib/dist/lib/telemetry/evalSpans.d.ts.map +1 -0
- package/lib/dist/lib/telemetry/evalSpans.js +254 -0
- package/lib/dist/lib/telemetry/evalSpans.js.map +1 -0
- package/lib/dist/lib/telemetry/index.d.ts +11 -0
- package/lib/dist/lib/telemetry/index.d.ts.map +1 -0
- package/lib/dist/lib/telemetry/index.js +15 -0
- package/lib/dist/lib/telemetry/index.js.map +1 -0
- package/lib/dist/lib/telemetry/opensearchExporter.d.ts +43 -0
- package/lib/dist/lib/telemetry/opensearchExporter.d.ts.map +1 -0
- package/lib/dist/lib/telemetry/opensearchExporter.js +217 -0
- package/lib/dist/lib/telemetry/opensearchExporter.js.map +1 -0
- package/lib/dist/lib/telemetry/provider.d.ts +55 -0
- package/lib/dist/lib/telemetry/provider.d.ts.map +1 -0
- package/lib/dist/lib/telemetry/provider.js +140 -0
- package/lib/dist/lib/telemetry/provider.js.map +1 -0
- package/lib/dist/lib/testCaseLabels.d.ts +34 -0
- package/lib/dist/lib/testCaseLabels.d.ts.map +1 -0
- package/lib/dist/lib/testCaseLabels.js +88 -0
- package/lib/dist/lib/testCaseLabels.js.map +1 -0
- package/lib/dist/lib/testCaseValidation.d.ts +140 -0
- package/lib/dist/lib/testCaseValidation.d.ts.map +1 -0
- package/lib/dist/lib/testCaseValidation.js +162 -0
- package/lib/dist/lib/testCaseValidation.js.map +1 -0
- package/lib/dist/lib/testCases/agentFixture.d.ts +80 -0
- package/lib/dist/lib/testCases/agentFixture.d.ts.map +1 -0
- package/lib/dist/lib/testCases/agentFixture.js +43 -0
- package/lib/dist/lib/testCases/agentFixture.js.map +1 -0
- package/lib/dist/lib/testCases/authoringSurface.d.ts +10 -0
- package/lib/dist/lib/testCases/authoringSurface.d.ts.map +1 -0
- package/lib/dist/lib/testCases/authoringSurface.js +54 -0
- package/lib/dist/lib/testCases/authoringSurface.js.map +1 -0
- package/lib/dist/lib/testCases/codemod.d.ts +13 -0
- package/lib/dist/lib/testCases/codemod.d.ts.map +1 -0
- package/lib/dist/lib/testCases/codemod.js +169 -0
- package/lib/dist/lib/testCases/codemod.js.map +1 -0
- package/lib/dist/lib/testCases/define.d.ts +114 -0
- package/lib/dist/lib/testCases/define.d.ts.map +1 -0
- package/lib/dist/lib/testCases/define.js +253 -0
- package/lib/dist/lib/testCases/define.js.map +1 -0
- package/lib/dist/lib/testCases/evaluators.d.ts +80 -0
- package/lib/dist/lib/testCases/evaluators.d.ts.map +1 -0
- package/lib/dist/lib/testCases/evaluators.js +105 -0
- package/lib/dist/lib/testCases/evaluators.js.map +1 -0
- package/lib/dist/lib/testCases/index.d.ts +14 -0
- package/lib/dist/lib/testCases/index.d.ts.map +1 -0
- package/lib/dist/lib/testCases/index.js +12 -0
- package/lib/dist/lib/testCases/index.js.map +1 -0
- package/lib/dist/lib/testCases/judge.d.ts +165 -0
- package/lib/dist/lib/testCases/judge.d.ts.map +1 -0
- package/lib/dist/lib/testCases/judge.js +359 -0
- package/lib/dist/lib/testCases/judge.js.map +1 -0
- package/lib/dist/lib/testCases/loader.d.ts +26 -0
- package/lib/dist/lib/testCases/loader.d.ts.map +1 -0
- package/lib/dist/lib/testCases/loader.js +149 -0
- package/lib/dist/lib/testCases/loader.js.map +1 -0
- package/lib/dist/lib/testCases/types.d.ts +242 -0
- package/lib/dist/lib/testCases/types.d.ts.map +1 -0
- package/lib/dist/lib/testCases/types.js +6 -0
- package/lib/dist/lib/testCases/types.js.map +1 -0
- package/lib/dist/lib/theme.d.ts +6 -0
- package/lib/dist/lib/theme.d.ts.map +1 -0
- package/lib/dist/lib/theme.js +36 -0
- package/lib/dist/lib/theme.js.map +1 -0
- package/lib/dist/lib/uiTelemetry.d.ts +7 -0
- package/lib/dist/lib/uiTelemetry.d.ts.map +1 -0
- package/lib/dist/lib/uiTelemetry.js +25 -0
- package/lib/dist/lib/uiTelemetry.js.map +1 -0
- package/lib/dist/lib/utils.d.ts +96 -0
- package/lib/dist/lib/utils.d.ts.map +1 -0
- package/lib/dist/lib/utils.js +232 -0
- package/lib/dist/lib/utils.js.map +1 -0
- package/lib/dist/lib/workflow/consolidate.d.ts +12 -0
- package/lib/dist/lib/workflow/consolidate.d.ts.map +1 -0
- package/lib/dist/lib/workflow/consolidate.js +33 -0
- package/lib/dist/lib/workflow/consolidate.js.map +1 -0
- package/lib/dist/lib/workflow/index.d.ts +13 -0
- package/lib/dist/lib/workflow/index.d.ts.map +1 -0
- package/lib/dist/lib/workflow/index.js +12 -0
- package/lib/dist/lib/workflow/index.js.map +1 -0
- package/lib/dist/lib/workflow/ledger.d.ts +30 -0
- package/lib/dist/lib/workflow/ledger.d.ts.map +1 -0
- package/lib/dist/lib/workflow/ledger.js +41 -0
- package/lib/dist/lib/workflow/ledger.js.map +1 -0
- package/lib/dist/lib/workflow/pool.d.ts +13 -0
- package/lib/dist/lib/workflow/pool.d.ts.map +1 -0
- package/lib/dist/lib/workflow/pool.js +44 -0
- package/lib/dist/lib/workflow/pool.js.map +1 -0
- package/lib/dist/lib/workflow/source.d.ts +22 -0
- package/lib/dist/lib/workflow/source.d.ts.map +1 -0
- package/lib/dist/lib/workflow/source.js +29 -0
- package/lib/dist/lib/workflow/source.js.map +1 -0
- package/lib/dist/lib/workflow/stepB.d.ts +71 -0
- package/lib/dist/lib/workflow/stepB.d.ts.map +1 -0
- package/lib/dist/lib/workflow/stepB.js +99 -0
- package/lib/dist/lib/workflow/stepB.js.map +1 -0
- package/lib/dist/lib/workflow/types.d.ts +86 -0
- package/lib/dist/lib/workflow/types.d.ts.map +1 -0
- package/lib/dist/lib/workflow/types.js +6 -0
- package/lib/dist/lib/workflow/types.js.map +1 -0
- package/lib/dist/lib/workflow/workflow.d.ts +119 -0
- package/lib/dist/lib/workflow/workflow.d.ts.map +1 -0
- package/lib/dist/lib/workflow/workflow.js +195 -0
- package/lib/dist/lib/workflow/workflow.js.map +1 -0
- package/lib/dist/services/agent/aguiConverter.d.ts +50 -0
- package/lib/dist/services/agent/aguiConverter.d.ts.map +1 -0
- package/lib/dist/services/agent/aguiConverter.js +449 -0
- package/lib/dist/services/agent/aguiConverter.js.map +1 -0
- package/lib/dist/services/agent/index.d.ts +10 -0
- package/lib/dist/services/agent/index.d.ts.map +1 -0
- package/lib/dist/services/agent/index.js +12 -0
- package/lib/dist/services/agent/index.js.map +1 -0
- package/lib/dist/services/agent/payloadBuilder.d.ts +33 -0
- package/lib/dist/services/agent/payloadBuilder.d.ts.map +1 -0
- package/lib/dist/services/agent/payloadBuilder.js +75 -0
- package/lib/dist/services/agent/payloadBuilder.js.map +1 -0
- package/lib/dist/services/agent/sseStream.d.ts +43 -0
- package/lib/dist/services/agent/sseStream.d.ts.map +1 -0
- package/lib/dist/services/agent/sseStream.js +223 -0
- package/lib/dist/services/agent/sseStream.js.map +1 -0
- package/lib/dist/services/connectors/agui/AGUIStreamingConnector.d.ts +44 -0
- package/lib/dist/services/connectors/agui/AGUIStreamingConnector.d.ts.map +1 -0
- package/lib/dist/services/connectors/agui/AGUIStreamingConnector.js +95 -0
- package/lib/dist/services/connectors/agui/AGUIStreamingConnector.js.map +1 -0
- package/lib/dist/services/connectors/base/BaseConnector.d.ts +81 -0
- package/lib/dist/services/connectors/base/BaseConnector.d.ts.map +1 -0
- package/lib/dist/services/connectors/base/BaseConnector.js +170 -0
- package/lib/dist/services/connectors/base/BaseConnector.js.map +1 -0
- package/lib/dist/services/connectors/claude-code/ClaudeCodeConnector.d.ts +116 -0
- package/lib/dist/services/connectors/claude-code/ClaudeCodeConnector.d.ts.map +1 -0
- package/lib/dist/services/connectors/claude-code/ClaudeCodeConnector.js +403 -0
- package/lib/dist/services/connectors/claude-code/ClaudeCodeConnector.js.map +1 -0
- package/lib/dist/services/connectors/index.d.ts +13 -0
- package/lib/dist/services/connectors/index.d.ts.map +1 -0
- package/lib/dist/services/connectors/index.js +32 -0
- package/lib/dist/services/connectors/index.js.map +1 -0
- package/lib/dist/services/connectors/kiro/KiroConnector.d.ts +48 -0
- package/lib/dist/services/connectors/kiro/KiroConnector.d.ts.map +1 -0
- package/lib/dist/services/connectors/kiro/KiroConnector.js +158 -0
- package/lib/dist/services/connectors/kiro/KiroConnector.js.map +1 -0
- package/lib/dist/services/connectors/langgraph/LangGraphConnector.d.ts +36 -0
- package/lib/dist/services/connectors/langgraph/LangGraphConnector.d.ts.map +1 -0
- package/lib/dist/services/connectors/langgraph/LangGraphConnector.js +175 -0
- package/lib/dist/services/connectors/langgraph/LangGraphConnector.js.map +1 -0
- package/lib/dist/services/connectors/mock/MockConnector.d.ts +37 -0
- package/lib/dist/services/connectors/mock/MockConnector.d.ts.map +1 -0
- package/lib/dist/services/connectors/mock/MockConnector.js +120 -0
- package/lib/dist/services/connectors/mock/MockConnector.js.map +1 -0
- package/lib/dist/services/connectors/openai-compatible/OpenAICompatibleConnector.d.ts +42 -0
- package/lib/dist/services/connectors/openai-compatible/OpenAICompatibleConnector.d.ts.map +1 -0
- package/lib/dist/services/connectors/openai-compatible/OpenAICompatibleConnector.js +133 -0
- package/lib/dist/services/connectors/openai-compatible/OpenAICompatibleConnector.js.map +1 -0
- package/lib/dist/services/connectors/pi/PiConnector.d.ts +87 -0
- package/lib/dist/services/connectors/pi/PiConnector.d.ts.map +1 -0
- package/lib/dist/services/connectors/pi/PiConnector.js +274 -0
- package/lib/dist/services/connectors/pi/PiConnector.js.map +1 -0
- package/lib/dist/services/connectors/registry.d.ts +57 -0
- package/lib/dist/services/connectors/registry.d.ts.map +1 -0
- package/lib/dist/services/connectors/registry.js +106 -0
- package/lib/dist/services/connectors/registry.js.map +1 -0
- package/lib/dist/services/connectors/rest/RESTConnector.d.ts +38 -0
- package/lib/dist/services/connectors/rest/RESTConnector.d.ts.map +1 -0
- package/lib/dist/services/connectors/rest/RESTConnector.js +117 -0
- package/lib/dist/services/connectors/rest/RESTConnector.js.map +1 -0
- package/lib/dist/services/connectors/server.d.ts +13 -0
- package/lib/dist/services/connectors/server.d.ts.map +1 -0
- package/lib/dist/services/connectors/server.js +34 -0
- package/lib/dist/services/connectors/server.js.map +1 -0
- package/lib/dist/services/connectors/strands/StrandsConnector.d.ts +48 -0
- package/lib/dist/services/connectors/strands/StrandsConnector.d.ts.map +1 -0
- package/lib/dist/services/connectors/strands/StrandsConnector.js +221 -0
- package/lib/dist/services/connectors/strands/StrandsConnector.js.map +1 -0
- package/lib/dist/services/connectors/subprocess/SubprocessConnector.d.ts +88 -0
- package/lib/dist/services/connectors/subprocess/SubprocessConnector.d.ts.map +1 -0
- package/lib/dist/services/connectors/subprocess/SubprocessConnector.js +418 -0
- package/lib/dist/services/connectors/subprocess/SubprocessConnector.js.map +1 -0
- package/lib/dist/services/connectors/types.d.ts +213 -0
- package/lib/dist/services/connectors/types.d.ts.map +1 -0
- package/lib/dist/services/connectors/types.js +6 -0
- package/lib/dist/services/connectors/types.js.map +1 -0
- package/lib/dist/services/evaluation/bedrockJudge.d.ts +64 -0
- package/lib/dist/services/evaluation/bedrockJudge.d.ts.map +1 -0
- package/lib/dist/services/evaluation/bedrockJudge.js +167 -0
- package/lib/dist/services/evaluation/bedrockJudge.js.map +1 -0
- package/lib/dist/services/evaluation/evaluatorError.d.ts +56 -0
- package/lib/dist/services/evaluation/evaluatorError.d.ts.map +1 -0
- package/lib/dist/services/evaluation/evaluatorError.js +56 -0
- package/lib/dist/services/evaluation/evaluatorError.js.map +1 -0
- package/lib/dist/services/evaluation/index.d.ts +106 -0
- package/lib/dist/services/evaluation/index.d.ts.map +1 -0
- package/lib/dist/services/evaluation/index.js +684 -0
- package/lib/dist/services/evaluation/index.js.map +1 -0
- package/lib/dist/services/evaluation/mockTrajectory.d.ts +3 -0
- package/lib/dist/services/evaluation/mockTrajectory.d.ts.map +1 -0
- package/lib/dist/services/evaluation/mockTrajectory.js +72 -0
- package/lib/dist/services/evaluation/mockTrajectory.js.map +1 -0
- package/lib/dist/services/opensearch/client.d.ts +26 -0
- package/lib/dist/services/opensearch/client.d.ts.map +1 -0
- package/lib/dist/services/opensearch/client.js +131 -0
- package/lib/dist/services/opensearch/client.js.map +1 -0
- package/lib/dist/services/opensearch/index.d.ts +16 -0
- package/lib/dist/services/opensearch/index.d.ts.map +1 -0
- package/lib/dist/services/opensearch/index.js +25 -0
- package/lib/dist/services/opensearch/index.js.map +1 -0
- package/lib/dist/services/storage/asyncBenchmarkStorage.d.ts +123 -0
- package/lib/dist/services/storage/asyncBenchmarkStorage.d.ts.map +1 -0
- package/lib/dist/services/storage/asyncBenchmarkStorage.js +429 -0
- package/lib/dist/services/storage/asyncBenchmarkStorage.js.map +1 -0
- package/lib/dist/services/storage/asyncRunStorage.d.ts +127 -0
- package/lib/dist/services/storage/asyncRunStorage.d.ts.map +1 -0
- package/lib/dist/services/storage/asyncRunStorage.js +448 -0
- package/lib/dist/services/storage/asyncRunStorage.js.map +1 -0
- package/lib/dist/services/storage/asyncTestCaseStorage.d.ts +156 -0
- package/lib/dist/services/storage/asyncTestCaseStorage.d.ts.map +1 -0
- package/lib/dist/services/storage/asyncTestCaseStorage.js +285 -0
- package/lib/dist/services/storage/asyncTestCaseStorage.js.map +1 -0
- package/lib/dist/services/storage/index.d.ts +17 -0
- package/lib/dist/services/storage/index.d.ts.map +1 -0
- package/lib/dist/services/storage/index.js +20 -0
- package/lib/dist/services/storage/index.js.map +1 -0
- package/lib/dist/services/storage/migration.d.ts +54 -0
- package/lib/dist/services/storage/migration.d.ts.map +1 -0
- package/lib/dist/services/storage/migration.js +296 -0
- package/lib/dist/services/storage/migration.js.map +1 -0
- package/lib/dist/services/storage/opensearchClient.d.ts +924 -0
- package/lib/dist/services/storage/opensearchClient.d.ts.map +1 -0
- package/lib/dist/services/storage/opensearchClient.js +435 -0
- package/lib/dist/services/storage/opensearchClient.js.map +1 -0
- package/lib/dist/services/traces/browserRecovery.d.ts +26 -0
- package/lib/dist/services/traces/browserRecovery.d.ts.map +1 -0
- package/lib/dist/services/traces/browserRecovery.js +81 -0
- package/lib/dist/services/traces/browserRecovery.js.map +1 -0
- package/lib/dist/services/traces/categoryStyles.d.ts +21 -0
- package/lib/dist/services/traces/categoryStyles.d.ts.map +1 -0
- package/lib/dist/services/traces/categoryStyles.js +56 -0
- package/lib/dist/services/traces/categoryStyles.js.map +1 -0
- package/lib/dist/services/traces/executionOrderTransform.d.ts +35 -0
- package/lib/dist/services/traces/executionOrderTransform.d.ts.map +1 -0
- package/lib/dist/services/traces/executionOrderTransform.js +313 -0
- package/lib/dist/services/traces/executionOrderTransform.js.map +1 -0
- package/lib/dist/services/traces/fetchSpansForRun.d.ts +86 -0
- package/lib/dist/services/traces/fetchSpansForRun.d.ts.map +1 -0
- package/lib/dist/services/traces/fetchSpansForRun.js +69 -0
- package/lib/dist/services/traces/fetchSpansForRun.js.map +1 -0
- package/lib/dist/services/traces/flowTransform.d.ts +24 -0
- package/lib/dist/services/traces/flowTransform.d.ts.map +1 -0
- package/lib/dist/services/traces/flowTransform.js +228 -0
- package/lib/dist/services/traces/flowTransform.js.map +1 -0
- package/lib/dist/services/traces/index.d.ts +121 -0
- package/lib/dist/services/traces/index.d.ts.map +1 -0
- package/lib/dist/services/traces/index.js +255 -0
- package/lib/dist/services/traces/index.js.map +1 -0
- package/lib/dist/services/traces/intentTransform.d.ts +20 -0
- package/lib/dist/services/traces/intentTransform.d.ts.map +1 -0
- package/lib/dist/services/traces/intentTransform.js +131 -0
- package/lib/dist/services/traces/intentTransform.js.map +1 -0
- package/lib/dist/services/traces/judgeAgentsHints.d.ts +63 -0
- package/lib/dist/services/traces/judgeAgentsHints.d.ts.map +1 -0
- package/lib/dist/services/traces/judgeAgentsHints.js +89 -0
- package/lib/dist/services/traces/judgeAgentsHints.js.map +1 -0
- package/lib/dist/services/traces/messageExtraction.d.ts +15 -0
- package/lib/dist/services/traces/messageExtraction.d.ts.map +1 -0
- package/lib/dist/services/traces/messageExtraction.js +251 -0
- package/lib/dist/services/traces/messageExtraction.js.map +1 -0
- package/lib/dist/services/traces/spanCategorization.d.ts +63 -0
- package/lib/dist/services/traces/spanCategorization.d.ts.map +1 -0
- package/lib/dist/services/traces/spanCategorization.js +276 -0
- package/lib/dist/services/traces/spanCategorization.js.map +1 -0
- package/lib/dist/services/traces/spanPreprocessing.d.ts +37 -0
- package/lib/dist/services/traces/spanPreprocessing.d.ts.map +1 -0
- package/lib/dist/services/traces/spanPreprocessing.js +102 -0
- package/lib/dist/services/traces/spanPreprocessing.js.map +1 -0
- package/lib/dist/services/traces/spansToTrajectory.d.ts +36 -0
- package/lib/dist/services/traces/spansToTrajectory.d.ts.map +1 -0
- package/lib/dist/services/traces/spansToTrajectory.js +387 -0
- package/lib/dist/services/traces/spansToTrajectory.js.map +1 -0
- package/lib/dist/services/traces/toolSimilarity.d.ts +35 -0
- package/lib/dist/services/traces/toolSimilarity.d.ts.map +1 -0
- package/lib/dist/services/traces/toolSimilarity.js +203 -0
- package/lib/dist/services/traces/toolSimilarity.js.map +1 -0
- package/lib/dist/services/traces/traceComparison.d.ts +31 -0
- package/lib/dist/services/traces/traceComparison.d.ts.map +1 -0
- package/lib/dist/services/traces/traceComparison.js +318 -0
- package/lib/dist/services/traces/traceComparison.js.map +1 -0
- package/lib/dist/services/traces/traceGrouping.d.ts +19 -0
- package/lib/dist/services/traces/traceGrouping.d.ts.map +1 -0
- package/lib/dist/services/traces/traceGrouping.js +107 -0
- package/lib/dist/services/traces/traceGrouping.js.map +1 -0
- package/lib/dist/services/traces/tracePoller.d.ts +84 -0
- package/lib/dist/services/traces/tracePoller.d.ts.map +1 -0
- package/lib/dist/services/traces/tracePoller.js +309 -0
- package/lib/dist/services/traces/tracePoller.js.map +1 -0
- package/lib/dist/services/traces/traceStats.d.ts +45 -0
- package/lib/dist/services/traces/traceStats.d.ts.map +1 -0
- package/lib/dist/services/traces/traceStats.js +114 -0
- package/lib/dist/services/traces/traceStats.js.map +1 -0
- package/lib/dist/services/traces/traceSummary.d.ts +47 -0
- package/lib/dist/services/traces/traceSummary.d.ts.map +1 -0
- package/lib/dist/services/traces/traceSummary.js +68 -0
- package/lib/dist/services/traces/traceSummary.js.map +1 -0
- package/lib/dist/services/traces/utils.d.ts +33 -0
- package/lib/dist/services/traces/utils.d.ts.map +1 -0
- package/lib/dist/services/traces/utils.js +114 -0
- package/lib/dist/services/traces/utils.js.map +1 -0
- package/lib/dist/types/agui.d.ts +13 -0
- package/lib/dist/types/agui.d.ts.map +1 -0
- package/lib/dist/types/agui.js +16 -0
- package/lib/dist/types/agui.js.map +1 -0
- package/lib/dist/types/index.d.ts +1175 -0
- package/lib/dist/types/index.d.ts.map +1 -0
- package/lib/dist/types/index.js +12 -0
- package/lib/dist/types/index.js.map +1 -0
- package/lib/dist/types/skills.d.ts +146 -0
- package/lib/dist/types/skills.d.ts.map +1 -0
- package/lib/dist/types/skills.js +6 -0
- package/lib/dist/types/skills.js.map +1 -0
- package/observio-sample-agent/pi-package/README.md +112 -0
- package/observio-sample-agent/pi-package/extensions/agent-health.ts +373 -0
- package/observio-sample-agent/pi-package/package.json +17 -0
- package/observio-sample-agent/pi-package/prompts/agent-health.md +37 -0
- package/observio-sample-agent/pi-package/skills/create-pr/SKILL.md +88 -0
- package/observio-sample-agent/pi-package/skills/fix-bug/SKILL.md +71 -0
- package/observio-sample-agent/pi-package/skills/implement-feature/SKILL.md +156 -0
- package/observio-sample-agent/pi-package/skills/instrument-otel/SKILL.md +208 -0
- package/observio-sample-agent/pi-package/skills/setup-collector/SKILL.md +146 -0
- package/observio-sample-agent/pi-package/skills/write-test/SKILL.md +115 -0
- package/package.json +64 -13
- package/server/dist/app.js +32651 -17637
- package/server/dist/index.js +29875 -14638
- package/tsconfig.lib.json +71 -0
- package/dist/assets/index-EvPLSTAS.js +0 -267
- package/dist/assets/index-RXasQKUs.css +0 -1
- package/lib/dist/config/index.js +0 -404
- package/lib/dist/index.js +0 -1665
|
@@ -0,0 +1,448 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright OpenSearch Contributors
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Async Run Storage
|
|
7
|
+
*
|
|
8
|
+
* Async wrapper around OpenSearch storage for runs (test case executions).
|
|
9
|
+
* Replaces the localStorage-based reportStorage.
|
|
10
|
+
* Maps between app's EvaluationReport/TestCaseRun and OpenSearch StorageRun.
|
|
11
|
+
*/
|
|
12
|
+
import { runStorage as opensearchRuns, } from './opensearchClient.js';
|
|
13
|
+
/**
|
|
14
|
+
* Coerce a stored metrics object — which may contain any subset of dynamic
|
|
15
|
+
* metric names (driven by the evaluator's `scoringConfig.metrics`) — into
|
|
16
|
+
* the app-side `EvaluationMetrics` shape.
|
|
17
|
+
*
|
|
18
|
+
* Two important guarantees:
|
|
19
|
+
* 1. **Preserves all numeric metric names**, not just the four legacy ones
|
|
20
|
+
* (accuracy / faithfulness / latency_score / trajectory_alignment_score).
|
|
21
|
+
* Custom and non-RCA system evaluators emit names like
|
|
22
|
+
* `tool_selection_accuracy`, `reasoning_coherence`, `bias_detection`, etc.
|
|
23
|
+
* 2. **Distinguishes "missing" from "zero"**. Previously the read-side
|
|
24
|
+
* whitelist defaulted every missing field to `0`, which made the runs
|
|
25
|
+
* list show `0%` for every run that didn't happen to have an `accuracy`
|
|
26
|
+
* metric — even runs the judge had passed. Missing entries are now
|
|
27
|
+
* simply absent (so UI consumers can render `—` instead of fabricated 0).
|
|
28
|
+
*/
|
|
29
|
+
function storedMetricsToApp(raw) {
|
|
30
|
+
const out = {};
|
|
31
|
+
if (!raw || typeof raw !== 'object')
|
|
32
|
+
return out;
|
|
33
|
+
for (const [key, value] of Object.entries(raw)) {
|
|
34
|
+
if (typeof value === 'number' && Number.isFinite(value)) {
|
|
35
|
+
out[key] = value;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return out;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Convert OpenSearch storage format to app TestCaseRun format
|
|
42
|
+
*/
|
|
43
|
+
function toTestCaseRun(stored) {
|
|
44
|
+
// Cast to access trace-mode fields
|
|
45
|
+
const storedAny = stored;
|
|
46
|
+
return {
|
|
47
|
+
id: stored.id,
|
|
48
|
+
name: stored.name,
|
|
49
|
+
description: stored.description,
|
|
50
|
+
timestamp: stored.createdAt,
|
|
51
|
+
testCaseId: stored.testCaseId,
|
|
52
|
+
testCaseVersion: parseInt(stored.testCaseVersionId?.split('-v')[1] || '1'),
|
|
53
|
+
experimentId: stored.experimentId || undefined,
|
|
54
|
+
experimentRunId: stored.experimentRunId || undefined,
|
|
55
|
+
agentName: stored.agentName || stored.agentId,
|
|
56
|
+
agentKey: stored.agentId,
|
|
57
|
+
modelName: stored.modelId,
|
|
58
|
+
modelId: stored.modelId,
|
|
59
|
+
status: stored.status,
|
|
60
|
+
passFailStatus: stored.passFailStatus,
|
|
61
|
+
evaluatorId: stored.evaluatorId,
|
|
62
|
+
trajectory: (stored.trajectory || []),
|
|
63
|
+
// Preserve every metric the judge emitted, not just the four legacy keys.
|
|
64
|
+
// Custom evaluators (and even system evaluators other than RCA Default)
|
|
65
|
+
// produce dynamic metric names like `tool_selection_accuracy` or
|
|
66
|
+
// `reasoning_coherence`; the previous shape whitelisted only
|
|
67
|
+
// accuracy/faithfulness/latency_score/trajectory_alignment_score and
|
|
68
|
+
// — worse — collapsed missing values to `0` via `|| 0`, which made
|
|
69
|
+
// every run look like it had scored zero in the runs list.
|
|
70
|
+
//
|
|
71
|
+
// We spread the stored object directly and only filter out non-numeric
|
|
72
|
+
// entries so the resulting shape matches `EvaluationMetrics`'s
|
|
73
|
+
// `[key: string]: number | undefined` index signature without leaking
|
|
74
|
+
// surprise types into downstream consumers.
|
|
75
|
+
metrics: storedMetricsToApp(stored.metrics),
|
|
76
|
+
llmJudgeReasoning: stored.llmJudgeReasoning || '',
|
|
77
|
+
annotations: (stored.annotations || []).map(ann => ({
|
|
78
|
+
id: ann.id,
|
|
79
|
+
reportId: stored.id,
|
|
80
|
+
text: ann.text,
|
|
81
|
+
timestamp: ann.createdAt,
|
|
82
|
+
tags: ann.tags,
|
|
83
|
+
author: ann.author,
|
|
84
|
+
})),
|
|
85
|
+
runId: stored.traceId || stored.runId,
|
|
86
|
+
// Preserve the OTel traceId as its OWN field (distinct from runId). The
|
|
87
|
+
// comparison Traces tab correlates spans by report.traceId (Strategy A);
|
|
88
|
+
// without this it was always undefined here — mapped into runId only — so
|
|
89
|
+
// agents that emit their own trace (pi) / Claude Code never showed traces.
|
|
90
|
+
traceId: stored.traceId,
|
|
91
|
+
sessionId: stored.sessionId,
|
|
92
|
+
rawEvents: stored.rawEvents,
|
|
93
|
+
logs: (stored.logs || []),
|
|
94
|
+
improvementStrategies: stored.improvementStrategies,
|
|
95
|
+
// Per-matcher verdicts captured by the SDK during the test body
|
|
96
|
+
matcherResults: stored.matcherResults,
|
|
97
|
+
// Trace-mode fields
|
|
98
|
+
metricsStatus: storedAny.metricsStatus,
|
|
99
|
+
traceFetchAttempts: storedAny.traceFetchAttempts,
|
|
100
|
+
lastTraceFetchAt: storedAny.lastTraceFetchAt,
|
|
101
|
+
traceError: storedAny.traceError,
|
|
102
|
+
spans: storedAny.spans,
|
|
103
|
+
connectorProtocol: storedAny.connectorProtocol,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Convert app TestCaseRun format to OpenSearch storage format
|
|
108
|
+
*/
|
|
109
|
+
function toStorageFormat(report) {
|
|
110
|
+
const base = {
|
|
111
|
+
name: report.name,
|
|
112
|
+
description: report.description,
|
|
113
|
+
experimentId: '', // Storage field for benchmarkId (name preserved for data compatibility)
|
|
114
|
+
experimentRunId: '', // Storage field for benchmarkRunId (name preserved for data compatibility)
|
|
115
|
+
testCaseId: report.testCaseId,
|
|
116
|
+
testCaseVersionId: `${report.testCaseId}-v${report.testCaseVersion || 1}`,
|
|
117
|
+
agentId: report.agentKey || report.agentName,
|
|
118
|
+
modelId: report.modelId || report.modelName,
|
|
119
|
+
iteration: 1, // Default to 1, can be overridden
|
|
120
|
+
status: report.status,
|
|
121
|
+
passFailStatus: report.passFailStatus,
|
|
122
|
+
traceId: report.runId,
|
|
123
|
+
tags: [],
|
|
124
|
+
actualOutcomes: [],
|
|
125
|
+
llmJudgeReasoning: report.llmJudgeReasoning,
|
|
126
|
+
// Pass the full dynamic metrics object through. Whitelisting fixed names
|
|
127
|
+
// here used to silently drop any metric the evaluator emitted that wasn't
|
|
128
|
+
// one of the four legacy keys (accuracy/faithfulness/latency_score/
|
|
129
|
+
// trajectory_alignment_score), making per-evaluator scores invisible in
|
|
130
|
+
// listing pages. The OpenSearch index uses dynamic mapping under
|
|
131
|
+
// `metrics`, so arbitrary numeric fields are accepted by the cluster.
|
|
132
|
+
metrics: report.metrics,
|
|
133
|
+
trajectory: report.trajectory,
|
|
134
|
+
rawEvents: report.rawEvents,
|
|
135
|
+
logs: report.logs || report.openSearchLogs,
|
|
136
|
+
improvementStrategies: report.improvementStrategies,
|
|
137
|
+
};
|
|
138
|
+
// Add trace-mode fields if present
|
|
139
|
+
if (report.metricsStatus !== undefined)
|
|
140
|
+
base.metricsStatus = report.metricsStatus;
|
|
141
|
+
if (report.sessionId !== undefined)
|
|
142
|
+
base.sessionId = report.sessionId;
|
|
143
|
+
if (report.traceFetchAttempts !== undefined)
|
|
144
|
+
base.traceFetchAttempts = report.traceFetchAttempts;
|
|
145
|
+
if (report.lastTraceFetchAt !== undefined)
|
|
146
|
+
base.lastTraceFetchAt = report.lastTraceFetchAt;
|
|
147
|
+
if (report.traceError !== undefined)
|
|
148
|
+
base.traceError = report.traceError;
|
|
149
|
+
if (report.spans !== undefined)
|
|
150
|
+
base.spans = report.spans;
|
|
151
|
+
if (report.connectorProtocol !== undefined)
|
|
152
|
+
base.connectorProtocol = report.connectorProtocol;
|
|
153
|
+
// SDK matcher verdicts: persist alongside the report
|
|
154
|
+
if (report.matcherResults !== undefined)
|
|
155
|
+
base.matcherResults = report.matcherResults;
|
|
156
|
+
return base;
|
|
157
|
+
}
|
|
158
|
+
class AsyncRunStorage {
|
|
159
|
+
// ==================== Core CRUD Operations ====================
|
|
160
|
+
/**
|
|
161
|
+
* Save a report/run
|
|
162
|
+
*/
|
|
163
|
+
async saveReport(report, options) {
|
|
164
|
+
const storageData = toStorageFormat(report);
|
|
165
|
+
// Apply experiment context if provided
|
|
166
|
+
if (options?.experimentId) {
|
|
167
|
+
storageData.experimentId = options.experimentId;
|
|
168
|
+
}
|
|
169
|
+
if (options?.experimentRunId) {
|
|
170
|
+
storageData.experimentRunId = options.experimentRunId;
|
|
171
|
+
}
|
|
172
|
+
if (options?.iteration) {
|
|
173
|
+
storageData.iteration = options.iteration;
|
|
174
|
+
}
|
|
175
|
+
const created = await opensearchRuns.create(storageData);
|
|
176
|
+
return toTestCaseRun(created);
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Get run counts grouped by test case ID (single bulk query)
|
|
180
|
+
*/
|
|
181
|
+
async getRunCountsByTestCase() {
|
|
182
|
+
return opensearchRuns.getCountsByTestCase();
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Get all reports for a specific test case
|
|
186
|
+
*/
|
|
187
|
+
async getReportsByTestCase(testCaseId, options = {}) {
|
|
188
|
+
const { limit = 100, offset = 0 } = options;
|
|
189
|
+
const result = await opensearchRuns.getByTestCase(testCaseId, limit, offset);
|
|
190
|
+
return { reports: result.runs.map(toTestCaseRun), total: result.total };
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Get all reports across all test cases
|
|
194
|
+
*/
|
|
195
|
+
async getAllReports(options = {}) {
|
|
196
|
+
const { limit = 100, offset = 0, fields } = options;
|
|
197
|
+
// Build query options with optional field projection
|
|
198
|
+
const queryOptions = { size: limit, from: offset };
|
|
199
|
+
if (fields && fields.length > 0) {
|
|
200
|
+
queryOptions._source = fields;
|
|
201
|
+
}
|
|
202
|
+
const result = await opensearchRuns.getAll(queryOptions);
|
|
203
|
+
return result.runs.map(toTestCaseRun);
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Get a single report by ID
|
|
207
|
+
*/
|
|
208
|
+
async getReportById(reportId) {
|
|
209
|
+
const stored = await opensearchRuns.getById(reportId);
|
|
210
|
+
return stored ? toTestCaseRun(stored) : null;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Batch-fetch reports by id in a SINGLE request (vs N getReportById calls).
|
|
214
|
+
* Returned map is keyed by the requested reportId (the storage doc id).
|
|
215
|
+
*/
|
|
216
|
+
async getReportsByIds(reportIds) {
|
|
217
|
+
if (reportIds.length === 0)
|
|
218
|
+
return {};
|
|
219
|
+
const stored = await opensearchRuns.getByIds(reportIds);
|
|
220
|
+
const out = {};
|
|
221
|
+
for (const s of stored) {
|
|
222
|
+
out[s.id] = toTestCaseRun(s);
|
|
223
|
+
}
|
|
224
|
+
return out;
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Delete a report and its annotations
|
|
228
|
+
*/
|
|
229
|
+
async deleteReport(reportId) {
|
|
230
|
+
const result = await opensearchRuns.delete(reportId);
|
|
231
|
+
return result.deleted;
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Partial update of a report
|
|
235
|
+
* Used for updating trace-mode runs after traces become available
|
|
236
|
+
*/
|
|
237
|
+
async updateReport(reportId, updates) {
|
|
238
|
+
// Convert app format to storage format for the updates
|
|
239
|
+
const storageUpdates = {};
|
|
240
|
+
// Map fields from EvaluationReport to StorageRun format
|
|
241
|
+
if (updates.status !== undefined)
|
|
242
|
+
storageUpdates.status = updates.status;
|
|
243
|
+
// `passFailStatus` accepts an explicit `null` to clear a stale verdict
|
|
244
|
+
// on a run that just transitioned to `metricsStatus: 'error'` (issue
|
|
245
|
+
// #242). Without this, `buildEvaluatorErrorPatch`'s `passFailStatus: null`
|
|
246
|
+
// would still be filtered out by a strict `!== undefined` check and the
|
|
247
|
+
// persisted document would keep its previous 'passed'/'failed' value.
|
|
248
|
+
if (updates.passFailStatus !== undefined)
|
|
249
|
+
storageUpdates.passFailStatus = updates.passFailStatus;
|
|
250
|
+
if (updates.llmJudgeReasoning !== undefined)
|
|
251
|
+
storageUpdates.llmJudgeReasoning = updates.llmJudgeReasoning;
|
|
252
|
+
if (updates.trajectory !== undefined)
|
|
253
|
+
storageUpdates.trajectory = updates.trajectory;
|
|
254
|
+
if (updates.rawEvents !== undefined)
|
|
255
|
+
storageUpdates.rawEvents = updates.rawEvents;
|
|
256
|
+
if (updates.logs !== undefined)
|
|
257
|
+
storageUpdates.logs = updates.logs;
|
|
258
|
+
if (updates.runId !== undefined)
|
|
259
|
+
storageUpdates.traceId = updates.runId;
|
|
260
|
+
if (updates.sessionId !== undefined)
|
|
261
|
+
storageUpdates.sessionId = updates.sessionId;
|
|
262
|
+
if (updates.improvementStrategies !== undefined)
|
|
263
|
+
storageUpdates.improvementStrategies = updates.improvementStrategies;
|
|
264
|
+
if (updates.matcherResults !== undefined)
|
|
265
|
+
storageUpdates.matcherResults = updates.matcherResults;
|
|
266
|
+
// Map metrics
|
|
267
|
+
if (updates.metrics) {
|
|
268
|
+
storageUpdates.metrics = {
|
|
269
|
+
accuracy: updates.metrics.accuracy,
|
|
270
|
+
faithfulness: updates.metrics.faithfulness,
|
|
271
|
+
latency_score: updates.metrics.latency_score,
|
|
272
|
+
trajectory_alignment_score: updates.metrics.trajectory_alignment_score,
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
// Pass through trace-mode specific fields directly
|
|
276
|
+
if (updates.metricsStatus !== undefined)
|
|
277
|
+
storageUpdates.metricsStatus = updates.metricsStatus;
|
|
278
|
+
if (updates.traceFetchAttempts !== undefined)
|
|
279
|
+
storageUpdates.traceFetchAttempts = updates.traceFetchAttempts;
|
|
280
|
+
if (updates.lastTraceFetchAt !== undefined)
|
|
281
|
+
storageUpdates.lastTraceFetchAt = updates.lastTraceFetchAt;
|
|
282
|
+
if (updates.traceError !== undefined)
|
|
283
|
+
storageUpdates.traceError = updates.traceError;
|
|
284
|
+
if (updates.spans !== undefined)
|
|
285
|
+
storageUpdates.spans = updates.spans;
|
|
286
|
+
const updated = await opensearchRuns.partialUpdate(reportId, storageUpdates);
|
|
287
|
+
return toTestCaseRun(updated);
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Get total count of reports
|
|
291
|
+
*/
|
|
292
|
+
async getReportCount() {
|
|
293
|
+
const result = await opensearchRuns.getAll({ size: 0 });
|
|
294
|
+
return result.total;
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Get report count for a specific test case
|
|
298
|
+
*/
|
|
299
|
+
async getReportCountByTestCase(testCaseId) {
|
|
300
|
+
const result = await opensearchRuns.getByTestCase(testCaseId, 0);
|
|
301
|
+
return result.total;
|
|
302
|
+
}
|
|
303
|
+
// ==================== Benchmark-Specific Operations ====================
|
|
304
|
+
/**
|
|
305
|
+
* Get runs for a benchmark
|
|
306
|
+
*/
|
|
307
|
+
async getByBenchmark(benchmarkId, size) {
|
|
308
|
+
const stored = await opensearchRuns.getByBenchmark(benchmarkId, size);
|
|
309
|
+
return stored.map(toTestCaseRun);
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Get runs for a specific benchmark run config
|
|
313
|
+
*/
|
|
314
|
+
async getByBenchmarkRun(benchmarkId, runId, size) {
|
|
315
|
+
const stored = await opensearchRuns.getByBenchmarkRun(benchmarkId, runId, size);
|
|
316
|
+
return stored.map(toTestCaseRun);
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Get all iterations for a test case in a benchmark
|
|
320
|
+
*/
|
|
321
|
+
async getIterations(benchmarkId, testCaseId, benchmarkRunId) {
|
|
322
|
+
const result = await opensearchRuns.getIterations(benchmarkId, testCaseId, benchmarkRunId);
|
|
323
|
+
return {
|
|
324
|
+
runs: result.runs.map(toTestCaseRun),
|
|
325
|
+
total: result.total,
|
|
326
|
+
maxIteration: result.maxIteration,
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
// Backwards compatibility aliases
|
|
330
|
+
/** @deprecated Use getByBenchmark instead */
|
|
331
|
+
async getByExperiment(experimentId, size) {
|
|
332
|
+
return this.getByBenchmark(experimentId, size);
|
|
333
|
+
}
|
|
334
|
+
/** @deprecated Use getByBenchmarkRun instead */
|
|
335
|
+
async getByExperimentRun(experimentId, runId, size) {
|
|
336
|
+
return this.getByBenchmarkRun(experimentId, runId, size);
|
|
337
|
+
}
|
|
338
|
+
// ==================== Annotation Operations ====================
|
|
339
|
+
/**
|
|
340
|
+
* Add an annotation to a report
|
|
341
|
+
*/
|
|
342
|
+
async addAnnotation(reportId, annotation) {
|
|
343
|
+
const created = await opensearchRuns.addAnnotation(reportId, {
|
|
344
|
+
text: annotation.text,
|
|
345
|
+
tags: annotation.tags,
|
|
346
|
+
author: annotation.author,
|
|
347
|
+
});
|
|
348
|
+
return {
|
|
349
|
+
id: created.id,
|
|
350
|
+
reportId,
|
|
351
|
+
text: created.text,
|
|
352
|
+
timestamp: created.createdAt,
|
|
353
|
+
tags: created.tags,
|
|
354
|
+
author: created.author,
|
|
355
|
+
};
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Update an existing annotation
|
|
359
|
+
*/
|
|
360
|
+
async updateAnnotation(reportId, annotationId, updates) {
|
|
361
|
+
try {
|
|
362
|
+
await opensearchRuns.updateAnnotation(reportId, annotationId, {
|
|
363
|
+
text: updates.text,
|
|
364
|
+
tags: updates.tags,
|
|
365
|
+
});
|
|
366
|
+
return true;
|
|
367
|
+
}
|
|
368
|
+
catch {
|
|
369
|
+
return false;
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Delete an annotation
|
|
374
|
+
*/
|
|
375
|
+
async deleteAnnotation(reportId, annotationId) {
|
|
376
|
+
const result = await opensearchRuns.deleteAnnotation(reportId, annotationId);
|
|
377
|
+
return result.deleted;
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* Get all annotations for a report
|
|
381
|
+
*/
|
|
382
|
+
async getAnnotationsByReport(reportId) {
|
|
383
|
+
const report = await opensearchRuns.getById(reportId);
|
|
384
|
+
if (!report || !report.annotations)
|
|
385
|
+
return [];
|
|
386
|
+
return report.annotations.map(ann => ({
|
|
387
|
+
id: ann.id,
|
|
388
|
+
reportId,
|
|
389
|
+
text: ann.text,
|
|
390
|
+
timestamp: ann.createdAt,
|
|
391
|
+
tags: ann.tags,
|
|
392
|
+
author: ann.author,
|
|
393
|
+
}));
|
|
394
|
+
}
|
|
395
|
+
// ==================== Search and Filter ====================
|
|
396
|
+
/**
|
|
397
|
+
* Search reports with complex filtering
|
|
398
|
+
*/
|
|
399
|
+
async searchReports(query) {
|
|
400
|
+
const filters = {};
|
|
401
|
+
if (query.testCaseIds && query.testCaseIds.length > 0) {
|
|
402
|
+
// Note: OpenSearch search supports single testCaseId, would need to loop
|
|
403
|
+
filters.testCaseId = query.testCaseIds[0];
|
|
404
|
+
}
|
|
405
|
+
if (query.dateRange) {
|
|
406
|
+
filters.dateRange = query.dateRange;
|
|
407
|
+
}
|
|
408
|
+
if (query.status && query.status.length > 0) {
|
|
409
|
+
filters.status = query.status[0];
|
|
410
|
+
}
|
|
411
|
+
const result = await opensearchRuns.search(filters);
|
|
412
|
+
let reports = result.runs.map(toTestCaseRun);
|
|
413
|
+
// Apply additional client-side filters not supported by backend
|
|
414
|
+
if (query.agentNames && query.agentNames.length > 0) {
|
|
415
|
+
reports = reports.filter(r => query.agentNames.includes(r.agentName));
|
|
416
|
+
}
|
|
417
|
+
if (query.modelNames && query.modelNames.length > 0) {
|
|
418
|
+
reports = reports.filter(r => query.modelNames.includes(r.modelName));
|
|
419
|
+
}
|
|
420
|
+
if (query.minAccuracy !== undefined) {
|
|
421
|
+
reports = reports.filter(r => r.metrics.accuracy >= query.minAccuracy);
|
|
422
|
+
}
|
|
423
|
+
return reports;
|
|
424
|
+
}
|
|
425
|
+
// ==================== Utility Functions ====================
|
|
426
|
+
/**
|
|
427
|
+
* Generate a unique report ID
|
|
428
|
+
*/
|
|
429
|
+
generateReportId() {
|
|
430
|
+
return `run-${Date.now()}-${Math.random().toString(36).substring(2, 11)}`;
|
|
431
|
+
}
|
|
432
|
+
/**
|
|
433
|
+
* Bulk create runs (for migration)
|
|
434
|
+
*/
|
|
435
|
+
async bulkCreate(runs) {
|
|
436
|
+
const storageData = runs.map(run => ({
|
|
437
|
+
...toStorageFormat(run),
|
|
438
|
+
id: run.id,
|
|
439
|
+
createdAt: run.timestamp,
|
|
440
|
+
}));
|
|
441
|
+
return opensearchRuns.bulkCreate(storageData);
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
// Export singleton instance
|
|
445
|
+
export const asyncRunStorage = new AsyncRunStorage();
|
|
446
|
+
// Alias for backwards compatibility
|
|
447
|
+
export const asyncReportStorage = asyncRunStorage;
|
|
448
|
+
//# sourceMappingURL=asyncRunStorage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asyncRunStorage.js","sourceRoot":"","sources":["../../../../services/storage/asyncRunStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import type { TestCase, TestCaseVersion, AgentContextItem, AgentToolDefinition } from '../../types/index.js';
|
|
2
|
+
export interface CreateTestCaseInput {
|
|
3
|
+
/** Optional ID - if provided, will be used instead of generating a new one (useful for migration) */
|
|
4
|
+
id?: string;
|
|
5
|
+
name: string;
|
|
6
|
+
description?: string;
|
|
7
|
+
labels?: string[];
|
|
8
|
+
/** @deprecated Use labels instead */
|
|
9
|
+
category?: string;
|
|
10
|
+
/** @deprecated Use labels instead */
|
|
11
|
+
subcategory?: string;
|
|
12
|
+
/** @deprecated Use labels instead */
|
|
13
|
+
difficulty?: 'Easy' | 'Medium' | 'Hard';
|
|
14
|
+
initialPrompt: string;
|
|
15
|
+
context: AgentContextItem[];
|
|
16
|
+
tools?: AgentToolDefinition[];
|
|
17
|
+
expectedPPL?: string;
|
|
18
|
+
expectedOutcomes?: string[];
|
|
19
|
+
expectedTrajectory?: {
|
|
20
|
+
step: number;
|
|
21
|
+
description: string;
|
|
22
|
+
requiredTools: string[];
|
|
23
|
+
}[];
|
|
24
|
+
followUpQuestions?: {
|
|
25
|
+
trigger: 'results_available' | 'error' | 'always';
|
|
26
|
+
question: string;
|
|
27
|
+
businessValue: string;
|
|
28
|
+
}[];
|
|
29
|
+
tags?: string[];
|
|
30
|
+
author?: string;
|
|
31
|
+
isPromoted?: boolean;
|
|
32
|
+
}
|
|
33
|
+
export interface UpdateTestCaseInput {
|
|
34
|
+
name?: string;
|
|
35
|
+
description?: string;
|
|
36
|
+
labels?: string[];
|
|
37
|
+
/** @deprecated Use labels instead */
|
|
38
|
+
category?: string;
|
|
39
|
+
/** @deprecated Use labels instead */
|
|
40
|
+
subcategory?: string;
|
|
41
|
+
/** @deprecated Use labels instead */
|
|
42
|
+
difficulty?: 'Easy' | 'Medium' | 'Hard';
|
|
43
|
+
initialPrompt?: string;
|
|
44
|
+
context?: AgentContextItem[];
|
|
45
|
+
tools?: AgentToolDefinition[];
|
|
46
|
+
expectedPPL?: string;
|
|
47
|
+
expectedOutcomes?: string[];
|
|
48
|
+
expectedTrajectory?: {
|
|
49
|
+
step: number;
|
|
50
|
+
description: string;
|
|
51
|
+
requiredTools: string[];
|
|
52
|
+
}[];
|
|
53
|
+
followUpQuestions?: {
|
|
54
|
+
trigger: 'results_available' | 'error' | 'always';
|
|
55
|
+
question: string;
|
|
56
|
+
businessValue: string;
|
|
57
|
+
}[];
|
|
58
|
+
tags?: string[];
|
|
59
|
+
isPromoted?: boolean;
|
|
60
|
+
}
|
|
61
|
+
/** Paginated response from getAll with summary/pagination options */
|
|
62
|
+
export interface TestCasePage {
|
|
63
|
+
testCases: TestCase[];
|
|
64
|
+
total: number;
|
|
65
|
+
after?: string | null;
|
|
66
|
+
hasMore?: boolean;
|
|
67
|
+
}
|
|
68
|
+
declare class AsyncTestCaseStorage {
|
|
69
|
+
/**
|
|
70
|
+
* Get all test cases (latest versions), sorted by updatedAt descending
|
|
71
|
+
* @param options.summary - true to fetch lightweight summary (no context/expectedOutcomes)
|
|
72
|
+
* @param options.size - page size for pagination
|
|
73
|
+
* @param options.after - cursor token for next page
|
|
74
|
+
* @param options.includeSample - whether to include sample/demo data
|
|
75
|
+
*/
|
|
76
|
+
getAll(options: {
|
|
77
|
+
summary?: boolean;
|
|
78
|
+
size: number;
|
|
79
|
+
after?: string;
|
|
80
|
+
includeSample?: boolean;
|
|
81
|
+
}): Promise<TestCasePage>;
|
|
82
|
+
getAll(options?: {
|
|
83
|
+
summary?: boolean;
|
|
84
|
+
size?: number;
|
|
85
|
+
after?: string;
|
|
86
|
+
includeSample?: boolean;
|
|
87
|
+
}): Promise<TestCase[]>;
|
|
88
|
+
/**
|
|
89
|
+
* Get only promoted test cases (for Experiments)
|
|
90
|
+
*/
|
|
91
|
+
getPromoted(): Promise<TestCase[]>;
|
|
92
|
+
/**
|
|
93
|
+
* Get test cases by specific IDs (for efficient filtered fetching)
|
|
94
|
+
* Used when you only need test cases for a specific benchmark
|
|
95
|
+
*/
|
|
96
|
+
getByIds(ids: string[]): Promise<TestCase[]>;
|
|
97
|
+
/**
|
|
98
|
+
* Get a test case by ID (latest version)
|
|
99
|
+
*/
|
|
100
|
+
getById(id: string): Promise<TestCase | null>;
|
|
101
|
+
/**
|
|
102
|
+
* Create a new test case
|
|
103
|
+
*/
|
|
104
|
+
create(input: CreateTestCaseInput): Promise<TestCase>;
|
|
105
|
+
/**
|
|
106
|
+
* Update a test case (creates new version automatically in OpenSearch)
|
|
107
|
+
*/
|
|
108
|
+
update(id: string, updates: UpdateTestCaseInput): Promise<TestCase | null>;
|
|
109
|
+
/**
|
|
110
|
+
* Delete a test case (all versions)
|
|
111
|
+
*/
|
|
112
|
+
delete(id: string): Promise<boolean>;
|
|
113
|
+
/**
|
|
114
|
+
* Set promoted status for a test case
|
|
115
|
+
*/
|
|
116
|
+
setPromoted(id: string, isPromoted: boolean): Promise<boolean>;
|
|
117
|
+
/**
|
|
118
|
+
* Get all versions of a test case
|
|
119
|
+
*/
|
|
120
|
+
getVersions(testCaseId: string): Promise<TestCaseVersion[]>;
|
|
121
|
+
/**
|
|
122
|
+
* Get a specific version of a test case
|
|
123
|
+
*/
|
|
124
|
+
getVersion(testCaseId: string, version: number): Promise<TestCaseVersion | null>;
|
|
125
|
+
/**
|
|
126
|
+
* Generate a unique ID
|
|
127
|
+
*/
|
|
128
|
+
generateId(): string;
|
|
129
|
+
/**
|
|
130
|
+
* Get unique categories from all test cases
|
|
131
|
+
* @deprecated Use getLabels() instead
|
|
132
|
+
*/
|
|
133
|
+
getCategories(): Promise<string[]>;
|
|
134
|
+
/**
|
|
135
|
+
* Get all unique labels from all test cases
|
|
136
|
+
*/
|
|
137
|
+
getLabels(): Promise<string[]>;
|
|
138
|
+
/**
|
|
139
|
+
* Get test cases count
|
|
140
|
+
*/
|
|
141
|
+
getCount(): Promise<number>;
|
|
142
|
+
/**
|
|
143
|
+
* Get promoted count
|
|
144
|
+
*/
|
|
145
|
+
getPromotedCount(): Promise<number>;
|
|
146
|
+
/**
|
|
147
|
+
* Bulk create test cases (for migration)
|
|
148
|
+
*/
|
|
149
|
+
bulkCreate(testCases: CreateTestCaseInput[]): Promise<{
|
|
150
|
+
created: number;
|
|
151
|
+
errors: boolean;
|
|
152
|
+
}>;
|
|
153
|
+
}
|
|
154
|
+
export declare const asyncTestCaseStorage: AsyncTestCaseStorage;
|
|
155
|
+
export {};
|
|
156
|
+
//# sourceMappingURL=asyncTestCaseStorage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asyncTestCaseStorage.d.ts","sourceRoot":"","sources":["../../../../services/storage/asyncTestCaseStorage.ts"],"names":[],"mappings":"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"}
|