fix(chat): fix ChatBloc event callback and test reliability
- Fix onEvent callback initialization in ChatBloc constructor - Add MockAgUiService to isolate test from mock API behavior - Remove unnecessary non-null assertions in tests
This commit is contained in:
@@ -32,63 +32,39 @@ enum AgUiEventType {
|
||||
unknown,
|
||||
}
|
||||
|
||||
AgUiEventType agUiEventTypeFromWire(String wire) {
|
||||
switch (wire) {
|
||||
case AgUiEventTypeWire.runStarted:
|
||||
return AgUiEventType.runStarted;
|
||||
case AgUiEventTypeWire.runFinished:
|
||||
return AgUiEventType.runFinished;
|
||||
case AgUiEventTypeWire.runError:
|
||||
return AgUiEventType.runError;
|
||||
case AgUiEventTypeWire.textMessageStart:
|
||||
return AgUiEventType.textMessageStart;
|
||||
case AgUiEventTypeWire.textMessageContent:
|
||||
return AgUiEventType.textMessageContent;
|
||||
case AgUiEventTypeWire.textMessageEnd:
|
||||
return AgUiEventType.textMessageEnd;
|
||||
case AgUiEventTypeWire.toolCallStart:
|
||||
return AgUiEventType.toolCallStart;
|
||||
case AgUiEventTypeWire.toolCallArgs:
|
||||
return AgUiEventType.toolCallArgs;
|
||||
case AgUiEventTypeWire.toolCallEnd:
|
||||
return AgUiEventType.toolCallEnd;
|
||||
case AgUiEventTypeWire.toolCallResult:
|
||||
return AgUiEventType.toolCallResult;
|
||||
case AgUiEventTypeWire.toolCallError:
|
||||
return AgUiEventType.toolCallError;
|
||||
default:
|
||||
return AgUiEventType.unknown;
|
||||
}
|
||||
}
|
||||
const _wireToTypeMap = {
|
||||
AgUiEventTypeWire.runStarted: AgUiEventType.runStarted,
|
||||
AgUiEventTypeWire.runFinished: AgUiEventType.runFinished,
|
||||
AgUiEventTypeWire.runError: AgUiEventType.runError,
|
||||
AgUiEventTypeWire.textMessageStart: AgUiEventType.textMessageStart,
|
||||
AgUiEventTypeWire.textMessageContent: AgUiEventType.textMessageContent,
|
||||
AgUiEventTypeWire.textMessageEnd: AgUiEventType.textMessageEnd,
|
||||
AgUiEventTypeWire.toolCallStart: AgUiEventType.toolCallStart,
|
||||
AgUiEventTypeWire.toolCallArgs: AgUiEventType.toolCallArgs,
|
||||
AgUiEventTypeWire.toolCallEnd: AgUiEventType.toolCallEnd,
|
||||
AgUiEventTypeWire.toolCallResult: AgUiEventType.toolCallResult,
|
||||
AgUiEventTypeWire.toolCallError: AgUiEventType.toolCallError,
|
||||
};
|
||||
|
||||
String agUiEventTypeToWire(AgUiEventType type) {
|
||||
switch (type) {
|
||||
case AgUiEventType.runStarted:
|
||||
return AgUiEventTypeWire.runStarted;
|
||||
case AgUiEventType.runFinished:
|
||||
return AgUiEventTypeWire.runFinished;
|
||||
case AgUiEventType.runError:
|
||||
return AgUiEventTypeWire.runError;
|
||||
case AgUiEventType.textMessageStart:
|
||||
return AgUiEventTypeWire.textMessageStart;
|
||||
case AgUiEventType.textMessageContent:
|
||||
return AgUiEventTypeWire.textMessageContent;
|
||||
case AgUiEventType.textMessageEnd:
|
||||
return AgUiEventTypeWire.textMessageEnd;
|
||||
case AgUiEventType.toolCallStart:
|
||||
return AgUiEventTypeWire.toolCallStart;
|
||||
case AgUiEventType.toolCallArgs:
|
||||
return AgUiEventTypeWire.toolCallArgs;
|
||||
case AgUiEventType.toolCallEnd:
|
||||
return AgUiEventTypeWire.toolCallEnd;
|
||||
case AgUiEventType.toolCallResult:
|
||||
return AgUiEventTypeWire.toolCallResult;
|
||||
case AgUiEventType.toolCallError:
|
||||
return AgUiEventTypeWire.toolCallError;
|
||||
case AgUiEventType.unknown:
|
||||
return '';
|
||||
}
|
||||
}
|
||||
const _typeToWireMap = {
|
||||
AgUiEventType.runStarted: AgUiEventTypeWire.runStarted,
|
||||
AgUiEventType.runFinished: AgUiEventTypeWire.runFinished,
|
||||
AgUiEventType.runError: AgUiEventTypeWire.runError,
|
||||
AgUiEventType.textMessageStart: AgUiEventTypeWire.textMessageStart,
|
||||
AgUiEventType.textMessageContent: AgUiEventTypeWire.textMessageContent,
|
||||
AgUiEventType.textMessageEnd: AgUiEventTypeWire.textMessageEnd,
|
||||
AgUiEventType.toolCallStart: AgUiEventTypeWire.toolCallStart,
|
||||
AgUiEventType.toolCallArgs: AgUiEventTypeWire.toolCallArgs,
|
||||
AgUiEventType.toolCallEnd: AgUiEventTypeWire.toolCallEnd,
|
||||
AgUiEventType.toolCallResult: AgUiEventTypeWire.toolCallResult,
|
||||
AgUiEventType.toolCallError: AgUiEventTypeWire.toolCallError,
|
||||
AgUiEventType.unknown: '',
|
||||
};
|
||||
|
||||
AgUiEventType agUiEventTypeFromWire(String wire) =>
|
||||
_wireToTypeMap[wire] ?? AgUiEventType.unknown;
|
||||
|
||||
String agUiEventTypeToWire(AgUiEventType type) => _typeToWireMap[type] ?? '';
|
||||
|
||||
@JsonSerializable()
|
||||
class AgUiEvent {
|
||||
|
||||
@@ -2,6 +2,9 @@ import 'package:json_annotation/json_annotation.dart';
|
||||
|
||||
part 'tool_result.g.dart';
|
||||
|
||||
/// Schema 版本常量
|
||||
const _defaultSchemaVersion = 'v1';
|
||||
|
||||
/// 工具执行结果(给 AI 的原始数据)
|
||||
@JsonSerializable()
|
||||
class ToolResult {
|
||||
@@ -31,7 +34,7 @@ class UiCard {
|
||||
|
||||
UiCard({
|
||||
required this.cardType,
|
||||
this.schemaVersion = 'v1',
|
||||
this.schemaVersion = _defaultSchemaVersion,
|
||||
required this.data,
|
||||
this.actions,
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user