File size: 830 Bytes
7a1ad33
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/**
 * @license
 * Copyright 2025 Google LLC
 * SPDX-License-Identifier: Apache-2.0
 */

import { type FunctionDeclaration } from '@google/genai';
import type { ToolDefinition } from './types.js';

/**
 * Resolves the declaration for a tool.
 *
 * @param definition The tool definition containing the base declaration and optional overrides.
 * @param modelId Optional model identifier to apply specific overrides.
 * @returns The FunctionDeclaration to be sent to the API.
 */
export function resolveToolDeclaration(
  definition: ToolDefinition,
  modelId?: string,
): FunctionDeclaration {
  if (!modelId || !definition.overrides) {
    return definition.base;
  }

  const override = definition.overrides(modelId);
  if (!override) {
    return definition.base;
  }

  return {
    ...definition.base,
    ...override,
  };
}