1#pragma once
 2
 3#include "runtime.h"
 4
 5#include <string>
 6#include <map>
 7
 8namespace jinja {
 9
10struct caps {
11    bool supports_tools = true;
12    bool supports_tool_calls = true;
13    bool supports_system_role = true;
14    bool supports_parallel_tool_calls = true;
15    bool supports_preserve_reasoning = false; // support assistant message with reasoning_content
16
17    // one of the 2 content capabilities must be true
18    bool supports_string_content = true;
19    bool supports_typed_content = false;
20
21    // for reporting on server
22    std::map<std::string, bool> to_map() const;
23
24    // for debugging
25    std::string to_string() const;
26};
27
28caps caps_get(jinja::program & prog);
29
30} // namespace jinja