gitextract_akc1nk5y/ ├── .agents/ │ └── skills/ │ ├── codex-worker/ │ │ └── SKILL.md │ ├── feature-smoke-test/ │ │ ├── SKILL.md │ │ ├── references/ │ │ │ └── prompt-patterns.md │ │ └── scripts/ │ │ └── inspect_session.py │ ├── gen-changelog/ │ │ └── SKILL.md │ ├── gen-docs/ │ │ └── SKILL.md │ ├── gen-rust/ │ │ └── SKILL.md │ ├── pull-request/ │ │ └── SKILL.md │ ├── release/ │ │ └── SKILL.md │ ├── translate-docs/ │ │ └── SKILL.md │ └── worktree-status/ │ └── SKILL.md ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── 1-bug-report.yml │ │ ├── 2-feature-request.yml │ │ └── config.yml │ ├── actions/ │ │ └── macos-code-sign/ │ │ └── action.yml │ ├── dependabot.yml │ ├── pr-title-checker-config.json │ ├── pull_request_template.md │ └── workflows/ │ ├── ci-docs.yml │ ├── ci-kimi-cli.yml │ ├── ci-kimi-sdk.yml │ ├── ci-kosong.yml │ ├── ci-pykaos.yml │ ├── docs-pages.yml │ ├── pr-title-checker.yml │ ├── release-kimi-cli.yml │ ├── release-kimi-sdk.yml │ ├── release-kosong.yml │ ├── release-pykaos.yml │ ├── translator.yml │ └── typos.yml ├── .gitignore ├── .pre-commit-config.yaml ├── .python-version ├── AGENTS.md ├── CHANGELOG.md ├── CONTRIBUTING.md ├── LICENSE ├── Makefile ├── NOTICE ├── README.md ├── SECURITY.md ├── docs/ │ ├── .gitignore │ ├── .pre-commit-config.yaml │ ├── .vitepress/ │ │ ├── config.ts │ │ └── theme/ │ │ ├── index.ts │ │ └── style.css │ ├── AGENTS.md │ ├── en/ │ │ ├── configuration/ │ │ │ ├── config-files.md │ │ │ ├── data-locations.md │ │ │ ├── env-vars.md │ │ │ ├── overrides.md │ │ │ └── providers.md │ │ ├── customization/ │ │ │ ├── agents.md │ │ │ ├── mcp.md │ │ │ ├── print-mode.md │ │ │ ├── skills.md │ │ │ └── wire-mode.md │ │ ├── faq.md │ │ ├── guides/ │ │ │ ├── getting-started.md │ │ │ ├── ides.md │ │ │ ├── integrations.md │ │ │ ├── interaction.md │ │ │ ├── sessions.md │ │ │ └── use-cases.md │ │ ├── index.md │ │ ├── reference/ │ │ │ ├── keyboard.md │ │ │ ├── kimi-acp.md │ │ │ ├── kimi-command.md │ │ │ ├── kimi-info.md │ │ │ ├── kimi-mcp.md │ │ │ ├── kimi-term.md │ │ │ ├── kimi-vis.md │ │ │ ├── kimi-web.md │ │ │ └── slash-commands.md │ │ └── release-notes/ │ │ ├── breaking-changes.md │ │ └── changelog.md │ ├── index.md │ ├── package.json │ ├── scripts/ │ │ └── sync-changelog.mjs │ └── zh/ │ ├── configuration/ │ │ ├── config-files.md │ │ ├── data-locations.md │ │ ├── env-vars.md │ │ ├── overrides.md │ │ └── providers.md │ ├── customization/ │ │ ├── agents.md │ │ ├── mcp.md │ │ ├── print-mode.md │ │ ├── skills.md │ │ └── wire-mode.md │ ├── faq.md │ ├── guides/ │ │ ├── getting-started.md │ │ ├── ides.md │ │ ├── integrations.md │ │ ├── interaction.md │ │ ├── sessions.md │ │ └── use-cases.md │ ├── index.md │ ├── reference/ │ │ ├── keyboard.md │ │ ├── kimi-acp.md │ │ ├── kimi-command.md │ │ ├── kimi-info.md │ │ ├── kimi-mcp.md │ │ ├── kimi-term.md │ │ ├── kimi-vis.md │ │ ├── kimi-web.md │ │ └── slash-commands.md │ └── release-notes/ │ ├── breaking-changes.md │ └── changelog.md ├── examples/ │ ├── .gitignore │ ├── custom-echo-soul/ │ │ ├── README.md │ │ ├── main.py │ │ └── pyproject.toml │ ├── custom-kimi-soul/ │ │ ├── README.md │ │ ├── main.py │ │ └── pyproject.toml │ ├── custom-tools/ │ │ ├── README.md │ │ ├── main.py │ │ ├── my_tools/ │ │ │ ├── __init__.py │ │ │ └── ls.py │ │ ├── myagent.yaml │ │ └── pyproject.toml │ ├── kimi-cli-stream-json/ │ │ ├── README.md │ │ ├── main.py │ │ └── pyproject.toml │ ├── kimi-cli-wire-messages/ │ │ ├── README.md │ │ ├── main.py │ │ └── pyproject.toml │ ├── kimi-psql/ │ │ ├── README.md │ │ ├── agent.yaml │ │ ├── main.py │ │ └── pyproject.toml │ └── sample-plugin/ │ ├── SKILL.md │ ├── plugin.json │ └── scripts/ │ ├── calc.ts │ └── greet.py ├── flake.nix ├── kimi.spec ├── klips/ │ ├── .pre-commit-config.yaml │ ├── klip-0-klip.md │ ├── klip-1-kimi-cli-monorepo.md │ ├── klip-10-agent-flow.md │ ├── klip-11-kimi-code-rename.md │ ├── klip-12-wire-initialize-external-tools.md │ ├── klip-14-kimi-code-oauth-login.md │ ├── klip-15-kagent-sidecar-integration.md │ ├── klip-2-acpkaos.md │ ├── klip-3-kimi-cli-user-docs.md │ ├── klip-6-setup-auto-refresh-models.md │ ├── klip-7-kimi-sdk.md │ ├── klip-8-config-and-skills-layout.md │ └── klip-9-shell-ui-flicker-mitigation.md ├── packages/ │ ├── kaos/ │ │ ├── .pre-commit-config.yaml │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── NOTICE │ │ ├── README.md │ │ ├── pyproject.toml │ │ ├── src/ │ │ │ └── kaos/ │ │ │ ├── __init__.py │ │ │ ├── _current.py │ │ │ ├── local.py │ │ │ ├── path.py │ │ │ ├── py.typed │ │ │ └── ssh.py │ │ └── tests/ │ │ ├── test_kaos_path.py │ │ ├── test_local_kaos.py │ │ ├── test_local_kaos_cmd.py │ │ ├── test_local_kaos_sh.py │ │ └── test_ssh_kaos.py │ ├── kimi-code/ │ │ ├── pyproject.toml │ │ └── src/ │ │ └── kimi_code/ │ │ └── __init__.py │ └── kosong/ │ ├── .pre-commit-config.yaml │ ├── CHANGELOG.md │ ├── LICENSE │ ├── NOTICE │ ├── README.md │ ├── pyproject.toml │ ├── src/ │ │ └── kosong/ │ │ ├── __init__.py │ │ ├── __main__.py │ │ ├── _generate.py │ │ ├── chat_provider/ │ │ │ ├── __init__.py │ │ │ ├── chaos.py │ │ │ ├── echo/ │ │ │ │ ├── __init__.py │ │ │ │ ├── dsl.py │ │ │ │ ├── echo.py │ │ │ │ └── scripted_echo.py │ │ │ ├── kimi.py │ │ │ ├── mock.py │ │ │ └── openai_common.py │ │ ├── contrib/ │ │ │ ├── __init__.py │ │ │ ├── chat_provider/ │ │ │ │ ├── __init__.py │ │ │ │ ├── anthropic.py │ │ │ │ ├── common.py │ │ │ │ ├── google_genai.py │ │ │ │ ├── openai_legacy.py │ │ │ │ └── openai_responses.py │ │ │ └── context/ │ │ │ ├── __init__.py │ │ │ └── linear.py │ │ ├── message.py │ │ ├── py.typed │ │ ├── tooling/ │ │ │ ├── __init__.py │ │ │ ├── empty.py │ │ │ ├── error.py │ │ │ ├── mcp.py │ │ │ └── simple.py │ │ └── utils/ │ │ ├── __init__.py │ │ ├── aio.py │ │ ├── jsonschema.py │ │ └── typing.py │ └── tests/ │ ├── api_snapshot_tests/ │ │ ├── common.py │ │ ├── test_anthropic.py │ │ ├── test_google_genai.py │ │ ├── test_kimi.py │ │ ├── test_openai_legacy.py │ │ └── test_openai_responses.py │ ├── test_chat_provider.py │ ├── test_context.py │ ├── test_echo_chat_provider.py │ ├── test_generate.py │ ├── test_json_schema_deref.py │ ├── test_kimi_stream_usage.py │ ├── test_message.py │ ├── test_openai_common.py │ ├── test_scripted_echo_chat_provider.py │ ├── test_step.py │ ├── test_tool_call.py │ └── test_tool_result.py ├── pyproject.toml ├── pytest.ini ├── scripts/ │ ├── build_vis.py │ ├── build_web.py │ ├── check_kimi_dependency_versions.py │ ├── check_version_tag.py │ ├── cleanup_tmp_sessions.py │ ├── install.ps1 │ └── install.sh ├── sdks/ │ └── kimi-sdk/ │ ├── CHANGELOG.md │ ├── LICENSE │ ├── NOTICE │ ├── README.md │ ├── pyproject.toml │ ├── src/ │ │ └── kimi_sdk/ │ │ ├── __init__.py │ │ └── py.typed │ └── tests/ │ └── test_smoke.py ├── src/ │ └── kimi_cli/ │ ├── __init__.py │ ├── __main__.py │ ├── acp/ │ │ ├── AGENTS.md │ │ ├── __init__.py │ │ ├── convert.py │ │ ├── kaos.py │ │ ├── mcp.py │ │ ├── server.py │ │ ├── session.py │ │ ├── tools.py │ │ ├── types.py │ │ └── version.py │ ├── agents/ │ │ ├── default/ │ │ │ ├── agent.yaml │ │ │ ├── sub.yaml │ │ │ └── system.md │ │ └── okabe/ │ │ └── agent.yaml │ ├── agentspec.py │ ├── app.py │ ├── auth/ │ │ ├── __init__.py │ │ ├── oauth.py │ │ └── platforms.py │ ├── background/ │ │ ├── __init__.py │ │ ├── ids.py │ │ ├── manager.py │ │ ├── models.py │ │ ├── store.py │ │ ├── summary.py │ │ └── worker.py │ ├── cli/ │ │ ├── __init__.py │ │ ├── __main__.py │ │ ├── _lazy_group.py │ │ ├── export.py │ │ ├── info.py │ │ ├── mcp.py │ │ ├── plugin.py │ │ ├── toad.py │ │ ├── vis.py │ │ └── web.py │ ├── config.py │ ├── constant.py │ ├── deps/ │ │ └── Makefile │ ├── exception.py │ ├── llm.py │ ├── metadata.py │ ├── notifications/ │ │ ├── __init__.py │ │ ├── llm.py │ │ ├── manager.py │ │ ├── models.py │ │ ├── notifier.py │ │ ├── store.py │ │ └── wire.py │ ├── plugin/ │ │ ├── __init__.py │ │ ├── manager.py │ │ └── tool.py │ ├── prompts/ │ │ ├── __init__.py │ │ ├── compact.md │ │ └── init.md │ ├── py.typed │ ├── session.py │ ├── session_state.py │ ├── share.py │ ├── skill/ │ │ ├── __init__.py │ │ └── flow/ │ │ ├── __init__.py │ │ ├── d2.py │ │ └── mermaid.py │ ├── skills/ │ │ ├── kimi-cli-help/ │ │ │ └── SKILL.md │ │ └── skill-creator/ │ │ └── SKILL.md │ ├── soul/ │ │ ├── __init__.py │ │ ├── agent.py │ │ ├── approval.py │ │ ├── compaction.py │ │ ├── context.py │ │ ├── denwarenji.py │ │ ├── dynamic_injection.py │ │ ├── dynamic_injections/ │ │ │ ├── __init__.py │ │ │ └── plan_mode.py │ │ ├── kimisoul.py │ │ ├── message.py │ │ ├── slash.py │ │ └── toolset.py │ ├── tools/ │ │ ├── AGENTS.md │ │ ├── __init__.py │ │ ├── ask_user/ │ │ │ ├── __init__.py │ │ │ └── description.md │ │ ├── background/ │ │ │ ├── __init__.py │ │ │ ├── list.md │ │ │ ├── output.md │ │ │ └── stop.md │ │ ├── display.py │ │ ├── dmail/ │ │ │ ├── __init__.py │ │ │ └── dmail.md │ │ ├── file/ │ │ │ ├── __init__.py │ │ │ ├── glob.md │ │ │ ├── glob.py │ │ │ ├── grep.md │ │ │ ├── grep_local.py │ │ │ ├── plan_mode.py │ │ │ ├── read.md │ │ │ ├── read.py │ │ │ ├── read_media.md │ │ │ ├── read_media.py │ │ │ ├── replace.md │ │ │ ├── replace.py │ │ │ ├── utils.py │ │ │ ├── write.md │ │ │ └── write.py │ │ ├── multiagent/ │ │ │ ├── __init__.py │ │ │ ├── create.md │ │ │ ├── create.py │ │ │ ├── task.md │ │ │ └── task.py │ │ ├── plan/ │ │ │ ├── __init__.py │ │ │ ├── description.md │ │ │ ├── enter.py │ │ │ ├── enter_description.md │ │ │ └── heroes.py │ │ ├── shell/ │ │ │ ├── __init__.py │ │ │ ├── bash.md │ │ │ └── powershell.md │ │ ├── test.py │ │ ├── think/ │ │ │ ├── __init__.py │ │ │ └── think.md │ │ ├── todo/ │ │ │ ├── __init__.py │ │ │ └── set_todo_list.md │ │ ├── utils.py │ │ └── web/ │ │ ├── __init__.py │ │ ├── fetch.md │ │ ├── fetch.py │ │ ├── search.md │ │ └── search.py │ ├── ui/ │ │ ├── __init__.py │ │ ├── acp/ │ │ │ └── __init__.py │ │ ├── print/ │ │ │ ├── __init__.py │ │ │ └── visualize.py │ │ └── shell/ │ │ ├── __init__.py │ │ ├── console.py │ │ ├── debug.py │ │ ├── echo.py │ │ ├── export_import.py │ │ ├── keyboard.py │ │ ├── mcp_status.py │ │ ├── oauth.py │ │ ├── placeholders.py │ │ ├── prompt.py │ │ ├── replay.py │ │ ├── setup.py │ │ ├── slash.py │ │ ├── startup.py │ │ ├── task_browser.py │ │ ├── update.py │ │ ├── usage.py │ │ └── visualize.py │ ├── utils/ │ │ ├── __init__.py │ │ ├── aiohttp.py │ │ ├── aioqueue.py │ │ ├── broadcast.py │ │ ├── changelog.py │ │ ├── clipboard.py │ │ ├── datetime.py │ │ ├── diff.py │ │ ├── editor.py │ │ ├── environment.py │ │ ├── envvar.py │ │ ├── export.py │ │ ├── frontmatter.py │ │ ├── io.py │ │ ├── logging.py │ │ ├── media_tags.py │ │ ├── message.py │ │ ├── path.py │ │ ├── proctitle.py │ │ ├── pyinstaller.py │ │ ├── rich/ │ │ │ ├── __init__.py │ │ │ ├── columns.py │ │ │ ├── markdown.py │ │ │ ├── markdown_sample.md │ │ │ ├── markdown_sample_short.md │ │ │ └── syntax.py │ │ ├── signals.py │ │ ├── slashcmd.py │ │ ├── string.py │ │ ├── subprocess_env.py │ │ ├── term.py │ │ └── typing.py │ ├── vis/ │ │ ├── __init__.py │ │ ├── api/ │ │ │ ├── __init__.py │ │ │ ├── sessions.py │ │ │ ├── statistics.py │ │ │ └── system.py │ │ └── app.py │ ├── web/ │ │ ├── __init__.py │ │ ├── api/ │ │ │ ├── __init__.py │ │ │ ├── config.py │ │ │ ├── open_in.py │ │ │ └── sessions.py │ │ ├── app.py │ │ ├── auth.py │ │ ├── models.py │ │ ├── runner/ │ │ │ ├── __init__.py │ │ │ ├── messages.py │ │ │ ├── process.py │ │ │ └── worker.py │ │ └── store/ │ │ ├── __init__.py │ │ └── sessions.py │ └── wire/ │ ├── __init__.py │ ├── file.py │ ├── jsonrpc.py │ ├── protocol.py │ ├── serde.py │ ├── server.py │ └── types.py ├── tests/ │ ├── __init__.py │ ├── acp/ │ │ ├── __init__.py │ │ ├── conftest.py │ │ ├── test_protocol_v1.py │ │ ├── test_session_notifications.py │ │ └── test_version.py │ ├── auth/ │ │ └── test_ascii_header.py │ ├── background/ │ │ ├── test_manager.py │ │ ├── test_store.py │ │ └── test_worker.py │ ├── conftest.py │ ├── core/ │ │ ├── test_agent_flow.py │ │ ├── test_agent_spec.py │ │ ├── test_ask_user_plan_mode.py │ │ ├── test_config.py │ │ ├── test_context.py │ │ ├── test_create_llm.py │ │ ├── test_default_agent.py │ │ ├── test_exceptions.py │ │ ├── test_inspect_plan_edit_target.py │ │ ├── test_kimisoul_ralph_loop.py │ │ ├── test_kimisoul_retry_recovery.py │ │ ├── test_kimisoul_slash_commands.py │ │ ├── test_kimisoul_steer.py │ │ ├── test_load_agent.py │ │ ├── test_load_agents_md.py │ │ ├── test_normalize_history.py │ │ ├── test_notifications.py │ │ ├── test_plan_mode.py │ │ ├── test_plan_mode_injection_provider.py │ │ ├── test_plan_mode_reminder.py │ │ ├── test_plan_slash.py │ │ ├── test_plugin.py │ │ ├── test_plugin_manager.py │ │ ├── test_plugin_tool.py │ │ ├── test_session.py │ │ ├── test_session_state.py │ │ ├── test_shell_mcp_status.py │ │ ├── test_simple_compaction.py │ │ ├── test_skill.py │ │ ├── test_soul_import_command.py │ │ ├── test_soul_message.py │ │ ├── test_startup_imports.py │ │ ├── test_startup_progress.py │ │ ├── test_status_formatting.py │ │ ├── test_str_replace_file_plan_mode.py │ │ ├── test_toolset.py │ │ ├── test_wire_message.py │ │ ├── test_wire_plan_mode.py │ │ ├── test_wire_server_steer.py │ │ └── test_write_file_plan_mode.py │ ├── e2e/ │ │ ├── __init__.py │ │ ├── shell_pty_helpers.py │ │ ├── test_basic_e2e.py │ │ ├── test_cli_error_output.py │ │ ├── test_media_e2e.py │ │ └── test_shell_pty_e2e.py │ ├── notifications/ │ │ └── test_notification_manager.py │ ├── test_additional_dirs_state.py │ ├── test_attachment_cache.py │ ├── test_clipboard.py │ ├── tools/ │ │ ├── test_additional_dirs.py │ │ ├── test_ask_user.py │ │ ├── test_background_tools.py │ │ ├── test_create_subagent.py │ │ ├── test_extract_key_argument.py │ │ ├── test_fetch_url.py │ │ ├── test_glob.py │ │ ├── test_grep.py │ │ ├── test_read_file.py │ │ ├── test_read_media_file.py │ │ ├── test_read_media_file_desc.py │ │ ├── test_shell_bash.py │ │ ├── test_shell_powershell.py │ │ ├── test_str_replace_file.py │ │ ├── test_tool_descriptions.py │ │ ├── test_tool_schemas.py │ │ └── test_write_file.py │ ├── ui_and_conv/ │ │ ├── test_acp_convert.py │ │ ├── test_acp_server_auth.py │ │ ├── test_export_import.py │ │ ├── test_file_completer.py │ │ ├── test_live_view_notifications.py │ │ ├── test_print_final_only.py │ │ ├── test_print_notifications.py │ │ ├── test_prompt_clipboard.py │ │ ├── test_prompt_external_editor.py │ │ ├── test_prompt_history.py │ │ ├── test_prompt_placeholders.py │ │ ├── test_prompt_tips.py │ │ ├── test_question_panel.py │ │ ├── test_replay.py │ │ ├── test_sanitize_surrogates.py │ │ ├── test_shell_editor_slash.py │ │ ├── test_shell_export_import_commands.py │ │ ├── test_shell_prompt_echo.py │ │ ├── test_shell_prompt_router.py │ │ ├── test_shell_run_placeholders.py │ │ ├── test_shell_slash_commands.py │ │ ├── test_shell_task_slash.py │ │ ├── test_slash_completer.py │ │ ├── test_status_block.py │ │ ├── test_task_browser.py │ │ ├── test_tool_call_block.py │ │ └── test_visualize_running_prompt.py │ ├── utils/ │ │ ├── test_atomic_json_write.py │ │ ├── test_broadcast_queue.py │ │ ├── test_changelog.py │ │ ├── test_diff_utils.py │ │ ├── test_editor.py │ │ ├── test_file_utils.py │ │ ├── test_frontmatter.py │ │ ├── test_is_within_workspace.py │ │ ├── test_list_directory.py │ │ ├── test_message_utils.py │ │ ├── test_pyinstaller_utils.py │ │ ├── test_result_builder.py │ │ ├── test_rich_markdown.py │ │ ├── test_slash_command.py │ │ ├── test_typing_utils.py │ │ ├── test_utils_environment.py │ │ └── test_utils_path.py │ ├── vis/ │ │ └── test_app.py │ └── web/ │ └── test_open_in.py ├── tests_ai/ │ ├── scripts/ │ │ ├── main.yaml │ │ ├── run.py │ │ └── worker.yaml │ ├── test_cli_loading_time.md │ ├── test_encoding_error_handling.md │ └── test_utf8_encoding.md ├── tests_e2e/ │ ├── AGENTS.md │ ├── __init__.py │ ├── test_mcp_cli.py │ ├── test_wire_approvals_tools.py │ ├── test_wire_config.py │ ├── test_wire_errors.py │ ├── test_wire_prompt.py │ ├── test_wire_protocol.py │ ├── test_wire_question.py │ ├── test_wire_real_llm.py │ ├── test_wire_sessions.py │ ├── test_wire_skills_mcp.py │ ├── test_wire_steer.py │ └── wire_helpers.py ├── vis/ │ ├── components.json │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.tsx │ │ ├── components/ │ │ │ ├── markdown.tsx │ │ │ └── ui/ │ │ │ ├── alert-dialog.tsx │ │ │ ├── select.tsx │ │ │ └── tooltip.tsx │ │ ├── features/ │ │ │ ├── context-viewer/ │ │ │ │ ├── assistant-message.tsx │ │ │ │ ├── context-space-map.tsx │ │ │ │ ├── context-viewer.tsx │ │ │ │ ├── tool-call-block.tsx │ │ │ │ └── user-message.tsx │ │ │ ├── dual-view/ │ │ │ │ └── dual-view.tsx │ │ │ ├── session-picker/ │ │ │ │ └── session-picker.tsx │ │ │ ├── sessions-explorer/ │ │ │ │ ├── explorer-toolbar.tsx │ │ │ │ ├── project-group.tsx │ │ │ │ ├── session-card.tsx │ │ │ │ └── sessions-explorer.tsx │ │ │ ├── state-viewer/ │ │ │ │ └── state-viewer.tsx │ │ │ ├── statistics/ │ │ │ │ └── statistics-view.tsx │ │ │ └── wire-viewer/ │ │ │ ├── decision-path.tsx │ │ │ ├── integrity-check.tsx │ │ │ ├── timeline-view.tsx │ │ │ ├── tool-call-detail.tsx │ │ │ ├── tool-stats-dashboard.tsx │ │ │ ├── turn-efficiency.tsx │ │ │ ├── turn-tree.tsx │ │ │ ├── usage-chart.tsx │ │ │ ├── wire-event-card.tsx │ │ │ ├── wire-filters.tsx │ │ │ └── wire-viewer.tsx │ │ ├── hooks/ │ │ │ └── use-theme.ts │ │ ├── index.css │ │ ├── lib/ │ │ │ ├── api.ts │ │ │ ├── cache.ts │ │ │ └── utils.ts │ │ └── main.tsx │ ├── tsconfig.app.json │ ├── tsconfig.json │ ├── tsconfig.node.json │ └── vite.config.ts └── web/ ├── .gitignore ├── biome.jsonc ├── components.json ├── index.html ├── openapi.json ├── openapitools.json ├── package.json ├── scripts/ │ └── generate-api.sh ├── src/ │ ├── App.tsx │ ├── bootstrap.tsx │ ├── components/ │ │ ├── ai-elements/ │ │ │ ├── chain-of-thought.tsx │ │ │ ├── code-block.tsx │ │ │ ├── confirmation.tsx │ │ │ ├── context.tsx │ │ │ ├── conversation.tsx │ │ │ ├── index.ts │ │ │ ├── loader.tsx │ │ │ ├── message.tsx │ │ │ ├── model-selector.tsx │ │ │ ├── prompt-input.tsx │ │ │ ├── reasoning.tsx │ │ │ ├── shimmer.tsx │ │ │ ├── streamdown.tsx │ │ │ ├── subagent-steps.tsx │ │ │ └── tool.tsx │ │ ├── error-boundary.tsx │ │ ├── kimi-cli-brand.tsx │ │ └── ui/ │ │ ├── alert-dialog.tsx │ │ ├── alert.tsx │ │ ├── badge.tsx │ │ ├── button-group.tsx │ │ ├── button.tsx │ │ ├── card.tsx │ │ ├── carousel.tsx │ │ ├── checkbox.tsx │ │ ├── collapsible.tsx │ │ ├── command.tsx │ │ ├── context-menu.tsx │ │ ├── dialog.tsx │ │ ├── diff/ │ │ │ ├── index.tsx │ │ │ ├── lazy.tsx │ │ │ ├── theme.css │ │ │ └── utils/ │ │ │ ├── guess-lang.ts │ │ │ ├── index.ts │ │ │ └── parse.ts │ │ ├── dropdown-menu.tsx │ │ ├── hover-card.tsx │ │ ├── input-group.tsx │ │ ├── input.tsx │ │ ├── kbd.tsx │ │ ├── progress.tsx │ │ ├── resizable.tsx │ │ ├── scroll-area.tsx │ │ ├── select.tsx │ │ ├── separator.tsx │ │ ├── sonner.tsx │ │ ├── switch.tsx │ │ ├── textarea.tsx │ │ ├── theme-toggle.tsx │ │ ├── toggle-group.tsx │ │ ├── toggle.tsx │ │ └── tooltip.tsx │ ├── config/ │ │ └── media.ts │ ├── features/ │ │ ├── chat/ │ │ │ ├── chat-workspace-container.tsx │ │ │ ├── chat.tsx │ │ │ ├── components/ │ │ │ │ ├── activity-status-indicator.tsx │ │ │ │ ├── approval-dialog.tsx │ │ │ │ ├── assistant-message.tsx │ │ │ │ ├── attachment-button.tsx │ │ │ │ ├── chat-conversation.tsx │ │ │ │ ├── chat-prompt-composer.tsx │ │ │ │ ├── chat-workspace-header.tsx │ │ │ │ ├── open-in-menu.tsx │ │ │ │ ├── prompt-toolbar/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── open-in-button.tsx │ │ │ │ │ ├── toolbar-changes.tsx │ │ │ │ │ ├── toolbar-context.tsx │ │ │ │ │ ├── toolbar-queue.tsx │ │ │ │ │ └── toolbar-todo.tsx │ │ │ │ ├── question-dialog.tsx │ │ │ │ ├── session-info-popover.tsx │ │ │ │ └── virtualized-message-list.tsx │ │ │ ├── file-mention-menu.tsx │ │ │ ├── global-config-controls.tsx │ │ │ ├── message-search-dialog.tsx │ │ │ ├── message-search-utils.ts │ │ │ ├── queue-store.ts │ │ │ ├── slash-command-menu.tsx │ │ │ ├── useFileMentions.ts │ │ │ └── useSlashCommands.ts │ │ ├── sessions/ │ │ │ ├── create-session-dialog.tsx │ │ │ └── sessions.tsx │ │ └── tool/ │ │ ├── components/ │ │ │ └── display-content.tsx │ │ └── store.ts │ ├── hooks/ │ │ ├── types.ts │ │ ├── use-theme.ts │ │ ├── useGitDiffStats.ts │ │ ├── useGlobalConfig.ts │ │ ├── useSessionStream.ts │ │ ├── useSessions.ts │ │ ├── useVideoThumbnail.ts │ │ ├── utils.ts │ │ └── wireTypes.ts │ ├── index.css │ ├── lib/ │ │ ├── api/ │ │ │ ├── .openapi-generator/ │ │ │ │ ├── FILES │ │ │ │ └── VERSION │ │ │ ├── .openapi-generator-ignore │ │ │ ├── apis/ │ │ │ │ ├── ConfigApi.ts │ │ │ │ ├── DefaultApi.ts │ │ │ │ ├── OpenInApi.ts │ │ │ │ ├── SessionsApi.ts │ │ │ │ ├── WorkDirsApi.ts │ │ │ │ └── index.ts │ │ │ ├── docs/ │ │ │ │ ├── ConfigApi.md │ │ │ │ ├── ConfigModel.md │ │ │ │ ├── ConfigToml.md │ │ │ │ ├── CreateSessionRequest.md │ │ │ │ ├── DefaultApi.md │ │ │ │ ├── GenerateTitleRequest.md │ │ │ │ ├── GenerateTitleResponse.md │ │ │ │ ├── GitDiffStats.md │ │ │ │ ├── GitFileDiff.md │ │ │ │ ├── GlobalConfig.md │ │ │ │ ├── HTTPValidationError.md │ │ │ │ ├── ModelCapability.md │ │ │ │ ├── OpenInApi.md │ │ │ │ ├── OpenInRequest.md │ │ │ │ ├── OpenInResponse.md │ │ │ │ ├── ProviderType.md │ │ │ │ ├── Session.md │ │ │ │ ├── SessionStatus.md │ │ │ │ ├── SessionsApi.md │ │ │ │ ├── UpdateConfigTomlRequest.md │ │ │ │ ├── UpdateConfigTomlResponse.md │ │ │ │ ├── UpdateGlobalConfigRequest.md │ │ │ │ ├── UpdateGlobalConfigResponse.md │ │ │ │ ├── UpdateSessionRequest.md │ │ │ │ ├── UploadSessionFileResponse.md │ │ │ │ ├── ValidationError.md │ │ │ │ ├── ValidationErrorLocInner.md │ │ │ │ └── WorkDirsApi.md │ │ │ ├── index.ts │ │ │ ├── models/ │ │ │ │ ├── ConfigModel.ts │ │ │ │ ├── ConfigToml.ts │ │ │ │ ├── CreateSessionRequest.ts │ │ │ │ ├── GenerateTitleRequest.ts │ │ │ │ ├── GenerateTitleResponse.ts │ │ │ │ ├── GitDiffStats.ts │ │ │ │ ├── GitFileDiff.ts │ │ │ │ ├── GlobalConfig.ts │ │ │ │ ├── HTTPValidationError.ts │ │ │ │ ├── ModelCapability.ts │ │ │ │ ├── OpenInRequest.ts │ │ │ │ ├── OpenInResponse.ts │ │ │ │ ├── ProviderType.ts │ │ │ │ ├── Session.ts │ │ │ │ ├── SessionStatus.ts │ │ │ │ ├── UpdateConfigTomlRequest.ts │ │ │ │ ├── UpdateConfigTomlResponse.ts │ │ │ │ ├── UpdateGlobalConfigRequest.ts │ │ │ │ ├── UpdateGlobalConfigResponse.ts │ │ │ │ ├── UpdateSessionRequest.ts │ │ │ │ ├── UploadSessionFileResponse.ts │ │ │ │ ├── ValidationError.ts │ │ │ │ ├── ValidationErrorLocInner.ts │ │ │ │ └── index.ts │ │ │ └── runtime.ts │ │ ├── apiClient.ts │ │ ├── auth.ts │ │ ├── utils.ts │ │ └── version.ts │ ├── main.tsx │ └── react-scan.d.ts ├── tsconfig.app.json ├── tsconfig.json ├── tsconfig.node.json └── vite.config.ts