#!/usr/bin/env python3 # retoor """tai command and stable import surface (facade over tai_pkg).""" #!/usr/bin/env python3 # retoor import argparse import base64 import collections import difflib import getpass import glob import hashlib import importlib.util import hmac import html import json import os import queue import random import re import shutil import shlex import signal import socket import sqlite3 import ssl import struct import subprocess import sys import tempfile import threading import time import urllib.error import urllib.parse import urllib.request import uuid import zipfile from datetime import datetime, timedelta, timezone from tai_pkg.compat import fcntl, pty, readline, select, termios, tty from tai_pkg.agent import Agent from tai_pkg.agents import REGISTRY, default_runner from tai_pkg.app import App from tai_pkg.chat import ChatClient from tai_pkg.claude import Claude from tai_pkg.clirun import Cli from tai_pkg.codex import Codex from tai_pkg.commands import Commands from tai_pkg.config import Config from tai_pkg.consts import Consts from tai_pkg.edge import Audio, EdgeTts from tai_pkg.errors import BackendError, Denied from tai_pkg.gemini import Gemini from tai_pkg.grok import Grok from tai_pkg.install import Install from tai_pkg.models import ModelHealth, ModelScoring from tai_pkg.muse import Muse, _MUSE_THREAD_GUARD, _MUSE_THREAD_LOCKS from tai_pkg.opencode import Opencode, _OPENCODE_ID_ALPHABET, _OPENCODE_SESSION from tai_pkg.plexer import NativePlexerBackend, NativePlexerController, PlexerBackend, PlexerController, PlexerControllerFactory, PlexerError, PlexerSetup, TmuxPlexerController from tai_pkg.release import Release from tai_pkg.render import Ansi, LiveStream, Render, Spinner from tai_pkg.sandbox import Sandbox, _BOX_OPENCODE_CACHE, _BOX_PYTHON_CACHE from tai_pkg.scheduler import Scheduler from tai_pkg.seal import Seal, SealError, SealManager from tai_pkg.shellsnap import ShellSnap from tai_pkg.skills import Skills from tai_pkg.store import Store from tai_pkg.sysinfo import SYSINFO_CHECKS, SysInfo from tai_pkg.telegram import Telegram, TelegramBot from tai_pkg.text import Text from tai_pkg.tools import Tools from tai_pkg.toolschema import TOOL_ENV_GATES, TOOL_SCHEMAS, ToolRegistry # --- tai_pkg.agent --- conversation_text = Agent.conversation_text conversation_tokens = Agent.conversation_tokens compact_messages = Agent.compact_messages resume_turn = Agent.resume_turn # --- tai_pkg.agents --- AGENTS = REGISTRY.agents AGENTS_LOCK = REGISTRY.lock AGENTS_NEXT = REGISTRY.next_id spawn_agent = REGISTRY.spawn_agent poll_agent = REGISTRY.poll_agent list_agents = REGISTRY.list_agents clear_agents = REGISTRY.clear_agents running_agents = REGISTRY.running_agents # --- tai_pkg.app --- boot = App.boot build_parser = App.build_parser banner = App.banner repl = App.repl main = App.main # --- tai_pkg.claude --- claude_binary = Claude.claude_binary claude_parse_output = Claude.claude_parse_output claude_run = Claude.claude_run claude_health = Claude.claude_health # --- tai_pkg.clirun --- _cli_unknown_flag = Cli._cli_unknown_flag _cli_auth_failure = Cli._cli_auth_failure _cli_run = Cli._cli_run _cli_version_detail = Cli._cli_version_detail _cli_version_only_health = Cli._cli_version_only_health # --- tai_pkg.codex --- codex_binary = Codex.codex_binary codex_jsonl_texts = Codex.codex_jsonl_texts codex_parse_output = Codex.codex_parse_output codex_run = Codex.codex_run codex_health = Codex.codex_health # --- tai_pkg.commands --- complete_command = Commands.complete_command handle_command = Commands.handle_command # --- tai_pkg.config --- split_models = Config.split_models parse_backends = Config.parse_backends # --- tai_pkg.consts --- VERSION = Consts.VERSION WORKER_STEPS = Consts.WORKER_STEPS CREATE_SKILL_STEPS = Consts.CREATE_SKILL_STEPS FORK_MAX_DEPTH = Consts.FORK_MAX_DEPTH MUSE_LABEL = Consts.MUSE_LABEL MUSE_CHAT_URL = Consts.MUSE_CHAT_URL MUSE_MODELS_URL = Consts.MUSE_MODELS_URL GROK_LABEL = Consts.GROK_LABEL GROK_CHAT_URL = Consts.GROK_CHAT_URL GROK_MODELS_URL = Consts.GROK_MODELS_URL CLAUDE_LABEL = Consts.CLAUDE_LABEL CLAUDE_CHAT_URL = Consts.CLAUDE_CHAT_URL CLAUDE_MODELS_URL = Consts.CLAUDE_MODELS_URL CODEX_LABEL = Consts.CODEX_LABEL CODEX_CHAT_URL = Consts.CODEX_CHAT_URL CODEX_MODELS_URL = Consts.CODEX_MODELS_URL GEMINI_LABEL = Consts.GEMINI_LABEL GEMINI_CHAT_URL = Consts.GEMINI_CHAT_URL GEMINI_MODELS_URL = Consts.GEMINI_MODELS_URL OLLAMA_LABEL = Consts.OLLAMA_LABEL OLLAMA_BASE = Consts.OLLAMA_BASE OLLAMA_LIST_TTL = Consts.OLLAMA_LIST_TTL CLI_CHAT_URLS = Consts.CLI_CHAT_URLS MUSE_MAX_STEPS = Consts.MUSE_MAX_STEPS MUSE_SESSIONS_FILE = Consts.MUSE_SESSIONS_FILE MUSE_LOCKS_DIR = Consts.MUSE_LOCKS_DIR MUSE_WORKER_TTL = Consts.MUSE_WORKER_TTL MUSE_REAP_GRACE = Consts.MUSE_REAP_GRACE OPENROUTER_LABEL = Consts.OPENROUTER_LABEL OPENROUTER_BASE = Consts.OPENROUTER_BASE OPENROUTER_MODEL = Consts.OPENROUTER_MODEL OPENCODE_LABEL = Consts.OPENCODE_LABEL OPENCODE_CHAT_URL = Consts.OPENCODE_CHAT_URL OPENCODE_MODELS_URL = Consts.OPENCODE_MODELS_URL OPENCODE_AGENT = Consts.OPENCODE_AGENT OPENCODE_PARSE_MAX_SCANS = Consts.OPENCODE_PARSE_MAX_SCANS DEVPLACE_LABEL = Consts.DEVPLACE_LABEL DEVPLACE_BASE = Consts.DEVPLACE_BASE DEVPLACE_FREE_ROUTES = Consts.DEVPLACE_FREE_ROUTES ZEN_LABEL = Consts.ZEN_LABEL ZEN_BASE = Consts.ZEN_BASE ZEN_FREE_MODELS = Consts.ZEN_FREE_MODELS POLLINATIONS_LABEL = Consts.POLLINATIONS_LABEL POLLINATIONS_BASE = Consts.POLLINATIONS_BASE POLLINATIONS_MODELS = Consts.POLLINATIONS_MODELS OPENCODE_USER_AGENT = Consts.OPENCODE_USER_AGENT OPENCODE_CLIENT_NAME = Consts.OPENCODE_CLIENT_NAME MODEL_HEALTH_FILE = Consts.MODEL_HEALTH_FILE MODEL_NEUTRAL_REWARD = Consts.MODEL_NEUTRAL_REWARD MODEL_WEIGHT_PRIOR = Consts.MODEL_WEIGHT_PRIOR MODEL_SPEED_REF_TPS = Consts.MODEL_SPEED_REF_TPS MODEL_LATENCY_REF_MS = Consts.MODEL_LATENCY_REF_MS MODEL_CIRCUIT_THRESHOLD = Consts.MODEL_CIRCUIT_THRESHOLD MODEL_CIRCUIT_COOLDOWN = Consts.MODEL_CIRCUIT_COOLDOWN RETRY_BACKOFF = Consts.RETRY_BACKOFF MODEL_LIST_TIMEOUT = Consts.MODEL_LIST_TIMEOUT OPENROUTER_FREE_CACHE_TTL = Consts.OPENROUTER_FREE_CACHE_TTL RSEARCH_BASE = Consts.RSEARCH_BASE FETCH_METHODS = Consts.FETCH_METHODS CURL_HINT = Consts.CURL_HINT DEFAULT_MODEL = Consts.DEFAULT_MODEL DEFAULT_VOICE = Consts.DEFAULT_VOICE DEFAULT_PASSPHRASE = Consts.DEFAULT_PASSPHRASE BOX_IMAGE = Consts.BOX_IMAGE BOX_NAME = Consts.BOX_NAME TELEGRAM_API = Consts.TELEGRAM_API TELEGRAM_FILE_API = Consts.TELEGRAM_FILE_API SKILL_NAME_RE = Consts.SKILL_NAME_RE BASHRC_MARK_BEGIN = Consts.BASHRC_MARK_BEGIN BASHRC_MARK_END = Consts.BASHRC_MARK_END BASHRC_BLOCK = Consts.BASHRC_BLOCK ZSH_NOTFOUND_BLOCK = Consts.ZSH_NOTFOUND_BLOCK FISH_NOTFOUND_BLOCK = Consts.FISH_NOTFOUND_BLOCK BOX_CONTAINERFILE = Consts.BOX_CONTAINERFILE BOX_PYTHON = Consts.BOX_PYTHON BOX_STT = Consts.BOX_STT BOX_TTS = Consts.BOX_TTS TELEGRAM_UNIT = Consts.TELEGRAM_UNIT SCHEDULER_UNIT = Consts.SCHEDULER_UNIT INSTALL_TARGETS = Consts.INSTALL_TARGETS CONTEXT_CAP = Consts.CONTEXT_CAP COMPACT_RATIO = Consts.COMPACT_RATIO KEEP_TURNS = Consts.KEEP_TURNS MAX_STEPS = Consts.MAX_STEPS TOTAL_STEP_CAP = Consts.TOTAL_STEP_CAP LOOP_NUDGE_AT = Consts.LOOP_NUDGE_AT LOOP_STOP_AT = Consts.LOOP_STOP_AT SYSTEM_MAX_CHARS = Consts.SYSTEM_MAX_CHARS SHELL_TIMEOUT = Consts.SHELL_TIMEOUT SCHEDULER_INTERVAL = Consts.SCHEDULER_INTERVAL HTTP_TIMEOUT = Consts.HTTP_TIMEOUT STREAM_TIMEOUT = Consts.STREAM_TIMEOUT EDGE_HOST = Consts.EDGE_HOST EDGE_WS_PATH = Consts.EDGE_WS_PATH EDGE_TRUSTED_TOKEN = Consts.EDGE_TRUSTED_TOKEN EDGE_CHROMIUM = Consts.EDGE_CHROMIUM PROFILE_RE = Consts.PROFILE_RE BOT_RE = Consts.BOT_RE BOT_MENTION_RE = Consts.BOT_MENTION_RE SECRET_RE = Consts.SECRET_RE LEGACY_PASSWORD_NOTE = Consts.LEGACY_PASSWORD_NOTE VAULT_MEMORY_NOTE = Consts.VAULT_MEMORY_NOTE SAFE_COMMANDS = Consts.SAFE_COMMANDS RECORDERS = Consts.RECORDERS TRANSCRIBERS = Consts.TRANSCRIBERS SYSINFO_TIMEOUT = Consts.SYSINFO_TIMEOUT SYSINFO_BINARIES = Consts.SYSINFO_BINARIES DEFAULT_SYSTEM = Consts.DEFAULT_SYSTEM MERGE_SYSTEM = Consts.MERGE_SYSTEM COMPACT_SYSTEM = Consts.COMPACT_SYSTEM AUTONOMOUS_NOTE = Consts.AUTONOMOUS_NOTE HELP_TEXT = Consts.HELP_TEXT SPILL_LIMIT = Consts.SPILL_LIMIT RECORD_KINDS = Consts.RECORD_KINDS AUDIT_MAX_CHARS = Consts.AUDIT_MAX_CHARS FILE_RECORD_MAX = Consts.FILE_RECORD_MAX SHELL_SNAPSHOT_MAX_FILES = Consts.SHELL_SNAPSHOT_MAX_FILES BACKUP_KEEP = Consts.BACKUP_KEEP _UNSET = Consts._UNSET SHELL_SEGMENT = Consts.SHELL_SEGMENT SHELL_WRAPPERS = Consts.SHELL_WRAPPERS CHUNK_MAX_LINES = Consts.CHUNK_MAX_LINES CHUNK_OVERLAP_LINES = Consts.CHUNK_OVERLAP_LINES CHUNK_MAX_CHARS = Consts.CHUNK_MAX_CHARS VERSION_RE = Consts.VERSION_RE STREAM_HEIGHT = Consts.STREAM_HEIGHT DIFF_CONTEXT = Consts.DIFF_CONTEXT DIFF_MAX_LINES = Consts.DIFF_MAX_LINES BG_ADD = Consts.BG_ADD BG_DEL = Consts.BG_DEL FG_ORANGE = Consts.FG_ORANGE PY_KEYWORDS = Consts.PY_KEYWORDS PY_TOKEN_RE = Consts.PY_TOKEN_RE ANSI_RE = Consts.ANSI_RE MD_BULLETS = Consts.MD_BULLETS EXTERNAL_SKILL_DIRNAMES = Consts.EXTERNAL_SKILL_DIRNAMES SKILL_INSTALL_META_DIRNAME = Consts.SKILL_INSTALL_META_DIRNAME SKILL_BLUEPRINTS = Consts.SKILL_BLUEPRINTS BOX_OPENCODE_NODE_VERSION = Consts.BOX_OPENCODE_NODE_VERSION BOX_OPENCODE_INSTALL_SCRIPT = Consts.BOX_OPENCODE_INSTALL_SCRIPT MEM_EVENTS_CAP = Consts.MEM_EVENTS_CAP SCHEMA = Consts.SCHEMA SCHEMA_INDEXES = Consts.SCHEMA_INDEXES CORE_TOOLS = Consts.CORE_TOOLS LAZY_NAME_STOP = Consts.LAZY_NAME_STOP TOOL_TAGS = Consts.TOOL_TAGS TAG_AUTO_SKIP = Consts.TAG_AUTO_SKIP TAG_AUTO_MAX = Consts.TAG_AUTO_MAX TAG_LINK_MAX = Consts.TAG_LINK_MAX SINGULAR_KEEP = Consts.SINGULAR_KEEP PLEXER_DIR_NAME = Consts.PLEXER_DIR_NAME PLEXER_PREFIX_KEY = Consts.PLEXER_PREFIX_KEY PLEXER_SOCKET_ENV = Consts.PLEXER_SOCKET_ENV PLEXER_ACTIVE_ENV = Consts.PLEXER_ACTIVE_ENV PLEXER_RECV_MAX = Consts.PLEXER_RECV_MAX PLEXER_BASHRC_MARK_BEGIN = Consts.PLEXER_BASHRC_MARK_BEGIN PLEXER_BASHRC_MARK_END = Consts.PLEXER_BASHRC_MARK_END PLEXER_BASHRC_BLOCK = Consts.PLEXER_BASHRC_BLOCK FISH_PLEXER_BLOCK = Consts.FISH_PLEXER_BLOCK COMMANDS = Consts.COMMANDS TAI_SCRIPT = Consts.TAI_SCRIPT TAI_CONSTS = Consts.TAI_CONSTS # --- tai_pkg.edge --- edge_token = EdgeTts.edge_token edge_timestamp = EdgeTts.edge_timestamp edge_ssml = EdgeTts.edge_ssml edge_chunks = EdgeTts.edge_chunks ws_send = EdgeTts.ws_send ws_recv_exact = EdgeTts.ws_recv_exact ws_recv = EdgeTts.ws_recv edge_skew = EdgeTts.edge_skew edge_connect = EdgeTts.edge_connect edge_synthesize = EdgeTts.edge_synthesize play_audio = Audio.play_audio listen_audio = Audio.listen_audio # --- tai_pkg.gemini --- gemini_binary = Gemini.gemini_binary gemini_parse_output = Gemini.gemini_parse_output gemini_run = Gemini.gemini_run gemini_health = Gemini.gemini_health # --- tai_pkg.grok --- grok_binary = Grok.grok_binary grok_parse_output = Grok.grok_parse_output grok_run = Grok.grok_run grok_health = Grok.grok_health # --- tai_pkg.install --- run_host = Install.run_host venv_available = Install.venv_available venv_dir = Install.venv_dir venv_python = Install.venv_python ensure_venv = Install.ensure_venv service_exec = Install.service_exec unit_dir = Install.unit_dir service_state = Install.service_state activate_service = Install.activate_service remove_service_unit = Install.remove_service_unit script_version = Install.script_version shell_rc_path = Install.shell_rc_path shell_present = Install.shell_present _rc_block_present = Install._rc_block_present _rc_block_remove = Install._rc_block_remove _rc_block_upsert = Install._rc_block_upsert hook_present = Install.hook_present remove_bashrc_block = Install.remove_bashrc_block zsh_hook_present = Install.zsh_hook_present remove_zsh_hook_block = Install.remove_zsh_hook_block upsert_zsh_hook_block = Install.upsert_zsh_hook_block fish_hook_present = Install.fish_hook_present remove_fish_hook_block = Install.remove_fish_hook_block upsert_fish_hook_block = Install.upsert_fish_hook_block plexer_hook_present = Install.plexer_hook_present remove_plexer_bashrc_block = Install.remove_plexer_bashrc_block upsert_plexer_bashrc_block = Install.upsert_plexer_bashrc_block zsh_plexer_hook_present = Install.zsh_plexer_hook_present remove_zsh_plexer_block = Install.remove_zsh_plexer_block upsert_zsh_plexer_block = Install.upsert_zsh_plexer_block fish_plexer_hook_present = Install.fish_plexer_hook_present remove_fish_plexer_block = Install.remove_fish_plexer_block upsert_fish_plexer_block = Install.upsert_fish_plexer_block box_venv_state = Install.box_venv_state shell_hook_status_line = Install.shell_hook_status_line status_lines = Install.status_lines vault_line = Install.vault_line op_binary = Install.op_binary op_hook = Install.op_hook op_plexer_hook = Install.op_plexer_hook op_shell_hook = Install.op_shell_hook op_zsh_hook = Install.op_zsh_hook op_fish_hook = Install.op_fish_hook op_zsh_plexer_hook = Install.op_zsh_plexer_hook op_fish_plexer_hook = Install.op_fish_plexer_hook op_venv = Install.op_venv op_service = Install.op_service op_scheduler_service = Install.op_scheduler_service op_telegram_service = Install.op_telegram_service op_container = Install.op_container install_report = Install.install_report install_telegram = Install.install_telegram uninstall_telegram = Install.uninstall_telegram upsert_bashrc_block = Install.upsert_bashrc_block install_self = Install.install_self # --- tai_pkg.models --- model_speed_reward = ModelScoring.model_speed_reward model_latency_reward = ModelScoring.model_latency_reward model_outcome_reward = ModelScoring.model_outcome_reward model_weight = ModelScoring.model_weight fetch_model_ids = ModelScoring.fetch_model_ids embedded_failure_message = ModelScoring.embedded_failure_message prefer_muse = ModelScoring.prefer_muse openrouter_free_tier = ModelScoring.openrouter_free_tier models_report = ModelScoring.models_report probe_backend = ModelScoring.probe_backend # --- tai_pkg.muse --- muse_binary = Muse.muse_binary muse_output_schema = Muse.muse_output_schema muse_prompt = Muse.muse_prompt muse_argv = Muse.muse_argv muse_write_file = Muse.muse_write_file muse_message_hash = Muse.muse_message_hash muse_map_path = Muse.muse_map_path muse_load_map = Muse.muse_load_map muse_save_map = Muse.muse_save_map muse_acquire = Muse.muse_acquire muse_transact = Muse.muse_transact muse_session_root = Muse.muse_session_root muse_session_alive = Muse.muse_session_alive muse_session_split = Muse.muse_session_split muse_valid_answer = Muse.muse_valid_answer muse_gate = Muse.muse_gate muse_reap = Muse.muse_reap muse_run = Muse.muse_run muse_health = Muse.muse_health # --- tai_pkg.opencode --- opencode_binary = Opencode.opencode_binary opencode_prompt = Opencode.opencode_prompt opencode_parse = Opencode.opencode_parse opencode_parse_events = Opencode.opencode_parse_events opencode_run = Opencode.opencode_run opencode_free_models = Opencode.opencode_free_models opencode_headers = Opencode.opencode_headers # --- tai_pkg.plexer --- plexer_dir = PlexerSetup.plexer_dir plexer_should_wrap = PlexerSetup.plexer_should_wrap # --- tai_pkg.release --- next_version = Release.next_version atomic_write = Release.atomic_write sealed_write = Release.sealed_write quarantine = Release.quarantine release_bump = Release.release_bump backups_dir = Release.backups_dir prune_backups = Release.prune_backups snapshot_self = Release.snapshot_self backup_has_digest = Release.backup_has_digest ensure_self_backup = Release.ensure_self_backup do_release = Release.do_release # --- tai_pkg.render --- paint = Render.paint stream_status = Render.stream_status truncate_ansi = Render.truncate_ansi run_live = Render.run_live color_enabled = Render.color_enabled highlight_python = Render.highlight_python split_diff_lines = Render.split_diff_lines render_diff = Render.render_diff pad_tinted = Render.pad_tinted strip_ansi = Render.strip_ansi style_text = Render.style_text style_span = Render.style_span wrap_ansi = Render.wrap_ansi md_inline = Render.md_inline md_split_row = Render.md_split_row md_is_separator = Render.md_is_separator md_align_cell = Render.md_align_cell md_table_block = Render.md_table_block render_markdown = Render.render_markdown # --- tai_pkg.sandbox --- container_engine = Sandbox.container_engine box_state = Sandbox.box_state ensure_box = Sandbox.ensure_box box_exec = Sandbox.box_exec box_python = Sandbox.box_python box_transcribe = Sandbox.box_transcribe box_speak = Sandbox.box_speak box_opencode_binary = Sandbox.box_opencode_binary box_opencode_run = Sandbox.box_opencode_run # --- tai_pkg.scheduler --- parse_schedule_at = Scheduler.parse_schedule_at parse_duration = Scheduler.parse_duration format_delay = Scheduler.format_delay local_display = Scheduler.local_display format_schedule_lines = Scheduler.format_schedule_lines note_schedule_result = Scheduler.note_schedule_result watch_schedule = Scheduler.watch_schedule scheduler_tick = Scheduler.scheduler_tick run_scheduler_loop = Scheduler.run_scheduler_loop start_scheduler = Scheduler.start_scheduler # --- tai_pkg.seal --- resolve_passphrase = SealManager.resolve_passphrase rotate_seal = SealManager.rotate_seal # --- tai_pkg.shellsnap --- shell_target_paths = ShellSnap.shell_target_paths segment_targets = ShellSnap.segment_targets spill_output = ShellSnap.spill_output spilled_view = ShellSnap.spilled_view spill_or_truncate = ShellSnap.spill_or_truncate # --- tai_pkg.skills --- parse_skill_front = Skills.parse_skill_front parse_skill_file = Skills.parse_skill_file skill_scope_dir = Skills.skill_scope_dir default_skill_scope = Skills.default_skill_scope skill_extra_files = Skills.skill_extra_files skill_install_meta_path = Skills.skill_install_meta_path load_skill_install_meta = Skills.load_skill_install_meta save_skill_install_meta = Skills.save_skill_install_meta is_external_skill_root = Skills.is_external_skill_root skill_provenance_note = Skills.skill_provenance_note discover_skills = Skills.discover_skills skill_catalog = Skills.skill_catalog create_skill_prompt = Skills.create_skill_prompt # --- tai_pkg.store --- ensure_column = Store.ensure_column fts_escape = Store.fts_escape fts_match = Store.fts_match open_mem_events = Store.open_mem_events setup_fts = Store.setup_fts table_pk_columns = Store.table_pk_columns rebuild_with_profile = Store.rebuild_with_profile migrate_profiles = Store.migrate_profiles ensure_schema = Store.ensure_schema # --- tai_pkg.sysinfo --- tmux_pane_header = SysInfo.tmux_pane_header sysinfo_check_os = SysInfo.sysinfo_check_os sysinfo_check_python = SysInfo.sysinfo_check_python sysinfo_check_venv = SysInfo.sysinfo_check_venv sysinfo_check_root = SysInfo.sysinfo_check_root sysinfo_check_container = SysInfo.sysinfo_check_container sysinfo_check_binaries = SysInfo.sysinfo_check_binaries sysinfo_check_cpu = SysInfo.sysinfo_check_cpu sysinfo_check_disk = SysInfo.sysinfo_check_disk collect_sysinfo = SysInfo.collect_sysinfo # --- tai_pkg.telegram --- telegram_env_path = TelegramBot.telegram_env_path load_telegram_token = TelegramBot.load_telegram_token telegram_send = TelegramBot.telegram_send telegram_transcribe = TelegramBot.telegram_transcribe handle_telegram_update = TelegramBot.handle_telegram_update run_telegram_bot = TelegramBot.run_telegram_bot # --- tai_pkg.text --- _fromisoformat = Text._fromisoformat curl_hint = Text.curl_hint now_iso = Text.now_iso short_error = Text.short_error truncate = Text.truncate capped_text = Text.capped_text trunc_marker = Text.trunc_marker read_capped = Text.read_capped chunk_lines = Text.chunk_lines collapse_repeated_lines = Text.collapse_repeated_lines estimate_tokens = Text.estimate_tokens as_int = Text.as_int tool_args_text = Text.tool_args_text action_signature = Text.action_signature result_digest = Text.result_digest human_size = Text.human_size is_free_model = Text.is_free_model secret_env_name = Text.secret_env_name normalize_tag = Text.normalize_tag normalize_tags = Text.normalize_tags singular_noun = Text.singular_noun tag_variants = Text.tag_variants parse_node_id = Text.parse_node_id # --- tai_pkg.toolschema --- tool_schema = ToolRegistry.tool_schema tool_env_ok = ToolRegistry.tool_env_ok tool_catalog = ToolRegistry.tool_catalog select_tools = ToolRegistry.select_tools if __name__ == "__main__": sys.exit(App.main())