The response has been limited to 50k tokens of the smallest files in the repo. You can remove this limitation by removing the max tokens filter.
├── .air.toml
├── .codesouler
    └── rules
    │   └── vue-unit-test-guide.md
├── .env.example
├── .envrc.example
├── .github
    ├── CODEOWNERS
    ├── ISSUE_TEMPLATE
    │   ├── bug_report.md
    │   └── feature_request.md
    ├── PULL_REQUEST_TEMPLATE.md
    └── workflows
    │   ├── docker-image-main.yml
    │   ├── docker-image-semantic.yml
    │   ├── e2e_tests.yml
    │   ├── golang-lint.yml
    │   └── unit_tests.yml
├── .gitignore
├── .gitlab-ci.yml
├── .mockery.yaml
├── .vscode
    └── launch.json
├── Dockerfile
├── LICENSE
├── README.md
├── README_es.md
├── README_jp.md
├── README_kr.md
├── README_zh.md
├── _mocks
    └── opencsg.com
    │   └── portal
    │       ├── handlers
    │           └── render
    │           │   └── mock_RenderBase.go
    │       └── pkg
    │           └── utils
    │               └── jwt
    │                   └── mock_JwtUtils.go
├── cmd
    └── csghub-portal
    │   ├── cmd
    │       ├── migration
    │       │   └── migration.go
    │       ├── root.go
    │       └── start
    │       │   ├── server.go
    │       │   └── start.go
    │   └── main.go
├── config
    └── config.go
├── docs
    ├── CONTRIBUTING_en.md
    ├── all_in_one_readme_en.md
    ├── csghub_saas_en.md
    ├── csghub_saas_zh.md
    ├── detailed_intro_en.md
    ├── detailed_intro_zh.md
    ├── images
    │   ├── add_newfile.png
    │   ├── add_newfile_en.png
    │   ├── after_fintune.png
    │   ├── after_fintune_en.png
    │   ├── before_fintune.png
    │   ├── before_fintune_en.png
    │   ├── create_model_repo.png
    │   ├── create_model_repo_en.png
    │   ├── csghub_framework.png
    │   ├── demo-cover.jpg
    │   ├── discord-qrcode.png
    │   ├── download_file.png
    │   ├── download_file_en.png
    │   ├── download_sdk.png
    │   ├── download_sdk_en.png
    │   ├── endpoint_create.png
    │   ├── endpoint_create_en.png
    │   ├── endpoint_menu.png
    │   ├── endpoint_menu_en.png
    │   ├── endpoint_playground.png
    │   ├── endpoint_playground_en.png
    │   ├── finetune_create.png
    │   ├── finetune_create_en.png
    │   ├── finetune_llamafactory.png
    │   ├── finetune_llamafactory_en.png
    │   ├── finetune_menu.png
    │   ├── finetune_menu_en.png
    │   ├── finetune_notebook.png
    │   ├── finetune_notebook_en.png
    │   ├── fintune_result.png
    │   ├── fintune_result_en.png
    │   ├── functions.jpeg
    │   ├── little_asistant.jpeg
    │   ├── llama_para_1.png
    │   ├── llama_para_1_en.png
    │   ├── llama_para_2.png
    │   ├── llama_para_2_en.png
    │   ├── portal_tech_graph.png
    │   ├── project_intro.png
    │   ├── server_tech_graph.png
    │   ├── slack-qrcode.png
    │   ├── wechat-assistant-new.png
    │   ├── wechat-group-new.png
    │   └── wechat-group.jpeg
    ├── migrate_to_gin_version_portal_cn.md
    ├── migrate_to_gin_version_portal_en.md
    ├── migrate_to_gitaly_git_server_cn.md
    ├── migrate_to_gitaly_git_server_en.md
    ├── readme_cn.md
    ├── readme_en.md
    ├── readme_ja.md
    ├── readme_kr.md
    ├── release_notes.md
    ├── release_notes_zh.md
    ├── roadmap.md
    ├── roadmap_en.md
    ├── setup.md
    ├── setup_en.md
    ├── user_system_cn.md
    └── user_system_en.md
├── frontend
    ├── .gitignore
    ├── .tool-versions
    ├── .vscode
    │   └── extensions.json
    ├── embed.go
    ├── jsconfig.json
    ├── package.json
    ├── postcss.config.js
    ├── public
    │   └── images
    │   │   ├── Background-pattern-decorative.svg
    │   │   ├── OpenCSG_logo.svg
    │   │   ├── collection_half_cirle.png
    │   │   ├── default_cover_image copy.png
    │   │   ├── default_cover_image.png
    │   │   ├── default_org.png
    │   │   ├── empty-models.png
    │   │   ├── error_page_bg.png
    │   │   ├── evaluation
    │   │       └── Background_pattern.svg
    │   │   ├── favicon.ico
    │   │   ├── favicon.png
    │   │   ├── files
    │   │       └── Default.png
    │   │   ├── icons
    │   │       ├── Finished.svg
    │   │       ├── Processing.svg
    │   │       ├── Queued.svg
    │   │       ├── admin-menu-active-icon.svg
    │   │       ├── admin-menu-broadcast.svg
    │   │       ├── admin-menu-cloud.svg
    │   │       ├── admin-menu-dashboard.svg
    │   │       ├── admin-menu-model.svg
    │   │       ├── admin-menu-serverless.svg
    │   │       ├── admin-menu-settings.svg
    │   │       ├── admin-menu-tag.svg
    │   │       ├── admin-menu-to-left.svg
    │   │       ├── admin-menu-users.svg
    │   │       ├── alert-message.svg
    │   │       ├── alert.svg
    │   │       ├── api-example.svg
    │   │       ├── app_tokens.svg
    │   │       ├── arrow-left.svg
    │   │       ├── arrow.svg
    │   │       ├── asset_management-message.svg
    │   │       ├── branch.svg
    │   │       ├── broadcast-close-dark.svg
    │   │       ├── broadcast-close-light.svg
    │   │       ├── broadcast-notice-dark.svg
    │   │       ├── broadcast-notice-light.svg
    │   │       ├── check_circle.svg
    │   │       ├── chevron-down.svg
    │   │       ├── chevron-up.svg
    │   │       ├── chevron_right.svg
    │   │       ├── clock.svg
    │   │       ├── clone.svg
    │   │       ├── close.svg
    │   │       ├── close_menu.svg
    │   │       ├── codes.svg
    │   │       ├── collections.svg
    │   │       ├── comment-message.svg
    │   │       ├── commits.svg
    │   │       ├── company.svg
    │   │       ├── copy.svg
    │   │       ├── create_org_repo.svg
    │   │       ├── curl.svg
    │   │       ├── dataflow.svg
    │   │       ├── dataflow_alignL.svg
    │   │       ├── dataflow_alignR.svg
    │   │       ├── dataflow_backIcon.svg
    │   │       ├── dataflow_drag.svg
    │   │       ├── dataflow_homeIcon.svg
    │   │       ├── dataflow_homeIcon_divider.svg
    │   │       ├── dataflow_menuIcon.svg
    │   │       ├── dataflow_menuIcon_tlp.svg
    │   │       ├── dataflow_menuIcon_tools.svg
    │   │       ├── dataflow_menuline.svg
    │   │       ├── datasets.svg
    │   │       ├── deploy.svg
    │   │       ├── discord.svg
    │   │       ├── discussion-replay-icon.svg
    │   │       ├── discussions.svg
    │   │       ├── dot-ico.svg
    │   │       ├── dot_black.svg
    │   │       ├── download.svg
    │   │       ├── download2.svg
    │   │       ├── download_dark.svg
    │   │       ├── edit.svg
    │   │       ├── edit_org_member_role.svg
    │   │       ├── el_upload.svg
    │   │       ├── endpoint.svg
    │   │       ├── evaluation.svg
    │   │       ├── evaluation_new.svg
    │   │       ├── exclamation_point.svg
    │   │       ├── extraction.svg
    │   │       ├── feature_icon.svg
    │   │       ├── file.svg
    │   │       ├── filter-lines.svg
    │   │       ├── finetune_cpu_icon.svg
    │   │       ├── finetune_create.svg
    │   │       ├── finetune_name_icon.svg
    │   │       ├── finetune_tip.svg
    │   │       ├── fullscreen.svg
    │   │       ├── github-2.svg
    │   │       ├── github.svg
    │   │       ├── huggingface.svg
    │   │       ├── input_tip.svg
    │   │       ├── instance_deploy_failed_tips.svg
    │   │       ├── instance_logs.svg
    │   │       ├── invite_org_member.svg
    │   │       ├── javascript.svg
    │   │       ├── json.svg
    │   │       ├── language_tag.svg
    │   │       ├── license.svg
    │   │       ├── lock-01.svg
    │   │       ├── login_failed.svg
    │   │       ├── mcp_deploy.svg
    │   │       ├── mcp_item_download.svg
    │   │       ├── mcp_item_github.svg
    │   │       ├── mcp_item_hybrid.svg
    │   │       ├── mcp_item_stars.svg
    │   │       ├── mcp_item_tools.svg
    │   │       ├── mcp_item_typescript.svg
    │   │       ├── menu.svg
    │   │       ├── metadata_GGUF.svg
    │   │       ├── metadata_Safetensors.svg
    │   │       ├── model_endpoint_create.svg
    │   │       ├── model_finetune_create.svg
    │   │       ├── model_gray.svg
    │   │       ├── models.svg
    │   │       ├── more_menu.svg
    │   │       ├── navbar-admin.svg
    │   │       ├── navbar-collection.svg
    │   │       ├── navbar-datapipelines.svg
    │   │       ├── navbar-language.svg
    │   │       ├── navbar-logout.svg
    │   │       ├── navbar-message.svg
    │   │       ├── navbar-new.svg
    │   │       ├── navbar-neworganization.svg
    │   │       ├── navbar-profile.svg
    │   │       ├── navbar-resource-console.svg
    │   │       ├── navbar-setting.svg
    │   │       ├── new_collection.svg
    │   │       ├── new_dot.svg
    │   │       ├── opencsg.svg
    │   │       ├── organization-message.svg
    │   │       ├── parquet_api.svg
    │   │       ├── parquet_auto_converted.svg
    │   │       ├── parquet_viewer.svg
    │   │       ├── playground.svg
    │   │       ├── playground_api.svg
    │   │       ├── playground_test.svg
    │   │       ├── plus.svg
    │   │       ├── profile_finetune.svg
    │   │       ├── prompt_card_settgins.svg
    │   │       ├── prompting_navbar.svg
    │   │       ├── prompts_Code.svg
    │   │       ├── prompts_CreativeWriting.svg
    │   │       ├── prompts_DataAnalysis.svg
    │   │       ├── prompts_Design.svg
    │   │       ├── prompts_Education.svg
    │   │       ├── prompts_Image.svg
    │   │       ├── prompts_Marketing.svg
    │   │       ├── prompts_Music.svg
    │   │       ├── prompts_Personalization.svg
    │   │       ├── prompts_Research.svg
    │   │       ├── prompts_TechnicalWriting.svg
    │   │       ├── prompts_Video.svg
    │   │       ├── prompts_bg.svg
    │   │       ├── prompts_bg_user.svg
    │   │       ├── prompts_copy.svg
    │   │       ├── prompts_file.svg
    │   │       ├── prompts_file_selected.svg
    │   │       ├── prompts_history.svg
    │   │       ├── prompts_layout_left.svg
    │   │       ├── prompts_library.svg
    │   │       ├── prompts_library_selected.svg
    │   │       ├── prompts_model_comparison.svg
    │   │       ├── prompts_model_comparison_selected.svg
    │   │       ├── prompts_optimization_assistant.svg
    │   │       ├── prompts_optimization_assistant_selected.svg
    │   │       ├── prompts_pipe.svg
    │   │       ├── prompts_reAnswer.svg
    │   │       ├── prompts_relations_library.svg
    │   │       ├── prompts_source.svg
    │   │       ├── python.svg
    │   │       ├── refresh.svg
    │   │       ├── repo_header_license_icon.svg
    │   │       ├── repo_opencsg_completed.svg
    │   │       ├── repo_opencsg_need_sync.svg
    │   │       ├── repo_opencsg_sync.svg
    │   │       ├── repo_source_huggingface.svg
    │   │       ├── repo_source_modelscope.svg
    │   │       ├── repo_source_opencsg.svg
    │   │       ├── repoheader_dataset.svg
    │   │       ├── search.svg
    │   │       ├── send_message.svg
    │   │       ├── slack.svg
    │   │       ├── space_docker.svg
    │   │       ├── space_docker_gray.svg
    │   │       ├── space_endpoint.svg
    │   │       ├── space_gradio.svg
    │   │       ├── space_mcp.svg
    │   │       ├── space_nginx.svg
    │   │       ├── space_static.svg
    │   │       ├── space_streamlit.svg
    │   │       ├── space_upload.svg
    │   │       ├── spaces.svg
    │   │       ├── star.svg
    │   │       ├── sync-diff.svg
    │   │       ├── sync-remote.svg
    │   │       ├── sync.svg
    │   │       ├── system-message.svg
    │   │       ├── team_org.svg
    │   │       ├── text_generation.svg
    │   │       ├── top_right_arrow.svg
    │   │       ├── trash.svg
    │   │       ├── twitter.svg
    │   │       ├── upload-image.svg
    │   │       ├── useIcon.svg
    │   │       ├── verified_company.svg
    │   │       ├── vertical_divider.svg
    │   │       ├── vertical_divider2.svg
    │   │       └── x-close.svg
    │   │   ├── invite_bg.png
    │   │   ├── new_organization_bg.png
    │   │   ├── opencsg_avatar.png
    │   │   ├── opencsg_logo.png
    │   │   ├── search_circle_bg.png
    │   │   ├── tags
    │   │       ├── action-detection.svg
    │   │       ├── audio-classification.svg
    │   │       ├── auto-speech-recognition.svg
    │   │       ├── autonomous-driving.svg
    │   │       ├── biomedicine.svg
    │   │       ├── conversational.svg
    │   │       ├── document-segmentation.svg
    │   │       ├── face-detection.svg
    │   │       ├── face-image-generation.svg
    │   │       ├── face-recognition.svg
    │   │       ├── feature-extraction.svg
    │   │       ├── fill-mask.svg
    │   │       ├── image-captioning.svg
    │   │       ├── image-classification.svg
    │   │       ├── image-editing.svg
    │   │       ├── image-generation.svg
    │   │       ├── image-object-detection.svg
    │   │       ├── image-segmentation.svg
    │   │       ├── image-super-resolution.svg
    │   │       ├── image-text-retrieval.svg
    │   │       ├── image-text-to-text.svg
    │   │       ├── image-to-image.svg
    │   │       ├── image-to-text.svg
    │   │       ├── keyword-spotting.svg
    │   │       ├── multiple-choice.svg
    │   │       ├── named-entity-recognition.svg
    │   │       ├── nli.svg
    │   │       ├── object-detection.svg
    │   │       ├── object-tracking.svg
    │   │       ├── ocr.svg
    │   │       ├── part-of-speech.svg
    │   │       ├── protein-structure.svg
    │   │       ├── question-answering.svg
    │   │       ├── relation-extraction.svg
    │   │       ├── semantic-segmentation.svg
    │   │       ├── sentence-similarity.svg
    │   │       ├── sentiment-classification.svg
    │   │       ├── skin-retouching.svg
    │   │       ├── speech-signal-process.svg
    │   │       ├── summarization.svg
    │   │       ├── table-question-answering.svg
    │   │       ├── text-classification.svg
    │   │       ├── text-generation.svg
    │   │       ├── text-retrieval.svg
    │   │       ├── text-summarization.svg
    │   │       ├── text-to-image.svg
    │   │       ├── text-to-speech.svg
    │   │       ├── token-classification.svg
    │   │       ├── translation.svg
    │   │       ├── video-captioning.svg
    │   │       ├── video-classification.svg
    │   │       ├── video-detection.svg
    │   │       ├── video-generation.svg
    │   │       ├── video-segmentation.svg
    │   │       ├── video-super-resolution.svg
    │   │       ├── visual-grounding.svg
    │   │       ├── visual-question-answering.svg
    │   │       ├── voice-activity-detection.svg
    │   │       ├── word-segmentation.svg
    │   │       └── zero-shot.svg
    │   │   └── vite.svg
    ├── setupTests.js
    ├── src
    │   ├── admin.js
    │   ├── assets
    │   │   ├── images
    │   │   │   ├── .keep
    │   │   │   ├── default_cover_image.png
    │   │   │   ├── favicon.png
    │   │   │   ├── new_organization_bg.png
    │   │   │   └── opencsg_logo.png
    │   │   ├── stylesheets
    │   │   │   ├── element-plus
    │   │   │   │   ├── _variables.css
    │   │   │   │   ├── application.css
    │   │   │   │   ├── button.css
    │   │   │   │   ├── el-message-box.css
    │   │   │   │   ├── index.css
    │   │   │   │   ├── input.css
    │   │   │   │   ├── menu.css
    │   │   │   │   └── upload.css
    │   │   │   └── markdown.css
    │   │   └── vue.svg
    │   ├── components
    │   │   ├── HelloWorld.vue
    │   │   ├── OnPremiseFooter.vue
    │   │   ├── __tests__
    │   │   │   ├── application_spaces
    │   │   │   │   ├── ApplicationPage.spec.js
    │   │   │   │   ├── ApplicationSpaceSettings.spec.js
    │   │   │   │   ├── NewApplicationSpace.spec.js
    │   │   │   │   └── SpaceRelationsCard.spec.js
    │   │   │   ├── codes
    │   │   │   │   ├── CodeRelationsCard.spec.js
    │   │   │   │   ├── CodeSettings.spec.js
    │   │   │   │   └── NewCode.spec.js
    │   │   │   ├── collections
    │   │   │   │   └── NewCollection.spec.js
    │   │   │   ├── datasets
    │   │   │   │   ├── DatasetRelationsCard.spec.js
    │   │   │   │   ├── DatasetSettings.spec.js
    │   │   │   │   └── NewDataset.spec.js
    │   │   │   ├── endpoints
    │   │   │   │   ├── EndpointDetail.spec.js
    │   │   │   │   ├── EndpointItem.spec.js
    │   │   │   │   ├── EndpointLogs.spec.js
    │   │   │   │   ├── EndpointPage.spec.js
    │   │   │   │   ├── EndpointPlayground.spec.js
    │   │   │   │   ├── EndpointSettings.spec.js
    │   │   │   │   └── NewEndpoint.spec.js
    │   │   │   ├── evaluations
    │   │   │   │   ├── EvaluationDetail.spec.js
    │   │   │   │   └── NewEvaluation.spec.js
    │   │   │   ├── finetune
    │   │   │   │   ├── FinetuneDetail.spec.js
    │   │   │   │   ├── FinetuneSettings.spec.js
    │   │   │   │   └── NewFinetune.spec.js
    │   │   │   ├── models
    │   │   │   │   ├── ModelRelationsCard.spec.js
    │   │   │   │   ├── ModelSettings.spec.js
    │   │   │   │   ├── NewModel.spec.js
    │   │   │   │   └── widgets
    │   │   │   │   │   └── QuestionAnswer.spec.js
    │   │   │   ├── organizations
    │   │   │   │   ├── NewOrganization.spec.js
    │   │   │   │   ├── OrganizationDetail.spec.js
    │   │   │   │   └── OrganizationSettings.spec.js
    │   │   │   ├── shared
    │   │   │   │   ├── RepoCards.spec.js
    │   │   │   │   └── RepoHeader.spec.js
    │   │   │   └── user_settings
    │   │   │   │   ├── Menu.spec.js
    │   │   │   │   ├── Profile.spec.js
    │   │   │   │   └── ProfileEdit.spec.js
    │   │   ├── admin_next
    │   │   │   ├── admin_component
    │   │   │   │   ├── Card
    │   │   │   │   │   └── Card.vue
    │   │   │   │   ├── Container.vue
    │   │   │   │   ├── Layout.vue
    │   │   │   │   ├── Menu.vue
    │   │   │   │   ├── Navbar
    │   │   │   │   │   └── Navbar.vue
    │   │   │   │   ├── Pagination
    │   │   │   │   │   ├── NextButton.vue
    │   │   │   │   │   ├── Pagination.vue
    │   │   │   │   │   └── PrevButton.vue
    │   │   │   │   ├── Table
    │   │   │   │   │   └── Table.vue
    │   │   │   │   └── index.js
    │   │   │   ├── broadcast
    │   │   │   │   ├── AdminBroadcastEdit.vue
    │   │   │   │   ├── AdminBroadcastList.vue
    │   │   │   │   └── AdminBroadcastNew.vue
    │   │   │   ├── dashboard
    │   │   │   │   └── AdminDashboard.vue
    │   │   │   ├── models
    │   │   │   │   ├── AdminModelDetail.vue
    │   │   │   │   ├── AdminModelEdit.vue
    │   │   │   │   └── AdminModelList.vue
    │   │   │   ├── router
    │   │   │   │   └── index.js
    │   │   │   ├── serverless
    │   │   │   │   ├── AdminServerlessDetail.vue
    │   │   │   │   ├── AdminServerlessForm.vue
    │   │   │   │   ├── AdminServerlessList.vue
    │   │   │   │   └── AdminServerlessLogs.vue
    │   │   │   ├── sync
    │   │   │   │   └── AdminSyncSetting.vue
    │   │   │   ├── system_configs
    │   │   │   │   └── AdminSystemConfig.vue
    │   │   │   ├── tag_categories
    │   │   │   │   ├── AdminTagCategoriesForm.vue
    │   │   │   │   └── AdminTagCategoriesList.vue
    │   │   │   ├── tags
    │   │   │   │   ├── AdminTagsDetail.vue
    │   │   │   │   ├── AdminTagsForm.vue
    │   │   │   │   └── AdminTagsList.vue
    │   │   │   └── users
    │   │   │   │   ├── AdminUserDetail.vue
    │   │   │   │   └── AdminUserList.vue
    │   │   ├── application_spaces
    │   │   │   ├── AppPayMode.vue
    │   │   │   ├── AppStatus.vue
    │   │   │   ├── ApplicationPage.vue
    │   │   │   ├── ApplicationSpaceDetail.vue
    │   │   │   ├── ApplicationSpaceItem.vue
    │   │   │   ├── ApplicationSpaceSettings.vue
    │   │   │   ├── BuildAndErrorPage.vue
    │   │   │   ├── BuildStatus.vue
    │   │   │   ├── ErrorStatus.vue
    │   │   │   ├── GradioInitializeGuide.vue
    │   │   │   ├── InitializeGuide.vue
    │   │   │   ├── McpSpaceExample.vue
    │   │   │   ├── McpSpacePage.vue
    │   │   │   ├── NewApplicationSpace.vue
    │   │   │   ├── SpaceRelationsCard.vue
    │   │   │   ├── StoppedPage.vue
    │   │   │   ├── StreamlitInitializeGuide.vue
    │   │   │   ├── SuccessStatus.vue
    │   │   │   └── WarningStatus.vue
    │   │   ├── codes
    │   │   │   ├── CodeRelationsCard.vue
    │   │   │   ├── CodeSettings.vue
    │   │   │   └── NewCode.vue
    │   │   ├── collections
    │   │   │   ├── AddToCollections.vue
    │   │   │   ├── CollectionCard.vue
    │   │   │   ├── CollectionCards.vue
    │   │   │   ├── CollectionIndex.vue
    │   │   │   ├── CollectionsAddRepo.vue
    │   │   │   ├── CollectionsDetail.vue
    │   │   │   ├── CollectionsRepoList.vue
    │   │   │   ├── CollectionsSettings.vue
    │   │   │   └── NewCollection.vue
    │   │   ├── comment
    │   │   │   ├── CommentItem.vue
    │   │   │   ├── CommentList.vue
    │   │   │   └── CreateComment.vue
    │   │   ├── community
    │   │   │   ├── CommunityMDTextarea.vue
    │   │   │   ├── CommunityPage.vue
    │   │   │   ├── CommunityTimeLine.vue
    │   │   │   ├── DiscussionCard.vue
    │   │   │   ├── DiscussionCards.vue
    │   │   │   ├── DiscussionDetails.vue
    │   │   │   ├── EmptyCommunity.vue
    │   │   │   └── NewCommunityDiscussion.vue
    │   │   ├── dataflow_config
    │   │   │   ├── Menu.vue
    │   │   │   ├── algTemplate
    │   │   │   │   ├── index.vue
    │   │   │   │   └── newTemplate.vue
    │   │   │   ├── dataflow
    │   │   │   │   ├── index.vue
    │   │   │   │   └── info.vue
    │   │   │   ├── newTask
    │   │   │   │   └── index.vue
    │   │   │   └── tools
    │   │   │   │   └── index.vue
    │   │   ├── datasets
    │   │   │   ├── DatasetRelationsCard.vue
    │   │   │   ├── DatasetSettings.vue
    │   │   │   ├── NewDataset.vue
    │   │   │   └── ParquetViewer.vue
    │   │   ├── endpoints
    │   │   │   ├── EndpointDetail.vue
    │   │   │   ├── EndpointItem.vue
    │   │   │   ├── EndpointLogs.vue
    │   │   │   ├── EndpointPage.vue
    │   │   │   ├── EndpointPlayground.vue
    │   │   │   ├── EndpointSettings.vue
    │   │   │   ├── EngineArgs.vue
    │   │   │   ├── NewEndpoint.vue
    │   │   │   └── playground
    │   │   │   │   ├── ApiExample.vue
    │   │   │   │   ├── ApiExtraction.vue
    │   │   │   │   ├── ApiImageText.vue
    │   │   │   │   ├── ApiWidget.vue
    │   │   │   │   ├── TestEndpoint.vue
    │   │   │   │   ├── TestExtraction.vue
    │   │   │   │   ├── TestImageText.vue
    │   │   │   │   └── TestWidget.vue
    │   │   ├── error
    │   │   │   ├── LoginFailed.vue
    │   │   │   ├── NotFound.vue
    │   │   │   ├── ServerError.vue
    │   │   │   └── Unauthorized.vue
    │   │   ├── evaluations
    │   │   │   ├── EvaluationDetail.vue
    │   │   │   └── NewEvaluation.vue
    │   │   ├── finetune
    │   │   │   ├── FinetuneDetail.vue
    │   │   │   ├── FinetuneSettings.vue
    │   │   │   └── NewFinetune.vue
    │   │   ├── form
    │   │   │   └── sub
    │   │   │   │   └── FormLabel.vue
    │   │   ├── images
    │   │   │   ├── BackgroundPattern.png
    │   │   │   └── opencsg_logo.png
    │   │   ├── mcp
    │   │   │   ├── DeployMcpServer.vue
    │   │   │   ├── McpItem.vue
    │   │   │   ├── McpSchema.vue
    │   │   │   ├── McpSettings.vue
    │   │   │   ├── McpToolDetail.vue
    │   │   │   ├── McpToolItem.vue
    │   │   │   ├── McpTools.vue
    │   │   │   ├── NewMcpServer.vue
    │   │   │   ├── SchemaTable.vue
    │   │   │   └── ToolNameCell.vue
    │   │   ├── models
    │   │   │   ├── EmptyModels.vue
    │   │   │   ├── ModelMetadata.vue
    │   │   │   ├── ModelRelationsCard.vue
    │   │   │   ├── ModelSettings.vue
    │   │   │   ├── NewModel.vue
    │   │   │   ├── metadata
    │   │   │   │   └── MetaItem.vue
    │   │   │   └── widgets
    │   │   │   │   └── QuestionAnswer.vue
    │   │   ├── navbar
    │   │   │   ├── Broadcast.vue
    │   │   │   ├── CodeNav.vue
    │   │   │   ├── Collection.vue
    │   │   │   ├── MenuItems.vue
    │   │   │   ├── Navbar.vue
    │   │   │   ├── dataset.vue
    │   │   │   ├── docs.vue
    │   │   │   ├── menuItem
    │   │   │   │   ├── Mcp.vue
    │   │   │   │   └── McpTools.vue
    │   │   │   ├── model.vue
    │   │   │   └── space.vue
    │   │   ├── new_admin
    │   │   │   ├── AdminDashboard.vue
    │   │   │   ├── AdminEmailSending.vue
    │   │   │   ├── AdminMenu.vue
    │   │   │   ├── AdminNavbar.vue
    │   │   │   ├── sync
    │   │   │   │   └── AdminSyncSetting.vue
    │   │   │   ├── system_configs
    │   │   │   │   └── AdminSystemConfig.vue
    │   │   │   └── users
    │   │   │   │   ├── AdminUserDetail.vue
    │   │   │   │   └── AdminUserList.vue
    │   │   ├── organizations
    │   │   │   ├── InviteMember.vue
    │   │   │   ├── Menu.vue
    │   │   │   ├── NewOrganization.vue
    │   │   │   ├── OrgMemberRoleEditDialog.vue
    │   │   │   ├── OrganizationDetail.vue
    │   │   │   ├── OrganizationEdit.vue
    │   │   │   ├── OrganizationMembers.vue
    │   │   │   └── OrganizationSettings.vue
    │   │   ├── popup
    │   │   │   └── UpdateUsername.vue
    │   │   ├── prompts
    │   │   │   ├── EditPrompt.vue
    │   │   │   ├── NewPrompt.vue
    │   │   │   ├── NewPromptsList.vue
    │   │   │   ├── PromptRelationsCard.vue
    │   │   │   ├── PromptsBreadCrumbs.vue
    │   │   │   ├── PromptsCard.vue
    │   │   │   ├── PromptsChat.vue
    │   │   │   ├── PromptsDatasetsCard.vue
    │   │   │   ├── PromptsDetails.vue
    │   │   │   ├── PromptsHub.vue
    │   │   │   ├── PromptsIndex.vue
    │   │   │   ├── PromptsLibrary.vue
    │   │   │   ├── PromptsList.vue
    │   │   │   ├── PromptsListSettings.vue
    │   │   │   ├── PromptsMenu.vue
    │   │   │   ├── PromptsMobileMenu.vue
    │   │   │   ├── PromptsTags.vue
    │   │   │   └── promptsOptions.js
    │   │   ├── resource_console
    │   │   │   ├── EvaluationTable.vue
    │   │   │   └── ResourceConsoleIndex.vue
    │   │   ├── shared
    │   │   │   ├── BillingDetail.vue
    │   │   │   ├── Blob.vue
    │   │   │   ├── BranchDropdown.vue
    │   │   │   ├── CodeEditor.vue
    │   │   │   ├── CsgButton.vue
    │   │   │   ├── CsgPagination.vue
    │   │   │   ├── DeployDropdown.vue
    │   │   │   ├── EditFile.vue
    │   │   │   ├── FileList.vue
    │   │   │   ├── FinetuneItem.vue
    │   │   │   ├── FlashMessage.vue
    │   │   │   ├── HeaderTags.vue
    │   │   │   ├── InstanceAnalysis.vue
    │   │   │   ├── InstanceInBuilding.vue
    │   │   │   ├── MoreTags.vue
    │   │   │   ├── NewFile.vue
    │   │   │   ├── NewTag.vue
    │   │   │   ├── Next.vue
    │   │   │   ├── Previous.vue
    │   │   │   ├── ProfileRepoList.vue
    │   │   │   ├── RepoCards.vue
    │   │   │   ├── RepoClone.vue
    │   │   │   ├── RepoCommit.vue
    │   │   │   ├── RepoCommits.vue
    │   │   │   ├── RepoDetail.vue
    │   │   │   ├── RepoFiles.vue
    │   │   │   ├── RepoHeader.vue
    │   │   │   ├── RepoHeaderSourceIcon.vue
    │   │   │   ├── RepoItem.vue
    │   │   │   ├── RepoItemSyncIcon.vue
    │   │   │   ├── RepoSummary.vue
    │   │   │   ├── RepoSummaryApiExample.vue
    │   │   │   ├── RepoTabs.vue
    │   │   │   ├── SvgIcon.vue
    │   │   │   ├── SyncDropdown.vue
    │   │   │   ├── TabContainer.vue
    │   │   │   ├── UploadFile.vue
    │   │   │   ├── ViewMore.vue
    │   │   │   ├── deploy_instance
    │   │   │   │   └── fetchResourceInCategory.js
    │   │   │   ├── form
    │   │   │   │   └── PublicAndPrivateRadioGroup.vue
    │   │   │   ├── inputs
    │   │   │   │   └── InputTip.vue
    │   │   │   └── viewers
    │   │   │   │   ├── CodeViewer.vue
    │   │   │   │   ├── DarkCodeViewer.vue
    │   │   │   │   ├── MarkdownViewer.vue
    │   │   │   │   └── TextViewer.vue
    │   │   ├── tags
    │   │   │   ├── LanguageTagItem.vue
    │   │   │   ├── LicenseTagItem.vue
    │   │   │   ├── TagCategory.vue
    │   │   │   ├── TagItem.vue
    │   │   │   ├── TagList.vue
    │   │   │   ├── TagSidebar.vue
    │   │   │   ├── TaskTagItem.vue
    │   │   │   └── frameworks
    │   │   │   │   ├── GGUF.vue
    │   │   │   │   ├── JAX.vue
    │   │   │   │   ├── Joblib.vue
    │   │   │   │   ├── ONNX.vue
    │   │   │   │   ├── PaddlePaddle.vue
    │   │   │   │   ├── PyTorch.vue
    │   │   │   │   ├── Safetensors.vue
    │   │   │   │   └── TensorFlow.vue
    │   │   └── user_settings
    │   │   │   ├── AccessTokenSettings.vue
    │   │   │   ├── Menu.vue
    │   │   │   ├── Profile.vue
    │   │   │   ├── ProfileEdit.vue
    │   │   │   ├── ProfileSettings.vue
    │   │   │   ├── SshKeyCard.vue
    │   │   │   └── SshKeySettings.vue
    │   ├── locales
    │   │   ├── en.js
    │   │   ├── en_js
    │   │   │   ├── accessToken.js
    │   │   │   ├── admin.js
    │   │   │   ├── all.js
    │   │   │   ├── application_spaces.js
    │   │   │   ├── billing.js
    │   │   │   ├── codes.js
    │   │   │   ├── collections.js
    │   │   │   ├── comment.js
    │   │   │   ├── community.js
    │   │   │   ├── components.js
    │   │   │   ├── datapipelines.js
    │   │   │   ├── datasets.js
    │   │   │   ├── endpoints.js
    │   │   │   ├── error.js
    │   │   │   ├── evaluation.js
    │   │   │   ├── finetune.js
    │   │   │   ├── languages.js
    │   │   │   ├── mcp_servers.js
    │   │   │   ├── models.js
    │   │   │   ├── navbar.js
    │   │   │   ├── operator_en.json
    │   │   │   ├── organization.js
    │   │   │   ├── profile.js
    │   │   │   ├── prompts.js
    │   │   │   ├── repo.js
    │   │   │   ├── resource_console.js
    │   │   │   ├── rule.js
    │   │   │   ├── shared.js
    │   │   │   ├── spaces.js
    │   │   │   ├── sshKey.js
    │   │   │   ├── tags.js
    │   │   │   ├── user_sessions.js
    │   │   │   └── widgets.js
    │   │   ├── zh.js
    │   │   ├── zhHant.js
    │   │   ├── zh_hant_js
    │   │   │   ├── accessToken.js
    │   │   │   ├── admin.js
    │   │   │   ├── all.js
    │   │   │   ├── application_spaces.js
    │   │   │   ├── billing.js
    │   │   │   ├── blog.js
    │   │   │   ├── campaign.js
    │   │   │   ├── codes.js
    │   │   │   ├── collections.js
    │   │   │   ├── comment.js
    │   │   │   ├── community.js
    │   │   │   ├── components.js
    │   │   │   ├── datapipelines.js
    │   │   │   ├── datasets.js
    │   │   │   ├── endpoints.js
    │   │   │   ├── error.js
    │   │   │   ├── evaluation.js
    │   │   │   ├── experts.js
    │   │   │   ├── finetune.js
    │   │   │   ├── languages.js
    │   │   │   ├── mcp_servers.js
    │   │   │   ├── models.js
    │   │   │   ├── navbar.js
    │   │   │   ├── operator_zh copy.json
    │   │   │   ├── operator_zh.json
    │   │   │   ├── organization.js
    │   │   │   ├── profile.js
    │   │   │   ├── prompts.js
    │   │   │   ├── repo.js
    │   │   │   ├── resource_console.js
    │   │   │   ├── rule.js
    │   │   │   ├── shared.js
    │   │   │   ├── spaces.js
    │   │   │   ├── sshKey.js
    │   │   │   ├── tags.js
    │   │   │   ├── user_sessions.js
    │   │   │   └── widgets.js
    │   │   └── zh_js
    │   │   │   ├── accessToken.js
    │   │   │   ├── admin.js
    │   │   │   ├── all.js
    │   │   │   ├── application_spaces.js
    │   │   │   ├── billing.js
    │   │   │   ├── codes.js
    │   │   │   ├── collections.js
    │   │   │   ├── comment.js
    │   │   │   ├── community.js
    │   │   │   ├── components.js
    │   │   │   ├── datapipelines.js
    │   │   │   ├── datasets.js
    │   │   │   ├── endpoints.js
    │   │   │   ├── error.js
    │   │   │   ├── evaluation.js
    │   │   │   ├── finetune.js
    │   │   │   ├── languages.js
    │   │   │   ├── mcp_servers.js
    │   │   │   ├── models.js
    │   │   │   ├── navbar.js
    │   │   │   ├── operator_zh.json
    │   │   │   ├── organization.js
    │   │   │   ├── profile.js
    │   │   │   ├── prompts.js
    │   │   │   ├── repo.js
    │   │   │   ├── resource_console.js
    │   │   │   ├── rule.js
    │   │   │   ├── shared.js
    │   │   │   ├── spaces.js
    │   │   │   ├── sshKey.js
    │   │   │   ├── tags.js
    │   │   │   ├── user_sessions.js
    │   │   │   └── widgets.js
    │   ├── main.js
    │   ├── packs
    │   │   ├── auth.js
    │   │   ├── buildTags.js
    │   │   ├── clipboard.js
    │   │   ├── csrfFetch.js
    │   │   ├── datetimeUtils.js
    │   │   ├── jwtFetch.js
    │   │   ├── persistPinia.js
    │   │   ├── refreshJWT.js
    │   │   ├── resolveContent.js
    │   │   ├── typewriter.js
    │   │   ├── useEngineArgs.js
    │   │   ├── useFetchApi.js
    │   │   └── utils.js
    │   ├── stores
    │   │   ├── RepoDetailStore.js
    │   │   ├── RepoTabStore.js
    │   │   ├── UserStore.js
    │   │   └── useGlobalStore.js
    │   ├── style.css
    │   ├── styles
    │   │   └── codediff.css
    │   └── views
    │   │   ├── admin
    │   │       ├── admin_next.html
    │   │       ├── index.html
    │   │       └── layouts
    │   │       │   └── base.html
    │   │   ├── codes
    │   │       ├── index.html
    │   │       ├── new.html
    │   │       └── show.html
    │   │   ├── collections
    │   │       ├── index.html
    │   │       ├── new.html
    │   │       └── show.html
    │   │   ├── datapipelines
    │   │       ├── index.html
    │   │       └── layouts
    │   │       │   └── base.html
    │   │   ├── datasets
    │   │       ├── index.html
    │   │       ├── new.html
    │   │       └── show.html
    │   │   ├── endpoints
    │   │       ├── new.html
    │   │       └── show.html
    │   │   ├── errors
    │   │       ├── 404.html
    │   │       ├── login_failed.html
    │   │       ├── server_error.html
    │   │       └── unauthorized.html
    │   │   ├── evaluations
    │   │       ├── new.html
    │   │       └── show.html
    │   │   ├── finetunes
    │   │       ├── new.html
    │   │       └── show.html
    │   │   ├── home
    │   │       └── index.html
    │   │   ├── layouts
    │   │       ├── base.html
    │   │       ├── footer.html
    │   │       └── navbar.html
    │   │   ├── mcp_servers
    │   │       ├── deploy.html
    │   │       ├── index.html
    │   │       ├── new.html
    │   │       ├── show.html
    │   │       └── tools.html
    │   │   ├── models
    │   │       ├── index.html
    │   │       ├── new.html
    │   │       └── show.html
    │   │   ├── organizations
    │   │       ├── new.html
    │   │       ├── settings.html
    │   │       └── show.html
    │   │   ├── profile
    │   │       ├── likes.html
    │   │       └── profile.html
    │   │   ├── prompts
    │   │       └── index.html
    │   │   ├── resource-console
    │   │       └── index.html
    │   │   ├── settings
    │   │       ├── access_token.html
    │   │       ├── profile.html
    │   │       ├── ssh_keys.html
    │   │       ├── starship_access_token.html
    │   │       └── sync_access_token.html
    │   │   └── spaces
    │   │       ├── index.html
    │   │       ├── new.html
    │   │       └── show.html
    ├── tailwind.config.js
    ├── vite.config.js
    ├── vitest.config.js
    └── yarn.lock
