gitextract_tfefpv8c/ ├── .dockerignore ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ ├── feature_request.md │ │ └── general-task---todo.md │ ├── dependabot.yml │ ├── pull_request_template.md │ └── workflows/ │ ├── build.yml │ ├── docker-build.yml │ ├── nightly.yml │ ├── pr.yml │ ├── release.yml │ └── upload-tos.yml ├── .gitignore ├── .golangci.yaml ├── .goreleaser.yaml ├── CONTRIBUTING.md ├── CONTRIBUTING.zh.md ├── LICENSE ├── Makefile ├── README.fr.md ├── README.id.md ├── README.it.md ├── README.ja.md ├── README.md ├── README.pt-br.md ├── README.vi.md ├── README.zh.md ├── ROADMAP.md ├── cmd/ │ ├── picoclaw/ │ │ ├── internal/ │ │ │ ├── agent/ │ │ │ │ ├── command.go │ │ │ │ ├── command_test.go │ │ │ │ └── helpers.go │ │ │ ├── auth/ │ │ │ │ ├── command.go │ │ │ │ ├── command_test.go │ │ │ │ ├── helpers.go │ │ │ │ ├── login.go │ │ │ │ ├── login_test.go │ │ │ │ ├── logout.go │ │ │ │ ├── logout_test.go │ │ │ │ ├── models.go │ │ │ │ ├── models_test.go │ │ │ │ ├── status.go │ │ │ │ └── status_test.go │ │ │ ├── cron/ │ │ │ │ ├── add.go │ │ │ │ ├── add_test.go │ │ │ │ ├── command.go │ │ │ │ ├── command_test.go │ │ │ │ ├── disable.go │ │ │ │ ├── disable_test.go │ │ │ │ ├── enable.go │ │ │ │ ├── enable_test.go │ │ │ │ ├── helpers.go │ │ │ │ ├── list.go │ │ │ │ ├── list_test.go │ │ │ │ ├── remove.go │ │ │ │ └── remove_test.go │ │ │ ├── gateway/ │ │ │ │ ├── command.go │ │ │ │ └── command_test.go │ │ │ ├── helpers.go │ │ │ ├── helpers_test.go │ │ │ ├── migrate/ │ │ │ │ ├── command.go │ │ │ │ └── command_test.go │ │ │ ├── model/ │ │ │ │ ├── command.go │ │ │ │ └── command_test.go │ │ │ ├── onboard/ │ │ │ │ ├── command.go │ │ │ │ ├── command_test.go │ │ │ │ ├── helpers.go │ │ │ │ └── helpers_test.go │ │ │ ├── skills/ │ │ │ │ ├── command.go │ │ │ │ ├── command_test.go │ │ │ │ ├── helpers.go │ │ │ │ ├── install.go │ │ │ │ ├── install_test.go │ │ │ │ ├── installbuiltin.go │ │ │ │ ├── installbuiltin_test.go │ │ │ │ ├── list.go │ │ │ │ ├── list_test.go │ │ │ │ ├── listbuiltin.go │ │ │ │ ├── listbuiltin_test.go │ │ │ │ ├── remove.go │ │ │ │ ├── remove_test.go │ │ │ │ ├── search.go │ │ │ │ ├── search_test.go │ │ │ │ ├── show.go │ │ │ │ └── show_test.go │ │ │ ├── status/ │ │ │ │ ├── command.go │ │ │ │ ├── command_test.go │ │ │ │ └── helpers.go │ │ │ └── version/ │ │ │ ├── command.go │ │ │ └── command_test.go │ │ ├── main.go │ │ └── main_test.go │ └── picoclaw-launcher-tui/ │ ├── internal/ │ │ ├── config/ │ │ │ └── store.go │ │ └── ui/ │ │ ├── app.go │ │ ├── channel.go │ │ ├── gateway_posix.go │ │ ├── gateway_windows.go │ │ ├── menu.go │ │ ├── model.go │ │ └── style.go │ └── main.go ├── config/ │ └── config.example.json ├── docker/ │ ├── Dockerfile │ ├── Dockerfile.full │ ├── Dockerfile.goreleaser │ ├── Dockerfile.goreleaser.launcher │ ├── docker-compose.full.yml │ ├── docker-compose.yml │ └── entrypoint.sh ├── docs/ │ ├── ANTIGRAVITY_AUTH.md │ ├── ANTIGRAVITY_USAGE.md │ ├── agent-refactor/ │ │ └── README.md │ ├── channels/ │ │ ├── dingtalk/ │ │ │ └── README.zh.md │ │ ├── discord/ │ │ │ └── README.zh.md │ │ ├── feishu/ │ │ │ └── README.zh.md │ │ ├── line/ │ │ │ └── README.zh.md │ │ ├── maixcam/ │ │ │ └── README.zh.md │ │ ├── matrix/ │ │ │ ├── README.md │ │ │ └── README.zh.md │ │ ├── onebot/ │ │ │ └── README.zh.md │ │ ├── qq/ │ │ │ └── README.zh.md │ │ ├── slack/ │ │ │ └── README.zh.md │ │ ├── telegram/ │ │ │ └── README.zh.md │ │ └── wecom/ │ │ ├── wecom_aibot/ │ │ │ └── README.zh.md │ │ ├── wecom_app/ │ │ │ └── README.zh.md │ │ └── wecom_bot/ │ │ └── README.zh.md │ ├── chat-apps.md │ ├── configuration.md │ ├── credential_encryption.md │ ├── debug.md │ ├── design/ │ │ ├── issue-783-investigation-and-fix-plan.zh.md │ │ ├── provider-refactoring-tests.md │ │ └── provider-refactoring.md │ ├── docker.md │ ├── fr/ │ │ ├── chat-apps.md │ │ ├── configuration.md │ │ ├── docker.md │ │ ├── providers.md │ │ ├── spawn-tasks.md │ │ ├── tools_configuration.md │ │ └── troubleshooting.md │ ├── it/ │ │ └── configuration.md │ ├── ja/ │ │ ├── chat-apps.md │ │ ├── configuration.md │ │ ├── docker.md │ │ ├── providers.md │ │ ├── spawn-tasks.md │ │ ├── tools_configuration.md │ │ └── troubleshooting.md │ ├── migration/ │ │ └── model-list-migration.md │ ├── providers.md │ ├── pt-br/ │ │ ├── chat-apps.md │ │ ├── configuration.md │ │ ├── docker.md │ │ ├── providers.md │ │ ├── spawn-tasks.md │ │ ├── tools_configuration.md │ │ └── troubleshooting.md │ ├── spawn-tasks.md │ ├── tools_configuration.md │ ├── troubleshooting.md │ ├── vi/ │ │ ├── chat-apps.md │ │ ├── configuration.md │ │ ├── docker.md │ │ ├── providers.md │ │ ├── spawn-tasks.md │ │ ├── tools_configuration.md │ │ └── troubleshooting.md │ └── zh/ │ ├── chat-apps.md │ ├── configuration.md │ ├── docker.md │ ├── providers.md │ ├── spawn-tasks.md │ ├── tools_configuration.md │ └── troubleshooting.md ├── go.mod ├── go.sum ├── pkg/ │ ├── agent/ │ │ ├── context.go │ │ ├── context_cache_test.go │ │ ├── context_test.go │ │ ├── instance.go │ │ ├── instance_test.go │ │ ├── loop.go │ │ ├── loop_mcp.go │ │ ├── loop_mcp_test.go │ │ ├── loop_media.go │ │ ├── loop_test.go │ │ ├── memory.go │ │ ├── mock_provider_test.go │ │ ├── model_resolution.go │ │ ├── registry.go │ │ ├── registry_test.go │ │ ├── thinking.go │ │ └── thinking_test.go │ ├── auth/ │ │ ├── anthropic_usage.go │ │ ├── anthropic_usage_test.go │ │ ├── oauth.go │ │ ├── oauth_test.go │ │ ├── pkce.go │ │ ├── pkce_test.go │ │ ├── store.go │ │ ├── store_test.go │ │ ├── token.go │ │ └── token_test.go │ ├── bus/ │ │ ├── bus.go │ │ ├── bus_test.go │ │ └── types.go │ ├── channels/ │ │ ├── README.md │ │ ├── README.zh.md │ │ ├── base.go │ │ ├── base_test.go │ │ ├── dingtalk/ │ │ │ ├── dingtalk.go │ │ │ └── init.go │ │ ├── discord/ │ │ │ ├── discord.go │ │ │ ├── discord_resolve_test.go │ │ │ ├── discord_test.go │ │ │ └── init.go │ │ ├── errors.go │ │ ├── errors_test.go │ │ ├── errutil.go │ │ ├── errutil_test.go │ │ ├── feishu/ │ │ │ ├── common.go │ │ │ ├── common_test.go │ │ │ ├── feishu_32.go │ │ │ ├── feishu_64.go │ │ │ ├── feishu_64_test.go │ │ │ ├── init.go │ │ │ └── token_cache.go │ │ ├── interfaces.go │ │ ├── interfaces_command_test.go │ │ ├── irc/ │ │ │ ├── handler.go │ │ │ ├── init.go │ │ │ ├── irc.go │ │ │ └── irc_test.go │ │ ├── line/ │ │ │ ├── init.go │ │ │ ├── line.go │ │ │ └── line_test.go │ │ ├── maixcam/ │ │ │ ├── init.go │ │ │ └── maixcam.go │ │ ├── manager.go │ │ ├── manager_channel.go │ │ ├── manager_channel_test.go │ │ ├── manager_test.go │ │ ├── matrix/ │ │ │ ├── init.go │ │ │ ├── matrix.go │ │ │ └── matrix_test.go │ │ ├── media.go │ │ ├── onebot/ │ │ │ ├── init.go │ │ │ └── onebot.go │ │ ├── pico/ │ │ │ ├── init.go │ │ │ ├── pico.go │ │ │ └── protocol.go │ │ ├── qq/ │ │ │ ├── botgo_logger.go │ │ │ ├── init.go │ │ │ ├── qq.go │ │ │ └── qq_test.go │ │ ├── registry.go │ │ ├── slack/ │ │ │ ├── init.go │ │ │ ├── slack.go │ │ │ └── slack_test.go │ │ ├── split.go │ │ ├── split_test.go │ │ ├── telegram/ │ │ │ ├── command_registration.go │ │ │ ├── command_registration_test.go │ │ │ ├── init.go │ │ │ ├── parse_markdown_to_md_v2.go │ │ │ ├── parse_markdown_to_md_v2_test.go │ │ │ ├── parser_markdown_to_html.go │ │ │ ├── telegram.go │ │ │ ├── telegram_dispatch_test.go │ │ │ ├── telegram_group_command_filter_test.go │ │ │ ├── telegram_test.go │ │ │ └── testdata/ │ │ │ └── md2_all_formats.txt │ │ ├── webhook.go │ │ ├── wecom/ │ │ │ ├── aibot.go │ │ │ ├── aibot_test.go │ │ │ ├── aibot_ws.go │ │ │ ├── aibot_ws_test.go │ │ │ ├── app.go │ │ │ ├── app_test.go │ │ │ ├── bot.go │ │ │ ├── bot_test.go │ │ │ ├── common.go │ │ │ ├── dedupe.go │ │ │ ├── dedupe_test.go │ │ │ └── init.go │ │ ├── whatsapp/ │ │ │ ├── init.go │ │ │ ├── whatsapp.go │ │ │ └── whatsapp_command_test.go │ │ └── whatsapp_native/ │ │ ├── init.go │ │ ├── whatsapp_command_test.go │ │ ├── whatsapp_native.go │ │ └── whatsapp_native_stub.go │ ├── commands/ │ │ ├── builtin.go │ │ ├── builtin_test.go │ │ ├── cmd_check.go │ │ ├── cmd_clear.go │ │ ├── cmd_help.go │ │ ├── cmd_list.go │ │ ├── cmd_reload.go │ │ ├── cmd_show.go │ │ ├── cmd_start.go │ │ ├── cmd_switch.go │ │ ├── cmd_switch_test.go │ │ ├── definition.go │ │ ├── definition_test.go │ │ ├── executor.go │ │ ├── executor_test.go │ │ ├── handler_agents.go │ │ ├── registry.go │ │ ├── registry_test.go │ │ ├── request.go │ │ ├── request_test.go │ │ ├── runtime.go │ │ └── show_list_handlers_test.go │ ├── config/ │ │ ├── config.go │ │ ├── config_test.go │ │ ├── defaults.go │ │ ├── envkeys.go │ │ ├── migration.go │ │ ├── migration_test.go │ │ ├── model_config_test.go │ │ ├── multikey_test.go │ │ ├── version.go │ │ └── version_test.go │ ├── constants/ │ │ └── channels.go │ ├── credential/ │ │ ├── credential.go │ │ ├── credential_test.go │ │ ├── keygen.go │ │ ├── keygen_test.go │ │ ├── store.go │ │ └── store_test.go │ ├── cron/ │ │ ├── service.go │ │ └── service_test.go │ ├── devices/ │ │ ├── events/ │ │ │ └── events.go │ │ ├── service.go │ │ ├── source.go │ │ └── sources/ │ │ ├── usb_linux.go │ │ └── usb_stub.go │ ├── fileutil/ │ │ └── file.go │ ├── gateway/ │ │ └── gateway.go │ ├── health/ │ │ └── server.go │ ├── heartbeat/ │ │ ├── service.go │ │ └── service_test.go │ ├── identity/ │ │ ├── identity.go │ │ └── identity_test.go │ ├── logger/ │ │ ├── logger.go │ │ ├── logger_3rd_party.go │ │ └── logger_test.go │ ├── mcp/ │ │ ├── manager.go │ │ └── manager_test.go │ ├── media/ │ │ ├── store.go │ │ ├── store_test.go │ │ └── tempdir.go │ ├── memory/ │ │ ├── jsonl.go │ │ ├── jsonl_test.go │ │ ├── migration.go │ │ ├── migration_test.go │ │ └── store.go │ ├── migrate/ │ │ ├── internal/ │ │ │ ├── common.go │ │ │ ├── common_test.go │ │ │ └── types.go │ │ ├── migrate.go │ │ ├── migrate_test.go │ │ └── sources/ │ │ └── openclaw/ │ │ ├── common.go │ │ ├── openclaw_config.go │ │ ├── openclaw_config_test.go │ │ ├── openclaw_handler.go │ │ └── openclaw_handler_test.go │ ├── providers/ │ │ ├── anthropic/ │ │ │ ├── provider.go │ │ │ ├── provider_test.go │ │ │ └── thinking_test.go │ │ ├── anthropic_messages/ │ │ │ ├── provider.go │ │ │ └── provider_test.go │ │ ├── antigravity_provider.go │ │ ├── antigravity_provider_test.go │ │ ├── azure/ │ │ │ ├── provider.go │ │ │ └── provider_test.go │ │ ├── claude_cli_provider.go │ │ ├── claude_cli_provider_integration_test.go │ │ ├── claude_cli_provider_test.go │ │ ├── claude_provider.go │ │ ├── claude_provider_test.go │ │ ├── codex_cli_credentials.go │ │ ├── codex_cli_credentials_test.go │ │ ├── codex_cli_provider.go │ │ ├── codex_cli_provider_integration_test.go │ │ ├── codex_cli_provider_test.go │ │ ├── codex_provider.go │ │ ├── codex_provider_test.go │ │ ├── common/ │ │ │ ├── common.go │ │ │ └── common_test.go │ │ ├── cooldown.go │ │ ├── cooldown_test.go │ │ ├── error_classifier.go │ │ ├── error_classifier_test.go │ │ ├── factory.go │ │ ├── factory_provider.go │ │ ├── factory_provider_test.go │ │ ├── factory_test.go │ │ ├── fallback.go │ │ ├── fallback_multikey_test.go │ │ ├── fallback_test.go │ │ ├── github_copilot_provider.go │ │ ├── http_provider.go │ │ ├── legacy_provider.go │ │ ├── model_ref.go │ │ ├── model_ref_test.go │ │ ├── openai_compat/ │ │ │ ├── provider.go │ │ │ └── provider_test.go │ │ ├── protocoltypes/ │ │ │ └── types.go │ │ ├── tool_call_extract.go │ │ ├── toolcall_utils.go │ │ └── types.go │ ├── routing/ │ │ ├── agent_id.go │ │ ├── agent_id_test.go │ │ ├── classifier.go │ │ ├── features.go │ │ ├── route.go │ │ ├── route_test.go │ │ ├── router.go │ │ ├── router_test.go │ │ ├── session_key.go │ │ └── session_key_test.go │ ├── session/ │ │ ├── jsonl_backend.go │ │ ├── jsonl_backend_test.go │ │ ├── manager.go │ │ ├── manager_test.go │ │ └── session_store.go │ ├── skills/ │ │ ├── clawhub_registry.go │ │ ├── clawhub_registry_test.go │ │ ├── installer.go │ │ ├── installer_test.go │ │ ├── loader.go │ │ ├── loader_test.go │ │ ├── registry.go │ │ ├── registry_test.go │ │ ├── search_cache.go │ │ └── search_cache_test.go │ ├── state/ │ │ ├── state.go │ │ └── state_test.go │ ├── tools/ │ │ ├── base.go │ │ ├── cron.go │ │ ├── cron_test.go │ │ ├── edit.go │ │ ├── edit_test.go │ │ ├── filesystem.go │ │ ├── filesystem_test.go │ │ ├── i2c.go │ │ ├── i2c_linux.go │ │ ├── i2c_other.go │ │ ├── mcp_tool.go │ │ ├── mcp_tool_test.go │ │ ├── message.go │ │ ├── message_test.go │ │ ├── registry.go │ │ ├── registry_test.go │ │ ├── result.go │ │ ├── result_test.go │ │ ├── search_tool.go │ │ ├── search_tools_test.go │ │ ├── send_file.go │ │ ├── send_file_test.go │ │ ├── shell.go │ │ ├── shell_process_unix.go │ │ ├── shell_process_windows.go │ │ ├── shell_test.go │ │ ├── shell_timeout_unix_test.go │ │ ├── skills_install.go │ │ ├── skills_install_test.go │ │ ├── skills_search.go │ │ ├── skills_search_test.go │ │ ├── spawn.go │ │ ├── spawn_status.go │ │ ├── spawn_status_test.go │ │ ├── spawn_test.go │ │ ├── spi.go │ │ ├── spi_linux.go │ │ ├── spi_other.go │ │ ├── subagent.go │ │ ├── subagent_tool_test.go │ │ ├── toolloop.go │ │ ├── types.go │ │ ├── web.go │ │ └── web_test.go │ ├── utils/ │ │ ├── bm25.go │ │ ├── bm25_test.go │ │ ├── download.go │ │ ├── http_client.go │ │ ├── http_client_test.go │ │ ├── http_retry.go │ │ ├── http_retry_test.go │ │ ├── markdown.go │ │ ├── markdown_test.go │ │ ├── media.go │ │ ├── skills.go │ │ ├── string.go │ │ ├── string_test.go │ │ └── zip.go │ └── voice/ │ ├── transcriber.go │ └── transcriber_test.go ├── scripts/ │ ├── build-macos-app.sh │ ├── icon.icns │ ├── setup.iss │ ├── test-docker-mcp.sh │ └── test-irc.sh ├── web/ │ ├── Makefile │ ├── README.md │ ├── backend/ │ │ ├── .gitignore │ │ ├── api/ │ │ │ ├── channels.go │ │ │ ├── config.go │ │ │ ├── config_test.go │ │ │ ├── gateway.go │ │ │ ├── gateway_host.go │ │ │ ├── gateway_host_test.go │ │ │ ├── gateway_test.go │ │ │ ├── launcher_config.go │ │ │ ├── launcher_config_test.go │ │ │ ├── log.go │ │ │ ├── model_status.go │ │ │ ├── models.go │ │ │ ├── models_test.go │ │ │ ├── oauth.go │ │ │ ├── oauth_test.go │ │ │ ├── pico.go │ │ │ ├── pico_test.go │ │ │ ├── router.go │ │ │ ├── session.go │ │ │ ├── session_test.go │ │ │ ├── skills.go │ │ │ ├── skills_test.go │ │ │ ├── startup.go │ │ │ ├── startup_test.go │ │ │ ├── tools.go │ │ │ └── tools_test.go │ │ ├── app_runtime.go │ │ ├── dist/ │ │ │ └── .gitkeep │ │ ├── embed.go │ │ ├── embed_test.go │ │ ├── i18n.go │ │ ├── launcherconfig/ │ │ │ ├── config.go │ │ │ └── config_test.go │ │ ├── main.go │ │ ├── middleware/ │ │ │ ├── access_control.go │ │ │ ├── access_control_test.go │ │ │ └── middleware.go │ │ ├── model/ │ │ │ └── status.go │ │ ├── systray.go │ │ ├── systray_unix.go │ │ ├── systray_windows.go │ │ ├── tray_stub_nocgo.go │ │ ├── utils/ │ │ │ ├── banner.go │ │ │ ├── onboard.go │ │ │ ├── onboard_test.go │ │ │ └── runtime.go │ │ └── winres/ │ │ └── winres.json │ ├── frontend/ │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── .prettierignore │ │ ├── components.json │ │ ├── eslint.config.js │ │ ├── index.html │ │ ├── package.json │ │ ├── prettier.config.js │ │ ├── public/ │ │ │ └── site.webmanifest │ │ ├── scripts/ │ │ │ └── ensure-backend-gitkeep.cjs │ │ ├── src/ │ │ │ ├── api/ │ │ │ │ ├── channels.ts │ │ │ │ ├── gateway.ts │ │ │ │ ├── models.ts │ │ │ │ ├── oauth.ts │ │ │ │ ├── pico.ts │ │ │ │ ├── sessions.ts │ │ │ │ ├── skills.ts │ │ │ │ ├── system.ts │ │ │ │ └── tools.ts │ │ │ ├── components/ │ │ │ │ ├── app-header.tsx │ │ │ │ ├── app-layout.tsx │ │ │ │ ├── app-sidebar.tsx │ │ │ │ ├── channels/ │ │ │ │ │ ├── channel-config-page.tsx │ │ │ │ │ ├── channel-display-name.ts │ │ │ │ │ └── channel-forms/ │ │ │ │ │ ├── discord-form.tsx │ │ │ │ │ ├── feishu-form.tsx │ │ │ │ │ ├── generic-form.tsx │ │ │ │ │ ├── slack-form.tsx │ │ │ │ │ └── telegram-form.tsx │ │ │ │ ├── chat/ │ │ │ │ │ ├── assistant-message.tsx │ │ │ │ │ ├── chat-composer.tsx │ │ │ │ │ ├── chat-empty-state.tsx │ │ │ │ │ ├── chat-page.tsx │ │ │ │ │ ├── model-selector.tsx │ │ │ │ │ ├── session-history-menu.tsx │ │ │ │ │ ├── typing-indicator.tsx │ │ │ │ │ └── user-message.tsx │ │ │ │ ├── config/ │ │ │ │ │ ├── config-page.tsx │ │ │ │ │ ├── config-sections.tsx │ │ │ │ │ ├── form-model.ts │ │ │ │ │ └── raw-config-page.tsx │ │ │ │ ├── credentials/ │ │ │ │ │ ├── anthropic-credential-card.tsx │ │ │ │ │ ├── antigravity-credential-card.tsx │ │ │ │ │ ├── credential-card.tsx │ │ │ │ │ ├── credentials-page.tsx │ │ │ │ │ ├── device-code-sheet.tsx │ │ │ │ │ ├── logout-confirm-dialog.tsx │ │ │ │ │ ├── openai-credential-card.tsx │ │ │ │ │ └── provider-status-line.tsx │ │ │ │ ├── logs/ │ │ │ │ │ ├── ansi-log-line.tsx │ │ │ │ │ ├── logs-page.tsx │ │ │ │ │ └── logs-panel.tsx │ │ │ │ ├── models/ │ │ │ │ │ ├── add-model-sheet.tsx │ │ │ │ │ ├── delete-model-dialog.tsx │ │ │ │ │ ├── edit-model-sheet.tsx │ │ │ │ │ ├── model-card.tsx │ │ │ │ │ ├── models-page.tsx │ │ │ │ │ ├── provider-icon.tsx │ │ │ │ │ ├── provider-label.ts │ │ │ │ │ └── provider-section.tsx │ │ │ │ ├── page-header.tsx │ │ │ │ ├── secret-placeholder.ts │ │ │ │ ├── shared-form.tsx │ │ │ │ ├── skills/ │ │ │ │ │ └── skills-page.tsx │ │ │ │ ├── tools/ │ │ │ │ │ └── tools-page.tsx │ │ │ │ └── ui/ │ │ │ │ ├── alert-dialog.tsx │ │ │ │ ├── button.tsx │ │ │ │ ├── card.tsx │ │ │ │ ├── collapsible.tsx │ │ │ │ ├── dropdown-menu.tsx │ │ │ │ ├── field.tsx │ │ │ │ ├── input.tsx │ │ │ │ ├── label.tsx │ │ │ │ ├── scroll-area.tsx │ │ │ │ ├── select.tsx │ │ │ │ ├── separator.tsx │ │ │ │ ├── sheet.tsx │ │ │ │ ├── sidebar.tsx │ │ │ │ ├── skeleton.tsx │ │ │ │ ├── switch.tsx │ │ │ │ ├── textarea.tsx │ │ │ │ └── tooltip.tsx │ │ │ ├── features/ │ │ │ │ └── chat/ │ │ │ │ ├── controller.ts │ │ │ │ ├── history.ts │ │ │ │ ├── protocol.ts │ │ │ │ ├── state.ts │ │ │ │ └── websocket.ts │ │ │ ├── hooks/ │ │ │ │ ├── use-chat-models.ts │ │ │ │ ├── use-credentials-page.ts │ │ │ │ ├── use-gateway-logs.ts │ │ │ │ ├── use-gateway.ts │ │ │ │ ├── use-log-wrap-columns.ts │ │ │ │ ├── use-mobile.ts │ │ │ │ ├── use-pico-chat.ts │ │ │ │ ├── use-session-history.ts │ │ │ │ ├── use-sidebar-channels.ts │ │ │ │ └── use-theme.ts │ │ │ ├── i18n/ │ │ │ │ ├── index.ts │ │ │ │ └── locales/ │ │ │ │ ├── en.json │ │ │ │ └── zh.json │ │ │ ├── index.css │ │ │ ├── lib/ │ │ │ │ ├── ansi-log.ts │ │ │ │ └── utils.ts │ │ │ ├── main.tsx │ │ │ ├── routeTree.gen.ts │ │ │ ├── routes/ │ │ │ │ ├── __root.tsx │ │ │ │ ├── agent/ │ │ │ │ │ ├── skills.tsx │ │ │ │ │ └── tools.tsx │ │ │ │ ├── agent.tsx │ │ │ │ ├── channels/ │ │ │ │ │ ├── $name.tsx │ │ │ │ │ └── route.tsx │ │ │ │ ├── config.raw.tsx │ │ │ │ ├── config.tsx │ │ │ │ ├── credentials.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── logs.tsx │ │ │ │ └── models.tsx │ │ │ └── store/ │ │ │ ├── chat.ts │ │ │ ├── gateway.ts │ │ │ └── index.ts │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ ├── tsconfig.node.json │ │ └── vite.config.ts │ └── picoclaw-launcher.desktop └── workspace/ ├── AGENTS.md ├── IDENTITY.md ├── SOUL.md ├── USER.md ├── memory/ │ └── MEMORY.md └── skills/ ├── github/ │ └── SKILL.md ├── hardware/ │ ├── SKILL.md │ └── references/ │ ├── board-pinout.md │ └── common-devices.md ├── skill-creator/ │ └── SKILL.md ├── summarize/ │ └── SKILL.md ├── tmux/ │ ├── SKILL.md │ └── scripts/ │ ├── find-sessions.sh │ └── wait-for-text.sh └── weather/ └── SKILL.md