# ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========

from .agent_context import get_current_agent_id, set_current_agent_id
from .commons import (
    AgentOpsMeta,
    BatchProcessor,
    agentops_decorator,
    api_keys_required,
    browser_toolkit_save_auth_cookie,
    check_server_running,
    create_chunks,
    dependencies_required,
    download_github_subdirectory,
    download_tasks,
    func_string_to_callable,
    get_first_int,
    get_prompt_template_key_words,
    get_pydantic_major_version,
    get_pydantic_object_schema,
    get_system_information,
    get_task_list,
    handle_http_error,
    is_docker_running,
    json_to_function_code,
    print_text_animated,
    retry_on_error,
    run_async,
    safe_extract_parsed,
    text_extract_from_web,
    to_pascal,
    track_agent,
    with_timeout,
)
from .constants import Constants
from .deduplication import DeduplicationResult, deduplicate_internally
from .filename import sanitize_filename
from .langfuse import (
    configure_langfuse,
    get_current_agent_session_id,
    get_langfuse_status,
    is_langfuse_available,
    observe,
    update_current_observation,
    update_langfuse_trace,
)
from .mcp import MCPServer
from .response_format import get_pydantic_model, model_from_json_schema
from .stream_utils import (
    consume_response_content,
    consume_response_content_async,
    is_streaming_response,
)
from .token_counting import (
    AnthropicTokenCounter,
    BaseTokenCounter,
    LiteLLMTokenCounter,
    MistralTokenCounter,
    OpenAITokenCounter,
    get_model_encoding,
)

__all__ = [
    "print_text_animated",
    "get_prompt_template_key_words",
    "get_first_int",
    "download_tasks",
    "get_task_list",
    "check_server_running",
    "AnthropicTokenCounter",
    "get_system_information",
    "to_pascal",
    "get_model_encoding",
    "BaseTokenCounter",
    "OpenAITokenCounter",
    "LiteLLMTokenCounter",
    "Constants",
    "text_extract_from_web",
    "create_chunks",
    "dependencies_required",
    "api_keys_required",
    "is_docker_running",
    "MistralTokenCounter",
    "get_pydantic_major_version",
    "get_pydantic_object_schema",
    "func_string_to_callable",
    "json_to_function_code",
    "agentops_decorator",
    "AgentOpsMeta",
    "track_agent",
    "handle_http_error",
    "get_pydantic_model",
    "download_github_subdirectory",
    "generate_prompt_for_structured_output",
    "deduplicate_internally",
    "DeduplicationResult",
    "retry_on_error",
    "BatchProcessor",
    "with_timeout",
    "MCPServer",
    "model_from_json_schema",
    "sanitize_filename",
    "browser_toolkit_save_auth_cookie",
    "run_async",
    "safe_extract_parsed",
    "configure_langfuse",
    "is_langfuse_available",
    "get_current_agent_session_id",
    "update_langfuse_trace",
    "observe",
    "update_current_observation",
    "get_langfuse_status",
    "get_current_agent_id",
    "set_current_agent_id",
    "is_streaming_response",
    "consume_response_content",
    "consume_response_content_async",
]
