@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,62 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright OpenSearch Contributors
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Public API for @opensearch-project/agent-health
|
|
7
|
+
*
|
|
8
|
+
* Users can import from this module in their agent-health.config.ts files:
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import { defineConfig, RESTConnector } from '@opensearch-project/agent-health';
|
|
13
|
+
*
|
|
14
|
+
* export default defineConfig({
|
|
15
|
+
* agents: [
|
|
16
|
+
* {
|
|
17
|
+
* key: 'my-agent',
|
|
18
|
+
* name: 'My Agent',
|
|
19
|
+
* endpoint: 'https://api.example.com/chat',
|
|
20
|
+
* connectorType: 'rest',
|
|
21
|
+
* },
|
|
22
|
+
* ],
|
|
23
|
+
* });
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
// Config helpers
|
|
27
|
+
export { defineConfig } from './config/defineConfig.js';
|
|
28
|
+
export { fetchTracesByRunIds as fetchTraces } from '../services/traces/index.js';
|
|
29
|
+
// Base connector class (for extending)
|
|
30
|
+
export { BaseConnector } from '../services/connectors/base/BaseConnector.js';
|
|
31
|
+
// Built-in connectors
|
|
32
|
+
export { AGUIStreamingConnector } from '../services/connectors/agui/AGUIStreamingConnector.js';
|
|
33
|
+
export { RESTConnector } from '../services/connectors/rest/RESTConnector.js';
|
|
34
|
+
export { SubprocessConnector } from '../services/connectors/subprocess/SubprocessConnector.js';
|
|
35
|
+
export { ClaudeCodeConnector } from '../services/connectors/claude-code/ClaudeCodeConnector.js';
|
|
36
|
+
export { MockConnector } from '../services/connectors/mock/MockConnector.js';
|
|
37
|
+
// Connector registry (for programmatic registration)
|
|
38
|
+
export { connectorRegistry, registerConnector } from '../services/connectors/registry.js';
|
|
39
|
+
// Test case SDK (for writing .eval.ts/.eval.js files)
|
|
40
|
+
//
|
|
41
|
+
// @experimental The code-based test case SDK is experimental. The API surface
|
|
42
|
+
// (test signature, options shape, fixtures, matcher set) may change in a
|
|
43
|
+
// minor release without a deprecation cycle. Pin your @opensearch-project/
|
|
44
|
+
// agent-health version if you depend on it. To suppress the runtime warning
|
|
45
|
+
// emitted when the SDK is first used, set `AH_SUPPRESS_EXPERIMENTAL=1`
|
|
46
|
+
// (legacy `AGENT_HEALTH_SUPPRESS_EXPERIMENTAL=1` is still accepted).
|
|
47
|
+
export { test, describe, beforeAll, afterAll, beforeEach, afterEach, judge } from './testCases/index.js';
|
|
48
|
+
export { defineEvaluator, evaluate } from './testCases/index.js';
|
|
49
|
+
// Per-matcher results: chai-based `expect` with our recording plugin and
|
|
50
|
+
// custom matchers (haveCalledTool, haveStepsOfType, haveOutputMatching,
|
|
51
|
+
// haveCompletedWithin), plus the traces fixture type. Verdicts produced
|
|
52
|
+
// by these matchers and by judge() are persisted on TestCaseRun and
|
|
53
|
+
// shown in the UI as a per-matcher breakdown.
|
|
54
|
+
export { expect } from './matchers/index.js';
|
|
55
|
+
// Workflow SDK (for writing .workflow.ts files: deterministic steps over a
|
|
56
|
+
// work source, with bounded-concurrency agent fan-out, a cumulative feedback
|
|
57
|
+
// ledger, staging, and consolidation into one PR per fix-class).
|
|
58
|
+
//
|
|
59
|
+
// @experimental Same stability caveat as the test-case SDK above.
|
|
60
|
+
export { source, workflow, FeedbackLedger, consolidate, mapPool } from './workflow/index.js';
|
|
61
|
+
export { profileSpans, buildAgentEditsPrompt, parseAgentEdits, deriveAgentEdits, } from './workflow/index.js';
|
|
62
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,iBAAiB;AACjB,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAuBxD,OAAO,EAAE,mBAAmB,IAAI,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAWjF,uCAAuC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAC;AAE7E,sBAAsB;AACtB,OAAO,EAAE,sBAAsB,EAAE,MAAM,uDAAuD,CAAC;AAC/F,OAAO,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0DAA0D,CAAC;AAC/F,OAAO,EAAE,mBAAmB,EAAE,MAAM,2DAA2D,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAC;AAE7E,qDAAqD;AACrD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAK1F,sDAAsD;AACtD,EAAE;AACF,8EAA8E;AAC9E,yEAAyE;AACzE,2EAA2E;AAC3E,4EAA4E;AAC5E,uEAAuE;AACvE,qEAAqE;AACrE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAazG,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGjE,yEAAyE;AACzE,wEAAwE;AACxE,wEAAwE;AACxE,oEAAoE;AACpE,8CAA8C;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG7C,2EAA2E;AAC3E,6EAA6E;AAC7E,iEAAiE;AACjE,EAAE;AACF,kEAAkE;AAClE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC7F,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,eAAe,EACf,gBAAgB,GACjB,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Label utilities for the unified labels system
|
|
3
|
+
*
|
|
4
|
+
* Labels use a generic prefix:value format (e.g., "category:RCA", "priority:High")
|
|
5
|
+
* Any prefix can be used - the system is completely freeform.
|
|
6
|
+
* Special colors are only applied to difficulty:Easy/Medium/Hard labels.
|
|
7
|
+
*/
|
|
8
|
+
export declare const DIFFICULTY_VALUES: readonly ["Easy", "Medium", "Hard"];
|
|
9
|
+
export type DifficultyValue = typeof DIFFICULTY_VALUES[number];
|
|
10
|
+
/**
|
|
11
|
+
* Extract prefix from a label (e.g., "difficulty:Easy" -> "difficulty")
|
|
12
|
+
* Returns null for labels without a colon
|
|
13
|
+
*/
|
|
14
|
+
export declare function extractPrefix(label: string): string | null;
|
|
15
|
+
/**
|
|
16
|
+
* Extract value from a label (e.g., "difficulty:Easy" -> "Easy")
|
|
17
|
+
* Returns the full label if no prefix
|
|
18
|
+
*/
|
|
19
|
+
export declare function extractValue(label: string): string;
|
|
20
|
+
/**
|
|
21
|
+
* Create a prefixed label
|
|
22
|
+
*/
|
|
23
|
+
export declare function createLabel(prefix: string, value: string): string;
|
|
24
|
+
/**
|
|
25
|
+
* Get the display name for a label (strips prefix if present)
|
|
26
|
+
*/
|
|
27
|
+
export declare function getLabelDisplayName(label: string): string;
|
|
28
|
+
/**
|
|
29
|
+
* Check if a label has a specific prefix
|
|
30
|
+
*/
|
|
31
|
+
export declare function hasPrefix(label: string, prefix: string): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Get all unique prefixes from a set of labels
|
|
34
|
+
*/
|
|
35
|
+
export declare function getUniquePrefixes(labels: string[]): string[];
|
|
36
|
+
/**
|
|
37
|
+
* Sentinel value used by label-filter dropdowns to mean "no label filter".
|
|
38
|
+
*/
|
|
39
|
+
export declare const ALL_LABELS = "all";
|
|
40
|
+
/**
|
|
41
|
+
* Collect the distinct labels across a set of labelled items, sorted
|
|
42
|
+
* alphabetically. Used to populate label-filter dropdowns so a team can
|
|
43
|
+
* categorize / slice its suite by label (e.g. `category:RCA`).
|
|
44
|
+
*/
|
|
45
|
+
export declare function collectLabels(items: Array<{
|
|
46
|
+
labels?: string[];
|
|
47
|
+
}>): string[];
|
|
48
|
+
/**
|
|
49
|
+
* Whether an item's labels satisfy a selected label-filter value. The sentinel
|
|
50
|
+
* `ALL_LABELS` (or an empty value) matches everything.
|
|
51
|
+
*/
|
|
52
|
+
export declare function matchesLabelFilter(itemLabels: string[] | undefined, selected: string): boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Filter labels by prefix
|
|
55
|
+
*/
|
|
56
|
+
export declare function filterByPrefix(labels: string[], prefix: string): string[];
|
|
57
|
+
/**
|
|
58
|
+
* Group labels by their prefix
|
|
59
|
+
* Labels without a prefix are grouped under ''
|
|
60
|
+
*/
|
|
61
|
+
export declare function groupByPrefix(labels: string[]): Record<string, string[]>;
|
|
62
|
+
/**
|
|
63
|
+
* Check if a label is a difficulty label
|
|
64
|
+
*/
|
|
65
|
+
export declare function isDifficultyLabel(label: string): boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Parsed labels structure for backward compatibility with legacy category/difficulty fields
|
|
68
|
+
*/
|
|
69
|
+
export interface ParsedLabels {
|
|
70
|
+
difficulty?: DifficultyValue;
|
|
71
|
+
category?: string;
|
|
72
|
+
subcategory?: string;
|
|
73
|
+
generic: string[];
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Parse a labels array into structured format for backward compatibility
|
|
77
|
+
* Extracts difficulty, category, subcategory from prefixed labels
|
|
78
|
+
*/
|
|
79
|
+
export declare function parseLabels(labels: string[]): ParsedLabels;
|
|
80
|
+
/**
|
|
81
|
+
* Build a labels array from individual fields
|
|
82
|
+
* Used for migration and backward compatibility
|
|
83
|
+
*/
|
|
84
|
+
export declare function buildLabels(fields: {
|
|
85
|
+
category?: string;
|
|
86
|
+
subcategory?: string;
|
|
87
|
+
difficulty?: string;
|
|
88
|
+
generic?: string[];
|
|
89
|
+
}): string[];
|
|
90
|
+
//# sourceMappingURL=labels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"labels.d.ts","sourceRoot":"","sources":["../../labels.ts"],"names":[],"mappings":"AAKA;;;;;;GAMG;AAGH,eAAO,MAAM,iBAAiB,qCAAsC,CAAC;AACrE,MAAM,MAAM,eAAe,GAAG,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAE/D;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG1D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGlD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAGhE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAO5D;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,QAAQ,CAAC;AAEhC;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC;IAAE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,GAAG,MAAM,EAAE,CAI3E;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAG9F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAGzE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAUxE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAExD;AAID;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,CAmB1D;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,GAAG,MAAM,EAAE,CAiBX"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright OpenSearch Contributors
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Label utilities for the unified labels system
|
|
7
|
+
*
|
|
8
|
+
* Labels use a generic prefix:value format (e.g., "category:RCA", "priority:High")
|
|
9
|
+
* Any prefix can be used - the system is completely freeform.
|
|
10
|
+
* Special colors are only applied to difficulty:Easy/Medium/Hard labels.
|
|
11
|
+
*/
|
|
12
|
+
// Valid difficulty values for special color treatment
|
|
13
|
+
export const DIFFICULTY_VALUES = ['Easy', 'Medium', 'Hard'];
|
|
14
|
+
/**
|
|
15
|
+
* Extract prefix from a label (e.g., "difficulty:Easy" -> "difficulty")
|
|
16
|
+
* Returns null for labels without a colon
|
|
17
|
+
*/
|
|
18
|
+
export function extractPrefix(label) {
|
|
19
|
+
const colonIndex = label.indexOf(':');
|
|
20
|
+
return colonIndex > 0 ? label.substring(0, colonIndex) : null;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Extract value from a label (e.g., "difficulty:Easy" -> "Easy")
|
|
24
|
+
* Returns the full label if no prefix
|
|
25
|
+
*/
|
|
26
|
+
export function extractValue(label) {
|
|
27
|
+
const colonIndex = label.indexOf(':');
|
|
28
|
+
return colonIndex > 0 ? label.substring(colonIndex + 1) : label;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Create a prefixed label
|
|
32
|
+
*/
|
|
33
|
+
export function createLabel(prefix, value) {
|
|
34
|
+
return `${prefix}:${value}`;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Get the display name for a label (strips prefix if present)
|
|
38
|
+
*/
|
|
39
|
+
export function getLabelDisplayName(label) {
|
|
40
|
+
return extractValue(label);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Check if a label has a specific prefix
|
|
44
|
+
*/
|
|
45
|
+
export function hasPrefix(label, prefix) {
|
|
46
|
+
const fullPrefix = prefix.endsWith(':') ? prefix : `${prefix}:`;
|
|
47
|
+
return label.startsWith(fullPrefix);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get all unique prefixes from a set of labels
|
|
51
|
+
*/
|
|
52
|
+
export function getUniquePrefixes(labels) {
|
|
53
|
+
const prefixes = new Set();
|
|
54
|
+
for (const label of labels) {
|
|
55
|
+
const prefix = extractPrefix(label);
|
|
56
|
+
if (prefix)
|
|
57
|
+
prefixes.add(prefix);
|
|
58
|
+
}
|
|
59
|
+
return Array.from(prefixes).sort();
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Sentinel value used by label-filter dropdowns to mean "no label filter".
|
|
63
|
+
*/
|
|
64
|
+
export const ALL_LABELS = 'all';
|
|
65
|
+
/**
|
|
66
|
+
* Collect the distinct labels across a set of labelled items, sorted
|
|
67
|
+
* alphabetically. Used to populate label-filter dropdowns so a team can
|
|
68
|
+
* categorize / slice its suite by label (e.g. `category:RCA`).
|
|
69
|
+
*/
|
|
70
|
+
export function collectLabels(items) {
|
|
71
|
+
const set = new Set();
|
|
72
|
+
for (const item of items)
|
|
73
|
+
for (const label of item.labels || [])
|
|
74
|
+
set.add(label);
|
|
75
|
+
return Array.from(set).sort((a, b) => a.localeCompare(b));
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Whether an item's labels satisfy a selected label-filter value. The sentinel
|
|
79
|
+
* `ALL_LABELS` (or an empty value) matches everything.
|
|
80
|
+
*/
|
|
81
|
+
export function matchesLabelFilter(itemLabels, selected) {
|
|
82
|
+
if (!selected || selected === ALL_LABELS)
|
|
83
|
+
return true;
|
|
84
|
+
return (itemLabels || []).includes(selected);
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Filter labels by prefix
|
|
88
|
+
*/
|
|
89
|
+
export function filterByPrefix(labels, prefix) {
|
|
90
|
+
const fullPrefix = prefix.endsWith(':') ? prefix : `${prefix}:`;
|
|
91
|
+
return labels.filter(l => l.startsWith(fullPrefix));
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Group labels by their prefix
|
|
95
|
+
* Labels without a prefix are grouped under ''
|
|
96
|
+
*/
|
|
97
|
+
export function groupByPrefix(labels) {
|
|
98
|
+
const groups = {};
|
|
99
|
+
for (const label of labels) {
|
|
100
|
+
const prefix = extractPrefix(label) || '';
|
|
101
|
+
if (!groups[prefix])
|
|
102
|
+
groups[prefix] = [];
|
|
103
|
+
groups[prefix].push(label);
|
|
104
|
+
}
|
|
105
|
+
return groups;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Check if a label is a difficulty label
|
|
109
|
+
*/
|
|
110
|
+
export function isDifficultyLabel(label) {
|
|
111
|
+
return label.startsWith('difficulty:');
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Parse a labels array into structured format for backward compatibility
|
|
115
|
+
* Extracts difficulty, category, subcategory from prefixed labels
|
|
116
|
+
*/
|
|
117
|
+
export function parseLabels(labels) {
|
|
118
|
+
const result = { generic: [] };
|
|
119
|
+
for (const label of labels) {
|
|
120
|
+
if (label.startsWith('difficulty:')) {
|
|
121
|
+
const value = label.substring(11);
|
|
122
|
+
if (DIFFICULTY_VALUES.includes(value)) {
|
|
123
|
+
result.difficulty = value;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
else if (label.startsWith('category:')) {
|
|
127
|
+
result.category = label.substring(9);
|
|
128
|
+
}
|
|
129
|
+
else if (label.startsWith('subcategory:')) {
|
|
130
|
+
result.subcategory = label.substring(12);
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
result.generic.push(label);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return result;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Build a labels array from individual fields
|
|
140
|
+
* Used for migration and backward compatibility
|
|
141
|
+
*/
|
|
142
|
+
export function buildLabels(fields) {
|
|
143
|
+
const labels = [];
|
|
144
|
+
if (fields.difficulty) {
|
|
145
|
+
labels.push(`difficulty:${fields.difficulty}`);
|
|
146
|
+
}
|
|
147
|
+
if (fields.category) {
|
|
148
|
+
labels.push(`category:${fields.category}`);
|
|
149
|
+
}
|
|
150
|
+
if (fields.subcategory) {
|
|
151
|
+
labels.push(`subcategory:${fields.subcategory}`);
|
|
152
|
+
}
|
|
153
|
+
if (fields.generic) {
|
|
154
|
+
labels.push(...fields.generic);
|
|
155
|
+
}
|
|
156
|
+
return labels;
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=labels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"labels.js","sourceRoot":"","sources":["../../labels.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;GAMG;AAEH,sDAAsD;AACtD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AAGrE;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,OAAO,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAChE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,OAAO,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAClE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc,EAAE,KAAa;IACvD,OAAO,GAAG,MAAM,IAAI,KAAK,EAAE,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,KAAa,EAAE,MAAc;IACrD,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC;IAChE,OAAO,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAgB;IAChD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,MAAM;YAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC;AAEhC;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,KAAmC;IAC/D,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE;YAAE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChF,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAgC,EAAE,QAAgB;IACnF,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IACtD,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAgB,EAAE,MAAc;IAC7D,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC;IAChE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,MAAgB;IAC5C,MAAM,MAAM,GAA6B,EAAE,CAAC;IAE5C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC1C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,OAAO,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AACzC,CAAC;AAcD;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,MAAgB;IAC1C,MAAM,MAAM,GAAiB,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAE7C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAClC,IAAI,iBAAiB,CAAC,QAAQ,CAAC,KAAwB,CAAC,EAAE,CAAC;gBACzD,MAAM,CAAC,UAAU,GAAG,KAAwB,CAAC;YAC/C,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACzC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC;aAAM,IAAI,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YAC5C,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,MAK3B;IACC,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,MAAM,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure markdown helpers. Kept free of any `react-markdown` import so it can be
|
|
3
|
+
* unit-tested under Jest's CJS loader (react-markdown is ESM-only and isn't
|
|
4
|
+
* transformed). The React rendering wrapper lives in components/ui/markdown.tsx.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Heuristic: does this string contain syntax the author intended as Markdown
|
|
8
|
+
* (bold, headings, fenced code, real multi-item lists, links, block quotes)?
|
|
9
|
+
*
|
|
10
|
+
* Used to decide whether structured/agent output (e.g. a tool result that
|
|
11
|
+
* might be raw JSON) should render as Markdown or stay a monospace <pre>.
|
|
12
|
+
* Plain prose with a single leading `1. …` sentence is NOT treated as
|
|
13
|
+
* markdown — running it through a renderer fragments it into a lonely <ol>.
|
|
14
|
+
*/
|
|
15
|
+
export declare function hasRealMarkdown(text: string): boolean;
|
|
16
|
+
//# sourceMappingURL=markdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../markdown.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AAEH;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAYrD"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright OpenSearch Contributors
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Pure markdown helpers. Kept free of any `react-markdown` import so it can be
|
|
7
|
+
* unit-tested under Jest's CJS loader (react-markdown is ESM-only and isn't
|
|
8
|
+
* transformed). The React rendering wrapper lives in components/ui/markdown.tsx.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Heuristic: does this string contain syntax the author intended as Markdown
|
|
12
|
+
* (bold, headings, fenced code, real multi-item lists, links, block quotes)?
|
|
13
|
+
*
|
|
14
|
+
* Used to decide whether structured/agent output (e.g. a tool result that
|
|
15
|
+
* might be raw JSON) should render as Markdown or stay a monospace <pre>.
|
|
16
|
+
* Plain prose with a single leading `1. …` sentence is NOT treated as
|
|
17
|
+
* markdown — running it through a renderer fragments it into a lonely <ol>.
|
|
18
|
+
*/
|
|
19
|
+
export function hasRealMarkdown(text) {
|
|
20
|
+
if (!text)
|
|
21
|
+
return false;
|
|
22
|
+
if (/\*\*[^*\n]+\*\*/.test(text))
|
|
23
|
+
return true; // bold
|
|
24
|
+
if (/__[^_\n]+__/.test(text))
|
|
25
|
+
return true; // bold (underscore)
|
|
26
|
+
if (/^#{1,6}\s+\S/m.test(text))
|
|
27
|
+
return true; // headings
|
|
28
|
+
if (/```/.test(text))
|
|
29
|
+
return true; // fenced code
|
|
30
|
+
if (/`[^`\n]+`/.test(text))
|
|
31
|
+
return true; // inline code
|
|
32
|
+
if (/!?\[[^\]]+\]\([^)]+\)/.test(text))
|
|
33
|
+
return true; // links / images
|
|
34
|
+
if (/(^|\n)[*\-]\s+\S.*\n[*\-]\s+/.test(text))
|
|
35
|
+
return true; // bullet list (>=2)
|
|
36
|
+
if (/(^|\n)\d+\.\s+\S.*\n\d+\.\s+/.test(text))
|
|
37
|
+
return true; // numbered list (>=2)
|
|
38
|
+
if (/^>\s/m.test(text))
|
|
39
|
+
return true; // block quote
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=markdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../markdown.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AAEH;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxB,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,OAAO;IACtD,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,oBAAoB;IAC/D,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,WAAW;IACxD,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,cAAc;IACjD,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,cAAc;IACvD,IAAI,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,iBAAiB;IACtE,IAAI,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,oBAAoB;IAChF,IAAI,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,sBAAsB;IAClF,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,cAAc;IACnD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expect.d.ts","sourceRoot":"","sources":["../../../matchers/expect.ts"],"names":[],"mappings":"AA+LA,8EAA8E;AAC9E,eAAO,MAAM,MAAM,mBAAc,CAAC"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright OpenSearch Contributors
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Chai-based `expect` with two extensions:
|
|
7
|
+
*
|
|
8
|
+
* 1. A recording plugin that captures every assertion outcome on the
|
|
9
|
+
* active matcher session (so the runner can persist per-matcher
|
|
10
|
+
* results and the UI can show a breakdown).
|
|
11
|
+
*
|
|
12
|
+
* 2. Custom matchers tailored to agent trajectories:
|
|
13
|
+
* - `.haveCalledTool(name)` — tool was invoked
|
|
14
|
+
* - `.haveStepsOfType(type)` — at least one step of given type
|
|
15
|
+
* - `.haveOutputMatching(regex)` — final response matches regex
|
|
16
|
+
* - `.haveCompletedWithin(ms)` — durationMs is below threshold
|
|
17
|
+
*
|
|
18
|
+
* Chai's BDD style: `expect(value).to.<matcher>(...)`.
|
|
19
|
+
*/
|
|
20
|
+
import * as chai from 'chai';
|
|
21
|
+
import { recordVerdict } from './session.js';
|
|
22
|
+
let pluginsInstalled = false;
|
|
23
|
+
/**
|
|
24
|
+
* Install the recording plugin once per process. Subsequent calls are
|
|
25
|
+
* no-ops so the plugin doesn't double-record when the SDK is loaded
|
|
26
|
+
* multiple times in the same Node session.
|
|
27
|
+
*/
|
|
28
|
+
function ensurePluginsInstalled() {
|
|
29
|
+
if (pluginsInstalled)
|
|
30
|
+
return;
|
|
31
|
+
pluginsInstalled = true;
|
|
32
|
+
const Assertion = chai.Assertion;
|
|
33
|
+
const utils = chai.util;
|
|
34
|
+
// ─── Recording plugin ────────────────────────────────────────────────
|
|
35
|
+
// Wraps Assertion.prototype.assert so every chai expr produces a
|
|
36
|
+
// MatcherResult on the active session.
|
|
37
|
+
const originalAssert = Assertion.prototype.assert;
|
|
38
|
+
Assertion.prototype.assert = function (expr, msg, negateMsg, expected, actual, showDiff) {
|
|
39
|
+
const negate = utils.flag(this, 'negate');
|
|
40
|
+
const ok = negate ? !expr : !!expr;
|
|
41
|
+
// chai resolves #{this}, #{exp}, #{act} placeholders only when it builds
|
|
42
|
+
// its own error message. We resolve them here so the recorded
|
|
43
|
+
// description is human-readable in the UI for both passing and failing
|
|
44
|
+
// assertions.
|
|
45
|
+
const description = describeAssertion(this, expr, msg, negateMsg, expected, actual, utils);
|
|
46
|
+
try {
|
|
47
|
+
const result = originalAssert.call(this, expr, msg, negateMsg, expected, actual, showDiff);
|
|
48
|
+
if (description) {
|
|
49
|
+
recordVerdict({
|
|
50
|
+
description,
|
|
51
|
+
pass: true,
|
|
52
|
+
method: 'code-assertion',
|
|
53
|
+
actual: safeClone(actual ?? utils.flag(this, 'object')),
|
|
54
|
+
expected: safeClone(expected),
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
return result;
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
if (description) {
|
|
61
|
+
recordVerdict({
|
|
62
|
+
description,
|
|
63
|
+
pass: false,
|
|
64
|
+
method: 'code-assertion',
|
|
65
|
+
actual: safeClone(actual ?? utils.flag(this, 'object')),
|
|
66
|
+
expected: safeClone(expected),
|
|
67
|
+
errorMessage: err?.message || String(err),
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
throw err;
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
// ─── Custom matchers ──────────────────────────────────────────────────
|
|
74
|
+
/**
|
|
75
|
+
* `.haveCalledTool(toolName, argsPartial?)`
|
|
76
|
+
* Asserts that `actual` is an array of TrajectoryStep with at least one
|
|
77
|
+
* `action` step whose toolName matches and whose toolArgs is a superset
|
|
78
|
+
* of `argsPartial` (when provided).
|
|
79
|
+
*/
|
|
80
|
+
Assertion.addMethod('haveCalledTool', function (toolName, argsPartial) {
|
|
81
|
+
const trajectory = utils.flag(this, 'object');
|
|
82
|
+
if (!Array.isArray(trajectory)) {
|
|
83
|
+
this.assert(false, 'expected an array of TrajectoryStep', '', toolName, trajectory);
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
const matches = trajectory.filter((step) => step?.type === 'action' && step?.toolName === toolName);
|
|
87
|
+
let hit = matches[0];
|
|
88
|
+
if (argsPartial && matches.length > 0) {
|
|
89
|
+
hit = matches.find((s) => isSupersetOf(s.toolArgs ?? s.input, argsPartial));
|
|
90
|
+
}
|
|
91
|
+
const argsLabel = argsPartial ? ` with args ${JSON.stringify(argsPartial)}` : '';
|
|
92
|
+
this.assert(!!hit, `expected trajectory to have called tool '${toolName}'${argsLabel}`, `expected trajectory to NOT have called tool '${toolName}'${argsLabel}`, toolName, matches.map((m) => ({ toolName: m.toolName, toolArgs: m.toolArgs ?? m.input })));
|
|
93
|
+
});
|
|
94
|
+
/**
|
|
95
|
+
* `.haveStepsOfType(type)` — at least one step has the given `type`
|
|
96
|
+
* (e.g. 'thinking', 'action', 'response', 'tool_result').
|
|
97
|
+
*/
|
|
98
|
+
Assertion.addMethod('haveStepsOfType', function (type) {
|
|
99
|
+
const trajectory = utils.flag(this, 'object');
|
|
100
|
+
const arr = Array.isArray(trajectory) ? trajectory : [];
|
|
101
|
+
const found = arr.filter((s) => s?.type === type);
|
|
102
|
+
this.assert(found.length > 0, `expected trajectory to have at least one step of type '${type}'`, `expected trajectory to have NO steps of type '${type}' but found ${found.length}`, type, arr.map((s) => s?.type));
|
|
103
|
+
});
|
|
104
|
+
/**
|
|
105
|
+
* `.haveOutputMatching(pattern)` — `actual` is a string and matches the
|
|
106
|
+
* given regex (or contains the given substring).
|
|
107
|
+
*/
|
|
108
|
+
Assertion.addMethod('haveOutputMatching', function (pattern) {
|
|
109
|
+
const text = utils.flag(this, 'object');
|
|
110
|
+
const str = typeof text === 'string' ? text : '';
|
|
111
|
+
const re = pattern instanceof RegExp ? pattern : new RegExp(escapeRegex(String(pattern)));
|
|
112
|
+
this.assert(re.test(str), `expected output to match ${re}`, `expected output to NOT match ${re}`, pattern, str);
|
|
113
|
+
});
|
|
114
|
+
/**
|
|
115
|
+
* `.haveCompletedWithin(thresholdMs)` — `actual` is an EvalResult-shaped
|
|
116
|
+
* object whose `durationMs` is below `thresholdMs`.
|
|
117
|
+
*/
|
|
118
|
+
Assertion.addMethod('haveCompletedWithin', function (thresholdMs) {
|
|
119
|
+
const obj = utils.flag(this, 'object');
|
|
120
|
+
const duration = obj?.durationMs ?? 0;
|
|
121
|
+
this.assert(duration <= thresholdMs, `expected to have completed within ${thresholdMs}ms (took ${duration}ms)`, `expected to have NOT completed within ${thresholdMs}ms`, thresholdMs, duration);
|
|
122
|
+
});
|
|
123
|
+
/**
|
|
124
|
+
* `.toPass()` — assert a judge {@link Verdict} passed. Gives `judge()`'s
|
|
125
|
+
* non-throwing verdict an ergonomic gate:
|
|
126
|
+
* expect(await judge(result, claim)).toPass();
|
|
127
|
+
* Reads `verdict.pass`; surfaces `verdict.reasoning` / `errorMessage` on
|
|
128
|
+
* failure so the recorded matcher is actionable.
|
|
129
|
+
*/
|
|
130
|
+
Assertion.addMethod('toPass', function () {
|
|
131
|
+
const verdict = utils.flag(this, 'object');
|
|
132
|
+
const passed = !!verdict?.pass;
|
|
133
|
+
const detail = verdict?.errorMessage || verdict?.reasoning || '';
|
|
134
|
+
this.assert(passed, `expected judge verdict to pass${detail ? ` — ${detail}` : ''}`, `expected judge verdict to NOT pass`, true, passed);
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
ensurePluginsInstalled();
|
|
138
|
+
/** The user-facing `expect` — chai's expect with our plugin pre-installed. */
|
|
139
|
+
export const expect = chai.expect;
|
|
140
|
+
/**
|
|
141
|
+
* Build a UI-friendly description for an assertion. Chai's raw msg/negateMsg
|
|
142
|
+
* contain `#{this}`, `#{exp}`, `#{act}` placeholders that only get resolved
|
|
143
|
+
* by chai when it builds an error message. We resolve them here so the
|
|
144
|
+
* description is readable on pass too.
|
|
145
|
+
*/
|
|
146
|
+
function describeAssertion(ctx, _expr, msg, negateMsg, expected, actual, utils) {
|
|
147
|
+
const rawMsg = typeof msg === 'function' ? msg() : msg;
|
|
148
|
+
const rawNeg = typeof negateMsg === 'function' ? negateMsg() : negateMsg;
|
|
149
|
+
const template = rawMsg || rawNeg || '';
|
|
150
|
+
if (!template)
|
|
151
|
+
return '';
|
|
152
|
+
const obj = utils.flag(ctx, 'object');
|
|
153
|
+
const resolved = template
|
|
154
|
+
.replace(/#\{this\}/g, () => safeInspect(obj, utils))
|
|
155
|
+
.replace(/#\{act\}/g, () => safeInspect(actual, utils))
|
|
156
|
+
.replace(/#\{exp\}/g, () => safeInspect(expected, utils));
|
|
157
|
+
return shortDescription(resolved);
|
|
158
|
+
}
|
|
159
|
+
function safeInspect(v, utils) {
|
|
160
|
+
try {
|
|
161
|
+
const str = utils.objDisplay && typeof utils.objDisplay === 'function'
|
|
162
|
+
? utils.objDisplay(v)
|
|
163
|
+
: utils.inspect
|
|
164
|
+
? utils.inspect(v)
|
|
165
|
+
: String(v);
|
|
166
|
+
if (typeof str !== 'string')
|
|
167
|
+
return String(v);
|
|
168
|
+
return str.length > 60 ? `${str.slice(0, 57)}\u2026` : str;
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
return String(v);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
/** Trim chai's verbose default messages to a UI-friendly description. */
|
|
175
|
+
function shortDescription(msg) {
|
|
176
|
+
// chai messages look like "expected X to contain Y". Drop the "expected X "
|
|
177
|
+
// prefix when we have a useful object label so the UI shows the matcher,
|
|
178
|
+
// not the actual data dump.
|
|
179
|
+
const trimmed = msg.replace(/^expected\s+/i, '');
|
|
180
|
+
// Cap at 120 chars to keep tables readable.
|
|
181
|
+
return trimmed.length > 120 ? `${trimmed.slice(0, 117)}\u2026` : trimmed;
|
|
182
|
+
}
|
|
183
|
+
/** Best-effort clone for serialization \u2014 stringify primitives and small objects. */
|
|
184
|
+
function safeClone(v) {
|
|
185
|
+
if (v === undefined || v === null)
|
|
186
|
+
return v;
|
|
187
|
+
if (typeof v === 'string' || typeof v === 'number' || typeof v === 'boolean')
|
|
188
|
+
return v;
|
|
189
|
+
try {
|
|
190
|
+
const s = JSON.stringify(v);
|
|
191
|
+
if (s && s.length < 2000)
|
|
192
|
+
return JSON.parse(s);
|
|
193
|
+
return s ? `${s.slice(0, 1997)}...` : '[unserializable]';
|
|
194
|
+
}
|
|
195
|
+
catch {
|
|
196
|
+
return '[circular]';
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
function isSupersetOf(actual, expected) {
|
|
200
|
+
if (typeof actual !== 'object' || actual === null)
|
|
201
|
+
return false;
|
|
202
|
+
for (const [k, v] of Object.entries(expected)) {
|
|
203
|
+
if (!(k in actual))
|
|
204
|
+
return false;
|
|
205
|
+
if (typeof v === 'object' && v !== null) {
|
|
206
|
+
if (!isSupersetOf(actual[k], v))
|
|
207
|
+
return false;
|
|
208
|
+
}
|
|
209
|
+
else if (actual[k] !== v) {
|
|
210
|
+
return false;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
return true;
|
|
214
|
+
}
|
|
215
|
+
function escapeRegex(s) {
|
|
216
|
+
return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
217
|
+
}
|
|
218
|
+
// ─── TypeScript module augmentation ─────────────────────────────────
|
|
219
|
+
// chai@4 uses ambient namespace declarations rather than modules, so we
|
|
220
|
+
// can't `declare module 'chai'` here. The custom matchers above
|
|
221
|
+
// (haveCalledTool, haveStepsOfType, haveOutputMatching, haveCompletedWithin)
|
|
222
|
+
// are registered via `Assertion.addMethod` and work at runtime; user code
|
|
223
|
+
// that wants type-safe access can either cast `as any` or drop a tiny
|
|
224
|
+
// .d.ts in their own project that augments `Chai.Assertion`.
|
|
225
|
+
//# sourceMappingURL=expect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expect.js","sourceRoot":"","sources":["../../../matchers/expect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { expect } from './expect.js';
|
|
2
|
+
export type { TracesAccessor } from './traces.js';
|
|
3
|
+
export { buildTracesAccessor, emptyTracesAccessor, unavailableTracesAccessor } from './traces.js';
|
|
4
|
+
export type { MatcherResult, MatcherMethod } from './types.js';
|
|
5
|
+
export { getJudgeMatcherResults, getJudgeReasoningText, recordJudgeMatcherResult, buildJudgeMatcherEntry, formatExpectedOutcomesAsClaim, } from './judgeAccessor.js';
|
|
6
|
+
export type { JudgeAccessReport, JudgeResultLike } from './judgeAccessor.js';
|
|
7
|
+
export { startSession, endSession, isSessionActive, recordVerdict, recordWithTiming, runInSession, } from './session.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|