gitextract_hx0zswhm/ ├── .dockerignore ├── .github/ │ └── workflows/ │ └── ci.yml ├── .gitignore ├── COMMUNICATION.md ├── CONTRIBUTING.md ├── Dockerfile ├── LICENSE ├── README.md ├── SECURITY.md ├── bridge/ │ ├── package.json │ ├── src/ │ │ ├── index.ts │ │ ├── server.ts │ │ ├── types.d.ts │ │ └── whatsapp.ts │ └── tsconfig.json ├── core_agent_lines.sh ├── docker-compose.yml ├── docs/ │ └── CHANNEL_PLUGIN_GUIDE.md ├── nanobot/ │ ├── __init__.py │ ├── __main__.py │ ├── agent/ │ │ ├── __init__.py │ │ ├── context.py │ │ ├── loop.py │ │ ├── memory.py │ │ ├── skills.py │ │ ├── subagent.py │ │ └── tools/ │ │ ├── __init__.py │ │ ├── base.py │ │ ├── cron.py │ │ ├── filesystem.py │ │ ├── mcp.py │ │ ├── message.py │ │ ├── registry.py │ │ ├── shell.py │ │ ├── spawn.py │ │ └── web.py │ ├── bus/ │ │ ├── __init__.py │ │ ├── events.py │ │ └── queue.py │ ├── channels/ │ │ ├── __init__.py │ │ ├── base.py │ │ ├── dingtalk.py │ │ ├── discord.py │ │ ├── email.py │ │ ├── feishu.py │ │ ├── manager.py │ │ ├── matrix.py │ │ ├── mochat.py │ │ ├── qq.py │ │ ├── registry.py │ │ ├── slack.py │ │ ├── telegram.py │ │ ├── wecom.py │ │ └── whatsapp.py │ ├── cli/ │ │ ├── __init__.py │ │ └── commands.py │ ├── config/ │ │ ├── __init__.py │ │ ├── loader.py │ │ ├── paths.py │ │ └── schema.py │ ├── cron/ │ │ ├── __init__.py │ │ ├── service.py │ │ └── types.py │ ├── heartbeat/ │ │ ├── __init__.py │ │ └── service.py │ ├── providers/ │ │ ├── __init__.py │ │ ├── azure_openai_provider.py │ │ ├── base.py │ │ ├── custom_provider.py │ │ ├── litellm_provider.py │ │ ├── openai_codex_provider.py │ │ ├── registry.py │ │ └── transcription.py │ ├── security/ │ │ ├── __init__.py │ │ └── network.py │ ├── session/ │ │ ├── __init__.py │ │ └── manager.py │ ├── skills/ │ │ ├── README.md │ │ ├── clawhub/ │ │ │ └── SKILL.md │ │ ├── cron/ │ │ │ └── SKILL.md │ │ ├── github/ │ │ │ └── SKILL.md │ │ ├── memory/ │ │ │ └── SKILL.md │ │ ├── skill-creator/ │ │ │ ├── SKILL.md │ │ │ └── scripts/ │ │ │ ├── init_skill.py │ │ │ ├── package_skill.py │ │ │ └── quick_validate.py │ │ ├── summarize/ │ │ │ └── SKILL.md │ │ ├── tmux/ │ │ │ ├── SKILL.md │ │ │ └── scripts/ │ │ │ ├── find-sessions.sh │ │ │ └── wait-for-text.sh │ │ └── weather/ │ │ └── SKILL.md │ ├── templates/ │ │ ├── AGENTS.md │ │ ├── HEARTBEAT.md │ │ ├── SOUL.md │ │ ├── TOOLS.md │ │ ├── USER.md │ │ ├── __init__.py │ │ └── memory/ │ │ ├── MEMORY.md │ │ └── __init__.py │ └── utils/ │ ├── __init__.py │ ├── evaluator.py │ └── helpers.py ├── pyproject.toml └── tests/ ├── test_azure_openai_provider.py ├── test_base_channel.py ├── test_channel_plugins.py ├── test_cli_input.py ├── test_commands.py ├── test_config_migration.py ├── test_config_paths.py ├── test_consolidate_offset.py ├── test_context_prompt_cache.py ├── test_cron_service.py ├── test_cron_tool_list.py ├── test_custom_provider.py ├── test_dingtalk_channel.py ├── test_docker.sh ├── test_email_channel.py ├── test_evaluator.py ├── test_exec_security.py ├── test_feishu_markdown_rendering.py ├── test_feishu_post_content.py ├── test_feishu_reply.py ├── test_feishu_table_split.py ├── test_feishu_tool_hint_code_block.py ├── test_filesystem_tools.py ├── test_gemini_thought_signature.py ├── test_heartbeat_service.py ├── test_litellm_kwargs.py ├── test_loop_consolidation_tokens.py ├── test_loop_save_turn.py ├── test_matrix_channel.py ├── test_mcp_tool.py ├── test_memory_consolidation_types.py ├── test_message_tool.py ├── test_message_tool_suppress.py ├── test_provider_retry.py ├── test_providers_init.py ├── test_qq_channel.py ├── test_restart_command.py ├── test_security_network.py ├── test_session_manager_history.py ├── test_skill_creator_scripts.py ├── test_slack_channel.py ├── test_task_cancel.py ├── test_telegram_channel.py ├── test_tool_validation.py ├── test_web_fetch_security.py └── test_web_search_tool.py