├── go.mod
├── go.sum
├── internal
    ├── handlers
    │   ├── admin
    │   │   └── .keep
    │   ├── frontend
    │   │   ├── ping.go
    │   │   ├── registry.go
    │   │   ├── resolve.go
    │   │   ├── settings.go
    │   │   ├── token.go
    │   │   └── upload.go
    │   └── render
    │   │   ├── admin.go
    │   │   ├── admin_test.go
    │   │   ├── base.go
    │   │   ├── codes.go
    │   │   ├── collections.go
    │   │   ├── datapipelines.go
    │   │   ├── datasets.go
    │   │   ├── endpoint.go
    │   │   ├── error.go
    │   │   ├── evaluation.go
    │   │   ├── finetune.go
    │   │   ├── mcp_server.go
    │   │   ├── models.go
    │   │   ├── organization.go
    │   │   ├── profile.go
    │   │   ├── prompts.go
    │   │   ├── registry.go
    │   │   ├── repo.go
    │   │   ├── resource_console.go
    │   │   ├── session.go
    │   │   ├── settings.go
    │   │   └── spaces.go
    ├── httpbase
    │   └── graceful_server.go
    ├── middleware
    │   ├── auth_middleware.go
    │   ├── cache_control.go
    │   ├── log.go
    │   └── middleware.go
    ├── models
    │   ├── common.go
    │   └── user.go
    ├── routes
    │   ├── admin.go
    │   ├── codes.go
    │   ├── collections.go
    │   ├── datapipelines.go
    │   ├── datasets.go
    │   ├── endpoint.go
    │   ├── error.go
    │   ├── evaluation.go
    │   ├── finetune.go
    │   ├── home.go
    │   ├── mcp_server.go
    │   ├── models.go
    │   ├── organization.go
    │   ├── profile.go
    │   ├── prompts.go
    │   ├── resource_console.go
    │   ├── router.go
    │   ├── session.go
    │   ├── setting.go
    │   └── spaces.go
    ├── services
    │   └── .keep
    └── svc
    │   └── serviceContext.go
├── makefile
└── pkg
    ├── database
        ├── db.go
        └── migrations
        │   ├── 20240902082008_create_admin_photo.go
        │   ├── migrate.go
        │   └── placeholder.sql
    ├── s3
        ├── minio.go
        └── upload.go
    ├── server
        ├── backend
        │   ├── csghubserver
        │   │   ├── csghubserver.go
        │   │   ├── download.go
        │   │   ├── jwt.go
        │   │   ├── sensitive_check.go
        │   │   └── user.go
        │   └── interface.go
        ├── server.go
        └── types
        │   ├── download.go
        │   ├── jwt.go
        │   ├── sensitive.go
        │   └── user.go
    ├── testutils
        └── testutils.go
    ├── types
        ├── constants.go
        ├── enum
        │   └── enum.go
        └── errors.go
    └── utils
        ├── jwt
            └── jwt.go
        └── utils.go


/.env.example:
--------------------------------------------------------------------------------
 1 | CSGHUB_PORTAL_ON_PREMISE=true
 2 | CSGHUB_PORTAL_SENSITIVE_CHECK=false
 3 | CSGHUB_PORTAL_STARHUB_BASE_URL=http://localhost:8080
 4 | CSGHUB_PORTAL_STARHUB_API_KEY=f3a7b9c1d6e5f8e2a1b5d4f9e6a2b8d7c3a4e2b1d9f6e7a8d2c5a7b4c1e3f5b8a1d4f9b7d6e2f8a5d3b1e7f9c6a8b2d1e4f7d5b6e9f2a4b3c8e1d7f995hd82hf
 5 | CSGHUB_PORTAL_ENABLE_HTTPS=true
 6 | CSGHUB_PORTAL_DATABASE_DSN=postgresql://postgres:postgres@localhost:5432/csghub_development?sslmode=disable
 7 | CSGHUB_PORTAL_DATABASE_DIALECT=pg
 8 | CSGHUB_PORTAL_SIGNUP_URL=
 9 | CSGHUB_PORTAL_LOGIN_URL=
10 | CSGHUB_PORTAL_S3_ENABLE_SSL=true
11 | CSGHUB_PORTAL_S3_REGION=
12 | CSGHUB_PORTAL_S3_ACCESS_KEY_ID=
13 | CSGHUB_PORTAL_S3_ACCESS_KEY_SECRET=
14 | CSGHUB_PORTAL_S3_BUCKET=
15 | CSGHUB_PORTAL_S3_ENDPOINT=
16 | 


--------------------------------------------------------------------------------
/.envrc.example:
--------------------------------------------------------------------------------
 1 | export CSGHUB_PORTAL_ON_PREMISE=true
 2 | export CSGHUB_PORTAL_SENSITIVE_CHECK=false
 3 | export CSGHUB_PORTAL_STARHUB_BASE_URL=http://localhost:8080
 4 | export CSGHUB_PORTAL_STARHUB_API_KEY=f3a7b9c1d6e5f8e2a1b5d4f9e6a2b8d7c3a4e2b1d9f6e7a8d2c5a7b4c1e3f5b8a1d4f9b7d6e2f8a5d3b1e7f9c6a8b2d1e4f7d5b6e9f2a4b3c8e1d7f995hd82hf
 5 | export CSGHUB_PORTAL_ENABLE_HTTPS=true
 6 | export CSGHUB_PORTAL_DATABASE_DSN=postgresql://postgres:postgres@localhost:5432/csghub_development?sslmode=disable
 7 | export CSGHUB_PORTAL_DATABASE_DIALECT=pg
 8 | export CSGHUB_PORTAL_SIGNUP_URL=
 9 | export CSGHUB_PORTAL_LOGIN_URL=
10 | export CSGHUB_PORTAL_S3_ENABLE_SSL=true
11 | export CSGHUB_PORTAL_S3_REGION=
12 | export CSGHUB_PORTAL_S3_ACCESS_KEY_ID=
13 | export CSGHUB_PORTAL_S3_ACCESS_KEY_SECRET=
14 | export CSGHUB_PORTAL_S3_BUCKET=
15 | export CSGHUB_PORTAL_S3_ENDPOINT=
16 | 


--------------------------------------------------------------------------------
/.github/CODEOWNERS:
--------------------------------------------------------------------------------
1 | *.vue @zhendi @ice201508 @jialudev @ymh6315431 @yoiteyou @hiveer
2 | *.js @zhendi @ice201508 @jialudev @ymh6315431 @yoiteyou @hiveer
3 | *.ts @zhendi @ice201508 @jialudev @ymh6315431 @yoiteyou @hiveer
4 | *.html @zhendi @ice201508 @jialudev @ymh6315431 @yoiteyou @hiveer
5 | 
6 | *.go @zhendi @ice201508 @jialudev @ymh6315431 @yoiteyou @hiveer
7 | 


--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
 1 | ---
 2 | name: Bug report
 3 | about: Create a report in English to help us improve
 4 | title: ''
 5 | labels: ''
 6 | assignees: ''
 7 | 
 8 | ---
 9 | <!--
10 | Please submit your issue in English to ensure it's addressed promptly and efficiently.
11 | -->
12 | **Describe the bug**
13 | A clear and concise description of what the bug is.
14 | 
15 | **Environment**
16 | CSGHub Version: v0.7|v0.8|...
17 | OS: Linux | Windows | MacOS..
18 | Hardware: 2c4G | 4c8G |...
19 | Launch:  docker compose | helm chart
20 | 
21 | 
22 | **To Reproduce**
23 | Steps to reproduce the behavior:
24 | 1. Go to '...'
25 | 2. Click on '....'
26 | 3. Scroll down to '....'
27 | 4. See error
28 | 
29 | **Expected behavior**
30 | A clear and concise description of what you expected to happen.
31 | 
32 | **Screenshots**
33 | If applicable, add screenshots to help explain your problem.
34 | 
35 | **Additional context**
36 | Add any other context about the problem here.
37 | 


--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
 1 | ---
 2 | name: Feature enhancement request
 3 | about: Suggest an idea in English for this project
 4 | 
 5 | ---
 6 | <!--
 7 | Please submit the Pull Requests in English to ensure smooth communication and quicker review process.
 8 | -->
 9 | 
10 | /kind feature
11 | 
12 | **Describe the solution you'd like**
13 | [A clear and concise description of what you want to happen.]
14 | 
15 | 
16 | **Anything else you would like to add:**
17 | [Miscellaneous information that will assist in solving the issue.]
18 | 
19 | 
20 | **Links to the design documents or others:**
21 | 


--------------------------------------------------------------------------------
/.github/workflows/golang-lint.yml:
--------------------------------------------------------------------------------
 1 | name: Go Lint
 2 | 
 3 | on:
 4 |   pull_request:
 5 |     branches: [ main ]
 6 | 
 7 | jobs:
 8 |   lint:
 9 |     name: Lint Go Code
10 |     runs-on: ubuntu-latest
11 |     steps:
12 |     - uses: actions/checkout@v2
13 | 
14 |     - name: Set up Go
15 |       uses: actions/setup-go@v2
16 |       with:
17 |         go-version: '^1.22'
18 | 
19 |     #- name: Run golangci-lint
20 |     #  uses: golangci/golangci-lint-action@v2
21 |     #  with:
22 |     #    version: v1.43
23 | 


--------------------------------------------------------------------------------
/.mockery.yaml:
--------------------------------------------------------------------------------
 1 | with-expecter: true
 2 | dir: "_mocks/{{.PackagePath}}"
 3 | packages:
 4 |     opencsg.com/portal/pkg/utils/jwt:
 5 |         config:
 6 |         interfaces:
 7 |             AdminHandler:
 8 |     opencsg.com/portal/internal/handlers/render/base:
 9 |         config:
10 |         interfaces:
11 |             RenderBase:


--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
 1 | FROM --platform=$BUILDPLATFORM opencsg-registry.cn-beijing.cr.aliyuncs.com/opencsg_public/go-node AS builder
 2 | ARG TARGETPLATFORM
 3 | ARG BUILDPLATFORM
 4 | 
 5 | RUN mkdir /myapp
 6 | WORKDIR /myapp
 7 | ADD . /myapp
 8 | 
 9 | ENV CGO_ENABLED=0
10 | RUN go mod tidy
11 | RUN cd frontend && yarn install && yarn build
12 | RUN GOOS=$(echo ${TARGETPLATFORM} | cut -f1 -d '/') \
13 |     GOARCH=$(echo ${TARGETPLATFORM} | cut -f2 -d '/') \
14 |     go build -o csghub-portal ./cmd/csghub-portal
15 | 
16 | FROM bitnami/minideb:latest
17 | RUN apt update && apt install -y ca-certificates && update-ca-certificates
18 | WORKDIR /myapp
19 | COPY --from=builder /myapp/csghub-portal /myapp/csghub-portal


--------------------------------------------------------------------------------
/cmd/csghub-portal/main.go:
--------------------------------------------------------------------------------
 1 | package main
 2 | 
 3 | import (
 4 | 	"context"
 5 | 	"os"
 6 | 
 7 | 	"opencsg.com/portal/cmd/csghub-portal/cmd"
 8 | )
 9 | 
10 | func main() {
11 | 	command := cmd.RootCmd
12 | 	if err := command.ExecuteContext(context.Background()); err != nil {
13 | 		os.Exit(1)
14 | 	}
15 | }
16 | 


--------------------------------------------------------------------------------
/docs/images/add_newfile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/add_newfile.png


--------------------------------------------------------------------------------
/docs/images/add_newfile_en.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/add_newfile_en.png


--------------------------------------------------------------------------------
/docs/images/after_fintune.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/after_fintune.png


--------------------------------------------------------------------------------
/docs/images/after_fintune_en.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/after_fintune_en.png


--------------------------------------------------------------------------------
/docs/images/before_fintune.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/before_fintune.png


--------------------------------------------------------------------------------
/docs/images/before_fintune_en.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/before_fintune_en.png


--------------------------------------------------------------------------------
/docs/images/create_model_repo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/create_model_repo.png


--------------------------------------------------------------------------------
/docs/images/create_model_repo_en.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/create_model_repo_en.png


--------------------------------------------------------------------------------
/docs/images/csghub_framework.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/csghub_framework.png


--------------------------------------------------------------------------------
/docs/images/demo-cover.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/demo-cover.jpg


--------------------------------------------------------------------------------
/docs/images/discord-qrcode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/discord-qrcode.png


--------------------------------------------------------------------------------
/docs/images/download_file.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/download_file.png


--------------------------------------------------------------------------------
/docs/images/download_file_en.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/download_file_en.png


--------------------------------------------------------------------------------
/docs/images/download_sdk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/download_sdk.png


--------------------------------------------------------------------------------
/docs/images/download_sdk_en.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/download_sdk_en.png


--------------------------------------------------------------------------------
/docs/images/endpoint_create.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/endpoint_create.png


--------------------------------------------------------------------------------
/docs/images/endpoint_create_en.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/endpoint_create_en.png


--------------------------------------------------------------------------------
/docs/images/endpoint_menu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/endpoint_menu.png


--------------------------------------------------------------------------------
/docs/images/endpoint_menu_en.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/endpoint_menu_en.png


--------------------------------------------------------------------------------
/docs/images/endpoint_playground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/endpoint_playground.png


--------------------------------------------------------------------------------
/docs/images/endpoint_playground_en.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/endpoint_playground_en.png


--------------------------------------------------------------------------------
/docs/images/finetune_create.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/finetune_create.png


--------------------------------------------------------------------------------
/docs/images/finetune_create_en.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/finetune_create_en.png


--------------------------------------------------------------------------------
/docs/images/finetune_llamafactory.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/finetune_llamafactory.png


--------------------------------------------------------------------------------
/docs/images/finetune_llamafactory_en.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/finetune_llamafactory_en.png


--------------------------------------------------------------------------------
/docs/images/finetune_menu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/finetune_menu.png


--------------------------------------------------------------------------------
/docs/images/finetune_menu_en.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/finetune_menu_en.png


--------------------------------------------------------------------------------
/docs/images/finetune_notebook.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/finetune_notebook.png


--------------------------------------------------------------------------------
/docs/images/finetune_notebook_en.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/finetune_notebook_en.png


--------------------------------------------------------------------------------
/docs/images/fintune_result.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/fintune_result.png


--------------------------------------------------------------------------------
/docs/images/fintune_result_en.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/fintune_result_en.png


--------------------------------------------------------------------------------
/docs/images/functions.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/functions.jpeg


--------------------------------------------------------------------------------
/docs/images/little_asistant.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/little_asistant.jpeg


--------------------------------------------------------------------------------
/docs/images/llama_para_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/llama_para_1.png


--------------------------------------------------------------------------------
/docs/images/llama_para_1_en.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/llama_para_1_en.png


--------------------------------------------------------------------------------
/docs/images/llama_para_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/llama_para_2.png


--------------------------------------------------------------------------------
/docs/images/llama_para_2_en.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/llama_para_2_en.png


--------------------------------------------------------------------------------
/docs/images/portal_tech_graph.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/portal_tech_graph.png


--------------------------------------------------------------------------------
/docs/images/project_intro.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/project_intro.png


--------------------------------------------------------------------------------
/docs/images/server_tech_graph.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/server_tech_graph.png


--------------------------------------------------------------------------------
/docs/images/slack-qrcode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/slack-qrcode.png


--------------------------------------------------------------------------------
/docs/images/wechat-assistant-new.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/wechat-assistant-new.png


--------------------------------------------------------------------------------
/docs/images/wechat-group-new.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/wechat-group-new.png


--------------------------------------------------------------------------------
/docs/images/wechat-group.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/docs/images/wechat-group.jpeg


