gitextract_deg4t8zk/ ├── .commitlintrc.json ├── .dockerignore ├── .editorconfig ├── .eslintrc.cjs ├── .gitattributes ├── .github/ │ └── workflows/ │ ├── build_docker.yml │ └── ci.yml ├── .gitignore ├── .husky/ │ ├── commit-msg │ └── pre-commit ├── .npmrc ├── .vscode/ │ ├── extensions.json │ └── settings.json ├── CONTRIBUTING.md ├── Dockerfile ├── README.md ├── config/ │ ├── index.ts │ └── proxy.ts ├── docker-compose/ │ ├── docker-compose.yml │ └── nginx/ │ ├── add_user.sh │ ├── auth/ │ │ └── .htpasswd │ ├── nginx.conf │ └── remove_user.sh ├── index.html ├── license ├── package.json ├── postcss.config.js ├── service/ │ ├── Dockerfile │ ├── api_model.py │ ├── chatgpt_wapper.py │ ├── entrypoint.sh │ ├── errors.py │ ├── main.py │ ├── message_store.py │ ├── requirements.txt │ ├── tools/ │ │ ├── __init__.py │ │ ├── local-whisper/ │ │ │ ├── __init__.py │ │ │ └── linux/ │ │ │ └── init.sh │ │ └── openai_token_control.py │ └── whisper_wapper.py ├── src/ │ ├── App.vue │ ├── api/ │ │ └── index.ts │ ├── components/ │ │ ├── common/ │ │ │ ├── HoverButton/ │ │ │ │ ├── Button.vue │ │ │ │ └── index.vue │ │ │ ├── NaiveProvider/ │ │ │ │ └── index.vue │ │ │ ├── Setting/ │ │ │ │ ├── About.vue │ │ │ │ ├── Advance.vue │ │ │ │ ├── General.vue │ │ │ │ └── index.vue │ │ │ ├── SvgIcon/ │ │ │ │ └── index.vue │ │ │ ├── UserAvatar/ │ │ │ │ └── index.vue │ │ │ └── index.ts │ │ └── custom/ │ │ ├── GithubSite.vue │ │ └── index.ts │ ├── hooks/ │ │ ├── useBasicLayout.ts │ │ ├── useIconRender.ts │ │ ├── useLanguage.ts │ │ └── useTheme.ts │ ├── locales/ │ │ ├── en-US.ts │ │ ├── index.ts │ │ ├── ja-JP.ts │ │ └── zh-CN.ts │ ├── main.ts │ ├── plugins/ │ │ ├── assets.ts │ │ ├── index.ts │ │ └── scrollbarStyle.ts │ ├── router/ │ │ └── index.ts │ ├── store/ │ │ ├── index.ts │ │ └── modules/ │ │ ├── app/ │ │ │ ├── helper.ts │ │ │ └── index.ts │ │ ├── chat/ │ │ │ ├── helper.ts │ │ │ └── index.ts │ │ ├── index.ts │ │ └── user/ │ │ ├── helper.ts │ │ └── index.ts │ ├── styles/ │ │ ├── global.less │ │ └── lib/ │ │ ├── github-markdown.less │ │ ├── highlight.less │ │ └── tailwind.css │ ├── typings/ │ │ ├── chat.d.ts │ │ ├── env.d.ts │ │ └── global.d.ts │ ├── utils/ │ │ ├── crypto/ │ │ │ └── index.ts │ │ ├── format/ │ │ │ └── index.ts │ │ ├── is/ │ │ │ └── index.ts │ │ ├── request/ │ │ │ ├── axios.ts │ │ │ └── index.ts │ │ └── storage/ │ │ ├── index.ts │ │ └── local.ts │ └── views/ │ ├── chat/ │ │ ├── components/ │ │ │ ├── Message/ │ │ │ │ ├── Avatar.vue │ │ │ │ ├── Text.vue │ │ │ │ ├── index.vue │ │ │ │ └── style.less │ │ │ └── index.ts │ │ ├── hooks/ │ │ │ ├── useChat.ts │ │ │ ├── useCopyCode.ts │ │ │ └── useScroll.ts │ │ ├── index.vue │ │ └── layout/ │ │ ├── Layout.vue │ │ ├── header/ │ │ │ └── index.vue │ │ ├── index.ts │ │ └── sider/ │ │ ├── Footer.vue │ │ ├── List.vue │ │ └── index.vue │ └── exception/ │ ├── 403/ │ │ └── index.vue │ └── 404/ │ └── index.vue ├── tailwind.config.js ├── tsconfig.json └── vite.config.ts