import os
import sys
import asyncio

sys.path.insert(0, '/root/02-production/nanobot')
os.chdir('/root/02-production/nanobot')
os.environ['HTTPS_PROXY'] = 'socks5://127.0.0.1:20000'
os.environ['HTTP_PROXY'] = 'socks5://127.0.0.1:20000'

from nanobot.config.loader import load_config
from nanobot.providers.responses_http_provider import ResponsesHTTPProvider
from nanobot.agent.loop import AgentLoop
from nanobot.bus.queue import MessageBus
from nanobot.config.paths import get_cron_dir
from nanobot.cron.service import CronService

cfg = load_config()
bus = MessageBus()
cron = CronService(get_cron_dir() / 'jobs.json')
loop = AgentLoop(
    bus=bus,
    provider=None,
    workspace=cfg.workspace_path,
    model=cfg.agents.defaults.model,
    max_iterations=cfg.agents.defaults.max_tool_iterations,
    context_window_tokens=cfg.agents.defaults.context_window_tokens,
    web_search_config=cfg.tools.web.search,
    web_proxy=cfg.tools.web.proxy or None,
    exec_config=cfg.tools.exec,
    cron_service=cron,
    restrict_to_workspace=cfg.tools.restrict_to_workspace,
    mcp_servers=cfg.tools.mcp_servers,
    channels_config=cfg.channels,
)
messages = loop.context.build_messages(history=[], current_message='hello', channel='cli', chat_id='direct')
tool_defs = loop.tools.get_definitions()
p = cfg.get_provider(cfg.agents.defaults.model)
provider = ResponsesHTTPProvider(api_key=p.api_key, api_base=cfg.get_api_base(cfg.agents.defaults.model), default_model=cfg.agents.defaults.model, extra_headers=p.extra_headers)

async def main():
    for max_tokens in [512, 1024, 2048, 4096, 8192, 12000]:
        resp = await provider.chat(messages=messages, tools=tool_defs, model=cfg.agents.defaults.model, max_tokens=max_tokens)
        print('max_tokens', max_tokens, 'finish_reason', resp.finish_reason, 'content', (resp.content or '')[:120].replace('\n', ' '))

asyncio.run(main())
