{"version":3,"file":"profile.cjs","names":[],"sources":["../../src/language_models/profile.ts"],"sourcesContent":["/**\n * Represents the capabilities and constraints of a language model.\n *\n * This interface defines the various features and limitations that a model may have,\n * including input/output constraints, multimodal support, and advanced capabilities\n * like tool calling and structured output.\n */\nexport interface ModelProfile {\n  /**\n   * Maximum number of tokens that can be included in the input context window.\n   *\n   * This represents the total token budget for the model's input, including\n   * the prompt, system messages, conversation history, and any other context.\n   *\n   * @example\n   * ```typescript\n   * const profile: ModelProfile = {\n   *   maxInputTokens: 128000 // Model supports up to 128k tokens\n   * };\n   * ```\n   */\n  maxInputTokens?: number;\n\n  /**\n   * Whether the model supports image inputs.\n   *\n   * When `true`, the model can process images as part of its input, enabling\n   * multimodal interactions where visual content can be analyzed alongside text.\n   *\n   * @see {@link imageUrlInputs} for URL-based image input support\n   */\n  imageInputs?: boolean;\n\n  /**\n   * Whether the model supports image URL inputs.\n   *\n   * When `true`, the model can accept URLs pointing to images rather than\n   * requiring the image data to be embedded directly in the request. This can\n   * be more efficient for large images or when images are already hosted.\n   *\n   * @see {@link imageInputs} for direct image input support\n   */\n  imageUrlInputs?: boolean;\n\n  /**\n   * Whether the model supports PDF document inputs.\n   *\n   * When `true`, the model can process PDF files as input, allowing it to\n   * analyze document content, extract information, or answer questions about\n   * PDF documents.\n   */\n  pdfInputs?: boolean;\n\n  /**\n   * Whether the model supports audio inputs.\n   *\n   * When `true`, the model can process audio data as input, enabling\n   * capabilities like speech recognition, audio analysis, or multimodal\n   * interactions involving sound.\n   */\n  audioInputs?: boolean;\n\n  /**\n   * Whether the model supports video inputs.\n   *\n   * When `true`, the model can process video data as input, enabling\n   * capabilities like video analysis, scene understanding, or multimodal\n   * interactions involving moving images.\n   */\n  videoInputs?: boolean;\n\n  /**\n   * Whether the model supports image content in tool messages.\n   *\n   * When `true`, tool responses can include images that the model can process\n   * and reason about. This enables workflows where tools return visual data\n   * that the model needs to interpret.\n   */\n  imageToolMessage?: boolean;\n\n  /**\n   * Whether the model supports PDF content in tool messages.\n   *\n   * When `true`, tool responses can include PDF documents that the model can\n   * process and reason about. This enables workflows where tools return\n   * document data that the model needs to interpret.\n   */\n  pdfToolMessage?: boolean;\n\n  /**\n   * Maximum number of tokens the model can generate in its output.\n   *\n   * This represents the upper limit on the length of the model's response.\n   * The actual output may be shorter depending on the completion criteria\n   * (e.g., natural stopping point, stop sequences).\n   *\n   * @example\n   * ```typescript\n   * const profile: ModelProfile = {\n   *   maxOutputTokens: 4096 // Model can generate up to 4k tokens\n   * };\n   * ```\n   */\n  maxOutputTokens?: number;\n\n  /**\n   * Whether the model supports reasoning or chain-of-thought output.\n   *\n   * When `true`, the model can produce explicit reasoning steps or\n   * chain-of-thought explanations as part of its output. This is useful\n   * for understanding the model's decision-making process and improving\n   * transparency in complex reasoning tasks.\n   */\n  reasoningOutput?: boolean;\n\n  /**\n   * Whether the model can generate image outputs.\n   *\n   * When `true`, the model can produce images as part of its response,\n   * enabling capabilities like image generation, editing, or visual\n   * content creation.\n   */\n  imageOutputs?: boolean;\n\n  /**\n   * Whether the model can generate audio outputs.\n   *\n   * When `true`, the model can produce audio data as part of its response,\n   * enabling capabilities like text-to-speech, audio generation, or\n   * sound synthesis.\n   */\n  audioOutputs?: boolean;\n\n  /**\n   * Whether the model can generate video outputs.\n   *\n   * When `true`, the model can produce video data as part of its response,\n   * enabling capabilities like video generation, editing, or visual\n   * content creation with motion.\n   */\n  videoOutputs?: boolean;\n\n  /**\n   * Whether the model supports tool calling (function calling).\n   *\n   * When `true`, the model can invoke external tools or functions during\n   * its reasoning process. The model can decide which tools to call,\n   * with what arguments, and can incorporate the tool results into its\n   * final response.\n   *\n   * @see {@link toolChoice} for controlling tool selection behavior\n   * @see {@link https://docs.langchain.com/oss/javascript/langchain/models#tool-calling}\n   */\n  toolCalling?: boolean;\n\n  /**\n   * Whether the model supports tool choice control.\n   *\n   * When `true`, the caller can specify how the model should select tools,\n   * such as forcing the use of a specific tool, allowing any tool, or\n   * preventing tool use entirely. This provides fine-grained control over\n   * the model's tool-calling behavior.\n   *\n   * @see {@link toolCalling} for basic tool calling support\n   */\n  toolChoice?: boolean;\n\n  /**\n   * Whether the model supports structured output generation.\n   *\n   * When `true`, the model can generate responses that conform to a\n   * specified schema or structure (e.g., JSON with a particular format).\n   * This is useful for ensuring the model's output can be reliably parsed\n   * and processed programmatically.\n   *\n   * @example\n   * ```typescript\n   * // Model can be instructed to return JSON matching a schema\n   * const profile: ModelProfile = {\n   *   structuredOutput: true\n   * };\n   * ```\n   */\n  structuredOutput?: boolean;\n}\n"],"mappings":""}