gitextract_q359drls/ ├── .allstar/ │ └── branch_protection.yaml ├── .aoneci/ │ └── workflows/ │ └── ci.yml ├── .dockerignore ├── .editorconfig ├── .gcp/ │ ├── Dockerfile.gemini-code-builder │ └── release-docker.yml ├── .gitattributes ├── .github/ │ ├── CODEOWNERS │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ └── feature_request.yml │ ├── actions/ │ │ └── post-coverage-comment/ │ │ └── action.yml │ ├── dependabot.yml │ ├── pull_request_template.md │ ├── scripts/ │ │ └── pr-triage.sh │ └── workflows/ │ ├── build-and-publish-image.yml │ ├── check-issue-completeness.yml │ ├── ci.yml │ ├── community-report.yml │ ├── docs-page-action.yml │ ├── e2e.yml │ ├── eval.yml │ ├── gemini-automated-issue-dedup.yml │ ├── gemini-scheduled-issue-dedup.yml │ ├── gemini-scheduled-pr-triage.yml │ ├── gemini-self-assign-issue.yml │ ├── no-response.yml │ ├── qwen-automated-issue-triage.yml │ ├── qwen-code-pr-review.yml │ ├── qwen-scheduled-issue-triage.yml │ ├── release-sdk.yml │ ├── release-vscode-companion.yml │ ├── release.yml │ ├── stale.yml │ └── terminal-bench.yml ├── .gitignore ├── .husky/ │ └── pre-commit ├── .npmrc ├── .nvmrc ├── .prettierignore ├── .prettierrc.json ├── .vscode/ │ ├── extensions.json │ ├── launch.json │ ├── settings.json │ └── tasks.json ├── .yamllint.yml ├── AGENTS.md ├── CHANGELOG.md ├── CONTRIBUTING.md ├── Dockerfile ├── LICENSE ├── Makefile ├── README.md ├── SECURITY.md ├── docs/ │ ├── _meta.ts │ ├── developers/ │ │ ├── _meta.ts │ │ ├── architecture.md │ │ ├── contributing.md │ │ ├── development/ │ │ │ ├── _meta.ts │ │ │ ├── deployment.md │ │ │ ├── integration-tests.md │ │ │ ├── issue-and-pr-automation.md │ │ │ ├── npm.md │ │ │ └── telemetry.md │ │ ├── examples/ │ │ │ └── proxy-script.md │ │ ├── roadmap.md │ │ ├── sdk-java.md │ │ ├── sdk-typescript.md │ │ └── tools/ │ │ ├── _meta.ts │ │ ├── exit-plan-mode.md │ │ ├── file-system.md │ │ ├── introduction.md │ │ ├── mcp-server.md │ │ ├── memory.md │ │ ├── multi-file.md │ │ ├── sandbox.md │ │ ├── shell.md │ │ ├── task.md │ │ ├── todo-write.md │ │ ├── web-fetch.md │ │ └── web-search.md │ ├── index.md │ └── users/ │ ├── _meta.ts │ ├── common-workflow.md │ ├── configuration/ │ │ ├── _meta.ts │ │ ├── auth.md │ │ ├── memory.md │ │ ├── model-providers.md │ │ ├── qwen-ignore.md │ │ ├── settings.md │ │ ├── themes.md │ │ └── trusted-folders.md │ ├── extension/ │ │ ├── _meta.ts │ │ ├── extension-releasing.md │ │ ├── getting-started-extensions.md │ │ └── introduction.md │ ├── features/ │ │ ├── _meta.ts │ │ ├── approval-mode.md │ │ ├── arena.md │ │ ├── checkpointing.md │ │ ├── commands.md │ │ ├── headless.md │ │ ├── language.md │ │ ├── lsp.md │ │ ├── mcp.md │ │ ├── sandbox.md │ │ ├── skills.md │ │ ├── sub-agents.md │ │ └── token-caching.md │ ├── ide-integration/ │ │ ├── _meta.ts │ │ ├── ide-companion-spec.md │ │ └── ide-integration.md │ ├── integration-github-action.md │ ├── integration-jetbrains.md │ ├── integration-vscode.md │ ├── integration-zed.md │ ├── overview.md │ ├── quickstart.md │ ├── reference/ │ │ ├── _meta.ts │ │ └── keyboard-shortcuts.md │ └── support/ │ ├── Uninstall.md │ ├── _meta.ts │ ├── tos-privacy.md │ └── troubleshooting.md ├── docs-site/ │ ├── README.md │ ├── mdx-components.js │ ├── next-env.d.ts │ ├── next.config.mjs │ ├── package.json │ └── src/ │ └── app/ │ ├── [[...mdxPath]]/ │ │ └── page.jsx │ └── layout.jsx ├── esbuild.config.js ├── eslint-rules/ │ └── no-relative-cross-package-imports.js ├── eslint.config.js ├── hello/ │ ├── QWEN.md │ └── qwen-extension.json ├── integration-tests/ │ ├── acp-integration.test.ts │ ├── concurrent-runner/ │ │ ├── README.md │ │ ├── config.example.json │ │ ├── examples/ │ │ │ ├── toy-config.json │ │ │ └── toy-project/ │ │ │ └── package.json │ │ ├── export-html-from-chatrecord-jsonl.js │ │ ├── render-chat-temp.html │ │ ├── requirements.txt │ │ └── runner.py │ ├── context-compress-interactive.test.ts │ ├── ctrl-c-exit.test.ts │ ├── edit.test.ts │ ├── extensions-install.test.ts │ ├── file-system-interactive.test.ts │ ├── file-system.test.ts │ ├── fixtures/ │ │ └── settings-migration/ │ │ └── workspaces.json │ ├── globalSetup.ts │ ├── hook-integration/ │ │ └── hooks.test.ts │ ├── json-output.test.ts │ ├── list_directory.test.ts │ ├── mcp_server_cyclic_schema.test.ts │ ├── mixed-input-crash.test.ts │ ├── read_many_files.test.ts │ ├── run_shell_command.test.ts │ ├── save_memory.test.ts │ ├── sdk-typescript/ │ │ ├── abort-and-lifecycle.test.ts │ │ ├── configuration-options.test.ts │ │ ├── mcp-server.test.ts │ │ ├── message-event-pairing.test.ts │ │ ├── multi-turn.test.ts │ │ ├── permission-control.test.ts │ │ ├── sdk-mcp-server.test.ts │ │ ├── session-id.test.ts │ │ ├── single-turn.test.ts │ │ ├── subagents.test.ts │ │ ├── system-control.test.ts │ │ ├── test-helper.ts │ │ └── tool-control.test.ts │ ├── settings-migration.test.ts │ ├── simple-mcp-server.test.ts │ ├── stdin-context.test.ts │ ├── telemetry.test.ts │ ├── terminal-bench/ │ │ ├── ci-tasks/ │ │ │ ├── .gitignore │ │ │ ├── hello-world/ │ │ │ │ ├── Dockerfile │ │ │ │ ├── docker-compose.yaml │ │ │ │ ├── run-tests.sh │ │ │ │ ├── solution.sh │ │ │ │ ├── task.yaml │ │ │ │ └── tests/ │ │ │ │ ├── run-uv-pytest.sh │ │ │ │ ├── setup-uv-pytest.sh │ │ │ │ └── test_outputs.py │ │ │ └── swe-bench-astropy-1/ │ │ │ ├── Dockerfile │ │ │ ├── docker-compose.yaml │ │ │ ├── run-tests.sh │ │ │ ├── solution.sh │ │ │ └── task.yaml │ │ ├── qwen-code-setup.sh.j2 │ │ ├── qwen_code.py │ │ └── terminal-bench.test.ts │ ├── terminal-capture/ │ │ ├── motivation.md │ │ ├── package.json │ │ ├── run.ts │ │ ├── scenario-runner.ts │ │ ├── scenarios/ │ │ │ ├── about.ts │ │ │ ├── all.ts │ │ │ ├── message-components.ts │ │ │ ├── pr-2371-review.ts │ │ │ ├── progress.sh │ │ │ ├── qc-code-review.ts │ │ │ ├── streaming-insight.ts │ │ │ └── streaming-shell.ts │ │ └── terminal-capture.ts │ ├── test-helper.ts │ ├── test-mcp-server.ts │ ├── todo_write.test.ts │ ├── tsconfig.json │ ├── utf-bom-encoding.test.ts │ ├── vitest.config.ts │ ├── vitest.terminal-bench.config.ts │ ├── web_search.test.ts │ └── write_file.test.ts ├── package.json ├── packages/ │ ├── cli/ │ │ ├── index.ts │ │ ├── package.json │ │ ├── src/ │ │ │ ├── acp-integration/ │ │ │ │ ├── acpAgent.ts │ │ │ │ ├── authMethods.ts │ │ │ │ ├── errorCodes.ts │ │ │ │ ├── runtimeOutputDirContext.test.ts │ │ │ │ ├── runtimeOutputDirContext.ts │ │ │ │ ├── service/ │ │ │ │ │ ├── filesystem.test.ts │ │ │ │ │ └── filesystem.ts │ │ │ │ └── session/ │ │ │ │ ├── HistoryReplayer.test.ts │ │ │ │ ├── HistoryReplayer.ts │ │ │ │ ├── Session.test.ts │ │ │ │ ├── Session.ts │ │ │ │ ├── SubAgentTracker.test.ts │ │ │ │ ├── SubAgentTracker.ts │ │ │ │ ├── emitters/ │ │ │ │ │ ├── BaseEmitter.ts │ │ │ │ │ ├── MessageEmitter.test.ts │ │ │ │ │ ├── MessageEmitter.ts │ │ │ │ │ ├── PlanEmitter.test.ts │ │ │ │ │ ├── PlanEmitter.ts │ │ │ │ │ ├── ToolCallEmitter.test.ts │ │ │ │ │ ├── ToolCallEmitter.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ ├── commands/ │ │ │ │ ├── auth/ │ │ │ │ │ ├── handler.ts │ │ │ │ │ ├── interactiveSelector.test.ts │ │ │ │ │ ├── interactiveSelector.ts │ │ │ │ │ └── status.test.ts │ │ │ │ ├── auth.ts │ │ │ │ ├── extensions/ │ │ │ │ │ ├── consent.test.ts │ │ │ │ │ ├── consent.ts │ │ │ │ │ ├── disable.test.ts │ │ │ │ │ ├── disable.ts │ │ │ │ │ ├── enable.test.ts │ │ │ │ │ ├── enable.ts │ │ │ │ │ ├── examples/ │ │ │ │ │ │ ├── agent/ │ │ │ │ │ │ │ ├── agents/ │ │ │ │ │ │ │ │ └── diary.md │ │ │ │ │ │ │ └── qwen-extension.json │ │ │ │ │ │ ├── commands/ │ │ │ │ │ │ │ ├── commands/ │ │ │ │ │ │ │ │ └── fs/ │ │ │ │ │ │ │ │ └── grep-code.md │ │ │ │ │ │ │ └── qwen-extension.json │ │ │ │ │ │ ├── context/ │ │ │ │ │ │ │ ├── QWEN.md │ │ │ │ │ │ │ └── qwen-extension.json │ │ │ │ │ │ ├── mcp-server/ │ │ │ │ │ │ │ ├── example.ts │ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ │ ├── qwen-extension.json │ │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ │ └── skills/ │ │ │ │ │ │ ├── qwen-extension.json │ │ │ │ │ │ └── skills/ │ │ │ │ │ │ └── synonyms/ │ │ │ │ │ │ └── SKILL.md │ │ │ │ │ ├── install.test.ts │ │ │ │ │ ├── install.ts │ │ │ │ │ ├── link.test.ts │ │ │ │ │ ├── link.ts │ │ │ │ │ ├── list.test.ts │ │ │ │ │ ├── list.ts │ │ │ │ │ ├── new.test.ts │ │ │ │ │ ├── new.ts │ │ │ │ │ ├── settings.test.ts │ │ │ │ │ ├── settings.ts │ │ │ │ │ ├── uninstall.test.ts │ │ │ │ │ ├── uninstall.ts │ │ │ │ │ ├── update.test.ts │ │ │ │ │ ├── update.ts │ │ │ │ │ ├── utils.test.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── extensions.test.tsx │ │ │ │ ├── extensions.tsx │ │ │ │ ├── hooks/ │ │ │ │ │ ├── disable.ts │ │ │ │ │ └── enable.ts │ │ │ │ ├── hooks.tsx │ │ │ │ ├── mcp/ │ │ │ │ │ ├── add.test.ts │ │ │ │ │ ├── add.ts │ │ │ │ │ ├── list.test.ts │ │ │ │ │ ├── list.ts │ │ │ │ │ ├── remove.test.ts │ │ │ │ │ └── remove.ts │ │ │ │ ├── mcp.test.ts │ │ │ │ └── mcp.ts │ │ │ ├── config/ │ │ │ │ ├── auth.test.ts │ │ │ │ ├── auth.ts │ │ │ │ ├── config.integration.test.ts │ │ │ │ ├── config.test.ts │ │ │ │ ├── config.ts │ │ │ │ ├── keyBindings.test.ts │ │ │ │ ├── keyBindings.ts │ │ │ │ ├── migration/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── scheduler.test.ts │ │ │ │ │ ├── scheduler.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── versions/ │ │ │ │ │ ├── v1-to-v2-shared.ts │ │ │ │ │ ├── v1-to-v2.test.ts │ │ │ │ │ ├── v1-to-v2.ts │ │ │ │ │ ├── v2-to-v3.test.ts │ │ │ │ │ └── v2-to-v3.ts │ │ │ │ ├── modelProvidersScope.test.ts │ │ │ │ ├── modelProvidersScope.ts │ │ │ │ ├── sandboxConfig.ts │ │ │ │ ├── settings.test.ts │ │ │ │ ├── settings.ts │ │ │ │ ├── settingsSchema.test.ts │ │ │ │ ├── settingsSchema.ts │ │ │ │ ├── trustedFolders.test.ts │ │ │ │ ├── trustedFolders.ts │ │ │ │ └── webSearch.ts │ │ │ ├── constants/ │ │ │ │ └── codingPlan.ts │ │ │ ├── core/ │ │ │ │ ├── auth.ts │ │ │ │ ├── initializer.ts │ │ │ │ └── theme.ts │ │ │ ├── gemini.test.tsx │ │ │ ├── gemini.tsx │ │ │ ├── i18n/ │ │ │ │ ├── index.ts │ │ │ │ ├── languages.ts │ │ │ │ └── locales/ │ │ │ │ ├── de.js │ │ │ │ ├── en.js │ │ │ │ ├── ja.js │ │ │ │ ├── pt.js │ │ │ │ ├── ru.js │ │ │ │ └── zh.js │ │ │ ├── nonInteractive/ │ │ │ │ ├── control/ │ │ │ │ │ ├── ControlContext.ts │ │ │ │ │ ├── ControlDispatcher.test.ts │ │ │ │ │ ├── ControlDispatcher.ts │ │ │ │ │ ├── ControlService.ts │ │ │ │ │ ├── controllers/ │ │ │ │ │ │ ├── baseController.ts │ │ │ │ │ │ ├── hookController.ts │ │ │ │ │ │ ├── permissionController.ts │ │ │ │ │ │ ├── sdkMcpController.ts │ │ │ │ │ │ └── systemController.ts │ │ │ │ │ └── types/ │ │ │ │ │ └── serviceAPIs.ts │ │ │ │ ├── io/ │ │ │ │ │ ├── BaseJsonOutputAdapter.test.ts │ │ │ │ │ ├── BaseJsonOutputAdapter.ts │ │ │ │ │ ├── JsonOutputAdapter.test.ts │ │ │ │ │ ├── JsonOutputAdapter.ts │ │ │ │ │ ├── StreamJsonInputReader.test.ts │ │ │ │ │ ├── StreamJsonInputReader.ts │ │ │ │ │ ├── StreamJsonOutputAdapter.test.ts │ │ │ │ │ └── StreamJsonOutputAdapter.ts │ │ │ │ ├── session.test.ts │ │ │ │ ├── session.ts │ │ │ │ └── types.ts │ │ │ ├── nonInteractiveCli.test.ts │ │ │ ├── nonInteractiveCli.ts │ │ │ ├── nonInteractiveCliCommands.test.ts │ │ │ ├── nonInteractiveCliCommands.ts │ │ │ ├── patches/ │ │ │ │ └── is-in-ci.ts │ │ │ ├── services/ │ │ │ │ ├── BuiltinCommandLoader.test.ts │ │ │ │ ├── BuiltinCommandLoader.ts │ │ │ │ ├── BundledSkillLoader.test.ts │ │ │ │ ├── BundledSkillLoader.ts │ │ │ │ ├── CommandService.test.ts │ │ │ │ ├── CommandService.ts │ │ │ │ ├── FileCommandLoader-extension.test.ts │ │ │ │ ├── FileCommandLoader-markdown.test.ts │ │ │ │ ├── FileCommandLoader.test.ts │ │ │ │ ├── FileCommandLoader.ts │ │ │ │ ├── McpPromptLoader.test.ts │ │ │ │ ├── McpPromptLoader.ts │ │ │ │ ├── command-factory.ts │ │ │ │ ├── command-migration-tool.test.ts │ │ │ │ ├── command-migration-tool.ts │ │ │ │ ├── insight/ │ │ │ │ │ ├── generators/ │ │ │ │ │ │ ├── DataProcessor.test.ts │ │ │ │ │ │ ├── DataProcessor.ts │ │ │ │ │ │ ├── StaticInsightGenerator.test.ts │ │ │ │ │ │ ├── StaticInsightGenerator.ts │ │ │ │ │ │ └── TemplateRenderer.ts │ │ │ │ │ └── types/ │ │ │ │ │ ├── QualitativeInsightTypes.ts │ │ │ │ │ └── StaticInsightTypes.ts │ │ │ │ ├── markdown-command-parser.test.ts │ │ │ │ ├── markdown-command-parser.ts │ │ │ │ ├── prompt-processors/ │ │ │ │ │ ├── argumentProcessor.test.ts │ │ │ │ │ ├── argumentProcessor.ts │ │ │ │ │ ├── atFileProcessor.test.ts │ │ │ │ │ ├── atFileProcessor.ts │ │ │ │ │ ├── injectionParser.test.ts │ │ │ │ │ ├── injectionParser.ts │ │ │ │ │ ├── shellProcessor.test.ts │ │ │ │ │ ├── shellProcessor.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── test-commands/ │ │ │ │ │ └── example.md │ │ │ │ └── types.ts │ │ │ ├── test-utils/ │ │ │ │ ├── customMatchers.ts │ │ │ │ ├── mockCommandContext.test.ts │ │ │ │ ├── mockCommandContext.ts │ │ │ │ └── render.tsx │ │ │ ├── ui/ │ │ │ │ ├── App.test.tsx │ │ │ │ ├── App.tsx │ │ │ │ ├── AppContainer.test.tsx │ │ │ │ ├── AppContainer.tsx │ │ │ │ ├── CommandFormatMigrationNudge.tsx │ │ │ │ ├── FeedbackDialog.tsx │ │ │ │ ├── IdeIntegrationNudge.tsx │ │ │ │ ├── auth/ │ │ │ │ │ ├── AuthDialog.test.tsx │ │ │ │ │ ├── AuthDialog.tsx │ │ │ │ │ ├── AuthInProgress.tsx │ │ │ │ │ └── useAuth.ts │ │ │ │ ├── colors.ts │ │ │ │ ├── commands/ │ │ │ │ │ ├── aboutCommand.test.ts │ │ │ │ │ ├── aboutCommand.ts │ │ │ │ │ ├── agentsCommand.ts │ │ │ │ │ ├── approvalModeCommand.test.ts │ │ │ │ │ ├── approvalModeCommand.ts │ │ │ │ │ ├── arenaCommand.test.ts │ │ │ │ │ ├── arenaCommand.ts │ │ │ │ │ ├── authCommand.test.ts │ │ │ │ │ ├── authCommand.ts │ │ │ │ │ ├── bugCommand.test.ts │ │ │ │ │ ├── bugCommand.ts │ │ │ │ │ ├── clearCommand.test.ts │ │ │ │ │ ├── clearCommand.ts │ │ │ │ │ ├── compressCommand.test.ts │ │ │ │ │ ├── compressCommand.ts │ │ │ │ │ ├── contextCommand.ts │ │ │ │ │ ├── copyCommand.test.ts │ │ │ │ │ ├── copyCommand.ts │ │ │ │ │ ├── directoryCommand.test.tsx │ │ │ │ │ ├── directoryCommand.tsx │ │ │ │ │ ├── docsCommand.test.ts │ │ │ │ │ ├── docsCommand.ts │ │ │ │ │ ├── editorCommand.test.ts │ │ │ │ │ ├── editorCommand.ts │ │ │ │ │ ├── exportCommand.test.ts │ │ │ │ │ ├── exportCommand.ts │ │ │ │ │ ├── extensionsCommand.test.ts │ │ │ │ │ ├── extensionsCommand.ts │ │ │ │ │ ├── helpCommand.test.ts │ │ │ │ │ ├── helpCommand.ts │ │ │ │ │ ├── hooksCommand.ts │ │ │ │ │ ├── ideCommand.test.ts │ │ │ │ │ ├── ideCommand.ts │ │ │ │ │ ├── initCommand.test.ts │ │ │ │ │ ├── initCommand.ts │ │ │ │ │ ├── insightCommand.test.ts │ │ │ │ │ ├── insightCommand.ts │ │ │ │ │ ├── languageCommand.test.ts │ │ │ │ │ ├── languageCommand.ts │ │ │ │ │ ├── mcpCommand.test.ts │ │ │ │ │ ├── mcpCommand.ts │ │ │ │ │ ├── memoryCommand.test.ts │ │ │ │ │ ├── memoryCommand.ts │ │ │ │ │ ├── modelCommand.test.ts │ │ │ │ │ ├── modelCommand.ts │ │ │ │ │ ├── permissionsCommand.test.ts │ │ │ │ │ ├── permissionsCommand.ts │ │ │ │ │ ├── quitCommand.test.ts │ │ │ │ │ ├── quitCommand.ts │ │ │ │ │ ├── restoreCommand.test.ts │ │ │ │ │ ├── restoreCommand.ts │ │ │ │ │ ├── resumeCommand.test.ts │ │ │ │ │ ├── resumeCommand.ts │ │ │ │ │ ├── settingsCommand.test.ts │ │ │ │ │ ├── settingsCommand.ts │ │ │ │ │ ├── setupGithubCommand.test.ts │ │ │ │ │ ├── setupGithubCommand.ts │ │ │ │ │ ├── skillsCommand.ts │ │ │ │ │ ├── statsCommand.test.ts │ │ │ │ │ ├── statsCommand.ts │ │ │ │ │ ├── summaryCommand.ts │ │ │ │ │ ├── terminalSetupCommand.test.ts │ │ │ │ │ ├── terminalSetupCommand.ts │ │ │ │ │ ├── themeCommand.test.ts │ │ │ │ │ ├── themeCommand.ts │ │ │ │ │ ├── toolsCommand.test.ts │ │ │ │ │ ├── toolsCommand.ts │ │ │ │ │ ├── trustCommand.test.ts │ │ │ │ │ ├── trustCommand.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── vimCommand.ts │ │ │ │ ├── components/ │ │ │ │ │ ├── AboutBox.tsx │ │ │ │ │ ├── AnsiOutput.test.tsx │ │ │ │ │ ├── AnsiOutput.tsx │ │ │ │ │ ├── ApiKeyInput.tsx │ │ │ │ │ ├── AppHeader.test.tsx │ │ │ │ │ ├── AppHeader.tsx │ │ │ │ │ ├── ApprovalModeDialog.tsx │ │ │ │ │ ├── AsciiArt.ts │ │ │ │ │ ├── AutoAcceptIndicator.tsx │ │ │ │ │ ├── BaseTextInput.tsx │ │ │ │ │ ├── Composer.test.tsx │ │ │ │ │ ├── Composer.tsx │ │ │ │ │ ├── ConfigInitDisplay.tsx │ │ │ │ │ ├── ConsentPrompt.test.tsx │ │ │ │ │ ├── ConsentPrompt.tsx │ │ │ │ │ ├── ContextSummaryDisplay.test.tsx │ │ │ │ │ ├── ContextSummaryDisplay.tsx │ │ │ │ │ ├── ContextUsageDisplay.tsx │ │ │ │ │ ├── DebugModeNotification.tsx │ │ │ │ │ ├── DebugProfiler.tsx │ │ │ │ │ ├── DialogManager.tsx │ │ │ │ │ ├── EditorSettingsDialog.tsx │ │ │ │ │ ├── ExitWarning.tsx │ │ │ │ │ ├── FolderTrustDialog.test.tsx │ │ │ │ │ ├── FolderTrustDialog.tsx │ │ │ │ │ ├── Footer.test.tsx │ │ │ │ │ ├── Footer.tsx │ │ │ │ │ ├── GeminiRespondingSpinner.tsx │ │ │ │ │ ├── Header.test.tsx │ │ │ │ │ ├── Header.tsx │ │ │ │ │ ├── Help.test.tsx │ │ │ │ │ ├── Help.tsx │ │ │ │ │ ├── HistoryItemDisplay.test.tsx │ │ │ │ │ ├── HistoryItemDisplay.tsx │ │ │ │ │ ├── IdeTrustChangeDialog.test.tsx │ │ │ │ │ ├── IdeTrustChangeDialog.tsx │ │ │ │ │ ├── InputPrompt.test.tsx │ │ │ │ │ ├── InputPrompt.tsx │ │ │ │ │ ├── KeyboardShortcuts.tsx │ │ │ │ │ ├── LoadingIndicator.test.tsx │ │ │ │ │ ├── LoadingIndicator.tsx │ │ │ │ │ ├── LoopDetectionConfirmation.test.tsx │ │ │ │ │ ├── LoopDetectionConfirmation.tsx │ │ │ │ │ ├── MainContent.tsx │ │ │ │ │ ├── MemoryUsageDisplay.tsx │ │ │ │ │ ├── ModelDialog.test.tsx │ │ │ │ │ ├── ModelDialog.tsx │ │ │ │ │ ├── ModelStatsDisplay.test.tsx │ │ │ │ │ ├── ModelStatsDisplay.tsx │ │ │ │ │ ├── Notifications.tsx │ │ │ │ │ ├── PermissionsDialog.tsx │ │ │ │ │ ├── PlanSummaryDisplay.tsx │ │ │ │ │ ├── PluginChoicePrompt.test.tsx │ │ │ │ │ ├── PluginChoicePrompt.tsx │ │ │ │ │ ├── PrepareLabel.test.tsx │ │ │ │ │ ├── PrepareLabel.tsx │ │ │ │ │ ├── QueuedMessageDisplay.test.tsx │ │ │ │ │ ├── QueuedMessageDisplay.tsx │ │ │ │ │ ├── QuittingDisplay.tsx │ │ │ │ │ ├── QwenOAuthProgress.test.tsx │ │ │ │ │ ├── QwenOAuthProgress.tsx │ │ │ │ │ ├── SessionPicker.tsx │ │ │ │ │ ├── SessionSummaryDisplay.test.tsx │ │ │ │ │ ├── SessionSummaryDisplay.tsx │ │ │ │ │ ├── SettingInputPrompt.test.tsx │ │ │ │ │ ├── SettingInputPrompt.tsx │ │ │ │ │ ├── SettingsDialog.test.tsx │ │ │ │ │ ├── SettingsDialog.tsx │ │ │ │ │ ├── ShellConfirmationDialog.test.tsx │ │ │ │ │ ├── ShellConfirmationDialog.tsx │ │ │ │ │ ├── ShellInputPrompt.tsx │ │ │ │ │ ├── ShellModeIndicator.tsx │ │ │ │ │ ├── ShowMoreLines.tsx │ │ │ │ │ ├── StandaloneSessionPicker.test.tsx │ │ │ │ │ ├── StandaloneSessionPicker.tsx │ │ │ │ │ ├── StatsDisplay.test.tsx │ │ │ │ │ ├── StatsDisplay.tsx │ │ │ │ │ ├── SuggestionsDisplay.tsx │ │ │ │ │ ├── ThemeDialog.test.tsx │ │ │ │ │ ├── ThemeDialog.tsx │ │ │ │ │ ├── Tips.test.ts │ │ │ │ │ ├── Tips.tsx │ │ │ │ │ ├── TodoDisplay.test.tsx │ │ │ │ │ ├── TodoDisplay.tsx │ │ │ │ │ ├── ToolStatsDisplay.test.tsx │ │ │ │ │ ├── ToolStatsDisplay.tsx │ │ │ │ │ ├── TrustDialog.test.tsx │ │ │ │ │ ├── TrustDialog.tsx │ │ │ │ │ ├── UpdateNotification.tsx │ │ │ │ │ ├── WelcomeBackDialog.tsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── Footer.test.tsx.snap │ │ │ │ │ │ ├── HistoryItemDisplay.test.tsx.snap │ │ │ │ │ │ ├── IDEContextDetailDisplay.test.tsx.snap │ │ │ │ │ │ ├── InputPrompt.test.tsx.snap │ │ │ │ │ │ ├── LoadingIndicator.test.tsx.snap │ │ │ │ │ │ ├── LoopDetectionConfirmation.test.tsx.snap │ │ │ │ │ │ ├── ModelStatsDisplay.test.tsx.snap │ │ │ │ │ │ ├── PrepareLabel.test.tsx.snap │ │ │ │ │ │ ├── SessionSummaryDisplay.test.tsx.snap │ │ │ │ │ │ ├── SettingsDialog.test.tsx.snap │ │ │ │ │ │ ├── ShellConfirmationDialog.test.tsx.snap │ │ │ │ │ │ ├── StatsDisplay.test.tsx.snap │ │ │ │ │ │ ├── ThemeDialog.test.tsx.snap │ │ │ │ │ │ └── ToolStatsDisplay.test.tsx.snap │ │ │ │ │ ├── agent-view/ │ │ │ │ │ │ ├── AgentChatView.tsx │ │ │ │ │ │ ├── AgentComposer.tsx │ │ │ │ │ │ ├── AgentFooter.tsx │ │ │ │ │ │ ├── AgentHeader.tsx │ │ │ │ │ │ ├── AgentTabBar.tsx │ │ │ │ │ │ ├── agentHistoryAdapter.test.ts │ │ │ │ │ │ ├── agentHistoryAdapter.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── arena/ │ │ │ │ │ │ ├── ArenaCards.tsx │ │ │ │ │ │ ├── ArenaSelectDialog.tsx │ │ │ │ │ │ ├── ArenaStartDialog.tsx │ │ │ │ │ │ ├── ArenaStatusDialog.tsx │ │ │ │ │ │ └── ArenaStopDialog.tsx │ │ │ │ │ ├── extensions/ │ │ │ │ │ │ ├── ExtensionsManagerDialog.test.tsx │ │ │ │ │ │ ├── ExtensionsManagerDialog.tsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ └── ExtensionsManagerDialog.test.tsx.snap │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── steps/ │ │ │ │ │ │ │ ├── ActionSelectionStep.test.tsx │ │ │ │ │ │ │ ├── ActionSelectionStep.tsx │ │ │ │ │ │ │ ├── ExtensionDetailStep.tsx │ │ │ │ │ │ │ ├── ExtensionListStep.test.tsx │ │ │ │ │ │ │ ├── ExtensionListStep.tsx │ │ │ │ │ │ │ ├── ScopeSelectStep.tsx │ │ │ │ │ │ │ ├── UninstallConfirmStep.tsx │ │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ │ ├── ActionSelectionStep.test.tsx.snap │ │ │ │ │ │ │ │ └── ExtensionListStep.test.tsx.snap │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── mcp/ │ │ │ │ │ │ ├── MCPManagementDialog.tsx │ │ │ │ │ │ ├── constants.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── steps/ │ │ │ │ │ │ │ ├── AuthenticateStep.tsx │ │ │ │ │ │ │ ├── DisableScopeSelectStep.tsx │ │ │ │ │ │ │ ├── ServerDetailStep.tsx │ │ │ │ │ │ │ ├── ServerListStep.tsx │ │ │ │ │ │ │ ├── ToolDetailStep.tsx │ │ │ │ │ │ │ └── ToolListStep.tsx │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ ├── utils.test.ts │ │ │ │ │ │ └── utils.ts │ │ │ │ │ ├── messages/ │ │ │ │ │ │ ├── AskUserQuestionDialog.test.tsx │ │ │ │ │ │ ├── AskUserQuestionDialog.tsx │ │ │ │ │ │ ├── CompressionMessage.test.tsx │ │ │ │ │ │ ├── CompressionMessage.tsx │ │ │ │ │ │ ├── ConversationMessages.tsx │ │ │ │ │ │ ├── DiffRenderer.test.tsx │ │ │ │ │ │ ├── DiffRenderer.tsx │ │ │ │ │ │ ├── InsightProgressMessage.tsx │ │ │ │ │ │ ├── StatusMessages.tsx │ │ │ │ │ │ ├── SummaryMessage.tsx │ │ │ │ │ │ ├── ToolConfirmationMessage.test.tsx │ │ │ │ │ │ ├── ToolConfirmationMessage.tsx │ │ │ │ │ │ ├── ToolGroupMessage.test.tsx │ │ │ │ │ │ ├── ToolGroupMessage.tsx │ │ │ │ │ │ ├── ToolMessage.test.tsx │ │ │ │ │ │ ├── ToolMessage.tsx │ │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ │ └── ToolGroupMessage.test.tsx.snap │ │ │ │ │ ├── shared/ │ │ │ │ │ │ ├── BaseSelectionList.test.tsx │ │ │ │ │ │ ├── BaseSelectionList.tsx │ │ │ │ │ │ ├── DescriptiveRadioButtonSelect.test.tsx │ │ │ │ │ │ ├── DescriptiveRadioButtonSelect.tsx │ │ │ │ │ │ ├── EnumSelector.test.tsx │ │ │ │ │ │ ├── EnumSelector.tsx │ │ │ │ │ │ ├── MaxSizedBox.test.tsx │ │ │ │ │ │ ├── MaxSizedBox.tsx │ │ │ │ │ │ ├── MultiSelect.tsx │ │ │ │ │ │ ├── RadioButtonSelect.test.tsx │ │ │ │ │ │ ├── RadioButtonSelect.tsx │ │ │ │ │ │ ├── ScopeSelector.tsx │ │ │ │ │ │ ├── TextInput.tsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── DescriptiveRadioButtonSelect.test.tsx.snap │ │ │ │ │ │ │ └── EnumSelector.test.tsx.snap │ │ │ │ │ │ ├── text-buffer.test.ts │ │ │ │ │ │ ├── text-buffer.ts │ │ │ │ │ │ ├── vim-buffer-actions.test.ts │ │ │ │ │ │ └── vim-buffer-actions.ts │ │ │ │ │ ├── subagents/ │ │ │ │ │ │ ├── constants.ts │ │ │ │ │ │ ├── create/ │ │ │ │ │ │ │ ├── AgentCreationWizard.tsx │ │ │ │ │ │ │ ├── ColorSelector.tsx │ │ │ │ │ │ │ ├── CreationSummary.tsx │ │ │ │ │ │ │ ├── DescriptionInput.tsx │ │ │ │ │ │ │ ├── GenerationMethodSelector.tsx │ │ │ │ │ │ │ ├── LocationSelector.tsx │ │ │ │ │ │ │ ├── TextEntryStep.tsx │ │ │ │ │ │ │ └── ToolSelector.tsx │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── manage/ │ │ │ │ │ │ │ ├── ActionSelectionStep.tsx │ │ │ │ │ │ │ ├── AgentDeleteStep.tsx │ │ │ │ │ │ │ ├── AgentEditStep.tsx │ │ │ │ │ │ │ ├── AgentSelectionStep.tsx │ │ │ │ │ │ │ ├── AgentViewerStep.tsx │ │ │ │ │ │ │ └── AgentsManagerDialog.tsx │ │ │ │ │ │ ├── reducers.tsx │ │ │ │ │ │ ├── runtime/ │ │ │ │ │ │ │ └── AgentExecutionDisplay.tsx │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ └── utils.ts │ │ │ │ │ └── views/ │ │ │ │ │ ├── ContextUsage.tsx │ │ │ │ │ ├── ExtensionsList.test.tsx │ │ │ │ │ ├── ExtensionsList.tsx │ │ │ │ │ ├── McpStatus.test.tsx │ │ │ │ │ ├── McpStatus.tsx │ │ │ │ │ ├── SkillsList.tsx │ │ │ │ │ ├── ToolsList.test.tsx │ │ │ │ │ ├── ToolsList.tsx │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ ├── McpStatus.test.tsx.snap │ │ │ │ │ └── ToolsList.test.tsx.snap │ │ │ │ ├── constants.ts │ │ │ │ ├── contexts/ │ │ │ │ │ ├── AgentViewContext.tsx │ │ │ │ │ ├── AppContext.tsx │ │ │ │ │ ├── ConfigContext.tsx │ │ │ │ │ ├── KeypressContext.test.tsx │ │ │ │ │ ├── KeypressContext.tsx │ │ │ │ │ ├── OverflowContext.tsx │ │ │ │ │ ├── SessionContext.test.tsx │ │ │ │ │ ├── SessionContext.tsx │ │ │ │ │ ├── SettingsContext.tsx │ │ │ │ │ ├── ShellFocusContext.tsx │ │ │ │ │ ├── StreamingContext.tsx │ │ │ │ │ ├── UIActionsContext.tsx │ │ │ │ │ ├── UIStateContext.tsx │ │ │ │ │ └── VimModeContext.tsx │ │ │ │ ├── editors/ │ │ │ │ │ └── editorSettingsManager.ts │ │ │ │ ├── hooks/ │ │ │ │ │ ├── atCommandProcessor.test.ts │ │ │ │ │ ├── atCommandProcessor.ts │ │ │ │ │ ├── keyToAnsi.ts │ │ │ │ │ ├── shellCommandProcessor.test.ts │ │ │ │ │ ├── shellCommandProcessor.ts │ │ │ │ │ ├── slashCommandProcessor.test.ts │ │ │ │ │ ├── slashCommandProcessor.ts │ │ │ │ │ ├── useAgentStreamingState.ts │ │ │ │ │ ├── useAgentsManagerDialog.ts │ │ │ │ │ ├── useApprovalModeCommand.ts │ │ │ │ │ ├── useArenaCommand.ts │ │ │ │ │ ├── useArenaInProcess.ts │ │ │ │ │ ├── useAtCompletion.test.ts │ │ │ │ │ ├── useAtCompletion.ts │ │ │ │ │ ├── useAttentionNotifications.test.ts │ │ │ │ │ ├── useAttentionNotifications.ts │ │ │ │ │ ├── useAutoAcceptIndicator.test.ts │ │ │ │ │ ├── useAutoAcceptIndicator.ts │ │ │ │ │ ├── useBracketedPaste.ts │ │ │ │ │ ├── useCodingPlanUpdates.test.ts │ │ │ │ │ ├── useCodingPlanUpdates.ts │ │ │ │ │ ├── useCommandCompletion.test.ts │ │ │ │ │ ├── useCommandCompletion.tsx │ │ │ │ │ ├── useCommandMigration.ts │ │ │ │ │ ├── useCompletion.ts │ │ │ │ │ ├── useDialogClose.ts │ │ │ │ │ ├── useEditorSettings.test.ts │ │ │ │ │ ├── useEditorSettings.ts │ │ │ │ │ ├── useExtensionUpdates.test.ts │ │ │ │ │ ├── useExtensionUpdates.ts │ │ │ │ │ ├── useExtensionsManagerDialog.ts │ │ │ │ │ ├── useFeedbackDialog.ts │ │ │ │ │ ├── useFocus.test.ts │ │ │ │ │ ├── useFocus.ts │ │ │ │ │ ├── useFolderTrust.test.ts │ │ │ │ │ ├── useFolderTrust.ts │ │ │ │ │ ├── useGeminiStream.test.tsx │ │ │ │ │ ├── useGeminiStream.ts │ │ │ │ │ ├── useGitBranchName.test.ts │ │ │ │ │ ├── useGitBranchName.ts │ │ │ │ │ ├── useHistoryManager.test.ts │ │ │ │ │ ├── useHistoryManager.ts │ │ │ │ │ ├── useIdeTrustListener.test.ts │ │ │ │ │ ├── useIdeTrustListener.ts │ │ │ │ │ ├── useInitializationAuthError.ts │ │ │ │ │ ├── useInputHistory.test.ts │ │ │ │ │ ├── useInputHistory.ts │ │ │ │ │ ├── useInputHistoryStore.test.ts │ │ │ │ │ ├── useInputHistoryStore.ts │ │ │ │ │ ├── useKeypress.test.ts │ │ │ │ │ ├── useKeypress.ts │ │ │ │ │ ├── useKittyKeyboardProtocol.ts │ │ │ │ │ ├── useLaunchEditor.ts │ │ │ │ │ ├── useLoadingIndicator.test.ts │ │ │ │ │ ├── useLoadingIndicator.ts │ │ │ │ │ ├── useLogger.ts │ │ │ │ │ ├── useMcpDialog.ts │ │ │ │ │ ├── useMemoryMonitor.test.ts │ │ │ │ │ ├── useMemoryMonitor.ts │ │ │ │ │ ├── useMessageQueue.test.ts │ │ │ │ │ ├── useMessageQueue.ts │ │ │ │ │ ├── useModelCommand.test.ts │ │ │ │ │ ├── useModelCommand.ts │ │ │ │ │ ├── usePhraseCycler.test.ts │ │ │ │ │ ├── usePhraseCycler.ts │ │ │ │ │ ├── useQwenAuth.test.ts │ │ │ │ │ ├── useQwenAuth.ts │ │ │ │ │ ├── useReactToolScheduler.ts │ │ │ │ │ ├── useRefreshMemoryCommand.ts │ │ │ │ │ ├── useResumeCommand.test.ts │ │ │ │ │ ├── useResumeCommand.ts │ │ │ │ │ ├── useReverseSearchCompletion.test.tsx │ │ │ │ │ ├── useReverseSearchCompletion.tsx │ │ │ │ │ ├── useSelectionList.test.ts │ │ │ │ │ ├── useSelectionList.ts │ │ │ │ │ ├── useSessionPicker.ts │ │ │ │ │ ├── useSettingsCommand.ts │ │ │ │ │ ├── useShellHistory.test.ts │ │ │ │ │ ├── useShellHistory.ts │ │ │ │ │ ├── useShowMemoryCommand.ts │ │ │ │ │ ├── useSlashCompletion.test.ts │ │ │ │ │ ├── useSlashCompletion.ts │ │ │ │ │ ├── useStateAndRef.ts │ │ │ │ │ ├── useSubagentCreateDialog.ts │ │ │ │ │ ├── useTerminalSize.ts │ │ │ │ │ ├── useThemeCommand.ts │ │ │ │ │ ├── useTimer.test.ts │ │ │ │ │ ├── useTimer.ts │ │ │ │ │ ├── useTomlMigration.ts │ │ │ │ │ ├── useToolScheduler.test.ts │ │ │ │ │ ├── useTrustModify.test.ts │ │ │ │ │ ├── useTrustModify.ts │ │ │ │ │ ├── useWelcomeBack.ts │ │ │ │ │ ├── vim.test.ts │ │ │ │ │ └── vim.ts │ │ │ │ ├── keyMatchers.test.ts │ │ │ │ ├── keyMatchers.ts │ │ │ │ ├── layouts/ │ │ │ │ │ ├── DefaultAppLayout.tsx │ │ │ │ │ └── ScreenReaderAppLayout.tsx │ │ │ │ ├── models/ │ │ │ │ │ ├── availableModels.test.ts │ │ │ │ │ └── availableModels.ts │ │ │ │ ├── noninteractive/ │ │ │ │ │ └── nonInteractiveUi.ts │ │ │ │ ├── semantic-colors.ts │ │ │ │ ├── state/ │ │ │ │ │ └── extensions.ts │ │ │ │ ├── textConstants.ts │ │ │ │ ├── themes/ │ │ │ │ │ ├── ansi-light.ts │ │ │ │ │ ├── ansi.ts │ │ │ │ │ ├── atom-one-dark.ts │ │ │ │ │ ├── ayu-light.ts │ │ │ │ │ ├── ayu.ts │ │ │ │ │ ├── color-utils.test.ts │ │ │ │ │ ├── color-utils.ts │ │ │ │ │ ├── default-light.ts │ │ │ │ │ ├── default.ts │ │ │ │ │ ├── dracula.ts │ │ │ │ │ ├── github-dark.ts │ │ │ │ │ ├── github-light.ts │ │ │ │ │ ├── googlecode.ts │ │ │ │ │ ├── no-color.ts │ │ │ │ │ ├── qwen-dark.ts │ │ │ │ │ ├── qwen-light.ts │ │ │ │ │ ├── semantic-tokens.ts │ │ │ │ │ ├── shades-of-purple.ts │ │ │ │ │ ├── theme-manager.test.ts │ │ │ │ │ ├── theme-manager.ts │ │ │ │ │ ├── theme.test.ts │ │ │ │ │ ├── theme.ts │ │ │ │ │ └── xcode.ts │ │ │ │ ├── types.ts │ │ │ │ └── utils/ │ │ │ │ ├── CodeColorizer.tsx │ │ │ │ ├── InlineMarkdownRenderer.tsx │ │ │ │ ├── MarkdownDisplay.test.tsx │ │ │ │ ├── MarkdownDisplay.tsx │ │ │ │ ├── TableRenderer.tsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── MarkdownDisplay.test.tsx.snap │ │ │ │ ├── clipboardUtils.test.ts │ │ │ │ ├── clipboardUtils.ts │ │ │ │ ├── commandUtils.test.ts │ │ │ │ ├── commandUtils.ts │ │ │ │ ├── computeStats.test.ts │ │ │ │ ├── computeStats.ts │ │ │ │ ├── displayUtils.test.ts │ │ │ │ ├── displayUtils.ts │ │ │ │ ├── export/ │ │ │ │ │ ├── collect.ts │ │ │ │ │ ├── formatters/ │ │ │ │ │ │ ├── html.ts │ │ │ │ │ │ ├── json.ts │ │ │ │ │ │ ├── jsonl.ts │ │ │ │ │ │ └── markdown.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── normalize.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── formatters.test.ts │ │ │ │ ├── formatters.ts │ │ │ │ ├── highlight.test.ts │ │ │ │ ├── highlight.ts │ │ │ │ ├── isNarrowWidth.ts │ │ │ │ ├── kittyProtocolDetector.ts │ │ │ │ ├── layoutUtils.ts │ │ │ │ ├── markdownUtilities.test.ts │ │ │ │ ├── markdownUtilities.ts │ │ │ │ ├── platformConstants.ts │ │ │ │ ├── resumeHistoryUtils.test.ts │ │ │ │ ├── resumeHistoryUtils.ts │ │ │ │ ├── sessionPickerUtils.test.ts │ │ │ │ ├── sessionPickerUtils.ts │ │ │ │ ├── terminalSetup.ts │ │ │ │ ├── textUtils.test.ts │ │ │ │ ├── textUtils.ts │ │ │ │ ├── updateCheck.test.ts │ │ │ │ └── updateCheck.ts │ │ │ ├── utils/ │ │ │ │ ├── acpModelUtils.test.ts │ │ │ │ ├── acpModelUtils.ts │ │ │ │ ├── attentionNotification.test.ts │ │ │ │ ├── attentionNotification.ts │ │ │ │ ├── checks.ts │ │ │ │ ├── cleanup.test.ts │ │ │ │ ├── cleanup.ts │ │ │ │ ├── commands.test.ts │ │ │ │ ├── commands.ts │ │ │ │ ├── commentJson.test.ts │ │ │ │ ├── commentJson.ts │ │ │ │ ├── deepMerge.test.ts │ │ │ │ ├── deepMerge.ts │ │ │ │ ├── dialogScopeUtils.ts │ │ │ │ ├── envVarResolver.test.ts │ │ │ │ ├── envVarResolver.ts │ │ │ │ ├── errors.test.ts │ │ │ │ ├── errors.ts │ │ │ │ ├── events.ts │ │ │ │ ├── gitUtils.test.ts │ │ │ │ ├── gitUtils.ts │ │ │ │ ├── handleAutoUpdate.test.ts │ │ │ │ ├── handleAutoUpdate.ts │ │ │ │ ├── installationInfo.test.ts │ │ │ │ ├── installationInfo.ts │ │ │ │ ├── languageUtils.test.ts │ │ │ │ ├── languageUtils.ts │ │ │ │ ├── math.ts │ │ │ │ ├── modelConfigUtils.test.ts │ │ │ │ ├── modelConfigUtils.ts │ │ │ │ ├── nonInteractiveHelpers.test.ts │ │ │ │ ├── nonInteractiveHelpers.ts │ │ │ │ ├── package.ts │ │ │ │ ├── processUtils.test.ts │ │ │ │ ├── processUtils.ts │ │ │ │ ├── readStdin.test.ts │ │ │ │ ├── readStdin.ts │ │ │ │ ├── relaunch.test.ts │ │ │ │ ├── relaunch.ts │ │ │ │ ├── resolvePath.ts │ │ │ │ ├── sandbox-macos-permissive-closed.sb │ │ │ │ ├── sandbox-macos-permissive-open.sb │ │ │ │ ├── sandbox-macos-permissive-proxied.sb │ │ │ │ ├── sandbox-macos-restrictive-closed.sb │ │ │ │ ├── sandbox-macos-restrictive-open.sb │ │ │ │ ├── sandbox-macos-restrictive-proxied.sb │ │ │ │ ├── sandbox.ts │ │ │ │ ├── settingsUtils.test.ts │ │ │ │ ├── settingsUtils.ts │ │ │ │ ├── spawnWrapper.ts │ │ │ │ ├── startupWarnings.test.ts │ │ │ │ ├── startupWarnings.ts │ │ │ │ ├── stdioHelpers.ts │ │ │ │ ├── systemInfo.test.ts │ │ │ │ ├── systemInfo.ts │ │ │ │ ├── systemInfoFields.test.ts │ │ │ │ ├── systemInfoFields.ts │ │ │ │ ├── updateEventEmitter.ts │ │ │ │ ├── userStartupWarnings.test.ts │ │ │ │ ├── userStartupWarnings.ts │ │ │ │ ├── version.ts │ │ │ │ ├── windowTitle.test.ts │ │ │ │ ├── windowTitle.ts │ │ │ │ ├── writeWithBackup.test.ts │ │ │ │ └── writeWithBackup.ts │ │ │ ├── validateNonInterActiveAuth.test.ts │ │ │ └── validateNonInterActiveAuth.ts │ │ ├── test-setup.ts │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── core/ │ │ ├── index.ts │ │ ├── package.json │ │ ├── scripts/ │ │ │ └── postinstall.js │ │ ├── src/ │ │ │ ├── __mocks__/ │ │ │ │ └── fs/ │ │ │ │ └── promises.ts │ │ │ ├── agents/ │ │ │ │ ├── arena/ │ │ │ │ │ ├── ArenaAgentClient.test.ts │ │ │ │ │ ├── ArenaAgentClient.ts │ │ │ │ │ ├── ArenaManager.test.ts │ │ │ │ │ ├── ArenaManager.ts │ │ │ │ │ ├── arena-events.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── backends/ │ │ │ │ │ ├── ITermBackend.test.ts │ │ │ │ │ ├── ITermBackend.ts │ │ │ │ │ ├── InProcessBackend.test.ts │ │ │ │ │ ├── InProcessBackend.ts │ │ │ │ │ ├── TmuxBackend.test.ts │ │ │ │ │ ├── TmuxBackend.ts │ │ │ │ │ ├── detect.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── iterm-it2.test.ts │ │ │ │ │ ├── iterm-it2.ts │ │ │ │ │ ├── tmux-commands.test.ts │ │ │ │ │ ├── tmux-commands.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── index.ts │ │ │ │ └── runtime/ │ │ │ │ ├── agent-core.ts │ │ │ │ ├── agent-events.ts │ │ │ │ ├── agent-headless.test.ts │ │ │ │ ├── agent-headless.ts │ │ │ │ ├── agent-interactive.test.ts │ │ │ │ ├── agent-interactive.ts │ │ │ │ ├── agent-statistics.test.ts │ │ │ │ ├── agent-statistics.ts │ │ │ │ ├── agent-types.ts │ │ │ │ └── index.ts │ │ │ ├── config/ │ │ │ │ ├── config.test.ts │ │ │ │ ├── config.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── models.ts │ │ │ │ ├── storage.test.ts │ │ │ │ └── storage.ts │ │ │ ├── confirmation-bus/ │ │ │ │ ├── message-bus.ts │ │ │ │ └── types.ts │ │ │ ├── core/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── prompts.test.ts.snap │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── openaiTimeoutHandling.test.ts │ │ │ │ │ └── orphanedToolCallsTest.ts │ │ │ │ ├── anthropicContentGenerator/ │ │ │ │ │ ├── anthropicContentGenerator.test.ts │ │ │ │ │ ├── anthropicContentGenerator.ts │ │ │ │ │ ├── converter.test.ts │ │ │ │ │ ├── converter.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── baseLlmClient.test.ts │ │ │ │ ├── baseLlmClient.ts │ │ │ │ ├── client.test.ts │ │ │ │ ├── client.ts │ │ │ │ ├── contentGenerator.test.ts │ │ │ │ ├── contentGenerator.ts │ │ │ │ ├── coreToolScheduler.test.ts │ │ │ │ ├── coreToolScheduler.ts │ │ │ │ ├── geminiChat.test.ts │ │ │ │ ├── geminiChat.ts │ │ │ │ ├── geminiContentGenerator/ │ │ │ │ │ ├── geminiContentGenerator.test.ts │ │ │ │ │ ├── geminiContentGenerator.ts │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── geminiRequest.test.ts │ │ │ │ ├── geminiRequest.ts │ │ │ │ ├── logger.test.ts │ │ │ │ ├── logger.ts │ │ │ │ ├── loggingContentGenerator/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── loggingContentGenerator.test.ts │ │ │ │ │ └── loggingContentGenerator.ts │ │ │ │ ├── modalityDefaults.test.ts │ │ │ │ ├── modalityDefaults.ts │ │ │ │ ├── nonInteractiveToolExecutor.test.ts │ │ │ │ ├── nonInteractiveToolExecutor.ts │ │ │ │ ├── openaiContentGenerator/ │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── converter.test.ts │ │ │ │ │ ├── converter.ts │ │ │ │ │ ├── errorHandler.test.ts │ │ │ │ │ ├── errorHandler.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── openaiContentGenerator.test.ts │ │ │ │ │ ├── openaiContentGenerator.ts │ │ │ │ │ ├── pipeline.test.ts │ │ │ │ │ ├── pipeline.ts │ │ │ │ │ ├── provider/ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── dashscope.test.ts │ │ │ │ │ │ ├── dashscope.ts │ │ │ │ │ │ ├── deepseek.test.ts │ │ │ │ │ │ ├── deepseek.ts │ │ │ │ │ │ ├── default.test.ts │ │ │ │ │ │ ├── default.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── modelscope.test.ts │ │ │ │ │ │ ├── modelscope.ts │ │ │ │ │ │ ├── openrouter.test.ts │ │ │ │ │ │ ├── openrouter.ts │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── streamingToolCallParser.test.ts │ │ │ │ │ └── streamingToolCallParser.ts │ │ │ │ ├── prompts.test.ts │ │ │ │ ├── prompts.ts │ │ │ │ ├── tokenLimits.test.ts │ │ │ │ ├── tokenLimits.ts │ │ │ │ ├── toolHookTriggers.test.ts │ │ │ │ ├── toolHookTriggers.ts │ │ │ │ ├── turn.test.ts │ │ │ │ └── turn.ts │ │ │ ├── extension/ │ │ │ │ ├── claude-converter.test.ts │ │ │ │ ├── claude-converter.ts │ │ │ │ ├── extensionManager.test.ts │ │ │ │ ├── extensionManager.ts │ │ │ │ ├── extensionSettings.test.ts │ │ │ │ ├── extensionSettings.ts │ │ │ │ ├── gemini-converter.test.ts │ │ │ │ ├── gemini-converter.ts │ │ │ │ ├── github.test.ts │ │ │ │ ├── github.ts │ │ │ │ ├── index.ts │ │ │ │ ├── marketplace.test.ts │ │ │ │ ├── marketplace.ts │ │ │ │ ├── override.test.ts │ │ │ │ ├── override.ts │ │ │ │ ├── settings.test.ts │ │ │ │ ├── settings.ts │ │ │ │ ├── storage.test.ts │ │ │ │ ├── storage.ts │ │ │ │ ├── variableSchema.ts │ │ │ │ ├── variables.test.ts │ │ │ │ └── variables.ts │ │ │ ├── hooks/ │ │ │ │ ├── hookAggregator.test.ts │ │ │ │ ├── hookAggregator.ts │ │ │ │ ├── hookEventHandler.test.ts │ │ │ │ ├── hookEventHandler.ts │ │ │ │ ├── hookPlanner.test.ts │ │ │ │ ├── hookPlanner.ts │ │ │ │ ├── hookRegistry.test.ts │ │ │ │ ├── hookRegistry.ts │ │ │ │ ├── hookRunner.test.ts │ │ │ │ ├── hookRunner.ts │ │ │ │ ├── hookSystem.test.ts │ │ │ │ ├── hookSystem.ts │ │ │ │ ├── index.ts │ │ │ │ ├── trustedHooks.ts │ │ │ │ └── types.ts │ │ │ ├── ide/ │ │ │ │ ├── constants.ts │ │ │ │ ├── detect-ide.test.ts │ │ │ │ ├── detect-ide.ts │ │ │ │ ├── ide-client.test.ts │ │ │ │ ├── ide-client.ts │ │ │ │ ├── ide-installer.test.ts │ │ │ │ ├── ide-installer.ts │ │ │ │ ├── ideContext.test.ts │ │ │ │ ├── ideContext.ts │ │ │ │ ├── process-utils.test.ts │ │ │ │ ├── process-utils.ts │ │ │ │ └── types.ts │ │ │ ├── index.test.ts │ │ │ ├── index.ts │ │ │ ├── lsp/ │ │ │ │ ├── LspConfigLoader.test.ts │ │ │ │ ├── LspConfigLoader.ts │ │ │ │ ├── LspConnectionFactory.ts │ │ │ │ ├── LspLanguageDetector.ts │ │ │ │ ├── LspResponseNormalizer.ts │ │ │ │ ├── LspServerManager.ts │ │ │ │ ├── NativeLspClient.ts │ │ │ │ ├── NativeLspService.integration.test.ts │ │ │ │ ├── NativeLspService.test.ts │ │ │ │ ├── NativeLspService.ts │ │ │ │ ├── constants.ts │ │ │ │ └── types.ts │ │ │ ├── mcp/ │ │ │ │ ├── constants.ts │ │ │ │ ├── google-auth-provider.test.ts │ │ │ │ ├── google-auth-provider.ts │ │ │ │ ├── oauth-provider.test.ts │ │ │ │ ├── oauth-provider.ts │ │ │ │ ├── oauth-token-storage.test.ts │ │ │ │ ├── oauth-token-storage.ts │ │ │ │ ├── oauth-utils.test.ts │ │ │ │ ├── oauth-utils.ts │ │ │ │ ├── sa-impersonation-provider.test.ts │ │ │ │ ├── sa-impersonation-provider.ts │ │ │ │ └── token-storage/ │ │ │ │ ├── base-token-storage.test.ts │ │ │ │ ├── base-token-storage.ts │ │ │ │ ├── file-token-storage.test.ts │ │ │ │ ├── file-token-storage.ts │ │ │ │ ├── hybrid-token-storage.test.ts │ │ │ │ ├── hybrid-token-storage.ts │ │ │ │ ├── index.ts │ │ │ │ ├── keychain-token-storage.test.ts │ │ │ │ ├── keychain-token-storage.ts │ │ │ │ └── types.ts │ │ │ ├── mocks/ │ │ │ │ └── msw.ts │ │ │ ├── models/ │ │ │ │ ├── constants.ts │ │ │ │ ├── index.ts │ │ │ │ ├── modelConfigErrors.ts │ │ │ │ ├── modelConfigResolver.test.ts │ │ │ │ ├── modelConfigResolver.ts │ │ │ │ ├── modelRegistry.test.ts │ │ │ │ ├── modelRegistry.ts │ │ │ │ ├── modelsConfig.test.ts │ │ │ │ ├── modelsConfig.ts │ │ │ │ └── types.ts │ │ │ ├── output/ │ │ │ │ ├── json-formatter.test.ts │ │ │ │ ├── json-formatter.ts │ │ │ │ └── types.ts │ │ │ ├── permissions/ │ │ │ │ ├── index.ts │ │ │ │ ├── permission-manager.test.ts │ │ │ │ ├── permission-manager.ts │ │ │ │ ├── rule-parser.ts │ │ │ │ ├── shell-semantics.test.ts │ │ │ │ ├── shell-semantics.ts │ │ │ │ └── types.ts │ │ │ ├── prompts/ │ │ │ │ ├── mcp-prompts.ts │ │ │ │ └── prompt-registry.ts │ │ │ ├── qwen/ │ │ │ │ ├── qwenContentGenerator.test.ts │ │ │ │ ├── qwenContentGenerator.ts │ │ │ │ ├── qwenOAuth2.test.ts │ │ │ │ ├── qwenOAuth2.ts │ │ │ │ ├── sharedTokenManager.test.ts │ │ │ │ └── sharedTokenManager.ts │ │ │ ├── services/ │ │ │ │ ├── chatCompressionService.test.ts │ │ │ │ ├── chatCompressionService.ts │ │ │ │ ├── chatRecordingService.test.ts │ │ │ │ ├── chatRecordingService.ts │ │ │ │ ├── fileDiscoveryService.test.ts │ │ │ │ ├── fileDiscoveryService.ts │ │ │ │ ├── fileSystemService.test.ts │ │ │ │ ├── fileSystemService.ts │ │ │ │ ├── gitService.test.ts │ │ │ │ ├── gitService.ts │ │ │ │ ├── gitWorktreeService.test.ts │ │ │ │ ├── gitWorktreeService.ts │ │ │ │ ├── loopDetectionService.test.ts │ │ │ │ ├── loopDetectionService.ts │ │ │ │ ├── sessionService.test.ts │ │ │ │ ├── sessionService.ts │ │ │ │ ├── shellExecutionService.test.ts │ │ │ │ └── shellExecutionService.ts │ │ │ ├── skills/ │ │ │ │ ├── bundled/ │ │ │ │ │ └── review/ │ │ │ │ │ └── SKILL.md │ │ │ │ ├── index.ts │ │ │ │ ├── skill-load.test.ts │ │ │ │ ├── skill-load.ts │ │ │ │ ├── skill-manager.test.ts │ │ │ │ ├── skill-manager.ts │ │ │ │ └── types.ts │ │ │ ├── subagents/ │ │ │ │ ├── builtin-agents.test.ts │ │ │ │ ├── builtin-agents.ts │ │ │ │ ├── index.ts │ │ │ │ ├── subagent-manager.test.ts │ │ │ │ ├── subagent-manager.ts │ │ │ │ ├── types.test.ts │ │ │ │ ├── types.ts │ │ │ │ ├── validation.test.ts │ │ │ │ └── validation.ts │ │ │ ├── telemetry/ │ │ │ │ ├── config.test.ts │ │ │ │ ├── config.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── file-exporters.ts │ │ │ │ ├── index.ts │ │ │ │ ├── integration.test.circular.ts │ │ │ │ ├── loggers.test.circular.ts │ │ │ │ ├── loggers.test.ts │ │ │ │ ├── loggers.ts │ │ │ │ ├── metrics.test.ts │ │ │ │ ├── metrics.ts │ │ │ │ ├── qwen-logger/ │ │ │ │ │ ├── event-types.ts │ │ │ │ │ ├── qwen-logger.test.ts │ │ │ │ │ └── qwen-logger.ts │ │ │ │ ├── sdk.test.ts │ │ │ │ ├── sdk.ts │ │ │ │ ├── telemetry-utils.test.ts │ │ │ │ ├── telemetry-utils.ts │ │ │ │ ├── telemetry.test.ts │ │ │ │ ├── tool-call-decision.ts │ │ │ │ ├── types.ts │ │ │ │ ├── uiTelemetry.test.ts │ │ │ │ └── uiTelemetry.ts │ │ │ ├── test-utils/ │ │ │ │ ├── config.ts │ │ │ │ ├── index.ts │ │ │ │ ├── mock-tool.ts │ │ │ │ └── mockWorkspaceContext.ts │ │ │ ├── tools/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── shell.test.ts.snap │ │ │ │ ├── agent.test.ts │ │ │ │ ├── agent.ts │ │ │ │ ├── askUserQuestion.test.ts │ │ │ │ ├── askUserQuestion.ts │ │ │ │ ├── diffOptions.test.ts │ │ │ │ ├── diffOptions.ts │ │ │ │ ├── edit.test.ts │ │ │ │ ├── edit.ts │ │ │ │ ├── exitPlanMode.test.ts │ │ │ │ ├── exitPlanMode.ts │ │ │ │ ├── glob.test.ts │ │ │ │ ├── glob.ts │ │ │ │ ├── grep.test.ts │ │ │ │ ├── grep.ts │ │ │ │ ├── ls.test.ts │ │ │ │ ├── ls.ts │ │ │ │ ├── lsp.test.ts │ │ │ │ ├── lsp.ts │ │ │ │ ├── mcp-client-manager.test.ts │ │ │ │ ├── mcp-client-manager.ts │ │ │ │ ├── mcp-client.test.ts │ │ │ │ ├── mcp-client.ts │ │ │ │ ├── mcp-tool.test.ts │ │ │ │ ├── mcp-tool.ts │ │ │ │ ├── memoryTool.test.ts │ │ │ │ ├── memoryTool.ts │ │ │ │ ├── modifiable-tool.test.ts │ │ │ │ ├── modifiable-tool.ts │ │ │ │ ├── read-file.test.ts │ │ │ │ ├── read-file.ts │ │ │ │ ├── ripGrep.test.ts │ │ │ │ ├── ripGrep.ts │ │ │ │ ├── sdk-control-client-transport.ts │ │ │ │ ├── shell.test.ts │ │ │ │ ├── shell.ts │ │ │ │ ├── skill.test.ts │ │ │ │ ├── skill.ts │ │ │ │ ├── todoWrite.test.ts │ │ │ │ ├── todoWrite.ts │ │ │ │ ├── tool-error.ts │ │ │ │ ├── tool-names.ts │ │ │ │ ├── tool-registry.test.ts │ │ │ │ ├── tool-registry.ts │ │ │ │ ├── tools.test.ts │ │ │ │ ├── tools.ts │ │ │ │ ├── web-fetch.test.ts │ │ │ │ ├── web-fetch.ts │ │ │ │ ├── web-search/ │ │ │ │ │ ├── base-provider.ts │ │ │ │ │ ├── index.test.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── providers/ │ │ │ │ │ │ ├── dashscope-provider.ts │ │ │ │ │ │ ├── google-provider.ts │ │ │ │ │ │ └── tavily-provider.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── write-file.test.ts │ │ │ │ └── write-file.ts │ │ │ └── utils/ │ │ │ ├── LruCache.ts │ │ │ ├── asyncMessageQueue.test.ts │ │ │ ├── asyncMessageQueue.ts │ │ │ ├── atomicFileWrite.test.ts │ │ │ ├── atomicFileWrite.ts │ │ │ ├── browser.ts │ │ │ ├── configResolver.test.ts │ │ │ ├── configResolver.ts │ │ │ ├── debugLogger.test.ts │ │ │ ├── debugLogger.ts │ │ │ ├── editHelper.test.ts │ │ │ ├── editHelper.ts │ │ │ ├── editor.test.ts │ │ │ ├── editor.ts │ │ │ ├── envVarResolver.test.ts │ │ │ ├── envVarResolver.ts │ │ │ ├── environmentContext.test.ts │ │ │ ├── environmentContext.ts │ │ │ ├── errorParsing.test.ts │ │ │ ├── errorParsing.ts │ │ │ ├── errorReporting.test.ts │ │ │ ├── errorReporting.ts │ │ │ ├── errors.test.ts │ │ │ ├── errors.ts │ │ │ ├── fetch.test.ts │ │ │ ├── fetch.ts │ │ │ ├── fileUtils.test.ts │ │ │ ├── fileUtils.ts │ │ │ ├── filesearch/ │ │ │ │ ├── crawlCache.test.ts │ │ │ │ ├── crawlCache.ts │ │ │ │ ├── crawler.test.ts │ │ │ │ ├── crawler.ts │ │ │ │ ├── fileSearch.test.ts │ │ │ │ ├── fileSearch.ts │ │ │ │ ├── ignore.test.ts │ │ │ │ ├── ignore.ts │ │ │ │ ├── result-cache.test.ts │ │ │ │ └── result-cache.ts │ │ │ ├── formatters.ts │ │ │ ├── generateContentResponseUtilities.test.ts │ │ │ ├── generateContentResponseUtilities.ts │ │ │ ├── getFolderStructure.test.ts │ │ │ ├── getFolderStructure.ts │ │ │ ├── getPty.ts │ │ │ ├── gitIgnoreParser.test.ts │ │ │ ├── gitIgnoreParser.ts │ │ │ ├── gitUtils.ts │ │ │ ├── iconvHelper.ts │ │ │ ├── ignorePatterns.test.ts │ │ │ ├── ignorePatterns.ts │ │ │ ├── installationManager.test.ts │ │ │ ├── installationManager.ts │ │ │ ├── jsonl-utils.ts │ │ │ ├── language-detection.ts │ │ │ ├── memoryDiscovery.test.ts │ │ │ ├── memoryDiscovery.ts │ │ │ ├── memoryImportProcessor.test.ts │ │ │ ├── memoryImportProcessor.ts │ │ │ ├── messageInspectors.ts │ │ │ ├── nextSpeakerChecker.test.ts │ │ │ ├── nextSpeakerChecker.ts │ │ │ ├── openaiLogger.test.ts │ │ │ ├── openaiLogger.ts │ │ │ ├── partUtils.test.ts │ │ │ ├── partUtils.ts │ │ │ ├── pathReader.test.ts │ │ │ ├── pathReader.ts │ │ │ ├── paths.test.ts │ │ │ ├── paths.ts │ │ │ ├── projectSummary.ts │ │ │ ├── promptIdContext.ts │ │ │ ├── quotaErrorDetection.test.ts │ │ │ ├── quotaErrorDetection.ts │ │ │ ├── qwenIgnoreParser.test.ts │ │ │ ├── qwenIgnoreParser.ts │ │ │ ├── rateLimit.test.ts │ │ │ ├── rateLimit.ts │ │ │ ├── readManyFiles.test.ts │ │ │ ├── readManyFiles.ts │ │ │ ├── request-tokenizer/ │ │ │ │ ├── imageTokenizer.test.ts │ │ │ │ ├── imageTokenizer.ts │ │ │ │ ├── index.ts │ │ │ │ ├── requestTokenizer.test.ts │ │ │ │ ├── requestTokenizer.ts │ │ │ │ ├── supportedImageFormats.ts │ │ │ │ ├── textTokenizer.test.ts │ │ │ │ ├── textTokenizer.ts │ │ │ │ └── types.ts │ │ │ ├── retry.test.ts │ │ │ ├── retry.ts │ │ │ ├── ripgrepUtils.test.ts │ │ │ ├── ripgrepUtils.ts │ │ │ ├── runtimeFetchOptions.test.ts │ │ │ ├── runtimeFetchOptions.ts │ │ │ ├── safeJsonParse.test.ts │ │ │ ├── safeJsonParse.ts │ │ │ ├── safeJsonStringify.test.ts │ │ │ ├── safeJsonStringify.ts │ │ │ ├── schemaConverter.test.ts │ │ │ ├── schemaConverter.ts │ │ │ ├── schemaValidator.test.ts │ │ │ ├── schemaValidator.ts │ │ │ ├── secure-browser-launcher.test.ts │ │ │ ├── secure-browser-launcher.ts │ │ │ ├── shell-utils.test.ts │ │ │ ├── shell-utils.ts │ │ │ ├── shellAstParser.test.ts │ │ │ ├── shellAstParser.ts │ │ │ ├── shellReadOnlyChecker.test.ts │ │ │ ├── shellReadOnlyChecker.ts │ │ │ ├── subagentGenerator.test.ts │ │ │ ├── subagentGenerator.ts │ │ │ ├── symlink.ts │ │ │ ├── systemEncoding.test.ts │ │ │ ├── systemEncoding.ts │ │ │ ├── terminalSerializer.test.ts │ │ │ ├── terminalSerializer.ts │ │ │ ├── testUtils.ts │ │ │ ├── textUtils.test.ts │ │ │ ├── textUtils.ts │ │ │ ├── thoughtUtils.test.ts │ │ │ ├── thoughtUtils.ts │ │ │ ├── toml-to-markdown-converter.test.ts │ │ │ ├── toml-to-markdown-converter.ts │ │ │ ├── tool-utils.test.ts │ │ │ ├── tool-utils.ts │ │ │ ├── truncation.test.ts │ │ │ ├── truncation.ts │ │ │ ├── workspaceContext.test.ts │ │ │ ├── workspaceContext.ts │ │ │ ├── yaml-parser.test.ts │ │ │ └── yaml-parser.ts │ │ ├── test-setup.ts │ │ ├── tsconfig.json │ │ ├── vendor/ │ │ │ ├── ripgrep/ │ │ │ │ ├── COPYING │ │ │ │ ├── arm64-darwin/ │ │ │ │ │ └── rg │ │ │ │ ├── arm64-linux/ │ │ │ │ │ └── rg │ │ │ │ ├── x64-darwin/ │ │ │ │ │ └── rg │ │ │ │ └── x64-linux/ │ │ │ │ └── rg │ │ │ └── tree-sitter/ │ │ │ ├── tree-sitter-bash.wasm │ │ │ └── tree-sitter.wasm │ │ └── vitest.config.ts │ ├── sdk-java/ │ │ ├── client/ │ │ │ ├── .editorconfig │ │ │ ├── .gitignore │ │ │ ├── QWEN.md │ │ │ ├── README.md │ │ │ ├── checkstyle.xml │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ ├── main/ │ │ │ │ └── java/ │ │ │ │ └── com/ │ │ │ │ └── alibaba/ │ │ │ │ └── acp/ │ │ │ │ └── sdk/ │ │ │ │ ├── AcpClient.java │ │ │ │ ├── protocol/ │ │ │ │ │ ├── agent/ │ │ │ │ │ │ ├── notification/ │ │ │ │ │ │ │ ├── AgentNotification.java │ │ │ │ │ │ │ └── SessionNotification.java │ │ │ │ │ │ ├── request/ │ │ │ │ │ │ │ ├── AuthenticateRequest.java │ │ │ │ │ │ │ ├── ReadTextFileRequest.java │ │ │ │ │ │ │ ├── RequestPermissionRequest.java │ │ │ │ │ │ │ ├── WriteTextFileRequest.java │ │ │ │ │ │ │ └── terminal/ │ │ │ │ │ │ │ ├── CreateTerminalRequest.java │ │ │ │ │ │ │ ├── KillTerminalCommandRequest.java │ │ │ │ │ │ │ ├── ReleaseTerminalRequest.java │ │ │ │ │ │ │ ├── TerminalOutputRequest.java │ │ │ │ │ │ │ └── WaitForTerminalExitRequest.java │ │ │ │ │ │ └── response/ │ │ │ │ │ │ ├── AuthenticateResponse.java │ │ │ │ │ │ ├── InitializeResponse.java │ │ │ │ │ │ ├── LoadSessionResponse.java │ │ │ │ │ │ ├── NewSessionResponse.java │ │ │ │ │ │ ├── PromptResponse.java │ │ │ │ │ │ └── SetSessionModeResponse.java │ │ │ │ │ ├── client/ │ │ │ │ │ │ ├── notification/ │ │ │ │ │ │ │ ├── CancelNotification.java │ │ │ │ │ │ │ └── ClientNotification.java │ │ │ │ │ │ ├── request/ │ │ │ │ │ │ │ ├── InitializeRequest.java │ │ │ │ │ │ │ ├── LoadSessionRequest.java │ │ │ │ │ │ │ ├── NewSessionRequest.java │ │ │ │ │ │ │ ├── PromptRequest.java │ │ │ │ │ │ │ └── SetSessionModeRequest.java │ │ │ │ │ │ └── response/ │ │ │ │ │ │ ├── ReadTextFileResponse.java │ │ │ │ │ │ ├── RequestPermissionResponse.java │ │ │ │ │ │ ├── WriteTextFileResponse.java │ │ │ │ │ │ └── terminal/ │ │ │ │ │ │ ├── CreateTerminalResponse.java │ │ │ │ │ │ ├── KillTerminalCommandResponse.java │ │ │ │ │ │ ├── ReleaseTerminalResponse.java │ │ │ │ │ │ ├── TerminalOutputResponse.java │ │ │ │ │ │ └── WaitForTerminalExitResponse.java │ │ │ │ │ ├── domain/ │ │ │ │ │ │ ├── agent/ │ │ │ │ │ │ │ ├── AgentCapabilities.java │ │ │ │ │ │ │ ├── AgentInfo.java │ │ │ │ │ │ │ └── AuthMethod.java │ │ │ │ │ │ ├── client/ │ │ │ │ │ │ │ ├── ClientCapabilities.java │ │ │ │ │ │ │ └── ClientInfo.java │ │ │ │ │ │ ├── content/ │ │ │ │ │ │ │ ├── Diff.java │ │ │ │ │ │ │ ├── ToolCallContent.java │ │ │ │ │ │ │ ├── block/ │ │ │ │ │ │ │ │ ├── Annotations.java │ │ │ │ │ │ │ │ ├── AudioContent.java │ │ │ │ │ │ │ │ ├── ContentBlock.java │ │ │ │ │ │ │ │ ├── ImageContent.java │ │ │ │ │ │ │ │ ├── ResourceLink.java │ │ │ │ │ │ │ │ └── TextContent.java │ │ │ │ │ │ │ └── embedded/ │ │ │ │ │ │ │ ├── BlobResourceContents.java │ │ │ │ │ │ │ ├── EmbeddedResource.java │ │ │ │ │ │ │ ├── ResourceContent.java │ │ │ │ │ │ │ ├── ResourceContentDeserializer.java │ │ │ │ │ │ │ └── TextResourceContents.java │ │ │ │ │ │ ├── mcp/ │ │ │ │ │ │ │ ├── HttpHeader.java │ │ │ │ │ │ │ └── McpServer.java │ │ │ │ │ │ ├── permission/ │ │ │ │ │ │ │ ├── PermissionOption.java │ │ │ │ │ │ │ ├── PermissionOptionKind.java │ │ │ │ │ │ │ ├── PermissionOutcomeKind.java │ │ │ │ │ │ │ └── RequestPermissionOutcome.java │ │ │ │ │ │ ├── plan/ │ │ │ │ │ │ │ ├── Plan.java │ │ │ │ │ │ │ ├── PlanEntry.java │ │ │ │ │ │ │ ├── PlanEntryPriority.java │ │ │ │ │ │ │ └── PlanEntryStatus.java │ │ │ │ │ │ ├── session/ │ │ │ │ │ │ │ ├── SessionMode.java │ │ │ │ │ │ │ ├── SessionModeState.java │ │ │ │ │ │ │ ├── StopReason.java │ │ │ │ │ │ │ └── update/ │ │ │ │ │ │ │ ├── AgentMessageChunkSessionUpdate.java │ │ │ │ │ │ │ ├── AvailableCommand.java │ │ │ │ │ │ │ ├── AvailableCommandsUpdateSessionUpdate.java │ │ │ │ │ │ │ ├── CurrentModeUpdateSessionUpdate.java │ │ │ │ │ │ │ ├── PlanSessionUpdate.java │ │ │ │ │ │ │ ├── SessionUpdate.java │ │ │ │ │ │ │ ├── ToolCallSessionUpdate.java │ │ │ │ │ │ │ ├── ToolCallUpdateSessionUpdate.java │ │ │ │ │ │ │ └── UnstructuredCommandInput.java │ │ │ │ │ │ ├── terminal/ │ │ │ │ │ │ │ └── EnvVariable.java │ │ │ │ │ │ └── tool/ │ │ │ │ │ │ ├── ToolCallLocation.java │ │ │ │ │ │ ├── ToolCallStatus.java │ │ │ │ │ │ ├── ToolCallUpdate.java │ │ │ │ │ │ └── ToolKind.java │ │ │ │ │ ├── jsonrpc/ │ │ │ │ │ │ ├── Error.java │ │ │ │ │ │ ├── ExtNotification.java │ │ │ │ │ │ ├── ExtRequest.java │ │ │ │ │ │ ├── ExtResponse.java │ │ │ │ │ │ ├── Message.java │ │ │ │ │ │ ├── Meta.java │ │ │ │ │ │ ├── MethodMessage.java │ │ │ │ │ │ ├── Request.java │ │ │ │ │ │ └── Response.java │ │ │ │ │ └── schema.json │ │ │ │ ├── session/ │ │ │ │ │ ├── Session.java │ │ │ │ │ ├── event/ │ │ │ │ │ │ └── consumer/ │ │ │ │ │ │ ├── AgentEventConsumer.java │ │ │ │ │ │ ├── ContentEventConsumer.java │ │ │ │ │ │ ├── ContentEventSimpleConsumer.java │ │ │ │ │ │ ├── FileEventConsumer.java │ │ │ │ │ │ ├── FileEventSimpleConsumer.java │ │ │ │ │ │ ├── PermissionEventConsumer.java │ │ │ │ │ │ ├── PromptEndEventConsumer.java │ │ │ │ │ │ ├── TerminalEventConsumer.java │ │ │ │ │ │ └── exception/ │ │ │ │ │ │ └── EventConsumeException.java │ │ │ │ │ └── exception/ │ │ │ │ │ ├── SessionLoadException.java │ │ │ │ │ └── SessionNewException.java │ │ │ │ ├── transport/ │ │ │ │ │ ├── Transport.java │ │ │ │ │ └── process/ │ │ │ │ │ ├── ProcessTransport.java │ │ │ │ │ └── ProcessTransportOptions.java │ │ │ │ └── utils/ │ │ │ │ ├── AgentInitializeException.java │ │ │ │ ├── MyConcurrentUtils.java │ │ │ │ ├── ThreadPoolConfig.java │ │ │ │ ├── Timeout.java │ │ │ │ └── TransportUtils.java │ │ │ └── test/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── alibaba/ │ │ │ │ └── acp/ │ │ │ │ └── sdk/ │ │ │ │ ├── protocol/ │ │ │ │ │ └── client/ │ │ │ │ │ └── session/ │ │ │ │ │ ├── PermissionOptionKindTest.java │ │ │ │ │ ├── PlanEntryPriorityTest.java │ │ │ │ │ ├── PlanEntryStatusTest.java │ │ │ │ │ ├── StopReasonTest.java │ │ │ │ │ ├── ToolCallStatusTest.java │ │ │ │ │ └── ToolKindTest.java │ │ │ │ ├── session/ │ │ │ │ │ └── SessionTest.java │ │ │ │ └── test/ │ │ │ │ └── EnumTest.java │ │ │ └── resources/ │ │ │ └── schema/ │ │ │ └── schema.json │ │ └── qwencode/ │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── LICENSE │ │ ├── QWEN.md │ │ ├── README.md │ │ ├── RELEASE.md │ │ ├── checkstyle.xml │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── qwen/ │ │ │ └── code/ │ │ │ └── cli/ │ │ │ ├── QwenCodeCli.java │ │ │ ├── protocol/ │ │ │ │ ├── data/ │ │ │ │ │ ├── AssistantContent.java │ │ │ │ │ ├── AssistantUsage.java │ │ │ │ │ ├── CLIPermissionDenial.java │ │ │ │ │ ├── Capabilities.java │ │ │ │ │ ├── ExtendedUsage.java │ │ │ │ │ ├── InitializeConfig.java │ │ │ │ │ ├── ModelUsage.java │ │ │ │ │ ├── PermissionMode.java │ │ │ │ │ ├── Usage.java │ │ │ │ │ └── behavior/ │ │ │ │ │ ├── Allow.java │ │ │ │ │ ├── Behavior.java │ │ │ │ │ └── Deny.java │ │ │ │ ├── message/ │ │ │ │ │ ├── Message.java │ │ │ │ │ ├── MessageBase.java │ │ │ │ │ ├── SDKResultMessage.java │ │ │ │ │ ├── SDKSystemMessage.java │ │ │ │ │ ├── SDKUserMessage.java │ │ │ │ │ ├── assistant/ │ │ │ │ │ │ ├── APIAssistantMessage.java │ │ │ │ │ │ ├── SDKAssistantMessage.java │ │ │ │ │ │ ├── SDKPartialAssistantMessage.java │ │ │ │ │ │ ├── block/ │ │ │ │ │ │ │ ├── Annotation.java │ │ │ │ │ │ │ ├── ContentBlock.java │ │ │ │ │ │ │ ├── TextBlock.java │ │ │ │ │ │ │ ├── ThinkingBlock.java │ │ │ │ │ │ │ ├── ToolResultBlock.java │ │ │ │ │ │ │ └── ToolUseBlock.java │ │ │ │ │ │ └── event/ │ │ │ │ │ │ ├── ContentBlockDeltaEvent.java │ │ │ │ │ │ ├── ContentBlockStartEvent.java │ │ │ │ │ │ ├── ContentBlockStopEvent.java │ │ │ │ │ │ ├── MessageStartStreamEvent.java │ │ │ │ │ │ ├── MessageStopStreamEvent.java │ │ │ │ │ │ └── StreamEvent.java │ │ │ │ │ └── control/ │ │ │ │ │ ├── CLIControlRequest.java │ │ │ │ │ ├── CLIControlResponse.java │ │ │ │ │ └── payload/ │ │ │ │ │ ├── CLIControlInitializeRequest.java │ │ │ │ │ ├── CLIControlInitializeResponse.java │ │ │ │ │ ├── CLIControlInterruptRequest.java │ │ │ │ │ ├── CLIControlPermissionRequest.java │ │ │ │ │ ├── CLIControlPermissionResponse.java │ │ │ │ │ ├── CLIControlSetModelRequest.java │ │ │ │ │ ├── CLIControlSetModelResponse.java │ │ │ │ │ ├── CLIControlSetPermissionModeRequest.java │ │ │ │ │ ├── ControlRequestPayload.java │ │ │ │ │ └── ControlResponsePayload.java │ │ │ │ └── protocol.ts │ │ │ ├── session/ │ │ │ │ ├── Session.java │ │ │ │ ├── event/ │ │ │ │ │ └── consumers/ │ │ │ │ │ ├── AssistantContentConsumers.java │ │ │ │ │ ├── AssistantContentSimpleConsumers.java │ │ │ │ │ ├── SessionEventConsumers.java │ │ │ │ │ └── SessionEventSimpleConsumers.java │ │ │ │ └── exception/ │ │ │ │ ├── SessionControlException.java │ │ │ │ └── SessionSendPromptException.java │ │ │ ├── transport/ │ │ │ │ ├── Transport.java │ │ │ │ ├── TransportOptions.java │ │ │ │ └── process/ │ │ │ │ ├── ProcessTransport.java │ │ │ │ └── TransportOptionsAdapter.java │ │ │ └── utils/ │ │ │ ├── MyConcurrentUtils.java │ │ │ ├── ThreadPoolConfig.java │ │ │ └── Timeout.java │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── qwen/ │ │ └── code/ │ │ └── cli/ │ │ ├── QwenCodeCliTest.java │ │ ├── example/ │ │ │ ├── QuickStartExample.java │ │ │ ├── SessionExample.java │ │ │ └── ThreadPoolConfigurationExample.java │ │ ├── session/ │ │ │ └── SessionTest.java │ │ └── transport/ │ │ ├── PermissionModeTest.java │ │ └── process/ │ │ └── ProcessTransportTest.java │ ├── sdk-typescript/ │ │ ├── README.md │ │ ├── package.json │ │ ├── scripts/ │ │ │ ├── build.js │ │ │ ├── bundle-cli-from-npm.js │ │ │ ├── bundle-cli.js │ │ │ └── get-release-version.js │ │ ├── src/ │ │ │ ├── index.ts │ │ │ ├── mcp/ │ │ │ │ ├── SdkControlServerTransport.ts │ │ │ │ ├── createSdkMcpServer.ts │ │ │ │ ├── formatters.ts │ │ │ │ └── tool.ts │ │ │ ├── query/ │ │ │ │ ├── Query.ts │ │ │ │ └── createQuery.ts │ │ │ ├── transport/ │ │ │ │ ├── ProcessTransport.ts │ │ │ │ └── Transport.ts │ │ │ ├── types/ │ │ │ │ ├── errors.ts │ │ │ │ ├── protocol.ts │ │ │ │ ├── queryOptionsSchema.ts │ │ │ │ └── types.ts │ │ │ └── utils/ │ │ │ ├── Stream.ts │ │ │ ├── cliPath.ts │ │ │ ├── jsonLines.ts │ │ │ ├── logger.ts │ │ │ └── validation.ts │ │ ├── test/ │ │ │ └── unit/ │ │ │ ├── ProcessTransport.test.ts │ │ │ ├── Query.test.ts │ │ │ ├── Stream.test.ts │ │ │ ├── cliPath.test.ts │ │ │ ├── createQuery.test.ts │ │ │ └── createSdkMcpServer.test.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── test-utils/ │ │ ├── index.ts │ │ ├── package.json │ │ ├── src/ │ │ │ ├── file-system-test-helpers.ts │ │ │ └── index.ts │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── vscode-ide-companion/ │ │ ├── .vscode/ │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ ├── .vscodeignore │ │ ├── LICENSE │ │ ├── NOTICES.txt │ │ ├── README.md │ │ ├── development.md │ │ ├── esbuild.js │ │ ├── eslint.config.mjs │ │ ├── package.json │ │ ├── postcss.config.js │ │ ├── schemas/ │ │ │ └── settings.schema.json │ │ ├── scripts/ │ │ │ ├── copy-bundled-cli.js │ │ │ ├── generate-notices.js │ │ │ └── prepackage.js │ │ ├── src/ │ │ │ ├── commands/ │ │ │ │ ├── index.test.ts │ │ │ │ └── index.ts │ │ │ ├── constants/ │ │ │ │ ├── acpSchema.ts │ │ │ │ ├── loadingMessages.ts │ │ │ │ └── viewIds.ts │ │ │ ├── diff-manager.ts │ │ │ ├── extension.test.ts │ │ │ ├── extension.ts │ │ │ ├── ide-server.test.ts │ │ │ ├── ide-server.ts │ │ │ ├── open-files-manager.test.ts │ │ │ ├── open-files-manager.ts │ │ │ ├── package.test.ts │ │ │ ├── services/ │ │ │ │ ├── acpConnection.test.ts │ │ │ │ ├── acpConnection.ts │ │ │ │ ├── acpFileHandler.test.ts │ │ │ │ ├── acpFileHandler.ts │ │ │ │ ├── conversationStore.ts │ │ │ │ ├── open-files-manager/ │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── notebook-handler.ts │ │ │ │ │ ├── text-handler.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── qwenAgentManager.test.ts │ │ │ │ ├── qwenAgentManager.ts │ │ │ │ ├── qwenConnectionHandler.test.ts │ │ │ │ ├── qwenConnectionHandler.ts │ │ │ │ ├── qwenSessionManager.ts │ │ │ │ ├── qwenSessionReader.ts │ │ │ │ ├── qwenSessionUpdateHandler.test.ts │ │ │ │ ├── qwenSessionUpdateHandler.ts │ │ │ │ └── readonlyFileSystemProvider.ts │ │ │ ├── types/ │ │ │ │ ├── acpTypes.ts │ │ │ │ ├── approvalModeTypes.ts │ │ │ │ ├── approvalModeValueTypes.ts │ │ │ │ ├── chatTypes.ts │ │ │ │ ├── completionItemTypes.ts │ │ │ │ ├── connectionTypes.ts │ │ │ │ └── webviewMessageTypes.ts │ │ │ ├── utils/ │ │ │ │ ├── acpModelInfo.test.ts │ │ │ │ ├── acpModelInfo.ts │ │ │ │ ├── authErrors.ts │ │ │ │ ├── authNotificationHandler.ts │ │ │ │ ├── editorGroupUtils.ts │ │ │ │ ├── errorMessage.test.ts │ │ │ │ ├── errorMessage.ts │ │ │ │ ├── imageSupport.ts │ │ │ │ ├── logger.ts │ │ │ │ └── platform.ts │ │ │ └── webview/ │ │ │ ├── App.tsx │ │ │ ├── components/ │ │ │ │ ├── layout/ │ │ │ │ │ ├── InputForm.test.tsx │ │ │ │ │ ├── InputForm.tsx │ │ │ │ │ ├── ModelSelector.tsx │ │ │ │ │ └── Onboarding.tsx │ │ │ │ └── messages/ │ │ │ │ └── toolcalls/ │ │ │ │ ├── ToolCall.tsx │ │ │ │ └── index.tsx │ │ │ ├── context/ │ │ │ │ └── VSCodePlatformProvider.tsx │ │ │ ├── handlers/ │ │ │ │ ├── AuthMessageHandler.ts │ │ │ │ ├── BaseMessageHandler.ts │ │ │ │ ├── EditorMessageHandler.ts │ │ │ │ ├── FileMessageHandler.test.ts │ │ │ │ ├── FileMessageHandler.ts │ │ │ │ ├── MessageRouter.ts │ │ │ │ ├── SessionMessageHandler.test.ts │ │ │ │ └── SessionMessageHandler.ts │ │ │ ├── hooks/ │ │ │ │ ├── file/ │ │ │ │ │ └── useFileContext.ts │ │ │ │ ├── message/ │ │ │ │ │ └── useMessageHandling.ts │ │ │ │ ├── session/ │ │ │ │ │ └── useSessionManagement.ts │ │ │ │ ├── useCompletionTrigger.ts │ │ │ │ ├── useImage.test.ts │ │ │ │ ├── useImage.ts │ │ │ │ ├── useMessageSubmit.ts │ │ │ │ ├── useToolCalls.ts │ │ │ │ ├── useVSCode.ts │ │ │ │ └── useWebViewMessages.ts │ │ │ ├── index.tsx │ │ │ ├── providers/ │ │ │ │ ├── ChatProviderRegistry.test.ts │ │ │ │ ├── ChatProviderRegistry.ts │ │ │ │ ├── ChatWebviewViewProvider.test.ts │ │ │ │ ├── ChatWebviewViewProvider.ts │ │ │ │ ├── MessageHandler.ts │ │ │ │ ├── PanelManager.ts │ │ │ │ ├── WebViewContent.test.ts │ │ │ │ ├── WebViewContent.ts │ │ │ │ ├── WebViewProvider.test.ts │ │ │ │ ├── WebViewProvider.ts │ │ │ │ ├── chatViewRegistration.test.ts │ │ │ │ └── chatViewRegistration.ts │ │ │ ├── styles/ │ │ │ │ ├── App.css │ │ │ │ └── tailwind.css │ │ │ └── utils/ │ │ │ ├── diffStats.ts │ │ │ ├── diffUtils.ts │ │ │ ├── imageHandler.test.ts │ │ │ ├── imageHandler.ts │ │ │ ├── resourceUrl.ts │ │ │ ├── sessionGrouping.ts │ │ │ ├── utils.test.ts │ │ │ ├── utils.ts │ │ │ └── webviewUtils.ts │ │ ├── tailwind.config.js │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── web-templates/ │ │ ├── build.mjs │ │ ├── package.json │ │ ├── src/ │ │ │ ├── export-html/ │ │ │ │ ├── build.mjs │ │ │ │ ├── esbuild.config.mjs │ │ │ │ ├── package.json │ │ │ │ ├── src/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── CopyButton.tsx │ │ │ │ │ │ ├── MetadataItem.tsx │ │ │ │ │ │ ├── MetadataSidebar.tsx │ │ │ │ │ │ ├── TempFileModal.css │ │ │ │ │ │ ├── TempFileModal.tsx │ │ │ │ │ │ ├── hooks.ts │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ └── utils.ts │ │ │ │ │ ├── index.html │ │ │ │ │ ├── main.tsx │ │ │ │ │ ├── styles.css │ │ │ │ │ └── types.d.ts │ │ │ │ └── tsconfig.json │ │ │ ├── index.ts │ │ │ └── insight/ │ │ │ ├── build.mjs │ │ │ ├── index.html │ │ │ ├── package.json │ │ │ ├── postcss.config.js │ │ │ ├── src/ │ │ │ │ ├── App.tsx │ │ │ │ ├── Charts.tsx │ │ │ │ ├── Components.tsx │ │ │ │ ├── Header.tsx │ │ │ │ ├── Qualitative.tsx │ │ │ │ ├── ShareCard.tsx │ │ │ │ ├── dev.tsx │ │ │ │ ├── styles.css │ │ │ │ └── types.ts │ │ │ ├── tailwind.config.js │ │ │ ├── tsconfig.json │ │ │ └── vite.config.mjs │ │ └── tsconfig.json │ ├── webui/ │ │ ├── .npmignore │ │ ├── .storybook/ │ │ │ ├── main.ts │ │ │ ├── preview.css │ │ │ └── preview.ts │ │ ├── README.md │ │ ├── docs/ │ │ │ └── WEBUI_MIGRATION_PLAN_EN.md │ │ ├── examples/ │ │ │ ├── README.md │ │ │ ├── cdn-usage-demo.html │ │ │ └── complex-chat-demo.html │ │ ├── package.json │ │ ├── postcss.config.cjs │ │ ├── scripts/ │ │ │ └── add-license-header.sh │ │ ├── src/ │ │ │ ├── adapters/ │ │ │ │ ├── ACPAdapter.ts │ │ │ │ ├── JSONLAdapter.ts │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ ├── components/ │ │ │ │ ├── ChatViewer/ │ │ │ │ │ ├── ChatViewer.css │ │ │ │ │ ├── ChatViewer.stories.tsx │ │ │ │ │ ├── ChatViewer.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── PermissionDrawer.css │ │ │ │ ├── PermissionDrawer.stories.tsx │ │ │ │ ├── PermissionDrawer.tsx │ │ │ │ ├── WebviewContainer.tsx │ │ │ │ ├── icons/ │ │ │ │ │ ├── CloseIcon.tsx │ │ │ │ │ ├── EditIcons.tsx │ │ │ │ │ ├── FileIcons.tsx │ │ │ │ │ ├── Icon.tsx │ │ │ │ │ ├── NavigationIcons.tsx │ │ │ │ │ ├── SendIcon.tsx │ │ │ │ │ ├── SpecialIcons.tsx │ │ │ │ │ ├── StatusIcons.tsx │ │ │ │ │ ├── StopIcon.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── layout/ │ │ │ │ │ ├── ChatHeader.stories.tsx │ │ │ │ │ ├── ChatHeader.tsx │ │ │ │ │ ├── CompletionMenu.stories.tsx │ │ │ │ │ ├── CompletionMenu.tsx │ │ │ │ │ ├── Container.tsx │ │ │ │ │ ├── ContextIndicator.stories.tsx │ │ │ │ │ ├── ContextIndicator.tsx │ │ │ │ │ ├── EmptyState.stories.tsx │ │ │ │ │ ├── EmptyState.tsx │ │ │ │ │ ├── FileLink.tsx │ │ │ │ │ ├── Footer.tsx │ │ │ │ │ ├── Header.tsx │ │ │ │ │ ├── InputForm.stories.tsx │ │ │ │ │ ├── InputForm.tsx │ │ │ │ │ ├── Main.tsx │ │ │ │ │ ├── Onboarding.stories.tsx │ │ │ │ │ ├── Onboarding.tsx │ │ │ │ │ ├── SessionSelector.stories.tsx │ │ │ │ │ ├── SessionSelector.tsx │ │ │ │ │ └── Sidebar.tsx │ │ │ │ ├── messages/ │ │ │ │ │ ├── AskUserQuestionDialog.tsx │ │ │ │ │ ├── Assistant/ │ │ │ │ │ │ ├── AssistantMessage.css │ │ │ │ │ │ ├── AssistantMessage.stories.tsx │ │ │ │ │ │ ├── AssistantMessage.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── CollapsibleFileContent.tsx │ │ │ │ │ ├── ImageComponents.tsx │ │ │ │ │ ├── MarkdownRenderer/ │ │ │ │ │ │ ├── MarkdownRenderer.css │ │ │ │ │ │ ├── MarkdownRenderer.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── Message.tsx │ │ │ │ │ ├── MessageContent.tsx │ │ │ │ │ ├── MessageInput.tsx │ │ │ │ │ ├── MessageList.tsx │ │ │ │ │ ├── ThinkingMessage.css │ │ │ │ │ ├── ThinkingMessage.stories.tsx │ │ │ │ │ ├── ThinkingMessage.tsx │ │ │ │ │ ├── UserMessage.stories.tsx │ │ │ │ │ ├── UserMessage.tsx │ │ │ │ │ └── Waiting/ │ │ │ │ │ ├── InterruptedMessage.tsx │ │ │ │ │ └── WaitingMessage.tsx │ │ │ │ ├── toolcalls/ │ │ │ │ │ ├── CheckboxDisplay.stories.tsx │ │ │ │ │ ├── CheckboxDisplay.tsx │ │ │ │ │ ├── EditToolCall.stories.tsx │ │ │ │ │ ├── EditToolCall.tsx │ │ │ │ │ ├── GenericToolCall.stories.tsx │ │ │ │ │ ├── GenericToolCall.tsx │ │ │ │ │ ├── ReadToolCall.stories.tsx │ │ │ │ │ ├── ReadToolCall.tsx │ │ │ │ │ ├── SaveMemoryToolCall.tsx │ │ │ │ │ ├── SearchToolCall.stories.tsx │ │ │ │ │ ├── SearchToolCall.tsx │ │ │ │ │ ├── ShellToolCall.css │ │ │ │ │ ├── ShellToolCall.stories.tsx │ │ │ │ │ ├── ShellToolCall.tsx │ │ │ │ │ ├── ThinkToolCall.stories.tsx │ │ │ │ │ ├── ThinkToolCall.tsx │ │ │ │ │ ├── UpdatedPlanToolCall.stories.tsx │ │ │ │ │ ├── UpdatedPlanToolCall.tsx │ │ │ │ │ ├── WebFetchToolCall.tsx │ │ │ │ │ ├── WriteToolCall.stories.tsx │ │ │ │ │ ├── WriteToolCall.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ └── shared/ │ │ │ │ │ ├── CodeBlock.stories.tsx │ │ │ │ │ ├── CopyButton.stories.tsx │ │ │ │ │ ├── LayoutComponents.css │ │ │ │ │ ├── LayoutComponents.tsx │ │ │ │ │ ├── LocationsList.stories.tsx │ │ │ │ │ ├── StatusIndicator.stories.tsx │ │ │ │ │ ├── ToolCallCard.stories.tsx │ │ │ │ │ ├── ToolCallContainer.stories.tsx │ │ │ │ │ ├── copyUtils.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── utils.ts │ │ │ │ └── ui/ │ │ │ │ ├── Button.stories.tsx │ │ │ │ ├── Button.tsx │ │ │ │ ├── Input.tsx │ │ │ │ ├── Tooltip.stories.tsx │ │ │ │ └── Tooltip.tsx │ │ │ ├── context/ │ │ │ │ └── PlatformContext.tsx │ │ │ ├── hooks/ │ │ │ │ ├── useLocalStorage.ts │ │ │ │ └── useTheme.ts │ │ │ ├── index.ts │ │ │ ├── styles/ │ │ │ │ ├── components.css │ │ │ │ ├── timeline.css │ │ │ │ └── variables.css │ │ │ ├── types/ │ │ │ │ ├── chat.ts │ │ │ │ ├── completion.ts │ │ │ │ ├── messages.ts │ │ │ │ ├── theme.ts │ │ │ │ └── toolCall.ts │ │ │ └── utils/ │ │ │ └── sessionGrouping.ts │ │ ├── tailwind.config.cjs │ │ ├── tailwind.preset.cjs │ │ ├── tsconfig.json │ │ └── vite.config.ts │ └── zed-extension/ │ ├── LICENSE │ ├── README.md │ └── extension.toml ├── scripts/ │ ├── build.js │ ├── build_package.js │ ├── build_sandbox.js │ ├── build_vscode_companion.js │ ├── check-build-status.js │ ├── check-i18n.ts │ ├── check-lockfile.js │ ├── clean.js │ ├── copy_bundle_assets.js │ ├── copy_files.js │ ├── create_alias.sh │ ├── dev.js │ ├── esbuild-shims.js │ ├── generate-git-commit-info.js │ ├── generate-settings-schema.ts │ ├── get-release-version.js │ ├── installation/ │ │ ├── INSTALLATION_GUIDE.md │ │ ├── install-qwen-with-source.bat │ │ └── install-qwen-with-source.sh │ ├── lint.js │ ├── local_telemetry.js │ ├── pre-commit.js │ ├── prepare-package.js │ ├── sandbox_command.js │ ├── start.js │ ├── telemetry.js │ ├── telemetry_gcp.js │ ├── telemetry_utils.js │ ├── test-windows-paths.js │ ├── tests/ │ │ ├── get-release-version.test.js │ │ ├── test-setup.ts │ │ └── vitest.config.ts │ ├── unused-keys-only-in-locales.json │ └── version.js ├── tsconfig.json └── vitest.config.ts