execute method
Future<AgentResult>
execute(
- IntentCallInvocationEnvelope envelope, {
- IntentCallDrainTrigger trigger = IntentCallDrainTrigger.manual,
Implementation
Future<AgentResult> execute(
final IntentCallInvocationEnvelope envelope, {
final IntentCallDrainTrigger trigger = IntentCallDrainTrigger.manual,
}) async {
onEnvelope?.call(envelope);
_emit(
IntentCallHostEvent(
kind: IntentCallHostEventKind.envelope,
trigger: trigger,
envelope: envelope,
),
);
try {
final result = await bridge.execute(envelope);
if (!result.ok && result.code == 'invocation_denied') {
onDenied?.call(envelope, result);
_emit(
IntentCallHostEvent(
kind: IntentCallHostEventKind.denied,
trigger: trigger,
envelope: envelope,
result: result,
),
);
}
onResult?.call(envelope, result);
_emit(
IntentCallHostEvent(
kind: IntentCallHostEventKind.result,
trigger: trigger,
envelope: envelope,
result: result,
),
);
return result;
} catch (error, stackTrace) {
onError?.call(envelope, error, stackTrace);
_emit(
IntentCallHostEvent(
kind: IntentCallHostEventKind.error,
trigger: trigger,
envelope: envelope,
error: error,
stackTrace: stackTrace,
),
);
rethrow;
}
}