--------------------------------------------------------------------------------
/docs/migrate_to_gin_version_portal_cn.md:
--------------------------------------------------------------------------------
 1 | # 迁移到 Gin 版本
 2 | 
 3 | 首先我们假设,我们假设您已经部署好了一个 Rails 版本的 CSGHub Portal。
 4 | 
 5 | ## 拉取最新的仓库,默认使用 Gin 版本
 6 | 
 7 | ```bash
 8 | git fetch origin
 9 | git reset --hard origin/main
10 | ```
11 | 
12 | 通过此代码,您可以将本地的 `main` 分支重置为远程的 `main` 分支,同时还会拉取一个名为 `rails-main 的分支`,其中包含旧的 Rails 版本代码。
13 | 
14 | ## 部署 Gin Server
15 | 
16 | 请参考[该文档](https://github.com/OpenCSGs/csghub/blob/main/docs/setup.md)部署你的 Gin 服务器。默认情况下 Gin 会使用 `8090` 端口。
17 | 
18 | ### 数据库设置
19 | 
20 | 您可以通过环境变量 `CSGHUB_PORTAL_DATABASE_DSN` 来设置数据库连接。可以使用和 Rails 版本相同的数据库,因为我们已完成兼容性处理。  
21 | 
22 | 请注意,默认的数据库 URL 是:  
23 | `postgresql://postgres:postgres@localhost:5432/starhub_portal?sslmode=disable`  
24 | 这可能与您的 Rails 服务器使用的数据库名称不同,因此您可能需要更新该 URL 以便在本地运行。
25 | 


--------------------------------------------------------------------------------
/docs/migrate_to_gitaly_git_server_cn.md:
--------------------------------------------------------------------------------
 1 | # 迁移到 Gitaly  
 2 | 
 3 | ## 概述
 4 | 
 5 | 在 Release v0.9.0 中,我们将原有的 Git server 从 `Gitea` 迁移到了 `Gitaly`。`Gitaly` 是 `GitLab` 的一个组件,它将 Git 操作从 `GitLab` 应用程序中移出,并运行在单独的服务器上。作为一个 gRPC 服务,`Gitaly` 将 Git 操作委托给 Git 存储库。`Gitaly` 支持在多个服务器上运行,从而实现高可用性和良好的可扩展性。此文档将帮助您将服务从 `Gitea` 版本迁移到 `Gitaly` 版本。
 6 | 
 7 | ## 迁移指引
 8 | 
 9 | ### 1. 准备工作
10 | 
11 | 在开始迁移之前,需要确保以下几点:
12 | 
13 | 1. Gitea 版服务的仓库存储目录已经挂载在了磁盘上,并且能够被访问。  
14 | 2. CSGHub 服务已经不再接受任何请求,避免数据迁移中出现数据丢失。
15 | 
16 | ### 2. 迁移步骤
17 | 
18 | 1. 获取 Gitea 版服务的仓库存储目录,例如:`/data/gitdata/git/repositories`。  
19 | 2. 将该目录配置到 gitaly 配置文件中,在 gitaly 配置文件中找到 `[[storage]]` 项,配置 `path` 值为第 1 步中的目录。  
20 | 3. 启动 CSGHub 所有服务,进入 csghub-server 容器,执行`./starhub git generate-lfs-meta-objects`。
21 | 
22 | ### 3. 验证迁移结果
23 | 
24 | 登录新版服务,查看仓库是否已成功迁移,以及其中的文件是否完整。
25 | 


--------------------------------------------------------------------------------
/docs/user_system_cn.md:
--------------------------------------------------------------------------------
 1 | # 用户系统概述
 2 | CSGHub 平台通过对接 Casdoor 实现了用户的登录授权,Casdoor 自身具备单点登录和第三方登录的能力,用户可以方便的进行配置和集成。
 3 | 
 4 | ## 集成方式
 5 | 在 csghub-server 的 user service 可以通过如下环境变量的配置进行 Casdoor 的接入:
 6 | - STARHUB_SERVER_CASDOOR_CLIENT_ID: ${STARHUB_SERVER_CASDOOR_CLIENT_ID}
 7 | - STARHUB_SERVER_CASDOOR_CLIENT_SECRET: ${STARHUB_SERVER_CASDOOR_CLIENT_SECRET}
 8 | - STARHUB_SERVER_CASDOOR_ENDPOINT: ${STARHUB_SERVER_CASDOOR_ENDPOINT}
 9 | - STARHUB_SERVER_CASDOOR_CERTIFICATE: <casdoor_stg_cert-token_jwt_key.pem>
10 | - STARHUB_SERVER_CASDOOR_ORGANIZATION_NAME: ${STARHUB_SERVER_CASDOOR_ORGANIZATION_NAME}
11 | - STARHUB_SERVER_CASDOOR_APPLICATION_NAME: ${STARHUB_SERVER_CASDOOR_APPLICATION_NAME}
12 | 
13 | ## 特别注意
14 | 1. 第三方登录的用户,因为各个集成的第三方系统的差异(可能会没有用户名,或者用户名为中文等情况),这些差异跟我们自身系统不兼容
15 | 所以对于第三方登录的用户,我们强制要求用户对用户名进行更新,且只能更新一次
16 | 2. 目前 csghub-server 还未完成 casdoor 密码回写的集成,所以系统暂不支持更新用户密码
17 | 


--------------------------------------------------------------------------------
/frontend/.gitignore:
--------------------------------------------------------------------------------
 1 | # Logs
 2 | logs
 3 | *.log
 4 | npm-debug.log*
 5 | yarn-debug.log*
 6 | yarn-error.log*
 7 | pnpm-debug.log*
 8 | lerna-debug.log*
 9 | 
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 | 
15 | # Editor directories and files
16 | .vscode/*
17 | !.vscode/extensions.json
18 | .idea
19 | .DS_Store
20 | *.suo
21 | *.ntvs*
22 | *.njsproj
23 | *.sln
24 | *.sw?
25 | 


--------------------------------------------------------------------------------
/frontend/.tool-versions:
--------------------------------------------------------------------------------
1 | nodejs 22.10.0
2 | 


--------------------------------------------------------------------------------
/frontend/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 |   "recommendations": ["Vue.volar"]
3 | }
4 | 


--------------------------------------------------------------------------------
/frontend/embed.go:
--------------------------------------------------------------------------------
1 | package frontend
2 | 
3 | import "embed"
4 | 
5 | //go:embed dist
6 | var Dist embed.FS
7 | 


--------------------------------------------------------------------------------
/frontend/jsconfig.json:
--------------------------------------------------------------------------------
 1 | {
 2 |     "compilerOptions": {
 3 |         "baseUrl": "./",
 4 |             "paths": {
 5 |             "@/*": ["src/*"]
 6 |         }
 7 |     },
 8 |     "exclude": ["node_modules", "dist"]
 9 | }
10 | 
11 | 


--------------------------------------------------------------------------------
/frontend/postcss.config.js:
--------------------------------------------------------------------------------
1 | export default {
2 |   plugins: {
3 |     tailwindcss: {},
4 |     autoprefixer: {},
5 |   },
6 | }
7 | 


--------------------------------------------------------------------------------
/frontend/public/images/collection_half_cirle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/frontend/public/images/collection_half_cirle.png


--------------------------------------------------------------------------------
/frontend/public/images/default_cover_image copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/frontend/public/images/default_cover_image copy.png


--------------------------------------------------------------------------------
/frontend/public/images/default_cover_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/frontend/public/images/default_cover_image.png


--------------------------------------------------------------------------------
/frontend/public/images/default_org.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/frontend/public/images/default_org.png


--------------------------------------------------------------------------------
/frontend/public/images/empty-models.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/frontend/public/images/empty-models.png


--------------------------------------------------------------------------------
/frontend/public/images/error_page_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/frontend/public/images/error_page_bg.png


--------------------------------------------------------------------------------
/frontend/public/images/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/frontend/public/images/favicon.ico


--------------------------------------------------------------------------------
/frontend/public/images/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/frontend/public/images/favicon.png


--------------------------------------------------------------------------------
/frontend/public/images/files/Default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/frontend/public/images/files/Default.png


--------------------------------------------------------------------------------
/frontend/public/images/icons/Finished.svg:
--------------------------------------------------------------------------------
1 | <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <g id="check">
3 | <path id="Icon" d="M10 3L4.5 8.5L2 6" stroke="#667085" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
4 | </g>
5 | </svg>
6 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/Processing.svg:
--------------------------------------------------------------------------------
 1 | <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
 2 | <g id="loading-01" clip-path="url(#clip0_20054_3980)">
 3 | <path id="Icon" d="M6 1.125V2.375M6 9V11M2.875 6H1.125M10.625 6H9.875M9.22855 9.22855L8.875 8.875M9.33211 2.70789L8.625 3.415M2.46079 9.53921L3.875 8.125M2.56434 2.60434L3.625 3.665" stroke="#4D6AD6" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
 4 | </g>
 5 | <defs>
 6 | <clipPath id="clip0_20054_3980">
 7 | <rect width="12" height="12" fill="white"/>
 8 | </clipPath>
 9 | </defs>
10 | </svg>
11 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/admin-menu-active-icon.svg:
--------------------------------------------------------------------------------
1 | <svg width="4" height="20" viewBox="0 0 4 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M0 0V0C2.20914 0 4 1.79086 4 4V16C4 18.2091 2.20914 20 0 20V20V0Z" fill="#3250BD"/>
3 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/admin-menu-cloud.svg:
--------------------------------------------------------------------------------
1 | <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <g id="cloud-02">
3 | <path id="Icon" d="M5.00002 15.833C3.15907 15.833 1.66669 14.3406 1.66669 12.4997C1.66669 10.9461 2.72945 9.64083 4.16761 9.27112C4.167 9.23627 4.16669 9.20134 4.16669 9.16634C4.16669 5.94468 6.77836 3.33301 10 3.33301C13.0082 3.33301 15.4846 5.61008 15.7995 8.53463C17.2737 9.03975 18.3334 10.4376 18.3334 12.083C18.3334 14.1541 16.6544 15.833 14.5834 15.833C11.4674 15.833 8.48972 15.833 5.00002 15.833Z" stroke="#475467" stroke-width="1.67" stroke-linecap="round" stroke-linejoin="round"/>
4 | </g>
5 | </svg>
6 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/admin-menu-dashboard.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368"><path d="M520-600v-240h320v240H520ZM120-440v-400h320v400H120Zm400 320v-400h320v400H520Zm-400 0v-240h320v240H120Zm80-400h160v-240H200v240Zm400 320h160v-240H600v240Zm0-480h160v-80H600v80ZM200-200h160v-80H200v80Zm160-320Zm240-160Zm0 240ZM360-280Z"/></svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/admin-menu-settings.svg:
--------------------------------------------------------------------------------
1 | <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <g id="settings-04">
3 | <path id="Icon" d="M2.5 6.66699L12.5 6.66699M12.5 6.66699C12.5 8.0477 13.6193 9.16699 15 9.16699C16.3807 9.16699 17.5 8.0477 17.5 6.66699C17.5 5.28628 16.3807 4.16699 15 4.16699C13.6193 4.16699 12.5 5.28628 12.5 6.66699ZM7.5 13.3337L17.5 13.3337M7.5 13.3337C7.5 14.7144 6.38071 15.8337 5 15.8337C3.61929 15.8337 2.5 14.7144 2.5 13.3337C2.5 11.9529 3.61929 10.8337 5 10.8337C6.38071 10.8337 7.5 11.9529 7.5 13.3337Z" stroke="#475467" stroke-width="1.67" stroke-linecap="round" stroke-linejoin="round"/>
4 | </g>
5 | </svg>
6 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/admin-menu-to-left.svg:
--------------------------------------------------------------------------------
1 | <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <g id="align-left-01">
3 | <path id="Icon" d="M2.5 2.5V17.5M17.5 10H5.83333M5.83333 10L11.6667 15.8333M5.83333 10L11.6667 4.16667" stroke="#667085" stroke-width="1.66667" stroke-linecap="round" stroke-linejoin="round"/>
4 | </g>
5 | </svg>
6 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/admin-menu-users.svg:
--------------------------------------------------------------------------------
1 | <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <g id="users-01">
3 | <path id="Icon" d="M18.3334 17.5V15.8333C18.3334 14.2801 17.271 12.9751 15.8334 12.605M12.9167 2.7423C14.1383 3.23679 15 4.43443 15 5.83333C15 7.23224 14.1383 8.42988 12.9167 8.92437M14.1667 17.5C14.1667 15.9469 14.1667 15.1703 13.913 14.5577C13.5746 13.741 12.9257 13.092 12.109 12.7537C11.4964 12.5 10.7198 12.5 9.16669 12.5H6.66669C5.11355 12.5 4.33698 12.5 3.72441 12.7537C2.90765 13.092 2.25874 13.741 1.92042 14.5577C1.66669 15.1703 1.66669 15.9469 1.66669 17.5M11.25 5.83333C11.25 7.67428 9.75764 9.16667 7.91669 9.16667C6.07574 9.16667 4.58335 7.67428 4.58335 5.83333C4.58335 3.99238 6.07574 2.5 7.91669 2.5C9.75764 2.5 11.25 3.99238 11.25 5.83333Z" stroke="#475467" stroke-width="1.67" stroke-linecap="round" stroke-linejoin="round"/>
4 | </g>
5 | </svg>
6 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/alert.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28" fill="none">
2 |   <path d="M13.9997 9.33301V13.9997M13.9997 18.6663H14.0113M25.6663 13.9997C25.6663 20.443 20.443 25.6663 13.9997 25.6663C7.55635 25.6663 2.33301 20.443 2.33301 13.9997C2.33301 7.55635 7.55635 2.33301 13.9997 2.33301C20.443 2.33301 25.6663 7.55635 25.6663 13.9997Z" stroke="#344054" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/arrow-left.svg:
--------------------------------------------------------------------------------
1 | <svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M11.0837 6.99935H2.91699M2.91699 6.99935L7.00033 11.0827M2.91699 6.99935L7.00033 2.91602" stroke="#344054" stroke-width="1.66667" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/arrow.svg:
--------------------------------------------------------------------------------
1 | <svg width="10" height="10" viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9.08366 4.99984H0.916992M0.916992 4.99984L5.00033 9.08317M0.916992 4.99984L5.00033 0.916504" stroke="#344054" stroke-width="1.17" stroke-linecap="round" stroke-linejoin="round" /></svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/branch.svg:
--------------------------------------------------------------------------------
1 | <svg class="mr-1" xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none">
2 |   <circle cx="8.75" cy="2.25" r="1.75" stroke="#606266" stroke-linecap="round" stroke-linejoin="round"/>
3 |   <circle cx="3.25" cy="9.5" r="1.75" stroke="#606266" stroke-linecap="round" stroke-linejoin="round"/>
4 |   <path d="M3.25 4L3.25 7.75" stroke="#606266" stroke-linecap="round" stroke-linejoin="round"/>
5 |   <circle cx="3.25" cy="2.25" r="1.75" stroke="#606266" stroke-linecap="round" stroke-linejoin="round"/>
6 |   <path d="M3.25 7.75V7.75C3.25 6.64543 4.14543 5.75 5.25 5.75H7C7.9665 5.75 8.75 4.9665 8.75 4V4" stroke="#606266" stroke-linecap="round" stroke-linejoin="round"/>
7 | </svg>
8 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/broadcast-close-dark.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
2 |   <g opacity="0.7">
3 |     <path d="M15 5L5 15M5 5L15 15" stroke="white" stroke-width="1.66667" stroke-linecap="round" stroke-linejoin="round"/>
4 |   </g>
5 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/broadcast-close-light.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
2 |   <path d="M15 5L5 15M5 5L15 15" stroke="#98A2B3" stroke-width="1.66667" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/check_circle.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
2 |   <path d="M7.5 12L10.5 15L16.5 9M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z" stroke="#079455" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/chevron-down.svg:
--------------------------------------------------------------------------------
1 | <svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M3.5 5.25L7 8.75L10.5 5.25" stroke="#475467" stroke-width="1.17" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/chevron-up.svg:
--------------------------------------------------------------------------------
1 | <svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M10.5 8.75L7 5.25L3.5 8.75" stroke="#475467" stroke-width="1.17" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/chevron_right.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
2 |   <path d="M6 12L10 8L6 4" stroke="#667085" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/clock.svg:
--------------------------------------------------------------------------------
 1 | <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
 2 | <g clip-path="url(#clip0_15357_15135)">
 3 | <path d="M6 4V6L7.5 7M6 11C3.23858 11 1 8.76142 1 6C1 3.23858 3.23858 1 6 1C8.76142 1 11 3.23858 11 6C11 8.76142 8.76142 11 6 11Z" stroke="#667085" stroke-linecap="round" stroke-linejoin="round"/>
 4 | </g>
 5 | <defs>
 6 | <clipPath id="clip0_15357_15135">
 7 | <rect width="12" height="12" fill="white"/>
 8 | </clipPath>
 9 | </defs>
10 | </svg>
11 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/close.svg:
--------------------------------------------------------------------------------
1 | <svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M10.5 3.5L3.5 10.5M3.5 3.5L10.5 10.5" stroke="#344054" stroke-width="1.66667" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/close_menu.svg:
--------------------------------------------------------------------------------
1 | <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M18 6L6 18M6 6L18 18" stroke="#344054" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/commits.svg:
--------------------------------------------------------------------------------
 1 | <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
 2 | <g clip-path="url(#clip0_2441_9910)">
 3 | <path d="M7.99967 5.3335V8.00016L9.99967 9.3335M7.99967 14.6668C4.31778 14.6668 1.33301 11.6821 1.33301 8.00016C1.33301 4.31826 4.31778 1.3335 7.99967 1.3335C11.6816 1.3335 14.6663 4.31826 14.6663 8.00016C14.6663 11.6821 11.6816 14.6668 7.99967 14.6668Z" stroke="#606266" stroke-linecap="round" stroke-linejoin="round"/>
 4 | </g>
 5 | <defs>
 6 | <clipPath id="clip0_2441_9910">
 7 | <rect width="16" height="16" fill="white"/>
 8 | </clipPath>
 9 | </defs>
10 | </svg>
11 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/create_org_repo.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14" fill="none"><path d="M7.00033 2.91699V11.0837M2.91699 7.00033H11.0837" stroke="#344054" stroke-width="1.66667" stroke-linecap="round" stroke-linejoin="round"/></svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/dataflow.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
2 |   <path d="M12 4V15.2C12 16.8802 12 17.7202 12.327 18.362C12.6146 18.9265 13.0735 19.3854 13.638 19.673C14.2798 20 15.1198 20 16.8 20H17M17 20C17 21.1046 17.8954 22 19 22C20.1046 22 21 21.1046 21 20C21 18.8954 20.1046 18 19 18C17.8954 18 17 18.8954 17 20ZM7 4L17 4M7 4C7 5.10457 6.10457 6 5 6C3.89543 6 3 5.10457 3 4C3 2.89543 3.89543 2 5 2C6.10457 2 7 2.89543 7 4ZM17 4C17 5.10457 17.8954 6 19 6C20.1046 6 21 5.10457 21 4C21 2.89543 20.1046 2 19 2C17.8954 2 17 2.89543 17 4ZM12 12H17M17 12C17 13.1046 17.8954 14 19 14C20.1046 14 21 13.1046 21 12C21 10.8954 20.1046 10 19 10C17.8954 10 17 10.8954 17 12Z" stroke="#3250BD" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/dataflow_alignL.svg:
--------------------------------------------------------------------------------
1 | <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <g id="align-left-01">
3 | <path id="Icon" d="M2.5 2.5V17.5M17.5 10H5.83333M5.83333 10L11.6667 15.8333M5.83333 10L11.6667 4.16667" stroke="#667085" stroke-width="1.66667" stroke-linecap="round" stroke-linejoin="round"/>
4 | </g>
5 | </svg>
6 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/dataflow_alignR.svg:
--------------------------------------------------------------------------------
1 | <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <g id="align-right-01">
3 | <path id="Icon" d="M17.5 17.5V2.5M2.5 10H14.1667M14.1667 10L8.33333 4.16667M14.1667 10L8.33333 15.8333" stroke="#667085" stroke-width="1.66667" stroke-linecap="round" stroke-linejoin="round"/>
4 | </g>
5 | </svg>
6 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/dataflow_backIcon.svg:
--------------------------------------------------------------------------------
1 | <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <g id="arrow-left">
3 | <path id="Icon" d="M19 12H5M5 12L12 19M5 12L12 5" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
4 | </g>
5 | </svg>
6 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/dataflow_drag.svg:
--------------------------------------------------------------------------------
1 | <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <g id="menu">
3 | <path id="Vector" d="M2 4H14M2 8H14M2 12H14" stroke="#2F384C" stroke-linecap="round"/>
4 | </g>
5 | </svg>
6 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/dataflow_homeIcon_divider.svg:
--------------------------------------------------------------------------------
1 | <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <g id="slash-divider">
3 | <path id="Icon" d="M5.83301 18.3334L14.1663 1.66669" stroke="#D0D5DD" stroke-width="1.66667" stroke-linecap="round" stroke-linejoin="round"/>
4 | </g>
5 | </svg>
6 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/dataflow_menuIcon.svg:
--------------------------------------------------------------------------------
1 | <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <g id="layout-alt-01">
3 | <path id="Icon" d="M2.5 7.5H17.5M7.5 7.5L7.5 17.5M6.5 2.5H13.5C14.9001 2.5 15.6002 2.5 16.135 2.77248C16.6054 3.01217 16.9878 3.39462 17.2275 3.86502C17.5 4.3998 17.5 5.09987 17.5 6.5V13.5C17.5 14.9001 17.5 15.6002 17.2275 16.135C16.9878 16.6054 16.6054 16.9878 16.135 17.2275C15.6002 17.5 14.9001 17.5 13.5 17.5H6.5C5.09987 17.5 4.3998 17.5 3.86502 17.2275C3.39462 16.9878 3.01217 16.6054 2.77248 16.135C2.5 15.6002 2.5 14.9001 2.5 13.5V6.5C2.5 5.09987 2.5 4.3998 2.77248 3.86502C3.01217 3.39462 3.39462 3.01217 3.86502 2.77248C4.3998 2.5 5.09987 2.5 6.5 2.5Z" stroke="#475467" stroke-width="1.66667" stroke-linecap="round" stroke-linejoin="round"/>
4 | </g>
5 | </svg>
6 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/dataflow_menuIcon_tlp.svg:
--------------------------------------------------------------------------------
 1 | <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
 2 | <g id="target-04" clip-path="url(#clip0_19351_5158)">
 3 | <path id="Icon" d="M13.3336 6.6665V4.1665L15.8336 1.6665L16.667 3.33317L18.3336 4.1665L15.8336 6.6665H13.3336ZM13.3336 6.6665L10.0003 9.99979M18.3337 9.99984C18.3337 14.6022 14.6027 18.3332 10.0003 18.3332C5.39795 18.3332 1.66699 14.6022 1.66699 9.99984C1.66699 5.39746 5.39795 1.6665 10.0003 1.6665M14.167 9.99984C14.167 12.301 12.3015 14.1665 10.0003 14.1665C7.69914 14.1665 5.83366 12.301 5.83366 9.99984C5.83366 7.69865 7.69914 5.83317 10.0003 5.83317" stroke="#475467" stroke-width="1.66667" stroke-linecap="round" stroke-linejoin="round"/>
 4 | </g>
 5 | <defs>
 6 | <clipPath id="clip0_19351_5158">
 7 | <rect width="20" height="20" fill="white"/>
 8 | </clipPath>
 9 | </defs>
10 | </svg>
11 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/dataflow_menuline.svg:
--------------------------------------------------------------------------------
1 | <svg width="4" height="20" viewBox="0 0 4 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M0 0C2.20914 0 4 1.79086 4 4V16C4 18.2091 2.20914 20 0 20V0Z" fill="#3250BD"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/datasets.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none"><path opacity="0.12" d="M8 14.6673C11.3137 14.6673 14 13.7719 14 12.6673V3.33398C14 3.33398 13.6667 5.33398 8 5.33398C2.33333 5.33398 2 3.33398 2 3.33398V12.6673C2 13.7719 4.68629 14.6673 8 14.6673Z" fill="#1F75CB"/><path d="M14 8.00065C14 9.10522 11.3137 10.0007 8 10.0007C4.68629 10.0007 2 9.10522 2 8.00065M14 3.33398C14 4.43855 11.3137 5.33398 8 5.33398C4.68629 5.33398 2 4.43855 2 3.33398M14 3.33398C14 2.22941 11.3137 1.33398 8 1.33398C4.68629 1.33398 2 2.22941 2 3.33398M14 3.33398V12.6673C14 13.7719 11.3137 14.6673 8 14.6673C4.68629 14.6673 2 13.7719 2 12.6673V3.33398" stroke="#1F75CB" stroke-linecap="round" stroke-linejoin="round"/></svg>
2 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/dot-ico.svg:
--------------------------------------------------------------------------------
1 | <svg width="8" height="8" viewBox="0 0 8 8" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <g id="_Dot">
3 | <circle id="Dot" cx="4" cy="4" r="3" fill="#17B26A"/>
4 | </g>
5 | </svg>
6 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/dot_black.svg:
--------------------------------------------------------------------------------
1 | <svg width="8" height="8" viewBox="0 0 8 8" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <g id="_Dot">
3 | <circle id="Dot" cx="4" cy="4" r="3" fill="#667085"/>
4 | </g>
5 | </svg>
6 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/download.svg:
--------------------------------------------------------------------------------
 1 | <svg
 2 |   width="12"
 3 |   height="12"
 4 |   viewBox="0 0 12 12"
 5 |   fill="none"
 6 |   xmlns="http://www.w3.org/2000/svg"
 7 | >
 8 |   <path
 9 |     d="M10.5 10.5H1.5M9 5.5L6 8.5M6 8.5L3 5.5M6 8.5V1.5"
10 |     stroke="white"
11 |     stroke-linecap="round"
12 |     stroke-linejoin="round"
13 |   />
14 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/download2.svg:
--------------------------------------------------------------------------------
1 | <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <g id="download">
3 | <path id="Vector 1" d="M6 1V8.5M6 8.5L9 5.5M6 8.5L3 5.5M2 9V10.2C2 10.48 2 10.62 2.0545 10.727C2.10243 10.8211 2.17892 10.8976 2.273 10.9455C2.37996 11 2.51997 11 2.8 11H9.2C9.48003 11 9.62004 11 9.727 10.9455C9.82108 10.8976 9.89757 10.8211 9.9455 10.727C10 10.62 10 10.48 10 10.2V9" stroke="#667085" stroke-width="0.75" stroke-linecap="round" stroke-linejoin="round"/>
4 | </g>
5 | </svg>
6 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/download_dark.svg:
--------------------------------------------------------------------------------
1 | <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M10.5 10.5H1.5M9 5.5L6 8.5M6 8.5L3 5.5M6 8.5V1.5" stroke="#344054" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/edit.svg:
--------------------------------------------------------------------------------
 1 | <svg
 2 |   width="12"
 3 |   height="12"
 4 |   viewBox="0 0 12 12"
 5 |   fill="none"
 6 |   xmlns="http://www.w3.org/2000/svg"
 7 | >
 8 |   <path
 9 |     d="M10 10.5H2M8 2C7.875 2.875 8.625 3.625 9.5 3.5M3.5 8L3.57005 7.71979C3.73008 7.07967 3.8101 6.7596 3.93877 6.4612C4.05301 6.19627 4.19557 5.94448 4.36397 5.71022C4.55366 5.44635 4.78694 5.21307 5.25351 4.74651L8.25006 1.74999C8.66428 1.33578 9.33585 1.33579 9.75005 1.75001V1.75001C10.1642 2.16422 10.1642 2.83577 9.75003 3.24997L6.75349 6.24651C6.28693 6.71307 6.05364 6.94636 5.78978 7.13604C5.55553 7.30443 5.30374 7.44699 5.03881 7.56123C4.74041 7.6899 4.42035 7.76991 3.78023 7.92994L3.5 8Z"
10 |     stroke="#606266"
11 |     stroke-linecap="round"
12 |     stroke-linejoin="round"
13 |   />
14 | </svg>
15 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/edit_org_member_role.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
2 |   <path d="M18 10.0003L14 6.0003M2.5 21.5003L5.88437 21.1243C6.29786 21.0783 6.5046 21.0553 6.69785 20.9928C6.86929 20.9373 7.03245 20.8589 7.18289 20.7597C7.35245 20.6479 7.49955 20.5008 7.79373 20.2066L21 7.0003C22.1046 5.89573 22.1046 4.10487 21 3.0003C19.8955 1.89573 18.1046 1.89573 17 3.0003L3.79373 16.2066C3.49955 16.5008 3.35246 16.6478 3.24064 16.8174C3.14143 16.9679 3.06301 17.131 3.00751 17.3025C2.94496 17.4957 2.92198 17.7024 2.87604 18.1159L2.5 21.5003Z" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/el_upload.svg:
--------------------------------------------------------------------------------
1 | <svg width="20" height="18" viewBox="0 0 20 18" fill="none" xmlns="http://www.w3.org/2000/svg">
2 |   <path
3 |       d="M6.66663 12.3333L9.99996 9M9.99996 9L13.3333 12.3333M9.99996 9V16.5M16.6666 12.9524C17.6845 12.1117 18.3333 10.8399 18.3333 9.41667C18.3333 6.88536 16.2813 4.83333 13.75 4.83333C13.5679 4.83333 13.3975 4.73833 13.3051 4.58145C12.2183 2.73736 10.212 1.5 7.91663 1.5C4.46485 1.5 1.66663 4.29822 1.66663 7.75C1.66663 9.47175 2.36283 11.0309 3.48908 12.1613"
4 |       stroke="#475467" stroke-width="1.66667" stroke-linecap="round" stroke-linejoin="round"/>
5 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/evaluation_new.svg:
--------------------------------------------------------------------------------
 1 | <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
 2 | <g id="activity-rec" clip-path="url(#clip0_22376_27972)">
 3 | <path id="Vector" d="M3 6L4 6L5 7.5L7 4.5L8 6L9 6M4.2 11L7.8 11C8.92011 11 9.48016 11 9.90798 10.782C10.2843 10.5903 10.5903 10.2843 10.782 9.90798C11 9.48016 11 8.9201 11 7.8L11 4.2C11 3.07989 11 2.51984 10.782 2.09202C10.5903 1.71569 10.2843 1.40973 9.90798 1.21799C9.48016 0.999999 8.92011 0.999999 7.8 0.999999L4.2 0.999999C3.07989 1 2.51984 1 2.09202 1.21799C1.71569 1.40973 1.40973 1.71569 1.21799 2.09202C1 2.51984 1 3.07989 1 4.2L1 7.8C1 8.92011 1 9.48016 1.21799 9.90798C1.40974 10.2843 1.7157 10.5903 2.09202 10.782C2.51984 11 3.0799 11 4.2 11Z" stroke="#344054" stroke-linecap="round" stroke-linejoin="round"/>
 4 | </g>
 5 | <defs>
 6 | <clipPath id="clip0_22376_27972">
 7 | <rect width="12" height="12" fill="white"/>
 8 | </clipPath>
 9 | </defs>
10 | </svg>
11 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/exclamation_point.svg:
--------------------------------------------------------------------------------
1 | <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2 |   <path d="M8.00016 10.6668V7.3335M8.3335 5.3335C8.3335 5.51759 8.18426 5.66683 8.00016 5.66683C7.81607 5.66683 7.66683 5.51759 7.66683 5.3335M8.3335 5.3335C8.3335 5.1494 8.18426 5.00016 8.00016 5.00016C7.81607 5.00016 7.66683 5.1494 7.66683 5.3335M8.3335 5.3335H7.66683M14.6668 8.00016C14.6668 11.6821 11.6821 14.6668 8.00016 14.6668C4.31826 14.6668 1.3335 11.6821 1.3335 8.00016C1.3335 4.31826 4.31826 1.3335 8.00016 1.3335C11.6821 1.3335 14.6668 4.31826 14.6668 8.00016Z" stroke="#667085" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>
4 |   


--------------------------------------------------------------------------------
/frontend/public/images/icons/extraction.svg:
--------------------------------------------------------------------------------
1 | <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <g id="grid-11">
3 | <path id="Vector" d="M8.00016 6.00065L8.00016 14.6673M1.3335 6.00065H14.6668M1.3335 10.0007H14.6668M6.66683 14.6673H9.3335C11.2003 14.6673 12.1338 14.6673 12.8468 14.304C13.474 13.9844 13.9839 13.4745 14.3035 12.8473C14.6668 12.1342 14.6668 11.2008 14.6668 9.33399V6.66732C14.6668 4.80048 14.6668 3.86706 14.3035 3.15402C13.9839 2.52681 13.474 2.01687 12.8468 1.6973C12.1338 1.33398 11.2003 1.33398 9.3335 1.33398H6.66683C4.79999 1.33398 3.86657 1.33398 3.15353 1.6973C2.52632 2.01687 2.01639 2.52681 1.69681 3.15402C1.3335 3.86706 1.3335 4.80048 1.3335 6.66732V9.33398C1.3335 11.2008 1.3335 12.1342 1.69681 12.8473C2.01639 13.4745 2.52632 13.9844 3.15353 14.304C3.86657 14.6673 4.79999 14.6673 6.66683 14.6673Z" stroke="#344054" stroke-linecap="round" stroke-linejoin="round"/>
4 | </g>
5 | </svg>
6 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/file.svg:
--------------------------------------------------------------------------------
 1 | <svg
 2 |   xmlns="http://www.w3.org/2000/svg"
 3 |   xmlns:xlink="http://www.w3.org/1999/xlink"
 4 |   aria-hidden="true"
 5 |   focusable="false"
 6 |   role="img"
 7 |   width="12"
 8 |   height="12"
 9 |   preserveAspectRatio="xMidYMid meet"
10 |   viewBox="0 0 32 32"
11 | >
12 |   <path
13 |     d="M25.7 9.3l-7-7A.908.908 0 0 0 18 2H8a2.006 2.006 0 0 0-2 2v24a2.006 2.006 0 0 0 2 2h16a2.006 2.006 0 0 0 2-2V10a.908.908 0 0 0-.3-.7zM18 4.4l5.6 5.6H18zM24 28H8V4h8v6a2.006 2.006 0 0 0 2 2h6z"
14 |     fill="currentColor"
15 |   ></path>
16 | </svg>
17 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/filter-lines.svg:
--------------------------------------------------------------------------------
1 | <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <g id="filter-lines">
3 | <path id="Icon" d="M3 6H9M1.5 3H10.5M4.5 9H7.5" stroke="#344054" stroke-linecap="round" stroke-linejoin="round"/>
4 | </g>
5 | </svg>
6 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/finetune_cpu_icon.svg:
--------------------------------------------------------------------------------
1 | <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <g id="server-02">
3 | <path id="Icon" d="M4.00065 5.33366H4.00732M4.00065 10.667H4.00732M4.00065 8.00033H12.0007M4.00065 8.00033C2.52789 8.00033 1.33398 6.80642 1.33398 5.33366C1.33398 3.8609 2.52789 2.66699 4.00065 2.66699H12.0007C13.4734 2.66699 14.6673 3.8609 14.6673 5.33366C14.6673 6.80642 13.4734 8.00033 12.0007 8.00033M4.00065 8.00033C2.52789 8.00033 1.33398 9.19423 1.33398 10.667C1.33398 12.1398 2.52789 13.3337 4.00065 13.3337H12.0007C13.4734 13.3337 14.6673 12.1398 14.6673 10.667C14.6673 9.19423 13.4734 8.00033 12.0007 8.00033" stroke="#344054" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
4 | </g>
5 | </svg>
6 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/finetune_tip.svg:
--------------------------------------------------------------------------------
 1 | <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
 2 | <g id="info-circle" clip-path="url(#clip0_13482_20613)">
 3 | <path id="Icon" d="M9.99935 13.3327V9.99935M9.99935 6.66602H10.0077M18.3327 9.99935C18.3327 14.6017 14.6017 18.3327 9.99935 18.3327C5.39698 18.3327 1.66602 14.6017 1.66602 9.99935C1.66602 5.39698 5.39698 1.66602 9.99935 1.66602C14.6017 1.66602 18.3327 5.39698 18.3327 9.99935Z" stroke="#344054" stroke-width="1.66667" stroke-linecap="round" stroke-linejoin="round"/>
 4 | </g>
 5 | <defs>
 6 | <clipPath id="clip0_13482_20613">
 7 | <rect width="20" height="20" fill="white"/>
 8 | </clipPath>
 9 | </defs>
10 | </svg>
11 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/fullscreen.svg:
--------------------------------------------------------------------------------
1 | <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M7 5L10.5 1.5M10.5 1.5H7.5M10.5 1.5V4.5M5 7L1.5 10.5M1.5 10.5H4.5M1.5 10.5L1.5 7.5" stroke="#475467" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/input_tip.svg:
--------------------------------------------------------------------------------
1 | <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6.05992 6.00016C6.21665 5.55461 6.52602 5.1789 6.93322 4.93958C7.34042 4.70027 7.81918 4.61279 8.2847 4.69264C8.75022 4.77249 9.17246 5.01451 9.47664 5.37585C9.78081 5.73718 9.94729 6.19451 9.94659 6.66683C9.94659 8.00016 7.94659 8.66683 7.94659 8.66683M7.99992 11.3335H8.00659M14.6666 8.00016C14.6666 11.6821 11.6818 14.6668 7.99992 14.6668C4.31802 14.6668 1.33325 11.6821 1.33325 8.00016C1.33325 4.31826 4.31802 1.3335 7.99992 1.3335C11.6818 1.3335 14.6666 4.31826 14.6666 8.00016Z" stroke="#98A2B3" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/></svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/instance_deploy_failed_tips.svg:
--------------------------------------------------------------------------------
 1 | <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
 2 |   <g clip-path="url(#clip0_33884_37477)">
 3 |     <path d="M6.06016 6.00065C6.2169 5.5551 6.52626 5.17939 6.93347 4.94007C7.34067 4.70076 7.81943 4.61328 8.28495 4.69313C8.75047 4.77297 9.17271 5.015 9.47688 5.37634C9.78106 5.73767 9.94753 6.195 9.94683 6.66732C9.94683 8.00065 7.94683 8.66732 7.94683 8.66732M8.00016 11.334H8.00683M14.6668 8.00065C14.6668 11.6826 11.6821 14.6673 8.00016 14.6673C4.31826 14.6673 1.3335 11.6826 1.3335 8.00065C1.3335 4.31875 4.31826 1.33398 8.00016 1.33398C11.6821 1.33398 14.6668 4.31875 14.6668 8.00065Z" stroke="#475467" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
 4 |   </g>
 5 |   <defs>
 6 |     <clipPath id="clip0_33884_37477">
 7 |       <rect width="16" height="16" fill="white"/>
 8 |     </clipPath>
 9 |   </defs>
10 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/instance_logs.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 12 12" fill="none">
2 |     <path
3 |         d="M7 5.5H4M5 7.5H4M8 3.5H4M10 5.25V3.4C10 2.55992 10 2.13988 9.83651 1.81901C9.6927 1.53677 9.46323 1.3073 9.18099 1.16349C8.86012 1 8.44008 1 7.6 1H4.4C3.55992 1 3.13988 1 2.81901 1.16349C2.53677 1.3073 2.3073 1.53677 2.16349 1.81901C2 2.13988 2 2.55992 2 3.4V8.6C2 9.44008 2 9.86012 2.16349 10.181C2.3073 10.4632 2.53677 10.6927 2.81901 10.8365C3.13988 11 3.55992 11 4.4 11H5.75M11 11L10.25 10.25M10.75 9C10.75 9.9665 9.9665 10.75 9 10.75C8.0335 10.75 7.25 9.9665 7.25 9C7.25 8.0335 8.0335 7.25 9 7.25C9.9665 7.25 10.75 8.0335 10.75 9Z"
4 |         stroke="#475467" stroke-linecap="round" stroke-linejoin="round" />
5 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/invite_org_member.svg:
--------------------------------------------------------------------------------
1 |       <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none"><path d="M9.99984 12.9167H6.24984C5.08687 12.9167 4.50538 12.9167 4.03222 13.0602C2.96688 13.3834 2.1332 14.217 1.81004 15.2824C1.6665 15.7555 1.6665 16.337 1.6665 17.5M15.8332 17.5V12.5M13.3332 15H18.3332M12.0832 6.25C12.0832 8.32107 10.4042 10 8.33317 10C6.2621 10 4.58317 8.32107 4.58317 6.25C4.58317 4.17893 6.2621 2.5 8.33317 2.5C10.4042 2.5 12.0832 4.17893 12.0832 6.25Z" stroke="#344054" stroke-width="1.66667" stroke-linecap="round" stroke-linejoin="round"/></svg>
2 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/json.svg:
--------------------------------------------------------------------------------
1 | <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M8.5 8.5L11 6L8.5 3.5M3.5 3.5L1 6L3.5 8.5M7 1.5L5 10.5" stroke="#98a1b2" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/language_tag.svg:
--------------------------------------------------------------------------------
1 | <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M11 6C11 8.76142 8.76142 11 6 11M11 6C11 3.23858 8.76142 1 6 1M11 6C11 4.89543 8.76142 4 6 4C3.23858 4 1 4.89543 1 6M11 6C11 7.10457 8.76142 8 6 8C3.23858 8 1 7.10457 1 6M6 11C3.23858 11 1 8.76142 1 6M6 11C7.10457 11 8 8.76142 8 6C8 3.23858 7.10457 1 6 1M6 11C4.89543 11 4 8.76142 4 6C4 3.23858 4.89543 1 6 1M1 6C1 3.23858 3.23858 1 6 1" stroke="#3B7C0F" stroke-width="0.75" stroke-linecap="round" stroke-linejoin="round"/></svg>
2 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/lock-01.svg:
--------------------------------------------------------------------------------
1 | <svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M19.8332 11.6667V9.33333C19.8332 6.11167 17.2215 3.5 13.9998 3.5C10.7782 3.5 8.1665 6.11167 8.1665 9.33333V11.6667M13.9998 16.9167V19.25M10.2665 24.5H17.7332C19.6934 24.5 20.6734 24.5 21.4221 24.1185C22.0807 23.783 22.6161 23.2475 22.9517 22.589C23.3332 21.8403 23.3332 20.8602 23.3332 18.9V17.2667C23.3332 15.3065 23.3332 14.3264 22.9517 13.5777C22.6161 12.9191 22.0807 12.3837 21.4221 12.0481C20.6734 11.6667 19.6934 11.6667 17.7332 11.6667H10.2665C8.30632 11.6667 7.32623 11.6667 6.57754 12.0481C5.91897 12.3837 5.38354 12.9191 5.04798 13.5777C4.6665 14.3264 4.6665 15.3065 4.6665 17.2667V18.9C4.6665 20.8602 4.6665 21.8403 5.04798 22.589C5.38354 23.2475 5.91897 23.783 6.57754 24.1185C7.32623 24.5 8.30632 24.5 10.2665 24.5Z" stroke="#344054" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/login_failed.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28" fill="none">
2 |   <path d="M19.2497 18.6667L25.083 24.5M25.083 18.6667L19.2497 24.5M13.9997 18.0833H8.74968C7.12152 18.0833 6.30744 18.0833 5.64501 18.2843C4.15354 18.7367 2.98639 19.9039 2.53395 21.3953C2.33301 22.0578 2.33301 22.8718 2.33301 24.5M16.9163 8.75C16.9163 11.6495 14.5658 14 11.6663 14C8.76685 14 6.41634 11.6495 6.41634 8.75C6.41634 5.8505 8.76685 3.5 11.6663 3.5C14.5658 3.5 16.9163 5.8505 16.9163 8.75Z" stroke="#344054" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/mcp_item_download.svg:
--------------------------------------------------------------------------------
1 | <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M6 1V8.5M6 8.5L9 5.5M6 8.5L3 5.5M2 9V10.2C2 10.48 2 10.62 2.0545 10.727C2.10243 10.8211 2.17892 10.8976 2.273 10.9455C2.37996 11 2.51997 11 2.8 11H9.2C9.48003 11 9.62004 11 9.727 10.9455C9.82108 10.8976 9.89757 10.8211 9.9455 10.727C10 10.62 10 10.48 10 10.2V9" stroke="#667085" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/mcp_item_hybrid.svg:
--------------------------------------------------------------------------------
 1 | <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
 2 | <g clip-path="url(#clip0_35159_8120)">
 3 | <path d="M4.5 8C6.433 8 8 6.433 8 4.5C8 2.567 6.433 1 4.5 1C2.567 1 1 2.567 1 4.5C1 6.433 2.567 8 4.5 8Z" stroke="#344054" stroke-linecap="round" stroke-linejoin="round"/>
 4 | <path d="M7.5 11C9.433 11 11 9.433 11 7.5C11 5.567 9.433 4 7.5 4C5.567 4 4 5.567 4 7.5C4 9.433 5.567 11 7.5 11Z" stroke="#344054" stroke-linecap="round" stroke-linejoin="round"/>
 5 | </g>
 6 | <defs>
 7 | <clipPath id="clip0_35159_8120">
 8 | <rect width="12" height="12" fill="white"/>
 9 | </clipPath>
10 | </defs>
11 | </svg>
12 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/mcp_item_typescript.svg:
--------------------------------------------------------------------------------
1 | <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <rect width="12" height="12" rx="6" fill="#3178C6"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/menu.svg:
--------------------------------------------------------------------------------
1 | <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M3 12H21M3 6H21M3 18H21" stroke="#344054" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/metadata_GGUF.svg:
--------------------------------------------------------------------------------
1 | <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M11.0771 7.45801V8.54199H10.0635V10.498H11.0771V10.5693H9.99023V7.45801H11.0771ZM6.00879 5.43066V6.5166H4.99609V8.4707H6.00879V8.54199H4.92383V5.43066H6.00879ZM7.96289 3.47461H2.98145V2.89551H13.0195V3.91016H14.1172V12.0908H13.0332V8.97656H13.0342V5.50293H8.03711V5.97266L8.03613 12.0557V12.5264H13.0195V13.1055H2.98145V12.0908H1.88184V3.91016H2.96777V10.498H7.96191V6.95117H7.96289V3.47461Z" fill="#344054" stroke="#344054" stroke-width="0.941177"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/model_finetune_create.svg:
--------------------------------------------------------------------------------
1 | <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <g id="sliders-horiz-2">
3 | <path id="Vector" d="M1 9H2.5M9.5 3H11M8 9H11M1 3H4M4.5 11V11C5.60457 11 6.5 10.1046 6.5 9V9C6.5 7.89543 5.60457 7 4.5 7V7C3.39543 7 2.5 7.89543 2.5 9V9C2.5 10.1046 3.39543 11 4.5 11ZM7.5 5V5C8.60457 5 9.5 4.10457 9.5 3V3C9.5 1.89543 8.60457 1 7.5 1V1C6.39543 1 5.5 1.89543 5.5 3V3C5.5 4.10457 6.39543 5 7.5 5Z" stroke="#344054" stroke-linecap="round"/>
4 | </g>
5 | </svg>
6 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/more_menu.svg:
--------------------------------------------------------------------------------
1 | <svg width="15" height="14" viewBox="0 0 15 14" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <g id="dotpoints-01">
3 | <path id="Icon" d="M13.2329 6.99984L6.23291 6.99984M13.2329 3.49984L6.23291 3.49984M13.2329 10.4998L6.23291 10.4998M3.89958 6.99984C3.89958 7.322 3.63841 7.58317 3.31624 7.58317C2.99408 7.58317 2.73291 7.322 2.73291 6.99984C2.73291 6.67767 2.99408 6.4165 3.31624 6.4165C3.63841 6.4165 3.89958 6.67767 3.89958 6.99984ZM3.89958 3.49984C3.89958 3.822 3.63841 4.08317 3.31624 4.08317C2.99408 4.08317 2.73291 3.822 2.73291 3.49984C2.73291 3.17767 2.99408 2.9165 3.31624 2.9165C3.63841 2.9165 3.89958 3.17767 3.89958 3.49984ZM3.89958 10.4998C3.89958 10.822 3.63841 11.0832 3.31624 11.0832C2.99408 11.0832 2.73291 10.822 2.73291 10.4998C2.73291 10.1777 2.99408 9.9165 3.31624 9.9165C3.63841 9.9165 3.89958 10.1777 3.89958 10.4998Z" stroke="#475467" stroke-width="1.17" stroke-linecap="round" stroke-linejoin="round"/>
4 | </g>
5 | </svg>
6 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/navbar-collection.svg:
--------------------------------------------------------------------------------
 1 | <svg 
 2 |   width="16" 
 3 |   height="16" 
 4 |   viewBox="0 0 16 16" 
 5 |   fill="none" 
 6 |   xmlns="http://www.w3.org/2000/svg" 
 7 |   class="w-4 h-4"
 8 | >
 9 |   <path 
10 |     fill-rule="evenodd" 
11 |     clip-rule="evenodd" 
12 |     d="M7.99535 3.42388C6.66245 1.8656 4.43975 1.44643 2.76972 2.87334C1.09968 4.30026 0.864564 6.68598 2.17605 8.3736C3.26646 9.77674 6.56643 12.7361 7.64799 13.6939C7.76899 13.801 7.82949 13.8546 7.90006 13.8757C7.96165 13.8941 8.02905 13.8941 8.09065 13.8757C8.16122 13.8546 8.22172 13.801 8.34272 13.6939C9.42427 12.7361 12.7242 9.77674 13.8147 8.3736C15.1261 6.68598 14.9197 4.28525 13.221 2.87334C11.5223 1.46144 9.32826 1.8656 7.99535 3.42388Z" 
13 |     stroke="#667085" 
14 |     stroke-width="1.5" 
15 |     stroke-linecap="round" 
16 |     stroke-linejoin="round"
17 |   />
18 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/navbar-language.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14" fill="none">
2 |   <path d="M1.16699 7.00033H12.8337M1.16699 7.00033C1.16699 10.222 3.77866 12.8337 7.00033 12.8337M1.16699 7.00033C1.16699 3.77866 3.77866 1.16699 7.00033 1.16699M12.8337 7.00033C12.8337 10.222 10.222 12.8337 7.00033 12.8337M12.8337 7.00033C12.8337 3.77866 10.222 1.16699 7.00033 1.16699M7.00033 1.16699C8.45941 2.76436 9.2886 4.83735 9.33366 7.00033C9.2886 9.16331 8.45941 11.2363 7.00033 12.8337M7.00033 1.16699C5.54125 2.76436 4.71205 4.83735 4.66699 7.00033C4.71205 9.16331 5.54125 11.2363 7.00033 12.8337" stroke="#475467" stroke-width="1.16667" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/navbar-logout.svg:
--------------------------------------------------------------------------------
1 | <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2 |     <path d="M10.6667 11.3333L14 8M14 8L10.6667 4.66667M14 8H6M6 2H5.2C4.0799 2 3.51984 2 3.09202 2.21799C2.7157 2.40973 2.40973 2.71569 2.21799 3.09202C2 3.51984 2 4.07989 2 5.2V10.8C2 11.9201 2 12.4802 2.21799 12.908C2.40973 13.2843 2.71569 13.5903 3.09202 13.782C3.51984 14 4.0799 14 5.2 14H6" stroke="#667085" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/navbar-new.svg:
--------------------------------------------------------------------------------
 1 | <svg 
 2 |   width="16" 
 3 |   height="16" 
 4 |   viewBox="0 0 16 16" 
 5 |   fill="none" 
 6 |   xmlns="http://www.w3.org/2000/svg" 
 7 |   class="w-4 h-4"
 8 | >
 9 |   <path 
10 |     d="M7.99992 3.3335V12.6668M3.33325 8.00016H12.6666" 
11 |     stroke="#667085" 
12 |     stroke-width="1.5" 
13 |     stroke-linecap="round" 
14 |     stroke-linejoin="round"
15 |   />
16 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/navbar-neworganization.svg:
--------------------------------------------------------------------------------
1 | <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2 |   <path d="M12.6666 14V10M10.6666 12H14.6666M7.99992 10H5.33325C4.09074 10 3.46949 10 2.97943 10.203C2.32602 10.4736 1.80689 10.9928 1.53624 11.6462C1.33325 12.1362 1.33325 12.7575 1.33325 14M10.3333 2.19384C11.3105 2.58943 11.9999 3.54754 11.9999 4.66667C11.9999 5.78579 11.3105 6.7439 10.3333 7.13949M8.99992 4.66667C8.99992 6.13943 7.80601 7.33333 6.33325 7.33333C4.86049 7.33333 3.66659 6.13943 3.66659 4.66667C3.66659 3.19391 4.86049 2 6.33325 2C7.80601 2 8.99992 3.19391 8.99992 4.66667Z" stroke="#667085" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/navbar-profile.svg:
--------------------------------------------------------------------------------
1 | <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2 |   <path
3 |     d="M13.3334 14C13.3334 13.0696 13.3334 12.6044 13.2186 12.2259C12.9601 11.3736 12.2931 10.7067 11.4408 10.4482C11.0623 10.3333 10.5971 10.3333 9.66675 10.3333H6.33342C5.40304 10.3333 4.93785 10.3333 4.55932 10.4482C3.70705 10.7067 3.04011 11.3736 2.78157 12.2259C2.66675 12.6044 2.66675 13.0696 2.66675 14M11.0001 5C11.0001 6.65685 9.65694 8 8.00008 8C6.34323 8 5.00008 6.65685 5.00008 5C5.00008 3.34315 6.34323 2 8.00008 2C9.65694 2 11.0001 3.34315 11.0001 5Z"
4 |     stroke="#667085"
5 |     stroke-width="1.5"
6 |     stroke-linecap="round"
7 |     stroke-linejoin="round"
8 |   />
9 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/new_dot.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" width="8" height="8" viewBox="0 0 8 8" fill="none">
2 |   <circle cx="4" cy="4" r="3" fill="#17B26A"/>
3 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/parquet_api.svg:
--------------------------------------------------------------------------------
1 | <svg width="12" height="8" viewBox="0 0 12 8" fill="none" xmlns="http://www.w3.org/2000/svg">
2 |   <path d="M4 1L1 4L4 7M8 1L11 4L8 7" stroke="#667085" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>
4 |   


--------------------------------------------------------------------------------
/frontend/public/images/icons/parquet_auto_converted.svg:
--------------------------------------------------------------------------------
1 | <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2 |   <path d="M11 6C11 8.76142 8.76142 11 6 11C3.23858 11 1.5 8.25 1.5 8.25M1 6C1 3.23858 3.22222 1 6 1C9.33333 1 11 3.75 11 3.75M11 3.75V2M11 3.75H9.25M1.5 8.25H3.25M1.5 8.25V10" stroke="#667085" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>
4 |   


--------------------------------------------------------------------------------
/frontend/public/images/icons/playground_api.svg:
--------------------------------------------------------------------------------
1 | <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M17 17L22 12L17 7M7 7L2 12L7 17M14 3L10 21" stroke="#344054" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/plus.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
2 |   <path d="M7.99992 3.33333V12.6667M3.33325 8H12.6666" stroke="white" stroke-width="1.66667" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/prompt_card_settgins.svg:
--------------------------------------------------------------------------------
1 | <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2 |   <rect x="11.25" y="2.22656" width="2.5" height="2.5" rx="0.9375" transform="rotate(90 11.25 2.22656)" fill="#4B5666"/>
3 |   <rect x="11.25" y="8.75" width="2.5" height="2.5" rx="0.9375" transform="rotate(90 11.25 8.75)" fill="#4B5666"/>
4 |   <rect x="11.25" y="15.2734" width="2.5" height="2.5" rx="0.9375" transform="rotate(90 11.25 15.2734)" fill="#4B5666"/>
5 | </svg>
6 |   


--------------------------------------------------------------------------------
/frontend/public/images/icons/prompting_navbar.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
2 |   <path d="M20 10.5V6.8C20 5.11984 20 4.27976 19.673 3.63803C19.3854 3.07354 18.9265 2.6146 18.362 2.32698C17.7202 2 16.8802 2 15.2 2H8.8C7.11984 2 6.27976 2 5.63803 2.32698C5.07354 2.6146 4.6146 3.07354 4.32698 3.63803C4 4.27976 4 5.11984 4 6.8V17.2C4 18.8802 4 19.7202 4.32698 20.362C4.6146 20.9265 5.07354 21.3854 5.63803 21.673C6.27976 22 7.11984 22 8.8 22H12M14 11H8M10 15H8M16 7H8M18 21V15M15 18H21" stroke="#3250BD" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/prompts_Code.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none">
2 |   <path d="M11 4.5H1M7 8.75L8.25 7.5L7 6.25M5 6.25L3.75 7.5L5 8.75M1 3.9L1 8.1C1 8.94008 1 9.36012 1.16349 9.68098C1.3073 9.96323 1.53677 10.1927 1.81901 10.3365C2.13988 10.5 2.55992 10.5 3.4 10.5H8.6C9.44008 10.5 9.86012 10.5 10.181 10.3365C10.4632 10.1927 10.6927 9.96323 10.8365 9.68099C11 9.36012 11 8.94008 11 8.1V3.9C11 3.05992 11 2.63988 10.8365 2.31901C10.6927 2.03677 10.4632 1.8073 10.181 1.66349C9.86012 1.5 9.44008 1.5 8.6 1.5L3.4 1.5C2.55992 1.5 2.13988 1.5 1.81901 1.66349C1.53677 1.8073 1.3073 2.03677 1.16349 2.31901C1 2.63988 1 3.05992 1 3.9Z" stroke="#2E90FA" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/prompts_DataAnalysis.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none">
2 |   <path d="M10 2.5C10 3.32843 8.20914 4 6 4C3.79086 4 2 3.32843 2 2.5M10 2.5C10 1.67157 8.20914 1 6 1C3.79086 1 2 1.67157 2 2.5M10 2.5V9.5C10 10.3284 8.20914 11 6 11C3.79086 11 2 10.3284 2 9.5V2.5M10 4.8333C10 5.66173 8.20914 6.3333 6 6.3333C3.79086 6.3333 2 5.66173 2 4.8333M10 7.165C10 7.99343 8.20914 8.665 6 8.665C3.79086 8.665 2 7.99343 2 7.165" stroke="#0BA5EC" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/prompts_Design.svg:
--------------------------------------------------------------------------------
 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none">
 2 |   <g clip-path="url(#clip0_17759_67719)">
 3 |     <path d="M6 10.2361C6.53075 10.7112 7.23164 11 8 11C9.65685 11 11 9.65686 11 8.00001C11 6.61654 10.0635 5.45179 8.78991 5.10509M3.21009 5.10508C1.93647 5.45179 1 6.61653 1 8C1 9.65685 2.34315 11 4 11C5.65685 11 7 9.65685 7 8C7 7.60975 6.92549 7.23691 6.78991 6.89492M9 4C9 5.65685 7.65685 7 6 7C4.34315 7 3 5.65685 3 4C3 2.34315 4.34315 1 6 1C7.65685 1 9 2.34315 9 4Z" stroke="#FF4405" stroke-linecap="round" stroke-linejoin="round"/>
 4 |   </g>
 5 |   <defs>
 6 |     <clipPath id="clip0_17759_67719">
 7 |       <rect width="12" height="12" fill="white"/>
 8 |     </clipPath>
 9 |   </defs>
10 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/prompts_Education.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none">
2 |   <path d="M6 10H2.6C2.03995 10 1.75992 10 1.54601 9.89101C1.35785 9.79513 1.20487 9.64215 1.10899 9.45399C1 9.24008 1 8.96005 1 8.4V3.6C1 3.03995 1 2.75992 1.10899 2.54601C1.20487 2.35785 1.35785 2.20487 1.54601 2.10899C1.75992 2 2.03995 2 2.6 2H2.8C3.9201 2 4.48016 2 4.90798 2.21799C5.28431 2.40973 5.59027 2.71569 5.78201 3.09202C6 3.51984 6 4.0799 6 5.2M6 10V5.2M6 10H9.4C9.96005 10 10.2401 10 10.454 9.89101C10.6422 9.79513 10.7951 9.64215 10.891 9.45399C11 9.24008 11 8.96005 11 8.4V3.6C11 3.03995 11 2.75992 10.891 2.54601C10.7951 2.35785 10.6422 2.20487 10.454 2.10899C10.2401 2 9.96005 2 9.4 2H9.2C8.07989 2 7.51984 2 7.09202 2.21799C6.71569 2.40973 6.40973 2.71569 6.21799 3.09202C6 3.51984 6 4.0799 6 5.2" stroke="#66C61C" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/prompts_Music.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none">
2 |   <path d="M4.5 8.99998V3.17768C4.5 2.93691 4.5 2.81653 4.5438 2.71889C4.58241 2.63282 4.64458 2.55943 4.72313 2.5072C4.81224 2.44794 4.93099 2.42815 5.16848 2.38857L9.56848 1.65523C9.88897 1.60182 10.0492 1.57511 10.1741 1.6215C10.2837 1.6622 10.3755 1.74002 10.4337 1.84143C10.5 1.95699 10.5 2.11944 10.5 2.44435V7.99998M4.5 8.99998C4.5 9.82841 3.82843 10.5 3 10.5C2.17157 10.5 1.5 9.82841 1.5 8.99998C1.5 8.17155 2.17157 7.49998 3 7.49998C3.82843 7.49998 4.5 8.17155 4.5 8.99998ZM10.5 7.99998C10.5 8.82841 9.82843 9.49998 9 9.49998C8.17157 9.49998 7.5 8.82841 7.5 7.99998C7.5 7.17155 8.17157 6.49998 9 6.49998C9.82843 6.49998 10.5 7.17155 10.5 7.99998Z" stroke="#EF6820" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/prompts_history.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none">
2 |   <path d="M11.35 5.75L10.3503 6.75L9.34998 5.75M10.4725 6.5C10.4907 6.33583 10.5 6.169 10.5 6C10.5 3.51472 8.48528 1.5 6 1.5C3.51472 1.5 1.5 3.51472 1.5 6C1.5 8.48528 3.51472 10.5 6 10.5C7.41363 10.5 8.67502 9.84817 9.5 8.82867M6 3.5V6L7.5 7" stroke="#344054" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/prompts_layout_left.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
2 |   <path d="M7.5 2.5V17.5M6.5 2.5H13.5C14.9001 2.5 15.6002 2.5 16.135 2.77248C16.6054 3.01217 16.9878 3.39462 17.2275 3.86502C17.5 4.3998 17.5 5.09987 17.5 6.5V13.5C17.5 14.9001 17.5 15.6002 17.2275 16.135C16.9878 16.6054 16.6054 16.9878 16.135 17.2275C15.6002 17.5 14.9001 17.5 13.5 17.5H6.5C5.09987 17.5 4.3998 17.5 3.86502 17.2275C3.39462 16.9878 3.01217 16.6054 2.77248 16.135C2.5 15.6002 2.5 14.9001 2.5 13.5V6.5C2.5 5.09987 2.5 4.3998 2.77248 3.86502C3.01217 3.39462 3.39462 3.01217 3.86502 2.77248C4.3998 2.5 5.09987 2.5 6.5 2.5Z" stroke="#667085" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/prompts_pipe.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" width="2" height="10" viewBox="0 0 2 10" fill="none">
2 |   <path d="M1 0V10" stroke="#D0D5DD"/>
3 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/prompts_reAnswer.svg:
--------------------------------------------------------------------------------
 1 |    <svg
 2 |                         xmlns="http://www.w3.org/2000/svg"
 3 |                         width="12"
 4 |                         height="12"
 5 |                         viewBox="0 0 12 12"
 6 |                         fill="none"
 7 |                       >
 8 |                         <path
 9 |                           d="M8.5 9.4373C9.56067 8.66454 10.25 7.41277 10.25 6C10.25 3.65279 8.34721 1.75 6 1.75H5.75M6 10.25C3.65279 10.25 1.75 8.34721 1.75 6C1.75 4.58723 2.43933 3.33547 3.5 2.5627M5.5 11.2L6.5 10.2L5.5 9.2M6.5 2.8L5.5 1.8L6.5 0.800003"
10 |                           stroke="#475467"
11 |                           stroke-linecap="round"
12 |                           stroke-linejoin="round"
13 |                         />
14 |                       </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/prompts_source.svg:
--------------------------------------------------------------------------------
 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none">
 2 |   <g clip-path="url(#clip0_18055_162167)">
 3 |     <path d="M1 6H11M1 6C1 8.76142 3.23858 11 6 11M1 6C1 3.23858 3.23858 1 6 1M11 6C11 8.76142 8.76142 11 6 11M11 6C11 3.23858 8.76142 1 6 1M6 1C7.25064 2.36918 7.96138 4.14602 8 6C7.96138 7.85398 7.25064 9.63082 6 11M6 1C4.74936 2.36918 4.03862 4.14602 4 6C4.03862 7.85398 4.74936 9.63082 6 11" stroke="#667085" stroke-linecap="round" stroke-linejoin="round"/>
 4 |   </g>
 5 |   <defs>
 6 |     <clipPath id="clip0_18055_162167">
 7 |       <rect width="12" height="12" fill="white"/>
 8 |     </clipPath>
 9 |   </defs>
10 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/refresh.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14" fill="none">
2 |   <path d="M9.91699 2.99008C11.1544 3.89164 11.9587 5.35203 11.9587 7.00026C11.9587 9.73867 9.73874 11.9586 7.00033 11.9586H6.70866M4.08366 11.0104C2.84621 10.1089 2.04199 8.64849 2.04199 7.00026C2.04199 4.26185 4.26191 2.04193 7.00033 2.04193H7.29199M7.58366 13.0669L6.41699 11.9003L7.58366 10.7336M6.41699 3.26693L7.58366 2.10026L6.41699 0.933594" stroke="#344054" stroke-width="1.17" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/repoheader_dataset.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
2 |     <path opacity="0.12"
3 |         d="M8 14.6668C11.3137 14.6668 14 13.7714 14 12.6668V3.3335C14 3.3335 13.6667 5.3335 8 5.3335C2.33333 5.3335 2 3.3335 2 3.3335V12.6668C2 13.7714 4.68629 14.6668 8 14.6668Z"
4 |         fill="#A8ABB2" />
5 |     <path
6 |         d="M14 8.00016C14 9.10473 11.3137 10.0002 8 10.0002C4.68629 10.0002 2 9.10473 2 8.00016M14 3.3335C14 4.43807 11.3137 5.3335 8 5.3335C4.68629 5.3335 2 4.43807 2 3.3335M14 3.3335C14 2.22893 11.3137 1.3335 8 1.3335C4.68629 1.3335 2 2.22893 2 3.3335M14 3.3335V12.6668C14 13.7714 11.3137 14.6668 8 14.6668C4.68629 14.6668 2 13.7714 2 12.6668V3.3335"
7 |         stroke="#A8ABB2" stroke-linecap="round" stroke-linejoin="round" />
8 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/search.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
2 |   <path d="M21 21L17.5001 17.5M20 11.5C20 16.1944 16.1944 20 11.5 20C6.80558 20 3 16.1944 3 11.5C3 6.80558 6.80558 3 11.5 3C16.1944 3 20 6.80558 20 11.5Z" stroke="#344054" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/space_endpoint.svg:
--------------------------------------------------------------------------------
1 | <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M8.19288 12.4989L7.7191 12.9877C6.41077 14.3374 4.28956 14.3374 2.98124 12.9877C1.67292 11.638 1.67292 9.44968 2.98124 8.09996L4.11104 6.93442C5.31872 5.68853 7.27676 5.68853 8.48444 6.93442L8.66667 7.12241M7.80712 3.50106L8.2809 3.01229C9.58923 1.66257 11.7104 1.66257 13.0188 3.01229C14.3271 4.362 14.3271 6.55032 13.0188 7.90004L11.889 9.06558C10.6813 10.3115 8.72324 10.3115 7.51556 9.06558L7.33333 8.87759" stroke="#667085" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/space_nginx.svg:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1716268979894" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="12972" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M512 0L68.48 256v512L512 1024l443.52-256V256L512 0z m256 707.84c0 30.08-27.563 55.04-65.237 55.04-26.923 0-57.643-10.88-76.843-34.56l-256-304.683v284.16c0 30.763-24.32 55.04-54.357 55.04h-3.243c-30.763 0-55.04-25.6-55.04-55.04V316.16c0-30.08 26.88-55.04 64-55.04 27.563 0 58.88 10.88 78.08 34.56l254.72 304.683V316.16c0-30.763 25.6-55.04 55.04-55.04h3.2c30.72 0 55.04 25.6 55.04 55.04v391.68h0.64z" fill="#0E932E" p-id="12973"></path></svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/space_static.svg:
--------------------------------------------------------------------------------
1 | <svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2 |   <path
3 |       d="M12.5001 17.56L16.5701 16.43L17.1201 10.33H9.88007L9.70007 8.3H17.3001L17.5001 6.31H7.50007L8.06007 12.32H14.9501L14.7201 14.9L12.5001 15.5L10.2801 14.9L10.1401 13.24H8.14007L8.43007 16.43L12.5001 17.56ZM4.57007 3H20.4301L19.0001 19.2L12.5001 21L6.00007 19.2L4.57007 3Z"
4 |       fill="#D0D5DD"/>
5 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/space_upload.svg:
--------------------------------------------------------------------------------
 1 | <svg
 2 |     width="20"
 3 |     height="18"
 4 |     viewBox="0 0 20 18"
 5 |     fill="none"
 6 |     xmlns="http://www.w3.org/2000/svg"
 7 | >
 8 |     <path
 9 |     d="M6.66663 12.3333L9.99996 9M9.99996 9L13.3333 12.3333M9.99996 9V16.5M16.6666 12.9524C17.6845 12.1117 18.3333 10.8399 18.3333 9.41667C18.3333 6.88536 16.2813 4.83333 13.75 4.83333C13.5679 4.83333 13.3975 4.73833 13.3051 4.58145C12.2183 2.73736 10.212 1.5 7.91663 1.5C4.46485 1.5 1.66663 4.29822 1.66663 7.75C1.66663 9.47175 2.36283 11.0309 3.48908 12.1613"
10 |     stroke="#475467"
11 |     stroke-width="1.66667"
12 |     stroke-linecap="round"
13 |     stroke-linejoin="round"
14 |     />
15 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/sync-diff.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
2 |   <path d="M2 2V8.8C2 9.92011 2 10.4802 2.21799 10.908C2.40973 11.2843 2.71569 11.5903 3.09202 11.782C3.51984 12 4.0799 12 5.2 12H10M10 12C10 13.1046 10.8954 14 12 14C13.1046 14 14 13.1046 14 12C14 10.8954 13.1046 10 12 10C10.8954 10 10 10.8954 10 12ZM2 5.33333L10 5.33333M10 5.33333C10 6.4379 10.8954 7.33333 12 7.33333C13.1046 7.33333 14 6.4379 14 5.33333C14 4.22876 13.1046 3.33333 12 3.33333C10.8954 3.33333 10 4.22876 10 5.33333Z" stroke="#667085" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/sync-remote.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
2 |   <path d="M10 12C10 13.1046 10.8954 14 12 14C13.1046 14 14 13.1046 14 12C14 10.8954 13.1046 10 12 10C10.8954 10 10 10.8954 10 12ZM10 12C8.4087 12 6.88258 11.3679 5.75736 10.2426C4.63214 9.11742 4 7.5913 4 6M4 6C5.10457 6 6 5.10457 6 4C6 2.89543 5.10457 2 4 2C2.89543 2 2 2.89543 2 4C2 5.10457 2.89543 6 4 6ZM4 6V14" stroke="#667085" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/sync.svg:
--------------------------------------------------------------------------------
1 | <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <g id="repeat">
3 | <path id="Vector" d="M1.5 10H8.9C9.46005 10 9.74008 10 9.95399 9.89101C10.1422 9.79513 10.2951 9.64215 10.391 9.45399C10.5 9.24008 10.5 8.96005 10.5 8.4V7M1.5 10L3 8.5M1.5 10L3 11.5M10.5 2H3.1C2.53995 2 2.25992 2 2.04601 2.10899C1.85785 2.20487 1.70487 2.35785 1.60899 2.54601C1.5 2.75992 1.5 3.03995 1.5 3.6V5M10.5 2L9 0.5M10.5 2L9 3.5" stroke="#344054" stroke-linecap="round" stroke-linejoin="round"/>
4 | </g>
5 | </svg>
6 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/top_right_arrow.svg:
--------------------------------------------------------------------------------
1 | <svg width="8" height="8" viewBox="0 0 8 8" fill="none" xmlns="http://www.w3.org/2000/svg">
2 |   <path d="M1 7L7 1M7 1H3M7 1V5" stroke="#344054" stroke-width="1.66667" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>
4 |   


--------------------------------------------------------------------------------
/frontend/public/images/icons/trash.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
2 |   <path d="M10.6667 4.00004V3.46671C10.6667 2.71997 10.6667 2.3466 10.5213 2.06139C10.3935 1.8105 10.1895 1.60653 9.93865 1.4787C9.65344 1.33337 9.28007 1.33337 8.53333 1.33337H7.46667C6.71993 1.33337 6.34656 1.33337 6.06135 1.4787C5.81046 1.60653 5.60649 1.8105 5.47866 2.06139C5.33333 2.3466 5.33333 2.71997 5.33333 3.46671V4.00004M6.66667 7.66671V11M9.33333 7.66671V11M2 4.00004H14M12.6667 4.00004V11.4667C12.6667 12.5868 12.6667 13.1469 12.4487 13.5747C12.2569 13.951 11.951 14.257 11.5746 14.4487C11.1468 14.6667 10.5868 14.6667 9.46667 14.6667H6.53333C5.41323 14.6667 4.85318 14.6667 4.42535 14.4487C4.04903 14.257 3.74307 13.951 3.55132 13.5747C3.33333 13.1469 3.33333 12.5868 3.33333 11.4667V4.00004" stroke="#667085" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/twitter.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
2 |   <path fill-rule="evenodd" clip-rule="evenodd" d="M15.9455 23L10.396 15.0901L3.44886 23H0.509766L9.09209 13.2311L0.509766 1H8.05571L13.286 8.45502L19.8393 1H22.7784L14.5943 10.3165L23.4914 23H15.9455ZM19.2185 20.77H17.2398L4.71811 3.23H6.6971L11.7121 10.2532L12.5793 11.4719L19.2185 20.77Z" fill="#242E36"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/useIcon.svg:
--------------------------------------------------------------------------------
1 | <svg width="15" height="14" viewBox="0 0 15 14" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <g id="arrow-right">
3 | <path id="Icon" d="M3.25 6.99996H11.4167M11.4167 6.99996L7.33333 2.91663M11.4167 6.99996L7.33333 11.0833" stroke="#17308F" stroke-width="1.17" stroke-linecap="round" stroke-linejoin="round"/>
4 | </g>
5 | </svg>
6 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/vertical_divider.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" width="1" height="8" viewBox="0 0 1 8" fill="none">
2 |   <path d="M0.5 0V8" stroke="#DCDFE6"/>
3 | </svg>


--------------------------------------------------------------------------------
/frontend/public/images/icons/vertical_divider2.svg:
--------------------------------------------------------------------------------
1 | <svg width="16" height="18" viewBox="0 0 16 18" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <line x1="8.5" y1="2.18557e-08" x2="8.5" y2="18" stroke="#EAECF0"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/frontend/public/images/icons/x-close.svg:
--------------------------------------------------------------------------------
1 | <svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M10.5 3.5L3.5 10.5M3.5 3.5L10.5 10.5" stroke="#475467" stroke-width="1.17" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/frontend/public/images/invite_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/frontend/public/images/invite_bg.png


--------------------------------------------------------------------------------
/frontend/public/images/new_organization_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/frontend/public/images/new_organization_bg.png


--------------------------------------------------------------------------------
/frontend/public/images/opencsg_avatar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/frontend/public/images/opencsg_avatar.png


--------------------------------------------------------------------------------
/frontend/public/images/opencsg_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/frontend/public/images/opencsg_logo.png


--------------------------------------------------------------------------------
/frontend/public/images/search_circle_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/frontend/public/images/search_circle_bg.png


--------------------------------------------------------------------------------
/frontend/public/images/tags/action-detection.svg:
--------------------------------------------------------------------------------
1 | <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M10 2.5V5M10.25 6.5C10.25 6.63807 10.1381 6.75 10 6.75C9.86193 6.75 9.75 6.63807 9.75 6.5M10.25 6.5C10.25 6.36193 10.1381 6.25 10 6.25C9.86193 6.25 9.75 6.36193 9.75 6.5M10.25 6.5H9.75M6.5 3C6.5 4.10457 5.60457 5 4.5 5C3.39543 5 2.5 4.10457 2.5 3C2.5 1.89543 3.39543 1 4.5 1C5.60457 1 6.5 1.89543 6.5 3ZM2.6 11H6.4C7.28365 11 8 10.2837 8 9.4V9.4C8 8.07452 6.92548 7 5.6 7H3.4C2.07452 7 1 8.07452 1 9.4V9.4C1 10.2837 1.71634 11 2.6 11Z" stroke="#344054" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/frontend/public/images/tags/audio-classification.svg:
--------------------------------------------------------------------------------
1 | <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M4.5 9.5V3.67899C4.5 3.22638 4.5 3.00007 4.57968 2.8126C4.64998 2.64722 4.76354 2.50383 4.90843 2.39752C5.07267 2.27702 5.29296 2.22519 5.73354 2.12152L8.53354 1.4627C9.20495 1.30472 9.54066 1.22573 9.80456 1.31011C10.0359 1.38408 10.2324 1.53973 10.3574 1.74798C10.5 1.98554 10.5 2.33041 10.5 3.02016V8M4.5 9.5C4.5 10.3284 3.82843 11 3 11C2.17157 11 1.5 10.3284 1.5 9.5C1.5 8.67157 2.17157 8 3 8C3.82843 8 4.5 8.67157 4.5 9.5ZM10.5 8C10.5 8.82843 9.82843 9.5 9 9.5C8.17157 9.5 7.5 8.82843 7.5 8C7.5 7.17157 8.17157 6.5 9 6.5C9.82843 6.5 10.5 7.17157 10.5 8Z" stroke="#344054" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/frontend/public/images/tags/auto-speech-recognition.svg:
--------------------------------------------------------------------------------
1 | <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M4.5 7H3.4C2.07452 7 1 8.07452 1 9.4V9.4C1 10.2837 1.71634 11 2.6 11H4.5H6.25M6.5 3C6.5 4.10457 5.60457 5 4.5 5C3.39543 5 2.5 4.10457 2.5 3C2.5 1.89543 3.39543 1 4.5 1C5.60457 1 6.5 1.89543 6.5 3Z" stroke="#344054" stroke-linecap="round" stroke-linejoin="round"/>
3 | <path d="M7.25 7.5L7.25 10M6 8.5L6 9M8.5 6.5L8.5 11M9.75 7.5V10M11 8.5V9" stroke="#344054" stroke-linecap="round" stroke-linejoin="round"/>
4 | </svg>
5 | 


--------------------------------------------------------------------------------
/frontend/public/images/tags/face-detection.svg:
--------------------------------------------------------------------------------
1 | <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M11 4V3.75V3.75C11 2.23122 9.76878 1 8.25 1V1H8M11 8V8.25V8.25C11 9.76878 9.76878 11 8.25 11V11H8M1 8V8.25V8.25C1 9.76878 2.23122 11 3.75 11V11H4M1 4V3.75V3.75C1 2.23122 2.23122 1 3.75 1V1H4M5.99996 4V6.00004C5.99996 6.27616 5.77612 6.5 5.5 6.5M4 4V4.75M8 4V4.75M8.00037 7.5C7.54426 8.10722 6.81809 8.5 6.00018 8.5C5.18227 8.5 4.4561 8.10722 4 7.5" stroke="#344054" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/frontend/public/images/tags/face-image-generation.svg:
--------------------------------------------------------------------------------
1 | <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M4.75 5C4.75 5.13807 4.63807 5.25 4.5 5.25C4.36193 5.25 4.25 5.13807 4.25 5M4.75 5C4.75 4.86193 4.63807 4.75 4.5 4.75C4.36193 4.75 4.25 4.86193 4.25 5M4.75 5H4.25M7.75 5C7.75 5.13807 7.63807 5.25 7.5 5.25C7.36193 5.25 7.25 5.13807 7.25 5M7.75 5C7.75 4.86193 7.63807 4.75 7.5 4.75C7.36193 4.75 7.25 4.86193 7.25 5M7.75 5H7.25M8.00012 7.5C7.54402 8.10722 6.81785 8.5 5.99994 8.5C5.18203 8.5 4.45586 8.10722 3.99976 7.5M6 11V11C8.76142 11 11 8.76142 11 6V6C11 3.23858 8.76142 1 6 1V1C3.23858 1 1 3.23858 1 6V6C1 8.76142 3.23858 11 6 11Z" stroke="#344054" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/frontend/public/images/tags/face-recognition.svg:
--------------------------------------------------------------------------------
1 | <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M11 4V3.75V3.75C11 2.23122 9.76878 1 8.25 1V1H8M11 8V8.25V8.25C11 9.76878 9.76878 11 8.25 11V11H8M1 8V8.25V8.25C1 9.76878 2.23122 11 3.75 11V11H4M1 4V3.75V3.75C1 2.23122 2.23122 1 3.75 1V1H4M5.99996 4V6.00004C5.99996 6.27616 5.77612 6.5 5.5 6.5M4 4V4.75M8 4V4.75M8.00037 7.5C7.54426 8.10722 6.81809 8.5 6.00018 8.5C5.18227 8.5 4.4561 8.10722 4 7.5" stroke="#344054" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/frontend/public/images/tags/feature-extraction.svg:
--------------------------------------------------------------------------------
1 | <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M6 4.5L6 11M1 4.5H11M1 7.5H11M5 11H7C8.40013 11 9.1002 11 9.63498 10.7275C10.1054 10.4878 10.4878 10.1054 10.7275 9.63498C11 9.1002 11 8.40013 11 7V5C11 3.59987 11 2.8998 10.7275 2.36502C10.4878 1.89462 10.1054 1.51217 9.63498 1.27248C9.1002 1 8.40013 1 7 1H5C3.59987 1 2.8998 1 2.36502 1.27248C1.89462 1.51217 1.51217 1.89462 1.27248 2.36502C1 2.8998 1 3.59987 1 5V7C1 8.40013 1 9.1002 1.27248 9.63498C1.51217 10.1054 1.89462 10.4878 2.36502 10.7275C2.8998 11 3.59987 11 5 11Z" stroke="#344054" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/frontend/public/images/tags/image-classification.svg:
--------------------------------------------------------------------------------
1 | <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M9 12L12.811 15.7C13.7401 16.6021 14.8025 17.01 15.7182 16.0943V16.0943C16.6435 15.169 18.5626 14.7501 19.488 15.6755L21.5 17.6875M12 22H12.4C15.7603 22 17.4405 22 18.7239 21.346C19.8529 20.7708 20.7708 19.8529 21.346 18.7239C22 17.4405 22 15.7603 22 12.4V11.6C22 8.23969 22 6.55953 21.346 5.27606C20.7708 4.14708 19.8529 3.2292 18.7239 2.65396C17.4405 2 15.7603 2 12.4 2H11.6C8.23969 2 6.55953 2 5.27606 2.65396C4.14708 3.2292 3.2292 4.14708 2.65396 5.27606C2 6.55953 2 8.23969 2 11.6V12M4 20L8 16M8 16V19M8 16H5M18 8C18 9.10457 17.1046 10 16 10C14.8954 10 14 9.10457 14 8C14 6.89543 14.8954 6 16 6C17.1046 6 18 6.89543 18 8Z" stroke="#2F384C" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/frontend/public/images/tags/image-super-resolution.svg:
--------------------------------------------------------------------------------
1 | <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M3 5.11179C1.83481 5.52778 1 6.65025 1 7.96966C1 9.64326 2.34315 11 4 11C5.65686 11 7 9.64326 7 7.96966C7 7.63054 6.94485 7.30442 6.84312 6.99997M6 10.3072C6.52831 10.74 7.20582 11 7.94457 11C9.63204 11 11 9.64328 11 7.96968C11 6.66401 10.1674 5.5512 9 5.12503M9 3.99997C9 5.65682 7.65686 6.99997 6 6.99997C4.34315 6.99997 3 5.65682 3 3.99997C3 2.34311 4.34315 0.999969 6 0.999969C7.65685 0.999968 9 2.34311 9 3.99997Z" stroke="#344054" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/frontend/public/images/tags/keyword-spotting.svg:
--------------------------------------------------------------------------------
1 | <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M1.5 4.25C1.5 2.73122 2.73122 1.5 4.25 1.5C5.76878 1.5 7 2.73122 7 4.25C7 5.18006 6.53829 6.00229 5.83158 6.49997C5.93957 6.72729 6 6.98159 6 7.25C6 8.2165 5.2165 9 4.25 9C3.2835 9 2.5 8.2165 2.5 7.25M10.5 7.5C10.5 9.15685 9.15685 10.5 7.5 10.5M8.5 7.5C8.5 8.05228 8.05228 8.5 7.5 8.5M5.5 4.25C5.5 3.55964 4.94036 3 4.25 3C3.55964 3 3 3.55964 3 4.25C3 4.66052 3.1979 5.02483 3.5035 5.25271C3.90462 5.55182 4.10518 5.70138 4.14773 5.75723C4.21172 5.84122 4.20158 5.82102 4.23066 5.92253C4.25 5.99002 4.25 6.09335 4.25 6.3V7" stroke="#344054" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/frontend/public/images/tags/nli.svg:
--------------------------------------------------------------------------------
1 | <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M3.5 3.49994L3.5 8.49994M1 5.49994L1 6.49994M6 1.49994L6 10.4999M8.5 3.49994L8.5 8.49994M11 5.49994L11 6.49994" stroke="#344054" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/frontend/public/images/tags/ocr.svg:
--------------------------------------------------------------------------------
1 | <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M6 3.5V8.5M6 3.5H4M6 3.5H8M5 11H7C8.40013 11 9.1002 11 9.63498 10.7275C10.1054 10.4878 10.4878 10.1054 10.7275 9.63498C11 9.1002 11 8.40013 11 7V5C11 3.59987 11 2.8998 10.7275 2.36502C10.4878 1.89462 10.1054 1.51217 9.63498 1.27248C9.1002 1 8.40013 1 7 1H5C3.59987 1 2.8998 1 2.36502 1.27248C1.89462 1.51217 1.51217 1.89462 1.27248 2.36502C1 2.8998 1 3.59987 1 5V7C1 8.40013 1 9.1002 1.27248 9.63498C1.51217 10.1054 1.89462 10.4878 2.36502 10.7275C2.8998 11 3.59987 11 5 11Z" stroke="#344054" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/frontend/public/images/tags/protein-structure.svg:
--------------------------------------------------------------------------------
1 | <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M4 2.5H6M2.5 6V8M9.5 4V6M6 9.5H8M9.5 11V11C10.3284 11 11 10.3284 11 9.5V9.5C11 8.67157 10.3284 8 9.5 8V8C8.67157 8 8 8.67157 8 9.5V9.5C8 10.3284 8.67157 11 9.5 11ZM2.5 11V11C3.32843 11 4 10.3284 4 9.5V9.5C4 8.67157 3.32843 8 2.5 8V8C1.67157 8 1 8.67157 1 9.5V9.5C1 10.3284 1.67157 11 2.5 11ZM9.5 4V4C10.3284 4 11 3.32843 11 2.5V2.5C11 1.67157 10.3284 1 9.5 1V1C8.67157 1 8 1.67157 8 2.5V2.5C8 3.32843 8.67157 4 9.5 4ZM2.5 4V4C3.32843 4 4 3.32843 4 2.5V2.5C4 1.67157 3.32843 1 2.5 1V1C1.67157 1 1 1.67157 1 2.5V2.5C1 3.32843 1.67157 4 2.5 4Z" stroke="#344054" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/frontend/public/images/tags/relation-extraction.svg:
--------------------------------------------------------------------------------
1 | <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M6 2.5H3.25C2.2835 2.5 1.5 3.2835 1.5 4.25V4.25C1.5 5.2165 2.2835 6 3.25 6H8.25C9.2165 6 10 6.7835 10 7.75V7.75C10 8.7165 9.2165 9.5 8.25 9.5H6M4 9.5C4 10.3284 3.32843 11 2.5 11C1.67157 11 1 10.3284 1 9.5C1 8.67157 1.67157 8 2.5 8C3.32843 8 4 8.67157 4 9.5ZM11 2.5V2.5C11 2.03406 11 1.80109 10.9239 1.61732C10.8224 1.37229 10.6277 1.17761 10.3827 1.07612C10.1989 1 9.96594 1 9.5 1V1C9.03406 1 8.80109 1 8.61732 1.07612C8.37229 1.17761 8.17761 1.37229 8.07612 1.61732C8 1.80109 8 2.03406 8 2.5V2.5C8 2.96594 8 3.19891 8.07612 3.38268C8.17761 3.62771 8.37229 3.82239 8.61732 3.92388C8.80109 4 9.03406 4 9.5 4V4C9.96594 4 10.1989 4 10.3827 3.92388C10.6277 3.82239 10.8224 3.62771 10.9239 3.38268C11 3.19891 11 2.96594 11 2.5Z" stroke="#344054" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/frontend/public/images/tags/sentence-similarity.svg:
--------------------------------------------------------------------------------
1 | <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M6 11L6 0.999988M1 5.74999L11 5.74999" stroke="#344054" stroke-linecap="round" stroke-linejoin="round"/>
3 | <path d="M4 3C4 3.55228 3.55228 4 3 4C2.44771 4 2 3.55228 2 3C2 2.44772 2.44772 2 3 2C3.55228 2 4 2.44771 4 3Z" stroke="#344054" stroke-linecap="round" stroke-linejoin="round"/>
4 | <rect x="8" y="2" width="2" height="2" stroke="#344054" stroke-linecap="round" stroke-linejoin="round"/>
5 | <path d="M3 7.5L4.29904 9.75H1.70096L3 7.5Z" stroke="#344054" stroke-linecap="round" stroke-linejoin="round"/>
6 | <path d="M10 7.5L8.25 8.75L10 10" stroke="#344054" stroke-linecap="round" stroke-linejoin="round"/>
7 | </svg>
8 | 


--------------------------------------------------------------------------------
/frontend/public/images/tags/sentiment-classification.svg:
--------------------------------------------------------------------------------
1 | <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M1 4.5H11M1 7.5H11M5 11H7C8.40013 11 9.1002 11 9.63498 10.7275C10.1054 10.4878 10.4878 10.1054 10.7275 9.63498C11 9.1002 11 8.40013 11 7V5C11 3.59987 11 2.8998 10.7275 2.36502C10.4878 1.89462 10.1054 1.51217 9.63498 1.27248C9.1002 1 8.40013 1 7 1H5C3.59987 1 2.8998 1 2.36502 1.27248C1.89462 1.51217 1.51217 1.89462 1.27248 2.36502C1 2.8998 1 3.59987 1 5V7C1 8.40013 1 9.1002 1.27248 9.63498C1.51217 10.1054 1.89462 10.4878 2.36502 10.7275C2.8998 11 3.59987 11 5 11Z" stroke="#344054" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/frontend/public/images/tags/skin-retouching.svg:
--------------------------------------------------------------------------------
1 | <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M11 4V3.75V3.75C11 2.23122 9.76878 1 8.25 1V1H8M11 8V8.25V8.25C11 9.76878 9.76878 11 8.25 11V11H8M1 8V8.25V8.25C1 9.76878 2.23122 11 3.75 11V11H4M1 4V3.75V3.75C1 2.23122 2.23122 1 3.75 1V1H4M5.99996 4V6.00004C5.99996 6.27616 5.77612 6.5 5.5 6.5M4 4V4.75M8 4V4.75M8.00037 7.5C7.54426 8.10722 6.81809 8.5 6.00018 8.5C5.18227 8.5 4.4561 8.10722 4 7.5" stroke="#344054" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/frontend/public/images/tags/speech-signal-process.svg:
--------------------------------------------------------------------------------
1 | <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M4.5 7H3.4C2.07452 7 1 8.07452 1 9.4V9.4C1 10.2837 1.71634 11 2.6 11H4.5H6.25M6.5 3C6.5 4.10457 5.60457 5 4.5 5C3.39543 5 2.5 4.10457 2.5 3C2.5 1.89543 3.39543 1 4.5 1C5.60457 1 6.5 1.89543 6.5 3Z" stroke="#344054" stroke-linecap="round" stroke-linejoin="round"/>
3 | <path d="M7.25 7.5L7.25 10M6 8.5L6 9M8.5 6.5L8.5 11M9.75 7.5V10M11 8.5V9" stroke="#344054" stroke-linecap="round" stroke-linejoin="round"/>
4 | </svg>
5 | 


--------------------------------------------------------------------------------
/frontend/public/images/tags/table-question-answering.svg:
--------------------------------------------------------------------------------
1 | <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M1 4.5H4.5M4.5 4.5H11M4.5 4.5V7.5M4.5 7.5L4.5 11M4.5 7.5L11 7.5M5 11H7C8.40013 11 9.1002 11 9.63498 10.7275C10.1054 10.4878 10.4878 10.1054 10.7275 9.63498C11 9.1002 11 8.40013 11 7V5C11 3.59987 11 2.8998 10.7275 2.36502C10.4878 1.89462 10.1054 1.51217 9.63498 1.27248C9.1002 1 8.40013 1 7 1H5C3.59987 1 2.8998 1 2.36502 1.27248C1.89462 1.51217 1.51217 1.89462 1.27248 2.36502C1 2.8998 1 3.59987 1 5V7C1 8.40013 1 9.1002 1.27248 9.63498C1.51217 10.1054 1.89462 10.4878 2.36502 10.7275C2.8998 11 3.59987 11 5 11Z" stroke="#344054" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/frontend/public/images/tags/text-to-speech.svg:
--------------------------------------------------------------------------------
1 | <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M5 3.05V6.25M5 3.05H3.4M5 3.05H6.6M9 3.5V3.5C9 2.11929 7.88071 1 6.5 1H5C3.59987 1 2.8998 1 2.36502 1.27248C1.89462 1.51217 1.51217 1.89462 1.27248 2.36502C1 2.8998 1 3.59987 1 5V5C1 6.40013 1 7.1002 1.27248 7.63498C1.51217 8.10538 1.89462 8.48783 2.36502 8.72752C2.8998 9 3.59987 9 5 9V9" stroke="#344054" stroke-linecap="round" stroke-linejoin="round"/>
3 | <rect x="7.5" y="5" width="2" height="3" rx="1" stroke="#344054" stroke-linecap="round" stroke-linejoin="round"/>
4 | <path d="M11 7V7C11 8.38071 9.88071 9.5 8.5 9.5V9.5M6 7V7C6 8.38071 7.11929 9.5 8.5 9.5V9.5M8.5 9.5V11" stroke="#344054" stroke-linecap="round" stroke-linejoin="round"/>
5 | </svg>
6 | 


--------------------------------------------------------------------------------
/frontend/public/images/tags/token-classification.svg:
--------------------------------------------------------------------------------
1 | <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M8 4L11 4L11 1L8 1L8 4ZM8 4L6.5 4L6.5 5.5L8 5.5L8 4ZM4 9L4 6L1 6L1 9L4 9ZM4 9L4 11L6 11L6 9L4 9ZM6 2.25C6 2.38807 5.88807 2.5 5.75 2.5C5.61193 2.5 5.5 2.38807 5.5 2.25M6 2.25C6 2.11193 5.88807 2 5.75 2C5.61193 2 5.5 2.11193 5.5 2.25M6 2.25L5.5 2.25M11 6.25C11 6.38807 10.8881 6.5 10.75 6.5C10.6119 6.5 10.5 6.38807 10.5 6.25M11 6.25C11 6.11193 10.8881 6 10.75 6C10.6119 6 10.5 6.11193 10.5 6.25M11 6.25L10.5 6.25M7.5 7.75C7.5 7.88807 7.38807 8 7.25 8C7.11193 8 7 7.88807 7 7.75M7.5 7.75C7.5 7.61193 7.38807 7.5 7.25 7.5C7.11193 7.5 7 7.61193 7 7.75M7.5 7.75L7 7.75M9 9L11 9L11 11L9 11L9 9ZM1 1L3 1L3 3L1 3L1 1Z" stroke="#344054" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/frontend/public/images/tags/translation.svg:
--------------------------------------------------------------------------------
1 | <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M12 22L14 18M14 18L17 12L20 18M14 18C14 18 15 19 17 19C19 19 20 18 20 18M20 18L22 22M7 5.34681H2V10.6263H7M7 5.34681H12V10.6263H7M7 5.34681V10.6263M7 5.34681V2M7 10.6263V16" stroke="#2F384C" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/frontend/public/images/tags/voice-activity-detection.svg:
--------------------------------------------------------------------------------
1 | <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M1.5 4.25C1.5 2.73122 2.73122 1.5 4.25 1.5C5.76878 1.5 7 2.73122 7 4.25C7 5.18006 6.53829 6.00229 5.83158 6.49997C5.93957 6.72729 6 6.98159 6 7.25C6 8.2165 5.2165 9 4.25 9C3.2835 9 2.5 8.2165 2.5 7.25M10.5 7.5C10.5 9.15685 9.15685 10.5 7.5 10.5M8.5 7.5C8.5 8.05228 8.05228 8.5 7.5 8.5M5.5 4.25C5.5 3.55964 4.94036 3 4.25 3C3.55964 3 3 3.55964 3 4.25C3 4.66052 3.1979 5.02483 3.5035 5.25271C3.90462 5.55182 4.10518 5.70138 4.14773 5.75723C4.21172 5.84122 4.20158 5.82102 4.23066 5.92253C4.25 5.99002 4.25 6.09335 4.25 6.3V7" stroke="#344054" stroke-linecap="round" stroke-linejoin="round"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/frontend/src/assets/images/.keep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/frontend/src/assets/images/.keep


--------------------------------------------------------------------------------
/frontend/src/assets/images/default_cover_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/frontend/src/assets/images/default_cover_image.png


--------------------------------------------------------------------------------
/frontend/src/assets/images/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/frontend/src/assets/images/favicon.png


--------------------------------------------------------------------------------
/frontend/src/assets/images/new_organization_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/frontend/src/assets/images/new_organization_bg.png


--------------------------------------------------------------------------------
/frontend/src/assets/images/opencsg_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/frontend/src/assets/images/opencsg_logo.png


--------------------------------------------------------------------------------
/frontend/src/assets/stylesheets/element-plus/application.css:
--------------------------------------------------------------------------------
1 | @import "_variables.css";
2 | @import "input.css";
3 | @import "menu.css";
4 | @import "upload.css";
5 | @import "button.css";


--------------------------------------------------------------------------------
/frontend/src/assets/stylesheets/element-plus/index.css:
--------------------------------------------------------------------------------
 1 | /* Element Plus 组件样式统一导入 */
 2 | 
 3 | /* MessageBox 组件样式 */
 4 | @import './el-message-box.css';
 5 | 
 6 | /* 在这里可以继续导入其他组件样式 */
 7 | /* 例如:
 8 | @import './el-button.css';
 9 | @import './el-input.css';
10 | @import './el-select.css';
11 | 等等
12 | */ 


--------------------------------------------------------------------------------
/frontend/src/assets/stylesheets/element-plus/upload.css:
--------------------------------------------------------------------------------
1 | .hide .el-upload.el-upload--picture-card {
2 |   display: none;
3 | }


--------------------------------------------------------------------------------
/frontend/src/assets/vue.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="37.07" height="36" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 198"><path fill="#41B883" d="M204.8 0H256L128 220.8L0 0h97.92L128 51.2L157.44 0h47.36Z"></path><path fill="#41B883" d="m0 0l128 220.8L256 0h-51.2L128 132.48L50.56 0H0Z"></path><path fill="#35495E" d="M50.56 0L128 133.12L204.8 0h-47.36L128 51.2L97.92 0H50.56Z"></path></svg>


--------------------------------------------------------------------------------
/frontend/src/components/admin_next/admin_component/Navbar/Navbar.vue:
--------------------------------------------------------------------------------
 1 | <template>
 2 |   <div class="bg-white border-b border-gray-200">
 3 |     <Navbar logo="/images/opencsg_logo.png" />
 4 |   </div>
 5 | </template>
 6 | 
 7 | <script setup>
 8 |   import Navbar from '@/components/navbar/Navbar.vue'
 9 | </script>
10 | 
11 | <style lang="less">
12 |   .admin-layout .csg-navbar {
13 |     border-bottom: 1px solid #eaecf0 !important;
14 |   }
15 | </style>
16 | 


--------------------------------------------------------------------------------
/frontend/src/components/admin_next/admin_component/Pagination/NextButton.vue:
--------------------------------------------------------------------------------
 1 | <template>
 2 |   <div
 3 |     class="h-[34px] px-3 py-2 bg-white rounded-lg shadow border border-[#cfd4dc] justify-center items-center gap-1 inline-flex">
 4 |     <div class="px-0.5 justify-center items-center flex">
 5 |       <div
 6 |         class="text-[#344053] text-xs font-normal font-['PingFang SC'] leading-[18px]">
 7 |         下一页
 8 |       </div>
 9 |     </div>
10 |     <ElIcon>
11 |       <Right />
12 |     </ElIcon>
13 |   </div>
14 | </template>
15 | 
16 | <script setup>
17 |   import { ElIcon } from 'element-plus'
18 |   import { Right } from '@element-plus/icons-vue'
19 | </script>
20 | 


--------------------------------------------------------------------------------
/frontend/src/components/admin_next/admin_component/Pagination/Pagination.vue:
--------------------------------------------------------------------------------
 1 | <template>
 2 |   <el-pagination
 3 |     class="next flex justify-between my-[24px] mx-[15px]"
 4 |     :prev-icon="PrevButton"
 5 |     :next-icon="NextButton"
 6 |     v-bind="$attrs" />
 7 | </template>
 8 | 
 9 | <script setup>
10 |   import PrevButton from './PrevButton.vue'
11 |   import NextButton from './NextButton.vue'
12 | </script>
13 | 
14 | <style lang="less">
15 |   .el-pagination.next {
16 |     .number {
17 |       color: #475467;
18 | 
19 |       &.is-active {
20 |         border-radius: 4px;
21 |         background-color: #f9fafb;
22 |         color: #182230 !important;
23 |         font-weight: normal !important;
24 |       }
25 |     }
26 | 
27 |     button.btn-prev,
28 |     button.btn-next {
29 |       display: inline-flex;
30 |       align-items: normal;
31 |     }
32 |   }
33 | </style>
34 | 


--------------------------------------------------------------------------------
/frontend/src/components/admin_next/admin_component/Pagination/PrevButton.vue:
--------------------------------------------------------------------------------
 1 | <template>
 2 |   <div
 3 |     class="h-[34px] px-3 py-2 bg-white rounded-lg shadow border border-[#cfd4dc] justify-center items-center gap-1 inline-flex">
 4 |     <ElIcon>
 5 |       <Back />
 6 |     </ElIcon>
 7 |     <div class="px-0.5 justify-center items-center flex">
 8 |       <div
 9 |         class="text-[#344053] text-xs font-normal font-['PingFang SC'] leading-[18px]">
10 |         上一页
11 |       </div>
12 |     </div>
13 |   </div>
14 | </template>
15 | 
16 | <script setup>
17 |   import { ElIcon } from 'element-plus'
18 |   import { Back } from '@element-plus/icons-vue'
19 | </script>
20 | 


--------------------------------------------------------------------------------
/frontend/src/components/admin_next/admin_component/index.js:
--------------------------------------------------------------------------------
 1 | // manage all admin common components
 2 | 
 3 | import Container from './Container.vue'
 4 | import Menu from './Menu.vue'
 5 | import Pagination from './Pagination/Pagination.vue'
 6 | import Table from './Table/Table.vue'
 7 | import Navbar from './Navbar/Navbar.vue'
 8 | import Card from './Card/Card.vue'
 9 | 
10 | export { Container, Menu, Pagination, Table, Navbar, Card }
11 | 


--------------------------------------------------------------------------------
/frontend/src/components/admin_next/dashboard/AdminDashboard.vue:
--------------------------------------------------------------------------------
 1 | <template>
 2 |   <div class="p-9">{{ $t('admin.dashboard.intro') }}</div>
 3 | </template>
 4 | 
 5 | <script setup>
 6 |   import { onMounted } from 'vue'
 7 | 
 8 |   const emit = defineEmits(['showAdminMenu'])
 9 | 
10 |   onMounted(() => {
11 |     emit('showAdminMenu')
12 |   })
13 | </script>
14 | 


--------------------------------------------------------------------------------
/frontend/src/components/application_spaces/AppPayMode.vue:
--------------------------------------------------------------------------------
 1 | <template>
 2 |   <span
 3 |     class="px-[8px] py-[2px] flex items-center justify-center border rounded-md text-gray-700 text-xs leading-[18px]"
 4 |     >{{ thePayMode }}
 5 |   </span>
 6 | </template>
 7 | 
 8 | <script setup>
 9 |   import { computed } from 'vue'
10 |   import { useI18n } from 'vue-i18n'
11 | 
12 |   const { t } = useI18n()
13 | 
14 |   const props = defineProps({
15 |     payMode: String
16 |   })
17 |   const thePayMode = computed(() => {
18 |     switch (props.payMode) {
19 |       case 'free':
20 |         return t('resourceConsole.free')
21 |       case 'minute':
22 |         return t('resourceConsole.minute')
23 |       case 'year':
24 |       case 'month':
25 |         return t('resourceConsole.yearMonth')
26 |       default:
27 |         return t('resourceConsole.others')
28 |     }
29 |   })
30 | </script>
31 | 


--------------------------------------------------------------------------------
/frontend/src/components/application_spaces/BuildStatus.vue:
--------------------------------------------------------------------------------
 1 | <template>
 2 |   <div class="flex items-center gap-1 bg-white/60 border border-gray-300 rounded-md py-[5px] px-2 backdrop-blur-sm">
 3 |     <svg xmlns="http://www.w3.org/2000/svg" width="8" height="8" viewBox="0 0 8 8" fill="none">
 4 |       <circle cx="4" cy="4" r="3" fill="#4D6AD6"/>
 5 |     </svg>
 6 |     <p class="text-xs text-gray-700 font-normal leading-tight">{{ statusName }}</p>
 7 |   </div>
 8 | </template>
 9 | 
10 | <script setup>
11 |   const props = defineProps({
12 |     statusName: String
13 |   })
14 | </script>


--------------------------------------------------------------------------------
/frontend/src/components/application_spaces/ErrorStatus.vue:
--------------------------------------------------------------------------------
 1 | <template>
 2 |   <div class="flex items-center gap-1 bg-white/60 border border-gray-300 rounded-md py-[5px] px-2 backdrop-blur-sm">
 3 |     <svg xmlns="http://www.w3.org/2000/svg" width="8" height="8" viewBox="0 0 8 8" fill="none">
 4 |       <circle cx="4" cy="4" r="3" fill="#F04438"/>
 5 |     </svg>
 6 |     <p class="text-xs text-gray-700 font-normal leading-tight">{{ statusName }}</p>
 7 |   </div>
 8 | </template>
 9 | 
10 | <script setup>
11 |   const props = defineProps({
12 |     statusName: String
13 |   })
14 | </script>


--------------------------------------------------------------------------------
/frontend/src/components/application_spaces/SpaceRelationsCard.vue:
--------------------------------------------------------------------------------
 1 | <template>
 2 |   <div class="p-[16px] border-t border-gray-200">
 3 |     <h3 class="flex items-center gap-2">
 4 |       <SvgIcon name="spaces" width="18px" height="18px" />
 5 |       <span class="font-medium text-gray-700 text-md leading-6"> {{ $t('spaces.associated') }} </span>
 6 |       <span class="text-gray-500"> {{ spaces.length }} </span>
 7 |     </h3>
 8 |     <div class="mt-4 flex flex-wrap gap-3">
 9 |       <ApplicationSpaceItem 
10 |         v-for="space in spaces" 
11 |         :key="space.path"
12 |         :repo="space"
13 |       />
14 |     </div>
15 |   </div>
16 | </template>
17 | 
18 | <script setup>
19 |   import ApplicationSpaceItem from './ApplicationSpaceItem.vue'
20 |   
21 |   const props = defineProps({
22 |     namespacePath: String,
23 |     spaces: Array
24 |   })
25 | </script>


--------------------------------------------------------------------------------
/frontend/src/components/application_spaces/SuccessStatus.vue:
--------------------------------------------------------------------------------
 1 | <template>
 2 |   <div class="flex items-center gap-1 bg-white/60 border border-gray-300 rounded-md py-[5px] px-2 backdrop-blur-sm">
 3 |     <svg xmlns="http://www.w3.org/2000/svg" width="8" height="8" viewBox="0 0 8 8" fill="none">
 4 |       <circle cx="4" cy="4" r="3" fill="#17B26A"/>
 5 |     </svg>
 6 |     <p class="text-xs text-gray-700 font-normal leading-tight">{{ statusName }}</p>
 7 |   </div>
 8 | </template>
 9 | 
10 | <script setup>
11 |   const props = defineProps({
12 |     statusName: String
13 |   })
14 | </script>


--------------------------------------------------------------------------------
/frontend/src/components/application_spaces/WarningStatus.vue:
--------------------------------------------------------------------------------
 1 | <template>
 2 |   <div class="flex items-center gap-1 bg-white/60 border border-gray-300 rounded-md py-[5px] px-2 backdrop-blur-sm">
 3 |     <svg xmlns="http://www.w3.org/2000/svg" width="8" height="8" viewBox="0 0 8 8" fill="none">
 4 |       <circle cx="4" cy="4" r="3" fill="#F79009"/>
 5 |     </svg>
 6 |     <p class="text-xs text-gray-700 font-normal leading-tight">{{ statusName }}</p>
 7 |   </div>
 8 | </template>
 9 | 
10 | <script setup>
11 |   const props = defineProps({
12 |     statusName: String
13 |   })
14 | </script>


--------------------------------------------------------------------------------
/frontend/src/components/codes/CodeRelationsCard.vue:
--------------------------------------------------------------------------------
 1 | <template>
 2 |   <div class="p-4 border-t border-gray-200">
 3 |     <h3 class="flex items-center gap-2">
 4 |       <SvgIcon name="codes" width="18px" height="18px" />
 5 |       <span class="font-medium text-gray-700 text-md leading-6"> {{ $t('codes.associated') }} </span>
 6 |       <span class="text-gray-500"> {{ codes.length }} </span>
 7 |     </h3>
 8 |     <div class="mt-4 flex flex-col gap-3">
 9 |       <RepoItem v-for="code in codes" :repo="code" repoType="code" cardType="relations" />
10 |     </div>
11 |   </div>
12 | </template>
13 | 
14 | <script setup>
15 |   import RepoItem from '../shared/RepoItem.vue';
16 | 
17 |   const props = defineProps({
18 |     namespacePath: String,
19 |     codes: Array
20 |   })
21 | </script>


--------------------------------------------------------------------------------
/frontend/src/components/datasets/DatasetRelationsCard.vue:
--------------------------------------------------------------------------------
 1 | <template>
 2 |   <div class="p-4 border-t border-gray-200">
 3 |     <h3 class="flex items-center gap-2">
 4 |       <SvgIcon name="datasets" width="18px" height="18px" />
 5 |       <span class="font-medium text-gray-700 text-md leading-6">
 6 |         {{ $t('datasets.associated') }}
 7 |       </span>
 8 |       <span class="text-gray-500"> {{ datasets.length }} </span>
 9 |     </h3>
10 |     <div class="mt-4 flex flex-col gap-3">
11 |       <RepoItem
12 |         v-for="dataset in datasets"
13 |         :repo="dataset"
14 |         repoType="dataset"
15 |         cardType="relations" />
16 |     </div>
17 |   </div>
18 | </template>
19 | 
20 | <script setup>
21 |   import RepoItem from '../shared/RepoItem.vue'
22 | 
23 |   const props = defineProps({
24 |     namespacePath: String,
25 |     datasets: Array
26 |   })
27 | </script>
28 | 


--------------------------------------------------------------------------------
/frontend/src/components/form/sub/FormLabel.vue:
--------------------------------------------------------------------------------
 1 | <template>
 2 |   <div class="flex items-center gap-x-[4px] mb-[8px]">
 3 |     <label class="text-gray-700 text-sm">{{ labelName }}</label>
 4 |     <svg v-if="required" xmlns="http://www.w3.org/2000/svg" width="6" height="6" viewBox="0 0 6 6" fill="none">
 5 |       <path
 6 |           d="M2.21714 5.2179L3.35474 3.8499L4.49234 5.2179L5.12594 4.7571L4.20434 3.2595L5.77394 2.6115L5.52914 1.8771L3.88754 2.2659L3.74354 0.537903H2.96594L2.82194 2.2803L1.18034 1.8771L0.921143 2.6115L2.49074 3.2595L1.58354 4.7571L2.21714 5.2179Z"
 7 |           fill="#F56C6C"/>
 8 |     </svg>
 9 |   </div>
10 | </template>
11 | <script>
12 | export default {
13 |   props: {
14 |     labelName: String,
15 |     required: Boolean
16 |   },
17 |   data () {
18 |     return {}
19 |   },
20 |   components: {},
21 |   mounted() {}
22 | }
23 | </script>
24 | 


--------------------------------------------------------------------------------
/frontend/src/components/images/BackgroundPattern.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/frontend/src/components/images/BackgroundPattern.png


--------------------------------------------------------------------------------
/frontend/src/components/images/opencsg_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/frontend/src/components/images/opencsg_logo.png


--------------------------------------------------------------------------------
/frontend/src/components/mcp/ToolNameCell.vue:
--------------------------------------------------------------------------------
 1 | <template>
 2 |   <div>
 3 |     <a
 4 |       href="javascript:void(0)"
 5 |       class="text-brand-700 underline"
 6 |       @click="showDetail"
 7 |     >
 8 |       {{ tool.name }}
 9 |     </a>
10 |   </div>
11 | </template>
12 | 
13 | <script setup>
14 |   const props = defineProps({
15 |     tool: Object
16 |   })
17 | 
18 |   const emit = defineEmits(['showToolDetail'])
19 | 
20 |   const showDetail = () => {
21 |     emit('showToolDetail', props.tool)
22 |   }
23 | </script>
24 | 


--------------------------------------------------------------------------------
/frontend/src/components/models/EmptyModels.vue:
--------------------------------------------------------------------------------
 1 | <template>
 2 |   <div class="flex items-center flex-col gap-6 text-center p-20">
 3 |     <img src="/images/empty-models.png" width="613" height="auto" />
 4 |     <h1 class="text-[#303030] text-3xl font-medium leading-[38px]">{{ $t('models.emptyModels.title') }}</h1>
 5 |     <p class="text-gray-600 text-xl font-light leading-[38px]">{{ $t('models.emptyModels.desc') }}</p>
 6 |     <div class="flex gap-3">
 7 |       <a href="/models/new">
 8 |         <CsgButton :name="$t('models.emptyModels.uploadBtn')" class="btn btn-secondary-gray btn-xl" />
 9 |       </a>
10 |       <a href="/admin_panel/sync">
11 |         <CsgButton :name="$t('models.emptyModels.multisyncBtn')" class="btn btn-primary btn-xl" />
12 |       </a>
13 |     </div>
14 |   </div>
15 | </template>


--------------------------------------------------------------------------------
/frontend/src/components/models/ModelRelationsCard.vue:
--------------------------------------------------------------------------------
 1 | <template>
 2 |   <div class="p-[16px] border-t border-gray-200">
 3 |     <h3 class="flex items-center gap-[8px]">
 4 |       <SvgIcon name="models" width="18px" height="18px" />
 5 |       <span class="font-[500] text-gray-700 text-md leading-[24px]"> {{ $t('models.modelsUsedToTrain') }} </span>
 6 |       <span class="text-gray-700"> {{ namespacePath }} </span>
 7 |     </h3>
 8 |     <div class="mt-[16px] flex flex-col gap-[12px]">
 9 |       <RepoItem v-for="model in models" :repo="model" repoType="model" cardType="relations" />
10 |     </div>
11 |   </div>
12 | </template>
13 | 
14 | <script setup>
15 |   import RepoItem from '../shared/RepoItem.vue';
16 | 
17 |   const props = defineProps({
18 |     namespacePath: String,
19 |     models: Array
20 |   })
21 | </script>


--------------------------------------------------------------------------------
/frontend/src/components/navbar/menuItem/Mcp.vue:
--------------------------------------------------------------------------------
 1 | <template>
 2 |   <div class="menuItem min-h-max flex md:items-center gap-4 py-2.5">
 3 |     <div class="pt-0.5 md:pt-0">
 4 |       <SvgIcon name="space_mcp" width="20px" />
 5 |     </div>
 6 |     <div class="max-w-[247px] flex flex-col whitespace-normal">
 7 |       <div class="text-gray-900 text-md">{{ $t('navbar.mcp') }}</div>
 8 |       <div
 9 |         class="text-sm w-[247px] md:w-[unset] text-gray-600 font-light leading-5 md:hidden"
10 |       >
11 |         {{ $t('navbar.mcpText') }}
12 |       </div>
13 |     </div>
14 |   </div>
15 | </template>
16 | 


--------------------------------------------------------------------------------
/frontend/src/components/navbar/menuItem/McpTools.vue:
--------------------------------------------------------------------------------
 1 | <template>
 2 |   <div class="menuItem min-h-max flex md:items-center gap-4 py-2.5">
 3 |     <div class="pt-0.5 md:pt-0">
 4 |       <SvgIcon name="space_mcp" width="20px" />
 5 |     </div>
 6 |     <div class="max-w-[247px] flex flex-col whitespace-normal">
 7 |       <div class="text-gray-900 text-md">{{ $t('navbar.mcpTools') }}</div>
 8 |       <div
 9 |         class="text-sm w-[247px] md:w-[unset] text-gray-600 font-light leading-5 md:hidden"
10 |       >
11 |         {{ $t('navbar.mcpToolsText') }}
12 |       </div>
13 |     </div>
14 |   </div>
15 | </template>
16 | 


--------------------------------------------------------------------------------
/frontend/src/components/new_admin/AdminDashboard.vue:
--------------------------------------------------------------------------------
 1 | <template>
 2 |   <div class="p-9">{{ $t('admin.dashboard.intro') }}</div>
 3 | </template>
 4 | 
 5 | <script setup>
 6 |   import { onMounted } from 'vue'
 7 | 
 8 |   const emit = defineEmits(['showAdminMenu'])
 9 | 
10 |   onMounted(() => {
11 |     emit('showAdminMenu')
12 |   })
13 | </script>
14 | 


--------------------------------------------------------------------------------
/frontend/src/components/new_admin/AdminNavbar.vue:
--------------------------------------------------------------------------------
 1 | <template>
 2 |   <div class="w-full h-[60px] bg-[#1C7A6C]">
 3 |     <div class="page-responsive-width m-auto h-full flex justify-between items-center">
 4 |       <p class="font-[700] text-white"> OpenCSG Admin Panel </p>
 5 |       <a href="/" target="_blank" class="font-[500] text-white underline"> Open Site </a>
 6 |       <p class="text-white">{{ userName }} ( {{ userRoles }} )</p>
 7 |     </div>
 8 |   </div>
 9 | </template>
10 | 
11 | <script setup>
12 |   const props = defineProps({
13 |     userName: String,
14 |     userRoles: String
15 |   })
16 | </script>


--------------------------------------------------------------------------------
/frontend/src/components/prompts/PromptsHub.vue:
--------------------------------------------------------------------------------
 1 | <template>
 2 |   <div class="w-full h-[calc(100vh-153px)] flex md:flex-col text-[#101828] relative">
 3 |     <PromptsMenu />
 4 |     <PromptsLibrary
 5 |       :current-component="currentComponent"
 6 |       :namespace="namespace"
 7 |       :name="name"
 8 |       :file-path="path"
 9 |       :licenses="licenses"
10 |     />
11 |   </div>
12 | </template>
13 | 
14 | <script setup>
15 |   import { computed } from 'vue'
16 |   import PromptsMenu from './PromptsMenu.vue'
17 |   import PromptsLibrary from './PromptsLibrary.vue'
18 | 
19 |   const props = defineProps({
20 |     namespace: String,
21 |     name: String,
22 |     path: String,
23 |     licenses: Array
24 |   })
25 |   const currentComponent = computed(() => {
26 |     return props.namespace && props.name && props.path
27 |       ? 'PromptsDetails'
28 |       : props.namespace && props.name
29 |       ? 'PromptsList'
30 |       : 'PromptsIndex'
31 |   })
32 | </script>
33 | 


--------------------------------------------------------------------------------
/frontend/src/components/prompts/PromptsTags.vue:
--------------------------------------------------------------------------------
 1 | <template>
 2 |   <div
 3 |     class="flex items-center gap-1 h-[20px] whitespace-nowrap"
 4 |     :style="{ color: textColor }"
 5 |   >
 6 |     <SvgIcon :name="`prompts_${tag}`" />
 7 |     {{ $t(tagName) }}
 8 |   </div>
 9 | </template>
10 | 
11 | <script setup>
12 |   import { computed } from 'vue'
13 | 
14 |   const props = defineProps({
15 |     tag: String
16 |   })
17 |   const tagColors = {
18 |     Image: '#EAAA08',
19 |     Video: '#6172F3',
20 |     Music: '#EF6820',
21 |     Code: '#2E90FA',
22 |     DataAnalysis: '#0BA5EC',
23 |     Research: '#15B79E',
24 |     Personalization: '#7A5AF8',
25 |     CreativeWriting: '#06AED4',
26 |     TechnicalWriting: '#17B26A',
27 |     Design: '#FF4405',
28 |     Marketing: '#4E5BA6',
29 |     Education: '#66C61C'
30 |   }
31 |   const tagName = computed(() => `prompts.tag.${props.tag}`)
32 |   const textColor = computed(() => tagColors[props.tag])
33 | </script>
34 | 


--------------------------------------------------------------------------------
/frontend/src/components/shared/DeployDropdown.vue:
--------------------------------------------------------------------------------
 1 | <template>
 2 |   <div>
 3 |     <el-dropdown class="h-9">
 4 |       <el-button plain type="default" class="btn btn-secondary-gray btn-sm !h-full">
 5 |         <SvgIcon name="deploy" class="mr-1" />
 6 |         <div class="text-gray-700">{{ t("all.deploy") }}</div>
 7 |         <el-icon class="ml-1 el-icon--right">
 8 |           <arrow-down />
 9 |         </el-icon>
10 |       </el-button>
11 |       <template #dropdown>
12 |         <el-dropdown-menu>
13 |           <el-dropdown-item>
14 |             <a :href="`/endpoints/new?model_id=${modelId}`">{{ t("endpoints.new.dedicated") }}</a>
15 |           </el-dropdown-item>
16 |         </el-dropdown-menu>
17 |       </template>
18 |     </el-dropdown>
19 |   </div>
20 | </template>
21 | 
22 | <script setup>
23 |   import { useI18n } from "vue-i18n";
24 | 
25 |   const { t } = useI18n();
26 | 
27 |   const props = defineProps({
28 |     modelId: String
29 |   });
30 | </script>
31 | 


--------------------------------------------------------------------------------
/frontend/src/components/shared/FlashMessage.vue:
--------------------------------------------------------------------------------
 1 | <template>
 2 |   <div v-if="message" class="flash-message">
 3 |     <el-alert :title="message" :type="type" class="justify-center" />
 4 |   </div>
 5 | </template>
 6 | 
 7 | <script setup>
 8 | const props = defineProps({
 9 |   message: {
10 |     type: String,
11 |     required: true
12 |   },
13 |   type: {
14 |     type: String,
15 |     default: 'info'
16 |   }
17 | });
18 | </script>


--------------------------------------------------------------------------------
/frontend/src/components/shared/InstanceInBuilding.vue:
--------------------------------------------------------------------------------
 1 | <template>
 2 |   <div class="loading-container flex flex-col gap-4 py-4">
 3 |     <div class="loading-spinner"></div>
 4 |     <span>{{ loadingText }}</span>
 5 |   </div>
 6 | </template>
 7 | 
 8 | <script setup>
 9 | 
10 | const props = defineProps({
11 |   loadingText: {
12 |     type: String,
13 |     default: 'Loading...'
14 |   }
15 | });
16 | </script>
17 | 
18 | <style scoped>
19 | .loading-container {
20 |   display: flex;
21 |   align-items: center;
22 |   margin-bottom: 10px;
23 | }
24 | 
25 | .loading-spinner {
26 |   border: 5px solid rgba(0, 0, 0, 0.1);
27 |   border-left-color: #3250BD;
28 |   border-radius: 50%;
29 |   width: 40px;
30 |   height: 40px;
31 |   animation: spin 1s linear infinite;
32 |   margin-right: 10px;
33 | }
34 | 
35 | @keyframes spin {
36 |   to {
37 |     transform: rotate(360deg);
38 |   }
39 | }
40 | </style>


--------------------------------------------------------------------------------
/frontend/src/components/shared/MoreTags.vue:
--------------------------------------------------------------------------------
 1 | <template>
 2 |   <div
 3 |     class="text-sm text-gray-700 px-[8px] py-[4px] rounded-sm flex items-center cursor-pointer border gap-1"
 4 |     @click="viewMore"
 5 |   >
 6 |     + {{ num }} {{ $t('all.more') }}
 7 |   </div>
 8 | </template>
 9 | 
10 | <script setup>
11 |   const props = defineProps({
12 |     num: String,
13 |     target: String
14 |   })
15 | 
16 |   const emit = defineEmits(['viewMoreTargets'])
17 | 
18 |   const viewMore = () => {
19 |     emit('viewMoreTargets', props.target)
20 |   }
21 | </script>
22 | 


--------------------------------------------------------------------------------
/frontend/src/components/shared/NewTag.vue:
--------------------------------------------------------------------------------
1 | <template>
2 |   <div class="flex cursor-pointer border border-gray-300 gap-1 px-[6px] py-[3px] rounded-sm">
3 |     <SvgIcon name="new_dot" />
4 |     <span class="text-gray-700 text-xs font-normal">NEW</span>
5 |   </div>
6 | </template>
7 | 
8 | <script setup></script>
9 | 


--------------------------------------------------------------------------------
/frontend/src/components/shared/Next.vue:
--------------------------------------------------------------------------------
 1 | <template>
 2 |   <div class="flex gap-[8px] md:px-1 px-4 justify-center items-center">
 3 |     <span class="block not-italic md:hidden">{{ $t('all.next')}}</span>
 4 |     <svg
 5 |       xmlns="http://www.w3.org/2000/svg"
 6 |       width="20"
 7 |       height="20"
 8 |       viewBox="0 0 20 20"
 9 |       fill="none"
10 |     >
11 |       <path
12 |         d="M4.1665 9.99935H15.8332M15.8332 9.99935L9.99984 4.16602M15.8332 9.99935L9.99984 15.8327"
13 |         stroke="#344054"
14 |         stroke-width="1.67"
15 |         stroke-linecap="round"
16 |         stroke-linejoin="round"
17 |       />
18 |     </svg>
19 |   </div>
20 | </template>
21 | 
22 | <script setup></script>
23 | 


--------------------------------------------------------------------------------
/frontend/src/components/shared/Previous.vue:
--------------------------------------------------------------------------------
 1 | <template>
 2 |   <div class="flex gap-[8px] md:px-1 px-4 justify-center items-center">
 3 |     <svg
 4 |       xmlns="http://www.w3.org/2000/svg"
 5 |       width="20"
 6 |       height="20"
 7 |       viewBox="0 0 20 20"
 8 |       fill="none"
 9 |     >
10 |       <path
11 |         d="M15.8332 9.99935H4.1665M4.1665 9.99935L9.99984 15.8327M4.1665 9.99935L9.99984 4.16602"
12 |         stroke="#344054"
13 |         stroke-width="1.67"
14 |         stroke-linecap="round"
15 |         stroke-linejoin="round"
16 |       />
17 |     </svg>
18 |     <span class="block not-italic md:hidden">{{ $t('all.previous')}}</span>
19 |   </div>
20 | </template>
21 | 
22 | <script setup></script>
23 | 


--------------------------------------------------------------------------------
/frontend/src/components/shared/RepoFiles.vue:
--------------------------------------------------------------------------------
 1 | <template>
 2 |   <file-list
 3 |     :current-path="currentPath"
 4 |     :namespace-path="namespacePath"
 5 |     :can-write="canWrite"
 6 |     @change-branch="changeBranch"
 7 |   />
 8 | </template>
 9 | 
10 | <script setup>
11 |   import FileList from '../shared/FileList.vue'
12 |   import { useRepoTabStore } from '../../stores/RepoTabStore'
13 |   
14 |   const { setRepoTab, repoTab } = useRepoTabStore()
15 | 
16 |   const props = defineProps({
17 |     currentPath: String,
18 |     namespacePath: String,
19 |     canWrite: Boolean,
20 |     repoType: String
21 |   })
22 | 
23 |   const changeBranch = (branch) => {
24 |     if (branch !== repoTab.currentBranch) {
25 |       // window.location.href = `/${props.repoType}s/${props.namespacePath}/files/${branch}`
26 |       setRepoTab({
27 |         currentBranch: branch
28 |       })
29 |     }
30 |   }
31 | </script>
32 | 


--------------------------------------------------------------------------------
/frontend/src/components/shared/SvgIcon.vue:
--------------------------------------------------------------------------------
 1 | <template>
 2 |   <img
 3 |     :width="width"
 4 |     :height="height"
 5 |     :src="`/images/${path}/${name}.svg`"
 6 |     onerror="this.style.display='none'"
 7 |     :class="{'disabled-icon': disabled}"
 8 |   />
 9 | </template>
10 | 
11 | <script setup>
12 |   const props = defineProps({
13 |     name: String,
14 |     width:{
15 |       type: String,
16 |       default: "auto",
17 |     },
18 |     height:{
19 |       type: String,
20 |       default: "auto",
21 |     },
22 |     path: {
23 |       type: String,
24 |       default: "icons",
25 |     },
26 |     disabled: {
27 |       type: Boolean,
28 |       default: false
29 |     }
30 |   });
31 | </script>
32 | 
33 | <style scoped>
34 | .disabled-icon {
35 |   filter: invert(87%) sepia(4%) saturate(150%) hue-rotate(169deg) brightness(89%) contrast(87%);
36 | }
37 | </style>
38 | 


--------------------------------------------------------------------------------
/frontend/src/components/shared/inputs/InputTip.vue:
--------------------------------------------------------------------------------
 1 | <template>
 2 |   <el-tooltip class="item" effect="dark" :content="content" placement="top">
 3 |     <SvgIcon name="input_tip" class="cursor-pointer" />
 4 |   </el-tooltip>
 5 | </template>
 6 | 
 7 | <script setup>
 8 |   import SvgIcon from "../SvgIcon.vue"
 9 | 
10 |   const props = defineProps({
11 |     content: String
12 |   })
13 | </script>
14 | 


--------------------------------------------------------------------------------
/frontend/src/components/shared/viewers/TextViewer.vue:
--------------------------------------------------------------------------------
 1 | <template>
 2 |   <div class="whitespace-pre-wrap break-words">{{ content }}</div>
 3 | </template>
 4 | 
 5 | <script setup>
 6 |   const props = defineProps({
 7 |     content: String,
 8 |   })
 9 | </script>
10 | 


--------------------------------------------------------------------------------
/frontend/src/components/user_settings/ProfileSettings.vue:
--------------------------------------------------------------------------------
 1 | <template>
 2 |   <div
 3 |     class="flex justify-center md:flex-col px-[24px] rounded-md md:px-[50px] sm:px-[20px] page-responsive-width m-auto bg-white"
 4 |   >
 5 |     <Menu :hasSave="hasSave" class="max-w-[411px] md:mb-[24px]" />
 6 |     <ProfileEdit @update-has-save="updateHasSave" class="grow" />
 7 |   </div>
 8 | </template>
 9 | 
10 | <script setup>
11 |   import Menu from './Menu.vue'
12 |   import ProfileEdit from './ProfileEdit.vue'
13 |   import { ref } from 'vue'
14 | 
15 |   const hasSave = ref(true)
16 |   const updateHasSave = (value) => {
17 |     hasSave.value = value
18 |   }
19 | </script>
20 | 


--------------------------------------------------------------------------------
/frontend/src/locales/en_js/billing.js:
--------------------------------------------------------------------------------
 1 | export const billing = {
 2 |   title: 'Billing',
 3 |   balance: 'Account Balance',
 4 |   inference: 'Inference Instances',
 5 |   instanceID: 'Instance ID',
 6 |   createTime: 'Creation Time',
 7 |   usageTime: 'Total Duration(m)',
 8 |   cost: 'Cost(yuan)',
 9 |   status: 'Status',
10 |   details: 'Details',
11 |   total: 'Total',
12 |   refresh: 'Refresh',
13 |   instanceBilling: 'Instance Billing',
14 |   billing: 'Billing'
15 | }
16 | 


--------------------------------------------------------------------------------
/frontend/src/locales/en_js/comment.js:
--------------------------------------------------------------------------------
1 | export const comment = {
2 |   sureDel: "Confirm to delete this comment.js?",
3 |   createComment: "Add a comment.js",
4 | }


--------------------------------------------------------------------------------
/frontend/src/locales/en_js/components.js:
--------------------------------------------------------------------------------
1 | export const components = {
2 |   upload: {
3 |     click_to_upload: "Click to upload",
4 |     or_drag_file: "or drag and drop files here",
5 |     upload_type: "Support {accept} type file upload",
6 |   }
7 | }


--------------------------------------------------------------------------------
/frontend/src/locales/en_js/error.js:
--------------------------------------------------------------------------------
 1 | export const errors_page = {
 2 |   not_found: {
 3 |     title: 'Page not found',
 4 |     desc: 'Sorry, OpenCSG could not find this web page. This web page may have been removed due to a product update, or your URL is incorrect.',
 5 |     back: 'Back',
 6 |     home: 'To homepage',
 7 |   },
 8 |   unauthorized: {
 9 |     title: 'Unauthorized',
10 |     desc: 'Please contact the administrator for authorization',
11 |   },
12 |   login_failed: {
13 |     title: 'Login failed',
14 |     default_msg: 'Unknown login error, please contact the administrator',
15 |     back_to_homepage: 'To homepage',
16 |     relogin: 'Relogin',
17 |   },
18 |   serverError: {
19 |     title: 'Server Error {errorCode}'
20 |   }
21 | }


--------------------------------------------------------------------------------
/frontend/src/locales/en_js/languages.js:
--------------------------------------------------------------------------------
 1 | export const languages = {
 2 |   Chinese: 'Chinese',
 3 |   English: 'English',
 4 |   French: 'French',
 5 |   German: 'German',
 6 |   Italian: 'Italian',
 7 |   Japanese: 'Japanese',
 8 |   Korean: 'Korean',
 9 |   Spanish: 'Spanish',
10 |   Portuguese: 'Portuguese',
11 |   Russian: 'Russian',
12 |   Arabic: 'Arabic',
13 |   ChineseTraditional: 'ChineseTraditional',
14 |   ChineseSimplified: 'ChineseSimplified',
15 |   Hindi: 'Hindi',
16 |   Indonesian: 'Indonesian',
17 |   Malay: 'Malay',
18 |   Vietnamese: 'Vietnamese',
19 |   Turkish: 'Turkish',
20 |   Dutch: 'Dutch',
21 |   Polish: 'Polish',
22 |   Swedish: 'Swedish'
23 | }


--------------------------------------------------------------------------------
/frontend/src/locales/en_js/repo.js:
--------------------------------------------------------------------------------
 1 | export const repo = {
 2 |   edit: {
 3 |     fileName: "File Name",
 4 |     main: "Directly submit to the main branch",
 5 |     submit: "Submit Update",
 6 |     desc: "Provide more description",
 7 |     update: "Update file",
 8 |     cancel: "Cancel",
 9 |   },
10 |   source: {
11 |     sync: "Sync",
12 |     syncing: "Syncing",
13 |     syncButton: "Sync Now",
14 |     syncDiff: "Sync Diff",
15 |     all: "All sources",
16 |     opencsg: "OpenCSG",
17 |     local: "Local",
18 |     remoteResource: "OpenCSG Remote Resource",
19 |     syncCompleted: "Local version matches remote source version",
20 |     needSync: "Remote has pending sync versions",
21 |     from: "Mirror from",
22 |     checkSyncDiff: "Check Sync Diff",
23 |     added: "Added",
24 |     removed: "Removed",
25 |     modified: "Modified",
26 |     syncDiffError: "Sync Diff Error",
27 |     nodiffs: "No diffs from remote",
28 |   }
29 | }


--------------------------------------------------------------------------------
/frontend/src/locales/en_js/resource_console.js:
--------------------------------------------------------------------------------
1 | export const resourceConsole = {
2 |   free: "Free",
3 |   minute: "Pay-as-you-go",
4 |   yearMonth: "Yearly Subscription",
5 |   others:"Others",
6 |   title: "Resource Management",
7 |   new:'Create',
8 |   instance:'Instance'
9 | }


--------------------------------------------------------------------------------
/frontend/src/locales/en_js/rule.js:
--------------------------------------------------------------------------------
 1 | export const rule = {
 2 |   notChangable: "Can't be changed once been set",
 3 |   // nameRule: "A string of 2-64 alphanumeric characters, _.-, where _.- cannot appear side by side, must start with a letter, and end with a letter or number.",
 4 |   nameRule: "Please enter a combination of 2 to 10 letters and numbers",
 5 |   collectionNameRule: "A string of 2-70 alphanumeric characters, _.-, where _.- cannot appear side by side, must start with a letter, and end with a letter or number.",
 6 |   lengthLimit: "The length is within the range of {min} to {max} characters",
 7 |   startWithLetter: "Must start with a letter",
 8 |   endWithLetterOrNumber: "Must end with a number or letter",
 9 |   onlyLetterNumberAndSpecialStr: "Can only contain letters, numbers, and -_.",
10 |   specialStrNotTogether: "Special characters cannot appear consecutively",
11 | }


--------------------------------------------------------------------------------
/frontend/src/locales/en_js/spaces.js:
--------------------------------------------------------------------------------
1 | export const spaces = {
2 |   title: "Application Space",
3 |   placeholder: "Search Spaces",
4 |   tips:"Creating Interactive Machine Learning Demos",
5 |   associated:'Associated Spaces',
6 |   sdkPlaceholder:'Select space type',
7 | }


--------------------------------------------------------------------------------
/frontend/src/locales/en_js/sshKey.js:
--------------------------------------------------------------------------------
 1 | export const sshKey = {
 2 |   desc: "SSH keys are used to authenticate Git operations over SSH. Add your public SSH key here to connect to your repositories securely.",
 3 |   addSshKey: "Add SSH Key",
 4 |   noKeyTips: "There are currently no SSH keys added to your account",
 5 |   sshKeyName: "SSH Key Name",
 6 |   sshKeyContent: "SSH Key Content",
 7 |   nameWarning: "Please enter the SSH Key Name",
 8 |   contentWarning: "Please enter the SSH Key Content",
 9 |   sureDelKey:
10 |     "Are you sure you want to delete this key from your account? This action cannot be undone.",
11 |   delKeyName: "Delete Key {value}",
12 |   addedOn: "Added on {year}/{month}/{day}",
13 |   addedMinutesAgo: "Added {minutes} minutes ago",
14 |   addedHoursAgo: "Added {hours} hours ago",
15 |   addedDaysAgo: "Added {days} days ago"
16 | }


--------------------------------------------------------------------------------
/frontend/src/locales/en_js/tags.js:
--------------------------------------------------------------------------------
 1 | export const tags = {
 2 |   computer_vision: "Computer Vision",
 3 |   natural_language_processing: "Natural Language Processing",
 4 |   audio_processing: "Audio Processing",
 5 |   multimodal: "Multimodal",
 6 |   text_processing: "Text Processing",
 7 |   scientific_computing: "Scientific Computing",
 8 |   graphics: "Graphics",
 9 |   audio: "Audio",
10 |   video: "Video",
11 | }


--------------------------------------------------------------------------------
/frontend/src/locales/en_js/user_sessions.js:
--------------------------------------------------------------------------------
1 | export const user_sessions = {
2 |   expiredTitle: 'Sign Status Invalid',
3 |   expiredDesc: 'Login has expired. Click "Sign Back In" to log in again',
4 |   reLogin: 'Sign Back In',
5 |   cancelLogin: 'Cancel Login',
6 | }
7 | 
8 | 


--------------------------------------------------------------------------------
/frontend/src/locales/en_js/widgets.js:
--------------------------------------------------------------------------------
1 | export const widgets = {
2 |   onlineDemo: "Online Experience",
3 |   testInput: "Test Input",
4 |   testOutput: "Test Result",
5 |   wordsNumber: "Word Count",
6 |   runTest: "Run Test",
7 |   timeCost: "More inference time",
8 |   liabilityExemption: "The results are generated by artificial intelligence models and do not represent the views, positions or attitudes of the platform. Please use the generated content in a reasonable and friendly manner"
9 | }


--------------------------------------------------------------------------------
/frontend/src/locales/zh_hant_js/accessToken.js:
--------------------------------------------------------------------------------
 1 | export const accessToken = {
 2 |   title: "使用者 Access Token",
 3 |   desc: "Access Tokens 主要用於驗證您的身分,允許應用程式基於 Token 權限執行操作。請不要與任何人分享您的存取權杖。",
 4 |   refresh: "重新整理 Access Token",
 5 |   refreshWarning: "重新整理之後現有的 Access Token 將會失效,確認繼續嗎?",
 6 |   confirm: "繼續重新整理",
 7 |   cancelInfo: "操作已取消",
 8 | 
 9 |   starshipTitle: "Starship API Keys",
10 |   starshipDesc: "Starship API Key 用於授權您對 Starship 服務的存取",
11 |   starshipRefresh: "重新整理",
12 |   starshipAddToken: "新增 API Key",
13 |   starshipAccessTokenName: "Starship API Key Name",
14 |   starshipAccessTokenValue: "Starship API Key Value",
15 |   starshipNameMissing: "API Key 名稱缺失",
16 | 
17 |   syncTitle: "多源同步 Token",
18 |   syncDesc: "多源同步 Token 用於授權您對多源同步服務的存取",
19 |   syncRefresh: "重新整理 Token",
20 |   syncRefreshWarning: "重新整理後現有的 Token 將會失效,確認繼續嗎?",
21 |   syncAddToken: "新增 Token"
22 | }


--------------------------------------------------------------------------------
/frontend/src/locales/zh_hant_js/billing.js:
--------------------------------------------------------------------------------
 1 | export const billing = {
 2 |   title: '費用帳單',
 3 |   balance: '帳戶額度',
 4 |   available_balance: '當前帳戶下可用餘額',
 5 |   inference: '推理實例',
 6 |   btn_recharge: '帳戶儲值',
 7 |   finetune: '微調實例',
 8 |   instanceName: '實例名稱',
 9 |   instanceID: '實例id',
10 |   createTime: '創建時間',
11 |   tokenNum: 'Token數量',
12 |   usageTime: '總時長(分)',
13 |   cost: '費用(元)',
14 |   status: '狀態',
15 |   details: '明細',
16 |   btn_details: '儲值明細',
17 |   total: '總計',
18 |   refresh: '刷新',
19 |   instanceBilling: '實例計費',
20 |   billing: '計費',
21 |   Running: '使用中',
22 |   Stopped: '已暫停',
23 |   cycle:'帳單週期',
24 |   to:'至'
25 | }
26 | 


--------------------------------------------------------------------------------
/frontend/src/locales/zh_hant_js/blog.js:
--------------------------------------------------------------------------------
 1 | export const blogs = {
 2 |   subtitle: "官方部落格",
 3 |   title: "資源與洞察",
 4 |   desc: "最新行業資訊、訪談、技術動態與資源。",
 5 |   searchPlaceholder: "搜尋",
 6 |   author: "文章作者",
 7 |   all: "查看全部文章",
 8 |   latest: "最新文章",
 9 |   toc: "目錄",
10 |   category: "文章分類",
11 |   categories: {
12 |     all: "全部",
13 |     product: "產品",
14 |     news: "發布",
15 |     development: "開發",
16 |     guide: "指南",
17 |     company: "公司",
18 |     case: "案例",
19 |     community: "社群",
20 |   }
21 | }


--------------------------------------------------------------------------------
/frontend/src/locales/zh_hant_js/campaign.js:
--------------------------------------------------------------------------------
 1 | export const campaign = {
 2 |   Organizer: '舉辦方',
 3 |   More: '了解更多',
 4 |   SignUp: '立即報名',
 5 |   Time: '活動時間',
 6 |   Site: '活動地點',
 7 |   prestart: '即將開始',
 8 |   signing_up: '報名中',
 9 |   in_progress: '正在進行',
10 |   ended: '已結束',
11 |   toList:'查看所有活動',
12 |   csghub:'傳神社區',
13 |   hotItem:'熱門活動',
14 |   hotDec:'關注更多國內外領先的產業技術大會以及傳神社區精彩活動',
15 |   linkSpace:'關聯應用空間',
16 |   subSuccess:'表單提交成功!',
17 |   subInfo:'感謝您對OpenCSG的大力支持,我們將會盡快聯繫到您',
18 |   backToIndex:'返回主頁',
19 |   formTip1:'同意傳神社區的',
20 |   formTip2:'隱私政策、服務條款',
21 |   checkError:'請閱讀並同意傳神社區的隱私政策、服務條款.',
22 |   formTitDec:'感謝您對傳神開放社區的支持',
23 |   all:'全部活動',
24 | }


--------------------------------------------------------------------------------
/frontend/src/locales/zh_hant_js/comment.js:
--------------------------------------------------------------------------------
1 | export const comment = {
2 |   sureDel: "確認刪除此評論?",
3 |   createComment: "添加評論",
4 | }


--------------------------------------------------------------------------------
/frontend/src/locales/zh_hant_js/components.js:
--------------------------------------------------------------------------------
1 | export const components = {
2 |   upload: {
3 |     click_to_upload: "點擊上傳",
4 |     or_drag_file: "或拖曳檔案到這裡",
5 |     upload_type: "支持 {accept} 類型檔案上傳",
6 |   }
7 | }


--------------------------------------------------------------------------------
/frontend/src/locales/zh_hant_js/error.js:
--------------------------------------------------------------------------------
 1 | export const errors_page = {
 2 |   not_found: {
 3 |     title: '無法存取網頁',
 4 |     desc: '抱歉,OpenCSG 找不到該網頁。該網頁或許由於產品更新已被刪除,或者您的網址不正確',
 5 |     back: '返回',
 6 |     home: '回到首頁',
 7 |   },
 8 |   unauthorized: {
 9 |     title: '暫無權限',
10 |     desc: '請聯絡管理員授權',
11 |   },
12 |   login_failed: {
13 |     title: '登入失敗',
14 |     default_msg: '未知登入錯誤,請聯絡管理員',
15 |     back_to_homepage: '回到首頁',
16 |     relogin: '重新登入',
17 |   },
18 |   serverError: {
19 |     title: '伺服器錯誤 {errorCode}'
20 |   }
21 | }


--------------------------------------------------------------------------------
/frontend/src/locales/zh_hant_js/experts.js:
--------------------------------------------------------------------------------
 1 | export const experts = {
 2 |   community_experts: '社群專家',
 3 |   index: {
 4 |     bg_title: '認識 OpenCSG 背後的專家們',
 5 |     title: 'OpenCSG 邀請您作為專家入駐社群,讓我們共建開源開放、共享開源生態。希望您為使用者提供技術支援及諮詢,解決方案設計指導等。',
 6 |     apply_button: '成為社群專家',
 7 |   },
 8 |   apply: {
 9 |     welcome_title: '歡迎加入 OpenCSG 專家社群',
10 |     welcome_content_1: 'OpenCSG 邀請您入駐專家社群,讓我們共建開源開放、共享開源生態。',
11 |     welcome_content_2: '希望您為使用者提供技術支援及諮詢,解決方案設計指導等。',
12 |     welcome_content_3: '您可以是人工智慧專家,軟體開發專家,開源專家,演算法專家,法務專家等。',
13 |     welcome_content_4: '誠摯的歡迎您入駐專家社群。',
14 |   }
15 | }


--------------------------------------------------------------------------------
/frontend/src/locales/zh_hant_js/languages.js:
--------------------------------------------------------------------------------
 1 | export const languages = {
 2 |   Chinese: '中文',
 3 |   English: '英文',
 4 |   French: '法文',
 5 |   German: '德文',
 6 |   Italian: '義大利文',
 7 |   Japanese: '日文',
 8 |   Korean: '韓文',
 9 |   Spanish: '西班牙文',
10 |   Portuguese: '葡萄牙文',
11 |   Russian: '俄文',
12 |   Arabic: '阿拉伯文',
13 |   ChineseTraditional: '繁體中文',
14 |   ChineseSimplified: '簡體中文',
15 |   Hindi: '印地文',
16 |   Indonesian: '印尼文',
17 |   Malay: '馬來文',
18 |   Vietnamese: '越南文',
19 |   Turkish: '土耳其文',
20 |   Dutch: '荷蘭文',
21 |   Polish: '波蘭文',
22 |   Swedish: '瑞典文'
23 | }


--------------------------------------------------------------------------------
/frontend/src/locales/zh_hant_js/repo.js:
--------------------------------------------------------------------------------
 1 | export const repo = {
 2 |   edit: {
 3 |     fileName: "檔案名稱",
 4 |         main: "直接提交到 main 分支",
 5 |         submit: "提交更新",
 6 |         desc: "提供更多描述",
 7 |         update: "更新檔案",
 8 |         cancel: "取消",
 9 |       },
10 |       source: {
11 |         sync: "同步",
12 |         syncButton: "立即同步",
13 |         syncing: "同步中",
14 |         syncDiff: "同步差異",
15 |         all: "顯示所有源",
16 |         opencsg: "OpenCSG",
17 |         local: "本地",
18 |         remoteResource: "OpenCSG 遠端資源",
19 |         syncCompleted: "本地版本與遠端源版本一致",
20 |         needSync: "遠端有待同步版本",
21 |         from: "鏡像來自",
22 |         checkSyncDiff: "查看同步差異",
23 |         added: "新增",
24 |         removed: "刪除",
25 |         modified: "修改",
26 |         syncDiffError: "同步差異獲取失敗",
27 |         nodiffs: "遠端沒有更新",
28 |   }
29 | }


--------------------------------------------------------------------------------
/frontend/src/locales/zh_hant_js/resource_console.js:
--------------------------------------------------------------------------------
 1 | export const resourceConsole = {
 2 |   free: "免費",
 3 |     minute: "按需付費",
 4 |     yearMonth: "包年包月",
 5 |     others:"其他",
 6 |     title: "資源管理",
 7 |     yearMonthResources:'包年包月資源',
 8 |     buy:'購買資源',
 9 |     new:'新建實例',
10 |     resourceType:'資源類型',
11 |     resourceId:'資源ID',
12 |     resource:'配置',
13 |     startTime:'啟動時間',
14 |     endTime:'到期時間',
15 |     price:'價格',
16 |     instance:'實例'
17 | }


--------------------------------------------------------------------------------
/frontend/src/locales/zh_hant_js/rule.js:
--------------------------------------------------------------------------------
 1 | export const rule = {
 2 |   notChangable: "設定後不可變更",
 3 |     // nameRule: "2-64个字母数字_.-的字符串,_.-不能并列出现,只能字母开头,字母或者数字结尾",
 4 |     nameRule: "請輸入2~10位的字母、數字組合",
 5 |     collectionNameRule: "2-70個字母數字_.-的字串,_.-不能並列出現,只能字母開頭,字母或者數字結尾",
 6 |     lengthLimit: "長度在{min}到{max}字元範圍",
 7 |     startWithLetter: "必須以字母開頭",
 8 |     endWithLetterOrNumber: "必須以字母或者數字結尾",
 9 |     onlyLetterNumberAndSpecialStr: "只能包含字母、數字與特殊字元_.-",
10 |     specialStrNotTogether: "特殊字元不能並列出現",
11 | }
12 | 


--------------------------------------------------------------------------------
/frontend/src/locales/zh_hant_js/shared.js:
--------------------------------------------------------------------------------
 1 | export const shared = {
 2 |   commitToMain: "直接提交到 main 分支",
 3 |     dragOr: "拖曳檔案到這裡或者",
 4 |     uploadFile5Mb: "網頁端僅支援5M以內大小檔案上傳,更大檔案請通過Git命令使用LFS上傳",
 5 |     onlyFiveFiles: "最多支援 5 個檔案",
 6 |     lfs1: "此檔案儲存在 ",
 7 |     lfs2: "Git LFS",
 8 |     lfs3: " 中。它太大了,無法顯示,但您仍然可以",
 9 |     lfs4: "下載",
10 |     lfs5: "它。",
11 |     lfs6: "Git LFS 詳細資訊",
12 |     lfs7: "指標大小",
13 |     lfs8: "檔案大小",
14 |     lfs9: "原始指標檔案",
15 |     lfs10: "Git大檔案儲存(LFS)將大檔案替換為Git內部的文字指標,同時將檔案內容儲存在遠端伺服器上。",
16 |     lfs11: "更多資訊",
17 |     preview: "預覽",
18 |     edit: "編輯",
19 |     likes: "收藏",
20 |     hasLikes: "已收藏",
21 |     tooLargeFile: "檔案過大無法顯示,您可以查看",
22 |     tooLargeFile2: "原始版本",
23 |     tooLargeFile3:"",
24 |     deleteFile: "刪除檔案",
25 |     deleteFileConfirm: "確定要刪除此檔案嗎?",
26 | }


--------------------------------------------------------------------------------
/frontend/src/locales/zh_hant_js/spaces.js:
--------------------------------------------------------------------------------
1 | export const spaces = {
2 |   title: "應用空間",
3 |     placeholder: "應用空間名稱",
4 |     tips:"創建可互動的機器學習Demo",
5 |     associated:"關聯空間",
6 |     sdkPlaceholder:'選擇空間類型'
7 | }


--------------------------------------------------------------------------------
/frontend/src/locales/zh_hant_js/sshKey.js:
--------------------------------------------------------------------------------
 1 | export const sshKey = {
 2 |   desc: "SSH 金鑰用於通過 SSH 進行 Git 操作的身分驗證。在此新增您的公鑰以安全地連線到您的代碼倉庫。",
 3 |     addSshKey: "新增 SSH Key",
 4 |     noKeyTips: "現在還沒有新增SSH key到您的帳戶",
 5 |     sshKeyName: "SSH Key 名稱",
 6 |     sshKeyContent: "SSH Key 內容",
 7 |     nameWarning: "請您填寫SSH Key 名稱",
 8 |     contentWarning: "請您填寫SSH Key 內容",
 9 |     sureDelKey: "你確定要從你的帳戶中刪除此金鑰嗎?此操作無法撤銷。",
10 |     delKeyName: "刪除 Key {value}",
11 |     addedOn: "於 {year}年{month}月{day}日新增",
12 |     addedMinutesAgo: "{minutes} 分鐘前新增",
13 |     addedHoursAgo: "{hours} 小時前新增",
14 |     addedDaysAgo: "{days} 天前新增"
15 | }


--------------------------------------------------------------------------------
/frontend/src/locales/zh_hant_js/tags.js:
--------------------------------------------------------------------------------
 1 | export const tags = {
 2 |   computer_vision: "計算機視覺",
 3 |     natural_language_processing: "自然語言處理",
 4 |     audio_processing: "語音處理",
 5 |     multimodal: "多模態",
 6 |     text_processing: "文本處理",
 7 |     graphics: "圖像",
 8 |     audio: "音訊",
 9 |     video: "影片",
10 | }


--------------------------------------------------------------------------------
/frontend/src/locales/zh_hant_js/user_sessions.js:
--------------------------------------------------------------------------------
1 | export const user_sessions = {
2 |   expiredTitle: '登錄狀態失效',
3 |     expiredDesc: '登錄已失效,請點擊重新登錄',
4 |     reLogin: '重新登錄',
5 |     cancelLogin: '登出',
6 |     cancel: '取消'
7 | }
8 | 
9 | 


--------------------------------------------------------------------------------
/frontend/src/locales/zh_hant_js/widgets.js:
--------------------------------------------------------------------------------
1 | export const widgets = {
2 |   onlineDemo: "線上體驗",
3 |     testInput: "測試內容",
4 |     testOutput: "測試結果",
5 |     wordsNumber: "單詞數",
6 |     runTest: "執行測試",
7 |     timeCost: "模型推理耗時",
8 |     liabilityExemption: "結果由人工智能模型生成,不代表本平台的觀點、立場或態度,請合理友善地使用生成內容"
9 | }


--------------------------------------------------------------------------------
/frontend/src/locales/zh_js/accessToken.js:
--------------------------------------------------------------------------------
 1 | export const accessToken = {
 2 |   title: "用户 Access Token",
 3 |   desc: "Access Tokens 主要用于验证您的身份,允许应用程序基于Token权限执行操作。请不要与任何人分享您的访问令牌。",
 4 |   refresh: "刷新 Access Token",
 5 |   refreshWarning: "刷新之后现有的 Access Token 将会失效,确认继续吗?",
 6 |   confirm: "继续刷新",
 7 |   cancelInfo: "操作已取消",
 8 | 
 9 |   starshipTitle: "Starship API Keys",
10 |   starshipDesc: "Starship API Key 用于授权您对 Starship 服务的访问",
11 |   starshipRefresh: "刷新",
12 |   starshipAddToken: "新建 API Key",
13 |   starshipAccessTokenName: "Starship API Key Name",
14 |   starshipAccessTokenValue: "Starship API Key Value",
15 |   starshipNameMissing: "API Key name 缺失",
16 | 
17 |   syncTitle: "多源同步 Token",
18 |   syncDesc: "多源同步 Token 用于授权您对多源同步服务的访问",
19 |   syncRefresh: "刷新 Token",
20 |   syncRefreshWarning: "刷新后现有的 Token 将会失效,确认继续吗?",
21 |   syncAddToken: "新建 Token"
22 | }


--------------------------------------------------------------------------------
/frontend/src/locales/zh_js/billing.js:
--------------------------------------------------------------------------------
 1 | export const billing = {
 2 |   title: '费用账单',
 3 |   balance: '账户可用额度',
 4 |   inference: '推理实例',
 5 |   instanceID: '实例id',
 6 |   createTime: '创建时间',
 7 |   usageTime: '总时长(分)',
 8 |   cost: '费用(元)',
 9 |   status: '状态',
10 |   details: '明细',
11 |   total: '总计',
12 |   refresh: '刷新',
13 |   instanceBilling: '实例计费',
14 |   billing: '计费'
15 | }
16 | 


--------------------------------------------------------------------------------
/frontend/src/locales/zh_js/comment.js:
--------------------------------------------------------------------------------
1 | export const comment = {
2 |   sureDel: "确认删除此评论?",
3 |   createComment: "添加评论",
4 | }


--------------------------------------------------------------------------------
/frontend/src/locales/zh_js/components.js:
--------------------------------------------------------------------------------
1 | export const components = {
2 |   upload: {
3 |     click_to_upload: "点击上传",
4 |     or_drag_file: "或拖拽文件到这里",
5 |     upload_type: "支持 {accept} 类型文件上传",
6 |   }
7 | }


--------------------------------------------------------------------------------
/frontend/src/locales/zh_js/error.js:
--------------------------------------------------------------------------------
 1 | export const errors_page = {
 2 |   not_found: {
 3 |     title: '无法访问网页',
 4 |     desc: '抱歉,OpenCSG找不到该网页。该网页或许由于产品更新已被删除,或者您的网址不正确',
 5 |     back: '返回',
 6 |     home: '回到首页',
 7 |   },
 8 |   unauthorized: {
 9 |     title: '暂无权限',
10 |     desc: '请联系管理员授权',
11 |   },
12 |   login_failed: {
13 |     title: '登录失败',
14 |     default_msg: '未知登录错误,请联系管理员',
15 |     back_to_homepage: '回到首页',
16 |     relogin: '重新登录',
17 |   },
18 |   serverError: {
19 |     title: '服务器错误 {errorCode}'
20 |   }
21 | }
22 | 


--------------------------------------------------------------------------------
/frontend/src/locales/zh_js/languages.js:
--------------------------------------------------------------------------------
 1 | export const languages = {
 2 |   Chinese: '中文',
 3 |   English: '英文',
 4 |   French: '法文',
 5 |   German: '德文',
 6 |   Italian: '意大利文',
 7 |   Japanese: '日文',
 8 |   Korean: '韩文',
 9 |   Spanish: '西班牙文',
10 |   Portuguese: '葡萄牙文',
11 |   Russian: '俄文',
12 |   Arabic: '阿拉伯文',
13 |   ChineseTraditional: '繁体中文',
14 |   ChineseSimplified: '简体中文',
15 |   Hindi: '印地文',
16 |   Indonesian: '印尼文',
17 |   Malay: '马来文',
18 |   Vietnamese: '越南文',
19 |   Turkish: '土耳其文',
20 |   Dutch: '荷兰文',
21 |   Polish: '波兰文',
22 |   Swedish: '瑞典文'
23 | }


--------------------------------------------------------------------------------
/frontend/src/locales/zh_js/repo.js:
--------------------------------------------------------------------------------
 1 | export const repo = {
 2 |   edit: {
 3 |     fileName: "文件名",
 4 |     main: "直接提交到 main 分支",
 5 |     submit: "提交更新",
 6 |     desc: "提供更多描述",
 7 |     update: "更新文件",
 8 |     cancel: "取消",
 9 |   },
10 |   source: {
11 |     sync: "同步",
12 |     syncButton: "立即同步",
13 |     syncing: "同步中",
14 |     syncDiff: "同步差异",
15 |     all: "显示所有源",
16 |     opencsg: "OpenCSG",
17 |     local: "本地",
18 |     remoteResource: "OpenCSG 远端资源",
19 |     syncCompleted: "本地版本与远端源版本一致",
20 |     needSync: "远端有待同步版本",
21 |     from: "镜像来自",
22 |     checkSyncDiff: "查看同步差异",
23 |     added: "新增",
24 |     removed: "删除",
25 |     modified: "修改",
26 |     syncDiffError: "同步差异获取失败",
27 |     nodiffs: "远端没有更新",
28 |   }
29 | }


--------------------------------------------------------------------------------
/frontend/src/locales/zh_js/resource_console.js:
--------------------------------------------------------------------------------
1 | export const resourceConsole = {
2 |   free: "免费",
3 |   minute: "按需付费",
4 |   yearMonth: "包年包月",
5 |   others:"其他",
6 |   title: "资源管理",
7 |   new:'新建实例',
8 |   instance:'实例'
9 | }


--------------------------------------------------------------------------------
/frontend/src/locales/zh_js/rule.js:
--------------------------------------------------------------------------------
 1 | export const rule = {
 2 |   notChangable: "设置后不可更改",
 3 |   // nameRule: "2-64个字母数字_.-的字符串,_.-不能并列出现,只能字母开头,字母或者数字结尾",
 4 |   nameRule: "请输入2~10位的字母、数字组合",
 5 |   collectionNameRule: "2-70个字母数字_.-的字符串,_.-不能并列出现,只能字母开头,字母或者数字结尾",
 6 |   lengthLimit: "长度在{min}到{max}字符范围",
 7 |   startWithLetter: "必须以字母开头",
 8 |   endWithLetterOrNumber: "必须以字母或者数字结尾",
 9 |   onlyLetterNumberAndSpecialStr: "只能包含字母、数字与特殊字符_.-",
10 |   specialStrNotTogether: "特殊字符不能并列出现",
11 | }


--------------------------------------------------------------------------------
/frontend/src/locales/zh_js/shared.js:
--------------------------------------------------------------------------------
 1 | export const shared = {
 2 |   commitToMain: "直接提交到 main 分支",
 3 |   dragOr: "拖拽文件到这里或者",
 4 |   uploadFile5Mb: "网页端仅支持5M以内大小文件上传,更大文件请通过Git命令使用LFS上传",
 5 |   onlyFiveFiles: "支持最多 5 个文件",
 6 |   lfs1: "此文件存储在 ",
 7 |   lfs2: "Git LFS",
 8 |   lfs3: " 中。它太大了,无法显示,但您仍然可以",
 9 |   lfs4: "下载",
10 |   lfs5: "它。",
11 |   lfs6: "Git LFS 详细信息",
12 |   lfs7: "指针大小",
13 |   lfs8: "文件大小",
14 |   lfs9: "原始指针文件",
15 |   lfs10: "Git大文件存储(LFS)将大文件替换为Git内部的文本指针,同时将文件内容存储在远程服务器上。",
16 |   lfs11: "更多信息",
17 |   preview: "预览",
18 |   edit: "编辑",
19 |   likes: "收藏",
20 |   hasLikes: "已收藏",
21 |   tooLargeFile: "文件过大无法显示,您可以查看",
22 |   tooLargeFile2: "原始版本",
23 |   tooLargeFile3:"",
24 |   deleteFile: "删除文件",
25 |   deleteFileConfirm: "确定要删除此文件吗?",
26 | }


--------------------------------------------------------------------------------
/frontend/src/locales/zh_js/spaces.js:
--------------------------------------------------------------------------------
1 | export const spaces = {
2 |   title: "应用空间",
3 |   placeholder: "应用空间名字",
4 |   tips:"创建可交互的机器学习Demo",
5 |   associated:"关联空间",
6 |   sdkPlaceholder:'选择空间类型'
7 | }


--------------------------------------------------------------------------------
/frontend/src/locales/zh_js/sshKey.js:
--------------------------------------------------------------------------------
 1 | export const sshKey = {
 2 |   desc: "SSH 密钥用于通过 SSH 进行 Git 操作的身份验证。在此添加您的公钥以安全地连接到您的代码仓库。",
 3 |   addSshKey: "添加 SSH Key",
 4 |   noKeyTips: "现在还没有添加SSH key到您的账户",
 5 |   sshKeyName: "SSH Key 名称",
 6 |   sshKeyContent: "SSH Key 内容",
 7 |   nameWarning: "请您填写SSH Key 名称",
 8 |   contentWarning: "请您填写SSH Key 内容",
 9 |   sureDelKey: "你确定要从你的帐户中删除此密钥吗?此操作无法撤消。",
10 |   delKeyName: "删除 Key {value}",
11 |   addedOn: "于 {year}年{month}月{day}日添加",
12 |   addedMinutesAgo: "{minutes} 分钟前添加",
13 |   addedHoursAgo: "{hours} 小时前添加",
14 |   addedDaysAgo: "{days} 天前添加"
15 | }


--------------------------------------------------------------------------------
/frontend/src/locales/zh_js/tags.js:
--------------------------------------------------------------------------------
 1 | export const tags = {
 2 |   computer_vision: "计算机视觉",
 3 |   natural_language_processing: "自然语言处理",
 4 |   audio_processing: "语音处理",
 5 |   multimodal: "多模态",
 6 |   text_processing: "文本处理",
 7 |   scientific_computing: "科学计算",
 8 |   graphics: "图像",
 9 |   audio: "音频",
10 |   video: "视频",
11 | }


--------------------------------------------------------------------------------
/frontend/src/locales/zh_js/user_sessions.js:
--------------------------------------------------------------------------------
1 | export const user_sessions = {
2 |   expiredTitle: '登录状态失效',
3 |   expiredDesc: '登录已失效,请点击重新登录',
4 |   reLogin: '重新登录',
5 |   cancelLogin: '退出登录'
6 | }
7 | 
8 | 


--------------------------------------------------------------------------------
/frontend/src/locales/zh_js/widgets.js:
--------------------------------------------------------------------------------
1 | export const widgets = {
2 |   onlineDemo: "在线体验",
3 |   testInput: "测试内容",
4 |   testOutput: "测试结果",
5 |   wordsNumber: "单词数",
6 |   runTest: "执行测试",
7 |   timeCost: "模型推理耗时",
8 |   liabilityExemption: "结果由人工智能模型生成,不代表本平台的观点、立场或态度,请合理友善地使用生成内容"
9 | }


--------------------------------------------------------------------------------
/frontend/src/packs/clipboard.js:
--------------------------------------------------------------------------------
 1 | import { ElMessage } from 'element-plus'
 2 | import { useCookies } from "vue3-cookies"
 3 | 
 4 | export const copyToClipboard = async (textToCopy) => {
 5 |   const { cookies } = useCookies()
 6 | 
 7 |   try {
 8 |     if (navigator.clipboard && window.isSecureContext) {
 9 |       await navigator.clipboard.writeText(textToCopy)
10 |     } else {
11 |       const textArea = document.createElement("textarea")
12 |       textArea.value = textToCopy
13 |       textArea.style.position = "absolute"
14 |       textArea.style.left = "-999999px"
15 |       document.body.prepend(textArea)
16 |       textArea.select()
17 |       document.execCommand('copy')
18 |       textArea.remove()
19 |     }
20 |     ElMessage({
21 |       message: cookies.get('locale') === 'en' ? 'Copied!' : '复制成功!',
22 |       type: 'success'
23 |     })
24 |   } catch (error) {
25 |     console.error(error)
26 |   }
27 | }
28 | 


--------------------------------------------------------------------------------
/frontend/src/packs/csrfFetch.js:
--------------------------------------------------------------------------------
1 | const csrfFetch = (url, options={}) => {
2 |   return fetch(url, options)
3 | };
4 | 
5 | export default csrfFetch;
6 | 


--------------------------------------------------------------------------------
/frontend/src/packs/jwtFetch.js:
--------------------------------------------------------------------------------
 1 | import { useCookies } from "vue3-cookies";
 2 | const { cookies } = useCookies();
 3 | 
 4 | const jwtFetch = (url, options = {}, forceLogin = false) => {
 5 |   const jwtToken = cookies.get('user_token')
 6 |   if (forceLogin && !jwtToken) {
 7 |     window.location.href = "/login"
 8 |   }
 9 |   options.headers = options.headers || {}
10 |   if (jwtToken) {
11 |     options.headers = { "Authorization": `Bearer ${jwtToken}`, ...options.headers };
12 |   }
13 |   return fetch(url, options)
14 | };
15 | 
16 | export default jwtFetch;


--------------------------------------------------------------------------------
/frontend/src/packs/persistPinia.js:
--------------------------------------------------------------------------------
 1 | export const customPersistPlugin = (context) => {
 2 |   if (!context.options.persist) return
 3 | 
 4 |   const expirationTime = 2 * 60 * 1000
 5 |   const savedState = JSON.parse(localStorage.getItem(context.options.persist.key) || '{}')
 6 | 
 7 |   if (savedState.timestamp && ((Date.now() - savedState.timestamp) <= expirationTime)) {
 8 |     context.store.$patch(savedState)
 9 |   } else {
10 |     localStorage.removeItem(context.options.persist.key)
11 |   }
12 | 
13 |   context.store.$subscribe((_, state) => {
14 |     const dataToSave = {
15 |       ...state,
16 |       timestamp: Date.now()
17 |     }
18 |     localStorage.setItem(context.options.persist.key, JSON.stringify(dataToSave))
19 |   })
20 | }


--------------------------------------------------------------------------------
/frontend/src/stores/RepoTabStore.js:
--------------------------------------------------------------------------------
 1 | import { defineStore } from 'pinia'
 2 | import { reactive } from 'vue'
 3 | 
 4 | const persistKey = 'repo-tab'
 5 | 
 6 | export const useRepoTabStore = defineStore('repoTab', () => {
 7 |   const repoTab = reactive({
 8 |     repoType: '',
 9 |     namespace: '',
10 |     repoName: '',
11 |     currentPath: '',
12 |     actionName: '',
13 |     currentBranch: '',
14 |     tab: 'summary',
15 |     lastPath: ''
16 |   })
17 | 
18 |   function setRepoTab(obj) {
19 |     Object.assign(repoTab, obj)
20 |   }
21 | 
22 |   const clearStore = () => {
23 |     localStorage.removeItem(persistKey)
24 |   }
25 | 
26 |   return { repoTab, setRepoTab, clearStore }
27 | })


--------------------------------------------------------------------------------
/frontend/src/stores/useGlobalStore.js:
--------------------------------------------------------------------------------
 1 | import { defineStore } from 'pinia';
 2 | 
 3 | export const useGlobalStore = defineStore('app', {
 4 |   state: () => {
 5 |     return {
 6 |       isCollapse:false
 7 |     };
 8 |   },
 9 |   getters: {
10 |     // getCollapse: (state) => state.isCollapse,
11 |   },
12 |   actions: {
13 |     toggleCollapse() {
14 |       this.isCollapse = !this.isCollapse;
15 |     },
16 |     setCollapse(value) {
17 |       this.isCollapse = value;
18 |     }
19 |   },
20 |   persist: true,
21 | });


--------------------------------------------------------------------------------
/frontend/src/views/admin/admin_next.html:
--------------------------------------------------------------------------------
 1 | <!doctype html>
 2 | <html lang="en">
 3 |   <head>
 4 |     <meta charset="UTF-8" />
 5 |     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
 6 |     <title>{{ .metaTitle }}</title>
 7 |     <meta name="keywords" content="{{ .metaKeywords }}">
 8 |     <meta name="description" content="{{ .metaDescription }}" />
 9 |     <link rel="shortcut icon" href="/images/favicon.ico">
10 |     <script>
11 |       const CSGHUB_SERVER = "{{ .csghubServer }}";
12 |       const DEFAULT_TAGS = "[]";
13 |       const ON_PREMISE = "{{ .onPremise }}";
14 |       const ENABLE_HTTPS = "{{ .enableHttps }}";
15 |     </script>
16 |   </head>
17 |   <body class="h-full">
18 |     <div id="admin" />
19 |     <script type="module" src="/src/admin.js"></script>
20 |   </body>
21 | </html>
22 | 


--------------------------------------------------------------------------------
/frontend/src/views/admin/index.html:
--------------------------------------------------------------------------------
1 | {{ define "admin_content" }}
2 | <router-view />
3 | {{ end }}


--------------------------------------------------------------------------------
/frontend/src/views/codes/index.html:
--------------------------------------------------------------------------------
 1 | {{ define "content" }}
 2 | <repo-cards
 3 |   :task-tags='"[]"'
 4 |   :framework-tags='"[]"'
 5 |   :language-tags='"[]"'
 6 |   :license-tags='"[]"'
 7 |   repo-type="code"
 8 | >
 9 | </repo-cards>
10 | {{ end }}
11 | 


--------------------------------------------------------------------------------
/frontend/src/views/codes/new.html:
--------------------------------------------------------------------------------
1 | {{ define "content" }}
2 | <div class="relative w-full h-full bg-white py-[60px]">
3 |   <new-code
4 |     :licenses="{{ .licenses }}"
5 |   ></new-code>
6 | </div>
7 | {{ end }}
8 | 
9 | 


--------------------------------------------------------------------------------
/frontend/src/views/codes/show.html:
--------------------------------------------------------------------------------
 1 | {{ define "content" }}
 2 | <div class="bg-white">
 3 |   <repo-detail
 4 |     repo-type="code"
 5 |     default-tab="{{ .defaultTab }}"
 6 |     action-name="{{ .actionName }}"
 7 |     namespace="{{ .namespace }}"
 8 |     repo-name="{{ .codeName }}"
 9 |     current-branch="{{ .currentBranch }}"
10 |     current-path="{{ .currentPath }}"
11 |     commit-id="{{ .commitId }}"
12 |   ></repo-detail>
13 | </div>
14 | {{ end }}


--------------------------------------------------------------------------------
/frontend/src/views/collections/index.html:
--------------------------------------------------------------------------------
1 | {{ define "content" }}
2 | <div class="relative w-full h-full bg-white pt-[32px] pb-[60px]">
3 |   <collection-index />
4 | </div>
5 | {{ end }}
6 | 


--------------------------------------------------------------------------------
/frontend/src/views/collections/new.html:
--------------------------------------------------------------------------------
1 | {{ define "content" }}
2 | <div class="relative h-[1150px] sm:h-auto">
3 |   <div class="sm:w-[95%] py-[60px]">
4 |     <new-collection>
5 |     </new-collection>
6 |   </div>
7 | </div>
8 | {{ end }}
9 | 


--------------------------------------------------------------------------------
/frontend/src/views/collections/show.html:
--------------------------------------------------------------------------------
 1 | {{ define "content" }}
 2 | <div class="bg-white">
 3 |   <collections-detail
 4 |     collections-id = "{{ .collectionsId }}"
 5 |     path = "{{ .path }}"
 6 |   >
 7 |   </collections-detail>
 8 | </div>
 9 | {{ end }}
10 | 


--------------------------------------------------------------------------------
/frontend/src/views/datapipelines/index.html:
--------------------------------------------------------------------------------
1 | {{ define "content" }}
2 | <router-view />
3 | {{ end }}
4 | 


--------------------------------------------------------------------------------
/frontend/src/views/datasets/index.html:
--------------------------------------------------------------------------------
 1 | {{ define "content" }}
 2 | <repo-cards
 3 |   :task-tags='"[]"'
 4 |   :framework-tags='"[]"'
 5 |   :language-tags='"[]"'
 6 |   :license-tags='"[]"'
 7 |   repo-type="dataset"
 8 | >
 9 | </repo-cards>
10 | {{ end }}
11 | 


--------------------------------------------------------------------------------
/frontend/src/views/datasets/new.html:
--------------------------------------------------------------------------------
1 | {{ define "content" }}
2 | <div class="relative w-full h-full bg-white py-[60px]">
3 |   <new-dataset
4 |     :licenses="{{ .licenses }}"
5 |   ></new-dataset>
6 | </div>
7 | {{ end }}
8 | 
9 | 


--------------------------------------------------------------------------------
/frontend/src/views/datasets/show.html:
--------------------------------------------------------------------------------
 1 | {{ define "content" }}
 2 | <div class="bg-white">
 3 |   <repo-detail
 4 |     repo-type="dataset"
 5 |     default-tab="{{ .defaultTab }}"
 6 |     action-name="{{ .actionName }}"
 7 |     namespace="{{ .namespace }}"
 8 |     repo-name="{{ .datasetName }}"
 9 |     current-branch="{{ .currentBranch }}"
10 |     current-path="{{ .currentPath }}"
11 |     commit-id="{{ .commitId }}"
12 |   ></repo-detail>
13 | </div>
14 | {{ end }}


--------------------------------------------------------------------------------
/frontend/src/views/endpoints/new.html:
--------------------------------------------------------------------------------
1 | {{ define "content" }}
2 | <div class="relative w-full h-full bg-white py-[60px]">
3 |   <new-endpoint namespace="{{ .currentUser.Name }}" />
4 | </div>
5 | {{ end }}
6 | 


--------------------------------------------------------------------------------
/frontend/src/views/endpoints/show.html:
--------------------------------------------------------------------------------
 1 | {{ define "content" }}
 2 | <div class="bg-white">
 3 |   <endpoint-detail
 4 |     repo-type="endpoint"
 5 |     default-tab="{{ .defaultTab }}"
 6 |     action-name="{{ .actionName }}"
 7 |     namespace="{{ .namespace }}"
 8 |     model-name="{{ .modelName }}"
 9 |     current-branch="{{ .currentBranch }}"
10 |     current-path="{{ .currentPath }}"
11 |     endpoint-id="{{ .endpointId }}"
12 |   ></endpoint-detail>
13 | </div>
14 | {{ end }}
15 | 


--------------------------------------------------------------------------------
/frontend/src/views/errors/login_failed.html:
--------------------------------------------------------------------------------
1 | {{ define "content" }}
2 |   <login-failed />
3 | {{ end }}


--------------------------------------------------------------------------------
/frontend/src/views/errors/server_error.html:
--------------------------------------------------------------------------------
1 | {{ define "content" }}
2 |   <server-error />
3 | {{ end }}


--------------------------------------------------------------------------------
/frontend/src/views/evaluations/new.html:
--------------------------------------------------------------------------------
1 | {{ define "content" }}
2 | <div class="relative w-full h-full bg-white py-[60px]">
3 |   <new-evaluation namespace="{{ .currentUser.Name }}" />
4 | </div>
5 | {{ end }}
6 | 


--------------------------------------------------------------------------------
/frontend/src/views/evaluations/show.html:
--------------------------------------------------------------------------------
1 | {{ define "content" }}
2 | <div class="bg-white">
3 |   <evaluation-detail
4 |     evaluation-id="{{ .evaluationId }}"
5 |   ></evaluation-detail>
6 | </div>
7 | {{ end }}
8 | 


--------------------------------------------------------------------------------
/frontend/src/views/finetunes/new.html:
--------------------------------------------------------------------------------
1 | {{ define "content" }}
2 | <div class="relative w-full h-full bg-white py-[60px]">
3 |   <new-finetune namespace="{{ .currentUser.Name }}" />
4 | </div>
5 | {{ end }}
6 | 


--------------------------------------------------------------------------------
/frontend/src/views/finetunes/show.html:
--------------------------------------------------------------------------------
 1 | {{ define "content" }}
 2 | <div class="bg-white">
 3 |   <finetune-detail
 4 |     repo-type="finetune"
 5 |     namespace="{{ .namespace }}"
 6 |     model-name="{{ .modelName }}"
 7 |     finetune-name="{{ .finetuneName }}"
 8 |     finetune-id="{{ .finetuneId }}"
 9 |     path="{{ .currentPath }}"
10 |   >
11 |   </finetune-detail>
12 | </div>
13 | {{ end }}
14 | 


--------------------------------------------------------------------------------
/frontend/src/views/home/index.html:
--------------------------------------------------------------------------------
1 | {{ define "content" }}
2 | <hello-world msg="Home page" server-msg="{{ .serverMsg }}" />
3 | {{ end }}
4 | 


--------------------------------------------------------------------------------
/frontend/src/views/layouts/footer.html:
--------------------------------------------------------------------------------
1 | {{ define "layouts/footer.html" }}
2 | <on-premise-footer />
3 | {{ end }}
4 | 


--------------------------------------------------------------------------------
/frontend/src/views/layouts/navbar.html:
--------------------------------------------------------------------------------
1 | {{ define "layouts/navbar.html" }}
2 | <div class="bg-white sticky top-0 z-[999]">
3 |   <Navbar logo="/images/OpenCSG_logo.svg" />
4 | </div>
5 | {{ end }}
6 | 


--------------------------------------------------------------------------------
/frontend/src/views/mcp_servers/deploy.html:
--------------------------------------------------------------------------------
 1 | {{ define "content" }}
 2 | <div class="relative w-full h-full bg-white py-[60px]">
 3 |   <deploy-mcp-server
 4 |     :licenses="{{ .licenses }}"
 5 |     mcp-server-name="{{ .mcpServerName }}"
 6 |     namespace="{{ .namespace }}"
 7 |   >
 8 |   </deploy-mcp-server>
 9 | </div>
10 | {{ end }}
11 | 


--------------------------------------------------------------------------------
/frontend/src/views/mcp_servers/index.html:
--------------------------------------------------------------------------------
 1 | {{ define "content" }}
 2 | <repo-cards
 3 |   :task-tags='"[]"'
 4 |   :framework-tags='"[]"'
 5 |   :language-tags='"[]"'
 6 |   :license-tags='"[]"'
 7 |   repo-type="mcp"
 8 | >
 9 | </repo-cards>
10 | {{ end }}
11 | 


--------------------------------------------------------------------------------
/frontend/src/views/mcp_servers/new.html:
--------------------------------------------------------------------------------
1 | {{ define "content" }}
2 | <div class="relative w-full h-full bg-white py-[60px]">
3 |   <new-mcp-server
4 |     :licenses="{{ .licenses }}"
5 |   ></new-mcp-server>
6 | </div>
7 | {{ end }}
8 | 


--------------------------------------------------------------------------------
/frontend/src/views/mcp_servers/show.html:
--------------------------------------------------------------------------------
 1 | {{ define "content" }}
 2 | <div class="bg-white">
 3 |   <repo-detail
 4 |     repo-type="mcp"
 5 |     default-tab="{{ .defaultTab }}"
 6 |     action-name="{{ .actionName }}"
 7 |     namespace="{{ .namespace }}"
 8 |     repo-name="{{ .mcpServerName }}"
 9 |     current-branch="{{ .currentBranch }}"
10 |     current-path="{{ .currentPath }}"
11 |     commit-id="{{ .commitId }}"
12 |   ></repo-detail>
13 | </div>
14 | {{ end }}


--------------------------------------------------------------------------------
/frontend/src/views/mcp_servers/tools.html:
--------------------------------------------------------------------------------
1 | {{ define "content" }}
2 | <mcp-tools></mcp-tools>
3 | {{ end }}
4 | 


--------------------------------------------------------------------------------
/frontend/src/views/models/index.html:
--------------------------------------------------------------------------------
 1 | {{ define "content" }}
 2 | <repo-cards
 3 |   :task-tags='"[]"'
 4 |   :framework-tags='"[]"'
 5 |   :language-tags='"[]"'
 6 |   :license-tags='"[]"'
 7 |   repo-type="model"
 8 | >
 9 | </repo-cards>
10 | {{ end }}
11 | 


--------------------------------------------------------------------------------
/frontend/src/views/models/new.html:
--------------------------------------------------------------------------------
1 | {{ define "content" }}
2 | <div class="relative w-full h-full bg-white py-[60px]">
3 |   <new-model
4 |     :licenses="{{ .licenses }}"
5 |   >
6 |   </new-model>
7 | </div>
8 | {{ end }}
9 | 


--------------------------------------------------------------------------------
/frontend/src/views/models/show.html:
--------------------------------------------------------------------------------
 1 | {{ define "content" }}
 2 | <div class="bg-white">
 3 |   <repo-detail
 4 |     repo-type="model"
 5 |     default-tab="{{ .defaultTab }}"
 6 |     action-name="{{ .actionName }}"
 7 |     namespace="{{ .namespace }}"
 8 |     repo-name="{{ .modelName }}"
 9 |     current-branch="{{ .currentBranch }}"
10 |     current-path="{{ .currentPath }}"
11 |     commit-id="{{ .commitId }}"
12 |   ></repo-detail>
13 | </div>
14 | {{ end }}
15 | 


--------------------------------------------------------------------------------
/frontend/src/views/organizations/new.html:
--------------------------------------------------------------------------------
 1 | {{ define "content" }}
 2 | <div class="relative h-[1150px] sm:h-[750px]">
 3 |   <img src="/images/new_organization_bg.png" class="h-full w-full object-cover">
 4 |   <div class="sm:w-[95%] absolute top-[108px] sm:top-[67px] left-1/2 translate-x-[-50%]">
 5 |     <new-organization
 6 |       current-user-profile="{{ .currentUser }}">
 7 |     </new-organization>
 8 |   </div>
 9 | </div>
10 | {{ end }}
11 | 


--------------------------------------------------------------------------------
/frontend/src/views/organizations/settings.html:
--------------------------------------------------------------------------------
1 | {{ define "content" }}
2 | <div class="bg-white">
3 |   <organization-settings
4 |     name="{{ .name }}"
5 |     action="{{ .action }}"
6 |   ></organization-settings>
7 | </div>
8 | {{ end }}


--------------------------------------------------------------------------------
/frontend/src/views/organizations/show.html:
--------------------------------------------------------------------------------
1 | {{ define "content" }}
2 | <div class="bg-white">
3 |   <organization-detail
4 |     name="{{ .name }}"
5 |   ></organization-detail>
6 | </div>
7 | {{ end }}


--------------------------------------------------------------------------------
/frontend/src/views/profile/likes.html:
--------------------------------------------------------------------------------
 1 | {{ define "content" }}
 2 |   <div class="flex justify-center lg:flex-col rounded-md md:px-5 page-responsive-width m-auto bg-white">
 3 |     <div class="md:mb-[24px] border-r lg:border-r-0 sm:bg-white md:bg-white">
 4 |       <profile name="{{ .user.Name }}"
 5 |       ></profile>
 6 |     </div>
 7 |     <div class="grow w-full px-[20px] py-[36px] md:px-0 sm:py-0">
 8 |       <profile-repo-list
 9 |         name="{{ .user.Name }}"
10 |         initiator="{{ .initiator }}"
11 |       ></profile-repo-list>
12 |     </div>
13 |   </div>
14 | {{ end }}
15 | 
16 | 
17 | 


--------------------------------------------------------------------------------
/frontend/src/views/profile/profile.html:
--------------------------------------------------------------------------------
 1 | {{ define "content" }}
 2 |   <div class="flex justify-center lg:flex-col rounded-md md:px-5 page-responsive-width m-auto bg-white">
 3 |     <div class="md:mb-[24px] border-r lg:border-r-0 sm:bg-white md:bg-white">
 4 |       <profile name="{{ .user.Name }}"
 5 |       ></profile>
 6 |     </div>
 7 |     <div class="grow w-full px-[20px] py-[36px] md:px-0 sm:py-0">
 8 |       <profile-repo-list
 9 |         name="{{ .user.Name }}"
10 |         initiator="{{ .initiator }}"
11 |       >
12 |       </profile-repo-list>
13 |     </div>
14 |   </div>
15 | {{ end }}


--------------------------------------------------------------------------------
/frontend/src/views/prompts/index.html:
--------------------------------------------------------------------------------
 1 | {{ define "content" }}
 2 | <div class="flex page-responsive-width m-auto bg-white">
 3 |   <prompts-hub
 4 |     namespace="{{ .namespace }}"
 5 |     name="{{ .name }}"
 6 |     path="{{ .path }}"
 7 |     licenses="{{ .licenses }}"
 8 |   ></prompts-hub>
 9 | </div>
10 | {{ end }}
11 | 


--------------------------------------------------------------------------------
/frontend/src/views/resource-console/index.html:
--------------------------------------------------------------------------------
1 | {{ define "content" }}
2 | <div class="flex md:px-[50px] sm:px-[20px] page-responsive-width m-auto bg-white">
3 |   <resource-console-index></resource-console-index>
4 | </div>
5 | {{ end }}
6 | 


--------------------------------------------------------------------------------
/frontend/src/views/settings/access_token.html:
--------------------------------------------------------------------------------
1 | {{ define "content" }}
2 |   <access-token-settings name="{{ .currentUser.Name }}" ></access-token-settings>
3 | {{ end }}


--------------------------------------------------------------------------------
/frontend/src/views/settings/profile.html:
--------------------------------------------------------------------------------
1 | {{ define "content" }}
2 | <div>
3 |   <p>
4 |     <flash-message :message="{{ .FlashMessage }}" type="error"></flash-message>
5 |   </p>
6 |   <profile-settings></profile-settings>
7 | </div>
8 | {{ end }}
9 | 


--------------------------------------------------------------------------------
/frontend/src/views/settings/ssh_keys.html:
--------------------------------------------------------------------------------
 1 | {{ define "content" }}
 2 | <div>
 3 |   <ssh-key-settings
 4 |     name="{{ .currentUser.Name }}"
 5 |     ssh-keys="{{ .SSHKeys }}"
 6 |   >
 7 |   </ssh-key-settings>
 8 | </div>
 9 | {{ end }}
10 | 


--------------------------------------------------------------------------------
/frontend/src/views/settings/starship_access_token.html:
--------------------------------------------------------------------------------
1 | {{ define "content" }}
2 | <div>
3 |   <starship-access-token-settings
4 |     name="{{ .currentUser.Name }}"
5 |   ></starship-access-token-settings>
6 | </div>
7 | {{ end }}


--------------------------------------------------------------------------------
/frontend/src/views/settings/sync_access_token.html:
--------------------------------------------------------------------------------
1 | {{ define "content" }}
2 | <div>
3 |   <sync-access-token-settings
4 |     name="{{ .currentUser.Name }}"
5 |   ></sync-access-token-settings>
6 | </div>
7 | {{ end }}


--------------------------------------------------------------------------------
/frontend/src/views/spaces/index.html:
--------------------------------------------------------------------------------
1 | {{ define "content" }}
2 | <repo-cards
3 |   repo-type="space"
4 | >
5 | </repo-cards>
6 | {{ end }}
7 | 


--------------------------------------------------------------------------------
/frontend/src/views/spaces/new.html:
--------------------------------------------------------------------------------
1 | {{ define "content" }}
2 | <div class="relative w-full h-full bg-white py-[60px]">
3 |   <new-application-space
4 |     :licenses="{{ .licenses }}"
5 |   >
6 |   </new-application-space>
7 | </div>
8 | {{ end }}
9 | 


--------------------------------------------------------------------------------
/frontend/src/views/spaces/show.html:
--------------------------------------------------------------------------------
 1 | {{ define "content" }}
 2 | <div class="bg-white">
 3 |   <application-space-detail
 4 |     repo-type="space"
 5 |     default-tab="{{ .defaultTab }}"
 6 |     action-name="{{ .actionName }}"
 7 |     namespace="{{ .namespace }}"
 8 |     repo-name="{{ .spaceName }}"
 9 |     current-branch="{{ .currentBranch }}"
10 |     current-path="{{ .currentPath }}"
11 |     commit-id="{{ .commitId }}"
12 |   ></application-space-detail>
13 | </div>
14 | {{ end }}


--------------------------------------------------------------------------------
/frontend/vitest.config.js:
--------------------------------------------------------------------------------
 1 | import { defineConfig } from 'vitest/config'
 2 | import vue from '@vitejs/plugin-vue'
 3 | import path from 'path'
 4 | import { fileURLToPath } from 'url'
 5 | 
 6 | const __dirname = path.dirname(fileURLToPath(import.meta.url))
 7 | 
 8 | export default defineConfig({
 9 |   plugins: [vue()],
10 |   test: {
11 |     setupFiles: ['./setupTests.js'],
12 |     environment: 'jsdom',
13 |     globals: true,
14 |     include: ['src/**/*.{test,spec}.{js,jsx}'],
15 |     alias: {
16 |       '@': path.resolve(__dirname, './src')
17 |     },
18 |     // deps: {
19 |     //   inline: ['element-plus'],
20 |     // },
21 |     server: {
22 |       deps: {
23 |         inline: ['element-plus', 'vue-i18n', 'pinia'],
24 |       }
25 |     },
26 |   }
27 | })


--------------------------------------------------------------------------------
/internal/handlers/admin/.keep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/internal/handlers/admin/.keep


--------------------------------------------------------------------------------
/internal/handlers/frontend/ping.go:
--------------------------------------------------------------------------------
 1 | package frontendHandlers
 2 | 
 3 | import (
 4 | 	"time"
 5 | 
 6 | 	"github.com/gin-gonic/gin"
 7 | )
 8 | 
 9 | type PingHandler interface {
10 | 	Ping(c *gin.Context)
11 | }
12 | 
13 | type PingHandlerImpl struct{}
14 | 
15 | func NewPingHandler() PingHandler {
16 | 	return &PingHandlerImpl{}
17 | }
18 | 
19 | func (i *PingHandlerImpl) Ping(c *gin.Context) {
20 | 	data := make(map[string]string, 3)
21 | 	data["message"] = "pong"
22 | 	data["status"] = "ok"
23 | 	data["time"] = time.Now().Format(time.DateTime)
24 | 
25 | 	c.JSON(200, data)
26 | }
27 | 


--------------------------------------------------------------------------------
/internal/handlers/render/codes.go:
--------------------------------------------------------------------------------
 1 | package renderHandlers
 2 | 
 3 | type CodeHandler interface {
 4 | 	BaseHandler
 5 | }
 6 | 
 7 | type CodeHandlerImpl struct {
 8 | 	BaseHandlerImpl
 9 | }
10 | 
11 | func NewCodeHandler() CodeHandler {
12 | 	return &CodeHandlerImpl{
13 | 		BaseHandlerImpl{
14 | 			resourceType: "codes",
15 | 		},
16 | 	}
17 | }
18 | 


--------------------------------------------------------------------------------
/internal/handlers/render/datapipelines.go:
--------------------------------------------------------------------------------
 1 | package renderHandlers
 2 | 
 3 | import (
 4 | 	"github.com/gin-gonic/gin"
 5 | )
 6 | 
 7 | type DatapipelinesHandler interface {
 8 | 	Index(ctx *gin.Context)
 9 | }
10 | 
11 | type DatapipelinesHandlerImpl struct {
12 | 	isSmallFooter bool
13 | }
14 | 
15 | func NewDatapipelinesHandler() DatapipelinesHandler {
16 | 	return &DatapipelinesHandlerImpl{
17 | 		isSmallFooter: true,
18 | 	}
19 | }
20 | 
21 | func (i *DatapipelinesHandlerImpl) Index(ctx *gin.Context) {
22 | 	data := map[string]interface{}{
23 | 		"isSmallFooter": i.isSmallFooter,
24 | 	}
25 | 	RenderBaseInstance.RenderTemplate(ctx, "datapipelines_index", data)
26 | }
27 | 


--------------------------------------------------------------------------------
/internal/handlers/render/datasets.go:
--------------------------------------------------------------------------------
 1 | package renderHandlers
 2 | 
 3 | type DatasetHandler interface {
 4 | 	BaseHandler
 5 | }
 6 | 
 7 | type DatasetHandlerImpl struct {
 8 | 	BaseHandlerImpl
 9 | }
10 | 
11 | func NewDatasetHandler() DatasetHandler {
12 | 	return &DatasetHandlerImpl{
13 | 		BaseHandlerImpl{
14 | 			resourceType: "datasets",
15 | 		},
16 | 	}
17 | }
18 | 


--------------------------------------------------------------------------------
/internal/handlers/render/endpoint.go:
--------------------------------------------------------------------------------
 1 | package renderHandlers
 2 | 
 3 | type EndpointHandler interface {
 4 | 	BaseHandler
 5 | }
 6 | 
 7 | type EndpointHandlerImpl struct {
 8 | 	BaseHandlerImpl
 9 | }
10 | 
11 | func NewEndpointHandler() EndpointHandler {
12 | 	return &EndpointHandlerImpl{
13 | 		BaseHandlerImpl{
14 | 			resourceType: "endpoints",
15 | 		},
16 | 	}
17 | }
18 | 


--------------------------------------------------------------------------------
/internal/handlers/render/evaluation.go:
--------------------------------------------------------------------------------
 1 | package renderHandlers
 2 | 
 3 | import (
 4 | 	"github.com/gin-gonic/gin"
 5 | )
 6 | 
 7 | type EvaluationHandler interface {
 8 | 	New(ctx *gin.Context)
 9 | 	Show(ctx *gin.Context)
10 | }
11 | 
12 | type EvaluationHandlerImpl struct {
13 | 	isSmallFooter bool
14 | }
15 | 
16 | func NewEvaluationHandler() EvaluationHandler {
17 | 	return &EvaluationHandlerImpl{
18 | 		isSmallFooter: true,
19 | 	}
20 | }
21 | 
22 | func (i *EvaluationHandlerImpl) New(ctx *gin.Context) {
23 | 	data := map[string]interface{}{
24 | 		"isSmallFooter": i.isSmallFooter,
25 | 	}
26 | 	RenderBaseInstance.RenderTemplate(ctx, "evaluations_new", data)
27 | }
28 | 
29 | func (i *EvaluationHandlerImpl) Show(ctx *gin.Context) {
30 | 	data := map[string]interface{}{
31 | 		"evaluationId":  ctx.Param("id"),
32 | 		"isSmallFooter": i.isSmallFooter,
33 | 	}
34 | 	RenderBaseInstance.RenderTemplate(ctx, "evaluations_show", data)
35 | }
36 | 


--------------------------------------------------------------------------------
/internal/handlers/render/finetune.go:
--------------------------------------------------------------------------------
 1 | package renderHandlers
 2 | 
 3 | type FinetuneHandler interface {
 4 | 	BaseHandler
 5 | }
 6 | 
 7 | type FinetuneHandlerImpl struct {
 8 | 	BaseHandlerImpl
 9 | }
10 | 
11 | func NewFinetuneHandler() FinetuneHandler {
12 | 	return &FinetuneHandlerImpl{
13 | 		BaseHandlerImpl{
14 | 			resourceType: "finetunes",
15 | 		},
16 | 	}
17 | }
18 | 


--------------------------------------------------------------------------------
/internal/handlers/render/mcp_server.go:
--------------------------------------------------------------------------------
 1 | package renderHandlers
 2 | 
 3 | type McpServerHandler interface {
 4 | 	BaseHandler
 5 | }
 6 | 
 7 | type McpServerHandlerImpl struct {
 8 | 	BaseHandlerImpl
 9 | }
10 | 
11 | func NewMcpServerHandler() McpServerHandler {
12 | 	return &McpServerHandlerImpl{
13 | 		BaseHandlerImpl{
14 | 			resourceType: "mcp_servers",
15 | 		},
16 | 	}
17 | }
18 | 


--------------------------------------------------------------------------------
/internal/handlers/render/models.go:
--------------------------------------------------------------------------------
 1 | package renderHandlers
 2 | 
 3 | type ModelHandler interface {
 4 | 	BaseHandler
 5 | }
 6 | 
 7 | type ModelHandlerImpl struct {
 8 | 	BaseHandlerImpl
 9 | }
10 | 
11 | func NewModelHandler() ModelHandler {
12 | 	return &ModelHandlerImpl{
13 | 		BaseHandlerImpl{
14 | 			resourceType: "models",
15 | 		},
16 | 	}
17 | }
18 | 


--------------------------------------------------------------------------------
/internal/handlers/render/resource_console.go:
--------------------------------------------------------------------------------
 1 | package renderHandlers
 2 | 
 3 | import (
 4 | 	"github.com/gin-gonic/gin"
 5 | )
 6 | 
 7 | type ResourceConsoleHandler interface {
 8 | 	Index(ctx *gin.Context)
 9 | }
10 | 
11 | type ResourceConsoleHandlerImpl struct {
12 | }
13 | 
14 | func NewResourceConsoleHandler() *ResourceConsoleHandlerImpl {
15 | 	return &ResourceConsoleHandlerImpl{}
16 | }
17 | 
18 | func (i *ResourceConsoleHandlerImpl) Index(ctx *gin.Context) {
19 | 	RenderBaseInstance.RenderTemplate(ctx, "resource_console_index", nil)
20 | }
21 | 


--------------------------------------------------------------------------------
/internal/handlers/render/settings.go:
--------------------------------------------------------------------------------
 1 | package renderHandlers
 2 | 
 3 | import (
 4 | 	"github.com/gin-gonic/gin"
 5 | 	"opencsg.com/portal/internal/svc"
 6 | )
 7 | 
 8 | type SettingHandler interface {
 9 | 	Profile(ctx *gin.Context)
10 | 	AccessToken(ctx *gin.Context)
11 | 	SSHKeys(ctx *gin.Context)
12 | }
13 | 
14 | type SettingHandlerImpl struct {
15 | 	svcCtx *svc.ServiceContext
16 | }
17 | 
18 | func NewSettingHandler(svcCtx *svc.ServiceContext) SettingHandler {
19 | 	return &SettingHandlerImpl{
20 | 		svcCtx: svcCtx,
21 | 	}
22 | }
23 | 
24 | func (i *SettingHandlerImpl) Profile(ctx *gin.Context) {
25 | 
26 | 	RenderBaseInstance.RenderTemplate(ctx, "settings_profile", nil)
27 | }
28 | 
29 | func (i *SettingHandlerImpl) AccessToken(ctx *gin.Context) {
30 | 	RenderBaseInstance.RenderTemplate(ctx, "settings_access_token", nil)
31 | }
32 | 
33 | func (i *SettingHandlerImpl) SSHKeys(ctx *gin.Context) {
34 | 	RenderBaseInstance.RenderTemplate(ctx, "settings_ssh_keys", nil)
35 | }
36 | 


--------------------------------------------------------------------------------
/internal/handlers/render/spaces.go:
--------------------------------------------------------------------------------
 1 | package renderHandlers
 2 | 
 3 | type SpaceHandler interface {
 4 | 	BaseHandler
 5 | }
 6 | 
 7 | type SpaceHandlerImpl struct {
 8 | 	BaseHandlerImpl
 9 | }
10 | 
11 | func NewSpaceHandler() SpaceHandler {
12 | 	return &SpaceHandlerImpl{
13 | 		BaseHandlerImpl{
14 | 			resourceType: "spaces",
15 | 		},
16 | 	}
17 | }
18 | 


--------------------------------------------------------------------------------
/internal/middleware/cache_control.go:
--------------------------------------------------------------------------------
 1 | package middleware
 2 | 
 3 | import (
 4 | 	"strings"
 5 | 
 6 | 	"github.com/gin-gonic/gin"
 7 | )
 8 | 
 9 | func (a *MiddlewareImpl) CacheControlMiddleware() gin.HandlerFunc {
10 | 	return func(c *gin.Context) {
11 | 		if strings.HasPrefix(c.Request.URL.Path, "/assets/") {
12 | 			c.Header("Cache-Control", "public, max-age=2592000")
13 | 		}
14 | 		c.Next()
15 | 	}
16 | }
17 | 


--------------------------------------------------------------------------------
/internal/middleware/middleware.go:
--------------------------------------------------------------------------------
 1 | package middleware
 2 | 
 3 | import (
 4 | 	"github.com/gin-gonic/gin"
 5 | 	"opencsg.com/portal/pkg/server/backend"
 6 | 	"opencsg.com/portal/pkg/utils/jwt"
 7 | )
 8 | 
 9 | type Middleware interface {
10 | 	AuthMiddleware(csghubServer backend.Server) gin.HandlerFunc
11 | 	CheckCurrentUser() gin.HandlerFunc
12 | 	AuthenticateAdminUser() gin.HandlerFunc
13 | 	Log() gin.HandlerFunc
14 | 	CacheControlMiddleware() gin.HandlerFunc
15 | 	ApiCheckCurrentUser() gin.HandlerFunc
16 | 	CheckLicenseActive() gin.HandlerFunc
17 | }
18 | 
19 | type MiddlewareImpl struct {
20 | 	jwtUtils jwt.JwtUtils
21 | }
22 | 
23 | func NewMiddleware() Middleware {
24 | 	return &MiddlewareImpl{
25 | 		jwtUtils: jwt.NewJwtUtils(),
26 | 	}
27 | }
28 | 
29 | var Instance = NewMiddleware()
30 | 


--------------------------------------------------------------------------------
/internal/routes/admin.go:
--------------------------------------------------------------------------------
 1 | package routes
 2 | 
 3 | import (
 4 | 	"github.com/gin-gonic/gin"
 5 | 	"opencsg.com/portal/internal/middleware"
 6 | )
 7 | 
 8 | func registerAdminRoutes(engine *gin.Engine, handlersRegistry *HandlersRegistry) {
 9 | 	adminRoute := engine.Group("/admin_old")
10 | 	adminRoute.Use(middleware.Instance.AuthenticateAdminUser())
11 | 
12 | 	adminRoute.GET("", handlersRegistry.RenderHandler.AdminHandler.Index)
13 | 	adminRoute.GET("/*path", handlersRegistry.RenderHandler.AdminHandler.Index)
14 | 
15 | 	adminNextRoute := engine.Group("/admin_panel")
16 | 	adminNextRoute.Use(middleware.Instance.AuthenticateAdminUser())
17 | 	adminNextRoute.GET("", handlersRegistry.RenderHandler.AdminHandler.IndexNext)
18 | 	adminNextRoute.GET("/*path", handlersRegistry.RenderHandler.AdminHandler.IndexNext)
19 | }
20 | 


--------------------------------------------------------------------------------
/internal/routes/collections.go:
--------------------------------------------------------------------------------
 1 | package routes
 2 | 
 3 | import (
 4 | 	"github.com/gin-gonic/gin"
 5 | )
 6 | 
 7 | func registerCollectionRoutes(engine *gin.Engine, handlersRegistry *HandlersRegistry) {
 8 | 	engine.GET("/collections", handlersRegistry.RenderHandler.CollectionsHandler.Index)
 9 | 	engine.GET("/collections/new", handlersRegistry.RenderHandler.CollectionsHandler.New)
10 | 	engine.GET("/collections/:collections_id", handlersRegistry.RenderHandler.CollectionsHandler.Show)
11 | 	engine.GET("/collections/:collections_id/*path", handlersRegistry.RenderHandler.CollectionsHandler.Show)
12 | }
13 | 


--------------------------------------------------------------------------------
/internal/routes/datapipelines.go:
--------------------------------------------------------------------------------
 1 | package routes
 2 | 
 3 | import (
 4 | 	"github.com/gin-gonic/gin"
 5 | 	"opencsg.com/portal/internal/middleware"
 6 | )
 7 | 
 8 | func registerDatapipelinesRoutes(engine *gin.Engine, handlersRegistry *HandlersRegistry) {
 9 | 	datapipelinesRoute := engine.Group("/datapipelines")
10 | 	datapipelinesRoute.Use(middleware.Instance.CheckCurrentUser())
11 | 	datapipelinesRoute.GET("", handlersRegistry.RenderHandler.DatapipelinesHandler.Index)
12 | 	datapipelinesRoute.GET("/*path", handlersRegistry.RenderHandler.DatapipelinesHandler.Index)
13 | }
14 | 


--------------------------------------------------------------------------------
/internal/routes/error.go:
--------------------------------------------------------------------------------
 1 | package routes
 2 | 
 3 | import (
 4 | 	"github.com/gin-gonic/gin"
 5 | )
 6 | 
 7 | func registerErrorRoutes(engine *gin.Engine, handlersRegistry *HandlersRegistry) {
 8 | 	engine.GET("/errors/not-found", handlersRegistry.RenderHandler.ErrorHandler.NotFound)
 9 | 	engine.GET("/errors/unauthorized", handlersRegistry.RenderHandler.ErrorHandler.Unauthorized)
10 | 	engine.GET("/errors/login-failed", handlersRegistry.RenderHandler.ErrorHandler.LoginFailed)
11 | 	engine.GET("/errors/server-error", handlersRegistry.RenderHandler.ErrorHandler.ServerError)
12 | }
13 | 


--------------------------------------------------------------------------------
/internal/routes/evaluation.go:
--------------------------------------------------------------------------------
 1 | package routes
 2 | 
 3 | import (
 4 | 	"github.com/gin-gonic/gin"
 5 | 	"opencsg.com/portal/internal/middleware"
 6 | )
 7 | 
 8 | func registerEvaluationRoutes(engine *gin.Engine, handlersRegistry *HandlersRegistry) {
 9 | 	evaluationRoutes := engine.Group("/evaluations")
10 | 	evaluationRoutes.Use(middleware.Instance.CheckCurrentUser())
11 | 	evaluationRoutes.GET("/new", handlersRegistry.RenderHandler.EvaluationHandler.New)
12 | 	evaluationRoutes.GET("/:id", handlersRegistry.RenderHandler.EvaluationHandler.Show)
13 | }
14 | 


--------------------------------------------------------------------------------
/internal/routes/finetune.go:
--------------------------------------------------------------------------------
 1 | package routes
 2 | 
 3 | import (
 4 | 	"github.com/gin-gonic/gin"
 5 | 	"opencsg.com/portal/internal/middleware"
 6 | )
 7 | 
 8 | func registerFinetuneRoutes(engine *gin.Engine, handlersRegistry *HandlersRegistry) {
 9 | 	finetuneRoutes := engine.Group("/finetune")
10 | 	finetuneRoutes.Use(middleware.Instance.CheckCurrentUser())
11 | 	finetuneRoutes.GET("/:namespace/:model_name/:finetune_name/:finetune_id", handlersRegistry.RenderHandler.FinetuneHandler.Detail)
12 | 	finetuneRoutes.GET("/:namespace/:model_name/:finetune_name/:finetune_id/*path", handlersRegistry.RenderHandler.FinetuneHandler.Detail)
13 | 	finetuneRoutes.GET("/new", handlersRegistry.RenderHandler.FinetuneHandler.New)
14 | }
15 | 


--------------------------------------------------------------------------------
/internal/routes/home.go:
--------------------------------------------------------------------------------
 1 | package routes
 2 | 
 3 | import (
 4 | 	"github.com/gin-gonic/gin"
 5 | )
 6 | 
 7 | func registerHomeRoutes(engine *gin.Engine, handlersRegistry *HandlersRegistry) {
 8 | 	engine.GET("/", handlersRegistry.RenderHandler.ModelHandler.List)
 9 | }
10 | 


--------------------------------------------------------------------------------
/internal/routes/organization.go:
--------------------------------------------------------------------------------
 1 | package routes
 2 | 
 3 | import (
 4 | 	"github.com/gin-gonic/gin"
 5 | )
 6 | 
 7 | func registerOrganizationRoutes(engine *gin.Engine, handlersRegistry *HandlersRegistry) {
 8 | 	engine.GET("/organizations/:id/edit", handlersRegistry.RenderHandler.OrganizationHandler.Edit)
 9 | 	engine.GET("/organizations/new", handlersRegistry.RenderHandler.OrganizationHandler.New)
10 | 	engine.GET("/organizations/:id", handlersRegistry.RenderHandler.OrganizationHandler.Show)
11 | 	engine.GET("/organizations/:id/members", handlersRegistry.RenderHandler.OrganizationHandler.Members)
12 | }
13 | 


--------------------------------------------------------------------------------
/internal/routes/profile.go:
--------------------------------------------------------------------------------
 1 | package routes
 2 | 
 3 | import (
 4 | 	"github.com/gin-gonic/gin"
 5 | )
 6 | 
 7 | func registerProfileRoutes(engine *gin.Engine, handlersRegistry *HandlersRegistry) {
 8 | 	engine.GET("/profile/:user_id", handlersRegistry.RenderHandler.ProfileHandler.Detail)
 9 | 	engine.GET("/profile/likes/:user_id", handlersRegistry.RenderHandler.ProfileHandler.Likes)
10 | }
11 | 


--------------------------------------------------------------------------------
/internal/routes/prompts.go:
--------------------------------------------------------------------------------
 1 | package routes
 2 | 
 3 | import "github.com/gin-gonic/gin"
 4 | 
 5 | func registerPromptsRoutes(engine *gin.Engine, handlersRegistry *HandlersRegistry) {
 6 | 	engine.GET("/prompts/library/:namespace/:name/:path", handlersRegistry.RenderHandler.PromptsHandler.Index)
 7 | 	engine.GET("/prompts/library/:namespace/:name", handlersRegistry.RenderHandler.PromptsHandler.Index)
 8 | 	engine.GET("/prompts/library", handlersRegistry.RenderHandler.PromptsHandler.Index)
 9 | }
10 | 


--------------------------------------------------------------------------------
/internal/routes/resource_console.go:
--------------------------------------------------------------------------------
 1 | package routes
 2 | 
 3 | import (
 4 | 	"github.com/gin-gonic/gin"
 5 | 	"opencsg.com/portal/internal/middleware"
 6 | )
 7 | 
 8 | func registerResourceConsoleRoutes(engine *gin.Engine, handlersRegistry *HandlersRegistry) {
 9 | 	resourceConsoleRoutes := engine.Group("")
10 | 	resourceConsoleRoutes.Use(middleware.Instance.CheckCurrentUser())
11 | 	resourceConsoleRoutes.GET("/resource-console", handlersRegistry.RenderHandler.ResourceConsoleHandler.Index)
12 | }
13 | 


--------------------------------------------------------------------------------
/internal/routes/session.go:
--------------------------------------------------------------------------------
 1 | package routes
 2 | 
 3 | import (
 4 | 	"github.com/gin-gonic/gin"
 5 | )
 6 | 
 7 | func registerSessionsRoutes(engine *gin.Engine, handlersRegistry *HandlersRegistry) {
 8 | 	engine.GET("/signup", handlersRegistry.RenderHandler.SessionHandler.SignUp)
 9 | 	engine.GET("/login", handlersRegistry.RenderHandler.SessionHandler.Login)
10 | 	engine.GET("/logout", handlersRegistry.RenderHandler.SessionHandler.Logout)
11 | 	engine.GET("/server/callback", handlersRegistry.RenderHandler.SessionHandler.Create)
12 | }
13 | 


--------------------------------------------------------------------------------
/internal/routes/setting.go:
--------------------------------------------------------------------------------
 1 | package routes
 2 | 
 3 | import (
 4 | 	"github.com/gin-gonic/gin"
 5 | 	"opencsg.com/portal/internal/middleware"
 6 | )
 7 | 
 8 | func registerSettingRoutes(engine *gin.Engine, handlersRegistry *HandlersRegistry) {
 9 | 	settingRoute := engine.Group("/settings")
10 | 
11 | 	settingRoute.Use(middleware.Instance.CheckCurrentUser())
12 | 
13 | 	settingRoute.GET("/profile", handlersRegistry.RenderHandler.SettingHandler.Profile)
14 | 	settingRoute.GET("/access-token", handlersRegistry.RenderHandler.SettingHandler.AccessToken)
15 | 	settingRoute.GET("/ssh-keys", handlersRegistry.RenderHandler.SettingHandler.SSHKeys)
16 | }
17 | 


--------------------------------------------------------------------------------
/internal/services/.keep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/internal/services/.keep


--------------------------------------------------------------------------------
/internal/svc/serviceContext.go:
--------------------------------------------------------------------------------
 1 | package svc
 2 | 
 3 | import (
 4 | 	"opencsg.com/portal/config"
 5 | )
 6 | 
 7 | type ServiceContext struct {
 8 | 	// redis
 9 | 	// mq
10 | 	// async
11 | 	// worker
12 | 	// other service will be added here
13 | 	Config *config.Config
14 | }
15 | 
16 | func NewServiceContext(cfg *config.Config) (*ServiceContext, error) {
17 | 	return &ServiceContext{
18 | 		Config: cfg,
19 | 	}, nil
20 | }
21 | 


--------------------------------------------------------------------------------
/pkg/database/migrations/placeholder.sql:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCSGs/csghub/68335feb7046e3e879eb05eb1f9ce1cad2359fc4/pkg/database/migrations/placeholder.sql


--------------------------------------------------------------------------------
/pkg/server/backend/csghubserver/download.go:
--------------------------------------------------------------------------------
 1 | package csghubserver
 2 | 
 3 | import (
 4 | 	"fmt"
 5 | 	"net/http"
 6 | 
 7 | 	"opencsg.com/portal/pkg/server/types"
 8 | )
 9 | 
10 | func (c *CsgHubServer) DownloadFile(req types.DownloadReq) ([]byte, *http.Response, error) {
11 | 	data, resp, err := c.getResponse(
12 | 		"GET",
13 | 		fmt.Sprintf("/%s/%s/%s/resolve/%s?current_user=%s&ref=%s", req.RepoType, req.Namespace, req.Name, req.FilePath, req.CurrentUser, req.Ref),
14 | 		nil,
15 | 		nil,
16 | 	)
17 | 	return data, resp, err
18 | }
19 | 
20 | func (c *CsgHubServer) DownloadFileRaw(req types.DownloadReq) (*types.DownloadFileRawResp, *http.Response, error) {
21 | 	s := new(types.DownloadFileRawResp)
22 | 	resp, err := c.getParsedResponse(
23 | 		"GET",
24 | 		fmt.Sprintf("/%s/%s/%s/raw/%s?current_user=%s&ref=%s", req.RepoType, req.Namespace, req.Name, req.FilePath, req.CurrentUser, req.Ref),
25 | 		nil,
26 | 		nil,
27 | 		s,
28 | 	)
29 | 	return s, resp, err
30 | }
31 | 


--------------------------------------------------------------------------------
/pkg/server/backend/csghubserver/sensitive_check.go:
--------------------------------------------------------------------------------
 1 | package csghubserver
 2 | 
 3 | import (
 4 | 	"encoding/json"
 5 | 	"net/http"
 6 | 
 7 | 	"opencsg.com/portal/pkg/server/types"
 8 | )
 9 | 
10 | // Check if image has sensitive content
11 | func (c *CsgHubServer) ImageSecureCheck(req types.ImageSensitiveCheckReq) (*types.ImageSensitiveCheckResp, *http.Response, error) {
12 | 	checkResp := new(types.ImageSensitiveCheckResp)
13 | 	body, err := json.Marshal(&req)
14 | 	if err != nil {
15 | 		return nil, nil, err
16 | 	}
17 | 	resp, err := c.getParsedResponse(
18 | 		"POST",
19 | 		"/sensitive/image",
20 | 		nil,
21 | 		body,
22 | 		checkResp,
23 | 	)
24 | 	return checkResp, resp, err
25 | }
26 | 


--------------------------------------------------------------------------------
/pkg/server/backend/csghubserver/user.go:
--------------------------------------------------------------------------------
 1 | package csghubserver
 2 | 
 3 | import (
 4 | 	"fmt"
 5 | 	"net/http"
 6 | 
 7 | 	"opencsg.com/portal/pkg/server/types"
 8 | )
 9 | 
10 | func (c *CsgHubServer) GetUserInfo(uuid string) (*types.VerifyJWTTokenResp, *http.Response, error) {
11 | 	userResp := new(types.VerifyJWTTokenResp)
12 | 
13 | 	resp, err := c.getParsedResponse(
14 | 		"GET",
15 | 		fmt.Sprintf("/user/%s?type=uuid", uuid),
16 | 		nil,
17 | 		nil,
18 | 		userResp,
19 | 	)
20 | 	return userResp, resp, err
21 | }
22 | 
23 | func (c *CsgHubServer) GetUserInfoByUsername(username string) (*types.VerifyJWTTokenResp, *http.Response, error) {
24 | 	userResp := new(types.VerifyJWTTokenResp)
25 | 
26 | 	resp, err := c.getParsedResponse(
27 | 		"GET",
28 | 		fmt.Sprintf("/user/%s", username),
29 | 		nil,
30 | 		nil,
31 | 		userResp,
32 | 	)
33 | 	return userResp, resp, err
34 | }
35 | 


--------------------------------------------------------------------------------
/pkg/server/backend/interface.go:
--------------------------------------------------------------------------------
 1 | package backend
 2 | 
 3 | import (
 4 | 	"net/http"
 5 | 
 6 | 	"opencsg.com/portal/pkg/server/types"
 7 | )
 8 | 
 9 | type Server interface {
10 | 	VerifyJWTToken(token string) (*types.User, *http.Response, error)
11 | 	ImageSecureCheck(req types.ImageSensitiveCheckReq) (*types.ImageSensitiveCheckResp, *http.Response, error)
12 | 	CreateJWTToken(req types.CreateJWTReq) (*types.CreateJWTResp, *http.Response, error)
13 | 	DownloadFileRaw(req types.DownloadReq) (*types.DownloadFileRawResp, *http.Response, error)
14 | 	DownloadFile(req types.DownloadReq) ([]byte, *http.Response, error)
15 | 	GetUserInfo(uuid string) (*types.VerifyJWTTokenResp, *http.Response, error)
16 | 	GetUserInfoByUsername(username string) (*types.VerifyJWTTokenResp, *http.Response, error)
17 | }
18 | 


--------------------------------------------------------------------------------
/pkg/server/server.go:
--------------------------------------------------------------------------------
 1 | package server
 2 | 
 3 | import (
 4 | 	"context"
 5 | 
 6 | 	"opencsg.com/portal/config"
 7 | 	"opencsg.com/portal/pkg/server/backend"
 8 | 	"opencsg.com/portal/pkg/server/backend/csghubserver"
 9 | )
10 | 
11 | func NewServer(config *config.Config) (backend.Server, error) {
12 | 	server, err := csghubserver.NewCsgHubServer(
13 | 		context.Background(),
14 | 		config.StarhubServer.BaseURL,
15 | 		config.StarhubServer.APIKey,
16 | 	)
17 | 	if err != nil {
18 | 		return nil, err
19 | 	}
20 | 	return server, nil
21 | }
22 | 


--------------------------------------------------------------------------------
/pkg/server/types/download.go:
--------------------------------------------------------------------------------
 1 | package types
 2 | 
 3 | type RepoType string
 4 | 
 5 | const (
 6 | 	RepoTypeModel   RepoType = "model"
 7 | 	RepoTypeDataset RepoType = "dataset"
 8 | 	RepoTypeSpace   RepoType = "space"
 9 | 	RepoTypeCode    RepoType = "code"
10 | )
11 | 
12 | type DownloadReq struct {
13 | 	RepoType    RepoType `json:"repo_type"`
14 | 	Namespace   string   `json:"namespace"`
15 | 	Name        string   `json:"name"`
16 | 	FilePath    string   `json:"file_path"`
17 | 	CurrentUser string   `json:"current_user"`
18 | 	Ref         string   `json:"ref"`
19 | }
20 | 
21 | type DownloadFileRawResp struct {
22 | 	Message string `json:"msg"`
23 | 	Data    string `json:"data"`
24 | }
25 | 


--------------------------------------------------------------------------------
/pkg/server/types/sensitive.go:
--------------------------------------------------------------------------------
 1 | package types
 2 | 
 3 | type ImageSensitiveCheckResp struct {
 4 | 	Message string `json:"msg"`
 5 | 	Data    string `json:"data"`
 6 | }
 7 | 
 8 | type ImageSensitiveCheckReq struct {
 9 | 	Scenario      string `json:"scenario"`
10 | 	OssBucketName string `json:"oss_bucket_name"`
11 | 	OssObjectName string `json:"oss_object_name"`
12 | }
13 | 


--------------------------------------------------------------------------------
/pkg/server/types/user.go:
--------------------------------------------------------------------------------
 1 | package types
 2 | 
 3 | type UserResp struct {
 4 | 	ID            int64    `json:"id"`
 5 | 	Nickname      string   `json:"nickname"`
 6 | 	Name          string   `json:"username"`
 7 | 	Email         string   `json:"email"`
 8 | 	LoginIdentity string   `json:"uuid"`
 9 | 	Gender        string   `json:"gender"`
10 | 	Roles         []string `json:"roles"`
11 | 	Phone         string   `json:"phone"`
12 | }
13 | 


--------------------------------------------------------------------------------
/pkg/testutils/testutils.go:
--------------------------------------------------------------------------------
1 | package testutils
2 | 


--------------------------------------------------------------------------------
/pkg/types/constants.go:
--------------------------------------------------------------------------------
1 | package types
2 | 
3 | type GlobalConfig struct {
4 | 	ServerBaseUrl string
5 | 	OnPremise     bool
6 | 	EnableHttps   bool
7 | }
8 | 


--------------------------------------------------------------------------------
/pkg/types/enum/enum.go:
--------------------------------------------------------------------------------
 1 | package enum
 2 | 
 3 | const (
 4 | 	PublicVisibility  = "public"
 5 | 	PrivateVisibility = "private"
 6 | )
 7 | 
 8 | const (
 9 | 	DefaultLocale   = "zh"
10 | 	EnglishLocale   = "en"
11 | 	LocaleCookieKey = "locale"
12 | 	LocaleQueryKey  = "locale"
13 | )
14 | 


--------------------------------------------------------------------------------
/pkg/types/errors.go:
--------------------------------------------------------------------------------
 1 | package types
 2 | 
 3 | import "errors"
 4 | 
 5 | var (
 6 | 	NotFoundError = errors.New("not found")
 7 | 	InternalError = errors.New("internal error")
 8 | 	AuthError     = errors.New("auth error")
 9 | )
10 | 


--------------------------------------------------------------------------------
/pkg/utils/jwt/jwt.go:
--------------------------------------------------------------------------------
 1 | package jwt
 2 | 
 3 | import (
 4 | 	"github.com/gin-gonic/gin"
 5 | 	"opencsg.com/portal/internal/models"
 6 | )
 7 | 
 8 | type JwtUtils interface {
 9 | 	GetCurrentUser(ctx *gin.Context) *models.User
10 | }
11 | 
12 | type JwtUtilsImpl struct {
13 | }
14 | 
15 | func NewJwtUtils() JwtUtils {
16 | 	return &JwtUtilsImpl{}
17 | }
18 | 
19 | func (j *JwtUtilsImpl) GetCurrentUser(ctx *gin.Context) *models.User {
20 | 	if user, exists := ctx.Get("currentUser"); exists {
21 | 		return user.(*models.User)
22 | 	} else {
23 | 		// return &models.User{}
24 | 		return nil
25 | 	}
26 | }
27 | 


--------------------------------------------------------------------------------