@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,232 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright OpenSearch Contributors
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
import { clsx } from "clsx";
|
|
6
|
+
import { twMerge } from "tailwind-merge";
|
|
7
|
+
import { DEFAULT_CONFIG } from "../lib/constants.js";
|
|
8
|
+
export function cn(...inputs) {
|
|
9
|
+
return twMerge(clsx(inputs));
|
|
10
|
+
}
|
|
11
|
+
// ==================== Label Styling ====================
|
|
12
|
+
// Special colors for difficulty labels only
|
|
13
|
+
// Light mode: subtle backgrounds with darker text
|
|
14
|
+
// Dark mode: darker backgrounds with lighter text
|
|
15
|
+
const DIFFICULTY_LABEL_COLORS = {
|
|
16
|
+
'difficulty:Easy': 'bg-blue-100 text-blue-800 border-blue-300 dark:bg-blue-900/30 dark:text-opensearch-blue dark:border-blue-800',
|
|
17
|
+
'difficulty:Medium': 'bg-amber-100 text-amber-800 border-amber-300 dark:bg-yellow-900/30 dark:text-yellow-400 dark:border-yellow-800',
|
|
18
|
+
'difficulty:Hard': 'bg-red-100 text-red-800 border-red-300 dark:bg-red-900/30 dark:text-red-400 dark:border-red-800',
|
|
19
|
+
};
|
|
20
|
+
// Generic label color palette (used for all other labels, hash-based)
|
|
21
|
+
// OpenSearch UI inspired colors for light mode
|
|
22
|
+
const LABEL_COLOR_PALETTE = [
|
|
23
|
+
'bg-blue-100 text-blue-800 border-blue-300 dark:bg-blue-900/20 dark:text-blue-300 dark:border-blue-700',
|
|
24
|
+
'bg-purple-100 text-purple-800 border-purple-300 dark:bg-purple-900/30 dark:text-purple-400 dark:border-purple-800',
|
|
25
|
+
'bg-cyan-100 text-cyan-800 border-cyan-300 dark:bg-cyan-900/30 dark:text-cyan-400 dark:border-cyan-800',
|
|
26
|
+
'bg-pink-100 text-pink-800 border-pink-300 dark:bg-pink-900/30 dark:text-pink-400 dark:border-pink-800',
|
|
27
|
+
'bg-orange-100 text-orange-800 border-orange-300 dark:bg-orange-900/30 dark:text-orange-400 dark:border-orange-800',
|
|
28
|
+
'bg-teal-100 text-teal-800 border-teal-300 dark:bg-teal-900/30 dark:text-teal-400 dark:border-teal-800',
|
|
29
|
+
'bg-indigo-100 text-indigo-800 border-indigo-300 dark:bg-indigo-900/30 dark:text-indigo-400 dark:border-indigo-800',
|
|
30
|
+
'bg-gray-100 text-gray-800 border-gray-300 dark:bg-muted dark:text-muted-foreground dark:border-border',
|
|
31
|
+
];
|
|
32
|
+
/**
|
|
33
|
+
* Returns Tailwind classes for styling label badges
|
|
34
|
+
* Only difficulty:Easy/Medium/Hard get special colors; all others use hash-based palette
|
|
35
|
+
*/
|
|
36
|
+
export const getLabelColor = (label) => {
|
|
37
|
+
// Check exact match for difficulty labels
|
|
38
|
+
if (DIFFICULTY_LABEL_COLORS[label]) {
|
|
39
|
+
return DIFFICULTY_LABEL_COLORS[label];
|
|
40
|
+
}
|
|
41
|
+
// All other labels use hash-based color assignment for consistency
|
|
42
|
+
const hash = label.split('').reduce((acc, char) => acc + char.charCodeAt(0), 0);
|
|
43
|
+
return LABEL_COLOR_PALETTE[hash % LABEL_COLOR_PALETTE.length];
|
|
44
|
+
};
|
|
45
|
+
// Mapping from difficulty value to full label for backward compat
|
|
46
|
+
const DIFFICULTY_VALUE_COLORS = {
|
|
47
|
+
'Easy': 'bg-blue-100 text-blue-800 border-blue-300 dark:bg-blue-900/30 dark:text-opensearch-blue dark:border-blue-800',
|
|
48
|
+
'Medium': 'bg-amber-100 text-amber-800 border-amber-300 dark:bg-yellow-900/30 dark:text-yellow-400 dark:border-yellow-800',
|
|
49
|
+
'Hard': 'bg-red-100 text-red-800 border-red-300 dark:bg-red-900/30 dark:text-red-400 dark:border-red-800',
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Returns Tailwind classes for styling difficulty badges
|
|
53
|
+
* @deprecated Use getLabelColor with difficulty: prefixed labels instead
|
|
54
|
+
*/
|
|
55
|
+
export const getDifficultyColor = (difficulty) => {
|
|
56
|
+
return DIFFICULTY_VALUE_COLORS[difficulty] || DIFFICULTY_VALUE_COLORS['Medium'];
|
|
57
|
+
};
|
|
58
|
+
// ==================== Date Formatting ====================
|
|
59
|
+
/**
|
|
60
|
+
* Formats a timestamp string to a localized date string
|
|
61
|
+
* @param timestamp - ISO timestamp string
|
|
62
|
+
* @param variant - 'date' (date only), 'datetime' (default, with time), 'detailed' (with seconds)
|
|
63
|
+
*/
|
|
64
|
+
export const formatDate = (timestamp, variant = 'datetime') => {
|
|
65
|
+
const date = new Date(timestamp);
|
|
66
|
+
const options = {
|
|
67
|
+
month: 'short',
|
|
68
|
+
day: 'numeric',
|
|
69
|
+
year: 'numeric',
|
|
70
|
+
};
|
|
71
|
+
if (variant === 'datetime' || variant === 'detailed') {
|
|
72
|
+
options.hour = '2-digit';
|
|
73
|
+
options.minute = '2-digit';
|
|
74
|
+
}
|
|
75
|
+
if (variant === 'detailed') {
|
|
76
|
+
options.second = '2-digit';
|
|
77
|
+
}
|
|
78
|
+
return date.toLocaleString('en-US', options);
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* Formats a timestamp to relative time (e.g., "5m ago", "2h ago")
|
|
82
|
+
* Falls back to formatDate for timestamps older than 7 days
|
|
83
|
+
*/
|
|
84
|
+
export const formatRelativeTime = (timestamp) => {
|
|
85
|
+
const date = new Date(timestamp);
|
|
86
|
+
const now = new Date();
|
|
87
|
+
const diffMs = now.getTime() - date.getTime();
|
|
88
|
+
const diffMins = Math.floor(diffMs / 60000);
|
|
89
|
+
const diffHours = Math.floor(diffMs / 3600000);
|
|
90
|
+
const diffDays = Math.floor(diffMs / 86400000);
|
|
91
|
+
if (diffMins < 1)
|
|
92
|
+
return 'Just now';
|
|
93
|
+
if (diffMins < 60)
|
|
94
|
+
return `${diffMins}m ago`;
|
|
95
|
+
if (diffHours < 24)
|
|
96
|
+
return `${diffHours}h ago`;
|
|
97
|
+
if (diffDays < 7)
|
|
98
|
+
return `${diffDays}d ago`;
|
|
99
|
+
return formatDate(timestamp);
|
|
100
|
+
};
|
|
101
|
+
// ==================== Model Utilities ====================
|
|
102
|
+
/**
|
|
103
|
+
* Gets the display name for a model ID from config
|
|
104
|
+
*/
|
|
105
|
+
export const getModelName = (modelId) => {
|
|
106
|
+
const model = DEFAULT_CONFIG.models[modelId];
|
|
107
|
+
return model?.display_name || modelId;
|
|
108
|
+
};
|
|
109
|
+
// ==================== Run Utilities ====================
|
|
110
|
+
/**
|
|
111
|
+
* Returns a short, stable suffix for a TestCaseRun id, suitable for embedding
|
|
112
|
+
* in an auto-generated run name. Run ids are shaped
|
|
113
|
+
* `report-<timestamp>-<random>` (file adapter) or arbitrary keys (OpenSearch),
|
|
114
|
+
* so we take the trailing 6 characters which gives a recognizable yet compact
|
|
115
|
+
* label without exposing the full id. Falls back to the full id for very short
|
|
116
|
+
* ids (e.g. legacy data).
|
|
117
|
+
*/
|
|
118
|
+
export const getRunShortId = (runId) => {
|
|
119
|
+
if (!runId)
|
|
120
|
+
return '';
|
|
121
|
+
return runId.length > 6 ? runId.slice(-6) : runId;
|
|
122
|
+
};
|
|
123
|
+
/**
|
|
124
|
+
* Resolves the display name for a TestCaseRun.
|
|
125
|
+
*
|
|
126
|
+
* Prefers the persisted `name` field (set from the run config dialog or
|
|
127
|
+
* auto-generated server-side). Falls back to `Run <short-id>` for older
|
|
128
|
+
* runs that pre-date the field, so every row in the runs list has a
|
|
129
|
+
* recognizable label instead of a raw id slice.
|
|
130
|
+
*/
|
|
131
|
+
export const getRunDisplayName = (run) => {
|
|
132
|
+
if (run.name && run.name.trim())
|
|
133
|
+
return run.name.trim();
|
|
134
|
+
return `Run ${getRunShortId(run.id)}`;
|
|
135
|
+
};
|
|
136
|
+
/**
|
|
137
|
+
* Computes a single "overall score" percentage to display next to a run in
|
|
138
|
+
* a list, from whatever metrics that run happens to carry.
|
|
139
|
+
*
|
|
140
|
+
* Why this is non-trivial:
|
|
141
|
+
* - Only the *RCA Default* system evaluator emits a metric named `accuracy`.
|
|
142
|
+
* Other system evaluators (Factuality, Tool Use, Reasoning, Safety) and
|
|
143
|
+
* any custom evaluator emit completely different metric names like
|
|
144
|
+
* `tool_selection_accuracy`, `reasoning_coherence`, `bias_detection`, etc.
|
|
145
|
+
* - The runs list used to hardcode `run.metrics?.accuracy ?? 0`, which made
|
|
146
|
+
* every non-RCA run display `0%` even when the judge had passed it.
|
|
147
|
+
*
|
|
148
|
+
* The fix is to take the **arithmetic mean of all populated numeric metrics**
|
|
149
|
+
* on the run. This works for any evaluator without having to look up its
|
|
150
|
+
* `scoringConfig`, gives a reasonable summary number, and degrades to `null`
|
|
151
|
+
* (rendered as `—`) when no metrics are present — the only honest answer
|
|
152
|
+
* for runs whose judge call hasn't completed or which were never scored.
|
|
153
|
+
*
|
|
154
|
+
* Returns `null` when there are no numeric metrics; otherwise an integer
|
|
155
|
+
* percentage rounded to the nearest whole number.
|
|
156
|
+
*/
|
|
157
|
+
export const getRunOverallScore = (metrics) => {
|
|
158
|
+
if (!metrics)
|
|
159
|
+
return null;
|
|
160
|
+
const values = [];
|
|
161
|
+
for (const v of Object.values(metrics)) {
|
|
162
|
+
if (typeof v === 'number' && Number.isFinite(v))
|
|
163
|
+
values.push(v);
|
|
164
|
+
}
|
|
165
|
+
if (values.length === 0)
|
|
166
|
+
return null;
|
|
167
|
+
const sum = values.reduce((a, b) => a + b, 0);
|
|
168
|
+
return Math.round(sum / values.length);
|
|
169
|
+
};
|
|
170
|
+
// ==================== Status Colors ====================
|
|
171
|
+
/**
|
|
172
|
+
* Returns theme-aware Tailwind classes for pass rate badges
|
|
173
|
+
* Light mode: More saturated backgrounds with darker text for better visibility
|
|
174
|
+
* Dark mode: Lighter text on dark backgrounds
|
|
175
|
+
*/
|
|
176
|
+
export const getPassRateColor = (passRate) => {
|
|
177
|
+
if (passRate >= 80) {
|
|
178
|
+
// Success/Pass - Green with more saturated background
|
|
179
|
+
return 'bg-green-100 text-green-800 border-green-300 dark:bg-green-900/30 dark:text-green-400 dark:border-green-800';
|
|
180
|
+
}
|
|
181
|
+
else if (passRate >= 50) {
|
|
182
|
+
// Warning - Amber with more saturated background
|
|
183
|
+
return 'bg-amber-100 text-amber-800 border-amber-300 dark:bg-amber-900/30 dark:text-amber-400 dark:border-amber-800';
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
// Danger/Fail - Red with more saturated background
|
|
187
|
+
return 'bg-red-100 text-red-800 border-red-300 dark:bg-red-900/30 dark:text-red-400 dark:border-red-800';
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
/**
|
|
191
|
+
* Returns theme-aware Tailwind classes for status indicators
|
|
192
|
+
* Used for success/error/warning/info states
|
|
193
|
+
* Light mode: More saturated backgrounds (100 shade) for better visibility
|
|
194
|
+
* Dark mode: Semi-transparent darker backgrounds with lighter text
|
|
195
|
+
*/
|
|
196
|
+
export const getStatusColor = (status) => {
|
|
197
|
+
const colors = {
|
|
198
|
+
success: 'bg-green-100 text-green-800 border-green-300 dark:bg-green-900/30 dark:text-green-400 dark:border-green-800',
|
|
199
|
+
error: 'bg-red-100 text-red-800 border-red-300 dark:bg-red-900/30 dark:text-red-400 dark:border-red-800',
|
|
200
|
+
warning: 'bg-amber-100 text-amber-800 border-amber-300 dark:bg-amber-900/30 dark:text-amber-400 dark:border-amber-800',
|
|
201
|
+
info: 'bg-blue-100 text-blue-800 border-blue-300 dark:bg-blue-900/30 dark:text-blue-400 dark:border-blue-800',
|
|
202
|
+
neutral: 'bg-gray-100 text-gray-800 border-gray-300 dark:bg-gray-800/30 dark:text-gray-400 dark:border-gray-700',
|
|
203
|
+
};
|
|
204
|
+
return colors[status];
|
|
205
|
+
};
|
|
206
|
+
/**
|
|
207
|
+
* Returns theme-aware text color classes for metrics
|
|
208
|
+
* Used for displaying metric values in stats cards
|
|
209
|
+
* Light mode: Darker colors for WCAG AA compliance (4.5:1 contrast ratio)
|
|
210
|
+
* Dark mode: Lighter colors for visibility on dark backgrounds
|
|
211
|
+
*/
|
|
212
|
+
export const getMetricTextColor = (type) => {
|
|
213
|
+
const colors = {
|
|
214
|
+
primary: 'text-blue-700 dark:text-blue-400',
|
|
215
|
+
success: 'text-green-700 dark:text-green-400',
|
|
216
|
+
error: 'text-red-700 dark:text-red-400',
|
|
217
|
+
warning: 'text-amber-700 dark:text-amber-400',
|
|
218
|
+
info: 'text-purple-700 dark:text-purple-400',
|
|
219
|
+
secondary: 'text-cyan-700 dark:text-cyan-400',
|
|
220
|
+
};
|
|
221
|
+
return colors[type];
|
|
222
|
+
};
|
|
223
|
+
// ==================== Text Utilities ====================
|
|
224
|
+
/**
|
|
225
|
+
* Truncates text to a specified length with ellipsis
|
|
226
|
+
*/
|
|
227
|
+
export const truncate = (text, length) => {
|
|
228
|
+
if (text.length <= length)
|
|
229
|
+
return text;
|
|
230
|
+
return text.substring(0, length).trim() + '...';
|
|
231
|
+
};
|
|
232
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* consolidate() — cluster staged fixes by signature so a run raises ONE PR per
|
|
3
|
+
* fix-class instead of one per ticket.
|
|
4
|
+
*
|
|
5
|
+
* This is intentionally conservative: it groups only on an exact signature
|
|
6
|
+
* match. Loose clustering risks merging two genuinely-different bugs into one
|
|
7
|
+
* confused PR, so the default bias is split-not-merge. Swap in an embedding /
|
|
8
|
+
* correlation backend later without changing the workflow surface.
|
|
9
|
+
*/
|
|
10
|
+
import type { Cluster, StagedItem } from './types.js';
|
|
11
|
+
export declare function consolidate(staged: StagedItem[]): Promise<Cluster[]>;
|
|
12
|
+
//# sourceMappingURL=consolidate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consolidate.d.ts","sourceRoot":"","sources":["../../../workflow/consolidate.ts"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEtD,wBAAsB,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CA8B1E"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright OpenSearch Contributors
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
export async function consolidate(staged) {
|
|
6
|
+
const bySignature = new Map();
|
|
7
|
+
for (const s of staged) {
|
|
8
|
+
const key = s.signature || 'unknown';
|
|
9
|
+
const bucket = bySignature.get(key) ?? [];
|
|
10
|
+
bucket.push(s);
|
|
11
|
+
bySignature.set(key, bucket);
|
|
12
|
+
}
|
|
13
|
+
const clusters = [];
|
|
14
|
+
for (const [signature, items] of bySignature) {
|
|
15
|
+
const tickets = items.map((i) => i.item);
|
|
16
|
+
const traceIds = [...new Set(items.flatMap((i) => i.run.traceIds))];
|
|
17
|
+
clusters.push({
|
|
18
|
+
label: signature,
|
|
19
|
+
signature,
|
|
20
|
+
items,
|
|
21
|
+
tickets,
|
|
22
|
+
traceIds,
|
|
23
|
+
fix: {
|
|
24
|
+
summary: `Candidate fix for "${signature}" derived from ${tickets.length} ` +
|
|
25
|
+
`ticket(s): ${tickets.map((t) => t.id).join(', ')}.`,
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
// Largest clusters first — the highest-leverage fixes surface at the top.
|
|
30
|
+
clusters.sort((a, b) => b.items.length - a.items.length);
|
|
31
|
+
return clusters;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=consolidate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consolidate.js","sourceRoot":"","sources":["../../../workflow/consolidate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAoB;IACpD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAwB,CAAC;IACpD,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC;QACrC,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACf,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACpE,QAAQ,CAAC,IAAI,CAAC;YACZ,KAAK,EAAE,SAAS;YAChB,SAAS;YACT,KAAK;YACL,OAAO;YACP,QAAQ;YACR,GAAG,EAAE;gBACH,OAAO,EACL,sBAAsB,SAAS,kBAAkB,OAAO,CAAC,MAAM,GAAG;oBAClE,cAAc,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;aACvD;SACF,CAAC,CAAC;IACL,CAAC;IAED,0EAA0E;IAC1E,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Workflow SDK public surface. */
|
|
2
|
+
export { source, getSource, listSources, clearSources } from './source.js';
|
|
3
|
+
export { workflow } from './workflow.js';
|
|
4
|
+
export { FeedbackLedger } from './ledger.js';
|
|
5
|
+
export { consolidate } from './consolidate.js';
|
|
6
|
+
export { mapPool } from './pool.js';
|
|
7
|
+
export { profileSpans, buildAgentEditsPrompt, parseAgentEdits, deriveAgentEdits, defaultReason, } from './stepB.js';
|
|
8
|
+
export type { WorkItem, SourceFetchFn, SourceHandle, AgentRunResult, StagedItem, Cluster, WritesMode, RunAgentOptions, WorkflowConfig, PRRequest, } from './types.js';
|
|
9
|
+
export type { LedgerEntry } from './ledger.js';
|
|
10
|
+
export type { PoolStats } from './pool.js';
|
|
11
|
+
export type { SessionProfile, AgentEdit, ReasonFn } from './stepB.js';
|
|
12
|
+
export type { Workflow, WorkflowContext, WorkflowRunOptions, WorkflowResult, ForEachOptions, } from './workflow.js';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../workflow/index.ts"],"names":[],"mappings":"AAKA,mCAAmC;AAEnC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAChB,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,cAAc,EACd,UAAU,EACV,OAAO,EACP,UAAU,EACV,eAAe,EACf,cAAc,EACd,SAAS,GACV,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,YAAY,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtE,YAAY,EACV,QAAQ,EACR,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,cAAc,GACf,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright OpenSearch Contributors
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
/** Workflow SDK public surface. */
|
|
6
|
+
export { source, getSource, listSources, clearSources } from './source.js';
|
|
7
|
+
export { workflow } from './workflow.js';
|
|
8
|
+
export { FeedbackLedger } from './ledger.js';
|
|
9
|
+
export { consolidate } from './consolidate.js';
|
|
10
|
+
export { mapPool } from './pool.js';
|
|
11
|
+
export { profileSpans, buildAgentEditsPrompt, parseAgentEdits, deriveAgentEdits, defaultReason, } from './stepB.js';
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../workflow/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,mCAAmC;AAEnC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAChB,aAAa,GACd,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FeedbackLedger — cumulative, append-only human steering for one workflow run.
|
|
3
|
+
*
|
|
4
|
+
* This is the upgrade over a single-shot `--feedback` flag: a correction given
|
|
5
|
+
* on ticket #3 is appended here and injected into the agent's context for
|
|
6
|
+
* tickets #4..#N (steering compounds), and the whole ledger is embedded into
|
|
7
|
+
* the consolidated PR bodies as rationale.
|
|
8
|
+
*/
|
|
9
|
+
export interface LedgerEntry {
|
|
10
|
+
at: string;
|
|
11
|
+
text: string;
|
|
12
|
+
ticketId?: string;
|
|
13
|
+
source: 'human' | 'signal' | 'system';
|
|
14
|
+
}
|
|
15
|
+
export declare class FeedbackLedger {
|
|
16
|
+
private entries;
|
|
17
|
+
/** Append a correction. Defaults to a human-sourced entry. */
|
|
18
|
+
append(text: string, opts?: {
|
|
19
|
+
ticketId?: string;
|
|
20
|
+
source?: LedgerEntry['source'];
|
|
21
|
+
}): void;
|
|
22
|
+
all(): readonly LedgerEntry[];
|
|
23
|
+
get size(): number;
|
|
24
|
+
/**
|
|
25
|
+
* Rendered block — injected into each subsequent agent run as context and
|
|
26
|
+
* embedded into PR bodies. Empty string when there's nothing to say.
|
|
27
|
+
*/
|
|
28
|
+
render(): string;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=ledger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ledger.d.ts","sourceRoot":"","sources":["../../../workflow/ledger.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AAEH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;CACvC;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAqB;IAEpC,8DAA8D;IAC9D,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;KAAO,GAAG,IAAI;IAW5F,GAAG,IAAI,SAAS,WAAW,EAAE;IAI7B,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;OAGG;IACH,MAAM,IAAI,MAAM;CAQjB"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright OpenSearch Contributors
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
export class FeedbackLedger {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.entries = [];
|
|
8
|
+
}
|
|
9
|
+
/** Append a correction. Defaults to a human-sourced entry. */
|
|
10
|
+
append(text, opts = {}) {
|
|
11
|
+
const trimmed = text?.trim();
|
|
12
|
+
if (!trimmed)
|
|
13
|
+
return;
|
|
14
|
+
this.entries.push({
|
|
15
|
+
at: new Date().toISOString(),
|
|
16
|
+
text: trimmed,
|
|
17
|
+
ticketId: opts.ticketId,
|
|
18
|
+
source: opts.source ?? 'human',
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
all() {
|
|
22
|
+
return this.entries;
|
|
23
|
+
}
|
|
24
|
+
get size() {
|
|
25
|
+
return this.entries.length;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Rendered block — injected into each subsequent agent run as context and
|
|
29
|
+
* embedded into PR bodies. Empty string when there's nothing to say.
|
|
30
|
+
*/
|
|
31
|
+
render() {
|
|
32
|
+
if (this.entries.length === 0)
|
|
33
|
+
return '';
|
|
34
|
+
const lines = this.entries.map((e, i) => {
|
|
35
|
+
const tag = e.ticketId ? `[${e.ticketId}] ` : '';
|
|
36
|
+
return `${i + 1}. ${tag}${e.text}`;
|
|
37
|
+
});
|
|
38
|
+
return ['## Cumulative feedback (steers this run)', ...lines].join('\n');
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=ledger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../../workflow/ledger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkBH,MAAM,OAAO,cAAc;IAA3B;QACU,YAAO,GAAkB,EAAE,CAAC;IAkCtC,CAAC;IAhCC,8DAA8D;IAC9D,MAAM,CAAC,IAAY,EAAE,OAA8D,EAAE;QACnF,MAAM,OAAO,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAChB,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YAC5B,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,OAAO;SAC/B,CAAC,CAAC;IACL,CAAC;IAED,GAAG;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACH,MAAM;QACJ,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACtC,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACjD,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACrC,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,0CAA0C,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3E,CAAC;CACF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mapPool — run an async fn over items with bounded concurrency.
|
|
3
|
+
*
|
|
4
|
+
* The concurrency cap is the workflow's primary cost + blast-radius control:
|
|
5
|
+
* in `new` mode it bounds how many live agent investigations run at once.
|
|
6
|
+
* Returns results in input order; rejects on the first error.
|
|
7
|
+
*/
|
|
8
|
+
export interface PoolStats {
|
|
9
|
+
/** Highest number of simultaneously-active tasks observed. */
|
|
10
|
+
peakConcurrency: number;
|
|
11
|
+
}
|
|
12
|
+
export declare function mapPool<T, R>(items: readonly T[], limit: number, fn: (item: T, index: number) => Promise<R>, stats?: PoolStats): Promise<R[]>;
|
|
13
|
+
//# sourceMappingURL=pool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../../../workflow/pool.ts"],"names":[],"mappings":"AAKA;;;;;;GAMG;AAEH,MAAM,WAAW,SAAS;IACxB,8DAA8D;IAC9D,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,OAAO,CAAC,CAAC,EAAE,CAAC,EAChC,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EAC1C,KAAK,CAAC,EAAE,SAAS,GAChB,OAAO,CAAC,CAAC,EAAE,CAAC,CAoCd"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright OpenSearch Contributors
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
export async function mapPool(items, limit, fn, stats) {
|
|
6
|
+
// Guard non-finite / non-positive limits (e.g. NaN from a bad CLI parse) so the
|
|
7
|
+
// scheduler can never deadlock by never starting any task.
|
|
8
|
+
const max = Number.isFinite(limit) && limit >= 1 ? Math.floor(limit) : 1;
|
|
9
|
+
const results = new Array(items.length);
|
|
10
|
+
let next = 0;
|
|
11
|
+
let active = 0;
|
|
12
|
+
let settled = 0;
|
|
13
|
+
let rejected = false;
|
|
14
|
+
return new Promise((resolve, reject) => {
|
|
15
|
+
if (items.length === 0)
|
|
16
|
+
return resolve(results);
|
|
17
|
+
const pump = () => {
|
|
18
|
+
if (rejected)
|
|
19
|
+
return;
|
|
20
|
+
while (active < max && next < items.length) {
|
|
21
|
+
const i = next++;
|
|
22
|
+
active++;
|
|
23
|
+
if (stats)
|
|
24
|
+
stats.peakConcurrency = Math.max(stats.peakConcurrency, active);
|
|
25
|
+
Promise.resolve(fn(items[i], i))
|
|
26
|
+
.then((r) => {
|
|
27
|
+
results[i] = r;
|
|
28
|
+
active--;
|
|
29
|
+
settled++;
|
|
30
|
+
if (settled === items.length)
|
|
31
|
+
resolve(results);
|
|
32
|
+
else
|
|
33
|
+
pump();
|
|
34
|
+
})
|
|
35
|
+
.catch((err) => {
|
|
36
|
+
rejected = true;
|
|
37
|
+
reject(err);
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
pump();
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=pool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pool.js","sourceRoot":"","sources":["../../../workflow/pool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAeH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,KAAmB,EACnB,KAAa,EACb,EAA0C,EAC1C,KAAiB;IAEjB,gFAAgF;IAChF,2DAA2D;IAC3D,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,MAAM,OAAO,GAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,OAAO,IAAI,OAAO,CAAM,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC;QAEhD,MAAM,IAAI,GAAG,GAAG,EAAE;YAChB,IAAI,QAAQ;gBAAE,OAAO;YACrB,OAAO,MAAM,GAAG,GAAG,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC3C,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;gBACjB,MAAM,EAAE,CAAC;gBACT,IAAI,KAAK;oBAAE,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;gBAC3E,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;qBAC7B,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;oBACV,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBACf,MAAM,EAAE,CAAC;oBACT,OAAO,EAAE,CAAC;oBACV,IAAI,OAAO,KAAK,KAAK,CAAC,MAAM;wBAAE,OAAO,CAAC,OAAO,CAAC,CAAC;;wBAC1C,IAAI,EAAE,CAAC;gBACd,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;oBACb,QAAQ,GAAG,IAAI,CAAC;oBAChB,MAAM,CAAC,GAAG,CAAC,CAAC;gBACd,CAAC,CAAC,CAAC;YACP,CAAC;QACH,CAAC,CAAC;QAEF,IAAI,EAAE,CAAC;IACT,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* source() — register a work source from a plain .ts file. No interface to
|
|
3
|
+
* implement: the fetch fn returns duck-typed { id, prompt, meta } objects.
|
|
4
|
+
* Mirrors the test() registrar so source files feel like eval files.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```ts
|
|
8
|
+
* export const queue = source('dp-oncall-queue', async ({ since }) => {
|
|
9
|
+
* const tickets = await sim.queryFolder(MY_FOLDER, { since, open: true });
|
|
10
|
+
* return tickets.map(t => ({ id: t.id, prompt: t.url, meta: { cti: t.cti } }));
|
|
11
|
+
* });
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
import type { SourceFetchFn, SourceHandle } from './types.js';
|
|
15
|
+
export declare function source(name: string, fetch: SourceFetchFn): SourceHandle;
|
|
16
|
+
/** Look up a registered source by name (used by the workflow runtime / loaders). */
|
|
17
|
+
export declare function getSource(name: string): SourceHandle | undefined;
|
|
18
|
+
/** List registered source names. */
|
|
19
|
+
export declare function listSources(): string[];
|
|
20
|
+
/** Test seam — drop all registrations. */
|
|
21
|
+
export declare function clearSources(): void;
|
|
22
|
+
//# sourceMappingURL=source.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../../workflow/source.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI9D,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,YAAY,CAUvE;AAED,oFAAoF;AACpF,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAEhE;AAED,oCAAoC;AACpC,wBAAgB,WAAW,IAAI,MAAM,EAAE,CAEtC;AAED,0CAA0C;AAC1C,wBAAgB,YAAY,IAAI,IAAI,CAEnC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright OpenSearch Contributors
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
const registry = new Map();
|
|
6
|
+
export function source(name, fetch) {
|
|
7
|
+
if (!name || typeof name !== 'string') {
|
|
8
|
+
throw new Error('source(name, fetch): name must be a non-empty string');
|
|
9
|
+
}
|
|
10
|
+
if (typeof fetch !== 'function') {
|
|
11
|
+
throw new Error(`source('${name}', fetch): fetch must be a function`);
|
|
12
|
+
}
|
|
13
|
+
const handle = { name, fetch };
|
|
14
|
+
registry.set(name, handle);
|
|
15
|
+
return handle;
|
|
16
|
+
}
|
|
17
|
+
/** Look up a registered source by name (used by the workflow runtime / loaders). */
|
|
18
|
+
export function getSource(name) {
|
|
19
|
+
return registry.get(name);
|
|
20
|
+
}
|
|
21
|
+
/** List registered source names. */
|
|
22
|
+
export function listSources() {
|
|
23
|
+
return [...registry.keys()];
|
|
24
|
+
}
|
|
25
|
+
/** Test seam — drop all registrations. */
|
|
26
|
+
export function clearSources() {
|
|
27
|
+
registry.clear();
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source.js","sourceRoot":"","sources":["../../../workflow/source.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkBH,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAwB,CAAC;AAEjD,MAAM,UAAU,MAAM,CAAC,IAAY,EAAE,KAAoB;IACvD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,qCAAqC,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,MAAM,GAAiB,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC7C,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,oCAAoC;AACpC,MAAM,UAAU,WAAW;IACzB,OAAO,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9B,CAAC;AAED,0CAA0C;AAC1C,MAAM,UAAU,YAAY;IAC1B,QAAQ,CAAC,KAAK,EAAE,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Step B — improve-the-agent from its own guided sessions.
|
|
3
|
+
*
|
|
4
|
+
* This is the successor half of the workflow that builds on the agent-profiling
|
|
5
|
+
* primitives (#267): profile a session's traces against an evaluator rubric,
|
|
6
|
+
* fold in the cumulative FeedbackLedger, and derive concrete edits to the
|
|
7
|
+
* agent's OWN repo (prompt / skills / SOPs) — terminating in an improvement PR.
|
|
8
|
+
*
|
|
9
|
+
* The reasoning node (`deriveAgentEdits`) is the only stochastic part; the
|
|
10
|
+
* profiling is deterministic (reuses `spansToTrajectory` + `scanSessionSignals`
|
|
11
|
+
* from #267). Both the span source and the reasoner are injectable seams so the
|
|
12
|
+
* core is unit-testable without a live server or a real `claude` process.
|
|
13
|
+
*/
|
|
14
|
+
import type { Span, TrajectoryStep } from '../../types/index.js';
|
|
15
|
+
import { type SessionSignal } from '../../services/traces/spansToTrajectory.js';
|
|
16
|
+
import type { FeedbackLedger } from './ledger.js';
|
|
17
|
+
/** A profiled session — the deterministic half of Step B. */
|
|
18
|
+
export interface SessionProfile {
|
|
19
|
+
sessionId: string;
|
|
20
|
+
serviceName?: string;
|
|
21
|
+
trajectory: TrajectoryStep[];
|
|
22
|
+
signals: SessionSignal[];
|
|
23
|
+
evaluator?: {
|
|
24
|
+
id: string;
|
|
25
|
+
systemPrompt?: string;
|
|
26
|
+
};
|
|
27
|
+
traceIds: string[];
|
|
28
|
+
}
|
|
29
|
+
/** A single proposed edit to the agent's repo. */
|
|
30
|
+
export interface AgentEdit {
|
|
31
|
+
file: string;
|
|
32
|
+
change: string;
|
|
33
|
+
why: string;
|
|
34
|
+
priority: 'high' | 'medium' | 'low';
|
|
35
|
+
evidence?: string[];
|
|
36
|
+
}
|
|
37
|
+
/** Reasoner seam: prompt → raw model text. Default spawns `claude -p`. */
|
|
38
|
+
export type ReasonFn = (prompt: string) => Promise<string>;
|
|
39
|
+
/**
|
|
40
|
+
* Profile a session from its spans — deterministic, reuses #267 primitives.
|
|
41
|
+
* Pass `spans` directly (unit-testable) or resolve them via a seam upstream.
|
|
42
|
+
*/
|
|
43
|
+
export declare function profileSpans(sessionId: string, spans: Span[], opts?: {
|
|
44
|
+
serviceName?: string;
|
|
45
|
+
evaluator?: {
|
|
46
|
+
id: string;
|
|
47
|
+
systemPrompt?: string;
|
|
48
|
+
};
|
|
49
|
+
}): SessionProfile;
|
|
50
|
+
/**
|
|
51
|
+
* Build the reasoner prompt from profiles + the cumulative ledger. Pure, so the
|
|
52
|
+
* exact instruction surface is unit-testable and reviewable.
|
|
53
|
+
*/
|
|
54
|
+
export declare function buildAgentEditsPrompt(profiles: SessionProfile[], opts?: {
|
|
55
|
+
repo?: string;
|
|
56
|
+
ledger?: FeedbackLedger;
|
|
57
|
+
}): string;
|
|
58
|
+
/** Default reasoner: spawn `claude -p <prompt>` and return stdout. */
|
|
59
|
+
export declare const defaultReason: ReasonFn;
|
|
60
|
+
/** Parse the reasoner output into AgentEdits (tolerant of fenced JSON). */
|
|
61
|
+
export declare function parseAgentEdits(raw: string): AgentEdit[];
|
|
62
|
+
/**
|
|
63
|
+
* Derive concrete agent-repo edits from session profiles + the cumulative
|
|
64
|
+
* ledger. `reason` is injectable (defaults to `claude -p`).
|
|
65
|
+
*/
|
|
66
|
+
export declare function deriveAgentEdits(profiles: SessionProfile[], opts?: {
|
|
67
|
+
repo?: string;
|
|
68
|
+
ledger?: FeedbackLedger;
|
|
69
|
+
reason?: ReasonFn;
|
|
70
|
+
}): Promise<AgentEdit[]>;
|
|
71
|
+
//# sourceMappingURL=stepB.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stepB.d.ts","sourceRoot":"","sources":["../../../workflow/stepB.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAyC,KAAK,aAAa,EAAE,MAAM,wCAAwC,CAAC;AACnH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,6DAA6D;AAC7D,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,kDAAkD;AAClD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,0EAA0E;AAC1E,MAAM,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAE3D;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,IAAI,EAAE,EACb,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAO,GACrF,cAAc,CAYhB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,cAAc,EAAE,EAC1B,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,cAAc,CAAA;CAAO,GACpD,MAAM,CAwBR;AAED,sEAAsE;AACtE,eAAO,MAAM,aAAa,EAAE,QAW3B,CAAC;AAEF,2EAA2E;AAC3E,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CAqBxD;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,cAAc,EAAE,EAC1B,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,cAAc,CAAC;IAAC,MAAM,CAAC,EAAE,QAAQ,CAAA;CAAO,GACvE,OAAO,CAAC,SAAS,EAAE,CAAC,CAMtB"}
|