gitextract_3lf9y2ue/ ├── .allstar/ │ └── branch_protection.yaml ├── .editorconfig ├── .gcp/ │ ├── Dockerfile.gemini-code-builder │ └── release-docker.yml ├── .gemini/ │ ├── config.yaml │ └── settings.json ├── .geminiignore ├── .gitattributes ├── .github/ │ ├── CODEOWNERS │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ ├── feature_request.yml │ │ └── website_issue.yml │ ├── actions/ │ │ ├── calculate-vars/ │ │ │ └── action.yml │ │ ├── create-pull-request/ │ │ │ └── action.yml │ │ ├── npm-auth-token/ │ │ │ └── action.yml │ │ ├── post-coverage-comment/ │ │ │ └── action.yml │ │ ├── publish-release/ │ │ │ └── action.yml │ │ ├── push-docker/ │ │ │ └── action.yml │ │ ├── push-sandbox/ │ │ │ └── action.yml │ │ ├── run-tests/ │ │ │ └── action.yml │ │ ├── setup-npmrc/ │ │ │ └── action.yml │ │ ├── tag-npm-release/ │ │ │ └── action.yml │ │ └── verify-release/ │ │ └── action.yml │ ├── dependabot.yml │ ├── pull_request_template.md │ ├── scripts/ │ │ ├── backfill-need-triage.cjs │ │ ├── backfill-pr-notification.cjs │ │ ├── pr-triage.sh │ │ └── sync-maintainer-labels.cjs │ └── workflows/ │ ├── chained_e2e.yml │ ├── ci.yml │ ├── community-report.yml │ ├── deflake.yml │ ├── docs-page-action.yml │ ├── docs-rebuild.yml │ ├── eval.yml │ ├── evals-nightly.yml │ ├── gemini-automated-issue-dedup.yml │ ├── gemini-automated-issue-triage.yml │ ├── gemini-scheduled-issue-dedup.yml │ ├── gemini-scheduled-issue-triage.yml │ ├── gemini-scheduled-pr-triage.yml │ ├── gemini-scheduled-stale-issue-closer.yml │ ├── gemini-scheduled-stale-pr-closer.yml │ ├── gemini-self-assign-issue.yml │ ├── issue-opened-labeler.yml │ ├── label-backlog-child-issues.yml │ ├── label-workstream-rollup.yml │ ├── links.yml │ ├── no-response.yml │ ├── pr-contribution-guidelines-notifier.yml │ ├── pr-rate-limiter.yaml │ ├── release-change-tags.yml │ ├── release-manual.yml │ ├── release-nightly.yml │ ├── release-notes.yml │ ├── release-patch-0-from-comment.yml │ ├── release-patch-1-create-pr.yml │ ├── release-patch-2-trigger.yml │ ├── release-patch-3-release.yml │ ├── release-promote.yml │ ├── release-rollback.yml │ ├── release-sandbox.yml │ ├── smoke-test.yml │ ├── stale.yml │ ├── test-build-binary.yml │ ├── trigger_e2e.yml │ ├── unassign-inactive-assignees.yml │ └── verify-release.yml ├── .gitignore ├── .husky/ │ └── pre-commit ├── .lycheeignore ├── .npmrc ├── .nvmrc ├── .prettierignore ├── .prettierrc.json ├── .vscode/ │ ├── extensions.json │ ├── launch.json │ ├── settings.json │ └── tasks.json ├── .yamllint.yml ├── CONTRIBUTING.md ├── Dockerfile ├── GEMINI.md ├── LICENSE ├── Makefile ├── README.md ├── ROADMAP.md ├── SECURITY.md ├── docs/ │ ├── admin/ │ │ └── enterprise-controls.md │ ├── changelogs/ │ │ ├── index.md │ │ ├── latest.md │ │ └── preview.md │ ├── cli/ │ │ ├── checkpointing.md │ │ ├── cli-reference.md │ │ ├── creating-skills.md │ │ ├── custom-commands.md │ │ ├── enterprise.md │ │ ├── gemini-ignore.md │ │ ├── gemini-md.md │ │ ├── generation-settings.md │ │ ├── headless.md │ │ ├── model-routing.md │ │ ├── model-steering.md │ │ ├── model.md │ │ ├── notifications.md │ │ ├── plan-mode.md │ │ ├── rewind.md │ │ ├── sandbox.md │ │ ├── session-management.md │ │ ├── settings.md │ │ ├── skills.md │ │ ├── system-prompt.md │ │ ├── telemetry.md │ │ ├── themes.md │ │ ├── token-caching.md │ │ ├── trusted-folders.md │ │ └── tutorials/ │ │ ├── automation.md │ │ ├── file-management.md │ │ ├── mcp-setup.md │ │ ├── memory-management.md │ │ ├── plan-mode-steering.md │ │ ├── session-management.md │ │ ├── shell-commands.md │ │ ├── skills-getting-started.md │ │ ├── task-planning.md │ │ └── web-tools.md │ ├── core/ │ │ ├── index.md │ │ ├── local-model-routing.md │ │ ├── remote-agents.md │ │ └── subagents.md │ ├── examples/ │ │ └── proxy-script.md │ ├── extensions/ │ │ ├── best-practices.md │ │ ├── index.md │ │ ├── reference.md │ │ ├── releasing.md │ │ └── writing-extensions.md │ ├── get-started/ │ │ ├── authentication.md │ │ ├── examples.md │ │ ├── gemini-3.md │ │ ├── index.md │ │ └── installation.md │ ├── hooks/ │ │ ├── best-practices.md │ │ ├── index.md │ │ ├── reference.md │ │ └── writing-hooks.md │ ├── ide-integration/ │ │ ├── ide-companion-spec.md │ │ └── index.md │ ├── index.md │ ├── integration-tests.md │ ├── issue-and-pr-automation.md │ ├── local-development.md │ ├── mermaid/ │ │ ├── context.mmd │ │ └── render-path.mmd │ ├── npm.md │ ├── redirects.json │ ├── reference/ │ │ ├── commands.md │ │ ├── configuration.md │ │ ├── keyboard-shortcuts.md │ │ ├── memport.md │ │ ├── policy-engine.md │ │ └── tools.md │ ├── release-confidence.md │ ├── releases.md │ ├── resources/ │ │ ├── faq.md │ │ ├── quota-and-pricing.md │ │ ├── tos-privacy.md │ │ ├── troubleshooting.md │ │ └── uninstall.md │ ├── sidebar.json │ └── tools/ │ ├── activate-skill.md │ ├── ask-user.md │ ├── file-system.md │ ├── internal-docs.md │ ├── mcp-server.md │ ├── memory.md │ ├── planning.md │ ├── shell.md │ ├── todos.md │ ├── web-fetch.md │ └── web-search.md ├── esbuild.config.js ├── eslint.config.js ├── evals/ │ ├── README.md │ ├── answer-vs-act.eval.ts │ ├── app-test-helper.ts │ ├── ask_user.eval.ts │ ├── automated-tool-use.eval.ts │ ├── concurrency-safety.eval.ts │ ├── edit-locations-eval.eval.ts │ ├── frugalReads.eval.ts │ ├── frugalSearch.eval.ts │ ├── generalist_agent.eval.ts │ ├── generalist_delegation.eval.ts │ ├── gitRepo.eval.ts │ ├── grep_search_functionality.eval.ts │ ├── hierarchical_memory.eval.ts │ ├── interactive-hang.eval.ts │ ├── model_steering.eval.ts │ ├── plan_mode.eval.ts │ ├── save_memory.eval.ts │ ├── shell-efficiency.eval.ts │ ├── subagents.eval.ts │ ├── test-helper.ts │ ├── tool_output_masking.eval.ts │ ├── tracker.eval.ts │ ├── validation_fidelity.eval.ts │ ├── validation_fidelity_pre_existing_errors.eval.ts │ └── vitest.config.ts ├── integration-tests/ │ ├── acp-env-auth.test.ts │ ├── acp-telemetry.test.ts │ ├── api-resilience.responses │ ├── api-resilience.test.ts │ ├── browser-agent.cleanup.responses │ ├── browser-agent.confirmation.responses │ ├── browser-agent.interaction.responses │ ├── browser-agent.navigate-snapshot.responses │ ├── browser-agent.screenshot.responses │ ├── browser-agent.sequential.responses │ ├── browser-agent.test.ts │ ├── browser-policy.responses │ ├── browser-policy.test.ts │ ├── checkpointing.test.ts │ ├── clipboard-linux.test.ts │ ├── concurrency-limit.responses │ ├── concurrency-limit.test.ts │ ├── context-compress-interactive.compress-empty.responses │ ├── context-compress-interactive.compress-failure.responses │ ├── context-compress-interactive.compress.responses │ ├── context-compress-interactive.test.ts │ ├── ctrl-c-exit.test.ts │ ├── deprecation-warnings.test.ts │ ├── extensions-install.test.ts │ ├── extensions-reload.test.ts │ ├── file-system-interactive.test.ts │ ├── file-system.test.ts │ ├── flicker-detector.max-height.responses │ ├── flicker.test.ts │ ├── globalSetup.ts │ ├── google_web_search.test.ts │ ├── hooks-agent-flow-multistep.responses │ ├── hooks-agent-flow.responses │ ├── hooks-agent-flow.test.ts │ ├── hooks-system.after-agent.responses │ ├── hooks-system.after-model.responses │ ├── hooks-system.after-tool-context.responses │ ├── hooks-system.allow-tool.responses │ ├── hooks-system.before-agent.responses │ ├── hooks-system.before-model.responses │ ├── hooks-system.before-tool-selection.responses │ ├── hooks-system.before-tool-stop.responses │ ├── hooks-system.block-tool.responses │ ├── hooks-system.compress-auto.responses │ ├── hooks-system.disabled-via-command.responses │ ├── hooks-system.disabled-via-settings.responses │ ├── hooks-system.error-handling.responses │ ├── hooks-system.input-modification.responses │ ├── hooks-system.input-validation.responses │ ├── hooks-system.multiple-events.responses │ ├── hooks-system.notification.responses │ ├── hooks-system.sequential-execution.responses │ ├── hooks-system.session-clear.responses │ ├── hooks-system.session-startup.responses │ ├── hooks-system.tail-tool-call.responses │ ├── hooks-system.telemetry.responses │ ├── hooks-system.test.ts │ ├── json-output.error.responses │ ├── json-output.france.responses │ ├── json-output.session-id.responses │ ├── json-output.test.ts │ ├── list_directory.test.ts │ ├── mcp_server_cyclic_schema.test.ts │ ├── mixed-input-crash.test.ts │ ├── parallel-tools.responses │ ├── parallel-tools.test.ts │ ├── plan-mode.test.ts │ ├── policy-headless-readonly.responses │ ├── policy-headless-shell-allowed.responses │ ├── policy-headless-shell-denied.responses │ ├── policy-headless.test.ts │ ├── read_many_files.test.ts │ ├── replace.test.ts │ ├── resume_repro.responses │ ├── resume_repro.test.ts │ ├── ripgrep-real.test.ts │ ├── run_shell_command.test.ts │ ├── simple-mcp-server.test.ts │ ├── skill-creator-scripts.test.ts │ ├── skill-creator-vulnerabilities.test.ts │ ├── stdin-context.test.ts │ ├── stdout-stderr-output-error.responses │ ├── stdout-stderr-output.responses │ ├── stdout-stderr-output.test.ts │ ├── symlink-install.test.ts │ ├── telemetry.test.ts │ ├── test-helper.ts │ ├── test-mcp-server.ts │ ├── tsconfig.json │ ├── user-policy.responses │ ├── user-policy.test.ts │ ├── utf-bom-encoding.test.ts │ ├── vitest.config.ts │ └── write_file.test.ts ├── package.json ├── packages/ │ ├── a2a-server/ │ │ ├── GEMINI.md │ │ ├── README.md │ │ ├── development-extension-rfc.md │ │ ├── index.ts │ │ ├── package.json │ │ ├── src/ │ │ │ ├── agent/ │ │ │ │ ├── executor.test.ts │ │ │ │ ├── executor.ts │ │ │ │ ├── task-event-driven.test.ts │ │ │ │ ├── task.test.ts │ │ │ │ └── task.ts │ │ │ ├── commands/ │ │ │ │ ├── command-registry.test.ts │ │ │ │ ├── command-registry.ts │ │ │ │ ├── extensions.test.ts │ │ │ │ ├── extensions.ts │ │ │ │ ├── init.test.ts │ │ │ │ ├── init.ts │ │ │ │ ├── memory.test.ts │ │ │ │ ├── memory.ts │ │ │ │ ├── restore.test.ts │ │ │ │ ├── restore.ts │ │ │ │ └── types.ts │ │ │ ├── config/ │ │ │ │ ├── config.test.ts │ │ │ │ ├── config.ts │ │ │ │ ├── extension.ts │ │ │ │ ├── settings.test.ts │ │ │ │ └── settings.ts │ │ │ ├── http/ │ │ │ │ ├── app.test.ts │ │ │ │ ├── app.ts │ │ │ │ ├── endpoints.test.ts │ │ │ │ ├── requestStorage.ts │ │ │ │ └── server.ts │ │ │ ├── index.ts │ │ │ ├── persistence/ │ │ │ │ ├── gcs.test.ts │ │ │ │ └── gcs.ts │ │ │ ├── types.ts │ │ │ └── utils/ │ │ │ ├── executor_utils.ts │ │ │ ├── logger.ts │ │ │ └── testing_utils.ts │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── cli/ │ │ ├── GEMINI.md │ │ ├── examples/ │ │ │ ├── ask-user-dialog-demo.tsx │ │ │ └── scrollable-list-demo.tsx │ │ ├── index.ts │ │ ├── package.json │ │ ├── src/ │ │ │ ├── __snapshots__/ │ │ │ │ └── nonInteractiveCli.test.ts.snap │ │ │ ├── acp/ │ │ │ │ ├── acpClient.test.ts │ │ │ │ ├── acpClient.ts │ │ │ │ ├── acpErrors.test.ts │ │ │ │ ├── acpErrors.ts │ │ │ │ ├── acpResume.test.ts │ │ │ │ ├── commandHandler.test.ts │ │ │ │ ├── commandHandler.ts │ │ │ │ ├── commands/ │ │ │ │ │ ├── commandRegistry.ts │ │ │ │ │ ├── extensions.ts │ │ │ │ │ ├── init.ts │ │ │ │ │ ├── memory.ts │ │ │ │ │ ├── restore.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── fileSystemService.test.ts │ │ │ │ └── fileSystemService.ts │ │ │ ├── commands/ │ │ │ │ ├── extensions/ │ │ │ │ │ ├── configure.test.ts │ │ │ │ │ ├── configure.ts │ │ │ │ │ ├── disable.test.ts │ │ │ │ │ ├── disable.ts │ │ │ │ │ ├── enable.test.ts │ │ │ │ │ ├── enable.ts │ │ │ │ │ ├── examples/ │ │ │ │ │ │ ├── custom-commands/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── commands/ │ │ │ │ │ │ │ │ └── fs/ │ │ │ │ │ │ │ │ └── grep-code.toml │ │ │ │ │ │ │ └── gemini-extension.json │ │ │ │ │ │ ├── exclude-tools/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ └── gemini-extension.json │ │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── gemini-extension.json │ │ │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ │ │ └── hooks.json │ │ │ │ │ │ │ └── scripts/ │ │ │ │ │ │ │ └── on-start.js │ │ │ │ │ │ ├── mcp-server/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ │ ├── example.js │ │ │ │ │ │ │ ├── gemini-extension.json │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── policies/ │ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ │ ├── gemini-extension.json │ │ │ │ │ │ │ └── policies/ │ │ │ │ │ │ │ └── policies.toml │ │ │ │ │ │ ├── skills/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── gemini-extension.json │ │ │ │ │ │ │ └── skills/ │ │ │ │ │ │ │ └── greeter/ │ │ │ │ │ │ │ └── SKILL.md │ │ │ │ │ │ └── themes-example/ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ └── gemini-extension.json │ │ │ │ │ ├── install.test.ts │ │ │ │ │ ├── install.ts │ │ │ │ │ ├── link.test.ts │ │ │ │ │ ├── link.ts │ │ │ │ │ ├── list.test.ts │ │ │ │ │ ├── list.ts │ │ │ │ │ ├── new.test.ts │ │ │ │ │ ├── new.ts │ │ │ │ │ ├── uninstall.test.ts │ │ │ │ │ ├── uninstall.ts │ │ │ │ │ ├── update.test.ts │ │ │ │ │ ├── update.ts │ │ │ │ │ ├── utils.ts │ │ │ │ │ ├── validate.test.ts │ │ │ │ │ └── validate.ts │ │ │ │ ├── extensions.test.tsx │ │ │ │ ├── extensions.tsx │ │ │ │ ├── hooks/ │ │ │ │ │ ├── migrate.test.ts │ │ │ │ │ └── migrate.ts │ │ │ │ ├── hooks.tsx │ │ │ │ ├── mcp/ │ │ │ │ │ ├── add.test.ts │ │ │ │ │ ├── add.ts │ │ │ │ │ ├── enableDisable.ts │ │ │ │ │ ├── list.test.ts │ │ │ │ │ ├── list.ts │ │ │ │ │ ├── remove.test.ts │ │ │ │ │ └── remove.ts │ │ │ │ ├── mcp.test.ts │ │ │ │ ├── mcp.ts │ │ │ │ ├── skills/ │ │ │ │ │ ├── disable.test.ts │ │ │ │ │ ├── disable.ts │ │ │ │ │ ├── enable.test.ts │ │ │ │ │ ├── enable.ts │ │ │ │ │ ├── install.test.ts │ │ │ │ │ ├── install.ts │ │ │ │ │ ├── link.test.ts │ │ │ │ │ ├── link.ts │ │ │ │ │ ├── list.test.ts │ │ │ │ │ ├── list.ts │ │ │ │ │ ├── uninstall.test.ts │ │ │ │ │ └── uninstall.ts │ │ │ │ ├── skills.test.tsx │ │ │ │ ├── skills.tsx │ │ │ │ ├── utils.test.ts │ │ │ │ └── utils.ts │ │ │ ├── config/ │ │ │ │ ├── auth.test.ts │ │ │ │ ├── auth.ts │ │ │ │ ├── config.integration.test.ts │ │ │ │ ├── config.test.ts │ │ │ │ ├── config.ts │ │ │ │ ├── extension-manager-agents.test.ts │ │ │ │ ├── extension-manager-hydration.test.ts │ │ │ │ ├── extension-manager-permissions.test.ts │ │ │ │ ├── extension-manager-scope.test.ts │ │ │ │ ├── extension-manager-skills.test.ts │ │ │ │ ├── extension-manager-themes.spec.ts │ │ │ │ ├── extension-manager.test.ts │ │ │ │ ├── extension-manager.ts │ │ │ │ ├── extension.test.ts │ │ │ │ ├── extension.ts │ │ │ │ ├── extensionRegistryClient.test.ts │ │ │ │ ├── extensionRegistryClient.ts │ │ │ │ ├── extensions/ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── consent.test.ts.snap │ │ │ │ │ ├── consent.test.ts │ │ │ │ │ ├── consent.ts │ │ │ │ │ ├── extensionEnablement.test.ts │ │ │ │ │ ├── extensionEnablement.ts │ │ │ │ │ ├── extensionSettings.test.ts │ │ │ │ │ ├── extensionSettings.ts │ │ │ │ │ ├── extensionUpdates.test.ts │ │ │ │ │ ├── github.test.ts │ │ │ │ │ ├── github.ts │ │ │ │ │ ├── github_fetch.test.ts │ │ │ │ │ ├── github_fetch.ts │ │ │ │ │ ├── storage.test.ts │ │ │ │ │ ├── storage.ts │ │ │ │ │ ├── update.test.ts │ │ │ │ │ ├── update.ts │ │ │ │ │ ├── variableSchema.ts │ │ │ │ │ ├── variables.test.ts │ │ │ │ │ └── variables.ts │ │ │ │ ├── footerItems.test.ts │ │ │ │ ├── footerItems.ts │ │ │ │ ├── mcp/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── mcpServerEnablement.test.ts │ │ │ │ │ └── mcpServerEnablement.ts │ │ │ │ ├── policy-engine.integration.test.ts │ │ │ │ ├── policy.test.ts │ │ │ │ ├── policy.ts │ │ │ │ ├── sandboxConfig.test.ts │ │ │ │ ├── sandboxConfig.ts │ │ │ │ ├── settingPaths.test.ts │ │ │ │ ├── settingPaths.ts │ │ │ │ ├── settings-validation.test.ts │ │ │ │ ├── settings-validation.ts │ │ │ │ ├── settings.test.ts │ │ │ │ ├── settings.ts │ │ │ │ ├── settingsSchema.test.ts │ │ │ │ ├── settingsSchema.ts │ │ │ │ ├── settings_repro.test.ts │ │ │ │ ├── settings_validation_warning.test.ts │ │ │ │ ├── trustedFolders.test.ts │ │ │ │ ├── trustedFolders.ts │ │ │ │ └── workspace-policy-cli.test.ts │ │ │ ├── core/ │ │ │ │ ├── auth.test.ts │ │ │ │ ├── auth.ts │ │ │ │ ├── initializer.test.ts │ │ │ │ ├── initializer.ts │ │ │ │ ├── theme.test.ts │ │ │ │ └── theme.ts │ │ │ ├── deferred.test.ts │ │ │ ├── deferred.ts │ │ │ ├── gemini.test.tsx │ │ │ ├── gemini.tsx │ │ │ ├── gemini_cleanup.test.tsx │ │ │ ├── integration-tests/ │ │ │ │ └── modelSteering.test.tsx │ │ │ ├── interactiveCli.tsx │ │ │ ├── nonInteractiveCli.test.ts │ │ │ ├── nonInteractiveCli.ts │ │ │ ├── nonInteractiveCliCommands.ts │ │ │ ├── patches/ │ │ │ │ └── is-in-ci.ts │ │ │ ├── services/ │ │ │ │ ├── BuiltinCommandLoader.test.ts │ │ │ │ ├── BuiltinCommandLoader.ts │ │ │ │ ├── CommandService.test.ts │ │ │ │ ├── CommandService.ts │ │ │ │ ├── FileCommandLoader.test.ts │ │ │ │ ├── FileCommandLoader.ts │ │ │ │ ├── McpPromptLoader.test.ts │ │ │ │ ├── McpPromptLoader.ts │ │ │ │ ├── SkillCommandLoader.test.ts │ │ │ │ ├── SkillCommandLoader.ts │ │ │ │ ├── SlashCommandConflictHandler.test.ts │ │ │ │ ├── SlashCommandConflictHandler.ts │ │ │ │ ├── SlashCommandResolver.test.ts │ │ │ │ ├── SlashCommandResolver.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 │ │ │ │ └── types.ts │ │ │ ├── test-utils/ │ │ │ │ ├── AppRig.test.tsx │ │ │ │ ├── AppRig.tsx │ │ │ │ ├── MockShellExecutionService.ts │ │ │ │ ├── async.ts │ │ │ │ ├── createExtension.ts │ │ │ │ ├── customMatchers.ts │ │ │ │ ├── fixtures/ │ │ │ │ │ ├── simple.responses │ │ │ │ │ └── steering.responses │ │ │ │ ├── mockCommandContext.test.ts │ │ │ │ ├── mockCommandContext.ts │ │ │ │ ├── mockConfig.ts │ │ │ │ ├── mockDebugLogger.ts │ │ │ │ ├── persistentStateFake.ts │ │ │ │ ├── render.test.tsx │ │ │ │ ├── render.tsx │ │ │ │ ├── settings.ts │ │ │ │ └── svg.ts │ │ │ ├── ui/ │ │ │ │ ├── App.test.tsx │ │ │ │ ├── App.tsx │ │ │ │ ├── AppContainer.test.tsx │ │ │ │ ├── AppContainer.tsx │ │ │ │ ├── IdeIntegrationNudge.test.tsx │ │ │ │ ├── IdeIntegrationNudge.tsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── App.test.tsx.snap │ │ │ │ ├── auth/ │ │ │ │ │ ├── ApiAuthDialog.test.tsx │ │ │ │ │ ├── ApiAuthDialog.tsx │ │ │ │ │ ├── AuthDialog.test.tsx │ │ │ │ │ ├── AuthDialog.tsx │ │ │ │ │ ├── AuthInProgress.test.tsx │ │ │ │ │ ├── AuthInProgress.tsx │ │ │ │ │ ├── BannedAccountDialog.test.tsx │ │ │ │ │ ├── BannedAccountDialog.tsx │ │ │ │ │ ├── LoginWithGoogleRestartDialog.test.tsx │ │ │ │ │ ├── LoginWithGoogleRestartDialog.tsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── ApiAuthDialog.test.tsx.snap │ │ │ │ │ │ ├── AuthDialog.test.tsx.snap │ │ │ │ │ │ ├── BannedAccountDialog.test.tsx.snap │ │ │ │ │ │ └── LoginWithGoogleRestartDialog.test.tsx.snap │ │ │ │ │ ├── useAuth.test.tsx │ │ │ │ │ └── useAuth.ts │ │ │ │ ├── colors.ts │ │ │ │ ├── commands/ │ │ │ │ │ ├── aboutCommand.test.ts │ │ │ │ │ ├── aboutCommand.ts │ │ │ │ │ ├── agentsCommand.test.ts │ │ │ │ │ ├── agentsCommand.ts │ │ │ │ │ ├── authCommand.test.ts │ │ │ │ │ ├── authCommand.ts │ │ │ │ │ ├── bugCommand.test.ts │ │ │ │ │ ├── bugCommand.ts │ │ │ │ │ ├── chatCommand.test.ts │ │ │ │ │ ├── chatCommand.ts │ │ │ │ │ ├── clearCommand.test.ts │ │ │ │ │ ├── clearCommand.ts │ │ │ │ │ ├── commandsCommand.test.ts │ │ │ │ │ ├── commandsCommand.ts │ │ │ │ │ ├── compressCommand.test.ts │ │ │ │ │ ├── compressCommand.ts │ │ │ │ │ ├── copyCommand.test.ts │ │ │ │ │ ├── copyCommand.ts │ │ │ │ │ ├── corgiCommand.test.ts │ │ │ │ │ ├── corgiCommand.ts │ │ │ │ │ ├── directoryCommand.test.tsx │ │ │ │ │ ├── directoryCommand.tsx │ │ │ │ │ ├── docsCommand.test.ts │ │ │ │ │ ├── docsCommand.ts │ │ │ │ │ ├── editorCommand.test.ts │ │ │ │ │ ├── editorCommand.ts │ │ │ │ │ ├── extensionsCommand.test.ts │ │ │ │ │ ├── extensionsCommand.ts │ │ │ │ │ ├── footerCommand.tsx │ │ │ │ │ ├── helpCommand.test.ts │ │ │ │ │ ├── helpCommand.ts │ │ │ │ │ ├── hooksCommand.test.ts │ │ │ │ │ ├── hooksCommand.ts │ │ │ │ │ ├── ideCommand.test.ts │ │ │ │ │ ├── ideCommand.ts │ │ │ │ │ ├── initCommand.test.ts │ │ │ │ │ ├── initCommand.ts │ │ │ │ │ ├── mcpCommand.test.ts │ │ │ │ │ ├── mcpCommand.ts │ │ │ │ │ ├── memoryCommand.test.ts │ │ │ │ │ ├── memoryCommand.ts │ │ │ │ │ ├── modelCommand.test.ts │ │ │ │ │ ├── modelCommand.ts │ │ │ │ │ ├── oncallCommand.tsx │ │ │ │ │ ├── permissionsCommand.test.ts │ │ │ │ │ ├── permissionsCommand.ts │ │ │ │ │ ├── planCommand.test.ts │ │ │ │ │ ├── planCommand.ts │ │ │ │ │ ├── policiesCommand.test.ts │ │ │ │ │ ├── policiesCommand.ts │ │ │ │ │ ├── privacyCommand.test.ts │ │ │ │ │ ├── privacyCommand.ts │ │ │ │ │ ├── profileCommand.ts │ │ │ │ │ ├── quitCommand.test.ts │ │ │ │ │ ├── quitCommand.ts │ │ │ │ │ ├── restoreCommand.test.ts │ │ │ │ │ ├── restoreCommand.ts │ │ │ │ │ ├── resumeCommand.test.ts │ │ │ │ │ ├── resumeCommand.ts │ │ │ │ │ ├── rewindCommand.test.tsx │ │ │ │ │ ├── rewindCommand.tsx │ │ │ │ │ ├── settingsCommand.test.ts │ │ │ │ │ ├── settingsCommand.ts │ │ │ │ │ ├── setupGithubCommand.test.ts │ │ │ │ │ ├── setupGithubCommand.ts │ │ │ │ │ ├── shellsCommand.test.ts │ │ │ │ │ ├── shellsCommand.ts │ │ │ │ │ ├── shortcutsCommand.ts │ │ │ │ │ ├── skillsCommand.test.ts │ │ │ │ │ ├── skillsCommand.ts │ │ │ │ │ ├── statsCommand.test.ts │ │ │ │ │ ├── statsCommand.ts │ │ │ │ │ ├── terminalSetupCommand.test.ts │ │ │ │ │ ├── terminalSetupCommand.ts │ │ │ │ │ ├── themeCommand.test.ts │ │ │ │ │ ├── themeCommand.ts │ │ │ │ │ ├── toolsCommand.test.ts │ │ │ │ │ ├── toolsCommand.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ ├── upgradeCommand.test.ts │ │ │ │ │ ├── upgradeCommand.ts │ │ │ │ │ └── vimCommand.ts │ │ │ │ ├── components/ │ │ │ │ │ ├── AboutBox.test.tsx │ │ │ │ │ ├── AboutBox.tsx │ │ │ │ │ ├── AdminSettingsChangedDialog.test.tsx │ │ │ │ │ ├── AdminSettingsChangedDialog.tsx │ │ │ │ │ ├── AgentConfigDialog.test.tsx │ │ │ │ │ ├── AgentConfigDialog.tsx │ │ │ │ │ ├── AlternateBufferQuittingDisplay.test.tsx │ │ │ │ │ ├── AlternateBufferQuittingDisplay.tsx │ │ │ │ │ ├── AnsiOutput.test.tsx │ │ │ │ │ ├── AnsiOutput.tsx │ │ │ │ │ ├── AppHeader.test.tsx │ │ │ │ │ ├── AppHeader.tsx │ │ │ │ │ ├── AppHeaderIcon.test.tsx │ │ │ │ │ ├── ApprovalModeIndicator.test.tsx │ │ │ │ │ ├── ApprovalModeIndicator.tsx │ │ │ │ │ ├── AsciiArt.ts │ │ │ │ │ ├── AskUserDialog.test.tsx │ │ │ │ │ ├── AskUserDialog.tsx │ │ │ │ │ ├── BackgroundShellDisplay.test.tsx │ │ │ │ │ ├── BackgroundShellDisplay.tsx │ │ │ │ │ ├── Banner.test.tsx │ │ │ │ │ ├── Banner.tsx │ │ │ │ │ ├── BubblingRegression.test.tsx │ │ │ │ │ ├── Checklist.test.tsx │ │ │ │ │ ├── Checklist.tsx │ │ │ │ │ ├── ChecklistItem.test.tsx │ │ │ │ │ ├── ChecklistItem.tsx │ │ │ │ │ ├── CliSpinner.test.tsx │ │ │ │ │ ├── CliSpinner.tsx │ │ │ │ │ ├── ColorsDisplay.test.tsx │ │ │ │ │ ├── ColorsDisplay.tsx │ │ │ │ │ ├── Composer.test.tsx │ │ │ │ │ ├── Composer.tsx │ │ │ │ │ ├── ConfigExtensionDialog.tsx │ │ │ │ │ ├── ConfigInitDisplay.test.tsx │ │ │ │ │ ├── ConfigInitDisplay.tsx │ │ │ │ │ ├── ConsentPrompt.test.tsx │ │ │ │ │ ├── ConsentPrompt.tsx │ │ │ │ │ ├── ConsoleSummaryDisplay.test.tsx │ │ │ │ │ ├── ConsoleSummaryDisplay.tsx │ │ │ │ │ ├── ContextSummaryDisplay.test.tsx │ │ │ │ │ ├── ContextSummaryDisplay.tsx │ │ │ │ │ ├── ContextUsageDisplay.test.tsx │ │ │ │ │ ├── ContextUsageDisplay.tsx │ │ │ │ │ ├── CopyModeWarning.test.tsx │ │ │ │ │ ├── CopyModeWarning.tsx │ │ │ │ │ ├── DebugProfiler.test.tsx │ │ │ │ │ ├── DebugProfiler.tsx │ │ │ │ │ ├── DetailedMessagesDisplay.test.tsx │ │ │ │ │ ├── DetailedMessagesDisplay.tsx │ │ │ │ │ ├── DialogManager.test.tsx │ │ │ │ │ ├── DialogManager.tsx │ │ │ │ │ ├── EditorSettingsDialog.test.tsx │ │ │ │ │ ├── EditorSettingsDialog.tsx │ │ │ │ │ ├── EmptyWalletDialog.test.tsx │ │ │ │ │ ├── EmptyWalletDialog.tsx │ │ │ │ │ ├── ExitPlanModeDialog.test.tsx │ │ │ │ │ ├── ExitPlanModeDialog.tsx │ │ │ │ │ ├── ExitWarning.test.tsx │ │ │ │ │ ├── ExitWarning.tsx │ │ │ │ │ ├── FolderTrustDialog.test.tsx │ │ │ │ │ ├── FolderTrustDialog.tsx │ │ │ │ │ ├── Footer.test.tsx │ │ │ │ │ ├── Footer.tsx │ │ │ │ │ ├── FooterConfigDialog.test.tsx │ │ │ │ │ ├── FooterConfigDialog.tsx │ │ │ │ │ ├── GeminiRespondingSpinner.test.tsx │ │ │ │ │ ├── GeminiRespondingSpinner.tsx │ │ │ │ │ ├── GeminiSpinner.tsx │ │ │ │ │ ├── GradientRegression.test.tsx │ │ │ │ │ ├── Header.test.tsx │ │ │ │ │ ├── Header.tsx │ │ │ │ │ ├── Help.test.tsx │ │ │ │ │ ├── Help.tsx │ │ │ │ │ ├── HistoryItemDisplay.test.tsx │ │ │ │ │ ├── HistoryItemDisplay.tsx │ │ │ │ │ ├── HookStatusDisplay.test.tsx │ │ │ │ │ ├── HookStatusDisplay.tsx │ │ │ │ │ ├── HooksDialog.test.tsx │ │ │ │ │ ├── HooksDialog.tsx │ │ │ │ │ ├── IdeTrustChangeDialog.test.tsx │ │ │ │ │ ├── IdeTrustChangeDialog.tsx │ │ │ │ │ ├── InputPrompt.test.tsx │ │ │ │ │ ├── InputPrompt.tsx │ │ │ │ │ ├── LoadingIndicator.test.tsx │ │ │ │ │ ├── LoadingIndicator.tsx │ │ │ │ │ ├── LogoutConfirmationDialog.test.tsx │ │ │ │ │ ├── LogoutConfirmationDialog.tsx │ │ │ │ │ ├── LoopDetectionConfirmation.test.tsx │ │ │ │ │ ├── LoopDetectionConfirmation.tsx │ │ │ │ │ ├── MainContent.test.tsx │ │ │ │ │ ├── MainContent.tsx │ │ │ │ │ ├── MemoryUsageDisplay.test.tsx │ │ │ │ │ ├── MemoryUsageDisplay.tsx │ │ │ │ │ ├── ModelDialog.test.tsx │ │ │ │ │ ├── ModelDialog.tsx │ │ │ │ │ ├── ModelStatsDisplay.test.tsx │ │ │ │ │ ├── ModelStatsDisplay.tsx │ │ │ │ │ ├── MultiFolderTrustDialog.test.tsx │ │ │ │ │ ├── MultiFolderTrustDialog.tsx │ │ │ │ │ ├── NewAgentsNotification.test.tsx │ │ │ │ │ ├── NewAgentsNotification.tsx │ │ │ │ │ ├── Notifications.test.tsx │ │ │ │ │ ├── Notifications.tsx │ │ │ │ │ ├── OverageMenuDialog.test.tsx │ │ │ │ │ ├── OverageMenuDialog.tsx │ │ │ │ │ ├── PermissionsModifyTrustDialog.test.tsx │ │ │ │ │ ├── PermissionsModifyTrustDialog.tsx │ │ │ │ │ ├── PolicyUpdateDialog.test.tsx │ │ │ │ │ ├── PolicyUpdateDialog.tsx │ │ │ │ │ ├── ProQuotaDialog.test.tsx │ │ │ │ │ ├── ProQuotaDialog.tsx │ │ │ │ │ ├── QueuedMessageDisplay.test.tsx │ │ │ │ │ ├── QueuedMessageDisplay.tsx │ │ │ │ │ ├── QuittingDisplay.test.tsx │ │ │ │ │ ├── QuittingDisplay.tsx │ │ │ │ │ ├── QuotaDisplay.test.tsx │ │ │ │ │ ├── QuotaDisplay.tsx │ │ │ │ │ ├── QuotaStatsInfo.tsx │ │ │ │ │ ├── RawMarkdownIndicator.test.tsx │ │ │ │ │ ├── RawMarkdownIndicator.tsx │ │ │ │ │ ├── RewindConfirmation.test.tsx │ │ │ │ │ ├── RewindConfirmation.tsx │ │ │ │ │ ├── RewindViewer.test.tsx │ │ │ │ │ ├── RewindViewer.tsx │ │ │ │ │ ├── SessionBrowser/ │ │ │ │ │ │ ├── SessionBrowserEmpty.tsx │ │ │ │ │ │ ├── SessionBrowserError.tsx │ │ │ │ │ │ ├── SessionBrowserLoading.tsx │ │ │ │ │ │ ├── SessionBrowserNav.tsx │ │ │ │ │ │ ├── SessionBrowserSearchNav.test.tsx │ │ │ │ │ │ ├── SessionBrowserStates.test.tsx │ │ │ │ │ │ ├── SessionListHeader.tsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── SessionBrowserSearchNav.test.tsx.snap │ │ │ │ │ │ │ └── SessionBrowserStates.test.tsx.snap │ │ │ │ │ │ ├── utils.test.ts │ │ │ │ │ │ └── utils.ts │ │ │ │ │ ├── SessionBrowser.test.tsx │ │ │ │ │ ├── SessionBrowser.tsx │ │ │ │ │ ├── SessionSummaryDisplay.test.tsx │ │ │ │ │ ├── SessionSummaryDisplay.tsx │ │ │ │ │ ├── SettingsDialog.test.tsx │ │ │ │ │ ├── SettingsDialog.tsx │ │ │ │ │ ├── ShellInputPrompt.test.tsx │ │ │ │ │ ├── ShellInputPrompt.tsx │ │ │ │ │ ├── ShellModeIndicator.test.tsx │ │ │ │ │ ├── ShellModeIndicator.tsx │ │ │ │ │ ├── ShortcutsHelp.test.tsx │ │ │ │ │ ├── ShortcutsHelp.tsx │ │ │ │ │ ├── ShortcutsHint.tsx │ │ │ │ │ ├── ShowMoreLines.test.tsx │ │ │ │ │ ├── ShowMoreLines.tsx │ │ │ │ │ ├── ShowMoreLinesLayout.test.tsx │ │ │ │ │ ├── StatsDisplay.test.tsx │ │ │ │ │ ├── StatsDisplay.tsx │ │ │ │ │ ├── StatusDisplay.test.tsx │ │ │ │ │ ├── StatusDisplay.tsx │ │ │ │ │ ├── StickyHeader.test.tsx │ │ │ │ │ ├── StickyHeader.tsx │ │ │ │ │ ├── SuggestionsDisplay.test.tsx │ │ │ │ │ ├── SuggestionsDisplay.tsx │ │ │ │ │ ├── Table.test.tsx │ │ │ │ │ ├── Table.tsx │ │ │ │ │ ├── ThemeDialog.test.tsx │ │ │ │ │ ├── ThemeDialog.tsx │ │ │ │ │ ├── ThemedGradient.test.tsx │ │ │ │ │ ├── ThemedGradient.tsx │ │ │ │ │ ├── Tips.test.tsx │ │ │ │ │ ├── Tips.tsx │ │ │ │ │ ├── ToastDisplay.test.tsx │ │ │ │ │ ├── ToastDisplay.tsx │ │ │ │ │ ├── ToolConfirmationQueue.test.tsx │ │ │ │ │ ├── ToolConfirmationQueue.tsx │ │ │ │ │ ├── ToolStatsDisplay.test.tsx │ │ │ │ │ ├── ToolStatsDisplay.tsx │ │ │ │ │ ├── UpdateNotification.test.tsx │ │ │ │ │ ├── UpdateNotification.tsx │ │ │ │ │ ├── UserIdentity.test.tsx │ │ │ │ │ ├── UserIdentity.tsx │ │ │ │ │ ├── ValidationDialog.test.tsx │ │ │ │ │ ├── ValidationDialog.tsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── AdminSettingsChangedDialog.test.tsx.snap │ │ │ │ │ │ ├── AlternateBufferQuittingDisplay.test.tsx.snap │ │ │ │ │ │ ├── AppHeader.test.tsx.snap │ │ │ │ │ │ ├── AppHeaderIcon.test.tsx.snap │ │ │ │ │ │ ├── ApprovalModeIndicator.test.tsx.snap │ │ │ │ │ │ ├── AskUserDialog.test.tsx.snap │ │ │ │ │ │ ├── BackgroundShellDisplay.test.tsx.snap │ │ │ │ │ │ ├── Banner.test.tsx.snap │ │ │ │ │ │ ├── Checklist.test.tsx.snap │ │ │ │ │ │ ├── ChecklistItem.test.tsx.snap │ │ │ │ │ │ ├── Composer.test.tsx.snap │ │ │ │ │ │ ├── ConfigInitDisplay.test.tsx.snap │ │ │ │ │ │ ├── ContextSummaryDisplay.test.tsx.snap │ │ │ │ │ │ ├── DetailedMessagesDisplay.test.tsx.snap │ │ │ │ │ │ ├── EditorSettingsDialog.test.tsx.snap │ │ │ │ │ │ ├── EmptyWalletDialog.test.tsx.snap │ │ │ │ │ │ ├── ExitPlanModeDialog.test.tsx.snap │ │ │ │ │ │ ├── Footer.test.tsx.snap │ │ │ │ │ │ ├── FooterConfigDialog.test.tsx.snap │ │ │ │ │ │ ├── HistoryItemDisplay.test.tsx.snap │ │ │ │ │ │ ├── HookStatusDisplay.test.tsx.snap │ │ │ │ │ │ ├── HooksDialog.test.tsx.snap │ │ │ │ │ │ ├── IDEContextDetailDisplay.test.tsx.snap │ │ │ │ │ │ ├── InputPrompt.test.tsx.snap │ │ │ │ │ │ ├── LoadingIndicator.test.tsx.snap │ │ │ │ │ │ ├── LoopDetectionConfirmation.test.tsx.snap │ │ │ │ │ │ ├── MainContent.test.tsx.snap │ │ │ │ │ │ ├── ModelStatsDisplay.test.tsx.snap │ │ │ │ │ │ ├── NewAgentsNotification.test.tsx.snap │ │ │ │ │ │ ├── Notifications.test.tsx.snap │ │ │ │ │ │ ├── OverageMenuDialog.test.tsx.snap │ │ │ │ │ │ ├── PolicyUpdateDialog.test.tsx.snap │ │ │ │ │ │ ├── PrepareLabel.test.tsx.snap │ │ │ │ │ │ ├── QuotaDisplay.test.tsx.snap │ │ │ │ │ │ ├── RewindConfirmation.test.tsx.snap │ │ │ │ │ │ ├── RewindViewer.test.tsx.snap │ │ │ │ │ │ ├── SessionBrowser.test.tsx.snap │ │ │ │ │ │ ├── SessionSummaryDisplay.test.tsx.snap │ │ │ │ │ │ ├── SettingsDialog.test.tsx.snap │ │ │ │ │ │ ├── ShortcutsHelp.test.tsx.snap │ │ │ │ │ │ ├── StatsDisplay.test.tsx.snap │ │ │ │ │ │ ├── StatusDisplay.test.tsx.snap │ │ │ │ │ │ ├── SuggestionsDisplay.test.tsx.snap │ │ │ │ │ │ ├── Table.test.tsx.snap │ │ │ │ │ │ ├── ThemeDialog.test.tsx.snap │ │ │ │ │ │ ├── Tips.test.tsx.snap │ │ │ │ │ │ ├── ToastDisplay.test.tsx.snap │ │ │ │ │ │ ├── ToolConfirmationQueue.test.tsx.snap │ │ │ │ │ │ └── ToolStatsDisplay.test.tsx.snap │ │ │ │ │ ├── messages/ │ │ │ │ │ │ ├── CompressionMessage.test.tsx │ │ │ │ │ │ ├── CompressionMessage.tsx │ │ │ │ │ │ ├── DiffRenderer.test.tsx │ │ │ │ │ │ ├── DiffRenderer.tsx │ │ │ │ │ │ ├── ErrorMessage.test.tsx │ │ │ │ │ │ ├── ErrorMessage.tsx │ │ │ │ │ │ ├── GeminiMessage.test.tsx │ │ │ │ │ │ ├── GeminiMessage.tsx │ │ │ │ │ │ ├── GeminiMessageContent.tsx │ │ │ │ │ │ ├── HintMessage.tsx │ │ │ │ │ │ ├── InfoMessage.test.tsx │ │ │ │ │ │ ├── InfoMessage.tsx │ │ │ │ │ │ ├── ModelMessage.tsx │ │ │ │ │ │ ├── RedirectionConfirmation.test.tsx │ │ │ │ │ │ ├── ShellToolMessage.test.tsx │ │ │ │ │ │ ├── ShellToolMessage.tsx │ │ │ │ │ │ ├── SubagentGroupDisplay.test.tsx │ │ │ │ │ │ ├── SubagentGroupDisplay.tsx │ │ │ │ │ │ ├── SubagentProgressDisplay.test.tsx │ │ │ │ │ │ ├── SubagentProgressDisplay.tsx │ │ │ │ │ │ ├── ThinkingMessage.test.tsx │ │ │ │ │ │ ├── ThinkingMessage.tsx │ │ │ │ │ │ ├── Todo.test.tsx │ │ │ │ │ │ ├── Todo.tsx │ │ │ │ │ │ ├── ToolConfirmationMessage.test.tsx │ │ │ │ │ │ ├── ToolConfirmationMessage.tsx │ │ │ │ │ │ ├── ToolGroupMessage.test.tsx │ │ │ │ │ │ ├── ToolGroupMessage.tsx │ │ │ │ │ │ ├── ToolMessage.test.tsx │ │ │ │ │ │ ├── ToolMessage.tsx │ │ │ │ │ │ ├── ToolMessageFocusHint.test.tsx │ │ │ │ │ │ ├── ToolMessageRawMarkdown.test.tsx │ │ │ │ │ │ ├── ToolOverflowConsistencyChecks.test.tsx │ │ │ │ │ │ ├── ToolResultDisplay.test.tsx │ │ │ │ │ │ ├── ToolResultDisplay.tsx │ │ │ │ │ │ ├── ToolResultDisplayOverflow.test.tsx │ │ │ │ │ │ ├── ToolShared.test.tsx │ │ │ │ │ │ ├── ToolShared.tsx │ │ │ │ │ │ ├── ToolStickyHeaderRegression.test.tsx │ │ │ │ │ │ ├── UserMessage.test.tsx │ │ │ │ │ │ ├── UserMessage.tsx │ │ │ │ │ │ ├── UserShellMessage.tsx │ │ │ │ │ │ ├── WarningMessage.test.tsx │ │ │ │ │ │ ├── WarningMessage.tsx │ │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ │ ├── DiffRenderer.test.tsx.snap │ │ │ │ │ │ ├── ErrorMessage.test.tsx.snap │ │ │ │ │ │ ├── GeminiMessage.test.tsx.snap │ │ │ │ │ │ ├── InfoMessage.test.tsx.snap │ │ │ │ │ │ ├── RedirectionConfirmation.test.tsx.snap │ │ │ │ │ │ ├── ShellToolMessage.test.tsx.snap │ │ │ │ │ │ ├── SubagentGroupDisplay.test.tsx.snap │ │ │ │ │ │ ├── SubagentProgressDisplay.test.tsx.snap │ │ │ │ │ │ ├── ThinkingMessage.test.tsx.snap │ │ │ │ │ │ ├── Todo.test.tsx.snap │ │ │ │ │ │ ├── ToolConfirmationMessage.test.tsx.snap │ │ │ │ │ │ ├── ToolConfirmationMessageOverflow.test.tsx.snap │ │ │ │ │ │ ├── ToolGroupMessage.test.tsx.snap │ │ │ │ │ │ ├── ToolMessage.test.tsx.snap │ │ │ │ │ │ ├── ToolMessageFocusHint.test.tsx.snap │ │ │ │ │ │ ├── ToolMessageRawMarkdown.test.tsx.snap │ │ │ │ │ │ ├── ToolResultDisplay.test.tsx.snap │ │ │ │ │ │ ├── ToolShared.test.tsx.snap │ │ │ │ │ │ ├── ToolStickyHeaderRegression.test.tsx.snap │ │ │ │ │ │ ├── UserMessage.test.tsx.snap │ │ │ │ │ │ └── WarningMessage.test.tsx.snap │ │ │ │ │ ├── shared/ │ │ │ │ │ │ ├── BaseSelectionList.test.tsx │ │ │ │ │ │ ├── BaseSelectionList.tsx │ │ │ │ │ │ ├── BaseSettingsDialog.test.tsx │ │ │ │ │ │ ├── BaseSettingsDialog.tsx │ │ │ │ │ │ ├── DescriptiveRadioButtonSelect.test.tsx │ │ │ │ │ │ ├── DescriptiveRadioButtonSelect.tsx │ │ │ │ │ │ ├── DialogFooter.tsx │ │ │ │ │ │ ├── EnumSelector.test.tsx │ │ │ │ │ │ ├── EnumSelector.tsx │ │ │ │ │ │ ├── ExpandableText.test.tsx │ │ │ │ │ │ ├── ExpandableText.tsx │ │ │ │ │ │ ├── HalfLinePaddedBox.test.tsx │ │ │ │ │ │ ├── HalfLinePaddedBox.tsx │ │ │ │ │ │ ├── HorizontalLine.tsx │ │ │ │ │ │ ├── MaxSizedBox.test.tsx │ │ │ │ │ │ ├── MaxSizedBox.tsx │ │ │ │ │ │ ├── RadioButtonSelect.test.tsx │ │ │ │ │ │ ├── RadioButtonSelect.tsx │ │ │ │ │ │ ├── ScopeSelector.tsx │ │ │ │ │ │ ├── Scrollable.test.tsx │ │ │ │ │ │ ├── Scrollable.tsx │ │ │ │ │ │ ├── ScrollableList.test.tsx │ │ │ │ │ │ ├── ScrollableList.tsx │ │ │ │ │ │ ├── SearchableList.test.tsx │ │ │ │ │ │ ├── SearchableList.tsx │ │ │ │ │ │ ├── SectionHeader.test.tsx │ │ │ │ │ │ ├── SectionHeader.tsx │ │ │ │ │ │ ├── SlicingMaxSizedBox.test.tsx │ │ │ │ │ │ ├── SlicingMaxSizedBox.tsx │ │ │ │ │ │ ├── TabHeader.test.tsx │ │ │ │ │ │ ├── TabHeader.tsx │ │ │ │ │ │ ├── TextInput.test.tsx │ │ │ │ │ │ ├── TextInput.tsx │ │ │ │ │ │ ├── VirtualizedList.test.tsx │ │ │ │ │ │ ├── VirtualizedList.tsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── BaseSelectionList.test.tsx.snap │ │ │ │ │ │ │ ├── DescriptiveRadioButtonSelect.test.tsx.snap │ │ │ │ │ │ │ ├── EnumSelector.test.tsx.snap │ │ │ │ │ │ │ ├── ExpandablePrompt.test.tsx.snap │ │ │ │ │ │ │ ├── ExpandableText.test.tsx.snap │ │ │ │ │ │ │ ├── HalfLinePaddedBox.test.tsx.snap │ │ │ │ │ │ │ ├── MaxSizedBox.test.tsx.snap │ │ │ │ │ │ │ ├── Scrollable.test.tsx.snap │ │ │ │ │ │ │ ├── SearchableList.test.tsx.snap │ │ │ │ │ │ │ ├── SectionHeader.test.tsx.snap │ │ │ │ │ │ │ ├── TabHeader.test.tsx.snap │ │ │ │ │ │ │ └── VirtualizedList.test.tsx.snap │ │ │ │ │ │ ├── performance.test.ts │ │ │ │ │ │ ├── text-buffer.test.ts │ │ │ │ │ │ ├── text-buffer.ts │ │ │ │ │ │ ├── vim-buffer-actions.test.ts │ │ │ │ │ │ └── vim-buffer-actions.ts │ │ │ │ │ ├── triage/ │ │ │ │ │ │ ├── TriageDuplicates.tsx │ │ │ │ │ │ └── TriageIssues.tsx │ │ │ │ │ └── views/ │ │ │ │ │ ├── AgentsStatus.tsx │ │ │ │ │ ├── ChatList.test.tsx │ │ │ │ │ ├── ChatList.tsx │ │ │ │ │ ├── ExtensionDetails.test.tsx │ │ │ │ │ ├── ExtensionDetails.tsx │ │ │ │ │ ├── ExtensionRegistryView.test.tsx │ │ │ │ │ ├── ExtensionRegistryView.tsx │ │ │ │ │ ├── ExtensionsList.test.tsx │ │ │ │ │ ├── ExtensionsList.tsx │ │ │ │ │ ├── McpStatus.test.tsx │ │ │ │ │ ├── McpStatus.tsx │ │ │ │ │ ├── SkillsList.test.tsx │ │ │ │ │ ├── SkillsList.tsx │ │ │ │ │ ├── ToolsList.test.tsx │ │ │ │ │ ├── ToolsList.tsx │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ ├── ChatList.test.tsx.snap │ │ │ │ │ ├── McpStatus.test.tsx.snap │ │ │ │ │ └── ToolsList.test.tsx.snap │ │ │ │ ├── constants/ │ │ │ │ │ ├── tips.ts │ │ │ │ │ └── wittyPhrases.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── contexts/ │ │ │ │ │ ├── AppContext.tsx │ │ │ │ │ ├── AskUserActionsContext.tsx │ │ │ │ │ ├── ConfigContext.tsx │ │ │ │ │ ├── KeypressContext.test.tsx │ │ │ │ │ ├── KeypressContext.tsx │ │ │ │ │ ├── MouseContext.test.tsx │ │ │ │ │ ├── MouseContext.tsx │ │ │ │ │ ├── OverflowContext.tsx │ │ │ │ │ ├── ScrollProvider.drag.test.tsx │ │ │ │ │ ├── ScrollProvider.test.tsx │ │ │ │ │ ├── ScrollProvider.tsx │ │ │ │ │ ├── SessionContext.test.tsx │ │ │ │ │ ├── SessionContext.tsx │ │ │ │ │ ├── SettingsContext.test.tsx │ │ │ │ │ ├── SettingsContext.tsx │ │ │ │ │ ├── ShellFocusContext.tsx │ │ │ │ │ ├── StreamingContext.tsx │ │ │ │ │ ├── TerminalContext.test.tsx │ │ │ │ │ ├── TerminalContext.tsx │ │ │ │ │ ├── ToolActionsContext.test.tsx │ │ │ │ │ ├── ToolActionsContext.tsx │ │ │ │ │ ├── UIActionsContext.tsx │ │ │ │ │ ├── UIStateContext.tsx │ │ │ │ │ └── VimModeContext.tsx │ │ │ │ ├── debug.ts │ │ │ │ ├── editors/ │ │ │ │ │ └── editorSettingsManager.ts │ │ │ │ ├── hooks/ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── usePhraseCycler.test.tsx.snap │ │ │ │ │ ├── atCommandProcessor.test.ts │ │ │ │ │ ├── atCommandProcessor.ts │ │ │ │ │ ├── atCommandProcessor_agents.test.ts │ │ │ │ │ ├── creditsFlowHandler.test.ts │ │ │ │ │ ├── creditsFlowHandler.ts │ │ │ │ │ ├── shell-completions/ │ │ │ │ │ │ ├── gitProvider.test.ts │ │ │ │ │ │ ├── gitProvider.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── npmProvider.test.ts │ │ │ │ │ │ ├── npmProvider.ts │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── shellCommandProcessor.test.tsx │ │ │ │ │ ├── shellCommandProcessor.ts │ │ │ │ │ ├── shellReducer.test.ts │ │ │ │ │ ├── shellReducer.ts │ │ │ │ │ ├── slashCommandProcessor.test.tsx │ │ │ │ │ ├── slashCommandProcessor.ts │ │ │ │ │ ├── toolMapping.test.ts │ │ │ │ │ ├── toolMapping.ts │ │ │ │ │ ├── useAlternateBuffer.test.ts │ │ │ │ │ ├── useAlternateBuffer.ts │ │ │ │ │ ├── useAnimatedScrollbar.test.tsx │ │ │ │ │ ├── useAnimatedScrollbar.ts │ │ │ │ │ ├── useApprovalModeIndicator.test.ts │ │ │ │ │ ├── useApprovalModeIndicator.ts │ │ │ │ │ ├── useAtCompletion.test.ts │ │ │ │ │ ├── useAtCompletion.ts │ │ │ │ │ ├── useAtCompletion_agents.test.ts │ │ │ │ │ ├── useBackgroundShellManager.test.tsx │ │ │ │ │ ├── useBackgroundShellManager.ts │ │ │ │ │ ├── useBanner.test.ts │ │ │ │ │ ├── useBanner.ts │ │ │ │ │ ├── useBatchedScroll.test.ts │ │ │ │ │ ├── useBatchedScroll.ts │ │ │ │ │ ├── useCommandCompletion.test.tsx │ │ │ │ │ ├── useCommandCompletion.tsx │ │ │ │ │ ├── useCompletion.ts │ │ │ │ │ ├── useConfirmingTool.ts │ │ │ │ │ ├── useConsoleMessages.test.tsx │ │ │ │ │ ├── useConsoleMessages.ts │ │ │ │ │ ├── useEditorSettings.test.tsx │ │ │ │ │ ├── useEditorSettings.ts │ │ │ │ │ ├── useExtensionRegistry.ts │ │ │ │ │ ├── useExtensionUpdates.test.tsx │ │ │ │ │ ├── useExtensionUpdates.ts │ │ │ │ │ ├── useFlickerDetector.test.ts │ │ │ │ │ ├── useFlickerDetector.ts │ │ │ │ │ ├── useFocus.test.tsx │ │ │ │ │ ├── useFocus.ts │ │ │ │ │ ├── useFolderTrust.test.ts │ │ │ │ │ ├── useFolderTrust.ts │ │ │ │ │ ├── useGeminiStream.test.tsx │ │ │ │ │ ├── useGeminiStream.ts │ │ │ │ │ ├── useGitBranchName.test.tsx │ │ │ │ │ ├── useGitBranchName.ts │ │ │ │ │ ├── useHistoryManager.test.ts │ │ │ │ │ ├── useHistoryManager.ts │ │ │ │ │ ├── useHookDisplayState.test.ts │ │ │ │ │ ├── useHookDisplayState.ts │ │ │ │ │ ├── useIdeTrustListener.test.tsx │ │ │ │ │ ├── useIdeTrustListener.ts │ │ │ │ │ ├── useInactivityTimer.ts │ │ │ │ │ ├── useIncludeDirsTrust.test.tsx │ │ │ │ │ ├── useIncludeDirsTrust.tsx │ │ │ │ │ ├── useInlineEditBuffer.test.ts │ │ │ │ │ ├── useInlineEditBuffer.ts │ │ │ │ │ ├── useInputHistory.test.ts │ │ │ │ │ ├── useInputHistory.ts │ │ │ │ │ ├── useInputHistoryStore.test.ts │ │ │ │ │ ├── useInputHistoryStore.ts │ │ │ │ │ ├── useKeyMatchers.tsx │ │ │ │ │ ├── useKeypress.test.tsx │ │ │ │ │ ├── useKeypress.ts │ │ │ │ │ ├── useKittyKeyboardProtocol.ts │ │ │ │ │ ├── useLoadingIndicator.test.tsx │ │ │ │ │ ├── useLoadingIndicator.ts │ │ │ │ │ ├── useLogger.test.tsx │ │ │ │ │ ├── useLogger.ts │ │ │ │ │ ├── useMcpStatus.test.tsx │ │ │ │ │ ├── useMcpStatus.ts │ │ │ │ │ ├── useMemoryMonitor.test.tsx │ │ │ │ │ ├── useMemoryMonitor.ts │ │ │ │ │ ├── useMessageQueue.test.tsx │ │ │ │ │ ├── useMessageQueue.ts │ │ │ │ │ ├── useModelCommand.test.tsx │ │ │ │ │ ├── useModelCommand.ts │ │ │ │ │ ├── useMouse.test.ts │ │ │ │ │ ├── useMouse.ts │ │ │ │ │ ├── useMouseClick.test.ts │ │ │ │ │ ├── useMouseClick.ts │ │ │ │ │ ├── usePermissionsModifyTrust.test.ts │ │ │ │ │ ├── usePermissionsModifyTrust.ts │ │ │ │ │ ├── usePhraseCycler.test.tsx │ │ │ │ │ ├── usePhraseCycler.ts │ │ │ │ │ ├── usePrivacySettings.test.tsx │ │ │ │ │ ├── usePrivacySettings.ts │ │ │ │ │ ├── usePromptCompletion.ts │ │ │ │ │ ├── useQuotaAndFallback.test.ts │ │ │ │ │ ├── useQuotaAndFallback.ts │ │ │ │ │ ├── useRegistrySearch.ts │ │ │ │ │ ├── useRepeatedKeyPress.ts │ │ │ │ │ ├── useReverseSearchCompletion.test.tsx │ │ │ │ │ ├── useReverseSearchCompletion.tsx │ │ │ │ │ ├── useRewind.test.ts │ │ │ │ │ ├── useRewind.ts │ │ │ │ │ ├── useRunEventNotifications.ts │ │ │ │ │ ├── useSearchBuffer.ts │ │ │ │ │ ├── useSelectionList.test.tsx │ │ │ │ │ ├── useSelectionList.ts │ │ │ │ │ ├── useSessionBrowser.test.ts │ │ │ │ │ ├── useSessionBrowser.ts │ │ │ │ │ ├── useSessionResume.test.ts │ │ │ │ │ ├── useSessionResume.ts │ │ │ │ │ ├── useSettingsCommand.ts │ │ │ │ │ ├── useSettingsNavigation.test.ts │ │ │ │ │ ├── useSettingsNavigation.ts │ │ │ │ │ ├── useShellCompletion.test.ts │ │ │ │ │ ├── useShellCompletion.ts │ │ │ │ │ ├── useShellHistory.test.ts │ │ │ │ │ ├── useShellHistory.ts │ │ │ │ │ ├── useShellInactivityStatus.test.ts │ │ │ │ │ ├── useShellInactivityStatus.ts │ │ │ │ │ ├── useSlashCompletion.test.ts │ │ │ │ │ ├── useSlashCompletion.ts │ │ │ │ │ ├── useSnowfall.test.tsx │ │ │ │ │ ├── useSnowfall.ts │ │ │ │ │ ├── useStateAndRef.ts │ │ │ │ │ ├── useSuspend.test.ts │ │ │ │ │ ├── useSuspend.ts │ │ │ │ │ ├── useTabbedNavigation.test.ts │ │ │ │ │ ├── useTabbedNavigation.ts │ │ │ │ │ ├── useTerminalSize.ts │ │ │ │ │ ├── useTerminalTheme.test.tsx │ │ │ │ │ ├── useTerminalTheme.ts │ │ │ │ │ ├── useThemeCommand.ts │ │ │ │ │ ├── useTimedMessage.ts │ │ │ │ │ ├── useTimer.test.tsx │ │ │ │ │ ├── useTimer.ts │ │ │ │ │ ├── useTips.test.ts │ │ │ │ │ ├── useTips.ts │ │ │ │ │ ├── useToolScheduler.test.ts │ │ │ │ │ ├── useToolScheduler.ts │ │ │ │ │ ├── useTurnActivityMonitor.test.ts │ │ │ │ │ ├── useTurnActivityMonitor.ts │ │ │ │ │ ├── useVisibilityToggle.ts │ │ │ │ │ ├── vim-passthrough.test.tsx │ │ │ │ │ ├── vim.test.tsx │ │ │ │ │ └── vim.ts │ │ │ │ ├── key/ │ │ │ │ │ ├── keyBindings.test.ts │ │ │ │ │ ├── keyBindings.ts │ │ │ │ │ ├── keyMatchers.test.ts │ │ │ │ │ ├── keyMatchers.ts │ │ │ │ │ ├── keyToAnsi.ts │ │ │ │ │ ├── keybindingUtils.test.ts │ │ │ │ │ └── keybindingUtils.ts │ │ │ │ ├── layouts/ │ │ │ │ │ ├── DefaultAppLayout.test.tsx │ │ │ │ │ ├── DefaultAppLayout.tsx │ │ │ │ │ ├── ScreenReaderAppLayout.tsx │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ └── DefaultAppLayout.test.tsx.snap │ │ │ │ ├── noninteractive/ │ │ │ │ │ └── nonInteractiveUi.ts │ │ │ │ ├── privacy/ │ │ │ │ │ ├── CloudFreePrivacyNotice.test.tsx │ │ │ │ │ ├── CloudFreePrivacyNotice.tsx │ │ │ │ │ ├── CloudPaidPrivacyNotice.test.tsx │ │ │ │ │ ├── CloudPaidPrivacyNotice.tsx │ │ │ │ │ ├── GeminiPrivacyNotice.test.tsx │ │ │ │ │ ├── GeminiPrivacyNotice.tsx │ │ │ │ │ ├── PrivacyNotice.test.tsx │ │ │ │ │ └── PrivacyNotice.tsx │ │ │ │ ├── semantic-colors.ts │ │ │ │ ├── state/ │ │ │ │ │ ├── extensions.test.ts │ │ │ │ │ └── extensions.ts │ │ │ │ ├── textConstants.ts │ │ │ │ ├── themes/ │ │ │ │ │ ├── builtin/ │ │ │ │ │ │ ├── dark/ │ │ │ │ │ │ │ ├── ansi-dark.ts │ │ │ │ │ │ │ ├── atom-one-dark.ts │ │ │ │ │ │ │ ├── ayu-dark.ts │ │ │ │ │ │ │ ├── default-dark.ts │ │ │ │ │ │ │ ├── dracula-dark.ts │ │ │ │ │ │ │ ├── github-dark.ts │ │ │ │ │ │ │ ├── holiday-dark.ts │ │ │ │ │ │ │ ├── shades-of-purple-dark.ts │ │ │ │ │ │ │ └── solarized-dark.ts │ │ │ │ │ │ ├── light/ │ │ │ │ │ │ │ ├── ansi-light.ts │ │ │ │ │ │ │ ├── ayu-light.ts │ │ │ │ │ │ │ ├── default-light.ts │ │ │ │ │ │ │ ├── github-light.ts │ │ │ │ │ │ │ ├── googlecode-light.ts │ │ │ │ │ │ │ ├── solarized-light.ts │ │ │ │ │ │ │ └── xcode-light.ts │ │ │ │ │ │ └── no-color.ts │ │ │ │ │ ├── color-utils.test.ts │ │ │ │ │ ├── color-utils.ts │ │ │ │ │ ├── semantic-tokens.ts │ │ │ │ │ ├── theme-manager.test.ts │ │ │ │ │ ├── theme-manager.ts │ │ │ │ │ ├── theme.test.ts │ │ │ │ │ └── theme.ts │ │ │ │ ├── types.ts │ │ │ │ └── utils/ │ │ │ │ ├── CodeColorizer.test.tsx │ │ │ │ ├── CodeColorizer.tsx │ │ │ │ ├── ConsolePatcher.ts │ │ │ │ ├── InlineMarkdownRenderer.tsx │ │ │ │ ├── MarkdownDisplay.test.tsx │ │ │ │ ├── MarkdownDisplay.tsx │ │ │ │ ├── TableRenderer.test.tsx │ │ │ │ ├── TableRenderer.tsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── CodeColorizer.test.tsx.snap │ │ │ │ │ ├── MarkdownDisplay.test.tsx.snap │ │ │ │ │ ├── TableRenderer.test.tsx.snap │ │ │ │ │ ├── borderStyles.test.tsx.snap │ │ │ │ │ ├── terminalSetup.test.ts.snap │ │ │ │ │ └── textOutput.test.ts.snap │ │ │ │ ├── borderStyles.test.tsx │ │ │ │ ├── borderStyles.ts │ │ │ │ ├── clipboardUtils.test.ts │ │ │ │ ├── clipboardUtils.ts │ │ │ │ ├── clipboardUtils.windows.test.ts │ │ │ │ ├── commandUtils.test.ts │ │ │ │ ├── commandUtils.ts │ │ │ │ ├── computeStats.test.ts │ │ │ │ ├── computeStats.ts │ │ │ │ ├── confirmingTool.ts │ │ │ │ ├── contextUsage.ts │ │ │ │ ├── directoryUtils.test.ts │ │ │ │ ├── directoryUtils.ts │ │ │ │ ├── displayUtils.test.ts │ │ │ │ ├── displayUtils.ts │ │ │ │ ├── editorUtils.ts │ │ │ │ ├── formatters.test.ts │ │ │ │ ├── formatters.ts │ │ │ │ ├── highlight.test.ts │ │ │ │ ├── highlight.ts │ │ │ │ ├── historyExportUtils.ts │ │ │ │ ├── inlineThinkingMode.ts │ │ │ │ ├── input.test.ts │ │ │ │ ├── input.ts │ │ │ │ ├── isNarrowWidth.ts │ │ │ │ ├── markdownParsingUtils.test.ts │ │ │ │ ├── markdownParsingUtils.ts │ │ │ │ ├── markdownUtilities.test.ts │ │ │ │ ├── markdownUtilities.ts │ │ │ │ ├── mouse.test.ts │ │ │ │ ├── mouse.ts │ │ │ │ ├── pendingAttentionNotification.test.ts │ │ │ │ ├── pendingAttentionNotification.ts │ │ │ │ ├── rewindFileOps.test.ts │ │ │ │ ├── rewindFileOps.ts │ │ │ │ ├── shortcutsHelp.ts │ │ │ │ ├── terminalCapabilityManager.test.ts │ │ │ │ ├── terminalCapabilityManager.ts │ │ │ │ ├── terminalSetup.test.ts │ │ │ │ ├── terminalSetup.ts │ │ │ │ ├── terminalUtils.ts │ │ │ │ ├── textOutput.test.ts │ │ │ │ ├── textOutput.ts │ │ │ │ ├── textUtils.test.ts │ │ │ │ ├── textUtils.ts │ │ │ │ ├── toolLayoutUtils.test.ts │ │ │ │ ├── toolLayoutUtils.ts │ │ │ │ ├── ui-sizing.test.ts │ │ │ │ ├── ui-sizing.ts │ │ │ │ ├── updateCheck.test.ts │ │ │ │ ├── updateCheck.ts │ │ │ │ ├── urlSecurityUtils.test.ts │ │ │ │ └── urlSecurityUtils.ts │ │ │ ├── utils/ │ │ │ │ ├── activityLogger.test.ts │ │ │ │ ├── activityLogger.ts │ │ │ │ ├── agentSettings.test.ts │ │ │ │ ├── agentSettings.ts │ │ │ │ ├── agentUtils.test.ts │ │ │ │ ├── agentUtils.ts │ │ │ │ ├── cleanup.test.ts │ │ │ │ ├── cleanup.ts │ │ │ │ ├── commands.test.ts │ │ │ │ ├── commands.ts │ │ │ │ ├── commentJson.test.ts │ │ │ │ ├── commentJson.ts │ │ │ │ ├── deepMerge.test.ts │ │ │ │ ├── deepMerge.ts │ │ │ │ ├── devtoolsService.test.ts │ │ │ │ ├── devtoolsService.ts │ │ │ │ ├── dialogScopeUtils.test.ts │ │ │ │ ├── dialogScopeUtils.ts │ │ │ │ ├── envVarResolver.test.ts │ │ │ │ ├── envVarResolver.ts │ │ │ │ ├── errors.test.ts │ │ │ │ ├── errors.ts │ │ │ │ ├── events.test.ts │ │ │ │ ├── events.ts │ │ │ │ ├── featureToggleUtils.test.ts │ │ │ │ ├── featureToggleUtils.ts │ │ │ │ ├── gitUtils.test.ts │ │ │ │ ├── gitUtils.ts │ │ │ │ ├── handleAutoUpdate.test.ts │ │ │ │ ├── handleAutoUpdate.ts │ │ │ │ ├── hookSettings.test.ts │ │ │ │ ├── hookSettings.ts │ │ │ │ ├── hookUtils.test.ts │ │ │ │ ├── hookUtils.ts │ │ │ │ ├── installationInfo.test.ts │ │ │ │ ├── installationInfo.ts │ │ │ │ ├── jsonoutput.test.ts │ │ │ │ ├── jsonoutput.ts │ │ │ │ ├── logCleanup.test.ts │ │ │ │ ├── logCleanup.ts │ │ │ │ ├── math.test.ts │ │ │ │ ├── math.ts │ │ │ │ ├── persistentState.test.ts │ │ │ │ ├── persistentState.ts │ │ │ │ ├── processUtils.test.ts │ │ │ │ ├── processUtils.ts │ │ │ │ ├── readStdin.test.ts │ │ │ │ ├── readStdin.ts │ │ │ │ ├── readStdin_safety.test.ts │ │ │ │ ├── relaunch.test.ts │ │ │ │ ├── relaunch.ts │ │ │ │ ├── resolvePath.test.ts │ │ │ │ ├── resolvePath.ts │ │ │ │ ├── sandbox-macos-permissive-open.sb │ │ │ │ ├── sandbox-macos-permissive-proxied.sb │ │ │ │ ├── sandbox-macos-restrictive-open.sb │ │ │ │ ├── sandbox-macos-restrictive-proxied.sb │ │ │ │ ├── sandbox-macos-strict-open.sb │ │ │ │ ├── sandbox-macos-strict-proxied.sb │ │ │ │ ├── sandbox.test.ts │ │ │ │ ├── sandbox.ts │ │ │ │ ├── sandboxUtils.test.ts │ │ │ │ ├── sandboxUtils.ts │ │ │ │ ├── sessionCleanup.integration.test.ts │ │ │ │ ├── sessionCleanup.test.ts │ │ │ │ ├── sessionCleanup.ts │ │ │ │ ├── sessionUtils.test.ts │ │ │ │ ├── sessionUtils.ts │ │ │ │ ├── sessions.test.ts │ │ │ │ ├── sessions.ts │ │ │ │ ├── settingsUtils.test.ts │ │ │ │ ├── settingsUtils.ts │ │ │ │ ├── skillSettings.test.ts │ │ │ │ ├── skillSettings.ts │ │ │ │ ├── skillUtils.test.ts │ │ │ │ ├── skillUtils.ts │ │ │ │ ├── spawnWrapper.ts │ │ │ │ ├── startupWarnings.test.ts │ │ │ │ ├── startupWarnings.ts │ │ │ │ ├── terminalNotifications.test.ts │ │ │ │ ├── terminalNotifications.ts │ │ │ │ ├── terminalTheme.ts │ │ │ │ ├── tierUtils.test.ts │ │ │ │ ├── tierUtils.ts │ │ │ │ ├── toolOutputCleanup.test.ts │ │ │ │ ├── updateEventEmitter.test.ts │ │ │ │ ├── updateEventEmitter.ts │ │ │ │ ├── userStartupWarnings.test.ts │ │ │ │ ├── userStartupWarnings.ts │ │ │ │ ├── windowTitle.test.ts │ │ │ │ └── windowTitle.ts │ │ │ ├── validateNonInterActiveAuth.test.ts │ │ │ └── validateNonInterActiveAuth.ts │ │ ├── test-setup.ts │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── core/ │ │ ├── GEMINI.md │ │ ├── index.ts │ │ ├── package.json │ │ ├── scripts/ │ │ │ ├── bundle-browser-mcp.mjs │ │ │ └── compile-windows-sandbox.js │ │ ├── src/ │ │ │ ├── __mocks__/ │ │ │ │ └── fs/ │ │ │ │ └── promises.ts │ │ │ ├── agent/ │ │ │ │ ├── content-utils.test.ts │ │ │ │ ├── content-utils.ts │ │ │ │ ├── mock.test.ts │ │ │ │ ├── mock.ts │ │ │ │ └── types.ts │ │ │ ├── agents/ │ │ │ │ ├── a2a-client-manager.test.ts │ │ │ │ ├── a2a-client-manager.ts │ │ │ │ ├── a2a-errors.test.ts │ │ │ │ ├── a2a-errors.ts │ │ │ │ ├── a2aUtils.test.ts │ │ │ │ ├── a2aUtils.ts │ │ │ │ ├── acknowledgedAgents.test.ts │ │ │ │ ├── acknowledgedAgents.ts │ │ │ │ ├── agent-scheduler.test.ts │ │ │ │ ├── agent-scheduler.ts │ │ │ │ ├── agentLoader.test.ts │ │ │ │ ├── agentLoader.ts │ │ │ │ ├── auth-provider/ │ │ │ │ │ ├── api-key-provider.test.ts │ │ │ │ │ ├── api-key-provider.ts │ │ │ │ │ ├── base-provider.test.ts │ │ │ │ │ ├── base-provider.ts │ │ │ │ │ ├── factory.test.ts │ │ │ │ │ ├── factory.ts │ │ │ │ │ ├── google-credentials-provider.test.ts │ │ │ │ │ ├── google-credentials-provider.ts │ │ │ │ │ ├── http-provider.test.ts │ │ │ │ │ ├── http-provider.ts │ │ │ │ │ ├── oauth2-provider.test.ts │ │ │ │ │ ├── oauth2-provider.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ ├── value-resolver.test.ts │ │ │ │ │ └── value-resolver.ts │ │ │ │ ├── browser/ │ │ │ │ │ ├── analyzeScreenshot.test.ts │ │ │ │ │ ├── analyzeScreenshot.ts │ │ │ │ │ ├── automationOverlay.ts │ │ │ │ │ ├── browser-tools-manifest.json │ │ │ │ │ ├── browserAgentDefinition.ts │ │ │ │ │ ├── browserAgentFactory.test.ts │ │ │ │ │ ├── browserAgentFactory.ts │ │ │ │ │ ├── browserAgentInvocation.test.ts │ │ │ │ │ ├── browserAgentInvocation.ts │ │ │ │ │ ├── browserManager.test.ts │ │ │ │ │ ├── browserManager.ts │ │ │ │ │ ├── inputBlocker.test.ts │ │ │ │ │ ├── inputBlocker.ts │ │ │ │ │ ├── mcpToolWrapper.test.ts │ │ │ │ │ ├── mcpToolWrapper.ts │ │ │ │ │ ├── mcpToolWrapperConfirmation.test.ts │ │ │ │ │ └── modelAvailability.ts │ │ │ │ ├── cli-help-agent.test.ts │ │ │ │ ├── cli-help-agent.ts │ │ │ │ ├── codebase-investigator.test.ts │ │ │ │ ├── codebase-investigator.ts │ │ │ │ ├── generalist-agent.test.ts │ │ │ │ ├── generalist-agent.ts │ │ │ │ ├── local-executor.test.ts │ │ │ │ ├── local-executor.ts │ │ │ │ ├── local-invocation.test.ts │ │ │ │ ├── local-invocation.ts │ │ │ │ ├── memory-manager-agent.test.ts │ │ │ │ ├── memory-manager-agent.ts │ │ │ │ ├── registry.test.ts │ │ │ │ ├── registry.ts │ │ │ │ ├── registry_acknowledgement.test.ts │ │ │ │ ├── remote-invocation.test.ts │ │ │ │ ├── remote-invocation.ts │ │ │ │ ├── subagent-tool-wrapper.test.ts │ │ │ │ ├── subagent-tool-wrapper.ts │ │ │ │ ├── subagent-tool.test.ts │ │ │ │ ├── subagent-tool.ts │ │ │ │ ├── types.ts │ │ │ │ ├── utils.test.ts │ │ │ │ └── utils.ts │ │ │ ├── availability/ │ │ │ │ ├── errorClassification.ts │ │ │ │ ├── fallbackIntegration.test.ts │ │ │ │ ├── modelAvailabilityService.test.ts │ │ │ │ ├── modelAvailabilityService.ts │ │ │ │ ├── modelPolicy.ts │ │ │ │ ├── policyCatalog.test.ts │ │ │ │ ├── policyCatalog.ts │ │ │ │ ├── policyHelpers.test.ts │ │ │ │ ├── policyHelpers.ts │ │ │ │ └── testUtils.ts │ │ │ ├── billing/ │ │ │ │ ├── billing.test.ts │ │ │ │ ├── billing.ts │ │ │ │ └── index.ts │ │ │ ├── code_assist/ │ │ │ │ ├── admin/ │ │ │ │ │ ├── admin_controls.test.ts │ │ │ │ │ ├── admin_controls.ts │ │ │ │ │ ├── mcpUtils.test.ts │ │ │ │ │ └── mcpUtils.ts │ │ │ │ ├── codeAssist.test.ts │ │ │ │ ├── codeAssist.ts │ │ │ │ ├── converter.test.ts │ │ │ │ ├── converter.ts │ │ │ │ ├── experiments/ │ │ │ │ │ ├── client_metadata.test.ts │ │ │ │ │ ├── client_metadata.ts │ │ │ │ │ ├── experiments.test.ts │ │ │ │ │ ├── experiments.ts │ │ │ │ │ ├── experiments_local.test.ts │ │ │ │ │ ├── flagNames.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── oauth-credential-storage.test.ts │ │ │ │ ├── oauth-credential-storage.ts │ │ │ │ ├── oauth2.test.ts │ │ │ │ ├── oauth2.ts │ │ │ │ ├── server.test.ts │ │ │ │ ├── server.ts │ │ │ │ ├── setup.test.ts │ │ │ │ ├── setup.ts │ │ │ │ ├── telemetry.test.ts │ │ │ │ ├── telemetry.ts │ │ │ │ └── types.ts │ │ │ ├── commands/ │ │ │ │ ├── extensions.test.ts │ │ │ │ ├── extensions.ts │ │ │ │ ├── init.test.ts │ │ │ │ ├── init.ts │ │ │ │ ├── memory.test.ts │ │ │ │ ├── memory.ts │ │ │ │ ├── restore.test.ts │ │ │ │ ├── restore.ts │ │ │ │ └── types.ts │ │ │ ├── config/ │ │ │ │ ├── agent-loop-context.ts │ │ │ │ ├── config.test.ts │ │ │ │ ├── config.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── defaultModelConfigs.ts │ │ │ │ ├── extensions/ │ │ │ │ │ ├── integrity.test.ts │ │ │ │ │ ├── integrity.ts │ │ │ │ │ └── integrityTypes.ts │ │ │ │ ├── flashFallback.test.ts │ │ │ │ ├── injectionService.test.ts │ │ │ │ ├── injectionService.ts │ │ │ │ ├── memory.test.ts │ │ │ │ ├── memory.ts │ │ │ │ ├── models.test.ts │ │ │ │ ├── models.ts │ │ │ │ ├── path-validation.test.ts │ │ │ │ ├── projectRegistry.test.ts │ │ │ │ ├── projectRegistry.ts │ │ │ │ ├── sandbox-integration.test.ts │ │ │ │ ├── storage.test.ts │ │ │ │ ├── storage.ts │ │ │ │ ├── storageMigration.test.ts │ │ │ │ ├── storageMigration.ts │ │ │ │ └── trackerFeatureFlag.test.ts │ │ │ ├── confirmation-bus/ │ │ │ │ ├── index.ts │ │ │ │ ├── message-bus.test.ts │ │ │ │ ├── message-bus.ts │ │ │ │ └── types.ts │ │ │ ├── core/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── prompts.test.ts.snap │ │ │ │ ├── apiKeyCredentialStorage.test.ts │ │ │ │ ├── apiKeyCredentialStorage.ts │ │ │ │ ├── baseLlmClient.test.ts │ │ │ │ ├── baseLlmClient.ts │ │ │ │ ├── client.test.ts │ │ │ │ ├── client.ts │ │ │ │ ├── contentGenerator.test.ts │ │ │ │ ├── contentGenerator.ts │ │ │ │ ├── coreToolHookTriggers.test.ts │ │ │ │ ├── coreToolHookTriggers.ts │ │ │ │ ├── coreToolScheduler.test.ts │ │ │ │ ├── coreToolScheduler.ts │ │ │ │ ├── fakeContentGenerator.test.ts │ │ │ │ ├── fakeContentGenerator.ts │ │ │ │ ├── geminiChat.test.ts │ │ │ │ ├── geminiChat.ts │ │ │ │ ├── geminiChat_network_retry.test.ts │ │ │ │ ├── geminiRequest.ts │ │ │ │ ├── localLiteRtLmClient.test.ts │ │ │ │ ├── localLiteRtLmClient.ts │ │ │ │ ├── logger.test.ts │ │ │ │ ├── logger.ts │ │ │ │ ├── loggingContentGenerator.test.ts │ │ │ │ ├── loggingContentGenerator.ts │ │ │ │ ├── prompts-substitution.test.ts │ │ │ │ ├── prompts.test.ts │ │ │ │ ├── prompts.ts │ │ │ │ ├── recordingContentGenerator.test.ts │ │ │ │ ├── recordingContentGenerator.ts │ │ │ │ ├── tokenLimits.test.ts │ │ │ │ ├── tokenLimits.ts │ │ │ │ ├── turn.test.ts │ │ │ │ └── turn.ts │ │ │ ├── fallback/ │ │ │ │ ├── handler.test.ts │ │ │ │ ├── handler.ts │ │ │ │ └── types.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 │ │ │ │ ├── hookTranslator.test.ts │ │ │ │ ├── hookTranslator.ts │ │ │ │ ├── index.ts │ │ │ │ ├── runtimeHooks.test.ts │ │ │ │ ├── trustedHooks.test.ts │ │ │ │ ├── trustedHooks.ts │ │ │ │ ├── types.test.ts │ │ │ │ └── types.ts │ │ │ ├── ide/ │ │ │ │ ├── constants.ts │ │ │ │ ├── detect-ide.test.ts │ │ │ │ ├── detect-ide.ts │ │ │ │ ├── ide-client.test.ts │ │ │ │ ├── ide-client.ts │ │ │ │ ├── ide-connection-utils.test.ts │ │ │ │ ├── ide-connection-utils.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 │ │ │ ├── mcp/ │ │ │ │ ├── auth-provider.ts │ │ │ │ ├── google-auth-provider.test.ts │ │ │ │ ├── google-auth-provider.ts │ │ │ │ ├── mcp-oauth-provider.test.ts │ │ │ │ ├── mcp-oauth-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 │ │ │ │ ├── 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 │ │ │ ├── output/ │ │ │ │ ├── json-formatter.test.ts │ │ │ │ ├── json-formatter.ts │ │ │ │ ├── stream-json-formatter.test.ts │ │ │ │ ├── stream-json-formatter.ts │ │ │ │ └── types.ts │ │ │ ├── policy/ │ │ │ │ ├── config.test.ts │ │ │ │ ├── config.ts │ │ │ │ ├── index.ts │ │ │ │ ├── integrity.test.ts │ │ │ │ ├── integrity.ts │ │ │ │ ├── memory-manager-policy.test.ts │ │ │ │ ├── persistence.test.ts │ │ │ │ ├── policies/ │ │ │ │ │ ├── conseca.toml │ │ │ │ │ ├── discovered.toml │ │ │ │ │ ├── memory-manager.toml │ │ │ │ │ ├── plan.toml │ │ │ │ │ ├── read-only.toml │ │ │ │ │ ├── tracker.toml │ │ │ │ │ ├── write.toml │ │ │ │ │ └── yolo.toml │ │ │ │ ├── policy-engine.test.ts │ │ │ │ ├── policy-engine.ts │ │ │ │ ├── policy-updater.test.ts │ │ │ │ ├── shell-safety.test.ts │ │ │ │ ├── stable-stringify.ts │ │ │ │ ├── toml-loader.test.ts │ │ │ │ ├── toml-loader.ts │ │ │ │ ├── types.ts │ │ │ │ ├── utils.test.ts │ │ │ │ ├── utils.ts │ │ │ │ └── workspace-policy.test.ts │ │ │ ├── prompts/ │ │ │ │ ├── mcp-prompts.test.ts │ │ │ │ ├── mcp-prompts.ts │ │ │ │ ├── prompt-registry.test.ts │ │ │ │ ├── prompt-registry.ts │ │ │ │ ├── promptProvider.test.ts │ │ │ │ ├── promptProvider.ts │ │ │ │ ├── snippets-memory-manager.test.ts │ │ │ │ ├── snippets.legacy.ts │ │ │ │ ├── snippets.ts │ │ │ │ ├── utils.test.ts │ │ │ │ └── utils.ts │ │ │ ├── resources/ │ │ │ │ ├── resource-registry.test.ts │ │ │ │ └── resource-registry.ts │ │ │ ├── routing/ │ │ │ │ ├── modelRouterService.test.ts │ │ │ │ ├── modelRouterService.ts │ │ │ │ ├── routingStrategy.ts │ │ │ │ └── strategies/ │ │ │ │ ├── approvalModeStrategy.test.ts │ │ │ │ ├── approvalModeStrategy.ts │ │ │ │ ├── classifierStrategy.test.ts │ │ │ │ ├── classifierStrategy.ts │ │ │ │ ├── compositeStrategy.test.ts │ │ │ │ ├── compositeStrategy.ts │ │ │ │ ├── defaultStrategy.test.ts │ │ │ │ ├── defaultStrategy.ts │ │ │ │ ├── fallbackStrategy.test.ts │ │ │ │ ├── fallbackStrategy.ts │ │ │ │ ├── gemmaClassifierStrategy.test.ts │ │ │ │ ├── gemmaClassifierStrategy.ts │ │ │ │ ├── numericalClassifierStrategy.test.ts │ │ │ │ ├── numericalClassifierStrategy.ts │ │ │ │ ├── overrideStrategy.test.ts │ │ │ │ └── overrideStrategy.ts │ │ │ ├── safety/ │ │ │ │ ├── built-in.test.ts │ │ │ │ ├── built-in.ts │ │ │ │ ├── checker-runner.test.ts │ │ │ │ ├── checker-runner.ts │ │ │ │ ├── conseca/ │ │ │ │ │ ├── conseca.test.ts │ │ │ │ │ ├── conseca.ts │ │ │ │ │ ├── integration.test.ts │ │ │ │ │ ├── policy-enforcer.test.ts │ │ │ │ │ ├── policy-enforcer.ts │ │ │ │ │ ├── policy-generator.test.ts │ │ │ │ │ ├── policy-generator.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── context-builder.test.ts │ │ │ │ ├── context-builder.ts │ │ │ │ ├── protocol.ts │ │ │ │ ├── registry.test.ts │ │ │ │ └── registry.ts │ │ │ ├── sandbox/ │ │ │ │ ├── linux/ │ │ │ │ │ ├── LinuxSandboxManager.test.ts │ │ │ │ │ └── LinuxSandboxManager.ts │ │ │ │ └── macos/ │ │ │ │ ├── MacOsSandboxManager.integration.test.ts │ │ │ │ ├── MacOsSandboxManager.test.ts │ │ │ │ ├── MacOsSandboxManager.ts │ │ │ │ ├── baseProfile.ts │ │ │ │ ├── seatbeltArgsBuilder.test.ts │ │ │ │ └── seatbeltArgsBuilder.ts │ │ │ ├── scheduler/ │ │ │ │ ├── confirmation.test.ts │ │ │ │ ├── confirmation.ts │ │ │ │ ├── policy.test.ts │ │ │ │ ├── policy.ts │ │ │ │ ├── scheduler.test.ts │ │ │ │ ├── scheduler.ts │ │ │ │ ├── scheduler_parallel.test.ts │ │ │ │ ├── scheduler_waiting_callback.test.ts │ │ │ │ ├── state-manager.test.ts │ │ │ │ ├── state-manager.ts │ │ │ │ ├── tool-executor.test.ts │ │ │ │ ├── tool-executor.ts │ │ │ │ ├── tool-modifier.test.ts │ │ │ │ ├── tool-modifier.ts │ │ │ │ └── types.ts │ │ │ ├── services/ │ │ │ │ ├── FolderTrustDiscoveryService.test.ts │ │ │ │ ├── FolderTrustDiscoveryService.ts │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── toolOutputMaskingService.test.ts.snap │ │ │ │ ├── chatCompressionService.test.ts │ │ │ │ ├── chatCompressionService.ts │ │ │ │ ├── chatRecordingService.test.ts │ │ │ │ ├── chatRecordingService.ts │ │ │ │ ├── contextManager.test.ts │ │ │ │ ├── contextManager.ts │ │ │ │ ├── environmentSanitization.test.ts │ │ │ │ ├── environmentSanitization.ts │ │ │ │ ├── executionLifecycleService.test.ts │ │ │ │ ├── executionLifecycleService.ts │ │ │ │ ├── fileDiscoveryService.test.ts │ │ │ │ ├── fileDiscoveryService.ts │ │ │ │ ├── fileKeychain.ts │ │ │ │ ├── fileSystemService.test.ts │ │ │ │ ├── fileSystemService.ts │ │ │ │ ├── gitService.test.ts │ │ │ │ ├── gitService.ts │ │ │ │ ├── keychainService.test.ts │ │ │ │ ├── keychainService.ts │ │ │ │ ├── keychainTypes.ts │ │ │ │ ├── loopDetectionService.test.ts │ │ │ │ ├── loopDetectionService.ts │ │ │ │ ├── modelConfig.golden.test.ts │ │ │ │ ├── modelConfig.integration.test.ts │ │ │ │ ├── modelConfigService.test.ts │ │ │ │ ├── modelConfigService.ts │ │ │ │ ├── modelConfigServiceTestUtils.ts │ │ │ │ ├── sandboxManager.test.ts │ │ │ │ ├── sandboxManager.ts │ │ │ │ ├── sandboxManagerFactory.ts │ │ │ │ ├── sandboxedFileSystemService.test.ts │ │ │ │ ├── sandboxedFileSystemService.ts │ │ │ │ ├── scripts/ │ │ │ │ │ └── GeminiSandbox.cs │ │ │ │ ├── sessionSummaryService.test.ts │ │ │ │ ├── sessionSummaryService.ts │ │ │ │ ├── sessionSummaryUtils.test.ts │ │ │ │ ├── sessionSummaryUtils.ts │ │ │ │ ├── shellExecutionService.test.ts │ │ │ │ ├── shellExecutionService.ts │ │ │ │ ├── test-data/ │ │ │ │ │ ├── resolved-aliases-retry.golden.json │ │ │ │ │ └── resolved-aliases.golden.json │ │ │ │ ├── toolOutputMaskingService.test.ts │ │ │ │ ├── toolOutputMaskingService.ts │ │ │ │ ├── trackerService.test.ts │ │ │ │ ├── trackerService.ts │ │ │ │ ├── trackerTypes.ts │ │ │ │ ├── windowsSandboxManager.test.ts │ │ │ │ └── windowsSandboxManager.ts │ │ │ ├── skills/ │ │ │ │ ├── builtin/ │ │ │ │ │ └── skill-creator/ │ │ │ │ │ ├── SKILL.md │ │ │ │ │ └── scripts/ │ │ │ │ │ ├── init_skill.cjs │ │ │ │ │ ├── package_skill.cjs │ │ │ │ │ └── validate_skill.cjs │ │ │ │ ├── skillLoader.test.ts │ │ │ │ ├── skillLoader.ts │ │ │ │ ├── skillManager.test.ts │ │ │ │ ├── skillManager.ts │ │ │ │ └── skillManagerAlias.test.ts │ │ │ ├── telemetry/ │ │ │ │ ├── activity-detector.test.ts │ │ │ │ ├── activity-detector.ts │ │ │ │ ├── activity-monitor.test.ts │ │ │ │ ├── activity-monitor.ts │ │ │ │ ├── activity-types.ts │ │ │ │ ├── billingEvents.test.ts │ │ │ │ ├── billingEvents.ts │ │ │ │ ├── clearcut-logger/ │ │ │ │ │ ├── clearcut-logger.test.ts │ │ │ │ │ ├── clearcut-logger.ts │ │ │ │ │ └── event-metadata-key.ts │ │ │ │ ├── config.test.ts │ │ │ │ ├── config.ts │ │ │ │ ├── conseca-logger.test.ts │ │ │ │ ├── conseca-logger.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── file-exporters.test.ts │ │ │ │ ├── file-exporters.ts │ │ │ │ ├── gcp-exporters.test.ts │ │ │ │ ├── gcp-exporters.ts │ │ │ │ ├── high-water-mark-tracker.test.ts │ │ │ │ ├── high-water-mark-tracker.ts │ │ │ │ ├── index.ts │ │ │ │ ├── integration.test.circular.ts │ │ │ │ ├── llmRole.ts │ │ │ │ ├── loggers.test.circular.ts │ │ │ │ ├── loggers.test.ts │ │ │ │ ├── loggers.ts │ │ │ │ ├── memory-monitor.test.ts │ │ │ │ ├── memory-monitor.ts │ │ │ │ ├── metrics.test.ts │ │ │ │ ├── metrics.ts │ │ │ │ ├── rate-limiter.test.ts │ │ │ │ ├── rate-limiter.ts │ │ │ │ ├── sanitize.test.ts │ │ │ │ ├── sanitize.ts │ │ │ │ ├── sdk.test.ts │ │ │ │ ├── sdk.ts │ │ │ │ ├── semantic.test.ts │ │ │ │ ├── semantic.truncation.test.ts │ │ │ │ ├── semantic.ts │ │ │ │ ├── startupProfiler.test.ts │ │ │ │ ├── startupProfiler.ts │ │ │ │ ├── telemetry-utils.test.ts │ │ │ │ ├── telemetry-utils.ts │ │ │ │ ├── telemetry.test.ts │ │ │ │ ├── telemetryAttributes.ts │ │ │ │ ├── tool-call-decision.ts │ │ │ │ ├── trace.test.ts │ │ │ │ ├── trace.ts │ │ │ │ ├── types.ts │ │ │ │ ├── uiTelemetry.test.ts │ │ │ │ └── uiTelemetry.ts │ │ │ ├── test-utils/ │ │ │ │ ├── config.ts │ │ │ │ ├── index.ts │ │ │ │ ├── mock-message-bus.ts │ │ │ │ ├── mock-tool.ts │ │ │ │ └── mockWorkspaceContext.ts │ │ │ ├── tools/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── read-file.test.ts.snap │ │ │ │ │ └── shell.test.ts.snap │ │ │ │ ├── activate-skill.test.ts │ │ │ │ ├── activate-skill.ts │ │ │ │ ├── ask-user.test.ts │ │ │ │ ├── ask-user.ts │ │ │ │ ├── base-tool-invocation.test.ts │ │ │ │ ├── confirmation-policy.test.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── definitions/ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── coreToolsModelSnapshots.test.ts.snap │ │ │ │ │ ├── base-declarations.ts │ │ │ │ │ ├── coreTools.ts │ │ │ │ │ ├── coreToolsModelSnapshots.test.ts │ │ │ │ │ ├── dynamic-declaration-helpers.ts │ │ │ │ │ ├── model-family-sets/ │ │ │ │ │ │ ├── default-legacy.ts │ │ │ │ │ │ └── gemini-3.ts │ │ │ │ │ ├── modelFamilyService.ts │ │ │ │ │ ├── resolver.test.ts │ │ │ │ │ ├── resolver.ts │ │ │ │ │ ├── trackerTools.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── diff-utils.test.ts │ │ │ │ ├── diff-utils.ts │ │ │ │ ├── diffOptions.test.ts │ │ │ │ ├── diffOptions.ts │ │ │ │ ├── edit.test.ts │ │ │ │ ├── edit.ts │ │ │ │ ├── enter-plan-mode.test.ts │ │ │ │ ├── enter-plan-mode.ts │ │ │ │ ├── exit-plan-mode.test.ts │ │ │ │ ├── exit-plan-mode.ts │ │ │ │ ├── get-internal-docs.test.ts │ │ │ │ ├── get-internal-docs.ts │ │ │ │ ├── glob.test.ts │ │ │ │ ├── glob.ts │ │ │ │ ├── grep-utils.ts │ │ │ │ ├── grep.test.ts │ │ │ │ ├── grep.ts │ │ │ │ ├── jit-context.test.ts │ │ │ │ ├── jit-context.ts │ │ │ │ ├── line-endings.test.ts │ │ │ │ ├── ls.test.ts │ │ │ │ ├── ls.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 │ │ │ │ ├── message-bus-integration.test.ts │ │ │ │ ├── modifiable-tool.test.ts │ │ │ │ ├── modifiable-tool.ts │ │ │ │ ├── omissionPlaceholderDetector.test.ts │ │ │ │ ├── omissionPlaceholderDetector.ts │ │ │ │ ├── read-file.test.ts │ │ │ │ ├── read-file.ts │ │ │ │ ├── read-many-files.test.ts │ │ │ │ ├── read-many-files.ts │ │ │ │ ├── ripGrep.test.ts │ │ │ │ ├── ripGrep.ts │ │ │ │ ├── shell.test.ts │ │ │ │ ├── shell.ts │ │ │ │ ├── tool-error.ts │ │ │ │ ├── tool-names.test.ts │ │ │ │ ├── tool-names.ts │ │ │ │ ├── tool-registry.test.ts │ │ │ │ ├── tool-registry.ts │ │ │ │ ├── tools.test.ts │ │ │ │ ├── tools.ts │ │ │ │ ├── trackerTools.test.ts │ │ │ │ ├── trackerTools.ts │ │ │ │ ├── web-fetch.test.ts │ │ │ │ ├── web-fetch.ts │ │ │ │ ├── web-search.test.ts │ │ │ │ ├── web-search.ts │ │ │ │ ├── write-file.test.ts │ │ │ │ ├── write-file.ts │ │ │ │ ├── write-todos.test.ts │ │ │ │ ├── write-todos.ts │ │ │ │ ├── xcode-mcp-fix-transport.test.ts │ │ │ │ └── xcode-mcp-fix-transport.ts │ │ │ ├── utils/ │ │ │ │ ├── __fixtures__/ │ │ │ │ │ └── dummy.wasm │ │ │ │ ├── apiConversionUtils.test.ts │ │ │ │ ├── apiConversionUtils.ts │ │ │ │ ├── approvalModeUtils.test.ts │ │ │ │ ├── approvalModeUtils.ts │ │ │ │ ├── authConsent.test.ts │ │ │ │ ├── authConsent.ts │ │ │ │ ├── bfsFileSearch.test.ts │ │ │ │ ├── bfsFileSearch.ts │ │ │ │ ├── browser.ts │ │ │ │ ├── browserConsent.test.ts │ │ │ │ ├── browserConsent.ts │ │ │ │ ├── cache.test.ts │ │ │ │ ├── cache.ts │ │ │ │ ├── channel.test.ts │ │ │ │ ├── channel.ts │ │ │ │ ├── checkpointUtils.test.ts │ │ │ │ ├── checkpointUtils.ts │ │ │ │ ├── checks.test.ts │ │ │ │ ├── checks.ts │ │ │ │ ├── compatibility.test.ts │ │ │ │ ├── compatibility.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── customHeaderUtils.test.ts │ │ │ │ ├── customHeaderUtils.ts │ │ │ │ ├── deadlineTimer.test.ts │ │ │ │ ├── deadlineTimer.ts │ │ │ │ ├── debugLogger.test.ts │ │ │ │ ├── debugLogger.ts │ │ │ │ ├── delay.test.ts │ │ │ │ ├── delay.ts │ │ │ │ ├── editCorrector.test.ts │ │ │ │ ├── editCorrector.ts │ │ │ │ ├── editor.test.ts │ │ │ │ ├── editor.ts │ │ │ │ ├── envExpansion.test.ts │ │ │ │ ├── envExpansion.ts │ │ │ │ ├── environmentContext.test.ts │ │ │ │ ├── environmentContext.ts │ │ │ │ ├── errorParsing.test.ts │ │ │ │ ├── errorParsing.ts │ │ │ │ ├── errorReporting.test.ts │ │ │ │ ├── errorReporting.ts │ │ │ │ ├── errors.test.ts │ │ │ │ ├── errors.ts │ │ │ │ ├── errors_timeout.test.ts │ │ │ │ ├── events.test.ts │ │ │ │ ├── events.ts │ │ │ │ ├── exitCodes.ts │ │ │ │ ├── extensionLoader.test.ts │ │ │ │ ├── extensionLoader.ts │ │ │ │ ├── fastAckHelper.test.ts │ │ │ │ ├── fastAckHelper.ts │ │ │ │ ├── fetch.test.ts │ │ │ │ ├── fetch.ts │ │ │ │ ├── fileDiffUtils.test.ts │ │ │ │ ├── fileDiffUtils.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 │ │ │ │ ├── flashFallback.test.ts │ │ │ │ ├── formatters.test.ts │ │ │ │ ├── formatters.ts │ │ │ │ ├── fsErrorMessages.test.ts │ │ │ │ ├── fsErrorMessages.ts │ │ │ │ ├── generateContentResponseUtilities.test.ts │ │ │ │ ├── generateContentResponseUtilities.ts │ │ │ │ ├── getFolderStructure.test.ts │ │ │ │ ├── getFolderStructure.ts │ │ │ │ ├── getPty.ts │ │ │ │ ├── gitIgnoreParser.test.ts │ │ │ │ ├── gitIgnoreParser.ts │ │ │ │ ├── gitUtils.ts │ │ │ │ ├── googleErrors.test.ts │ │ │ │ ├── googleErrors.ts │ │ │ │ ├── googleQuotaErrors.test.ts │ │ │ │ ├── googleQuotaErrors.ts │ │ │ │ ├── headless.test.ts │ │ │ │ ├── headless.ts │ │ │ │ ├── httpErrors.ts │ │ │ │ ├── ignoreFileParser.test.ts │ │ │ │ ├── ignoreFileParser.ts │ │ │ │ ├── ignorePatterns.test.ts │ │ │ │ ├── ignorePatterns.ts │ │ │ │ ├── installationManager.test.ts │ │ │ │ ├── installationManager.ts │ │ │ │ ├── language-detection.test.ts │ │ │ │ ├── language-detection.ts │ │ │ │ ├── llm-edit-fixer.test.ts │ │ │ │ ├── llm-edit-fixer.ts │ │ │ │ ├── markdownUtils.test.ts │ │ │ │ ├── markdownUtils.ts │ │ │ │ ├── memoryDiscovery.test.ts │ │ │ │ ├── memoryDiscovery.ts │ │ │ │ ├── memoryImportProcessor.test.ts │ │ │ │ ├── memoryImportProcessor.ts │ │ │ │ ├── messageInspectors.ts │ │ │ │ ├── nextSpeakerChecker.test.ts │ │ │ │ ├── nextSpeakerChecker.ts │ │ │ │ ├── oauth-flow.test.ts │ │ │ │ ├── oauth-flow.ts │ │ │ │ ├── package.test.ts │ │ │ │ ├── package.ts │ │ │ │ ├── partUtils.test.ts │ │ │ │ ├── partUtils.ts │ │ │ │ ├── pathCorrector.test.ts │ │ │ │ ├── pathCorrector.ts │ │ │ │ ├── pathReader.test.ts │ │ │ │ ├── pathReader.ts │ │ │ │ ├── paths.test.ts │ │ │ │ ├── paths.ts │ │ │ │ ├── planUtils.test.ts │ │ │ │ ├── planUtils.ts │ │ │ │ ├── process-utils.test.ts │ │ │ │ ├── process-utils.ts │ │ │ │ ├── promptIdContext.ts │ │ │ │ ├── quotaErrorDetection.ts │ │ │ │ ├── retry.test.ts │ │ │ │ ├── retry.ts │ │ │ │ ├── safeJsonStringify.test.ts │ │ │ │ ├── safeJsonStringify.ts │ │ │ │ ├── schemaValidator.test.ts │ │ │ │ ├── schemaValidator.ts │ │ │ │ ├── secure-browser-launcher.test.ts │ │ │ │ ├── secure-browser-launcher.ts │ │ │ │ ├── security.test.ts │ │ │ │ ├── security.ts │ │ │ │ ├── session.ts │ │ │ │ ├── sessionUtils.test.ts │ │ │ │ ├── sessionUtils.ts │ │ │ │ ├── shell-utils.integration.test.ts │ │ │ │ ├── shell-utils.test.ts │ │ │ │ ├── shell-utils.ts │ │ │ │ ├── stdio.test.ts │ │ │ │ ├── stdio.ts │ │ │ │ ├── summarizer.test.ts │ │ │ │ ├── summarizer.ts │ │ │ │ ├── surface.ts │ │ │ │ ├── systemEncoding.test.ts │ │ │ │ ├── systemEncoding.ts │ │ │ │ ├── terminal.ts │ │ │ │ ├── terminalSerializer.test.ts │ │ │ │ ├── terminalSerializer.ts │ │ │ │ ├── testUtils.ts │ │ │ │ ├── textUtils.test.ts │ │ │ │ ├── textUtils.ts │ │ │ │ ├── thoughtUtils.test.ts │ │ │ │ ├── thoughtUtils.ts │ │ │ │ ├── tokenCalculation.test.ts │ │ │ │ ├── tokenCalculation.ts │ │ │ │ ├── tool-utils.test.ts │ │ │ │ ├── tool-utils.ts │ │ │ │ ├── toolCallContext.test.ts │ │ │ │ ├── toolCallContext.ts │ │ │ │ ├── userAccountManager.test.ts │ │ │ │ ├── userAccountManager.ts │ │ │ │ ├── version.test.ts │ │ │ │ ├── version.ts │ │ │ │ ├── workspaceContext.test.ts │ │ │ │ └── workspaceContext.ts │ │ │ └── voice/ │ │ │ ├── responseFormatter.test.ts │ │ │ └── responseFormatter.ts │ │ ├── test-setup.ts │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── devtools/ │ │ ├── GEMINI.md │ │ ├── client/ │ │ │ ├── index.html │ │ │ └── src/ │ │ │ ├── App.tsx │ │ │ ├── hooks.ts │ │ │ └── main.tsx │ │ ├── esbuild.client.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── tsconfig.build.json │ │ └── tsconfig.json │ ├── sdk/ │ │ ├── GEMINI.md │ │ ├── README.md │ │ ├── SDK_DESIGN.md │ │ ├── examples/ │ │ │ ├── session-context.ts │ │ │ └── simple.ts │ │ ├── index.ts │ │ ├── package.json │ │ ├── src/ │ │ │ ├── agent.integration.test.ts │ │ │ ├── agent.ts │ │ │ ├── fs.ts │ │ │ ├── index.ts │ │ │ ├── session.ts │ │ │ ├── shell.ts │ │ │ ├── skills.integration.test.ts │ │ │ ├── skills.ts │ │ │ ├── tool.integration.test.ts │ │ │ ├── tool.test.ts │ │ │ ├── tool.ts │ │ │ └── types.ts │ │ ├── test-data/ │ │ │ ├── agent-async-instructions.json │ │ │ ├── agent-dynamic-instructions.json │ │ │ ├── agent-resume-session.json │ │ │ ├── agent-static-instructions.json │ │ │ ├── skill-dir-success.json │ │ │ ├── skill-root-success.json │ │ │ ├── skills/ │ │ │ │ └── pirate-skill/ │ │ │ │ └── SKILL.md │ │ │ ├── tool-catchall-error.json │ │ │ ├── tool-error-recovery.json │ │ │ └── tool-success.json │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── test-utils/ │ │ ├── GEMINI.md │ │ ├── index.ts │ │ ├── package.json │ │ ├── src/ │ │ │ ├── file-system-test-helpers.ts │ │ │ ├── index.ts │ │ │ ├── mock-utils.ts │ │ │ └── test-rig.ts │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ └── vscode-ide-companion/ │ ├── .vscode/ │ │ ├── launch.json │ │ └── tasks.json │ ├── .vscodeignore │ ├── GEMINI.md │ ├── LICENSE │ ├── NOTICES.txt │ ├── README.md │ ├── development.md │ ├── esbuild.js │ ├── package.json │ ├── scripts/ │ │ ├── check-vscode-release.js │ │ └── generate-notices.js │ ├── src/ │ │ ├── diff-manager.ts │ │ ├── extension.test.ts │ │ ├── extension.ts │ │ ├── ide-server.test.ts │ │ ├── ide-server.ts │ │ ├── open-files-manager.test.ts │ │ ├── open-files-manager.ts │ │ └── utils/ │ │ └── logger.ts │ └── tsconfig.json ├── schemas/ │ └── settings.schema.json ├── scripts/ │ ├── aggregate_evals.js │ ├── batch_triage.sh │ ├── build.js │ ├── build_binary.js │ ├── build_package.js │ ├── build_sandbox.js │ ├── build_vscode_companion.js │ ├── changed_prompt.js │ ├── check-build-status.js │ ├── check-lockfile.js │ ├── clean.js │ ├── cleanup-branches.ts │ ├── close_duplicate_issues.js │ ├── copy_bundle_assets.js │ ├── copy_files.js │ ├── create_alias.sh │ ├── deflake.js │ ├── entitlements.plist │ ├── generate-git-commit-info.js │ ├── generate-keybindings-doc.ts │ ├── generate-settings-doc.ts │ ├── generate-settings-schema.ts │ ├── get-release-version.js │ ├── lint.js │ ├── local_telemetry.js │ ├── pre-commit.js │ ├── prepare-github-release.js │ ├── prepare-npm-release.js │ ├── prepare-package.js │ ├── relabel_issues.sh │ ├── releasing/ │ │ ├── create-patch-pr.js │ │ ├── patch-comment.js │ │ ├── patch-create-comment.js │ │ └── patch-trigger.js │ ├── review.sh │ ├── sandbox_command.js │ ├── send_gemini_request.sh │ ├── start.js │ ├── sync_project_dry_run.js │ ├── telemetry.js │ ├── telemetry_gcp.js │ ├── telemetry_genkit.js │ ├── telemetry_utils.js │ ├── test-windows-paths.js │ ├── tests/ │ │ ├── autogen.test.ts │ │ ├── generate-keybindings-doc.test.ts │ │ ├── generate-settings-doc.test.ts │ │ ├── generate-settings-schema.test.ts │ │ ├── get-release-version.test.js │ │ ├── patch-create-comment.test.js │ │ ├── telemetry_gcp.test.ts │ │ ├── test-setup.ts │ │ └── vitest.config.ts │ ├── utils/ │ │ └── autogen.ts │ └── version.js ├── sea/ │ ├── sea-launch.cjs │ └── sea-launch.test.js ├── third_party/ │ └── get-ripgrep/ │ ├── LICENSE │ ├── package.json │ └── src/ │ ├── downloadRipGrep.js │ └── index.js └── tsconfig.json