@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 @@
|
|
|
1
|
+
{"version":3,"file":"sseStream.d.ts","sourceRoot":"","sources":["../../../../services/agent/sseStream.ts"],"names":[],"mappings":"AAKA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAiB,MAAM,cAAc,CAAC;AAGxD,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACpC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,mFAAmF;IACnF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,eAAe,CAAgC;IAEvD;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgHvD;;;OAGG;YACW,aAAa;IAgG3B;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,GAAG,EACZ,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,EACnC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,OAAO,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GACnC,OAAO,CAAC,IAAI,CAAC,CAkBf"}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright OpenSearch Contributors
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Server-Sent Events (SSE) Stream Consumer
|
|
7
|
+
* Handles streaming connections to the agent endpoint
|
|
8
|
+
*/
|
|
9
|
+
import { AGUIEventType } from '../../types/agui.js';
|
|
10
|
+
import { debug, isDebugEnabled } from '../../lib/debug.js';
|
|
11
|
+
export class SSEClient {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.abortController = null;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Start consuming SSE stream from the agent endpoint
|
|
17
|
+
*/
|
|
18
|
+
async consume(options) {
|
|
19
|
+
const { url, method = 'POST', headers = {}, body, onEvent, onError, onComplete, completeOnRunEnd = false, idleTimeoutMs = 120000, // 2 minute idle timeout by default (LLM agents can be slow)
|
|
20
|
+
} = options;
|
|
21
|
+
this.abortController = new AbortController();
|
|
22
|
+
debug('SSE', 'Connecting to', url);
|
|
23
|
+
debug('SSE', 'Method:', method);
|
|
24
|
+
debug('SSE', 'Headers:', headers);
|
|
25
|
+
debug('SSE', 'Payload:', body ? JSON.stringify(body, null, 2).substring(0, 500) : 'none');
|
|
26
|
+
debug('SSE', 'Timeout:', idleTimeoutMs, 'ms');
|
|
27
|
+
try {
|
|
28
|
+
const requestConfig = {
|
|
29
|
+
method,
|
|
30
|
+
headers: {
|
|
31
|
+
'Content-Type': 'application/json',
|
|
32
|
+
Accept: 'text/event-stream',
|
|
33
|
+
...headers,
|
|
34
|
+
},
|
|
35
|
+
body: body ? JSON.stringify(body) : undefined,
|
|
36
|
+
signal: this.abortController.signal,
|
|
37
|
+
};
|
|
38
|
+
debug('SSE', 'Request config:', JSON.stringify(requestConfig, null, 2).substring(0, 500));
|
|
39
|
+
const response = await fetch(url, requestConfig);
|
|
40
|
+
debug('SSE', 'Response received:', response.status, response.statusText);
|
|
41
|
+
if (!response.ok) {
|
|
42
|
+
// Try to get error response body for debugging
|
|
43
|
+
let errorBody = '';
|
|
44
|
+
try {
|
|
45
|
+
errorBody = await response.text();
|
|
46
|
+
debug('SSE', 'Error response body:', errorBody.substring(0, 500));
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
debug('SSE', 'Could not read error response body');
|
|
50
|
+
}
|
|
51
|
+
throw new Error(`HTTP ${response.status}: ${response.statusText}${errorBody ? ` - ${errorBody}` : ''}`);
|
|
52
|
+
}
|
|
53
|
+
if (!response.body) {
|
|
54
|
+
throw new Error('Response body is null');
|
|
55
|
+
}
|
|
56
|
+
console.info('[SSE] Connected to agent endpoint, streaming events...');
|
|
57
|
+
debug('SSE', 'Response status:', response.status);
|
|
58
|
+
debug('SSE', 'Content-Type:', response.headers.get('content-type'));
|
|
59
|
+
// Process the stream with idle timeout support
|
|
60
|
+
const completionReason = await this.processStream(response.body, onEvent, completeOnRunEnd, idleTimeoutMs);
|
|
61
|
+
console.info(`[SSE] Stream completed: ${completionReason}`);
|
|
62
|
+
debug('SSE', `Stream completed: ${completionReason}`);
|
|
63
|
+
onComplete?.();
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
if (error instanceof Error) {
|
|
67
|
+
if (error.name === 'AbortError') {
|
|
68
|
+
// AbortError after completeOnRunEnd is expected, call onComplete
|
|
69
|
+
debug('SSE', 'Stream aborted (expected after run completion)');
|
|
70
|
+
onComplete?.();
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
console.error('[SSE] Stream error:', error.message);
|
|
74
|
+
console.error('[SSE] Debug mode is:', isDebugEnabled() ? 'ENABLED ✅' : 'DISABLED ❌');
|
|
75
|
+
// Detailed debug logging with diagnostics
|
|
76
|
+
const errorDetails = {
|
|
77
|
+
name: error.name,
|
|
78
|
+
message: error.message,
|
|
79
|
+
stack: error.stack,
|
|
80
|
+
cause: error.cause,
|
|
81
|
+
url,
|
|
82
|
+
method,
|
|
83
|
+
headers: headers,
|
|
84
|
+
};
|
|
85
|
+
debug('SSE', 'Error details:', errorDetails);
|
|
86
|
+
// Provide diagnostic hints based on error type
|
|
87
|
+
if (error.message.includes('fetch failed')) {
|
|
88
|
+
debug('SSE', '💡 Diagnostic: "fetch failed" typically means:');
|
|
89
|
+
debug('SSE', ' - Connection refused (endpoint not running)');
|
|
90
|
+
debug('SSE', ' - DNS resolution failed (invalid hostname)');
|
|
91
|
+
debug('SSE', ' - Network unreachable (firewall/VPN issues)');
|
|
92
|
+
debug('SSE', ' - SSL/TLS certificate issues (self-signed cert)');
|
|
93
|
+
debug('SSE', ` Check if ${url} is accessible`);
|
|
94
|
+
}
|
|
95
|
+
else if (error.message.includes('timeout')) {
|
|
96
|
+
debug('SSE', '💡 Diagnostic: Request timed out - endpoint may be slow or unresponsive');
|
|
97
|
+
}
|
|
98
|
+
else if (error.message.includes('ENOTFOUND')) {
|
|
99
|
+
debug('SSE', '💡 Diagnostic: DNS lookup failed - hostname not found');
|
|
100
|
+
}
|
|
101
|
+
else if (error.message.includes('ECONNREFUSED')) {
|
|
102
|
+
debug('SSE', '💡 Diagnostic: Connection refused - service not listening on this port');
|
|
103
|
+
}
|
|
104
|
+
onError?.(error);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
console.error('[SSE] Unknown error:', error);
|
|
109
|
+
debug('SSE', 'Unknown error details:', error);
|
|
110
|
+
onError?.(new Error('Unknown error occurred'));
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Process the ReadableStream and parse SSE events
|
|
116
|
+
* @returns Reason for stream completion
|
|
117
|
+
*/
|
|
118
|
+
async processStream(stream, onEvent, completeOnRunEnd = false, idleTimeoutMs = 120000) {
|
|
119
|
+
const reader = stream.getReader();
|
|
120
|
+
const decoder = new TextDecoder();
|
|
121
|
+
let buffer = '';
|
|
122
|
+
let lastEventTime = Date.now();
|
|
123
|
+
let eventCount = 0;
|
|
124
|
+
let idleCheckInterval = null;
|
|
125
|
+
// Set up idle timeout checker
|
|
126
|
+
const idleTimeoutPromise = new Promise((resolve) => {
|
|
127
|
+
idleCheckInterval = setInterval(() => {
|
|
128
|
+
const idleTime = Date.now() - lastEventTime;
|
|
129
|
+
if (eventCount > 0 && idleTime > idleTimeoutMs) {
|
|
130
|
+
debug('SSE', `Idle timeout: no events for ${idleTime}ms (threshold: ${idleTimeoutMs}ms)`);
|
|
131
|
+
this.abort();
|
|
132
|
+
resolve('idle_timeout');
|
|
133
|
+
}
|
|
134
|
+
}, 1000); // Check every second
|
|
135
|
+
});
|
|
136
|
+
try {
|
|
137
|
+
// Race between stream processing and idle timeout
|
|
138
|
+
const streamPromise = (async () => {
|
|
139
|
+
while (true) {
|
|
140
|
+
const { done, value } = await reader.read();
|
|
141
|
+
if (done) {
|
|
142
|
+
return 'connection_closed';
|
|
143
|
+
}
|
|
144
|
+
// Update last event time on any data received
|
|
145
|
+
lastEventTime = Date.now();
|
|
146
|
+
// Decode chunk and add to buffer
|
|
147
|
+
buffer += decoder.decode(value, { stream: true });
|
|
148
|
+
// Process complete SSE messages
|
|
149
|
+
const lines = buffer.split('\n');
|
|
150
|
+
// Keep the last incomplete line in the buffer
|
|
151
|
+
buffer = lines.pop() || '';
|
|
152
|
+
for (const line of lines) {
|
|
153
|
+
if (line.startsWith('data: ')) {
|
|
154
|
+
const data = line.slice(6); // Remove "data: " prefix
|
|
155
|
+
if (data.trim()) {
|
|
156
|
+
debug('SSE', 'Raw event:', data.substring(0, 200) + (data.length > 200 ? '...' : ''));
|
|
157
|
+
try {
|
|
158
|
+
const event = JSON.parse(data);
|
|
159
|
+
debug('SSE', 'Parsed event:', event.type);
|
|
160
|
+
eventCount++;
|
|
161
|
+
// Log progress milestone every 10 events
|
|
162
|
+
if (eventCount % 10 === 0) {
|
|
163
|
+
console.info(`[SSE] Processed ${eventCount} events...`);
|
|
164
|
+
}
|
|
165
|
+
onEvent(event);
|
|
166
|
+
// Check for run-ending events when completeOnRunEnd is enabled
|
|
167
|
+
if (completeOnRunEnd && (event.type === AGUIEventType.RUN_FINISHED ||
|
|
168
|
+
event.type === AGUIEventType.RUN_ERROR)) {
|
|
169
|
+
debug('SSE', `Received ${event.type}, completing stream`);
|
|
170
|
+
this.abort();
|
|
171
|
+
return `event:${event.type}`;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
catch (parseError) {
|
|
175
|
+
console.error('[SSE] Parse error:', parseError);
|
|
176
|
+
debug('SSE', 'Failed data:', data);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
// Ignore other SSE fields (id:, event:, retry:, comments)
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
})();
|
|
184
|
+
const reason = await Promise.race([streamPromise, idleTimeoutPromise]);
|
|
185
|
+
return reason;
|
|
186
|
+
}
|
|
187
|
+
finally {
|
|
188
|
+
if (idleCheckInterval) {
|
|
189
|
+
clearInterval(idleCheckInterval);
|
|
190
|
+
}
|
|
191
|
+
reader.releaseLock();
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Abort the current stream connection
|
|
196
|
+
*/
|
|
197
|
+
abort() {
|
|
198
|
+
this.abortController?.abort();
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Convenience function for simple SSE consumption
|
|
203
|
+
* Completes when RUN_FINISHED/RUN_ERROR event is received, or when connection closes
|
|
204
|
+
*/
|
|
205
|
+
export async function consumeSSEStream(url, payload, onEvent, headers, options) {
|
|
206
|
+
const client = new SSEClient();
|
|
207
|
+
return new Promise((resolve, reject) => {
|
|
208
|
+
client.consume({
|
|
209
|
+
url,
|
|
210
|
+
method: 'POST',
|
|
211
|
+
headers,
|
|
212
|
+
body: payload,
|
|
213
|
+
onEvent,
|
|
214
|
+
onError: (error) => reject(error),
|
|
215
|
+
onComplete: () => resolve(),
|
|
216
|
+
// Enable auto-completion on RUN_FINISHED/RUN_ERROR events
|
|
217
|
+
// This prevents hanging when the agent doesn't close the connection
|
|
218
|
+
completeOnRunEnd: true,
|
|
219
|
+
idleTimeoutMs: options?.idleTimeoutMs,
|
|
220
|
+
});
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=sseStream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sseStream.js","sourceRoot":"","sources":["../../../../services/agent/sseStream.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AG-UI Streaming Connector
|
|
3
|
+
* Handles communication with agents using the AG-UI protocol over SSE
|
|
4
|
+
*/
|
|
5
|
+
import type { TrajectoryStep } from '../../../types/index.js';
|
|
6
|
+
import type { AGUIEvent } from '../../../types/agui.js';
|
|
7
|
+
import { BaseConnector } from '../../../services/connectors/base/BaseConnector.js';
|
|
8
|
+
import type { ConnectorAuth, ConnectorRequest, ConnectorResponse, ConnectorProgressCallback, ConnectorRawEventCallback } from '../../../services/connectors/types.js';
|
|
9
|
+
import { AgentRequestPayload } from '../../../services/agent/payloadBuilder.js';
|
|
10
|
+
/**
|
|
11
|
+
* AG-UI Streaming Connector
|
|
12
|
+
* Uses Server-Sent Events (SSE) to stream agent responses in AG-UI format
|
|
13
|
+
*/
|
|
14
|
+
export declare class AGUIStreamingConnector extends BaseConnector {
|
|
15
|
+
readonly type: "agui-streaming";
|
|
16
|
+
readonly name = "AG-UI Streaming";
|
|
17
|
+
traceContext: {
|
|
18
|
+
propagateHeader: boolean;
|
|
19
|
+
};
|
|
20
|
+
readonly supportsStreaming = true;
|
|
21
|
+
/**
|
|
22
|
+
* Build AG-UI payload from standard request
|
|
23
|
+
*/
|
|
24
|
+
buildPayload(request: ConnectorRequest): AgentRequestPayload;
|
|
25
|
+
/**
|
|
26
|
+
* Execute the request using SSE streaming
|
|
27
|
+
*/
|
|
28
|
+
execute(endpoint: string, request: ConnectorRequest, auth: ConnectorAuth, onProgress?: ConnectorProgressCallback, onRawEvent?: ConnectorRawEventCallback): Promise<ConnectorResponse>;
|
|
29
|
+
/**
|
|
30
|
+
* Parse raw AG-UI events into trajectory steps
|
|
31
|
+
* Used for re-processing stored raw events
|
|
32
|
+
*/
|
|
33
|
+
parseResponse(rawEvents: AGUIEvent[]): TrajectoryStep[];
|
|
34
|
+
/**
|
|
35
|
+
* Health check for AG-UI endpoint
|
|
36
|
+
* Tries to connect without sending a full request
|
|
37
|
+
*/
|
|
38
|
+
healthCheck(endpoint: string, auth: ConnectorAuth): Promise<boolean>;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Default instance for convenience
|
|
42
|
+
*/
|
|
43
|
+
export declare const aguiStreamingConnector: AGUIStreamingConnector;
|
|
44
|
+
//# sourceMappingURL=AGUIStreamingConnector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AGUIStreamingConnector.d.ts","sourceRoot":"","sources":["../../../../../services/connectors/agui/AGUIStreamingConnector.ts"],"names":[],"mappings":"AAKA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,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,OAAO,EAAqB,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAGzF;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,aAAa;IACvD,QAAQ,CAAC,IAAI,EAAG,gBAAgB,CAAU;IAC1C,QAAQ,CAAC,IAAI,qBAAqB;IAEzB,YAAY;;MAA6B;IAClD,QAAQ,CAAC,iBAAiB,QAAQ;IAElC;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,mBAAmB;IAS5D;;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;IA2C7B;;;OAGG;IACH,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,cAAc,EAAE;IAIvD;;;OAGG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;CAgB3E;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,wBAA+B,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright OpenSearch Contributors
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
import { BaseConnector } from '../../../services/connectors/base/BaseConnector.js';
|
|
6
|
+
import { consumeSSEStream } from '../../../services/agent/sseStream.js';
|
|
7
|
+
import { buildAgentPayload } from '../../../services/agent/payloadBuilder.js';
|
|
8
|
+
import { AGUIToTrajectoryConverter, computeTrajectoryFromRawEvents } from '../../../services/agent/aguiConverter.js';
|
|
9
|
+
/**
|
|
10
|
+
* AG-UI Streaming Connector
|
|
11
|
+
* Uses Server-Sent Events (SSE) to stream agent responses in AG-UI format
|
|
12
|
+
*/
|
|
13
|
+
export class AGUIStreamingConnector extends BaseConnector {
|
|
14
|
+
constructor() {
|
|
15
|
+
super(...arguments);
|
|
16
|
+
this.type = 'agui-streaming';
|
|
17
|
+
this.name = 'AG-UI Streaming';
|
|
18
|
+
this.traceContext = { propagateHeader: true };
|
|
19
|
+
this.supportsStreaming = true;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Build AG-UI payload from standard request
|
|
23
|
+
*/
|
|
24
|
+
buildPayload(request) {
|
|
25
|
+
return buildAgentPayload(request.testCase, request.modelId, request.threadId, request.runId);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Execute the request using SSE streaming
|
|
29
|
+
*/
|
|
30
|
+
async execute(endpoint, request, auth, onProgress, onRawEvent) {
|
|
31
|
+
// Use pre-built payload from hook if available, otherwise build fresh
|
|
32
|
+
const hasPrebuiltPayload = !!request.payload;
|
|
33
|
+
const payload = request.payload || this.buildPayload(request);
|
|
34
|
+
const headers = this.buildAuthHeaders(auth);
|
|
35
|
+
this.injectTraceparentHeaders(headers);
|
|
36
|
+
const trajectory = [];
|
|
37
|
+
const rawEvents = [];
|
|
38
|
+
const converter = new AGUIToTrajectoryConverter();
|
|
39
|
+
this.debug('Executing AG-UI streaming request');
|
|
40
|
+
await consumeSSEStream(endpoint, payload, (event) => {
|
|
41
|
+
// Capture raw event for debugging
|
|
42
|
+
rawEvents.push(event);
|
|
43
|
+
onRawEvent?.(event);
|
|
44
|
+
// Convert to trajectory steps
|
|
45
|
+
const steps = converter.processEvent(event);
|
|
46
|
+
steps.forEach(step => {
|
|
47
|
+
trajectory.push(step);
|
|
48
|
+
onProgress?.(step);
|
|
49
|
+
});
|
|
50
|
+
}, headers);
|
|
51
|
+
const runId = converter.getRunId();
|
|
52
|
+
this.debug('Stream completed. RunId:', runId, 'Steps:', trajectory.length);
|
|
53
|
+
return {
|
|
54
|
+
trajectory,
|
|
55
|
+
runId,
|
|
56
|
+
rawEvents,
|
|
57
|
+
metadata: {
|
|
58
|
+
threadId: converter.getThreadId(),
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Parse raw AG-UI events into trajectory steps
|
|
64
|
+
* Used for re-processing stored raw events
|
|
65
|
+
*/
|
|
66
|
+
parseResponse(rawEvents) {
|
|
67
|
+
return computeTrajectoryFromRawEvents(rawEvents);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Health check for AG-UI endpoint
|
|
71
|
+
* Tries to connect without sending a full request
|
|
72
|
+
*/
|
|
73
|
+
async healthCheck(endpoint, auth) {
|
|
74
|
+
try {
|
|
75
|
+
const headers = this.buildAuthHeaders(auth);
|
|
76
|
+
// For AG-UI endpoints, we can't really do a health check without
|
|
77
|
+
// making a full request, so just check if the endpoint is reachable
|
|
78
|
+
const response = await fetch(endpoint, {
|
|
79
|
+
method: 'OPTIONS',
|
|
80
|
+
headers,
|
|
81
|
+
});
|
|
82
|
+
// Accept any response that isn't a network error
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
this.error('Health check failed:', error);
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Default instance for convenience
|
|
93
|
+
*/
|
|
94
|
+
export const aguiStreamingConnector = new AGUIStreamingConnector();
|
|
95
|
+
//# sourceMappingURL=AGUIStreamingConnector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AGUIStreamingConnector.js","sourceRoot":"","sources":["../../../../../services/connectors/agui/AGUIStreamingConnector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import type { TrajectoryStep } from '../../../types/index.js';
|
|
2
|
+
import type { AgentConnector, ConnectorAuth, ConnectorProtocol, ConnectorRequest, ConnectorResponse, ConnectorProgressCallback, ConnectorRawEventCallback, TraceContextStrategy } from '../../../services/connectors/types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Abstract base class for connectors
|
|
5
|
+
* Provides common functionality like auth header building and error handling
|
|
6
|
+
*/
|
|
7
|
+
export declare abstract class BaseConnector implements AgentConnector {
|
|
8
|
+
abstract readonly type: ConnectorProtocol;
|
|
9
|
+
abstract readonly name: string;
|
|
10
|
+
abstract readonly supportsStreaming: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Trace-context propagation strategy. Subclasses set defaults; users can
|
|
13
|
+
* override per-agent via `connectorConfig.traceContext` (merged in execute()).
|
|
14
|
+
*/
|
|
15
|
+
traceContext?: TraceContextStrategy;
|
|
16
|
+
/**
|
|
17
|
+
* Build payload for the agent request
|
|
18
|
+
* Subclasses must implement this to transform standard format to agent-specific format
|
|
19
|
+
*/
|
|
20
|
+
abstract buildPayload(request: ConnectorRequest): any;
|
|
21
|
+
/**
|
|
22
|
+
* Execute the request
|
|
23
|
+
* Subclasses must implement the actual execution logic
|
|
24
|
+
*/
|
|
25
|
+
abstract execute(endpoint: string, request: ConnectorRequest, auth: ConnectorAuth, onProgress?: ConnectorProgressCallback, onRawEvent?: ConnectorRawEventCallback): Promise<ConnectorResponse>;
|
|
26
|
+
/**
|
|
27
|
+
* Parse raw response into TrajectoryStep array
|
|
28
|
+
* Subclasses must implement protocol-specific parsing
|
|
29
|
+
*/
|
|
30
|
+
abstract parseResponse(rawResponse: any): TrajectoryStep[];
|
|
31
|
+
/**
|
|
32
|
+
* Build HTTP headers from auth configuration
|
|
33
|
+
* @param auth Authentication configuration
|
|
34
|
+
* @returns Headers object ready for fetch/axios
|
|
35
|
+
*/
|
|
36
|
+
protected buildAuthHeaders(auth: ConnectorAuth): Record<string, string>;
|
|
37
|
+
/**
|
|
38
|
+
* Build environment variables from auth configuration
|
|
39
|
+
* Used by subprocess connectors
|
|
40
|
+
*/
|
|
41
|
+
protected buildAuthEnv(auth: ConnectorAuth): Record<string, string>;
|
|
42
|
+
/**
|
|
43
|
+
* Generate a unique ID for trajectory steps
|
|
44
|
+
*/
|
|
45
|
+
protected generateId(): string;
|
|
46
|
+
/**
|
|
47
|
+
* Create a trajectory step with common fields
|
|
48
|
+
*/
|
|
49
|
+
protected createStep(type: TrajectoryStep['type'], content: string, extra?: Partial<TrajectoryStep>): TrajectoryStep;
|
|
50
|
+
/**
|
|
51
|
+
* Default health check implementation
|
|
52
|
+
* Subclasses can override for protocol-specific checks
|
|
53
|
+
*/
|
|
54
|
+
healthCheck(endpoint: string, auth: ConnectorAuth): Promise<boolean>;
|
|
55
|
+
/**
|
|
56
|
+
* Log debug message with connector type prefix
|
|
57
|
+
*/
|
|
58
|
+
protected debug(message: string, ...args: any[]): void;
|
|
59
|
+
/**
|
|
60
|
+
* Log error message with connector type prefix
|
|
61
|
+
*/
|
|
62
|
+
protected error(message: string, ...args: any[]): void;
|
|
63
|
+
/**
|
|
64
|
+
* Build a W3C `TRACEPARENT` env var string from the active OTel span,
|
|
65
|
+
* if any. Returns an env-fragment object (empty if no active span or
|
|
66
|
+
* propagation is disabled for this connector).
|
|
67
|
+
*
|
|
68
|
+
* Used by subprocess connectors to make the child's OTel SDK adopt the
|
|
69
|
+
* eval `test_case` span as parent context (Strategy A).
|
|
70
|
+
*/
|
|
71
|
+
protected buildTraceparentEnv(): Record<string, string>;
|
|
72
|
+
/**
|
|
73
|
+
* Inject W3C `traceparent` (and `tracestate`) headers into an outgoing
|
|
74
|
+
* HTTP request, if a span is active and propagation is enabled.
|
|
75
|
+
*
|
|
76
|
+
* Used by REST/SSE connectors so the remote agent's OTel SDK adopts the
|
|
77
|
+
* eval `test_case` span as parent context (Strategy A).
|
|
78
|
+
*/
|
|
79
|
+
protected injectTraceparentHeaders(headers: Record<string, string>): void;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=BaseConnector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseConnector.d.ts","sourceRoot":"","sources":["../../../../../services/connectors/base/BaseConnector.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAG9C,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,yBAAyB,EACzB,yBAAyB,EACzB,oBAAoB,EACrB,MAAM,6BAA6B,CAAC;AAErC;;;GAGG;AACH,8BAAsB,aAAc,YAAW,cAAc;IAC3D,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAC1C,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IAE7C;;;OAGG;IACH,YAAY,CAAC,EAAE,oBAAoB,CAAC;IAEpC;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,GAAG;IAErD;;;OAGG;IACH,QAAQ,CAAC,OAAO,CACd,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;IAE7B;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAC,WAAW,EAAE,GAAG,GAAG,cAAc,EAAE;IAE1D;;;;OAIG;IACH,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IA6CvE;;;OAGG;IACH,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAanE;;OAEG;IACH,SAAS,CAAC,UAAU,IAAI,MAAM;IAI9B;;OAEG;IACH,SAAS,CAAC,UAAU,CAClB,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,EAC5B,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAC9B,cAAc;IAUjB;;;OAGG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAe1E;;OAEG;IACH,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAItD;;OAEG;IACH,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAItD;;;;;;;OAOG;IACH,SAAS,CAAC,mBAAmB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAwBvD;;;;;;OAMG;IACH,SAAS,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;CAI1E"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright OpenSearch Contributors
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
import { debug as centralDebug } from '../../../lib/debug.js';
|
|
6
|
+
import { trace, context as otelContext, propagation } from '@opentelemetry/api';
|
|
7
|
+
/**
|
|
8
|
+
* Abstract base class for connectors
|
|
9
|
+
* Provides common functionality like auth header building and error handling
|
|
10
|
+
*/
|
|
11
|
+
export class BaseConnector {
|
|
12
|
+
/**
|
|
13
|
+
* Build HTTP headers from auth configuration
|
|
14
|
+
* @param auth Authentication configuration
|
|
15
|
+
* @returns Headers object ready for fetch/axios
|
|
16
|
+
*/
|
|
17
|
+
buildAuthHeaders(auth) {
|
|
18
|
+
const headers = {};
|
|
19
|
+
switch (auth.type) {
|
|
20
|
+
case 'basic':
|
|
21
|
+
if (auth.username && auth.password) {
|
|
22
|
+
const credentials = Buffer.from(`${auth.username}:${auth.password}`).toString('base64');
|
|
23
|
+
headers['Authorization'] = `Basic ${credentials}`;
|
|
24
|
+
}
|
|
25
|
+
break;
|
|
26
|
+
case 'bearer':
|
|
27
|
+
if (auth.token) {
|
|
28
|
+
headers['Authorization'] = `Bearer ${auth.token}`;
|
|
29
|
+
}
|
|
30
|
+
break;
|
|
31
|
+
case 'api-key':
|
|
32
|
+
if (auth.token) {
|
|
33
|
+
// Common API key header patterns
|
|
34
|
+
headers['X-API-Key'] = auth.token;
|
|
35
|
+
headers['x-api-key'] = auth.token; // Some APIs use lowercase
|
|
36
|
+
}
|
|
37
|
+
break;
|
|
38
|
+
case 'aws-sigv4':
|
|
39
|
+
// AWS SigV4 signing would be handled separately
|
|
40
|
+
// This is a placeholder - actual implementation would use aws4 or @aws-sdk/signature-v4
|
|
41
|
+
console.warn('[BaseConnector] AWS SigV4 auth requires runtime signing');
|
|
42
|
+
break;
|
|
43
|
+
case 'none':
|
|
44
|
+
default:
|
|
45
|
+
// No auth headers needed
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
// Always apply custom headers (can override auth headers if needed)
|
|
49
|
+
if (auth.headers) {
|
|
50
|
+
Object.assign(headers, auth.headers);
|
|
51
|
+
}
|
|
52
|
+
return headers;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Build environment variables from auth configuration
|
|
56
|
+
* Used by subprocess connectors
|
|
57
|
+
*/
|
|
58
|
+
buildAuthEnv(auth) {
|
|
59
|
+
const env = {};
|
|
60
|
+
if (auth.type === 'aws-sigv4') {
|
|
61
|
+
if (auth.awsRegion)
|
|
62
|
+
env['AWS_REGION'] = auth.awsRegion;
|
|
63
|
+
if (auth.awsAccessKeyId)
|
|
64
|
+
env['AWS_ACCESS_KEY_ID'] = auth.awsAccessKeyId;
|
|
65
|
+
if (auth.awsSecretAccessKey)
|
|
66
|
+
env['AWS_SECRET_ACCESS_KEY'] = auth.awsSecretAccessKey;
|
|
67
|
+
if (auth.awsSessionToken)
|
|
68
|
+
env['AWS_SESSION_TOKEN'] = auth.awsSessionToken;
|
|
69
|
+
}
|
|
70
|
+
return env;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Generate a unique ID for trajectory steps
|
|
74
|
+
*/
|
|
75
|
+
generateId() {
|
|
76
|
+
return `${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Create a trajectory step with common fields
|
|
80
|
+
*/
|
|
81
|
+
createStep(type, content, extra) {
|
|
82
|
+
return {
|
|
83
|
+
id: this.generateId(),
|
|
84
|
+
timestamp: Date.now(),
|
|
85
|
+
type,
|
|
86
|
+
content,
|
|
87
|
+
...extra,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Default health check implementation
|
|
92
|
+
* Subclasses can override for protocol-specific checks
|
|
93
|
+
*/
|
|
94
|
+
async healthCheck(endpoint, auth) {
|
|
95
|
+
try {
|
|
96
|
+
// Default: try a simple fetch with HEAD method
|
|
97
|
+
const headers = this.buildAuthHeaders(auth);
|
|
98
|
+
const response = await fetch(endpoint, {
|
|
99
|
+
method: 'HEAD',
|
|
100
|
+
headers,
|
|
101
|
+
});
|
|
102
|
+
return response.ok;
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
console.error(`[${this.type}] Health check failed:`, error);
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Log debug message with connector type prefix
|
|
111
|
+
*/
|
|
112
|
+
debug(message, ...args) {
|
|
113
|
+
centralDebug(this.type, message, ...args);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Log error message with connector type prefix
|
|
117
|
+
*/
|
|
118
|
+
error(message, ...args) {
|
|
119
|
+
console.error(`[${this.type}] ${message}`, ...args);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Build a W3C `TRACEPARENT` env var string from the active OTel span,
|
|
123
|
+
* if any. Returns an env-fragment object (empty if no active span or
|
|
124
|
+
* propagation is disabled for this connector).
|
|
125
|
+
*
|
|
126
|
+
* Used by subprocess connectors to make the child's OTel SDK adopt the
|
|
127
|
+
* eval `test_case` span as parent context (Strategy A).
|
|
128
|
+
*/
|
|
129
|
+
buildTraceparentEnv() {
|
|
130
|
+
if (!this.traceContext?.propagateEnv)
|
|
131
|
+
return {};
|
|
132
|
+
const span = trace.getSpan(otelContext.active());
|
|
133
|
+
if (!span)
|
|
134
|
+
return {};
|
|
135
|
+
const ctx = span.spanContext();
|
|
136
|
+
if (!ctx.traceId || !ctx.spanId)
|
|
137
|
+
return {};
|
|
138
|
+
// Both trace-id and parent-id must be non-zero per W3C trace context spec
|
|
139
|
+
// (https://www.w3.org/TR/trace-context/#trace-id). Emitting an all-zero
|
|
140
|
+
// value would produce an invalid traceparent that downstream SDKs
|
|
141
|
+
// typically reject silently — the agent's root span won't adopt our
|
|
142
|
+
// context as parent and we'd get back to two unrelated trace trees.
|
|
143
|
+
if (ctx.traceId === '0'.repeat(32) || ctx.spanId === '0'.repeat(16))
|
|
144
|
+
return {};
|
|
145
|
+
// 00 = W3C version; flags=01 means SAMPLED so the agent's exporter forwards.
|
|
146
|
+
const flags = (ctx.traceFlags ?? 1).toString(16).padStart(2, '0');
|
|
147
|
+
const env = {
|
|
148
|
+
TRACEPARENT: `00-${ctx.traceId}-${ctx.spanId}-${flags}`,
|
|
149
|
+
};
|
|
150
|
+
if (ctx.traceState) {
|
|
151
|
+
const ts = ctx.traceState.serialize();
|
|
152
|
+
if (ts)
|
|
153
|
+
env.TRACESTATE = ts;
|
|
154
|
+
}
|
|
155
|
+
return env;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Inject W3C `traceparent` (and `tracestate`) headers into an outgoing
|
|
159
|
+
* HTTP request, if a span is active and propagation is enabled.
|
|
160
|
+
*
|
|
161
|
+
* Used by REST/SSE connectors so the remote agent's OTel SDK adopts the
|
|
162
|
+
* eval `test_case` span as parent context (Strategy A).
|
|
163
|
+
*/
|
|
164
|
+
injectTraceparentHeaders(headers) {
|
|
165
|
+
if (!this.traceContext?.propagateHeader)
|
|
166
|
+
return;
|
|
167
|
+
propagation.inject(otelContext.active(), headers);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=BaseConnector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseConnector.js","sourceRoot":"","sources":["../../../../../services/connectors/base/BaseConnector.ts"],"names":[],"mappings":"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"}
|