@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,158 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright OpenSearch Contributors
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Kiro CLI Connector
|
|
7
|
+
*
|
|
8
|
+
* Specialized subprocess connector for `kiro-cli chat --no-interactive`.
|
|
9
|
+
*
|
|
10
|
+
* Why this exists
|
|
11
|
+
* ---------------
|
|
12
|
+
* The base `SubprocessConnector` parses Kiro's stdout as a stream of plain
|
|
13
|
+
* text lines (assistant chunks). That works for live UI streaming but loses
|
|
14
|
+
* all evidence of which tools the agent actually invoked. The judge then has
|
|
15
|
+
* nothing to evidence-check against — a polished hallucinated narrative
|
|
16
|
+
* scores the same as a tool-grounded investigation.
|
|
17
|
+
*
|
|
18
|
+
* Kiro DOES emit structured tool events, but on stderr in a line-oriented
|
|
19
|
+
* format:
|
|
20
|
+
*
|
|
21
|
+
* [tool] Running: <command_or_invocation>
|
|
22
|
+
* [tool] status: <Completed|Failed|Cancelled|...>
|
|
23
|
+
*
|
|
24
|
+
* This connector intercepts those stderr lines and converts them into
|
|
25
|
+
* proper `action` + `tool_result` trajectory steps, so:
|
|
26
|
+
* - The judge can see what tools ran (and whether they succeeded).
|
|
27
|
+
* - SDK matchers like `expect(traj).to.haveCalledTool('glob')` actually
|
|
28
|
+
* have something to assert against.
|
|
29
|
+
* - A future "RCA + Grounded" evaluator can require that any factual
|
|
30
|
+
* claim be backed by at least one `tool_result` step.
|
|
31
|
+
*
|
|
32
|
+
* Stdout streaming behaviour (line-by-line `assistant` chunks plus a final
|
|
33
|
+
* consolidated `response`) is inherited unchanged from the base class.
|
|
34
|
+
*/
|
|
35
|
+
import { ToolCallStatus } from '../../../types/index.js';
|
|
36
|
+
import { SubprocessConnector } from '../../../services/connectors/subprocess/SubprocessConnector.js';
|
|
37
|
+
/**
|
|
38
|
+
* Default Kiro configuration.
|
|
39
|
+
*
|
|
40
|
+
* `--agent-engine v2` is required so slash commands like `/<slash-command> ...`
|
|
41
|
+
* route through the agent registry. The default (v1) non-interactive parser
|
|
42
|
+
* treats `/<word>` as an unknown subcommand and exits early.
|
|
43
|
+
*
|
|
44
|
+
* `--no-interactive` is required for headless invocation but suppresses
|
|
45
|
+
* sqlite session persistence, which is why we rely on stderr `[tool]`
|
|
46
|
+
* markers rather than the on-disk conversations_v2 table.
|
|
47
|
+
*/
|
|
48
|
+
const KIRO_DEFAULT_CONFIG = {
|
|
49
|
+
command: 'kiro-cli',
|
|
50
|
+
args: [
|
|
51
|
+
'chat',
|
|
52
|
+
'--agent-engine', 'v2',
|
|
53
|
+
'--no-interactive',
|
|
54
|
+
'--trust-all-tools',
|
|
55
|
+
],
|
|
56
|
+
env: {},
|
|
57
|
+
inputMode: 'arg',
|
|
58
|
+
outputParser: 'streaming',
|
|
59
|
+
timeout: 600000, // 10 minutes
|
|
60
|
+
};
|
|
61
|
+
export class KiroConnector extends SubprocessConnector {
|
|
62
|
+
constructor(config) {
|
|
63
|
+
super({ ...KIRO_DEFAULT_CONFIG, ...config });
|
|
64
|
+
this.type = 'kiro';
|
|
65
|
+
this.name = 'Kiro CLI';
|
|
66
|
+
this.traceContext = { propagateEnv: true, serviceName: 'kiro-agent' };
|
|
67
|
+
/** Carry-over for a partial last line on stderr stream */
|
|
68
|
+
this.stderrLineBuffer = '';
|
|
69
|
+
/** Tool name from the last unmatched `[tool] Running:` line, used to
|
|
70
|
+
* attach the same toolName to the corresponding `[tool] status:` row. */
|
|
71
|
+
this.pendingToolName = null;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Convert kiro-cli's stderr `[tool]` markers into trajectory steps.
|
|
75
|
+
*
|
|
76
|
+
* Each chunk may straddle line boundaries, so we accumulate into
|
|
77
|
+
* `stderrLineBuffer` and only consume complete lines (the trailing
|
|
78
|
+
* partial line is held until the next chunk or `onBeforeStreamEnd`).
|
|
79
|
+
*/
|
|
80
|
+
parseStderrChunk(chunk, trajectory, onProgress) {
|
|
81
|
+
this.stderrLineBuffer += chunk;
|
|
82
|
+
const lines = this.stderrLineBuffer.split('\n');
|
|
83
|
+
this.stderrLineBuffer = lines.pop() || '';
|
|
84
|
+
for (const raw of lines) {
|
|
85
|
+
this.processStderrLine(raw, trajectory, onProgress);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Drain any held partial line from the stderr buffer and reset
|
|
90
|
+
* per-run state, then defer to the base class to flush the
|
|
91
|
+
* consolidated stdout response step.
|
|
92
|
+
*/
|
|
93
|
+
onBeforeStreamEnd(trajectory, onProgress) {
|
|
94
|
+
if (this.stderrLineBuffer.trim()) {
|
|
95
|
+
this.processStderrLine(this.stderrLineBuffer, trajectory, onProgress);
|
|
96
|
+
}
|
|
97
|
+
this.stderrLineBuffer = '';
|
|
98
|
+
this.pendingToolName = null;
|
|
99
|
+
// Base class emits the consolidated `response` step from buffered stdout.
|
|
100
|
+
super.onBeforeStreamEnd(trajectory, onProgress);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Parse a single stderr line. Recognised forms:
|
|
104
|
+
*
|
|
105
|
+
* [tool] Running: <command> -> emit `action` step
|
|
106
|
+
* [tool] status: Completed -> emit `tool_result` (SUCCESS)
|
|
107
|
+
* [tool] status: Failed -> emit `tool_result` (FAILURE)
|
|
108
|
+
* [tool] status: <anything else> -> emit `tool_result` (FAILURE)
|
|
109
|
+
*
|
|
110
|
+
* Other stderr lines (AWS SDK warnings, telemetry info, etc.) are ignored.
|
|
111
|
+
*/
|
|
112
|
+
processStderrLine(raw, trajectory, onProgress) {
|
|
113
|
+
// Drop NUL/control bytes that occasionally slip into stderr
|
|
114
|
+
const line = raw.replace(/[\x00-\x08\x0b-\x1f\x7f]/g, '').trim();
|
|
115
|
+
if (!line.startsWith('[tool]'))
|
|
116
|
+
return;
|
|
117
|
+
const m = line.match(/^\[tool\]\s+(Running|status):\s*(.*)$/i);
|
|
118
|
+
if (!m)
|
|
119
|
+
return;
|
|
120
|
+
const kind = m[1].toLowerCase();
|
|
121
|
+
const payload = m[2].trim();
|
|
122
|
+
if (kind === 'running') {
|
|
123
|
+
// Best-effort tool name: first whitespace-separated token. For
|
|
124
|
+
// shell tool calls this is the command (e.g. `wc`, `find`); for
|
|
125
|
+
// first-party tools (e.g. `glob`, `use_subagent`) it's the tool
|
|
126
|
+
// name itself. We keep the full payload as `command` in toolArgs
|
|
127
|
+
// so SDK matchers and judges can pattern-match on it.
|
|
128
|
+
const toolName = payload.split(/\s+/)[0] || 'unknown';
|
|
129
|
+
const toolArgs = { command: payload };
|
|
130
|
+
this.pendingToolName = toolName;
|
|
131
|
+
const step = this.createStep('action', JSON.stringify(toolArgs), {
|
|
132
|
+
toolName,
|
|
133
|
+
toolArgs,
|
|
134
|
+
});
|
|
135
|
+
trajectory.push(step);
|
|
136
|
+
onProgress?.(step);
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
if (kind === 'status') {
|
|
140
|
+
const success = /^(Completed|Success)/i.test(payload);
|
|
141
|
+
const step = this.createStep('tool_result', `status: ${payload}`, {
|
|
142
|
+
status: success ? ToolCallStatus.SUCCESS : ToolCallStatus.FAILURE,
|
|
143
|
+
toolName: this.pendingToolName ?? undefined,
|
|
144
|
+
});
|
|
145
|
+
trajectory.push(step);
|
|
146
|
+
onProgress?.(step);
|
|
147
|
+
this.pendingToolName = null;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
async healthCheck(endpoint, auth) {
|
|
151
|
+
return super.healthCheck(endpoint || 'kiro-cli', auth);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Default instance for convenience.
|
|
156
|
+
*/
|
|
157
|
+
export const kiroConnector = new KiroConnector();
|
|
158
|
+
//# sourceMappingURL=KiroConnector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KiroConnector.js","sourceRoot":"","sources":["../../../../../services/connectors/kiro/KiroConnector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LangGraph REST Connector
|
|
3
|
+
* Handles non-streaming REST calls to LangGraph agents
|
|
4
|
+
*
|
|
5
|
+
* For AG-UI streaming LangGraph agents, use the existing agui-streaming connector.
|
|
6
|
+
* This connector is for LangGraph instances exposed via direct REST API.
|
|
7
|
+
*/
|
|
8
|
+
import type { TrajectoryStep } from '../../../types/index.js';
|
|
9
|
+
import { BaseConnector } from '../../../services/connectors/base/BaseConnector.js';
|
|
10
|
+
import type { ConnectorAuth, ConnectorRequest, ConnectorResponse, ConnectorProgressCallback, ConnectorRawEventCallback } from '../../../services/connectors/types.js';
|
|
11
|
+
/**
|
|
12
|
+
* LangGraph REST Connector
|
|
13
|
+
*
|
|
14
|
+
* Communicates with LangGraph agents via the LangGraph REST API.
|
|
15
|
+
* Uses the /invoke endpoint for synchronous execution.
|
|
16
|
+
* For streaming LangGraph agents, use the agui-streaming connector instead.
|
|
17
|
+
*
|
|
18
|
+
* Configuration:
|
|
19
|
+
* - endpoint: Base URL of the LangGraph server (e.g., "http://localhost:8123")
|
|
20
|
+
* - connectorConfig.graphId: Graph/assistant ID (defaults to "agent")
|
|
21
|
+
* - connectorConfig.threadId: Optional thread ID for multi-turn
|
|
22
|
+
*/
|
|
23
|
+
export declare class LangGraphConnector extends BaseConnector {
|
|
24
|
+
readonly type: "langgraph";
|
|
25
|
+
readonly name = "LangGraph (REST)";
|
|
26
|
+
traceContext: {
|
|
27
|
+
propagateHeader: boolean;
|
|
28
|
+
};
|
|
29
|
+
readonly supportsStreaming = false;
|
|
30
|
+
buildPayload(request: ConnectorRequest): any;
|
|
31
|
+
execute(endpoint: string, request: ConnectorRequest, auth: ConnectorAuth, onProgress?: ConnectorProgressCallback, onRawEvent?: ConnectorRawEventCallback): Promise<ConnectorResponse>;
|
|
32
|
+
parseResponse(data: any): TrajectoryStep[];
|
|
33
|
+
healthCheck(endpoint: string, auth: ConnectorAuth): Promise<boolean>;
|
|
34
|
+
}
|
|
35
|
+
export declare const langgraphConnector: LangGraphConnector;
|
|
36
|
+
//# sourceMappingURL=LangGraphConnector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LangGraphConnector.d.ts","sourceRoot":"","sources":["../../../../../services/connectors/langgraph/LangGraphConnector.ts"],"names":[],"mappings":"AAKA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,yBAAyB,EACzB,yBAAyB,EAC1B,MAAM,6BAA6B,CAAC;AAErC;;;;;;;;;;;GAWG;AACH,qBAAa,kBAAmB,SAAQ,aAAa;IACnD,QAAQ,CAAC,IAAI,EAAG,WAAW,CAAU;IACrC,QAAQ,CAAC,IAAI,sBAAsB;IAE1B,YAAY;;MAA6B;IAClD,QAAQ,CAAC,iBAAiB,SAAS;IAEnC,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,GAAG;IAoBtC,OAAO,CACX,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,aAAa,EACnB,UAAU,CAAC,EAAE,yBAAyB,EACtC,UAAU,CAAC,EAAE,yBAAyB,GACrC,OAAO,CAAC,iBAAiB,CAAC;IAgD7B,aAAa,CAAC,IAAI,EAAE,GAAG,GAAG,cAAc,EAAE;IA2EpC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;CAoB3E;AAED,eAAO,MAAM,kBAAkB,oBAA2B,CAAC"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright OpenSearch Contributors
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
import { BaseConnector } from '../../../services/connectors/base/BaseConnector.js';
|
|
6
|
+
/**
|
|
7
|
+
* LangGraph REST Connector
|
|
8
|
+
*
|
|
9
|
+
* Communicates with LangGraph agents via the LangGraph REST API.
|
|
10
|
+
* Uses the /invoke endpoint for synchronous execution.
|
|
11
|
+
* For streaming LangGraph agents, use the agui-streaming connector instead.
|
|
12
|
+
*
|
|
13
|
+
* Configuration:
|
|
14
|
+
* - endpoint: Base URL of the LangGraph server (e.g., "http://localhost:8123")
|
|
15
|
+
* - connectorConfig.graphId: Graph/assistant ID (defaults to "agent")
|
|
16
|
+
* - connectorConfig.threadId: Optional thread ID for multi-turn
|
|
17
|
+
*/
|
|
18
|
+
export class LangGraphConnector extends BaseConnector {
|
|
19
|
+
constructor() {
|
|
20
|
+
super(...arguments);
|
|
21
|
+
this.type = 'langgraph';
|
|
22
|
+
this.name = 'LangGraph (REST)';
|
|
23
|
+
this.traceContext = { propagateHeader: true };
|
|
24
|
+
this.supportsStreaming = false;
|
|
25
|
+
}
|
|
26
|
+
buildPayload(request) {
|
|
27
|
+
const config = request.connectorConfig || {};
|
|
28
|
+
return {
|
|
29
|
+
input: {
|
|
30
|
+
messages: [
|
|
31
|
+
{
|
|
32
|
+
role: 'user',
|
|
33
|
+
content: request.testCase.initialPrompt,
|
|
34
|
+
},
|
|
35
|
+
],
|
|
36
|
+
},
|
|
37
|
+
config: {
|
|
38
|
+
configurable: {
|
|
39
|
+
...(request.modelId && { model: request.modelId }),
|
|
40
|
+
...config.configurable,
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
async execute(endpoint, request, auth, onProgress, onRawEvent) {
|
|
46
|
+
const payload = request.payload || this.buildPayload(request);
|
|
47
|
+
const headers = this.buildAuthHeaders(auth);
|
|
48
|
+
this.injectTraceparentHeaders(headers);
|
|
49
|
+
const config = request.connectorConfig || {};
|
|
50
|
+
const graphId = config.graphId || 'agent';
|
|
51
|
+
// Build the invoke URL
|
|
52
|
+
const baseUrl = endpoint.replace(/\/+$/, '');
|
|
53
|
+
const threadId = config.threadId || request.threadId;
|
|
54
|
+
const invokeUrl = threadId
|
|
55
|
+
? `${baseUrl}/threads/${threadId}/runs/wait`
|
|
56
|
+
: `${baseUrl}/assistants/${graphId}/invoke`;
|
|
57
|
+
this.debug('Executing LangGraph request');
|
|
58
|
+
this.debug('URL:', invokeUrl);
|
|
59
|
+
const response = await fetch(invokeUrl, {
|
|
60
|
+
method: 'POST',
|
|
61
|
+
headers: {
|
|
62
|
+
'Content-Type': 'application/json',
|
|
63
|
+
...headers,
|
|
64
|
+
},
|
|
65
|
+
body: JSON.stringify(payload),
|
|
66
|
+
});
|
|
67
|
+
if (!response.ok) {
|
|
68
|
+
const errorText = await response.text();
|
|
69
|
+
throw new Error(`LangGraph request failed: ${response.status} - ${errorText}`);
|
|
70
|
+
}
|
|
71
|
+
const data = await response.json();
|
|
72
|
+
onRawEvent?.(data);
|
|
73
|
+
const trajectory = this.parseResponse(data);
|
|
74
|
+
trajectory.forEach(step => onProgress?.(step));
|
|
75
|
+
return {
|
|
76
|
+
trajectory,
|
|
77
|
+
runId: data.run_id || data.thread_id || threadId || null,
|
|
78
|
+
rawEvents: [data],
|
|
79
|
+
metadata: {
|
|
80
|
+
graphId,
|
|
81
|
+
threadId: data.thread_id || threadId,
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
parseResponse(data) {
|
|
86
|
+
const steps = [];
|
|
87
|
+
// LangGraph invoke response format: { output: { messages: [...] } }
|
|
88
|
+
// Or thread-based: { values: { messages: [...] } }
|
|
89
|
+
const messages = data.output?.messages || data.values?.messages || data.messages || [];
|
|
90
|
+
for (const msg of messages) {
|
|
91
|
+
const role = msg.type || msg.role;
|
|
92
|
+
const content = typeof msg.content === 'string'
|
|
93
|
+
? msg.content
|
|
94
|
+
: Array.isArray(msg.content)
|
|
95
|
+
? msg.content.map((c) => c.text || JSON.stringify(c)).join('\n')
|
|
96
|
+
: JSON.stringify(msg.content);
|
|
97
|
+
if (role === 'ai' || role === 'assistant') {
|
|
98
|
+
// Check for tool calls in the AI message
|
|
99
|
+
if (msg.tool_calls && Array.isArray(msg.tool_calls) && msg.tool_calls.length > 0) {
|
|
100
|
+
for (const toolCall of msg.tool_calls) {
|
|
101
|
+
steps.push(this.createStep('action', `Calling ${toolCall.name}...`, {
|
|
102
|
+
toolName: toolCall.name,
|
|
103
|
+
toolArgs: toolCall.args,
|
|
104
|
+
}));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// AI reasoning or intermediate response
|
|
108
|
+
if (content && !msg.tool_calls?.length) {
|
|
109
|
+
steps.push(this.createStep('assistant', content));
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
else if (role === 'tool') {
|
|
113
|
+
steps.push(this.createStep('tool_result', content, {
|
|
114
|
+
toolName: msg.name,
|
|
115
|
+
status: 'SUCCESS',
|
|
116
|
+
}));
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
// The last AI message without tool calls is the final response
|
|
120
|
+
const lastAssistant = [...steps].reverse().find(s => s.type === 'assistant');
|
|
121
|
+
if (lastAssistant) {
|
|
122
|
+
lastAssistant.type = 'response';
|
|
123
|
+
}
|
|
124
|
+
// Handle intermediate_steps format (older LangGraph versions)
|
|
125
|
+
if (data.intermediate_steps && Array.isArray(data.intermediate_steps)) {
|
|
126
|
+
for (const [action, observation] of data.intermediate_steps) {
|
|
127
|
+
if (action?.tool) {
|
|
128
|
+
steps.push(this.createStep('action', `Calling ${action.tool}...`, {
|
|
129
|
+
toolName: action.tool,
|
|
130
|
+
toolArgs: action.tool_input,
|
|
131
|
+
}));
|
|
132
|
+
}
|
|
133
|
+
if (observation !== undefined) {
|
|
134
|
+
const obsContent = typeof observation === 'string' ? observation : JSON.stringify(observation);
|
|
135
|
+
steps.push(this.createStep('tool_result', obsContent, {
|
|
136
|
+
status: 'SUCCESS',
|
|
137
|
+
}));
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
// Handle direct output field
|
|
142
|
+
if (data.output && typeof data.output === 'string' && steps.length === 0) {
|
|
143
|
+
steps.push(this.createStep('response', data.output));
|
|
144
|
+
}
|
|
145
|
+
// Fallback
|
|
146
|
+
if (steps.length === 0 && data) {
|
|
147
|
+
steps.push(this.createStep('response', JSON.stringify(data, null, 2)));
|
|
148
|
+
}
|
|
149
|
+
return steps;
|
|
150
|
+
}
|
|
151
|
+
async healthCheck(endpoint, auth) {
|
|
152
|
+
try {
|
|
153
|
+
const headers = this.buildAuthHeaders(auth);
|
|
154
|
+
const baseUrl = endpoint.replace(/\/+$/, '');
|
|
155
|
+
const response = await fetch(`${baseUrl}/ok`, {
|
|
156
|
+
method: 'GET',
|
|
157
|
+
headers,
|
|
158
|
+
});
|
|
159
|
+
return response.ok;
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
// Try root endpoint as fallback
|
|
163
|
+
try {
|
|
164
|
+
const headers = this.buildAuthHeaders(auth);
|
|
165
|
+
const response = await fetch(endpoint, { method: 'GET', headers });
|
|
166
|
+
return response.ok;
|
|
167
|
+
}
|
|
168
|
+
catch {
|
|
169
|
+
return false;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
export const langgraphConnector = new LangGraphConnector();
|
|
175
|
+
//# sourceMappingURL=LangGraphConnector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LangGraphConnector.js","sourceRoot":"","sources":["../../../../../services/connectors/langgraph/LangGraphConnector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AASzE;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,kBAAmB,SAAQ,aAAa;IAArD;;QACW,SAAI,GAAG,WAAoB,CAAC;QAC5B,SAAI,GAAG,kBAAkB,CAAC;QAE1B,iBAAY,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;QACzC,sBAAiB,GAAG,KAAK,CAAC;IA2KrC,CAAC;IAzKC,YAAY,CAAC,OAAyB;QACpC,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC;QAC7C,OAAO;YACL,KAAK,EAAE;gBACL,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,aAAa;qBACxC;iBACF;aACF;YACD,MAAM,EAAE;gBACN,YAAY,EAAE;oBACZ,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;oBAClD,GAAG,MAAM,CAAC,YAAY;iBACvB;aACF;SACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CACX,QAAgB,EAChB,OAAyB,EACzB,IAAmB,EACnB,UAAsC,EACtC,UAAsC;QAEtC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC;QAE1C,uBAAuB;QACvB,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;QACrD,MAAM,SAAS,GAAG,QAAQ;YACxB,CAAC,CAAC,GAAG,OAAO,YAAY,QAAQ,YAAY;YAC5C,CAAC,CAAC,GAAG,OAAO,eAAe,OAAO,SAAS,CAAC;QAE9C,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAE9B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE;YACtC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,GAAG,OAAO;aACX;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;SAC9B,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,CAAC,MAAM,MAAM,SAAS,EAAE,CAAC,CAAC;QACjF,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC;QAEnB,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC5C,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAE/C,OAAO;YACL,UAAU;YACV,KAAK,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,IAAI,QAAQ,IAAI,IAAI;YACxD,SAAS,EAAE,CAAC,IAAI,CAAC;YACjB,QAAQ,EAAE;gBACR,OAAO;gBACP,QAAQ,EAAE,IAAI,CAAC,SAAS,IAAI,QAAQ;aACrC;SACF,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,IAAS;QACrB,MAAM,KAAK,GAAqB,EAAE,CAAC;QAEnC,oEAAoE;QACpE,mDAAmD;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;QAEvF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC;YAClC,MAAM,OAAO,GAAG,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;gBAC7C,CAAC,CAAC,GAAG,CAAC,OAAO;gBACb,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;oBAC1B,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;oBACrE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAElC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC1C,yCAAyC;gBACzC,IAAI,GAAG,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACjF,KAAK,MAAM,QAAQ,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;wBACtC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,QAAQ,CAAC,IAAI,KAAK,EAAE;4BAClE,QAAQ,EAAE,QAAQ,CAAC,IAAI;4BACvB,QAAQ,EAAE,QAAQ,CAAC,IAAI;yBACxB,CAAC,CAAC,CAAC;oBACN,CAAC;gBACH,CAAC;gBAED,wCAAwC;gBACxC,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;oBACvC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC;iBAAM,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC3B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,OAAO,EAAE;oBACjD,QAAQ,EAAE,GAAG,CAAC,IAAI;oBAClB,MAAM,EAAE,SAA2B;iBACpC,CAAC,CAAC,CAAC;YACN,CAAC;QACH,CAAC;QAED,+DAA+D;QAC/D,MAAM,aAAa,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;QAC7E,IAAI,aAAa,EAAE,CAAC;YAClB,aAAa,CAAC,IAAI,GAAG,UAAU,CAAC;QAClC,CAAC;QAED,8DAA8D;QAC9D,IAAI,IAAI,CAAC,kBAAkB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACtE,KAAK,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC5D,IAAI,MAAM,EAAE,IAAI,EAAE,CAAC;oBACjB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,MAAM,CAAC,IAAI,KAAK,EAAE;wBAChE,QAAQ,EAAE,MAAM,CAAC,IAAI;wBACrB,QAAQ,EAAE,MAAM,CAAC,UAAU;qBAC5B,CAAC,CAAC,CAAC;gBACN,CAAC;gBACD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;oBAC9B,MAAM,UAAU,GAAG,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;oBAC/F,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,UAAU,EAAE;wBACpD,MAAM,EAAE,SAA2B;qBACpC,CAAC,CAAC,CAAC;gBACN,CAAC;YACH,CAAC;QACH,CAAC;QAED,6BAA6B;QAC7B,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACvD,CAAC;QAED,WAAW;QACX,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,QAAgB,EAAE,IAAmB;QACrD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC7C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,KAAK,EAAE;gBAC5C,MAAM,EAAE,KAAK;gBACb,OAAO;aACR,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC,EAAE,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,gCAAgC;YAChC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBAC5C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;gBACnE,OAAO,QAAQ,CAAC,EAAE,CAAC;YACrB,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,EAAE,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mock Connector
|
|
3
|
+
* Generates demo/test trajectory without calling a real agent
|
|
4
|
+
*/
|
|
5
|
+
import type { TrajectoryStep } from '../../../types/index.js';
|
|
6
|
+
import { BaseConnector } from '../../../services/connectors/base/BaseConnector.js';
|
|
7
|
+
import type { ConnectorAuth, ConnectorRequest, ConnectorResponse, ConnectorProgressCallback, ConnectorRawEventCallback } from '../../../services/connectors/types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Mock Connector for demo and testing
|
|
10
|
+
* Generates a realistic trajectory without calling a real agent
|
|
11
|
+
*/
|
|
12
|
+
export declare class MockConnector extends BaseConnector {
|
|
13
|
+
readonly type: "mock";
|
|
14
|
+
readonly name = "Demo Agent (Mock)";
|
|
15
|
+
readonly supportsStreaming = true;
|
|
16
|
+
/**
|
|
17
|
+
* Build payload - not used for mock but required by interface
|
|
18
|
+
*/
|
|
19
|
+
buildPayload(request: ConnectorRequest): any;
|
|
20
|
+
/**
|
|
21
|
+
* Execute mock request - generates realistic trajectory with delays
|
|
22
|
+
*/
|
|
23
|
+
execute(endpoint: string, request: ConnectorRequest, auth: ConnectorAuth, onProgress?: ConnectorProgressCallback, onRawEvent?: ConnectorRawEventCallback): Promise<ConnectorResponse>;
|
|
24
|
+
/**
|
|
25
|
+
* Parse raw events - for mock, just extract steps from our custom format
|
|
26
|
+
*/
|
|
27
|
+
parseResponse(rawEvents: any[]): TrajectoryStep[];
|
|
28
|
+
/**
|
|
29
|
+
* Health check - mock is always "healthy"
|
|
30
|
+
*/
|
|
31
|
+
healthCheck(endpoint: string, auth: ConnectorAuth): Promise<boolean>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Default instance for convenience
|
|
35
|
+
*/
|
|
36
|
+
export declare const mockConnector: MockConnector;
|
|
37
|
+
//# sourceMappingURL=MockConnector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MockConnector.d.ts","sourceRoot":"","sources":["../../../../../services/connectors/mock/MockConnector.ts"],"names":[],"mappings":"AAKA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,yBAAyB,EACzB,yBAAyB,EAC1B,MAAM,6BAA6B,CAAC;AAErC;;;GAGG;AACH,qBAAa,aAAc,SAAQ,aAAa;IAC9C,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAU;IAChC,QAAQ,CAAC,IAAI,uBAAuB;IACpC,QAAQ,CAAC,iBAAiB,QAAQ;IAElC;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,GAAG;IAO5C;;OAEG;IACG,OAAO,CACX,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,aAAa,EACnB,UAAU,CAAC,EAAE,yBAAyB,EACtC,UAAU,CAAC,EAAE,yBAAyB,GACrC,OAAO,CAAC,iBAAiB,CAAC;IAsG7B;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE;IAMjD;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;CAG3E;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,eAAsB,CAAC"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright OpenSearch Contributors
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
import { BaseConnector } from '../../../services/connectors/base/BaseConnector.js';
|
|
6
|
+
/**
|
|
7
|
+
* Mock Connector for demo and testing
|
|
8
|
+
* Generates a realistic trajectory without calling a real agent
|
|
9
|
+
*/
|
|
10
|
+
export class MockConnector extends BaseConnector {
|
|
11
|
+
constructor() {
|
|
12
|
+
super(...arguments);
|
|
13
|
+
this.type = 'mock';
|
|
14
|
+
this.name = 'Demo Agent (Mock)';
|
|
15
|
+
this.supportsStreaming = true;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Build payload - not used for mock but required by interface
|
|
19
|
+
*/
|
|
20
|
+
buildPayload(request) {
|
|
21
|
+
return {
|
|
22
|
+
question: request.testCase.initialPrompt,
|
|
23
|
+
context: request.testCase.context,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Execute mock request - generates realistic trajectory with delays
|
|
28
|
+
*/
|
|
29
|
+
async execute(endpoint, request, auth, onProgress, onRawEvent) {
|
|
30
|
+
const trajectory = [];
|
|
31
|
+
const rawEvents = [];
|
|
32
|
+
const runId = `mock-run-${Date.now()}`;
|
|
33
|
+
const sleep = (ms) => new Promise(r => setTimeout(r, ms));
|
|
34
|
+
this.debug('Generating mock trajectory for:', request.testCase.name);
|
|
35
|
+
// Helper to emit step
|
|
36
|
+
const emitStep = (step) => {
|
|
37
|
+
trajectory.push(step);
|
|
38
|
+
onProgress?.(step);
|
|
39
|
+
// Also emit as "raw event" for consistency
|
|
40
|
+
rawEvents.push({ type: 'MOCK_STEP', step });
|
|
41
|
+
onRawEvent?.({ type: 'MOCK_STEP', step });
|
|
42
|
+
};
|
|
43
|
+
// Step 1: Initial thinking/analysis
|
|
44
|
+
await sleep(100);
|
|
45
|
+
emitStep(this.createStep('assistant', 'I need to investigate this issue. Let me start by checking the cluster health and then drill down into specific metrics.'));
|
|
46
|
+
// Step 2: First tool call
|
|
47
|
+
await sleep(300);
|
|
48
|
+
emitStep(this.createStep('action', 'Calling opensearch_cluster_health...', {
|
|
49
|
+
toolName: 'opensearch_cluster_health',
|
|
50
|
+
toolArgs: { local: true },
|
|
51
|
+
}));
|
|
52
|
+
// Step 3: First tool result
|
|
53
|
+
await sleep(500);
|
|
54
|
+
emitStep(this.createStep('tool_result', JSON.stringify({ status: 'yellow', number_of_nodes: 3, unassigned_shards: 0 }, null, 2), {
|
|
55
|
+
status: 'SUCCESS',
|
|
56
|
+
latencyMs: 500,
|
|
57
|
+
}));
|
|
58
|
+
// Step 4: Analysis after first tool
|
|
59
|
+
await sleep(300);
|
|
60
|
+
emitStep(this.createStep('assistant', 'The cluster is in yellow state. Let me check the node stats to identify which node might be causing issues.'));
|
|
61
|
+
// Step 5: Second tool call
|
|
62
|
+
await sleep(300);
|
|
63
|
+
emitStep(this.createStep('action', 'Calling opensearch_nodes_stats...', {
|
|
64
|
+
toolName: 'opensearch_nodes_stats',
|
|
65
|
+
toolArgs: { metric: 'jvm,os' },
|
|
66
|
+
}));
|
|
67
|
+
// Step 6: Second tool result
|
|
68
|
+
await sleep(600);
|
|
69
|
+
emitStep(this.createStep('tool_result', 'Node-1: CPU 12%, JVM Heap 45%\nNode-2: CPU 15%, JVM Heap 52%\nNode-3: CPU 98%, JVM Heap 89% (Data Node)', {
|
|
70
|
+
status: 'SUCCESS',
|
|
71
|
+
latencyMs: 600,
|
|
72
|
+
}));
|
|
73
|
+
// Step 7: Final response with RCA
|
|
74
|
+
await sleep(400);
|
|
75
|
+
emitStep(this.createStep('response', `## Root Cause Analysis Complete
|
|
76
|
+
|
|
77
|
+
**Finding:** High CPU utilization detected on Node-3 (98% CPU, 89% JVM Heap)
|
|
78
|
+
|
|
79
|
+
**Root Cause:** Node-3 is experiencing resource exhaustion, likely due to:
|
|
80
|
+
1. Heavy indexing or search operations
|
|
81
|
+
2. Garbage collection pressure from high heap usage
|
|
82
|
+
3. Possible hot spot in shard distribution
|
|
83
|
+
|
|
84
|
+
**Recommendations:**
|
|
85
|
+
1. Check hot threads on Node-3 using \`_nodes/Node-3/hot_threads\`
|
|
86
|
+
2. Review shard distribution and consider rebalancing
|
|
87
|
+
3. Monitor GC logs for long pauses
|
|
88
|
+
4. Consider scaling horizontally if load persists`));
|
|
89
|
+
this.debug('Mock trajectory completed. Steps:', trajectory.length);
|
|
90
|
+
return {
|
|
91
|
+
trajectory,
|
|
92
|
+
runId,
|
|
93
|
+
rawEvents,
|
|
94
|
+
metadata: {
|
|
95
|
+
mock: true,
|
|
96
|
+
testCaseId: request.testCase.id,
|
|
97
|
+
testCaseName: request.testCase.name,
|
|
98
|
+
},
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Parse raw events - for mock, just extract steps from our custom format
|
|
103
|
+
*/
|
|
104
|
+
parseResponse(rawEvents) {
|
|
105
|
+
return rawEvents
|
|
106
|
+
.filter(e => e.type === 'MOCK_STEP' && e.step)
|
|
107
|
+
.map(e => e.step);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Health check - mock is always "healthy"
|
|
111
|
+
*/
|
|
112
|
+
async healthCheck(endpoint, auth) {
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Default instance for convenience
|
|
118
|
+
*/
|
|
119
|
+
export const mockConnector = new MockConnector();
|
|
120
|
+
//# sourceMappingURL=MockConnector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MockConnector.js","sourceRoot":"","sources":["../../../../../services/connectors/mock/MockConnector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI-compatible Connector
|
|
3
|
+
*
|
|
4
|
+
* Connector for any OpenAI-compatible API endpoint.
|
|
5
|
+
* Formats requests as OpenAI Chat Completions and parses the response.
|
|
6
|
+
*
|
|
7
|
+
* Works with:
|
|
8
|
+
* - OpenAI API directly
|
|
9
|
+
* - Azure OpenAI
|
|
10
|
+
* - Any OpenAI-compatible endpoint (vLLM, Ollama, LiteLLM proxy, etc.)
|
|
11
|
+
*/
|
|
12
|
+
import type { TrajectoryStep } from '../../../types/index.js';
|
|
13
|
+
import { BaseConnector } from '../../../services/connectors/base/BaseConnector.js';
|
|
14
|
+
import type { ConnectorAuth, ConnectorRequest, ConnectorResponse, ConnectorProgressCallback, ConnectorRawEventCallback } from '../../../services/connectors/types.js';
|
|
15
|
+
/**
|
|
16
|
+
* OpenAI-compatible connector
|
|
17
|
+
*/
|
|
18
|
+
export declare class OpenAICompatibleConnector extends BaseConnector {
|
|
19
|
+
readonly type: "openai-compatible";
|
|
20
|
+
readonly name = "OpenAI-compatible";
|
|
21
|
+
traceContext: {
|
|
22
|
+
propagateHeader: boolean;
|
|
23
|
+
};
|
|
24
|
+
readonly supportsStreaming = false;
|
|
25
|
+
/**
|
|
26
|
+
* Build OpenAI Chat Completion payload from test case
|
|
27
|
+
*/
|
|
28
|
+
buildPayload(request: ConnectorRequest): any;
|
|
29
|
+
/**
|
|
30
|
+
* Execute OpenAI-compatible Chat Completion request
|
|
31
|
+
*/
|
|
32
|
+
execute(endpoint: string, request: ConnectorRequest, auth: ConnectorAuth, onProgress?: ConnectorProgressCallback, onRawEvent?: ConnectorRawEventCallback): Promise<ConnectorResponse>;
|
|
33
|
+
/**
|
|
34
|
+
* Parse OpenAI Chat Completion response into trajectory steps
|
|
35
|
+
*/
|
|
36
|
+
parseResponse(data: any): TrajectoryStep[];
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Default instance for convenience
|
|
40
|
+
*/
|
|
41
|
+
export declare const openaiCompatibleConnector: OpenAICompatibleConnector;
|
|
42
|
+
//# sourceMappingURL=OpenAICompatibleConnector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAICompatibleConnector.d.ts","sourceRoot":"","sources":["../../../../../services/connectors/openai-compatible/OpenAICompatibleConnector.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,yBAAyB,EACzB,yBAAyB,EAC1B,MAAM,6BAA6B,CAAC;AA0CrC;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,aAAa;IAC1D,QAAQ,CAAC,IAAI,EAAG,mBAAmB,CAAU;IAC7C,QAAQ,CAAC,IAAI,uBAAuB;IAE3B,YAAY;;MAA6B;IAClD,QAAQ,CAAC,iBAAiB,SAAS;IAEnC;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,GAAG;IAwC5C;;OAEG;IACG,OAAO,CACX,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,aAAa,EACnB,UAAU,CAAC,EAAE,yBAAyB,EACtC,UAAU,CAAC,EAAE,yBAAyB,GACrC,OAAO,CAAC,iBAAiB,CAAC;IAwC7B;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,GAAG,GAAG,cAAc,EAAE;CAwC3C;AAED;;GAEG;AACH,eAAO,MAAM,yBAAyB,2BAAkC,CAAC"}
|