createSleepTool function

Tool<JsonMap, String> createSleepTool(
  1. Genkit ai, {
  2. required ToolRuntime runtime,
})

Builds the tool that waits for a requested duration.

Implementation

Tool<JsonMap, String> createSleepTool(
  Genkit ai, {
  required ToolRuntime runtime,
}) {
  return defineTextTool(
    ai,
    runtime: runtime,
    name: 'sleep',
    description: _description,
    properties: <String, Object?>{
      'duration_ms': integerProperty('How long to wait, in milliseconds.'),
    },
    required: <String>['duration_ms'],
    run: (input) async {
      final durationMs = (readInt(input, 'duration_ms') ?? 1000).clamp(0, _maxDurationMs);
      runtime.startTool('sleep', 'Waiting $durationMs ms');
      await Future<void>.delayed(Duration(milliseconds: durationMs));
      return 'Waited $durationMs ms.';
    },
  );
}