gitextract_khbd3ulr/ ├── .github/ │ ├── CONTRIBUTING.md │ └── workflows/ │ ├── e2e-tests.yml │ └── run-tests.yml ├── .gitignore ├── .husky/ │ └── pre-commit ├── .prettierrc ├── .react-router/ │ └── types/ │ ├── +register.ts │ ├── +virtual.d.ts │ └── app/ │ ├── +types/ │ │ └── root.ts │ └── routes/ │ └── +types/ │ ├── $.ts │ ├── _index.ts │ └── api.chat.ts ├── LICENSE ├── README.md ├── SECURITY.md ├── app/ │ ├── app.css │ ├── chat/ │ │ ├── ai/ │ │ │ ├── providers.server.ts │ │ │ └── providers.shared.ts │ │ ├── components/ │ │ │ ├── api-key-manager.tsx │ │ │ ├── api-keys-provider.tsx │ │ │ ├── chat-sidebar.tsx │ │ │ ├── chat.tsx │ │ │ ├── copy-button.tsx │ │ │ ├── icons.tsx │ │ │ ├── input.tsx │ │ │ ├── markdown.tsx │ │ │ ├── mcp-server-manager.tsx │ │ │ ├── message.tsx │ │ │ ├── messages.tsx │ │ │ ├── model-picker.tsx │ │ │ ├── project-overview.tsx │ │ │ ├── suggested-prompts.tsx │ │ │ ├── textarea.tsx │ │ │ ├── theme-provider.tsx │ │ │ ├── theme-toggle.tsx │ │ │ ├── tool-invocation.tsx │ │ │ └── ui/ │ │ │ ├── accordion.tsx │ │ │ ├── avatar.tsx │ │ │ ├── badge.tsx │ │ │ ├── button.tsx │ │ │ ├── dialog.tsx │ │ │ ├── dropdown-menu.tsx │ │ │ ├── input.tsx │ │ │ ├── label.tsx │ │ │ ├── popover.tsx │ │ │ ├── scroll-area.tsx │ │ │ ├── select.tsx │ │ │ ├── separator.tsx │ │ │ ├── sheet.tsx │ │ │ ├── sidebar.tsx │ │ │ ├── skeleton.tsx │ │ │ ├── sonner.tsx │ │ │ ├── text-morph.tsx │ │ │ ├── textarea.tsx │ │ │ └── tooltip.tsx │ │ ├── hooks/ │ │ │ └── use-mobile.ts │ │ └── lib/ │ │ ├── constants.ts │ │ ├── context/ │ │ │ └── mcp-context.tsx │ │ ├── db/ │ │ │ └── schema.ts │ │ ├── hooks/ │ │ │ ├── use-copy.ts │ │ │ ├── use-local-storage.ts │ │ │ └── use-scroll-to-bottom.tsx │ │ ├── user-id.ts │ │ └── utils.ts │ ├── components/ │ │ ├── .client/ │ │ │ ├── chatPage.client.tsx │ │ │ └── chatPage.css │ │ ├── chatPage.tsx │ │ └── content.tsx │ ├── entry.server.tsx │ ├── globals.css │ ├── root.tsx │ ├── routes/ │ │ ├── $.tsx │ │ ├── _index.tsx │ │ └── api.chat.ts │ └── routes.ts ├── biome.json ├── components.json ├── package.json ├── playwright.config.ts ├── postcss.config.mjs ├── react-router.config.ts ├── src/ │ ├── api/ │ │ ├── test-setup.ts │ │ ├── tools/ │ │ │ ├── commonTools.test.ts │ │ │ ├── commonTools.ts │ │ │ ├── index.test.ts │ │ │ ├── index.ts │ │ │ └── repoHandlers/ │ │ │ ├── DefaultRepoHandler.ts │ │ │ ├── GenericRepoHandler.ts │ │ │ ├── ReactRouterRepoHandler.ts │ │ │ ├── RepoHandler.ts │ │ │ ├── ThreejsRepoHandler.ts │ │ │ ├── generic/ │ │ │ │ ├── generic.test.ts │ │ │ │ └── static-mapping.json │ │ │ ├── handlers.test.ts │ │ │ ├── handlers.ts │ │ │ ├── test/ │ │ │ │ └── utils.ts │ │ │ └── threejs/ │ │ │ ├── __snapshots__/ │ │ │ │ └── utils.test.ts.snap │ │ │ ├── utils.test.ts │ │ │ └── utils.ts │ │ └── utils/ │ │ ├── ViewCounterDO.ts │ │ ├── badge.ts │ │ ├── cache.ts │ │ ├── github.ts │ │ ├── githubClient.ts │ │ ├── helpers.ts │ │ ├── r2.ts │ │ ├── robotsTxt.ts │ │ └── vectorStore.ts │ ├── index.ts │ ├── shared/ │ │ ├── nameUtils.ts │ │ ├── repoData.test.ts │ │ ├── repoData.ts │ │ └── urlUtils.ts │ ├── test/ │ │ ├── ViewCounterDO.test.ts │ │ └── badge.test.ts │ └── utils.ts ├── static/ │ └── README.md ├── tailwind.config.js ├── tests/ │ ├── e2e/ │ │ └── inspection.spec.ts │ └── global-setup.ts ├── tsconfig.cloudflare.json ├── tsconfig.json ├── tsconfig.node.json ├── vite.config.ts ├── vitest.config.ts ├── worker-configuration.d.ts └── wrangler.jsonc