@opensearch-project/agent-health 0.5.2 → 0.7.0
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 +1 -0
- package/cli/dist/index.js +2325 -961
- package/dist/assets/index-D-Np_l_T.js +246 -0
- package/dist/assets/index-vZt9QZKf.css +1 -0
- package/dist/index.html +2 -2
- package/docs/CLI.md +183 -3
- package/docs/CONFIGURATION.md +1 -1
- package/docs/CONNECTORS.md +1 -1
- package/docs/INSTRUMENT_WITH_OTEL.md +7 -0
- package/docs/SDK.md +178 -5
- package/docs/STORAGE_INDEX_FIELD_LIMITS.md +216 -0
- package/docs/skills/AGENT_HEALTH.md +55 -1
- package/docs/skills/add-connector/SKILL.md +5 -1
- package/examples/eval-files/demo.eval.js +1 -1
- package/examples/eval-files/ops-rca-classification.eval.js +71 -0
- package/examples/eval-files/ops-rca-evaluator.json +15 -0
- package/examples/eval-files/sdk-demo.eval.js +72 -0
- package/examples/eval-files/sdk-describe-demo.eval.js +50 -0
- package/examples/eval-files/sdk-hooks-demo.eval.js +1 -1
- package/lib/dist/lib/agentTrends.d.ts +210 -0
- package/lib/dist/lib/agentTrends.d.ts.map +1 -0
- package/lib/dist/lib/agentTrends.js +360 -0
- package/lib/dist/lib/agentTrends.js.map +1 -0
- package/lib/dist/lib/bedrockCompat.d.ts +27 -0
- package/lib/dist/lib/bedrockCompat.d.ts.map +1 -0
- package/lib/dist/lib/bedrockCompat.js +83 -0
- package/lib/dist/lib/bedrockCompat.js.map +1 -0
- package/lib/dist/lib/benchmarkCaseReview.d.ts +114 -0
- package/lib/dist/lib/benchmarkCaseReview.d.ts.map +1 -0
- package/lib/dist/lib/benchmarkCaseReview.js +177 -0
- package/lib/dist/lib/benchmarkCaseReview.js.map +1 -0
- package/lib/dist/lib/benchmarkImage.d.ts +52 -0
- package/lib/dist/lib/benchmarkImage.d.ts.map +1 -0
- package/lib/dist/lib/benchmarkImage.js +113 -0
- package/lib/dist/lib/benchmarkImage.js.map +1 -0
- package/lib/dist/lib/benchmarkRunsTable.d.ts +109 -0
- package/lib/dist/lib/benchmarkRunsTable.d.ts.map +1 -0
- package/lib/dist/lib/benchmarkRunsTable.js +212 -0
- package/lib/dist/lib/benchmarkRunsTable.js.map +1 -0
- package/lib/dist/lib/benchmarkVersionUtils.d.ts +13 -0
- package/lib/dist/lib/benchmarkVersionUtils.d.ts.map +1 -1
- package/lib/dist/lib/benchmarkVersionUtils.js +21 -0
- package/lib/dist/lib/benchmarkVersionUtils.js.map +1 -1
- package/lib/dist/lib/chunkedFetch.d.ts +18 -0
- package/lib/dist/lib/chunkedFetch.d.ts.map +1 -0
- package/lib/dist/lib/chunkedFetch.js +40 -0
- package/lib/dist/lib/chunkedFetch.js.map +1 -0
- package/lib/dist/lib/comparisonInsights.d.ts +151 -0
- package/lib/dist/lib/comparisonInsights.d.ts.map +1 -0
- package/lib/dist/lib/comparisonInsights.js +270 -0
- package/lib/dist/lib/comparisonInsights.js.map +1 -0
- package/lib/dist/lib/config/loader.d.ts.map +1 -1
- package/lib/dist/lib/config/loader.js +16 -1
- package/lib/dist/lib/config/loader.js.map +1 -1
- package/lib/dist/lib/config/types.d.ts +14 -0
- package/lib/dist/lib/config/types.d.ts.map +1 -1
- package/lib/dist/lib/constants.d.ts +11 -0
- package/lib/dist/lib/constants.d.ts.map +1 -1
- package/lib/dist/lib/constants.js +10 -1
- package/lib/dist/lib/constants.js.map +1 -1
- package/lib/dist/lib/contextFormat.d.ts +26 -0
- package/lib/dist/lib/contextFormat.d.ts.map +1 -0
- package/lib/dist/lib/contextFormat.js +28 -0
- package/lib/dist/lib/contextFormat.js.map +1 -0
- package/lib/dist/lib/dashboardMetrics.d.ts +11 -2
- package/lib/dist/lib/dashboardMetrics.d.ts.map +1 -1
- package/lib/dist/lib/dashboardMetrics.js +38 -3
- package/lib/dist/lib/dashboardMetrics.js.map +1 -1
- package/lib/dist/lib/envCompat.d.ts.map +1 -1
- package/lib/dist/lib/envCompat.js +14 -5
- package/lib/dist/lib/envCompat.js.map +1 -1
- package/lib/dist/lib/evaluationRerun.d.ts +102 -0
- package/lib/dist/lib/evaluationRerun.d.ts.map +1 -0
- package/lib/dist/lib/evaluationRerun.js +134 -0
- package/lib/dist/lib/evaluationRerun.js.map +1 -0
- package/lib/dist/lib/judgeFailureSummary.d.ts +66 -0
- package/lib/dist/lib/judgeFailureSummary.d.ts.map +1 -0
- package/lib/dist/lib/judgeFailureSummary.js +68 -0
- package/lib/dist/lib/judgeFailureSummary.js.map +1 -0
- package/lib/dist/lib/judgeStrategies.d.ts +108 -0
- package/lib/dist/lib/judgeStrategies.d.ts.map +1 -0
- package/lib/dist/lib/judgeStrategies.js +135 -0
- package/lib/dist/lib/judgeStrategies.js.map +1 -0
- package/lib/dist/lib/matchers/expect.d.ts +21 -1
- package/lib/dist/lib/matchers/expect.d.ts.map +1 -1
- package/lib/dist/lib/matchers/expect.js +51 -0
- package/lib/dist/lib/matchers/expect.js.map +1 -1
- package/lib/dist/lib/matchers/judgeAccessor.d.ts +4 -0
- package/lib/dist/lib/matchers/judgeAccessor.d.ts.map +1 -1
- package/lib/dist/lib/matchers/judgeAccessor.js +13 -2
- package/lib/dist/lib/matchers/judgeAccessor.js.map +1 -1
- package/lib/dist/lib/matchers/judgeReasoningParse.d.ts +49 -0
- package/lib/dist/lib/matchers/judgeReasoningParse.d.ts.map +1 -0
- package/lib/dist/lib/matchers/judgeReasoningParse.js +128 -0
- package/lib/dist/lib/matchers/judgeReasoningParse.js.map +1 -0
- package/lib/dist/lib/matchers/traces.d.ts +17 -2
- package/lib/dist/lib/matchers/traces.d.ts.map +1 -1
- package/lib/dist/lib/matchers/traces.js +136 -16
- package/lib/dist/lib/matchers/traces.js.map +1 -1
- package/lib/dist/lib/matchers/tracesPricing.d.ts +38 -0
- package/lib/dist/lib/matchers/tracesPricing.d.ts.map +1 -0
- package/lib/dist/lib/matchers/tracesPricing.js +64 -0
- package/lib/dist/lib/matchers/tracesPricing.js.map +1 -0
- package/lib/dist/lib/matchers/types.d.ts +25 -0
- package/lib/dist/lib/matchers/types.d.ts.map +1 -1
- package/lib/dist/lib/resolveCanonicalRun.d.ts +23 -0
- package/lib/dist/lib/resolveCanonicalRun.d.ts.map +1 -0
- package/lib/dist/lib/resolveCanonicalRun.js +26 -0
- package/lib/dist/lib/resolveCanonicalRun.js.map +1 -0
- package/lib/dist/lib/runActions.d.ts +120 -0
- package/lib/dist/lib/runActions.d.ts.map +1 -0
- package/lib/dist/lib/runActions.js +130 -0
- package/lib/dist/lib/runActions.js.map +1 -0
- package/lib/dist/lib/runInsights.d.ts +86 -0
- package/lib/dist/lib/runInsights.d.ts.map +1 -0
- package/lib/dist/lib/runInsights.js +185 -0
- package/lib/dist/lib/runInsights.js.map +1 -0
- package/lib/dist/lib/runName.d.ts +29 -0
- package/lib/dist/lib/runName.d.ts.map +1 -0
- package/lib/dist/lib/runName.js +38 -0
- package/lib/dist/lib/runName.js.map +1 -0
- package/lib/dist/lib/runReportPath.d.ts +16 -0
- package/lib/dist/lib/runReportPath.d.ts.map +1 -0
- package/lib/dist/lib/runReportPath.js +22 -0
- package/lib/dist/lib/runReportPath.js.map +1 -0
- package/lib/dist/lib/runSort.d.ts +27 -0
- package/lib/dist/lib/runSort.d.ts.map +1 -0
- package/lib/dist/lib/runSort.js +31 -0
- package/lib/dist/lib/runSort.js.map +1 -0
- package/lib/dist/lib/runStats.d.ts +109 -5
- package/lib/dist/lib/runStats.d.ts.map +1 -1
- package/lib/dist/lib/runStats.js +193 -10
- package/lib/dist/lib/runStats.js.map +1 -1
- package/lib/dist/lib/testCases/define.d.ts.map +1 -1
- package/lib/dist/lib/testCases/define.js +93 -46
- package/lib/dist/lib/testCases/define.js.map +1 -1
- package/lib/dist/lib/testCases/judge.d.ts.map +1 -1
- package/lib/dist/lib/testCases/judge.js +22 -4
- package/lib/dist/lib/testCases/judge.js.map +1 -1
- package/lib/dist/lib/testCases/loader.d.ts +35 -1
- package/lib/dist/lib/testCases/loader.d.ts.map +1 -1
- package/lib/dist/lib/testCases/loader.js +278 -31
- package/lib/dist/lib/testCases/loader.js.map +1 -1
- package/lib/dist/lib/trajectoryStepDisplay.d.ts +25 -0
- package/lib/dist/lib/trajectoryStepDisplay.d.ts.map +1 -0
- package/lib/dist/lib/trajectoryStepDisplay.js +42 -0
- package/lib/dist/lib/trajectoryStepDisplay.js.map +1 -0
- package/lib/dist/lib/utils.d.ts +34 -0
- package/lib/dist/lib/utils.d.ts.map +1 -1
- package/lib/dist/lib/utils.js +49 -0
- package/lib/dist/lib/utils.js.map +1 -1
- package/lib/dist/services/connectors/claude-code/ClaudeCodeConnector.d.ts +68 -22
- package/lib/dist/services/connectors/claude-code/ClaudeCodeConnector.d.ts.map +1 -1
- package/lib/dist/services/connectors/claude-code/ClaudeCodeConnector.js +148 -111
- package/lib/dist/services/connectors/claude-code/ClaudeCodeConnector.js.map +1 -1
- package/lib/dist/services/connectors/kiro/KiroConnector.d.ts +21 -13
- package/lib/dist/services/connectors/kiro/KiroConnector.d.ts.map +1 -1
- package/lib/dist/services/connectors/kiro/KiroConnector.js +22 -25
- package/lib/dist/services/connectors/kiro/KiroConnector.js.map +1 -1
- package/lib/dist/services/connectors/pi/PiConnector.d.ts +49 -10
- package/lib/dist/services/connectors/pi/PiConnector.d.ts.map +1 -1
- package/lib/dist/services/connectors/pi/PiConnector.js +102 -86
- package/lib/dist/services/connectors/pi/PiConnector.js.map +1 -1
- package/lib/dist/services/connectors/subprocess/SubprocessConnector.d.ts +59 -14
- package/lib/dist/services/connectors/subprocess/SubprocessConnector.d.ts.map +1 -1
- package/lib/dist/services/connectors/subprocess/SubprocessConnector.js +95 -61
- package/lib/dist/services/connectors/subprocess/SubprocessConnector.js.map +1 -1
- package/lib/dist/services/evaluation/bedrockJudge.d.ts +18 -0
- package/lib/dist/services/evaluation/bedrockJudge.d.ts.map +1 -1
- package/lib/dist/services/evaluation/bedrockJudge.js +4 -0
- package/lib/dist/services/evaluation/bedrockJudge.js.map +1 -1
- package/lib/dist/services/evaluation/index.d.ts +18 -1
- package/lib/dist/services/evaluation/index.d.ts.map +1 -1
- package/lib/dist/services/evaluation/index.js +156 -19
- package/lib/dist/services/evaluation/index.js.map +1 -1
- package/lib/dist/services/metrics.d.ts +55 -0
- package/lib/dist/services/metrics.d.ts.map +1 -0
- package/lib/dist/services/metrics.js +89 -0
- package/lib/dist/services/metrics.js.map +1 -0
- package/lib/dist/services/storage/asyncBenchmarkStorage.d.ts +1 -1
- package/lib/dist/services/storage/asyncBenchmarkStorage.d.ts.map +1 -1
- package/lib/dist/services/storage/asyncBenchmarkStorage.js +30 -3
- package/lib/dist/services/storage/asyncBenchmarkStorage.js.map +1 -1
- package/lib/dist/services/storage/asyncRunStorage.d.ts +20 -1
- package/lib/dist/services/storage/asyncRunStorage.d.ts.map +1 -1
- package/lib/dist/services/storage/asyncRunStorage.js +125 -2
- package/lib/dist/services/storage/asyncRunStorage.js.map +1 -1
- package/lib/dist/services/storage/asyncTestCaseStorage.d.ts +18 -4
- package/lib/dist/services/storage/asyncTestCaseStorage.d.ts.map +1 -1
- package/lib/dist/services/storage/asyncTestCaseStorage.js +21 -4
- package/lib/dist/services/storage/asyncTestCaseStorage.js.map +1 -1
- package/lib/dist/services/storage/opensearchClient.d.ts +47 -12
- package/lib/dist/services/storage/opensearchClient.d.ts.map +1 -1
- package/lib/dist/services/storage/opensearchClient.js +12 -5
- package/lib/dist/services/storage/opensearchClient.js.map +1 -1
- package/lib/dist/services/traces/browserRecovery.d.ts +12 -1
- package/lib/dist/services/traces/browserRecovery.d.ts.map +1 -1
- package/lib/dist/services/traces/browserRecovery.js +35 -5
- package/lib/dist/services/traces/browserRecovery.js.map +1 -1
- package/lib/dist/services/traces/index.d.ts +8 -1
- package/lib/dist/services/traces/index.d.ts.map +1 -1
- package/lib/dist/services/traces/index.js +33 -12
- package/lib/dist/services/traces/index.js.map +1 -1
- package/lib/dist/services/traces/judgeAgentsHints.d.ts +98 -3
- package/lib/dist/services/traces/judgeAgentsHints.d.ts.map +1 -1
- package/lib/dist/services/traces/judgeAgentsHints.js +144 -3
- package/lib/dist/services/traces/judgeAgentsHints.js.map +1 -1
- package/lib/dist/services/traces/messageExtraction.d.ts.map +1 -1
- package/lib/dist/services/traces/messageExtraction.js +95 -33
- package/lib/dist/services/traces/messageExtraction.js.map +1 -1
- package/lib/dist/services/traces/spansToTrajectory.d.ts.map +1 -1
- package/lib/dist/services/traces/spansToTrajectory.js +51 -13
- package/lib/dist/services/traces/spansToTrajectory.js.map +1 -1
- package/lib/dist/services/traces/tracePoller.d.ts +27 -3
- package/lib/dist/services/traces/tracePoller.d.ts.map +1 -1
- package/lib/dist/services/traces/tracePoller.js +196 -33
- package/lib/dist/services/traces/tracePoller.js.map +1 -1
- package/lib/dist/services/traces/trajectoryMerge.d.ts +79 -0
- package/lib/dist/services/traces/trajectoryMerge.d.ts.map +1 -0
- package/lib/dist/services/traces/trajectoryMerge.js +109 -0
- package/lib/dist/services/traces/trajectoryMerge.js.map +1 -0
- package/lib/dist/types/index.d.ts +250 -3
- package/lib/dist/types/index.d.ts.map +1 -1
- package/lib/dist/types/index.js +24 -0
- package/lib/dist/types/index.js.map +1 -1
- package/package.json +8 -5
- package/server/dist/app.js +5490 -1557
- package/server/dist/index.js +5490 -1557
- package/dist/assets/index-CCQRDlO0.js +0 -243
- package/dist/assets/index-CNHQVbcj.css +0 -1
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/
|
|
5
5
|
import { ToolCallStatus } from '../../../types/index.js';
|
|
6
|
-
import { SubprocessConnector } from '../../../services/connectors/subprocess/SubprocessConnector.js';
|
|
6
|
+
import { SubprocessConnector, } from '../../../services/connectors/subprocess/SubprocessConnector.js';
|
|
7
7
|
/**
|
|
8
8
|
* Default Pi configuration
|
|
9
9
|
*/
|
|
@@ -25,9 +25,9 @@ export class PiConnector extends SubprocessConnector {
|
|
|
25
25
|
this.type = 'pi';
|
|
26
26
|
this.name = 'Pi (pi.dev)';
|
|
27
27
|
this.traceContext = { propagateEnv: true, serviceName: 'pi-agent' };
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
}
|
|
29
|
+
createExecutionState() {
|
|
30
|
+
return { ...super.createExecutionState(), piOutputBuffer: '', piThinkingBuffer: '', piTextBuffer: '' };
|
|
31
31
|
}
|
|
32
32
|
/**
|
|
33
33
|
* Build prompt for Pi
|
|
@@ -52,18 +52,18 @@ export class PiConnector extends SubprocessConnector {
|
|
|
52
52
|
* Parse Pi streaming output (JSON format)
|
|
53
53
|
* Pi's --mode json produces NDJSON lines
|
|
54
54
|
*/
|
|
55
|
-
parseStreamingOutput(chunk, trajectory, onProgress) {
|
|
56
|
-
|
|
55
|
+
parseStreamingOutput(chunk, trajectory, onProgress, state) {
|
|
56
|
+
state.piOutputBuffer += chunk;
|
|
57
57
|
// Parse complete JSON lines (NDJSON format)
|
|
58
|
-
const lines =
|
|
59
|
-
|
|
58
|
+
const lines = state.piOutputBuffer.split('\n');
|
|
59
|
+
state.piOutputBuffer = lines.pop() || ''; // Keep incomplete line
|
|
60
60
|
for (const line of lines) {
|
|
61
61
|
const trimmed = line.trim();
|
|
62
62
|
if (!trimmed)
|
|
63
63
|
continue;
|
|
64
64
|
try {
|
|
65
65
|
const event = JSON.parse(trimmed);
|
|
66
|
-
const steps = this.parsePiEvent(event);
|
|
66
|
+
const steps = this.parsePiEvent(event, state);
|
|
67
67
|
for (const step of steps) {
|
|
68
68
|
trajectory.push(step);
|
|
69
69
|
onProgress?.(step);
|
|
@@ -88,7 +88,7 @@ export class PiConnector extends SubprocessConnector {
|
|
|
88
88
|
* - message_start / message_end — full message with content blocks
|
|
89
89
|
* - message_update — streaming deltas with assistantMessageEvent
|
|
90
90
|
*/
|
|
91
|
-
parsePiEvent(event) {
|
|
91
|
+
parsePiEvent(event, state) {
|
|
92
92
|
const steps = [];
|
|
93
93
|
// message_end contains the full final message with all content blocks
|
|
94
94
|
if (event.type === 'message_end' && event.message?.role === 'assistant') {
|
|
@@ -114,10 +114,10 @@ export class PiConnector extends SubprocessConnector {
|
|
|
114
114
|
// Streaming deltas — accumulate into buffers
|
|
115
115
|
const assistantEvent = event.assistantMessageEvent;
|
|
116
116
|
if (assistantEvent?.type === 'text_delta' && assistantEvent.delta) {
|
|
117
|
-
|
|
117
|
+
state.piTextBuffer += assistantEvent.delta;
|
|
118
118
|
}
|
|
119
119
|
else if (assistantEvent?.type === 'thinking_delta' && assistantEvent.delta) {
|
|
120
|
-
|
|
120
|
+
state.piThinkingBuffer += assistantEvent.delta;
|
|
121
121
|
}
|
|
122
122
|
}
|
|
123
123
|
else if (event.type === 'tool_result') {
|
|
@@ -126,13 +126,13 @@ export class PiConnector extends SubprocessConnector {
|
|
|
126
126
|
}
|
|
127
127
|
else if (event.type === 'agent_end') {
|
|
128
128
|
// Flush any remaining buffers on agent_end
|
|
129
|
-
if (
|
|
130
|
-
steps.push(this.createStep('thinking',
|
|
131
|
-
|
|
129
|
+
if (state.piThinkingBuffer) {
|
|
130
|
+
steps.push(this.createStep('thinking', state.piThinkingBuffer));
|
|
131
|
+
state.piThinkingBuffer = '';
|
|
132
132
|
}
|
|
133
|
-
if (
|
|
134
|
-
steps.push(this.createStep('response',
|
|
135
|
-
|
|
133
|
+
if (state.piTextBuffer) {
|
|
134
|
+
steps.push(this.createStep('response', state.piTextBuffer));
|
|
135
|
+
state.piTextBuffer = '';
|
|
136
136
|
}
|
|
137
137
|
}
|
|
138
138
|
return steps;
|
|
@@ -156,99 +156,115 @@ export class PiConnector extends SubprocessConnector {
|
|
|
156
156
|
/**
|
|
157
157
|
* Flush remaining buffers when the subprocess stream ends.
|
|
158
158
|
*/
|
|
159
|
-
onBeforeStreamEnd(trajectory, onProgress) {
|
|
160
|
-
if (
|
|
159
|
+
onBeforeStreamEnd(trajectory, onProgress, state) {
|
|
160
|
+
if (state.piOutputBuffer.trim()) {
|
|
161
161
|
try {
|
|
162
|
-
const event = JSON.parse(
|
|
163
|
-
const steps = this.parsePiEvent(event);
|
|
162
|
+
const event = JSON.parse(state.piOutputBuffer.trim());
|
|
163
|
+
const steps = this.parsePiEvent(event, state);
|
|
164
164
|
for (const step of steps) {
|
|
165
165
|
trajectory.push(step);
|
|
166
166
|
onProgress?.(step);
|
|
167
167
|
}
|
|
168
168
|
}
|
|
169
169
|
catch {
|
|
170
|
-
const step = this.createStep('assistant',
|
|
170
|
+
const step = this.createStep('assistant', state.piOutputBuffer.trim());
|
|
171
171
|
trajectory.push(step);
|
|
172
172
|
onProgress?.(step);
|
|
173
173
|
}
|
|
174
|
-
|
|
174
|
+
state.piOutputBuffer = '';
|
|
175
175
|
}
|
|
176
|
-
if (
|
|
177
|
-
const step = this.createStep('thinking',
|
|
176
|
+
if (state.piThinkingBuffer) {
|
|
177
|
+
const step = this.createStep('thinking', state.piThinkingBuffer);
|
|
178
178
|
trajectory.push(step);
|
|
179
179
|
onProgress?.(step);
|
|
180
|
-
|
|
180
|
+
state.piThinkingBuffer = '';
|
|
181
181
|
}
|
|
182
|
-
if (
|
|
183
|
-
const step = this.createStep('response',
|
|
182
|
+
if (state.piTextBuffer) {
|
|
183
|
+
const step = this.createStep('response', state.piTextBuffer);
|
|
184
184
|
trajectory.push(step);
|
|
185
185
|
onProgress?.(step);
|
|
186
|
-
|
|
186
|
+
state.piTextBuffer = '';
|
|
187
187
|
}
|
|
188
188
|
}
|
|
189
189
|
/**
|
|
190
|
-
*
|
|
190
|
+
* Translate `PiConnectorConfig` into the effective per-execution subprocess
|
|
191
|
+
* config. Pure — `this.config` is never written, so concurrent executions
|
|
192
|
+
* on the shared singleton cannot see each other's args / env / timeout.
|
|
191
193
|
*/
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
}
|
|
210
|
-
if (piConfig.workingDir) {
|
|
211
|
-
this.config.workingDir = piConfig.workingDir;
|
|
212
|
-
}
|
|
213
|
-
// Build additional args from config
|
|
214
|
-
const extraArgs = [];
|
|
215
|
-
if (piConfig.packagePath) {
|
|
216
|
-
// Pi uses --skill and --extension to load package components
|
|
217
|
-
extraArgs.push('--skill', `${piConfig.packagePath}/skills/*`);
|
|
218
|
-
extraArgs.push('--extension', `${piConfig.packagePath}/extensions/agent-health.ts`);
|
|
219
|
-
extraArgs.push('--append-system-prompt', `${piConfig.packagePath}/prompts/agent-health.md`);
|
|
220
|
-
}
|
|
221
|
-
if (piConfig.model) {
|
|
222
|
-
extraArgs.push('--model', piConfig.model);
|
|
223
|
-
}
|
|
224
|
-
if (piConfig.additionalArgs) {
|
|
225
|
-
extraArgs.push(...piConfig.additionalArgs);
|
|
226
|
-
}
|
|
227
|
-
if (extraArgs.length > 0) {
|
|
228
|
-
this.config.args = [...(this.config.args || []), ...extraArgs];
|
|
229
|
-
}
|
|
194
|
+
resolveExecutionConfig(request) {
|
|
195
|
+
const piConfig = (request.connectorConfig || {});
|
|
196
|
+
const base = super.resolveExecutionConfig({
|
|
197
|
+
...request,
|
|
198
|
+
connectorConfig: {
|
|
199
|
+
...(piConfig.env ? { env: piConfig.env } : {}),
|
|
200
|
+
...(piConfig.timeout !== undefined ? { timeout: piConfig.timeout } : {}),
|
|
201
|
+
...(piConfig.workingDir ? { workingDir: piConfig.workingDir } : {}),
|
|
202
|
+
},
|
|
203
|
+
});
|
|
204
|
+
// Build additional args from config
|
|
205
|
+
const extraArgs = [];
|
|
206
|
+
if (piConfig.packagePath) {
|
|
207
|
+
// Pi uses --skill and --extension to load package components
|
|
208
|
+
extraArgs.push('--skill', `${piConfig.packagePath}/skills/*`);
|
|
209
|
+
extraArgs.push('--extension', `${piConfig.packagePath}/extensions/agent-health.ts`);
|
|
210
|
+
extraArgs.push('--append-system-prompt', `${piConfig.packagePath}/prompts/agent-health.md`);
|
|
230
211
|
}
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
this.config.args = [...(this.config.args || []), '--model', request.modelId];
|
|
234
|
-
}
|
|
235
|
-
// Inherit AWS credentials
|
|
236
|
-
if (process.env.AWS_PROFILE) {
|
|
237
|
-
this.config.env = { ...this.config.env, AWS_PROFILE: process.env.AWS_PROFILE };
|
|
212
|
+
if (piConfig.model) {
|
|
213
|
+
extraArgs.push('--model', piConfig.model);
|
|
238
214
|
}
|
|
239
|
-
if (
|
|
240
|
-
|
|
215
|
+
if (piConfig.additionalArgs) {
|
|
216
|
+
extraArgs.push(...piConfig.additionalArgs);
|
|
241
217
|
}
|
|
242
|
-
|
|
243
|
-
|
|
218
|
+
let args = [...(this.config.args || []), ...extraArgs];
|
|
219
|
+
// Pass --model flag from request if specified. request.modelId always
|
|
220
|
+
// wins over connectorConfig.model above — strip any --model pair the
|
|
221
|
+
// config block may have already pushed so the final argv carries exactly
|
|
222
|
+
// one --model flag instead of two.
|
|
223
|
+
if (request.modelId) {
|
|
224
|
+
args = [...this.stripModelFlag(args), '--model', request.modelId];
|
|
244
225
|
}
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
226
|
+
// Inherit AWS credentials
|
|
227
|
+
const env = { ...(base.env || {}) };
|
|
228
|
+
if (process.env.AWS_PROFILE)
|
|
229
|
+
env.AWS_PROFILE = process.env.AWS_PROFILE;
|
|
230
|
+
if (process.env.AWS_REGION)
|
|
231
|
+
env.AWS_REGION = process.env.AWS_REGION;
|
|
232
|
+
return { ...base, args, env };
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Remove any `--model <value>` (two-token) or `--model=<value>` (single-
|
|
236
|
+
* token) occurrence from an argv array. Used so `request.modelId` can
|
|
237
|
+
* override `connectorConfig.model` without leaving a stale second
|
|
238
|
+
* `--model` flag in the final argv.
|
|
239
|
+
*
|
|
240
|
+
* This connector only ever generates the two-token form itself, but
|
|
241
|
+
* `connectorConfig.additionalArgs` is user-supplied and could plausibly
|
|
242
|
+
* contain the `--model=value` form, so both are handled (codex_review
|
|
243
|
+
* finding: a stray `--model=value` from `additionalArgs` would otherwise
|
|
244
|
+
* survive alongside the newly-appended two-token flag, recreating the
|
|
245
|
+
* duplicate-flag bug). If a bare `--model` has no following value (or is
|
|
246
|
+
* the last element), only the bare flag is removed — the next token is
|
|
247
|
+
* left alone rather than being swallowed as a "value" when it's actually
|
|
248
|
+
* another flag (codex_review finding: guards against corrupting unrelated
|
|
249
|
+
* malformed argv, e.g. `['--foo', '--model', '--bar']`).
|
|
250
|
+
*/
|
|
251
|
+
stripModelFlag(args) {
|
|
252
|
+
const result = [];
|
|
253
|
+
for (let i = 0; i < args.length; i++) {
|
|
254
|
+
const arg = args[i];
|
|
255
|
+
if (arg === '--model') {
|
|
256
|
+
const next = args[i + 1];
|
|
257
|
+
if (next !== undefined && !next.startsWith('-')) {
|
|
258
|
+
i++; // also skip the value that follows
|
|
259
|
+
}
|
|
260
|
+
continue;
|
|
261
|
+
}
|
|
262
|
+
if (arg.startsWith('--model=')) {
|
|
263
|
+
continue;
|
|
264
|
+
}
|
|
265
|
+
result.push(arg);
|
|
251
266
|
}
|
|
267
|
+
return result;
|
|
252
268
|
}
|
|
253
269
|
/**
|
|
254
270
|
* Health check - verify pi command exists
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PiConnector.js","sourceRoot":"","sources":["../../../../../services/connectors/pi/PiConnector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,
|
|
1
|
+
{"version":3,"file":"PiConnector.js","sourceRoot":"","sources":["../../../../../services/connectors/pi/PiConnector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,40 @@
|
|
|
1
1
|
import type { TrajectoryStep } from '../../../types/index.js';
|
|
2
2
|
import { BaseConnector } from '../../../services/connectors/base/BaseConnector.js';
|
|
3
3
|
import type { ConnectorAuth, ConnectorRequest, ConnectorResponse, ConnectorProgressCallback, ConnectorRawEventCallback, SubprocessConfig, ConnectorProtocol } from '../../../services/connectors/types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Per-invocation streaming state.
|
|
6
|
+
*
|
|
7
|
+
* The connector registry hands out a SINGLETON connector instance that every
|
|
8
|
+
* concurrent evaluation task shares. Any mutable field on the instance is
|
|
9
|
+
* therefore shared across in-flight `execute()` calls — line buffers, the
|
|
10
|
+
* captured session id, pending tool names… — and under `concurrency > 1`
|
|
11
|
+
* one run's data lands on another run's report (measured live: 11/62
|
|
12
|
+
* reports of a subprocess-agent benchmark carried a sibling case's
|
|
13
|
+
* `sessionId`, so the trace poller then judged them on the sibling's
|
|
14
|
+
* spans). Everything a single execution accumulates while parsing its own
|
|
15
|
+
* child process's stdout/stderr MUST live on this object, which is created
|
|
16
|
+
* per `execute()` call and threaded through every parse hook.
|
|
17
|
+
*
|
|
18
|
+
* Subclasses extend it via the `TState` generic and `createExecutionState()`.
|
|
19
|
+
*/
|
|
20
|
+
export interface SubprocessExecutionState {
|
|
21
|
+
/** Clean stdout lines accumulated during streaming (base text parser). */
|
|
22
|
+
streamBuffer: string[];
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* The effective, immutable configuration for ONE `execute()` call:
|
|
26
|
+
* constructor defaults overlaid with the request's `connectorConfig` (and, for
|
|
27
|
+
* subclasses, whatever `resolveExecutionConfig()` derives from it). Resolved
|
|
28
|
+
* once per call and captured by that call's closures — `this.config` (the
|
|
29
|
+
* shared defaults) is never written during execution, so concurrent runs on
|
|
30
|
+
* the shared singleton cannot see each other's args/env/timeout.
|
|
31
|
+
*/
|
|
32
|
+
export type ResolvedSubprocessConfig = Readonly<SubprocessConfig>;
|
|
4
33
|
/**
|
|
5
34
|
* Subprocess Connector for CLI tools
|
|
6
35
|
* Spawns a child process and captures output
|
|
7
36
|
*/
|
|
8
|
-
export declare class SubprocessConnector extends BaseConnector {
|
|
37
|
+
export declare class SubprocessConnector<TState extends SubprocessExecutionState = SubprocessExecutionState> extends BaseConnector {
|
|
9
38
|
readonly type: ConnectorProtocol;
|
|
10
39
|
readonly name: string;
|
|
11
40
|
readonly supportsStreaming = true;
|
|
@@ -28,24 +57,40 @@ export declare class SubprocessConnector extends BaseConnector {
|
|
|
28
57
|
*/
|
|
29
58
|
execute(endpoint: string, // For subprocess, this is the command name
|
|
30
59
|
request: ConnectorRequest, auth: ConnectorAuth, onProgress?: ConnectorProgressCallback, onRawEvent?: ConnectorRawEventCallback): Promise<ConnectorResponse>;
|
|
31
|
-
/**
|
|
32
|
-
*
|
|
33
|
-
|
|
60
|
+
/**
|
|
61
|
+
* Create the per-invocation parse state for one `execute()` call.
|
|
62
|
+
* Subclasses that buffer anything while streaming (partial NDJSON lines,
|
|
63
|
+
* pending tool names, captured ids) override this to add their fields —
|
|
64
|
+
* and must NOT keep that data on the instance.
|
|
65
|
+
*/
|
|
66
|
+
protected createExecutionState(): TState;
|
|
67
|
+
/**
|
|
68
|
+
* Resolve the effective config for one `execute()` call: constructor
|
|
69
|
+
* defaults overlaid with the request's `connectorConfig` (so any agent
|
|
70
|
+
* registered with `connectorType: 'subprocess'` can specify command / args /
|
|
71
|
+
* inputMode / outputParser / timeout / workingDir / env per agent). Pure —
|
|
72
|
+
* MUST NOT write to `this.config`. Subclasses override to translate their
|
|
73
|
+
* own `connectorConfig` shape (Claude Code flags, Pi package/model) into the
|
|
74
|
+
* base fields, typically by calling `super.resolveExecutionConfig()` on a
|
|
75
|
+
* request whose `connectorConfig` has been rewritten into base shape.
|
|
76
|
+
*/
|
|
77
|
+
protected resolveExecutionConfig(request: ConnectorRequest): ResolvedSubprocessConfig;
|
|
34
78
|
/**
|
|
35
79
|
* Parse a stderr chunk in streaming mode. Default is a no-op.
|
|
36
80
|
*
|
|
37
81
|
* Override in subclasses for CLIs that carry tool-event markers on stderr.
|
|
38
82
|
* Implementations should buffer partial lines (chunks rarely align with
|
|
39
|
-
* line boundaries) and emit steps via `onProgress` AND push them
|
|
40
|
-
* `trajectory` so they appear in the final response.
|
|
83
|
+
* line boundaries) in `state` and emit steps via `onProgress` AND push them
|
|
84
|
+
* onto `trajectory` so they appear in the final response.
|
|
41
85
|
*/
|
|
42
|
-
protected parseStderrChunk(_chunk: string, _trajectory: TrajectoryStep[], _onProgress
|
|
86
|
+
protected parseStderrChunk(_chunk: string, _trajectory: TrajectoryStep[], _onProgress: ConnectorProgressCallback | undefined, _state: TState): void;
|
|
43
87
|
/**
|
|
44
88
|
* Subclass hook: extra protocol-specific fields to merge into the
|
|
45
|
-
* connector result `metadata
|
|
46
|
-
*
|
|
89
|
+
* connector result `metadata`, read from the per-invocation `state` (Claude
|
|
90
|
+
* Code surfaces its captured `sessionId` for Strategy D trace correlation).
|
|
91
|
+
* Default: none.
|
|
47
92
|
*/
|
|
48
|
-
protected extraResultMetadata(): Record<string, any>;
|
|
93
|
+
protected extraResultMetadata(_state: TState): Record<string, any>;
|
|
49
94
|
/**
|
|
50
95
|
* Parse streaming output and emit steps in real-time.
|
|
51
96
|
*
|
|
@@ -57,13 +102,13 @@ export declare class SubprocessConnector extends BaseConnector {
|
|
|
57
102
|
* `response` step containing the full coherent answer (good for the
|
|
58
103
|
* judge) — without losing the live stream.
|
|
59
104
|
*/
|
|
60
|
-
protected parseStreamingOutput(chunk: string, trajectory: TrajectoryStep[], onProgress
|
|
105
|
+
protected parseStreamingOutput(chunk: string, trajectory: TrajectoryStep[], onProgress: ConnectorProgressCallback | undefined, state: TState): void;
|
|
61
106
|
/**
|
|
62
107
|
* On stream end: emit a consolidated `response` step containing the full
|
|
63
108
|
* clean output. Streaming gave the user real-time visibility; this final
|
|
64
109
|
* step gives the judge a single coherent answer to grade against.
|
|
65
110
|
*/
|
|
66
|
-
protected onBeforeStreamEnd(trajectory: TrajectoryStep[], onProgress
|
|
111
|
+
protected onBeforeStreamEnd(trajectory: TrajectoryStep[], onProgress: ConnectorProgressCallback | undefined, state: TState): void;
|
|
67
112
|
/**
|
|
68
113
|
* Parse final subprocess output
|
|
69
114
|
*/
|
|
@@ -71,7 +116,7 @@ export declare class SubprocessConnector extends BaseConnector {
|
|
|
71
116
|
stdout: string;
|
|
72
117
|
stderr: string;
|
|
73
118
|
exitCode: number;
|
|
74
|
-
}): TrajectoryStep[];
|
|
119
|
+
}, config?: ResolvedSubprocessConfig): TrajectoryStep[];
|
|
75
120
|
/**
|
|
76
121
|
* Parse JSON output into trajectory steps
|
|
77
122
|
*/
|
|
@@ -84,5 +129,5 @@ export declare class SubprocessConnector extends BaseConnector {
|
|
|
84
129
|
/**
|
|
85
130
|
* Default instance for convenience
|
|
86
131
|
*/
|
|
87
|
-
export declare const subprocessConnector: SubprocessConnector
|
|
132
|
+
export declare const subprocessConnector: SubprocessConnector<SubprocessExecutionState>;
|
|
88
133
|
//# sourceMappingURL=SubprocessConnector.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubprocessConnector.d.ts","sourceRoot":"","sources":["../../../../../services/connectors/subprocess/SubprocessConnector.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,yBAAyB,EACzB,yBAAyB,EACzB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"SubprocessConnector.d.ts","sourceRoot":"","sources":["../../../../../services/connectors/subprocess/SubprocessConnector.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,yBAAyB,EACzB,yBAAyB,EACzB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,6BAA6B,CAAC;AAErC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,wBAAwB;IACvC,0EAA0E;IAC1E,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AAclE;;;GAGG;AACH,qBAAa,mBAAmB,CAC9B,MAAM,SAAS,wBAAwB,GAAG,wBAAwB,CAClE,SAAQ,aAAa;IACrB,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAgB;IAChD,SAAkB,IAAI,EAAE,MAAM,CAAsB;IACpD,QAAQ,CAAC,iBAAiB,QAAQ;IAElC;;;;OAIG;IACM,YAAY;;MAA0B;IAE/C,SAAS,CAAC,MAAM,EAAE,gBAAgB,CAAC;gBAEvB,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC;IAK9C;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM;IAe/C;;OAEG;IACG,OAAO,CACX,QAAQ,EAAE,MAAM,EAAE,2CAA2C;IAC7D,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,aAAa,EACnB,UAAU,CAAC,EAAE,yBAAyB,EACtC,UAAU,CAAC,EAAE,yBAAyB,GACrC,OAAO,CAAC,iBAAiB,CAAC;IAkO7B;;;;;OAKG;IACH,SAAS,CAAC,oBAAoB,IAAI,MAAM;IAIxC;;;;;;;;;OASG;IACH,SAAS,CAAC,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,GAAG,wBAAwB;IAcrF;;;;;;;OAOG;IACH,SAAS,CAAC,gBAAgB,CACxB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,cAAc,EAAE,EAC7B,WAAW,EAAE,yBAAyB,GAAG,SAAS,EAClD,MAAM,EAAE,MAAM,GACb,IAAI;IAIP;;;;;OAKG;IACH,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAIlE;;;;;;;;;;OAUG;IACH,SAAS,CAAC,oBAAoB,CAC5B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,cAAc,EAAE,EAC5B,UAAU,EAAE,yBAAyB,GAAG,SAAS,EACjD,KAAK,EAAE,MAAM,GACZ,IAAI;IA+BP;;;;OAIG;IACH,SAAS,CAAC,iBAAiB,CACzB,UAAU,EAAE,cAAc,EAAE,EAC5B,UAAU,EAAE,yBAAyB,GAAG,SAAS,EACjD,KAAK,EAAE,MAAM,GACZ,IAAI;IAYP;;OAEG;IACH,aAAa,CACX,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAC1D,MAAM,GAAE,wBAAsC,GAC7C,cAAc,EAAE;IAkCnB;;OAEG;IACH,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,GAAG,GAAG,cAAc,EAAE;IAuBtD;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;CAe3E;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,+CAA4B,CAAC"}
|