invoke method

Future invoke(
  1. String hookType,
  2. dynamic input,
  3. String sessionId
)

Dispatches a hook invocation by type.

Implementation

Future<dynamic> invoke(
  String hookType,
  dynamic input,
  String sessionId,
) async {
  final invocation = HookInvocation(sessionId: sessionId);

  switch (hookType) {
    case 'preToolUse':
      if (onPreToolUse != null) {
        return await onPreToolUse!(
          PreToolUseInput.fromJson(input as Map<String, dynamic>),
          invocation,
        );
      }
    case 'postToolUse':
      if (onPostToolUse != null) {
        return await onPostToolUse!(
          PostToolUseInput.fromJson(input as Map<String, dynamic>),
          invocation,
        );
      }
    case 'userPromptSubmitted':
      if (onUserPromptSubmitted != null) {
        return await onUserPromptSubmitted!(
          UserPromptSubmittedInput.fromJson(input as Map<String, dynamic>),
          invocation,
        );
      }
    case 'sessionStart':
      if (onSessionStart != null) {
        return await onSessionStart!(
          SessionStartInput.fromJson(input as Map<String, dynamic>),
          invocation,
        );
      }
    case 'sessionEnd':
      if (onSessionEnd != null) {
        return await onSessionEnd!(
          SessionEndInput.fromJson(input as Map<String, dynamic>),
          invocation,
        );
      }
    case 'errorOccurred':
      if (onErrorOccurred != null) {
        return await onErrorOccurred!(
          ErrorOccurredInput.fromJson(input as Map<String, dynamic>),
          invocation,
        );
      }
  }
  return null;
}