fix: surface gotask failure diagnostics
This commit is contained in:
parent
895778b14d
commit
cfe3e47ee2
@ -723,8 +723,8 @@ GoTaskServiceResult goTaskServiceResultFromAcpResponse(
|
||||
.map((item) => item['id']?.toString().trim() ?? '')
|
||||
.where((item) => item.isNotEmpty)
|
||||
.toList(growable: false);
|
||||
final success = _boolValue(result['success']) ?? true;
|
||||
final fallbackFailureText = () {
|
||||
final success = _boolValue(result['success']) ?? true;
|
||||
if (success) {
|
||||
return '';
|
||||
}
|
||||
@ -751,12 +751,20 @@ GoTaskServiceResult goTaskServiceResultFromAcpResponse(
|
||||
? streamedText.trim()
|
||||
: '')
|
||||
.trim();
|
||||
final directErrorMessage = result['error']?.toString().trim() ?? '';
|
||||
final effectiveErrorMessage = success
|
||||
? directErrorMessage
|
||||
: fallbackFailureText.isNotEmpty
|
||||
? fallbackFailureText
|
||||
: primaryText.isNotEmpty
|
||||
? primaryText
|
||||
: directErrorMessage;
|
||||
return GoTaskServiceResult(
|
||||
success: _boolValue(result['success']) ?? true,
|
||||
success: success,
|
||||
message: primaryText,
|
||||
turnId: result['turnId']?.toString().trim() ?? '',
|
||||
raw: result,
|
||||
errorMessage: result['error']?.toString() ?? '',
|
||||
errorMessage: effectiveErrorMessage,
|
||||
resolvedModel:
|
||||
result['model']?.toString().trim() ??
|
||||
result['resolvedModel']?.toString().trim() ??
|
||||
|
||||
@ -79,6 +79,22 @@ void main() {
|
||||
|
||||
expect(result.success, isFalse);
|
||||
expect(result.message, 'codex returned no displayable output');
|
||||
expect(result.errorMessage, 'codex returned no displayable output');
|
||||
});
|
||||
|
||||
test('uses bridge failure message when error field is absent', () {
|
||||
final result = goTaskServiceResultFromAcpResponse(<String, dynamic>{
|
||||
'jsonrpc': '2.0',
|
||||
'id': 'request-id',
|
||||
'result': <String, dynamic>{
|
||||
'success': false,
|
||||
'message': 'OpenClaw gateway returned artifact_missing',
|
||||
},
|
||||
}, route: GoTaskServiceRoute.externalAcpSingle);
|
||||
|
||||
expect(result.success, isFalse);
|
||||
expect(result.message, 'OpenClaw gateway returned artifact_missing');
|
||||
expect(result.errorMessage, 'OpenClaw gateway returned artifact_missing');
|
||||
});
|
||||
|
||||
test('uses unavailable message when bridge reports provider failure', () {
|
||||
@ -93,6 +109,7 @@ void main() {
|
||||
|
||||
expect(result.success, isFalse);
|
||||
expect(result.message, 'codex execution environment is unavailable');
|
||||
expect(result.errorMessage, 'codex execution environment is unavailable');
|
||||
});
|
||||
|
||||
test('keeps provider failure diagnostics for empty upstream output', () {
|
||||
@ -113,6 +130,10 @@ void main() {
|
||||
result.message,
|
||||
'hermes upstream returned empty response (code: PROVIDER_EMPTY_RESPONSE, upstream: session/prompt)',
|
||||
);
|
||||
expect(
|
||||
result.errorMessage,
|
||||
'hermes upstream returned empty response (code: PROVIDER_EMPTY_RESPONSE, upstream: session/prompt)',
|
||||
);
|
||||
});
|
||||
|
||||
test('keeps bridge message and inline artifacts together', () {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user