processSetupHooks function

Future<List<HookResultMessage>> processSetupHooks(
  1. String trigger, {
  2. bool? forceSyncExecution,
})

Process setup hooks.

Implementation

Future<List<HookResultMessage>> processSetupHooks(
  String trigger, {
  bool? forceSyncExecution,
}) async {
  if (_isBareMode()) return [];

  final hookMessages = <HookResultMessage>[];
  final additionalContexts = <String>[];

  if (_loadPluginHooks != null) {
    try {
      await _loadPluginHooks!();
    } catch (_) {}
  }

  if (_executeSetupHooks != null) {
    await for (final hookResult in _executeSetupHooks!(
      trigger,
      forceSyncExecution: forceSyncExecution,
    )) {
      if (hookResult.content != null) {
        hookMessages.add(hookResult);
      }
      if (hookResult.additionalContexts != null &&
          hookResult.additionalContexts!.isNotEmpty) {
        additionalContexts.addAll(hookResult.additionalContexts!);
      }
    }
  }

  if (additionalContexts.isNotEmpty) {
    hookMessages.add(
      HookResultMessage(
        content: additionalContexts.join('\n'),
        hookName: 'Setup',
        toolUseId: 'Setup',
        hookEvent: 'Setup',
      ),
    );
  }

  return hookMessages;
}